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,936 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
|
-
import {
|
|
3
|
-
chmod,
|
|
4
|
-
mkdir,
|
|
5
|
-
mkdtemp,
|
|
6
|
-
readFile,
|
|
7
|
-
readdir,
|
|
8
|
-
rm,
|
|
9
|
-
stat,
|
|
10
|
-
symlink,
|
|
11
|
-
writeFile,
|
|
12
|
-
} from 'node:fs/promises';
|
|
13
|
-
import { tmpdir } from 'node:os';
|
|
14
|
-
import { join } from 'node:path';
|
|
15
|
-
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
16
|
-
import { TraceWriter } from '@agenticreplay/core';
|
|
17
|
-
import { validateEvent, validateManifest } from '@agenticreplay/schema';
|
|
18
|
-
import { parseArgs } from '../src/args.js';
|
|
19
|
-
import { Output } from '../src/out.js';
|
|
20
|
-
import { scrubCommand } from '../src/commands/scrub.js';
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* `agenticreplay scrub` is the second line of defence behind write-path redaction, and it is a promise
|
|
24
|
-
* made in SECURITY.md and in the bug-report template. It has to actually remove things.
|
|
25
|
-
*/
|
|
26
|
-
describe('scrub', () => {
|
|
27
|
-
let cwd: string;
|
|
28
|
-
let out: Output;
|
|
29
|
-
let lines: string[];
|
|
30
|
-
|
|
31
|
-
beforeEach(async () => {
|
|
32
|
-
cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-'));
|
|
33
|
-
lines = [];
|
|
34
|
-
out = new Output({ write: (s) => void lines.push(s), isTTY: false });
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
afterEach(async () => {
|
|
38
|
-
await rm(cwd, { recursive: true, force: true });
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
async function makeRun(payloads: unknown[]): Promise<string> {
|
|
42
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
43
|
-
adapter: { id: 'test' },
|
|
44
|
-
argv: ['test'],
|
|
45
|
-
cwd,
|
|
46
|
-
agenticreplayVersion: '0.1.0',
|
|
47
|
-
});
|
|
48
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
49
|
-
for (const payload of payloads) {
|
|
50
|
-
await writer.append({
|
|
51
|
-
type: 'note',
|
|
52
|
-
actor: 'agenticreplay',
|
|
53
|
-
turn: 1,
|
|
54
|
-
payload: payload as never,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
await writer.append({ type: 'run.end', actor: 'agenticreplay', turn: 1 });
|
|
58
|
-
await writer.close(0);
|
|
59
|
-
return writer.runDir;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
it('removes a literal string the user names', async () => {
|
|
63
|
-
const runDir = await makeRun(['the deploy host is prod-db-7.internal.example.com']);
|
|
64
|
-
await scrubCommand(
|
|
65
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com']),
|
|
66
|
-
out,
|
|
67
|
-
cwd,
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
const raw = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
71
|
-
expect(raw).not.toContain('prod-db-7.internal.example.com');
|
|
72
|
-
expect(raw).toContain('redacted');
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
describe('--dry-run', () => {
|
|
76
|
-
it('reports what would go and changes nothing', async () => {
|
|
77
|
-
// The one command in the tool whose effect cannot be undone, and the only one that had no
|
|
78
|
-
// way to look first. It also fires the standard detectors alongside your literal, so what it
|
|
79
|
-
// takes out is genuinely not knowable in advance — which is what makes the preview load-bearing
|
|
80
|
-
// rather than a nicety.
|
|
81
|
-
const runDir = await makeRun(['the deploy host is prod-db-7.internal.example.com']);
|
|
82
|
-
const before = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
83
|
-
const manifestBefore = await readFile(join(runDir, 'manifest.json'), 'utf8');
|
|
84
|
-
|
|
85
|
-
const result = await scrubCommand(
|
|
86
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com', '--dry-run']),
|
|
87
|
-
out,
|
|
88
|
-
cwd,
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
expect(result.dryRun).toBe(true);
|
|
92
|
-
expect(result.removals, 'it still counts what it found').toBeGreaterThan(0);
|
|
93
|
-
expect(result.filesChanged).toBeGreaterThan(0);
|
|
94
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).toBe(before);
|
|
95
|
-
expect(await readFile(join(runDir, 'manifest.json'), 'utf8')).toBe(manifestBefore);
|
|
96
|
-
expect(lines.join('\n')).toContain('would rewrite events.jsonl');
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it('does not delete the filesystem snapshots that --drop-fs would', async () => {
|
|
100
|
-
const runDir = await makeRun(['nothing sensitive here']);
|
|
101
|
-
await mkdir(join(runDir, 'fs'), { recursive: true });
|
|
102
|
-
await writeFile(join(runDir, 'fs', 'HEAD'), 'ref: refs/heads/main\n');
|
|
103
|
-
|
|
104
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--drop-fs', '--dry-run']), out, cwd);
|
|
105
|
-
|
|
106
|
-
expect(
|
|
107
|
-
await stat(join(runDir, 'fs')).then(
|
|
108
|
-
() => true,
|
|
109
|
-
() => false,
|
|
110
|
-
),
|
|
111
|
-
'a dry run must not perform the most destructive thing the command does',
|
|
112
|
-
).toBe(true);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it('then really removes it when the flag comes off', async () => {
|
|
116
|
-
const runDir = await makeRun(['the deploy host is prod-db-7.internal.example.com']);
|
|
117
|
-
await scrubCommand(
|
|
118
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com', '--dry-run']),
|
|
119
|
-
out,
|
|
120
|
-
cwd,
|
|
121
|
-
);
|
|
122
|
-
await scrubCommand(
|
|
123
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com']),
|
|
124
|
-
out,
|
|
125
|
-
cwd,
|
|
126
|
-
);
|
|
127
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).not.toContain(
|
|
128
|
-
'prod-db-7.internal.example.com',
|
|
129
|
-
);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
it('leaves no .tmp file behind when it rewrites a trace', async () => {
|
|
134
|
-
// events.jsonl used to be written with a plain writeFile, which truncates before it writes: a
|
|
135
|
-
// ^C in that window left a truncated events file and a manifest digest describing the whole
|
|
136
|
-
// one. Every rewrite now lands by rename, and the staging file must not survive the commit.
|
|
137
|
-
const runDir = await makeRun(['the deploy host is prod-db-7.internal.example.com']);
|
|
138
|
-
await scrubCommand(
|
|
139
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com']),
|
|
140
|
-
out,
|
|
141
|
-
cwd,
|
|
142
|
-
);
|
|
143
|
-
const entries = await readdir(runDir);
|
|
144
|
-
expect(entries.filter((e) => e.endsWith('.tmp'))).toEqual([]);
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it('leaves the rest of the payload intact', async () => {
|
|
148
|
-
const runDir = await makeRun(['keep this. remove SECRETVALUE. keep this too.']);
|
|
149
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'SECRETVALUE']), out, cwd);
|
|
150
|
-
const raw = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
151
|
-
expect(raw).toContain('keep this');
|
|
152
|
-
expect(raw).toContain('keep this too');
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it('re-runs the standard detectors, catching what the write path missed', async () => {
|
|
156
|
-
const runDir = await makeRun(['token AKIAIOSFODNN7EXAMPLE embedded in prose']);
|
|
157
|
-
await scrubCommand(parseArgs(['scrub', 'last']), out, cwd);
|
|
158
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).not.toContain(
|
|
159
|
-
'AKIAIOSFODNN7EXAMPLE',
|
|
160
|
-
);
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it('keeps every event valid against the schema afterwards', async () => {
|
|
164
|
-
const runDir = await makeRun(['sk-abcdefghij0123456789abcdef', 'ordinary text']);
|
|
165
|
-
await scrubCommand(parseArgs(['scrub', 'last']), out, cwd);
|
|
166
|
-
|
|
167
|
-
const raw = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
168
|
-
for (const line of raw.split('\n').filter(Boolean)) {
|
|
169
|
-
const r = validateEvent(JSON.parse(line));
|
|
170
|
-
expect(r.valid, r.errors.join(', ')).toBe(true);
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
it('scrubs blob contents too, not only inline payloads', async () => {
|
|
175
|
-
// Large enough to spill to a blob, so the value never appears in events.jsonl.
|
|
176
|
-
const big = `${'x'.repeat(5000)} NEEDLE-IN-A-BLOB ${'y'.repeat(200)}`;
|
|
177
|
-
const runDir = await makeRun([big]);
|
|
178
|
-
|
|
179
|
-
const before = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
180
|
-
expect(before, 'fixture must actually exercise the blob path').not.toContain(
|
|
181
|
-
'NEEDLE-IN-A-BLOB',
|
|
182
|
-
);
|
|
183
|
-
|
|
184
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE-IN-A-BLOB']), out, cwd);
|
|
185
|
-
|
|
186
|
-
const { execFile } = await import('node:child_process');
|
|
187
|
-
const { promisify } = await import('node:util');
|
|
188
|
-
const grep = promisify(execFile);
|
|
189
|
-
const hit = await grep('grep', ['-r', 'NEEDLE-IN-A-BLOB', runDir]).catch(() => null);
|
|
190
|
-
expect(hit, 'the needle must be gone from every file in the run').toBeNull();
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
it('updates the integrity digest so the trace still verifies', async () => {
|
|
194
|
-
const runDir = await makeRun(['remove ME-PLEASE now']);
|
|
195
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'ME-PLEASE']), out, cwd);
|
|
196
|
-
|
|
197
|
-
const { TraceReader } = await import('@agenticreplay/core');
|
|
198
|
-
const reader = await TraceReader.open(runDir);
|
|
199
|
-
const integrity = await reader.verifyIntegrity();
|
|
200
|
-
expect(integrity.ok, 'a scrubbed trace that fails its own integrity check is unusable').toBe(
|
|
201
|
-
true,
|
|
202
|
-
);
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
it('records what it removed, by rule, without recording the value', async () => {
|
|
206
|
-
const runDir = await makeRun(['drop TOPSECRETTOKEN here']);
|
|
207
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'TOPSECRETTOKEN']), out, cwd);
|
|
208
|
-
const redactions = JSON.parse(await readFile(join(runDir, 'redactions.json'), 'utf8'));
|
|
209
|
-
const dumped = JSON.stringify(redactions);
|
|
210
|
-
expect(dumped).toContain('scrub');
|
|
211
|
-
expect(dumped).not.toContain('TOPSECRETTOKEN');
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
it('reports how much it changed', async () => {
|
|
215
|
-
await makeRun(['remove GONE1 and GONE1 again']);
|
|
216
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'GONE1']), out, cwd);
|
|
217
|
-
expect(lines.join('')).toMatch(/scrubbed/);
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
it('is idempotent — scrubbing twice changes nothing the second time', async () => {
|
|
221
|
-
const runDir = await makeRun(['remove TWICE-OVER now']);
|
|
222
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'TWICE-OVER']), out, cwd);
|
|
223
|
-
const first = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
224
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'TWICE-OVER']), out, cwd);
|
|
225
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).toBe(first);
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
it('refuses a dry run that would change nothing without pretending it did', async () => {
|
|
229
|
-
const runDir = await makeRun(['nothing sensitive here at all']);
|
|
230
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'ABSENT']), out, cwd);
|
|
231
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).toContain('nothing sensitive');
|
|
232
|
-
expect(lines.join('')).toMatch(/removed=0/);
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
describe('scrub — binary safety', () => {
|
|
237
|
-
it('leaves a binary blob byte-identical even when it contains the literal', async () => {
|
|
238
|
-
const cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-bin-'));
|
|
239
|
-
const out = new Output({ write: () => {}, isTTY: false });
|
|
240
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
241
|
-
adapter: { id: 'test' },
|
|
242
|
-
argv: ['test'],
|
|
243
|
-
cwd,
|
|
244
|
-
agenticreplayVersion: '0.1.0',
|
|
245
|
-
});
|
|
246
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
247
|
-
await writer.close(0);
|
|
248
|
-
|
|
249
|
-
const { BlobStore } = await import('@agenticreplay/core');
|
|
250
|
-
const store = new BlobStore(join(writer.runDir, 'blobs'));
|
|
251
|
-
// Contains the literal AND a NUL byte. Without the binary guard the scrubber would rewrite
|
|
252
|
-
// this as UTF-8 text and silently corrupt every byte after the replacement.
|
|
253
|
-
const binary = Buffer.concat([
|
|
254
|
-
Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x00]),
|
|
255
|
-
Buffer.from('NEEDLE'),
|
|
256
|
-
Buffer.from([0x00, 0xff, 0xfe]),
|
|
257
|
-
]);
|
|
258
|
-
const ref = await store.put(binary);
|
|
259
|
-
|
|
260
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE']), out, cwd);
|
|
261
|
-
|
|
262
|
-
expect(Buffer.from(await store.get(ref))).toEqual(binary);
|
|
263
|
-
await rm(cwd, { recursive: true, force: true });
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
it('still scrubs a text blob containing the same literal', async () => {
|
|
267
|
-
const cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-txt-'));
|
|
268
|
-
const out = new Output({ write: () => {}, isTTY: false });
|
|
269
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
270
|
-
adapter: { id: 'test' },
|
|
271
|
-
argv: ['test'],
|
|
272
|
-
cwd,
|
|
273
|
-
agenticreplayVersion: '0.1.0',
|
|
274
|
-
});
|
|
275
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
276
|
-
await writer.close(0);
|
|
277
|
-
|
|
278
|
-
const { BlobStore } = await import('@agenticreplay/core');
|
|
279
|
-
const store = new BlobStore(join(writer.runDir, 'blobs'));
|
|
280
|
-
await store.put(`prose with NEEDLE inside ${'z'.repeat(100)}`);
|
|
281
|
-
|
|
282
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE']), out, cwd);
|
|
283
|
-
|
|
284
|
-
// Read back by what the scrubbed content hashes to, not by the digest it used to have: a
|
|
285
|
-
// blob's name is its contents' digest, so scrubbing one moves it. Asking for the old digest
|
|
286
|
-
// is asking for the material this command exists to destroy.
|
|
287
|
-
const files = await blobFiles(writer.runDir);
|
|
288
|
-
expect(files).toHaveLength(1);
|
|
289
|
-
expect(files[0]!.text).not.toContain('NEEDLE');
|
|
290
|
-
expect(files[0]!.text).toContain('prose with');
|
|
291
|
-
expect(Buffer.from(await store.get(files[0]!.name)).toString('utf8')).toBe(files[0]!.text);
|
|
292
|
-
await rm(cwd, { recursive: true, force: true });
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* A blob's name *is* the sha256 of its contents (spec §2.2), and `BlobStore.put` is built on it:
|
|
298
|
-
* content already held is recognised by its path existing, and the file is then not written at
|
|
299
|
-
* all. Scrubbing a blob in place left a store where that no longer held, so the next `put` of the
|
|
300
|
-
* original material would conclude it was already stored and hand back a reference to scrubbed
|
|
301
|
-
* content. `agenticreplay scrub` says as much already about the workspace snapshots it declines to rewrite
|
|
302
|
-
* -- git objects are addressed by their own contents. So are these.
|
|
303
|
-
*/
|
|
304
|
-
describe('scrub — the blob store stays content-addressed', () => {
|
|
305
|
-
let cwd: string;
|
|
306
|
-
let out: Output;
|
|
307
|
-
let lines: string[];
|
|
308
|
-
|
|
309
|
-
beforeEach(async () => {
|
|
310
|
-
cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-addr-'));
|
|
311
|
-
lines = [];
|
|
312
|
-
out = new Output({ write: (s) => void lines.push(s), isTTY: false });
|
|
313
|
-
});
|
|
314
|
-
|
|
315
|
-
afterEach(async () => {
|
|
316
|
-
await rm(cwd, { recursive: true, force: true });
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
/** A payload over the 4096-byte inline limit, which is the only way to reach a blob at all. */
|
|
320
|
-
async function runWithSpilledPayload(text: string): Promise<string> {
|
|
321
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
322
|
-
adapter: { id: 'test' },
|
|
323
|
-
argv: ['test'],
|
|
324
|
-
cwd,
|
|
325
|
-
agenticreplayVersion: '0.1.0',
|
|
326
|
-
});
|
|
327
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
328
|
-
await writer.append({ type: 'note', actor: 'agenticreplay', turn: 1, payload: text as never });
|
|
329
|
-
await writer.append({ type: 'run.end', actor: 'agenticreplay', turn: 1 });
|
|
330
|
-
await writer.close(0);
|
|
331
|
-
return writer.runDir;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
it('moves a scrubbed blob to the digest its contents now have, and the reference with it', async () => {
|
|
335
|
-
const runDir = await runWithSpilledPayload(`NEEDLE and then ${'z'.repeat(5000)}`);
|
|
336
|
-
const before = await blobFiles(runDir);
|
|
337
|
-
expect(before).toHaveLength(1);
|
|
338
|
-
expect(before[0]!.name).toBe(before[0]!.digest);
|
|
339
|
-
|
|
340
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE']), out, cwd);
|
|
341
|
-
|
|
342
|
-
const after = await blobFiles(runDir);
|
|
343
|
-
expect(after).toHaveLength(1);
|
|
344
|
-
expect(after[0]!.text).not.toContain('NEEDLE');
|
|
345
|
-
// The invariant: a name is a claim about the contents. And the old file is gone rather than
|
|
346
|
-
// left behind holding what was removed.
|
|
347
|
-
expect(after[0]!.name).toBe(after[0]!.digest);
|
|
348
|
-
expect(after[0]!.name).not.toBe(before[0]!.name);
|
|
349
|
-
|
|
350
|
-
const events = (await readFile(join(runDir, 'events.jsonl'), 'utf8'))
|
|
351
|
-
.split('\n')
|
|
352
|
-
.filter((line) => line.trim() !== '')
|
|
353
|
-
.map((line) => JSON.parse(line) as { payload?: { $blob?: string; bytes?: number } });
|
|
354
|
-
const ref = events.find((event) => event.payload?.$blob !== undefined)?.payload;
|
|
355
|
-
expect(ref?.$blob).toBe(`sha256:${after[0]!.name}`);
|
|
356
|
-
// Scrubbing changes a body's length, so a `bytes` left at the old one is the same false claim
|
|
357
|
-
// in smaller print.
|
|
358
|
-
expect(ref?.bytes).toBe(Buffer.byteLength(after[0]!.text, 'utf8'));
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
it('moves every reference to a blob two events share', async () => {
|
|
362
|
-
// Content addressing means one file, two references: every model turn resends the whole
|
|
363
|
-
// conversation, so identical content arriving twice is the ordinary case rather than a corner
|
|
364
|
-
// -- and moving the file while updating one of them would leave the other pointing nowhere.
|
|
365
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
366
|
-
adapter: { id: 'test' },
|
|
367
|
-
argv: ['test'],
|
|
368
|
-
cwd,
|
|
369
|
-
agenticreplayVersion: '0.1.0',
|
|
370
|
-
});
|
|
371
|
-
const shared = `NEEDLE and then ${'z'.repeat(5000)}`;
|
|
372
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
373
|
-
await writer.append({
|
|
374
|
-
type: 'note',
|
|
375
|
-
actor: 'agenticreplay',
|
|
376
|
-
turn: 1,
|
|
377
|
-
payload: shared as never,
|
|
378
|
-
});
|
|
379
|
-
await writer.append({
|
|
380
|
-
type: 'note',
|
|
381
|
-
actor: 'agenticreplay',
|
|
382
|
-
turn: 2,
|
|
383
|
-
payload: shared as never,
|
|
384
|
-
});
|
|
385
|
-
await writer.append({ type: 'run.end', actor: 'agenticreplay', turn: 2 });
|
|
386
|
-
await writer.close(0);
|
|
387
|
-
expect(await blobFiles(writer.runDir)).toHaveLength(1);
|
|
388
|
-
|
|
389
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE']), out, cwd);
|
|
390
|
-
|
|
391
|
-
const files = await blobFiles(writer.runDir);
|
|
392
|
-
expect(files).toHaveLength(1);
|
|
393
|
-
expect(files[0]!.name).toBe(files[0]!.digest);
|
|
394
|
-
const refs = (await readFile(join(writer.runDir, 'events.jsonl'), 'utf8'))
|
|
395
|
-
.split('\n')
|
|
396
|
-
.filter((line) => line.trim() !== '')
|
|
397
|
-
.map((line) => JSON.parse(line) as { payload?: { $blob?: string } })
|
|
398
|
-
.flatMap((event) => (event.payload?.$blob === undefined ? [] : [event.payload.$blob]));
|
|
399
|
-
expect(refs).toHaveLength(2);
|
|
400
|
-
expect(refs).toEqual([`sha256:${files[0]!.name}`, `sha256:${files[0]!.name}`]);
|
|
401
|
-
});
|
|
402
|
-
|
|
403
|
-
it('scrubs a partial write in place rather than minting a blob out of it', async () => {
|
|
404
|
-
const runDir = await runWithSpilledPayload(`NEEDLE and then ${'z'.repeat(5000)}`);
|
|
405
|
-
// What `BlobStore.put` leaves behind when it crashes between its write and its rename.
|
|
406
|
-
const stray = join(runDir, 'blobs', 'aa', `${'a'.repeat(64)}.deadbeef.tmp`);
|
|
407
|
-
await mkdir(join(runDir, 'blobs', 'aa'), { recursive: true });
|
|
408
|
-
await writeFile(stray, `NEEDLE in a partial write ${'y'.repeat(200)}`, 'utf8');
|
|
409
|
-
|
|
410
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE']), out, cwd);
|
|
411
|
-
|
|
412
|
-
// Still scrubbed — skipping a file that holds the material is the one failure this command
|
|
413
|
-
// must not have.
|
|
414
|
-
expect(await readFile(stray, 'utf8')).not.toContain('NEEDLE');
|
|
415
|
-
// But not moved: nothing references it, and a hex name would file it in the store proper.
|
|
416
|
-
expect(await blobFiles(runDir)).toHaveLength(1);
|
|
417
|
-
const manifest = JSON.parse(await readFile(join(runDir, 'manifest.json'), 'utf8')) as {
|
|
418
|
-
integrity?: { blob_count?: number };
|
|
419
|
-
};
|
|
420
|
-
expect(manifest.integrity?.blob_count).toBe(1);
|
|
421
|
-
});
|
|
422
|
-
|
|
423
|
-
it('leaves the manifest describing the store it now has', async () => {
|
|
424
|
-
const runDir = await runWithSpilledPayload(`NEEDLE and then ${'z'.repeat(5000)}`);
|
|
425
|
-
|
|
426
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE']), out, cwd);
|
|
427
|
-
|
|
428
|
-
const manifest = JSON.parse(await readFile(join(runDir, 'manifest.json'), 'utf8')) as {
|
|
429
|
-
integrity?: { events_sha256?: string; blob_count?: number };
|
|
430
|
-
counts?: { blobs?: number };
|
|
431
|
-
};
|
|
432
|
-
const files = await blobFiles(runDir);
|
|
433
|
-
expect(manifest.integrity?.blob_count).toBe(files.length);
|
|
434
|
-
// Read in `blob_count`'s place by any viewer opening a run sealed before that field existed,
|
|
435
|
-
// so the same run must not report two different sizes depending on which reader opens it.
|
|
436
|
-
expect(manifest.counts?.blobs).toBe(files.length);
|
|
437
|
-
// Still sealed: a scrubbed trace that failed its own integrity check would make people skip
|
|
438
|
-
// scrubbing.
|
|
439
|
-
expect(manifest.integrity?.events_sha256).toBe(
|
|
440
|
-
createHash('sha256')
|
|
441
|
-
.update(await readFile(join(runDir, 'events.jsonl'), 'utf8'), 'utf8')
|
|
442
|
-
.digest('hex'),
|
|
443
|
-
);
|
|
444
|
-
});
|
|
445
|
-
|
|
446
|
-
it('names the move in the plan, rather than a file nobody has yet', async () => {
|
|
447
|
-
await runWithSpilledPayload(`NEEDLE and then ${'z'.repeat(5000)}`);
|
|
448
|
-
|
|
449
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'NEEDLE', '--dry-run']), out, cwd);
|
|
450
|
-
|
|
451
|
-
const plan = lines.join('\n');
|
|
452
|
-
expect(plan).toContain('and move it to');
|
|
453
|
-
expect(plan).toContain('which is what its scrubbed contents hash to');
|
|
454
|
-
});
|
|
455
|
-
});
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
* Every blob in a run's store, with the digest its contents actually have.
|
|
459
|
-
*
|
|
460
|
-
* Digest-named files only, which is what `BlobStore` counts as a blob -- a `<digest>.<rand>.tmp`
|
|
461
|
-
* in the same directory is a `put` that crashed, not an entry in the store.
|
|
462
|
-
*/
|
|
463
|
-
async function blobFiles(
|
|
464
|
-
runDir: string,
|
|
465
|
-
): Promise<{ name: string; digest: string; text: string }[]> {
|
|
466
|
-
const root = join(runDir, 'blobs');
|
|
467
|
-
const found: { name: string; digest: string; text: string }[] = [];
|
|
468
|
-
for (const shard of await readdir(root, { withFileTypes: true }).catch(() => [])) {
|
|
469
|
-
if (!shard.isDirectory()) continue;
|
|
470
|
-
for (const name of await readdir(join(root, shard.name))) {
|
|
471
|
-
if (!/^[0-9a-f]{64}$/.test(name)) continue;
|
|
472
|
-
const bytes = await readFile(join(root, shard.name, name));
|
|
473
|
-
found.push({
|
|
474
|
-
name,
|
|
475
|
-
digest: createHash('sha256').update(bytes).digest('hex'),
|
|
476
|
-
text: bytes.toString('utf8'),
|
|
477
|
-
});
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
return found;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
/**
|
|
484
|
-
* The failure mode that matters for a scrubber is not "removed too little" — it is "reported a
|
|
485
|
-
* clean trace it never searched". Each of these pins one way `agenticreplay scrub` used to do exactly that.
|
|
486
|
-
*/
|
|
487
|
-
describe('scrub — false all-clears', () => {
|
|
488
|
-
let cwd: string;
|
|
489
|
-
let out: Output;
|
|
490
|
-
let lines: string[];
|
|
491
|
-
|
|
492
|
-
beforeEach(async () => {
|
|
493
|
-
cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-clear-'));
|
|
494
|
-
lines = [];
|
|
495
|
-
out = new Output({ write: (s) => void lines.push(s), isTTY: false });
|
|
496
|
-
});
|
|
497
|
-
|
|
498
|
-
afterEach(async () => {
|
|
499
|
-
await rm(cwd, { recursive: true, force: true });
|
|
500
|
-
});
|
|
501
|
-
|
|
502
|
-
async function makeRun(payloads: unknown[]): Promise<string> {
|
|
503
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
504
|
-
adapter: { id: 'test' },
|
|
505
|
-
argv: ['test'],
|
|
506
|
-
cwd,
|
|
507
|
-
agenticreplayVersion: '0.1.0',
|
|
508
|
-
});
|
|
509
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
510
|
-
for (const payload of payloads) {
|
|
511
|
-
await writer.append({
|
|
512
|
-
type: 'note',
|
|
513
|
-
actor: 'agenticreplay',
|
|
514
|
-
turn: 1,
|
|
515
|
-
payload: payload as never,
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
|
-
await writer.append({ type: 'run.end', actor: 'agenticreplay', turn: 1 });
|
|
519
|
-
await writer.close(0);
|
|
520
|
-
return writer.runDir;
|
|
521
|
-
}
|
|
522
|
-
|
|
523
|
-
/**
|
|
524
|
-
* A blob store it could not read used to lower the count and say nothing.
|
|
525
|
-
*
|
|
526
|
-
* `walk` answered `[]` for a directory it could not list, so scrub scrubbed fewer blobs and
|
|
527
|
-
* reported the smaller number as though that were all there was — under-reporting, silently,
|
|
528
|
-
* which is the half that makes it a false answer rather than a stated limit. SECURITY.md:
|
|
529
|
-
* "a scrubber that under-reports is disappointing; one that hands you a false all-clear is worse
|
|
530
|
-
* than no scrubber."
|
|
531
|
-
*
|
|
532
|
-
* The fixture makes `blobs` itself unlistable by making it a file, which every platform agrees
|
|
533
|
-
* about. The nested case needs a directory nobody can list, and that needs POSIX.
|
|
534
|
-
*/
|
|
535
|
-
it('says it could not read the blob store rather than quietly scrubbing less', async () => {
|
|
536
|
-
const runDir = await makeRun(['the host is prod-db-7.internal.example.com']);
|
|
537
|
-
await rm(join(runDir, 'blobs'), { recursive: true, force: true });
|
|
538
|
-
await writeFile(join(runDir, 'blobs'), 'not a directory\n');
|
|
539
|
-
|
|
540
|
-
// A literal that is NOT in this trace, so nothing is removed and the all-clear is what would
|
|
541
|
-
// otherwise print — over a blob store nobody could open.
|
|
542
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'absent-from-this-run']), out, cwd);
|
|
543
|
-
const said = lines.join('\n');
|
|
544
|
-
expect(said, 'a clean bill over a blob store it could not read').not.toContain(
|
|
545
|
-
'nothing matched',
|
|
546
|
-
);
|
|
547
|
-
expect(said).toContain('blobs_not_searched');
|
|
548
|
-
expect(said).toContain('could NOT be read');
|
|
549
|
-
});
|
|
550
|
-
|
|
551
|
-
/**
|
|
552
|
-
* Most runs have no `blobs/` at all — nothing in them crossed the spill threshold — and an absent
|
|
553
|
-
* directory is not one that could not be read. Reporting it as unsearched put a warning on the
|
|
554
|
-
* ordinary case and suppressed the all-clear with it, on every small run.
|
|
555
|
-
*/
|
|
556
|
-
it('says nothing about a blob store that was never written', async () => {
|
|
557
|
-
const runDir = await makeRun(['short']);
|
|
558
|
-
await rm(join(runDir, 'blobs'), { recursive: true, force: true });
|
|
559
|
-
|
|
560
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'absent-from-this-run']), out, cwd);
|
|
561
|
-
const said = lines.join('\n');
|
|
562
|
-
expect(said, 'an absent blob store was reported as unreadable').not.toContain(
|
|
563
|
-
'blobs_not_searched',
|
|
564
|
-
);
|
|
565
|
-
expect(said, 'the all-clear was withheld over a directory that never existed').toContain(
|
|
566
|
-
'nothing matched',
|
|
567
|
-
);
|
|
568
|
-
});
|
|
569
|
-
|
|
570
|
-
it.skipIf(process.platform === 'win32')(
|
|
571
|
-
'says so for a blob directory it cannot list, and does not call the run clean',
|
|
572
|
-
async () => {
|
|
573
|
-
const runDir = await makeRun(['nothing interesting here']);
|
|
574
|
-
const prefix = join(runDir, 'blobs', 'ab');
|
|
575
|
-
await mkdir(prefix, { recursive: true });
|
|
576
|
-
await writeFile(join(prefix, 'abcd'), 'prod-db-7.internal.example.com\n');
|
|
577
|
-
await chmod(prefix, 0o000);
|
|
578
|
-
try {
|
|
579
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', 'prod-db-7']), out, cwd);
|
|
580
|
-
const said = lines.join('\n');
|
|
581
|
-
expect(said, 'a clean bill over a directory it could not list').not.toContain(
|
|
582
|
-
'nothing matched',
|
|
583
|
-
);
|
|
584
|
-
expect(said).toContain('blobs_not_searched');
|
|
585
|
-
} finally {
|
|
586
|
-
await chmod(prefix, 0o700);
|
|
587
|
-
}
|
|
588
|
-
},
|
|
589
|
-
);
|
|
590
|
-
|
|
591
|
-
/**
|
|
592
|
-
* `readdir` reports a symlink with `isDirectory() === false`, so a link whose target is gone
|
|
593
|
-
* reached an unguarded `stat` and the rejection ended the whole command — a scrub that was
|
|
594
|
-
* otherwise complete, abandoned over one stale entry.
|
|
595
|
-
*/
|
|
596
|
-
it.skipIf(process.platform === 'win32')(
|
|
597
|
-
'survives a dangling entry in the blob store instead of aborting',
|
|
598
|
-
async () => {
|
|
599
|
-
const runDir = await makeRun(['the host is prod-db-7.internal.example.com']);
|
|
600
|
-
const prefix = join(runDir, 'blobs', 'cd');
|
|
601
|
-
await mkdir(prefix, { recursive: true });
|
|
602
|
-
await symlink(join(prefix, 'gone'), join(prefix, 'dangling'));
|
|
603
|
-
|
|
604
|
-
await expect(
|
|
605
|
-
scrubCommand(parseArgs(['scrub', 'last', '--match', 'prod-db-7']), out, cwd),
|
|
606
|
-
).resolves.not.toThrow();
|
|
607
|
-
expect(lines.join('\n')).toContain('blobs_not_searched');
|
|
608
|
-
},
|
|
609
|
-
);
|
|
610
|
-
|
|
611
|
-
it('refuses --match with no value instead of scrubbing nothing', async () => {
|
|
612
|
-
const runDir = await makeRun(['the host is prod-db-7.internal.example.com']);
|
|
613
|
-
await expect(scrubCommand(parseArgs(['scrub', 'last', '--match']), out, cwd)).rejects.toThrow(
|
|
614
|
-
/--match/,
|
|
615
|
-
);
|
|
616
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).toContain('prod-db-7');
|
|
617
|
-
expect(lines.join(''), 'it must not claim the trace is clean').not.toMatch(/nothing matched/);
|
|
618
|
-
});
|
|
619
|
-
|
|
620
|
-
it('refuses an empty --match= the same way', async () => {
|
|
621
|
-
await makeRun(['anything']);
|
|
622
|
-
await expect(scrubCommand(parseArgs(['scrub', 'last', '--match=']), out, cwd)).rejects.toThrow(
|
|
623
|
-
/--match/,
|
|
624
|
-
);
|
|
625
|
-
});
|
|
626
|
-
|
|
627
|
-
it('refuses --matches with no value too', async () => {
|
|
628
|
-
await makeRun(['anything']);
|
|
629
|
-
await expect(scrubCommand(parseArgs(['scrub', 'last', '--matches']), out, cwd)).rejects.toThrow(
|
|
630
|
-
/--matches/,
|
|
631
|
-
);
|
|
632
|
-
});
|
|
633
|
-
|
|
634
|
-
it('does not count a removal it reverted', async () => {
|
|
635
|
-
// `note` sits inside `"type":"note"`, so the scrubbed line still parses but no longer
|
|
636
|
-
// validates. The original goes back — and the count must go back with it.
|
|
637
|
-
await makeRun(['keep this text']);
|
|
638
|
-
const result = await scrubCommand(parseArgs(['scrub', 'last', '--match', 'note']), out, cwd);
|
|
639
|
-
expect(result.removals).toBe(0);
|
|
640
|
-
expect(lines.join('')).toMatch(/removed=0/);
|
|
641
|
-
});
|
|
642
|
-
|
|
643
|
-
it('warns loudly, naming the event, when it puts a line back', async () => {
|
|
644
|
-
const runDir = await makeRun(['keep this text']);
|
|
645
|
-
const result = await scrubCommand(parseArgs(['scrub', 'last', '--match', 'note']), out, cwd);
|
|
646
|
-
|
|
647
|
-
expect(result.reverted).toBe(1);
|
|
648
|
-
const printed = lines.join('');
|
|
649
|
-
expect(printed).toMatch(/warn scrub_reverted/);
|
|
650
|
-
// The note event is seq 1: run.start, note, run.end.
|
|
651
|
-
expect(printed).toMatch(/seq=1/);
|
|
652
|
-
// And it says plainly that the match survived, because it did.
|
|
653
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).toContain('"type":"note"');
|
|
654
|
-
expect(printed.toLowerCase()).toMatch(/still/);
|
|
655
|
-
});
|
|
656
|
-
|
|
657
|
-
it('warns when the scrub would leave the line unparseable, rather than reverting in silence', async () => {
|
|
658
|
-
// `"payload"` is a key, so removing it leaves a bare token where a string had to be.
|
|
659
|
-
const runDir = await makeRun(['keep this text']);
|
|
660
|
-
const before = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
661
|
-
const result = await scrubCommand(
|
|
662
|
-
parseArgs(['scrub', 'last', '--match', '"payload"']),
|
|
663
|
-
out,
|
|
664
|
-
cwd,
|
|
665
|
-
);
|
|
666
|
-
|
|
667
|
-
expect(result.reverted).toBe(1);
|
|
668
|
-
expect(result.removals).toBe(0);
|
|
669
|
-
expect(lines.join('')).toMatch(/warn scrub_reverted/);
|
|
670
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).toBe(before);
|
|
671
|
-
});
|
|
672
|
-
});
|
|
673
|
-
|
|
674
|
-
/**
|
|
675
|
-
* `manifest.json` is where the operator is named: `cwd` and `argv` carry the checkout path, and
|
|
676
|
-
* `env_allowlisted` carries HOME, PATH and USER verbatim. `agenticreplay scrub last --match my-hostname`
|
|
677
|
-
* is the README's own example, so the manifest has to go through the same detectors as the rest.
|
|
678
|
-
*/
|
|
679
|
-
describe('scrub — the manifest', () => {
|
|
680
|
-
const ENV_KEY = 'AGENTICREPLAY_SCRUB_TEST_HOST';
|
|
681
|
-
let cwd: string;
|
|
682
|
-
let out: Output;
|
|
683
|
-
let lines: string[];
|
|
684
|
-
|
|
685
|
-
beforeEach(async () => {
|
|
686
|
-
cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-manifest-'));
|
|
687
|
-
lines = [];
|
|
688
|
-
out = new Output({ write: (s) => void lines.push(s), isTTY: false });
|
|
689
|
-
});
|
|
690
|
-
|
|
691
|
-
afterEach(async () => {
|
|
692
|
-
delete process.env[ENV_KEY];
|
|
693
|
-
await rm(cwd, { recursive: true, force: true });
|
|
694
|
-
});
|
|
695
|
-
|
|
696
|
-
async function makeRun(host = 'prod-db-7.internal.example.com'): Promise<string> {
|
|
697
|
-
process.env[ENV_KEY] = `/home/${host}/checkout`;
|
|
698
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
699
|
-
adapter: { id: 'test' },
|
|
700
|
-
argv: ['claude', '--project', `/srv/${host}`],
|
|
701
|
-
cwd: `/srv/${host}`,
|
|
702
|
-
agenticreplayVersion: '0.1.0',
|
|
703
|
-
envAllowlist: [ENV_KEY],
|
|
704
|
-
});
|
|
705
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
706
|
-
await writer.append({ type: 'run.end', actor: 'agenticreplay', turn: 0 });
|
|
707
|
-
await writer.close(0);
|
|
708
|
-
return writer.runDir;
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
it('removes the literal from cwd, argv and the allowlisted environment', async () => {
|
|
712
|
-
const runDir = await makeRun();
|
|
713
|
-
const before = await readFile(join(runDir, 'manifest.json'), 'utf8');
|
|
714
|
-
expect(before, 'fixture must put the host in all three places').toContain(
|
|
715
|
-
'prod-db-7.internal.example.com',
|
|
716
|
-
);
|
|
717
|
-
|
|
718
|
-
await scrubCommand(
|
|
719
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com']),
|
|
720
|
-
out,
|
|
721
|
-
cwd,
|
|
722
|
-
);
|
|
723
|
-
|
|
724
|
-
const after = JSON.parse(await readFile(join(runDir, 'manifest.json'), 'utf8')) as {
|
|
725
|
-
cwd: string;
|
|
726
|
-
argv: string[];
|
|
727
|
-
env_allowlisted: Record<string, string>;
|
|
728
|
-
};
|
|
729
|
-
expect(JSON.stringify(after)).not.toContain('prod-db-7.internal.example.com');
|
|
730
|
-
expect(after.cwd).toContain('redacted');
|
|
731
|
-
expect(after.argv.join(' ')).toContain('redacted');
|
|
732
|
-
expect(after.env_allowlisted[ENV_KEY]).toContain('redacted');
|
|
733
|
-
});
|
|
734
|
-
|
|
735
|
-
it('re-runs the standard detectors over the manifest as well', async () => {
|
|
736
|
-
const runDir = await makeRun();
|
|
737
|
-
// A key that leaked into the recorded command line, which the write path never saw.
|
|
738
|
-
const raw = JSON.parse(await readFile(join(runDir, 'manifest.json'), 'utf8')) as Record<
|
|
739
|
-
string,
|
|
740
|
-
unknown
|
|
741
|
-
>;
|
|
742
|
-
raw.argv = ['claude', '--token', 'ghr_abcdefghijklmnopqrstuvwxyz0123456789'];
|
|
743
|
-
await writeFile(join(runDir, 'manifest.json'), `${JSON.stringify(raw, null, 2)}\n`, 'utf8');
|
|
744
|
-
|
|
745
|
-
await scrubCommand(parseArgs(['scrub', 'last']), out, cwd);
|
|
746
|
-
|
|
747
|
-
const after = await readFile(join(runDir, 'manifest.json'), 'utf8');
|
|
748
|
-
expect(after).not.toContain('ghr_abcdefghijklmnopqrstuvwxyz0123456789');
|
|
749
|
-
});
|
|
750
|
-
|
|
751
|
-
it('leaves a manifest that still validates and still verifies', async () => {
|
|
752
|
-
const runDir = await makeRun();
|
|
753
|
-
await scrubCommand(
|
|
754
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com']),
|
|
755
|
-
out,
|
|
756
|
-
cwd,
|
|
757
|
-
);
|
|
758
|
-
|
|
759
|
-
const parsed: unknown = JSON.parse(await readFile(join(runDir, 'manifest.json'), 'utf8'));
|
|
760
|
-
const result = validateManifest(parsed);
|
|
761
|
-
expect(result.valid, result.errors.join(', ')).toBe(true);
|
|
762
|
-
|
|
763
|
-
const { TraceReader } = await import('@agenticreplay/core');
|
|
764
|
-
await expect((await TraceReader.open(runDir)).verifyIntegrity()).resolves.toMatchObject({
|
|
765
|
-
ok: true,
|
|
766
|
-
});
|
|
767
|
-
});
|
|
768
|
-
|
|
769
|
-
it('counts what it removed from the manifest', async () => {
|
|
770
|
-
await makeRun();
|
|
771
|
-
const result = await scrubCommand(
|
|
772
|
-
parseArgs(['scrub', 'last', '--match', 'prod-db-7.internal.example.com']),
|
|
773
|
-
out,
|
|
774
|
-
cwd,
|
|
775
|
-
);
|
|
776
|
-
// cwd, one argv element, and the environment value.
|
|
777
|
-
expect(result.removals).toBeGreaterThanOrEqual(3);
|
|
778
|
-
});
|
|
779
|
-
|
|
780
|
-
it('refuses, changing nothing, when the scrub would take the manifest apart', async () => {
|
|
781
|
-
const runDir = await makeRun();
|
|
782
|
-
const manifestBefore = await readFile(join(runDir, 'manifest.json'), 'utf8');
|
|
783
|
-
|
|
784
|
-
// A bare quote is not a value in the manifest, it is the JSON itself.
|
|
785
|
-
await expect(
|
|
786
|
-
scrubCommand(parseArgs(['scrub', 'last', '--match', '"']), out, cwd),
|
|
787
|
-
).rejects.toThrow(/manifest/);
|
|
788
|
-
|
|
789
|
-
expect(await readFile(join(runDir, 'manifest.json'), 'utf8')).toBe(manifestBefore);
|
|
790
|
-
});
|
|
791
|
-
|
|
792
|
-
it('refuses, changing nothing, when the scrub would invalidate the manifest', async () => {
|
|
793
|
-
const runDir = await makeRun();
|
|
794
|
-
const manifestBefore = await readFile(join(runDir, 'manifest.json'), 'utf8');
|
|
795
|
-
const eventsBefore = await readFile(join(runDir, 'events.jsonl'), 'utf8');
|
|
796
|
-
|
|
797
|
-
// `run_` is the run id's required prefix, so removing it breaks a field the schema pins.
|
|
798
|
-
await expect(
|
|
799
|
-
scrubCommand(parseArgs(['scrub', 'last', '--match', 'run_']), out, cwd),
|
|
800
|
-
).rejects.toThrow(/manifest/);
|
|
801
|
-
|
|
802
|
-
expect(await readFile(join(runDir, 'manifest.json'), 'utf8')).toBe(manifestBefore);
|
|
803
|
-
expect(await readFile(join(runDir, 'events.jsonl'), 'utf8')).toBe(eventsBefore);
|
|
804
|
-
});
|
|
805
|
-
});
|
|
806
|
-
|
|
807
|
-
/**
|
|
808
|
-
* `fs/` is a bare git object store holding the whole workspace at every turn — usually the largest
|
|
809
|
-
* thing in a run. Its objects are addressed by the hash of what they contain, so a secret in a
|
|
810
|
-
* source file cannot be edited out of it the way a blob can. What must not happen is the scrubber
|
|
811
|
-
* reporting a clean trace while every snapshot still holds the file.
|
|
812
|
-
*/
|
|
813
|
-
describe('scrub — the shadow filesystem store', () => {
|
|
814
|
-
const NEEDLE = 'prod-db-7.internal.example.com';
|
|
815
|
-
let cwd: string;
|
|
816
|
-
let out: Output;
|
|
817
|
-
let lines: string[];
|
|
818
|
-
|
|
819
|
-
beforeEach(async () => {
|
|
820
|
-
cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-fs-'));
|
|
821
|
-
lines = [];
|
|
822
|
-
out = new Output({ write: (s) => void lines.push(s), isTTY: false });
|
|
823
|
-
});
|
|
824
|
-
|
|
825
|
-
afterEach(async () => {
|
|
826
|
-
await rm(cwd, { recursive: true, force: true });
|
|
827
|
-
});
|
|
828
|
-
|
|
829
|
-
/** A run whose shadow store holds one workspace file containing `contents`. */
|
|
830
|
-
async function makeRunWithSnapshot(contents: string): Promise<{ runDir: string; tree: string }> {
|
|
831
|
-
await writeFile(join(cwd, 'config.ts'), contents, 'utf8');
|
|
832
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
833
|
-
adapter: { id: 'test' },
|
|
834
|
-
argv: ['test'],
|
|
835
|
-
cwd,
|
|
836
|
-
agenticreplayVersion: '0.1.0',
|
|
837
|
-
});
|
|
838
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
839
|
-
const { FsCapture } = await import('@agenticreplay/fs-capture');
|
|
840
|
-
const capture = await FsCapture.start({ runDir: writer.runDir, cwd });
|
|
841
|
-
const snapshot = await capture.snapshotTurn(0);
|
|
842
|
-
await writer.append({
|
|
843
|
-
type: 'fs.snapshot',
|
|
844
|
-
actor: 'agenticreplay',
|
|
845
|
-
turn: 0,
|
|
846
|
-
attrs: { tree: snapshot.tree },
|
|
847
|
-
});
|
|
848
|
-
await writer.append({ type: 'run.end', actor: 'agenticreplay', turn: 0 });
|
|
849
|
-
await writer.close(0);
|
|
850
|
-
return { runDir: writer.runDir, tree: snapshot.tree };
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
it('reports that the shadow store still holds the match instead of claiming a clean trace', async () => {
|
|
854
|
-
const { runDir } = await makeRunWithSnapshot(`export const host = '${NEEDLE}';\n`);
|
|
855
|
-
const result = await scrubCommand(parseArgs(['scrub', 'last', '--match', NEEDLE]), out, cwd);
|
|
856
|
-
|
|
857
|
-
expect(result.fsStoreMatches).toBeGreaterThan(0);
|
|
858
|
-
const printed = lines.join('');
|
|
859
|
-
expect(printed).toMatch(/warn fs_store_not_scrubbed/);
|
|
860
|
-
expect(printed).toMatch(/--drop-fs/);
|
|
861
|
-
expect(
|
|
862
|
-
printed,
|
|
863
|
-
'it must not call a trace clean while the store still holds the match',
|
|
864
|
-
).not.toMatch(/nothing matched/);
|
|
865
|
-
expect(runDir).toBeTruthy();
|
|
866
|
-
});
|
|
867
|
-
|
|
868
|
-
/** The report has to be true: restoring the snapshot really does bring the match back. */
|
|
869
|
-
it('is telling the truth — the snapshot still restores the match', async () => {
|
|
870
|
-
const { runDir, tree } = await makeRunWithSnapshot(`export const host = '${NEEDLE}';\n`);
|
|
871
|
-
await scrubCommand(parseArgs(['scrub', 'last', '--match', NEEDLE]), out, cwd);
|
|
872
|
-
|
|
873
|
-
const dest = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-fs-restore-'));
|
|
874
|
-
const { ShadowIndex } = await import('@agenticreplay/fs-capture');
|
|
875
|
-
const shadow = await ShadowIndex.create({ gitDir: join(runDir, 'fs'), workTree: cwd });
|
|
876
|
-
await shadow.materialize(tree, dest);
|
|
877
|
-
expect(await readFile(join(dest, 'config.ts'), 'utf8')).toContain(NEEDLE);
|
|
878
|
-
await rm(dest, { recursive: true, force: true });
|
|
879
|
-
});
|
|
880
|
-
|
|
881
|
-
it('drops the store outright with --drop-fs, and says what that costs', async () => {
|
|
882
|
-
const { runDir } = await makeRunWithSnapshot(`export const host = '${NEEDLE}';\n`);
|
|
883
|
-
const result = await scrubCommand(
|
|
884
|
-
parseArgs(['scrub', 'last', '--match', NEEDLE, '--drop-fs']),
|
|
885
|
-
out,
|
|
886
|
-
cwd,
|
|
887
|
-
);
|
|
888
|
-
|
|
889
|
-
expect(result.fsStoreDropped).toBe(true);
|
|
890
|
-
expect(result.fsStoreMatches).toBe(0);
|
|
891
|
-
await expect(stat(join(runDir, 'fs'))).rejects.toThrow();
|
|
892
|
-
expect(lines.join('')).toMatch(/fs_store_dropped/);
|
|
893
|
-
});
|
|
894
|
-
|
|
895
|
-
it('says nothing about the store when it holds no match', async () => {
|
|
896
|
-
await makeRunWithSnapshot('export const host = "localhost";\n');
|
|
897
|
-
const result = await scrubCommand(parseArgs(['scrub', 'last', '--match', NEEDLE]), out, cwd);
|
|
898
|
-
|
|
899
|
-
expect(result.fsStoreMatches).toBe(0);
|
|
900
|
-
expect(lines.join('')).not.toMatch(/fs_store_not_scrubbed/);
|
|
901
|
-
});
|
|
902
|
-
|
|
903
|
-
it('finds a match in a captured filename, not only in file contents', async () => {
|
|
904
|
-
await writeFile(join(cwd, `${NEEDLE}.conf`), 'listen = 8080\n', 'utf8');
|
|
905
|
-
await makeRunWithSnapshot('export const host = "localhost";\n');
|
|
906
|
-
const result = await scrubCommand(parseArgs(['scrub', 'last', '--match', NEEDLE]), out, cwd);
|
|
907
|
-
expect(result.fsStoreMatches).toBeGreaterThan(0);
|
|
908
|
-
});
|
|
909
|
-
});
|
|
910
|
-
|
|
911
|
-
/** A store that is present but unreadable is the one case where "0 matches" proves nothing. */
|
|
912
|
-
describe('scrub — an unreadable shadow store', () => {
|
|
913
|
-
it('says it could not check, rather than reporting a clean trace', async () => {
|
|
914
|
-
const cwd = await mkdtemp(join(tmpdir(), 'agenticreplay-scrub-fs-bad-'));
|
|
915
|
-
const lines: string[] = [];
|
|
916
|
-
const out = new Output({ write: (s) => void lines.push(s), isTTY: false });
|
|
917
|
-
const writer = await TraceWriter.create(join(cwd, '.agenticreplay', 'runs'), {
|
|
918
|
-
adapter: { id: 'test' },
|
|
919
|
-
argv: ['test'],
|
|
920
|
-
cwd,
|
|
921
|
-
agenticreplayVersion: '0.1.0',
|
|
922
|
-
});
|
|
923
|
-
await writer.append({ type: 'run.start', actor: 'agenticreplay', turn: 0 });
|
|
924
|
-
await writer.close(0);
|
|
925
|
-
// Present, but not an object database git can open.
|
|
926
|
-
await mkdir(join(writer.runDir, 'fs'), { recursive: true });
|
|
927
|
-
|
|
928
|
-
const result = await scrubCommand(parseArgs(['scrub', 'last', '--match', 'ABSENT']), out, cwd);
|
|
929
|
-
|
|
930
|
-
expect(result.fsStoreMatches).toBe(0);
|
|
931
|
-
const printed = lines.join('');
|
|
932
|
-
expect(printed).toMatch(/warn fs_store_unverified/);
|
|
933
|
-
expect(printed, 'an unchecked store is not a clean one').not.toMatch(/nothing matched/);
|
|
934
|
-
await rm(cwd, { recursive: true, force: true });
|
|
935
|
-
});
|
|
936
|
-
});
|