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,972 +0,0 @@
|
|
|
1
|
-
import { execFile } from 'node:child_process';
|
|
2
|
-
import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
4
|
-
import { dirname, join } from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import { promisify } from 'node:util';
|
|
7
|
-
import { TraceReader, deriveCheckpoints, type TraceWriter } from '@agenticreplay/core';
|
|
8
|
-
import { FsCapture } from '@agenticreplay/fs-capture';
|
|
9
|
-
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
10
|
-
import { parseArgs } from '../src/args.js';
|
|
11
|
-
import { assertResettable, assertRestorable, replayCommand } from '../src/commands/replay.js';
|
|
12
|
-
import { recordCommand } from '../src/commands/record.js';
|
|
13
|
-
import { appendSnapshot } from '../src/fs-events.js';
|
|
14
|
-
import { Output, type LogEntry } from '../src/out.js';
|
|
15
|
-
import { startFakeModel } from './fixtures/fake-model.mjs';
|
|
16
|
-
|
|
17
|
-
const exec = promisify(execFile);
|
|
18
|
-
// Filesystem-only fixture agents intentionally make no HTTP requests. The recorder correctly
|
|
19
|
-
// exits 2 for absent capture; these tests inspect filesystem restore and process teardown.
|
|
20
|
-
const run: typeof exec = (async (...args: Parameters<typeof exec>) => {
|
|
21
|
-
try {
|
|
22
|
-
return await exec(...args);
|
|
23
|
-
} catch (error) {
|
|
24
|
-
const failure = error as { code?: number; stdout?: string; stderr?: string };
|
|
25
|
-
if (
|
|
26
|
-
failure.code === 2 &&
|
|
27
|
-
failure.stdout?.includes('capture.empty') &&
|
|
28
|
-
args[1]?.includes('record')
|
|
29
|
-
)
|
|
30
|
-
return { stdout: failure.stdout, stderr: failure.stderr ?? '' };
|
|
31
|
-
throw error;
|
|
32
|
-
}
|
|
33
|
-
}) as typeof exec;
|
|
34
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
35
|
-
const cli = join(here, '..', 'dist', 'cli.js');
|
|
36
|
-
const FAKE_AGENT = join(here, 'fixtures', 'fake-agent.mjs');
|
|
37
|
-
|
|
38
|
-
/** A repository that can commit on a machine with no global git identity. */
|
|
39
|
-
async function initRepo(dir: string): Promise<void> {
|
|
40
|
-
await run('git', ['init', '-q'], { cwd: dir });
|
|
41
|
-
await run('git', ['config', 'user.email', 'test@example.com'], { cwd: dir });
|
|
42
|
-
await run('git', ['config', 'user.name', 'Test'], { cwd: dir });
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** A repository inside another one, which is what `git add` stores as a gitlink. */
|
|
46
|
-
async function nestRepo(parent: string, path: string): Promise<string> {
|
|
47
|
-
const dir = join(parent, ...path.split('/'));
|
|
48
|
-
await mkdir(dir, { recursive: true });
|
|
49
|
-
await initRepo(dir);
|
|
50
|
-
await writeFile(join(dir, 'inside.txt'), 'held by the nested repo');
|
|
51
|
-
await run('git', ['add', '-A'], { cwd: dir });
|
|
52
|
-
await run('git', ['commit', '-qm', 'nested'], { cwd: dir });
|
|
53
|
-
return dir;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/** An agent that leaves a mark on the workspace and exits, needing no model to do it. */
|
|
57
|
-
const QUIET_AGENT = [
|
|
58
|
-
"import { writeFileSync } from 'node:fs';",
|
|
59
|
-
"writeFileSync(new URL('./output.txt', import.meta.url), 'written by the agent');",
|
|
60
|
-
"process.stdout.write('HI');",
|
|
61
|
-
].join('\n');
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Which nested repositories stop a replay, and which are simply left where they are.
|
|
65
|
-
*
|
|
66
|
-
* A snapshot records a nested repository as a gitlink and never holds its contents, so a restore
|
|
67
|
-
* cannot put one back. Whether that matters depends entirely on whether the replay took it away
|
|
68
|
-
* first: `resetArtifacts` deletes the adapter's declared reset paths before restoring, and a
|
|
69
|
-
* corpus cloned into `cache/` is gone for good — but where nothing is deleted, `materialize`
|
|
70
|
-
* writes the tree's files and leaves everything else alone, so the repository is still sitting
|
|
71
|
-
* there, untouched, when the restore finishes.
|
|
72
|
-
*
|
|
73
|
-
* Refusing both cases is issue #103: `claude`, like every adapter but `indexrag`, declares no
|
|
74
|
-
* reset paths, so every recording it made in a workspace holding a submodule or a vendored
|
|
75
|
-
* checkout could not be replayed at all.
|
|
76
|
-
*/
|
|
77
|
-
describe('assertRestorable', () => {
|
|
78
|
-
const artifacts = (resetBeforeReplay: string[]) => ({ resetBeforeReplay });
|
|
79
|
-
let dir: string;
|
|
80
|
-
let capture: FsCapture;
|
|
81
|
-
let tree: string;
|
|
82
|
-
|
|
83
|
-
beforeEach(async () => {
|
|
84
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-nested-guard-'));
|
|
85
|
-
await initRepo(dir);
|
|
86
|
-
// One where an adapter could be told to delete the directory around it, one where it could not.
|
|
87
|
-
await nestRepo(dir, 'cache/corpus');
|
|
88
|
-
await nestRepo(dir, 'tools/vendored');
|
|
89
|
-
// A real capture, so the gitlinks are the ones `git add` decides to write rather than a shape
|
|
90
|
-
// this test made up — the guard's whole input is what git chose to store.
|
|
91
|
-
capture = await FsCapture.start({ runDir: join(dir, '.agenticreplay-run'), cwd: dir });
|
|
92
|
-
tree = (await capture.snapshotTurn(0)).tree;
|
|
93
|
-
});
|
|
94
|
-
afterEach(async () => {
|
|
95
|
-
await rm(dir, { recursive: true, force: true });
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it('lets a replay that deletes nothing go ahead, and says what it is leaving alone', async () => {
|
|
99
|
-
await expect(assertRestorable(capture, tree, dir, undefined)).resolves.toEqual([
|
|
100
|
-
'cache/corpus',
|
|
101
|
-
'tools/vendored',
|
|
102
|
-
]);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it('refuses when the replay would delete the repository it cannot then put back', async () => {
|
|
106
|
-
await expect(assertRestorable(capture, tree, dir, artifacts(['cache']))).rejects.toThrow(
|
|
107
|
-
/cannot put cache\/corpus back/,
|
|
108
|
-
);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it('names the repositories at risk, and not the ones that are not', async () => {
|
|
112
|
-
const message = await assertRestorable(capture, tree, dir, artifacts(['cache'])).then(
|
|
113
|
-
() => 'it did not refuse',
|
|
114
|
-
(error: Error) => error.message,
|
|
115
|
-
);
|
|
116
|
-
expect(message).toContain('cache/corpus');
|
|
117
|
-
expect(message).not.toContain('tools/vendored');
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it('refuses when the reset path is the repository itself', async () => {
|
|
121
|
-
await expect(assertRestorable(capture, tree, dir, artifacts(['cache/corpus']))).rejects.toThrow(
|
|
122
|
-
/cannot put cache\/corpus back/,
|
|
123
|
-
);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it('compares whole path segments, so a shorter name is not read as a parent', async () => {
|
|
127
|
-
// `'cache/corpus'.startsWith('cach')` is true and means nothing: `rm -rf <cwd>/cach` does not
|
|
128
|
-
// touch `cache/`. A prefix test without the separator refuses replays that were never at risk,
|
|
129
|
-
// which is the bug this whole function is a narrowing of.
|
|
130
|
-
await expect(assertRestorable(capture, tree, dir, artifacts(['cach']))).resolves.toHaveLength(
|
|
131
|
-
2,
|
|
132
|
-
);
|
|
133
|
-
await expect(assertRestorable(capture, tree, dir, artifacts(['too']))).resolves.toHaveLength(2);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
it('normalizes the declared path the way the deletion does, before comparing', async () => {
|
|
137
|
-
// `resetArtifacts` deletes `resolve(dir, root)`; the containment test compares the declared
|
|
138
|
-
// string. For anything but a clean relative path the two disagree — and it is the guard that
|
|
139
|
-
// must not, because the `rm` happens either way. Every form below removes `<dir>/cache`.
|
|
140
|
-
for (const declared of ['./cache', 'tools/../cache', 'cache/./']) {
|
|
141
|
-
await expect(
|
|
142
|
-
assertRestorable(capture, tree, dir, artifacts([declared])),
|
|
143
|
-
declared,
|
|
144
|
-
).rejects.toThrow(/cannot put cache\/corpus back/);
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
it.runIf(process.platform === 'win32')(
|
|
149
|
-
'compares case the way the filesystem does, where the filesystem does not care',
|
|
150
|
-
async () => {
|
|
151
|
-
// `rm -rf <dir>/Cache` on Windows removes `cache`, and git treats the two as one path.
|
|
152
|
-
// A case-sensitive prefix test therefore calls a corpus safe and then deletes it.
|
|
153
|
-
await expect(assertRestorable(capture, tree, dir, artifacts(['Cache']))).rejects.toThrow(
|
|
154
|
-
/cannot put cache\/corpus back/,
|
|
155
|
-
);
|
|
156
|
-
},
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
it('refuses when the reset path is inside the repository, not the other way round', async () => {
|
|
160
|
-
// The mirror image of the case above, and the one a containment test written in the obvious
|
|
161
|
-
// direction misses. `resetBeforeReplay: ['data/cache']` — a multi-segment declaration, which
|
|
162
|
-
// `resetRoots` exists to support — with a nested repository at `data`. The reset deletes a
|
|
163
|
-
// path *inside* the operator's repository.
|
|
164
|
-
//
|
|
165
|
-
// Nothing else catches it. `assertResettable` asks `uncaptured(['data/cache'])`, and git does
|
|
166
|
-
// not look inside an embedded repository, so that comes back empty and it passes. The replay
|
|
167
|
-
// then removes `data/cache`, restores with `allowIncomplete`, and neither the recording nor
|
|
168
|
-
// the safety copy holds a byte of it — gone for good, under exit 0.
|
|
169
|
-
const nest = await mkdtemp(join(tmpdir(), 'agenticreplay-nested-ancestor-'));
|
|
170
|
-
try {
|
|
171
|
-
await initRepo(nest);
|
|
172
|
-
await nestRepo(nest, 'data');
|
|
173
|
-
await mkdir(join(nest, 'data', 'cache'), { recursive: true });
|
|
174
|
-
await writeFile(join(nest, 'data', 'cache', 'index.bin'), 'the index the pipeline built');
|
|
175
|
-
const inner = await FsCapture.start({ runDir: join(nest, '.agenticreplay-run'), cwd: nest });
|
|
176
|
-
const snapshot = await inner.snapshotTurn(0);
|
|
177
|
-
// The gitlink really is the ancestor, not the reset path itself.
|
|
178
|
-
expect(await inner.gitlinks(snapshot.tree)).toEqual(['data']);
|
|
179
|
-
await expect(
|
|
180
|
-
assertRestorable(inner, snapshot.tree, nest, artifacts(['data/cache'])),
|
|
181
|
-
).rejects.toThrow(/cannot put data back/);
|
|
182
|
-
} finally {
|
|
183
|
-
await rm(nest, { recursive: true, force: true });
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
it('has nothing to say about a workspace that holds no nested repository', async () => {
|
|
188
|
-
const plain = await mkdtemp(join(tmpdir(), 'agenticreplay-nested-plain-'));
|
|
189
|
-
try {
|
|
190
|
-
await initRepo(plain);
|
|
191
|
-
await writeFile(join(plain, 'notes.md'), 'ordinary work');
|
|
192
|
-
const ordinary = await FsCapture.start({
|
|
193
|
-
runDir: join(plain, '.agenticreplay-run'),
|
|
194
|
-
cwd: plain,
|
|
195
|
-
});
|
|
196
|
-
const snapshot = await ordinary.snapshotTurn(0);
|
|
197
|
-
await expect(
|
|
198
|
-
assertRestorable(ordinary, snapshot.tree, plain, artifacts(['cache'])),
|
|
199
|
-
).resolves.toEqual([]);
|
|
200
|
-
} finally {
|
|
201
|
-
await rm(plain, { recursive: true, force: true });
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* The same thing from outside, with an adapter that declares no artifacts — which is all of them
|
|
208
|
-
* but `indexrag`, and so is the case the issue was filed from.
|
|
209
|
-
*
|
|
210
|
-
* Every assertion below failed before: the replay exited 1 without running the agent, and did it
|
|
211
|
-
* from inside the safety net rather than before it, so it printed `replay.restore_failed` telling
|
|
212
|
-
* the operator their files were "in that store and were not put back" — of a working tree nothing
|
|
213
|
-
* had touched — and left a copy of the whole workspace behind in the temp directory.
|
|
214
|
-
*/
|
|
215
|
-
/**
|
|
216
|
-
* THE SAME QUESTION, OF A REPOSITORY GIT COULD NOT NAME.
|
|
217
|
-
*
|
|
218
|
-
* `assertRestorable` above asks it of the recording's gitlinks. One with no commit is in no tree,
|
|
219
|
-
* so that guard never sees it — and `uncaptured` does not either: `ls-files --others` does not
|
|
220
|
-
* descend into an embedded repository, so a reset root INSIDE one comes back empty. Measured on
|
|
221
|
-
* the workspace these build: empty for `data/cache`, `data/` for `data`.
|
|
222
|
-
*
|
|
223
|
-
* That gap only became reachable when the snapshot stopped throwing on a commit-less repository:
|
|
224
|
-
* before, a replay in such a workspace exited long before the reset. So the guard has to arrive
|
|
225
|
-
* with it, and it is `assertResettable` that can ask, because the safety copy is the only thing
|
|
226
|
-
* that ever names one.
|
|
227
|
-
*/
|
|
228
|
-
describe('assertResettable, with a nested repository that has no commit', () => {
|
|
229
|
-
const artifacts = (resetBeforeReplay: string[]) => ({ resetBeforeReplay });
|
|
230
|
-
let dir: string;
|
|
231
|
-
let safety: FsCapture;
|
|
232
|
-
|
|
233
|
-
/** `git init` and files, nothing committed — the state git cannot make a gitlink of. */
|
|
234
|
-
async function startProject(rel: string): Promise<void> {
|
|
235
|
-
const at = join(dir, ...rel.split('/'));
|
|
236
|
-
await mkdir(at, { recursive: true });
|
|
237
|
-
await initRepo(at);
|
|
238
|
-
await writeFile(join(at, 'notes.md'), 'work of my own');
|
|
239
|
-
await mkdir(join(at, 'cache'), { recursive: true });
|
|
240
|
-
await writeFile(join(at, 'cache', 'mine.bin'), 'also mine, and in nobody’s snapshot');
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
beforeEach(async () => {
|
|
244
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-nc-guard-'));
|
|
245
|
-
await initRepo(dir);
|
|
246
|
-
await writeFile(join(dir, 'README.md'), 'the outer project');
|
|
247
|
-
await startProject('data');
|
|
248
|
-
// A real capture over the real workspace: what the guard reads is what `git add` decided,
|
|
249
|
-
// not a shape this test made up.
|
|
250
|
-
safety = await FsCapture.start({ runDir: join(dir, '.agenticreplay-run'), cwd: dir });
|
|
251
|
-
await safety.snapshotTurn(0);
|
|
252
|
-
});
|
|
253
|
-
afterEach(async () => {
|
|
254
|
-
await rm(dir, { recursive: true, force: true });
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
it('is named by the snapshot at all, which is what the guard has to read', async () => {
|
|
258
|
-
expect(safety.uncommittedNested).toEqual(['data']);
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
/** The direction `uncaptured` cannot see: the reset reaches INSIDE the repository. */
|
|
262
|
-
it('refuses a reset path inside it, which nothing else catches', async () => {
|
|
263
|
-
await expect(safety.uncaptured(['data/cache'])).resolves.toEqual([]);
|
|
264
|
-
await expect(assertResettable(safety, dir, artifacts(['data/cache']))).rejects.toThrow(
|
|
265
|
-
/cannot put data back/,
|
|
266
|
-
);
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
it('refuses a reset path that is the repository itself', async () => {
|
|
270
|
-
await expect(assertResettable(safety, dir, artifacts(['data']))).rejects.toThrow(
|
|
271
|
-
/cannot put data back/,
|
|
272
|
-
);
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
it('refuses a reset path the repository sits inside', async () => {
|
|
276
|
-
await startProject('build/scratch');
|
|
277
|
-
await safety.snapshotTurn(1);
|
|
278
|
-
await expect(assertResettable(safety, dir, artifacts(['build']))).rejects.toThrow(
|
|
279
|
-
/build\/scratch/,
|
|
280
|
-
);
|
|
281
|
-
});
|
|
282
|
-
|
|
283
|
-
it('says nothing has been deleted, and how to get past it', async () => {
|
|
284
|
-
const message = await assertResettable(safety, dir, artifacts(['data/cache'])).then(
|
|
285
|
-
() => 'it did not refuse',
|
|
286
|
-
(error: Error) => error.message,
|
|
287
|
-
);
|
|
288
|
-
expect(message).toContain('Nothing has been deleted');
|
|
289
|
-
expect(message).toContain('--in-place');
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* Whole segments, the same as the gitlink guard: `rm -rf <cwd>/dat` does not touch `data/`, and
|
|
294
|
-
* a prefix test without the separator refuses replays that were never at risk.
|
|
295
|
-
*/
|
|
296
|
-
it('compares whole path segments, so a shorter name is not read as a parent', async () => {
|
|
297
|
-
await expect(assertResettable(safety, dir, artifacts(['dat']))).resolves.toBeUndefined();
|
|
298
|
-
await expect(assertResettable(safety, dir, artifacts(['database']))).resolves.toBeUndefined();
|
|
299
|
-
});
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Spelled the way the filesystem spells it. Windows and macOS fold case, so `Data` and
|
|
303
|
-
* `data/cache` are the same two directories there and the reset really does reach in; Linux does
|
|
304
|
-
* not, so they are different directories and refusing would be crying wolf. `fold` is what makes
|
|
305
|
-
* the guard say the same thing the `rm` will do, on each.
|
|
306
|
-
*/
|
|
307
|
-
it('folds case where the filesystem does, and not where it does not', async () => {
|
|
308
|
-
await rm(join(dir, 'data'), { recursive: true, force: true });
|
|
309
|
-
await startProject('Data');
|
|
310
|
-
await safety.snapshotTurn(1);
|
|
311
|
-
expect(safety.uncommittedNested).toContain('Data');
|
|
312
|
-
|
|
313
|
-
const verdict = assertResettable(safety, dir, artifacts(['data/cache']));
|
|
314
|
-
if (process.platform === 'win32' || process.platform === 'darwin') {
|
|
315
|
-
await expect(verdict).rejects.toThrow(/cannot put Data back/);
|
|
316
|
-
} else {
|
|
317
|
-
await expect(verdict).resolves.toBeUndefined();
|
|
318
|
-
}
|
|
319
|
-
});
|
|
320
|
-
|
|
321
|
-
it('lets a reset that cannot reach it go ahead', async () => {
|
|
322
|
-
await mkdir(join(dir, 'cache'), { recursive: true });
|
|
323
|
-
await writeFile(join(dir, 'cache', 'built.bin'), 'the run built this');
|
|
324
|
-
await safety.snapshotTurn(1);
|
|
325
|
-
await expect(assertResettable(safety, dir, artifacts(['cache']))).resolves.toBeUndefined();
|
|
326
|
-
});
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
* A DECLARED ARTIFACT PATH INSIDE A NESTED REPOSITORY — `resetBeforeReplay: ['data/cache']` with
|
|
331
|
-
* the operator's own project at `data`.
|
|
332
|
-
*
|
|
333
|
-
* Git stages nothing inside another repository, and before the forced add set such a path aside
|
|
334
|
-
* it answered in two ways, both of them wrong for agenticreplay:
|
|
335
|
-
*
|
|
336
|
-
* committed, not ignored the forced add died on "Pathspec 'data/cache' is in submodule 'data'"
|
|
337
|
-
* — every snapshot of a recording, and the safety copy of a replay,
|
|
338
|
-
* after its `agenticreplay-safety-*` directory already existed
|
|
339
|
-
* ignored, or no commit the forced add exited 0 having staged nothing, and a replay whose
|
|
340
|
-
* reset reached `data/cache` deleted it under exit 0, having printed
|
|
341
|
-
* "your files are restored when the replay ends"
|
|
342
|
-
*
|
|
343
|
-
* No bundled adapter declares a path that deep, so these drive the two functions the CLI runs —
|
|
344
|
-
* `appendSnapshot` while recording and `assertResettable` before a reset — over a real capture of
|
|
345
|
-
* a real workspace.
|
|
346
|
-
*/
|
|
347
|
-
describe('a declared artifact path inside a nested repository', () => {
|
|
348
|
-
const artifacts = (resetBeforeReplay: string[]) => ({ resetBeforeReplay });
|
|
349
|
-
let dir: string;
|
|
350
|
-
|
|
351
|
-
/** The operator's project at `data`, with their work under `data/cache/`. */
|
|
352
|
-
async function project(committed: boolean): Promise<void> {
|
|
353
|
-
const at = join(dir, 'data');
|
|
354
|
-
await mkdir(join(at, 'cache'), { recursive: true });
|
|
355
|
-
await initRepo(at);
|
|
356
|
-
await writeFile(join(at, 'notes.md'), 'work of my own');
|
|
357
|
-
await writeFile(join(at, 'cache', 'mine.bin'), 'also mine, and in nobody’s snapshot');
|
|
358
|
-
if (committed) {
|
|
359
|
-
await run('git', ['add', '-A'], { cwd: at });
|
|
360
|
-
await run('git', ['commit', '-qm', 'mine'], { cwd: at });
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
/** The copy a replay takes: forced over what the adapter captures and resets. */
|
|
365
|
-
async function capture(forced: string[]): Promise<FsCapture> {
|
|
366
|
-
return FsCapture.start({ runDir: join(dir, '.agenticreplay-run'), cwd: dir, forced });
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
beforeEach(async () => {
|
|
370
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-inside-'));
|
|
371
|
-
await initRepo(dir);
|
|
372
|
-
await writeFile(join(dir, 'README.md'), 'the outer project');
|
|
373
|
-
});
|
|
374
|
-
afterEach(async () => {
|
|
375
|
-
await rm(dir, { recursive: true, force: true });
|
|
376
|
-
});
|
|
377
|
-
|
|
378
|
-
describe('while recording', () => {
|
|
379
|
-
async function record(forced: string[]): Promise<{ text: string; types: string[] }> {
|
|
380
|
-
const lines: string[] = [];
|
|
381
|
-
const types: string[] = [];
|
|
382
|
-
const out = new Output({ write: (s) => void lines.push(s), isTTY: false });
|
|
383
|
-
// Only `append` is used; what matters is what the snapshot wrote, not how a trace stores it.
|
|
384
|
-
const writer = {
|
|
385
|
-
append: async (event: { type: string }) => void types.push(event.type),
|
|
386
|
-
} as unknown as TraceWriter;
|
|
387
|
-
await appendSnapshot(await capture(forced), writer, out, 0, { initial: true });
|
|
388
|
-
return { text: lines.join(''), types };
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
it('keeps the snapshot a committed one used to cost every turn', async () => {
|
|
392
|
-
await project(true);
|
|
393
|
-
const { text, types } = await record(['data/cache']);
|
|
394
|
-
expect(text).not.toContain('fs.snapshot_failed');
|
|
395
|
-
expect(types).toContain('fs.snapshot');
|
|
396
|
-
});
|
|
397
|
-
|
|
398
|
-
it('says which declared path it could not hold, and whose repository it is in', async () => {
|
|
399
|
-
await writeFile(join(dir, '.gitignore'), 'data/\n');
|
|
400
|
-
await project(true);
|
|
401
|
-
const { text } = await record(['data/cache']);
|
|
402
|
-
// Silent before: nothing failed, and nothing said the artifact was not in the recording.
|
|
403
|
-
expect(text).toContain('fs.artifact_inside_repository');
|
|
404
|
-
expect(text).toContain('paths=data/cache');
|
|
405
|
-
expect(text).toContain('inside=data');
|
|
406
|
-
});
|
|
407
|
-
});
|
|
408
|
-
|
|
409
|
-
describe('before a reset', () => {
|
|
410
|
-
/** The case that deleted the operator's work: nothing else sees a repository around the root. */
|
|
411
|
-
it('refuses a reset path inside one the workspace ignores', async () => {
|
|
412
|
-
await writeFile(join(dir, '.gitignore'), 'data/\n');
|
|
413
|
-
await project(true);
|
|
414
|
-
const safety = await capture(['data/cache']);
|
|
415
|
-
await safety.snapshotTurn(0);
|
|
416
|
-
|
|
417
|
-
// Pinned so the reason is on the page: neither question the other guards ask sees it.
|
|
418
|
-
await expect(safety.uncaptured(['data/cache'])).resolves.toEqual([]);
|
|
419
|
-
expect(safety.uncommittedNested).toEqual([]);
|
|
420
|
-
await expect(assertResettable(safety, dir, artifacts(['data/cache']))).rejects.toThrow(
|
|
421
|
-
/cannot put data back/,
|
|
422
|
-
);
|
|
423
|
-
});
|
|
424
|
-
|
|
425
|
-
it('refuses one that is committed and not ignored, which used to die inside git', async () => {
|
|
426
|
-
await project(true);
|
|
427
|
-
const safety = await capture(['data/cache']);
|
|
428
|
-
// The throw this replaces came from right here, after `agenticreplay-safety-*` already existed.
|
|
429
|
-
await expect(safety.snapshotTurn(0)).resolves.toBeDefined();
|
|
430
|
-
await expect(assertResettable(safety, dir, artifacts(['data/cache']))).rejects.toThrow(
|
|
431
|
-
/cannot put data back/,
|
|
432
|
-
);
|
|
433
|
-
});
|
|
434
|
-
|
|
435
|
-
it('refuses one with no commit under an ignored path', async () => {
|
|
436
|
-
await writeFile(join(dir, '.gitignore'), 'data/\n');
|
|
437
|
-
await project(false);
|
|
438
|
-
const safety = await capture(['data/cache']);
|
|
439
|
-
await safety.snapshotTurn(0);
|
|
440
|
-
await expect(assertResettable(safety, dir, artifacts(['data/cache']))).rejects.toThrow(
|
|
441
|
-
/cannot put data back/,
|
|
442
|
-
);
|
|
443
|
-
});
|
|
444
|
-
|
|
445
|
-
/**
|
|
446
|
-
* It used to say "commit inside them", which never helped: a committed repository is a gitlink,
|
|
447
|
-
* whose contents no snapshot holds either, so the same reset is refused the same way — as the
|
|
448
|
-
* committed cases above show.
|
|
449
|
-
*/
|
|
450
|
-
it('does not tell the operator to commit inside it', async () => {
|
|
451
|
-
await project(false);
|
|
452
|
-
const safety = await capture(['data/cache']);
|
|
453
|
-
await safety.snapshotTurn(0);
|
|
454
|
-
const message = await assertResettable(safety, dir, artifacts(['data/cache'])).then(
|
|
455
|
-
() => 'it did not refuse',
|
|
456
|
-
(error: Error) => error.message,
|
|
457
|
-
);
|
|
458
|
-
expect(message).toContain('Nothing has been deleted');
|
|
459
|
-
expect(message).not.toMatch(/commit inside/i);
|
|
460
|
-
});
|
|
461
|
-
|
|
462
|
-
it('lets a reset that reaches only other paths go ahead', async () => {
|
|
463
|
-
await writeFile(join(dir, '.gitignore'), 'data/\ncache/\n');
|
|
464
|
-
await project(true);
|
|
465
|
-
await mkdir(join(dir, 'cache'), { recursive: true });
|
|
466
|
-
await writeFile(join(dir, 'cache', 'index.bin'), 'the run built this');
|
|
467
|
-
// `data/cache` is captured-only here; the reset is `cache`, which holds no repository.
|
|
468
|
-
const safety = await capture(['data/cache', 'cache']);
|
|
469
|
-
await safety.snapshotTurn(0);
|
|
470
|
-
await expect(assertResettable(safety, dir, artifacts(['cache']))).resolves.toBeUndefined();
|
|
471
|
-
});
|
|
472
|
-
});
|
|
473
|
-
});
|
|
474
|
-
|
|
475
|
-
describe('agenticreplay replay, in a workspace holding a nested git repository', () => {
|
|
476
|
-
const timeout = 120_000;
|
|
477
|
-
const nested = ['tools', 'nested-repo'];
|
|
478
|
-
let dir: string;
|
|
479
|
-
let scratch: string;
|
|
480
|
-
let env: NodeJS.ProcessEnv;
|
|
481
|
-
let runId: string;
|
|
482
|
-
|
|
483
|
-
beforeEach(async () => {
|
|
484
|
-
// A temp dir of this test's own: the safety copy is made under it, so one left behind can be
|
|
485
|
-
// counted rather than guessed at from a directory shared with every other run on the machine.
|
|
486
|
-
scratch = await mkdtemp(join(tmpdir(), 'agenticreplay-nested-tmp-'));
|
|
487
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-nested-ws-'));
|
|
488
|
-
env = { ...process.env, NO_COLOR: '1', TMPDIR: scratch, TMP: scratch, TEMP: scratch };
|
|
489
|
-
|
|
490
|
-
await initRepo(dir);
|
|
491
|
-
await nestRepo(dir, nested.join('/'));
|
|
492
|
-
await writeFile(join(dir, 'output.txt'), 'as the recording started');
|
|
493
|
-
await writeFile(join(dir, 'a.mjs'), QUIET_AGENT);
|
|
494
|
-
await run(process.execPath, [cli, 'record', 'node', '--', 'node', 'a.mjs'], {
|
|
495
|
-
cwd: dir,
|
|
496
|
-
env,
|
|
497
|
-
timeout: timeout / 2,
|
|
498
|
-
});
|
|
499
|
-
[runId] = (await readdir(join(dir, '.agenticreplay', 'runs'))) as [string];
|
|
500
|
-
// What the operator has in front of them when they ask for the replay: their own work, on top
|
|
501
|
-
// of what the recorded agent left behind.
|
|
502
|
-
await writeFile(join(dir, 'output.txt'), 'my own uncommitted edit');
|
|
503
|
-
}, timeout);
|
|
504
|
-
|
|
505
|
-
afterEach(async () => {
|
|
506
|
-
await rm(dir, { recursive: true, force: true });
|
|
507
|
-
await rm(scratch, { recursive: true, force: true });
|
|
508
|
-
});
|
|
509
|
-
|
|
510
|
-
/** The exit code matters as much as the output, so a rejection is read rather than thrown on. */
|
|
511
|
-
async function replay(...argv: string[]): Promise<{ code: number; out: string }> {
|
|
512
|
-
const result = (await run(process.execPath, [cli, 'replay', runId, ...argv], {
|
|
513
|
-
cwd: dir,
|
|
514
|
-
env,
|
|
515
|
-
timeout: timeout / 2,
|
|
516
|
-
}).catch((error: unknown) => error)) as { code?: number; stdout?: string; stderr?: string };
|
|
517
|
-
return { code: result.code ?? 0, out: `${result.stdout ?? ''}${result.stderr ?? ''}` };
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
const safetyCopies = async (): Promise<string[]> =>
|
|
521
|
-
(await readdir(scratch)).filter((entry) => entry.startsWith('agenticreplay-safety-'));
|
|
522
|
-
|
|
523
|
-
it(
|
|
524
|
-
'replays it, keeps the repository, and puts the operator’s own tree back',
|
|
525
|
-
async () => {
|
|
526
|
-
const { code, out } = await replay();
|
|
527
|
-
expect(code, out).toBe(0);
|
|
528
|
-
expect(out).toContain('replay.nested_kept');
|
|
529
|
-
expect(out).toContain('tools/nested-repo');
|
|
530
|
-
expect(out).not.toContain('replay.restore_failed');
|
|
531
|
-
|
|
532
|
-
expect(await readFile(join(dir, ...nested, 'inside.txt'), 'utf8')).toBe(
|
|
533
|
-
'held by the nested repo',
|
|
534
|
-
);
|
|
535
|
-
await expect(readdir(join(dir, ...nested, '.git'))).resolves.not.toHaveLength(0);
|
|
536
|
-
// The safety net's whole promise, and the one the false refusal broke: what the operator had
|
|
537
|
-
// when they ran the command is what they have when it finishes.
|
|
538
|
-
expect(await readFile(join(dir, 'output.txt'), 'utf8')).toBe('my own uncommitted edit');
|
|
539
|
-
expect(await safetyCopies()).toEqual([]);
|
|
540
|
-
},
|
|
541
|
-
timeout,
|
|
542
|
-
);
|
|
543
|
-
|
|
544
|
-
it(
|
|
545
|
-
'names a repository the operator added since the recording, which only the copy knows about',
|
|
546
|
-
async () => {
|
|
547
|
-
// The gap belongs to whichever tree holds the gitlink, and the two are not the same set.
|
|
548
|
-
// `assertRestorable` reads the recording's; what `release` actually skips is every gitlink
|
|
549
|
-
// in the copy of the operator's own tree. A repository cloned into the workspace after the
|
|
550
|
-
// recording was made is in the second and not the first — so reporting only the first said
|
|
551
|
-
// nothing about it and then promised, unqualified, that the files come back.
|
|
552
|
-
const fresh = join(dir, 'vendored-since');
|
|
553
|
-
await mkdir(fresh, { recursive: true });
|
|
554
|
-
await initRepo(fresh);
|
|
555
|
-
await writeFile(join(fresh, 'mine.txt'), 'work only I have');
|
|
556
|
-
await run('git', ['add', '-A'], { cwd: fresh });
|
|
557
|
-
await run('git', ['commit', '-qm', 'since'], { cwd: fresh });
|
|
558
|
-
|
|
559
|
-
const { code, out } = await replay();
|
|
560
|
-
expect(code, out).toBe(0);
|
|
561
|
-
expect(out).toContain('vendored-since');
|
|
562
|
-
expect(out).toContain('restored when the replay ends, except inside');
|
|
563
|
-
expect(out).toContain('agenticreplay holds no copy of what is inside them');
|
|
564
|
-
},
|
|
565
|
-
timeout,
|
|
566
|
-
);
|
|
567
|
-
|
|
568
|
-
it(
|
|
569
|
-
'copies what it can into a --worktree replay instead of dying inside git',
|
|
570
|
-
async () => {
|
|
571
|
-
const { code, out } = await replay('--worktree');
|
|
572
|
-
expect(code, out).toBe(0);
|
|
573
|
-
// A different sentence from the in-place case, because a fresh directory is not a working
|
|
574
|
-
// tree the repository is already sitting in: there, it is simply not there.
|
|
575
|
-
expect(out).toContain('replay.nested_kept');
|
|
576
|
-
expect(out).toContain('absent from a fresh worktree');
|
|
577
|
-
expect(await safetyCopies()).toEqual([]);
|
|
578
|
-
},
|
|
579
|
-
timeout,
|
|
580
|
-
);
|
|
581
|
-
});
|
|
582
|
-
|
|
583
|
-
/**
|
|
584
|
-
* `agenticreplay replay --from` — and so `agenticreplay compare`, which forks — restores a checkpoint into a
|
|
585
|
-
* directory it makes itself, and used to die inside git while doing it.
|
|
586
|
-
*
|
|
587
|
-
* Nothing in that path deletes anything, so the tolerance is unconditional; what it owes the
|
|
588
|
-
* operator is a word about the one thing the fresh worktree will not contain. The failure it
|
|
589
|
-
* replaces named a tree hash and an internal parameter and no course of action.
|
|
590
|
-
*/
|
|
591
|
-
describe('a fork taken in a workspace holding a nested git repository', () => {
|
|
592
|
-
const timeout = 120_000;
|
|
593
|
-
let dir: string;
|
|
594
|
-
let model: Awaited<ReturnType<typeof startFakeModel>>;
|
|
595
|
-
let log: LogEntry[];
|
|
596
|
-
let out: Output;
|
|
597
|
-
|
|
598
|
-
beforeEach(async () => {
|
|
599
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-nested-fork-'));
|
|
600
|
-
model = await startFakeModel();
|
|
601
|
-
log = [];
|
|
602
|
-
out = new Output({ write: () => {}, isTTY: false, sink: (entry) => log.push(entry) });
|
|
603
|
-
await initRepo(dir);
|
|
604
|
-
await nestRepo(dir, 'tools/vendored');
|
|
605
|
-
await writeFile(join(dir, 'auth.ts'), 'export const fixed = false;\n');
|
|
606
|
-
process.env.FAKE_AGENT_TURNS = '3';
|
|
607
|
-
process.env.FAKE_AGENT_CWD = dir;
|
|
608
|
-
});
|
|
609
|
-
|
|
610
|
-
afterEach(async () => {
|
|
611
|
-
await model.close();
|
|
612
|
-
delete process.env.FAKE_AGENT_TURNS;
|
|
613
|
-
delete process.env.FAKE_AGENT_CWD;
|
|
614
|
-
await rm(dir, { recursive: true, force: true });
|
|
615
|
-
});
|
|
616
|
-
|
|
617
|
-
it(
|
|
618
|
-
'restores what the checkpoint holds, and says what a fresh worktree will not have',
|
|
619
|
-
async () => {
|
|
620
|
-
const parent = await recordCommand(
|
|
621
|
-
parseArgs([
|
|
622
|
-
'record',
|
|
623
|
-
'generic-openai',
|
|
624
|
-
'--upstream-anthropic',
|
|
625
|
-
model.url,
|
|
626
|
-
'--',
|
|
627
|
-
'node',
|
|
628
|
-
FAKE_AGENT,
|
|
629
|
-
]),
|
|
630
|
-
out,
|
|
631
|
-
dir,
|
|
632
|
-
);
|
|
633
|
-
const events = await (await TraceReader.open(parent.runDir)).events();
|
|
634
|
-
const from = deriveCheckpoints(events)[0]!.seq;
|
|
635
|
-
log.length = 0;
|
|
636
|
-
|
|
637
|
-
await replayCommand(
|
|
638
|
-
parseArgs([
|
|
639
|
-
'replay',
|
|
640
|
-
parent.runId,
|
|
641
|
-
'--from',
|
|
642
|
-
String(from),
|
|
643
|
-
'--upstream-anthropic',
|
|
644
|
-
model.url,
|
|
645
|
-
]),
|
|
646
|
-
out,
|
|
647
|
-
dir,
|
|
648
|
-
);
|
|
649
|
-
|
|
650
|
-
const kept = log.find((entry) => entry.event === 'replay.nested_kept');
|
|
651
|
-
expect(kept?.fields.paths).toBe('tools/vendored');
|
|
652
|
-
expect(String(kept?.fields.effect)).toContain('absent from a fresh worktree');
|
|
653
|
-
},
|
|
654
|
-
timeout,
|
|
655
|
-
);
|
|
656
|
-
});
|
|
657
|
-
|
|
658
|
-
/**
|
|
659
|
-
* The half that still refuses, and the reason the guard runs before anything has been copied.
|
|
660
|
-
*
|
|
661
|
-
* `indexrag` declares `resetBeforeReplay: ['cache', 'vector_store']`, so the replay really does
|
|
662
|
-
* `rm -rf cache` before restoring — and a nested repository inside it is one the restore cannot
|
|
663
|
-
* refill. A recording made today cannot hold that gitlink, because the forced add drops it
|
|
664
|
-
* (`ShadowIndex.dropForcedGitlinks`); the recordings that can are the ones already on disk, made
|
|
665
|
-
* before it did, which is exactly who a guard is here for. So the tree is edited into the shape
|
|
666
|
-
* one of those has, which is the only way to reach this from outside.
|
|
667
|
-
*/
|
|
668
|
-
describe('a recording whose snapshot holds a nested repository inside a reset path', () => {
|
|
669
|
-
const timeout = 120_000;
|
|
670
|
-
let dir: string;
|
|
671
|
-
let scratch: string;
|
|
672
|
-
let env: NodeJS.ProcessEnv;
|
|
673
|
-
let runId: string;
|
|
674
|
-
let runDir: string;
|
|
675
|
-
|
|
676
|
-
/** Put a gitlink into the recorded tree, the way a pre-`dropForcedGitlinks` recording holds one. */
|
|
677
|
-
async function forgeGitlink(path: string): Promise<void> {
|
|
678
|
-
const store = join(runDir, 'fs');
|
|
679
|
-
const eventsPath = join(runDir, 'events.jsonl');
|
|
680
|
-
const lines = (await readFile(eventsPath, 'utf8')).split('\n');
|
|
681
|
-
const at = lines.findIndex((line) => line.includes('"fs.snapshot"'));
|
|
682
|
-
const event = JSON.parse(lines[at]!) as { attrs: { tree: string } };
|
|
683
|
-
const git = (...args: string[]) =>
|
|
684
|
-
run('git', ['--git-dir', store, ...args], {
|
|
685
|
-
env: { ...process.env, GIT_INDEX_FILE: join(runDir, 'forge.index') },
|
|
686
|
-
});
|
|
687
|
-
await git('read-tree', event.attrs.tree);
|
|
688
|
-
// Any commit id will do: a gitlink is a reference to a history this store never held, which
|
|
689
|
-
// is the entire reason a restore cannot write one out.
|
|
690
|
-
await git('update-index', '--add', '--cacheinfo', `160000,${'0'.repeat(39)}1,${path}`);
|
|
691
|
-
event.attrs.tree = (await git('write-tree')).stdout.trim();
|
|
692
|
-
lines[at] = JSON.stringify(event);
|
|
693
|
-
await writeFile(eventsPath, lines.join('\n'));
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
beforeEach(async () => {
|
|
697
|
-
scratch = await mkdtemp(join(tmpdir(), 'agenticreplay-doomed-tmp-'));
|
|
698
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-doomed-ws-'));
|
|
699
|
-
env = { ...process.env, NO_COLOR: '1', TMPDIR: scratch, TMP: scratch, TEMP: scratch };
|
|
700
|
-
await initRepo(dir);
|
|
701
|
-
await mkdir(join(dir, 'cache'), { recursive: true });
|
|
702
|
-
await writeFile(join(dir, 'cache', 'index.bin'), 'an index the pipeline built');
|
|
703
|
-
await nestRepo(dir, 'cache/corpus-repo');
|
|
704
|
-
await writeFile(join(dir, 'a.mjs'), QUIET_AGENT);
|
|
705
|
-
await run(process.execPath, [cli, 'record', 'indexrag', '--', 'node', 'a.mjs'], {
|
|
706
|
-
cwd: dir,
|
|
707
|
-
env,
|
|
708
|
-
timeout: timeout / 2,
|
|
709
|
-
});
|
|
710
|
-
[runId] = (await readdir(join(dir, '.agenticreplay', 'runs'))) as [string];
|
|
711
|
-
runDir = join(dir, '.agenticreplay', 'runs', runId!);
|
|
712
|
-
}, timeout);
|
|
713
|
-
|
|
714
|
-
afterEach(async () => {
|
|
715
|
-
await rm(dir, { recursive: true, force: true });
|
|
716
|
-
await rm(scratch, { recursive: true, force: true });
|
|
717
|
-
});
|
|
718
|
-
|
|
719
|
-
it(
|
|
720
|
-
'refuses, deletes nothing, and has not copied anything to have to put back',
|
|
721
|
-
async () => {
|
|
722
|
-
await forgeGitlink('cache/corpus-repo');
|
|
723
|
-
const result = (await run(process.execPath, [cli, 'replay', runId!], {
|
|
724
|
-
cwd: dir,
|
|
725
|
-
env,
|
|
726
|
-
timeout: timeout / 2,
|
|
727
|
-
}).catch((error: unknown) => error)) as {
|
|
728
|
-
code?: number;
|
|
729
|
-
stdout?: string;
|
|
730
|
-
stderr?: string;
|
|
731
|
-
};
|
|
732
|
-
const out = `${result.stdout ?? ''}${result.stderr ?? ''}`;
|
|
733
|
-
|
|
734
|
-
expect(result.code ?? 0, out).not.toBe(0);
|
|
735
|
-
expect(out).toContain('cannot put cache/corpus-repo back');
|
|
736
|
-
// The guard runs before the safety copy, so there is no copy to announce and no scratch
|
|
737
|
-
// directory to leave behind. Announcing a restore for a replay that never started is how
|
|
738
|
-
// the operator came to be told their files had been moved somewhere they had not.
|
|
739
|
-
expect(out).not.toContain('replay.restored');
|
|
740
|
-
expect(await readdir(scratch)).toEqual([]);
|
|
741
|
-
|
|
742
|
-
expect(await readFile(join(dir, 'cache', 'index.bin'), 'utf8')).toBe(
|
|
743
|
-
'an index the pipeline built',
|
|
744
|
-
);
|
|
745
|
-
expect(await readFile(join(dir, 'cache', 'corpus-repo', 'inside.txt'), 'utf8')).toBe(
|
|
746
|
-
'held by the nested repo',
|
|
747
|
-
);
|
|
748
|
-
},
|
|
749
|
-
timeout,
|
|
750
|
-
);
|
|
751
|
-
});
|
|
752
|
-
|
|
753
|
-
/**
|
|
754
|
-
* What the in-place path owes the operator, now that it no longer refuses.
|
|
755
|
-
*
|
|
756
|
-
* `agenticreplay replay` restores the recording's tree into the operator's own directory and runs the
|
|
757
|
-
* recorded agent there, live — agenticreplay does not intercept tool execution, so a recorded build step,
|
|
758
|
-
* generator or `rm` reaches inside a nested repository like any other path. The safety copy holds
|
|
759
|
-
* that repository only as a gitlink, so nothing it does there is reversible.
|
|
760
|
-
*
|
|
761
|
-
* That hole cannot be closed by a snapshot: git stores a nested repository as a commit id and
|
|
762
|
-
* never its contents. What can be closed is the operator being told the opposite — the note used
|
|
763
|
-
* to say "they are left exactly as they are" and the line under it "your files are restored when
|
|
764
|
-
* the replay ends", of the one region where neither was true.
|
|
765
|
-
*/
|
|
766
|
-
describe('a recording whose agent writes inside the nested repository', () => {
|
|
767
|
-
const timeout = 120_000;
|
|
768
|
-
const nested = ['tools', 'nested-repo'];
|
|
769
|
-
let dir: string;
|
|
770
|
-
let scratch: string;
|
|
771
|
-
let env: NodeJS.ProcessEnv;
|
|
772
|
-
let runId: string;
|
|
773
|
-
|
|
774
|
-
/** The operator's own uncommitted work, inside a vendored checkout they are patching. */
|
|
775
|
-
async function operatorsWork(): Promise<void> {
|
|
776
|
-
await writeFile(join(dir, ...nested, 'vendored.txt'), 'my own uncommitted patch');
|
|
777
|
-
await writeFile(join(dir, ...nested, 'notes.txt'), 'notes only I have');
|
|
778
|
-
}
|
|
779
|
-
|
|
780
|
-
beforeEach(async () => {
|
|
781
|
-
scratch = await mkdtemp(join(tmpdir(), 'agenticreplay-inside-tmp-'));
|
|
782
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-inside-ws-'));
|
|
783
|
-
env = { ...process.env, NO_COLOR: '1', TMPDIR: scratch, TMP: scratch, TEMP: scratch };
|
|
784
|
-
await initRepo(dir);
|
|
785
|
-
await nestRepo(dir, nested.join('/'));
|
|
786
|
-
await writeFile(
|
|
787
|
-
join(dir, 'a.mjs'),
|
|
788
|
-
[
|
|
789
|
-
"import { writeFileSync, rmSync, mkdirSync, existsSync } from 'node:fs';",
|
|
790
|
-
"import { join } from 'node:path';",
|
|
791
|
-
"const inside = join(process.cwd(), 'tools', 'nested-repo');",
|
|
792
|
-
'if (!existsSync(inside)) mkdirSync(inside, { recursive: true });',
|
|
793
|
-
"writeFileSync(join(inside, 'vendored.txt'), 'written by the replayed agent');",
|
|
794
|
-
"rmSync(join(inside, 'notes.txt'), { force: true });",
|
|
795
|
-
"process.stdout.write('HI');",
|
|
796
|
-
].join('\n'),
|
|
797
|
-
);
|
|
798
|
-
await run(process.execPath, [cli, 'record', 'node', '--', 'node', 'a.mjs'], {
|
|
799
|
-
cwd: dir,
|
|
800
|
-
env,
|
|
801
|
-
timeout: timeout / 2,
|
|
802
|
-
});
|
|
803
|
-
[runId] = (await readdir(join(dir, '.agenticreplay', 'runs'))) as [string];
|
|
804
|
-
await operatorsWork();
|
|
805
|
-
}, timeout);
|
|
806
|
-
|
|
807
|
-
afterEach(async () => {
|
|
808
|
-
await rm(dir, { recursive: true, force: true });
|
|
809
|
-
await rm(scratch, { recursive: true, force: true });
|
|
810
|
-
});
|
|
811
|
-
|
|
812
|
-
it(
|
|
813
|
-
'says so before the agent runs, rather than promising a restore it cannot perform',
|
|
814
|
-
async () => {
|
|
815
|
-
const { stdout, stderr } = await run(process.execPath, [cli, 'replay', runId!], {
|
|
816
|
-
cwd: dir,
|
|
817
|
-
env,
|
|
818
|
-
timeout: timeout / 2,
|
|
819
|
-
});
|
|
820
|
-
const out = `${stdout}${stderr}`;
|
|
821
|
-
// Not "they are left exactly as they are", which was only ever true of the restore.
|
|
822
|
-
expect(out).toContain('agenticreplay holds no copy of what is inside them');
|
|
823
|
-
expect(out).toContain('--worktree');
|
|
824
|
-
// And the unqualified promise on the next line carries the same exception, since that is
|
|
825
|
-
// the sentence the operator actually acts on.
|
|
826
|
-
expect(out).toContain('restored when the replay ends, except inside tools/nested-repo');
|
|
827
|
-
},
|
|
828
|
-
timeout,
|
|
829
|
-
);
|
|
830
|
-
|
|
831
|
-
it(
|
|
832
|
-
'and --worktree, which it points at, really does keep the agent out',
|
|
833
|
-
async () => {
|
|
834
|
-
const { stdout, stderr } = await run(
|
|
835
|
-
process.execPath,
|
|
836
|
-
[cli, 'replay', runId!, '--worktree'],
|
|
837
|
-
{ cwd: dir, env, timeout: timeout / 2 },
|
|
838
|
-
);
|
|
839
|
-
expect(`${stdout}${stderr}`).toContain('absent from a fresh worktree');
|
|
840
|
-
// The advice has to hold, or it is worse than none: the same recording, run this way,
|
|
841
|
-
// leaves the operator's copy alone entirely.
|
|
842
|
-
expect(await readFile(join(dir, ...nested, 'vendored.txt'), 'utf8')).toBe(
|
|
843
|
-
'my own uncommitted patch',
|
|
844
|
-
);
|
|
845
|
-
expect(await readFile(join(dir, ...nested, 'notes.txt'), 'utf8')).toBe('notes only I have');
|
|
846
|
-
},
|
|
847
|
-
timeout,
|
|
848
|
-
);
|
|
849
|
-
});
|
|
850
|
-
|
|
851
|
-
/**
|
|
852
|
-
* THE SAME REPOSITORY, WITH NO COMMIT IN IT YET.
|
|
853
|
-
*
|
|
854
|
-
* Every block above is about a nested repository git can record as a gitlink. One that has never
|
|
855
|
-
* been committed to has no HEAD for git to name it by, so `git add -A` refuses the whole add — and
|
|
856
|
-
* agenticreplay had no answer for that at either end:
|
|
857
|
-
*
|
|
858
|
-
* recorded with it there every turn's snapshot threw, so the trace held no `fs.snapshot` at
|
|
859
|
-
* all, and the replay read that absence as `--no-fs` and told the
|
|
860
|
-
* operator the run had been "recorded with --no-fs" when nobody passed it
|
|
861
|
-
* appearing before it the safety snapshot threw, so the replay exited 1 on git's own
|
|
862
|
-
* sentence about a commit checked out, leaving behind the `agenticreplay-safety-*`
|
|
863
|
-
* directory it had already made and printing no path to it
|
|
864
|
-
*
|
|
865
|
-
* `git init` in a subdirectory is all it takes, which is what starting a second project inside a
|
|
866
|
-
* workspace looks like until the first commit. Both ends are driven through the built binary here,
|
|
867
|
-
* because the thing that was wrong was what an operator saw and what was left on their disk.
|
|
868
|
-
*/
|
|
869
|
-
describe('a nested git repository with no commit in it', () => {
|
|
870
|
-
const timeout = 120_000;
|
|
871
|
-
const nested = ['newproject'];
|
|
872
|
-
let dir: string;
|
|
873
|
-
let scratch: string;
|
|
874
|
-
let env: NodeJS.ProcessEnv;
|
|
875
|
-
|
|
876
|
-
/** `git init` and a file, and nothing committed — the state git cannot make a gitlink of. */
|
|
877
|
-
async function startProject(): Promise<void> {
|
|
878
|
-
const at = join(dir, ...nested);
|
|
879
|
-
await mkdir(at, { recursive: true });
|
|
880
|
-
await initRepo(at);
|
|
881
|
-
await writeFile(join(at, 'main.py'), 'work of my own, never committed anywhere');
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
async function record(): Promise<{ id: string; out: string }> {
|
|
885
|
-
const result = await run(process.execPath, [cli, 'record', 'node', '--', 'node', 'a.mjs'], {
|
|
886
|
-
cwd: dir,
|
|
887
|
-
env,
|
|
888
|
-
timeout: timeout / 2,
|
|
889
|
-
});
|
|
890
|
-
const [id] = (await readdir(join(dir, '.agenticreplay', 'runs'))) as [string];
|
|
891
|
-
return { id, out: `${result.stdout}${result.stderr}` };
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
async function replay(id: string): Promise<{ code: number; out: string }> {
|
|
895
|
-
const result = (await run(process.execPath, [cli, 'replay', id], {
|
|
896
|
-
cwd: dir,
|
|
897
|
-
env,
|
|
898
|
-
timeout: timeout / 2,
|
|
899
|
-
}).catch((error: unknown) => error)) as { code?: number; stdout?: string; stderr?: string };
|
|
900
|
-
return { code: result.code ?? 0, out: `${result.stdout ?? ''}${result.stderr ?? ''}` };
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
beforeEach(async () => {
|
|
904
|
-
scratch = await mkdtemp(join(tmpdir(), 'agenticreplay-nc-tmp-'));
|
|
905
|
-
dir = await mkdtemp(join(tmpdir(), 'agenticreplay-nc-ws-'));
|
|
906
|
-
env = { ...process.env, NO_COLOR: '1', TMPDIR: scratch, TMP: scratch, TEMP: scratch };
|
|
907
|
-
await initRepo(dir);
|
|
908
|
-
await writeFile(join(dir, 'README.md'), 'the outer project');
|
|
909
|
-
await writeFile(join(dir, 'a.mjs'), QUIET_AGENT);
|
|
910
|
-
}, timeout);
|
|
911
|
-
|
|
912
|
-
afterEach(async () => {
|
|
913
|
-
await rm(dir, { recursive: true, force: true });
|
|
914
|
-
await rm(scratch, { recursive: true, force: true });
|
|
915
|
-
});
|
|
916
|
-
|
|
917
|
-
it(
|
|
918
|
-
'is recorded around, not instead of: the run still has snapshots, and says what is missing',
|
|
919
|
-
async () => {
|
|
920
|
-
await startProject();
|
|
921
|
-
const { id, out } = await record();
|
|
922
|
-
|
|
923
|
-
expect(out).toContain('fs.nested_not_captured');
|
|
924
|
-
expect(out).toContain('newproject');
|
|
925
|
-
expect(out).not.toContain('fs.snapshot_failed');
|
|
926
|
-
|
|
927
|
-
// The trace has the workspace in it, which is the whole difference: with the add failing
|
|
928
|
-
// there was no `fs.snapshot` anywhere, and everything downstream read that as `--no-fs`.
|
|
929
|
-
const events = await new TraceReader(join(dir, '.agenticreplay', 'runs', id)).events();
|
|
930
|
-
const snapshots = events.filter((event) => event.type === 'fs.snapshot');
|
|
931
|
-
expect(snapshots.length).toBeGreaterThan(0);
|
|
932
|
-
expect(deriveCheckpoints(events).some((point) => point.fsTree !== undefined)).toBe(true);
|
|
933
|
-
|
|
934
|
-
const capture = await FsCapture.start({
|
|
935
|
-
runDir: join(dir, '.agenticreplay', 'runs', id),
|
|
936
|
-
cwd: dir,
|
|
937
|
-
});
|
|
938
|
-
const tree = String(snapshots[0]?.attrs?.['tree']);
|
|
939
|
-
const held = (await capture.files(tree)).map((file) => file.path);
|
|
940
|
-
expect(held).toContain('README.md');
|
|
941
|
-
// And it is left OUT rather than swept in: a repository agenticreplay cannot restore is one it must
|
|
942
|
-
// not pretend to hold either.
|
|
943
|
-
expect(held.filter((path) => path.startsWith('newproject/'))).toEqual([]);
|
|
944
|
-
expect(await capture.gitlinks(tree)).toEqual([]);
|
|
945
|
-
},
|
|
946
|
-
timeout,
|
|
947
|
-
);
|
|
948
|
-
|
|
949
|
-
it(
|
|
950
|
-
'replays with one appearing since, keeping the work in it and leaving no copy behind',
|
|
951
|
-
async () => {
|
|
952
|
-
const { id } = await record();
|
|
953
|
-
// Started after the recording — the shape that took the safety snapshot down with it.
|
|
954
|
-
await startProject();
|
|
955
|
-
const mine = join(dir, ...nested, 'main.py');
|
|
956
|
-
|
|
957
|
-
const { code, out } = await replay(id);
|
|
958
|
-
|
|
959
|
-
expect(code, out).toBe(0);
|
|
960
|
-
expect(out).not.toContain('does not have a commit checked out');
|
|
961
|
-
// Named before the agent runs, for the reason every other nested repository is: agenticreplay holds
|
|
962
|
-
// no copy of what is in there, so whatever the replay does there stays.
|
|
963
|
-
expect(out).toContain('replay.nested_kept');
|
|
964
|
-
expect(out).toContain('newproject');
|
|
965
|
-
expect(await readFile(mine, 'utf8')).toBe('work of my own, never committed anywhere');
|
|
966
|
-
expect(
|
|
967
|
-
(await readdir(scratch)).filter((entry) => entry.startsWith('agenticreplay-safety-')),
|
|
968
|
-
).toEqual([]);
|
|
969
|
-
},
|
|
970
|
-
timeout,
|
|
971
|
-
);
|
|
972
|
-
});
|