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,1058 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
chmod,
|
|
3
|
-
lstat,
|
|
4
|
-
mkdir,
|
|
5
|
-
readFile,
|
|
6
|
-
readlink,
|
|
7
|
-
rename,
|
|
8
|
-
rm,
|
|
9
|
-
stat,
|
|
10
|
-
symlink,
|
|
11
|
-
writeFile,
|
|
12
|
-
} from 'node:fs/promises';
|
|
13
|
-
import { join } from 'node:path';
|
|
14
|
-
import { afterAll, describe, expect, it } from 'vitest';
|
|
15
|
-
import type { FileChange } from '../src/index.js';
|
|
16
|
-
import { EMPTY_TREE, ShadowIndex, gitAvailable, runGit } from '../src/index.js';
|
|
17
|
-
import { cleanupTempDirs, listFilesRecursive, makeTempDir } from './helpers.js';
|
|
18
|
-
|
|
19
|
-
const hasGit = await gitAvailable();
|
|
20
|
-
const itGit = it.skipIf(!hasGit);
|
|
21
|
-
|
|
22
|
-
afterAll(cleanupTempDirs);
|
|
23
|
-
|
|
24
|
-
interface Fixture {
|
|
25
|
-
root: string;
|
|
26
|
-
workTree: string;
|
|
27
|
-
gitDir: string;
|
|
28
|
-
shadow: ShadowIndex;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async function fixture(): Promise<Fixture> {
|
|
32
|
-
const root = await makeTempDir();
|
|
33
|
-
const workTree = join(root, 'ws');
|
|
34
|
-
const gitDir = join(root, 'run', 'fs');
|
|
35
|
-
await mkdir(workTree, { recursive: true });
|
|
36
|
-
const shadow = await ShadowIndex.create({ gitDir, workTree });
|
|
37
|
-
return { root, workTree, gitDir, shadow };
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
async function write(dir: string, rel: string, content: string | Uint8Array): Promise<void> {
|
|
41
|
-
const full = join(dir, rel);
|
|
42
|
-
await mkdir(join(full, '..'), { recursive: true });
|
|
43
|
-
await writeFile(full, content);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function byPath(changes: FileChange[], path: string): FileChange {
|
|
47
|
-
const found = changes.find((change) => change.path === path);
|
|
48
|
-
if (!found) throw new Error(`no change for ${path} in ${JSON.stringify(changes)}`);
|
|
49
|
-
return found;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
async function filesIn(shadow: ShadowIndex, tree: string): Promise<string[]> {
|
|
53
|
-
const changes = await shadow.diff(EMPTY_TREE, tree);
|
|
54
|
-
return changes.map((change) => change.path).sort();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
describe('ShadowIndex.create', () => {
|
|
58
|
-
itGit('initialises a shadow git dir without creating a .git in the workspace', async () => {
|
|
59
|
-
const { workTree, gitDir } = await fixture();
|
|
60
|
-
expect((await stat(join(gitDir, 'objects'))).isDirectory()).toBe(true);
|
|
61
|
-
expect((await stat(join(gitDir, 'info', 'exclude'))).isFile()).toBe(true);
|
|
62
|
-
expect(await listFilesRecursive(workTree)).toEqual([]);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
itGit('is idempotent over an existing shadow dir', async () => {
|
|
66
|
-
const { workTree, gitDir } = await fixture();
|
|
67
|
-
await write(workTree, 'a.txt', 'one\n');
|
|
68
|
-
const first = await (await ShadowIndex.create({ gitDir, workTree })).snapshot();
|
|
69
|
-
const second = await (await ShadowIndex.create({ gitDir, workTree })).snapshot();
|
|
70
|
-
expect(second).toBe(first);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
itGit('throws an actionable error when git is missing', async () => {
|
|
74
|
-
const root = await makeTempDir();
|
|
75
|
-
const saved = process.env.PATH;
|
|
76
|
-
process.env.PATH = join(root, 'empty');
|
|
77
|
-
try {
|
|
78
|
-
await expect(
|
|
79
|
-
ShadowIndex.create({ gitDir: join(root, 'fs'), workTree: root }),
|
|
80
|
-
).rejects.toThrow(/git is required for filesystem capture.*--no-fs/s);
|
|
81
|
-
} finally {
|
|
82
|
-
process.env.PATH = saved;
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
itGit('reports availability', async () => {
|
|
87
|
-
expect(await ShadowIndex.isAvailable()).toBe(true);
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
describe('snapshot', () => {
|
|
92
|
-
itGit('snapshots an empty directory as the empty tree', async () => {
|
|
93
|
-
const { shadow } = await fixture();
|
|
94
|
-
expect(await shadow.snapshot()).toBe(EMPTY_TREE);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
itGit('is content addressed: no changes yields the same tree sha', async () => {
|
|
98
|
-
const { workTree, shadow } = await fixture();
|
|
99
|
-
await write(workTree, 'a.txt', 'stable\n');
|
|
100
|
-
await write(workTree, 'nested/b.txt', 'also stable\n');
|
|
101
|
-
const first = await shadow.snapshot();
|
|
102
|
-
const second = await shadow.snapshot();
|
|
103
|
-
expect(first).toMatch(/^[0-9a-f]{40}$/);
|
|
104
|
-
expect(second).toBe(first);
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
itGit('leaves the workspace and its real git repo untouched', async () => {
|
|
108
|
-
const { workTree, shadow } = await fixture();
|
|
109
|
-
await runGit(['init', '-q'], { cwd: workTree });
|
|
110
|
-
await write(workTree, 'tracked.txt', 'hi\n');
|
|
111
|
-
const before = await runGit(['status', '--porcelain'], { cwd: workTree });
|
|
112
|
-
await shadow.snapshot();
|
|
113
|
-
const after = await runGit(['status', '--porcelain'], { cwd: workTree });
|
|
114
|
-
expect(after.stdout).toBe(before.stdout);
|
|
115
|
-
// The shadow index must never become the real repo's index.
|
|
116
|
-
const staged = await runGit(['diff', '--cached', '--name-only'], { cwd: workTree });
|
|
117
|
-
expect(staged.stdout).toBe('');
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
describe('diff', () => {
|
|
122
|
-
itGit('reports an added file with its insertion count', async () => {
|
|
123
|
-
const { workTree, shadow } = await fixture();
|
|
124
|
-
const before = await shadow.snapshot();
|
|
125
|
-
await write(workTree, 'added.txt', 'one\ntwo\nthree\n');
|
|
126
|
-
const after = await shadow.snapshot();
|
|
127
|
-
const changes = await shadow.diff(before, after);
|
|
128
|
-
expect(changes).toHaveLength(1);
|
|
129
|
-
expect(byPath(changes, 'added.txt')).toEqual({
|
|
130
|
-
path: 'added.txt',
|
|
131
|
-
status: 'added',
|
|
132
|
-
insertions: 3,
|
|
133
|
-
deletions: 0,
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
itGit('reports a modified file with insertions and deletions', async () => {
|
|
138
|
-
const { workTree, shadow } = await fixture();
|
|
139
|
-
await write(workTree, 'keep.txt', 'l1\nl2\nl3\n');
|
|
140
|
-
const before = await shadow.snapshot();
|
|
141
|
-
await write(workTree, 'keep.txt', 'l1\nCHANGED\nl3\nl4\n');
|
|
142
|
-
const after = await shadow.snapshot();
|
|
143
|
-
const change = byPath(await shadow.diff(before, after), 'keep.txt');
|
|
144
|
-
expect(change.status).toBe('modified');
|
|
145
|
-
expect(change.insertions).toBe(2);
|
|
146
|
-
expect(change.deletions).toBe(1);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
itGit('reports a deleted file', async () => {
|
|
150
|
-
const { workTree, shadow } = await fixture();
|
|
151
|
-
await write(workTree, 'gone.txt', 'bye\n');
|
|
152
|
-
const before = await shadow.snapshot();
|
|
153
|
-
await rm(join(workTree, 'gone.txt'));
|
|
154
|
-
const after = await shadow.snapshot();
|
|
155
|
-
const change = byPath(await shadow.diff(before, after), 'gone.txt');
|
|
156
|
-
expect(change.status).toBe('deleted');
|
|
157
|
-
expect(change.deletions).toBe(1);
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
itGit('reports a rename with the old path', async () => {
|
|
161
|
-
const { workTree, shadow } = await fixture();
|
|
162
|
-
await write(workTree, 'old.txt', 'a\nb\nc\nd\ne\nf\ng\nh\n');
|
|
163
|
-
const before = await shadow.snapshot();
|
|
164
|
-
await rename(join(workTree, 'old.txt'), join(workTree, 'new.txt'));
|
|
165
|
-
const after = await shadow.snapshot();
|
|
166
|
-
const changes = await shadow.diff(before, after);
|
|
167
|
-
expect(changes).toHaveLength(1);
|
|
168
|
-
expect(byPath(changes, 'new.txt')).toEqual({
|
|
169
|
-
path: 'new.txt',
|
|
170
|
-
status: 'renamed',
|
|
171
|
-
oldPath: 'old.txt',
|
|
172
|
-
insertions: 0,
|
|
173
|
-
deletions: 0,
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
itGit('reports several changes at once and counts binary files as zero lines', async () => {
|
|
178
|
-
const { workTree, shadow } = await fixture();
|
|
179
|
-
await write(workTree, 'bin.dat', new Uint8Array([0, 1, 2, 3]));
|
|
180
|
-
await write(workTree, 'text.txt', 'one\n');
|
|
181
|
-
const before = await shadow.snapshot();
|
|
182
|
-
await write(workTree, 'bin.dat', new Uint8Array([9, 9, 9, 9, 9]));
|
|
183
|
-
await write(workTree, 'text.txt', 'one\ntwo\n');
|
|
184
|
-
await write(workTree, 'deep/nested/new.txt', 'x\n');
|
|
185
|
-
const changes = await shadow.diff(before, await shadow.snapshot());
|
|
186
|
-
expect(changes.map((change) => change.path).sort()).toEqual([
|
|
187
|
-
'bin.dat',
|
|
188
|
-
'deep/nested/new.txt',
|
|
189
|
-
'text.txt',
|
|
190
|
-
]);
|
|
191
|
-
expect(byPath(changes, 'bin.dat')).toMatchObject({ insertions: 0, deletions: 0 });
|
|
192
|
-
expect(byPath(changes, 'deep/nested/new.txt').status).toBe('added');
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
itGit('returns an empty list for identical trees', async () => {
|
|
196
|
-
const { workTree, shadow } = await fixture();
|
|
197
|
-
await write(workTree, 'a.txt', 'same\n');
|
|
198
|
-
const tree = await shadow.snapshot();
|
|
199
|
-
expect(await shadow.diff(tree, tree)).toEqual([]);
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
itGit('handles paths with spaces and unicode', async () => {
|
|
203
|
-
const { workTree, shadow } = await fixture();
|
|
204
|
-
const before = await shadow.snapshot();
|
|
205
|
-
await write(workTree, 'a dir/héllo wörld ✓.txt', 'unicode\n');
|
|
206
|
-
const changes = await shadow.diff(before, await shadow.snapshot());
|
|
207
|
-
expect(changes.map((change) => change.path)).toEqual(['a dir/héllo wörld ✓.txt']);
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
describe('line-ending-only changes', () => {
|
|
212
|
-
/**
|
|
213
|
-
* The shadow store keeps the bytes that were on disk, deliberately: normalising line endings
|
|
214
|
-
* would make the record disagree with the disk. The consequence on Windows is a one-character
|
|
215
|
-
* fix reported as every line changed, because the tool that made it wrote LF over a CRLF file.
|
|
216
|
-
* The counts are right, and unhelpful without this.
|
|
217
|
-
*/
|
|
218
|
-
const CRLF = 'one\r\ntwo\r\nthree\r\n';
|
|
219
|
-
const LF = 'one\ntwo\nthree\n';
|
|
220
|
-
|
|
221
|
-
it('marks a file whose only change is CRLF to LF', async () => {
|
|
222
|
-
const { workTree, shadow } = await fixture();
|
|
223
|
-
await write(workTree, 'f.txt', CRLF);
|
|
224
|
-
const before = await shadow.snapshot();
|
|
225
|
-
await write(workTree, 'f.txt', LF);
|
|
226
|
-
const after = await shadow.snapshot();
|
|
227
|
-
|
|
228
|
-
const change = byPath(await shadow.diff(before, after), 'f.txt');
|
|
229
|
-
expect(change.status).toBe('modified');
|
|
230
|
-
// Honest, not silently normalised away: those lines really do differ byte for byte.
|
|
231
|
-
expect(change.insertions).toBe(3);
|
|
232
|
-
expect(change.deletions).toBe(3);
|
|
233
|
-
expect(change.eolOnly).toBe(true);
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
it('does not mark a real edit that also changed line endings', async () => {
|
|
237
|
-
const { workTree, shadow } = await fixture();
|
|
238
|
-
await write(workTree, 'f.txt', CRLF);
|
|
239
|
-
const before = await shadow.snapshot();
|
|
240
|
-
await write(workTree, 'f.txt', 'one\nTWO\nthree\n');
|
|
241
|
-
const after = await shadow.snapshot();
|
|
242
|
-
expect(byPath(await shadow.diff(before, after), 'f.txt').eolOnly).toBeUndefined();
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
it('does not mark a plain edit that left line endings alone', async () => {
|
|
246
|
-
const { workTree, shadow } = await fixture();
|
|
247
|
-
await write(workTree, 'f.txt', LF);
|
|
248
|
-
const before = await shadow.snapshot();
|
|
249
|
-
await write(workTree, 'f.txt', 'one\nTWO\nthree\n');
|
|
250
|
-
const after = await shadow.snapshot();
|
|
251
|
-
expect(byPath(await shadow.diff(before, after), 'f.txt').eolOnly).toBeUndefined();
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
it('does not mark a newly added file', async () => {
|
|
255
|
-
const { workTree, shadow } = await fixture();
|
|
256
|
-
const before = await shadow.snapshot();
|
|
257
|
-
await write(workTree, 'new.txt', CRLF);
|
|
258
|
-
const after = await shadow.snapshot();
|
|
259
|
-
expect(byPath(await shadow.diff(before, after), 'new.txt').eolOnly).toBeUndefined();
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
describe('exclusions', () => {
|
|
264
|
-
itGit("honours the workspace's own .gitignore", async () => {
|
|
265
|
-
const { workTree, shadow } = await fixture();
|
|
266
|
-
await write(workTree, '.gitignore', 'ignored.log\nbuild/\n');
|
|
267
|
-
await write(workTree, 'ignored.log', 'noise\n');
|
|
268
|
-
await write(workTree, 'build/out.js', 'noise\n');
|
|
269
|
-
await write(workTree, 'kept.txt', 'signal\n');
|
|
270
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['.gitignore', 'kept.txt']);
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
itGit('never captures secrets, with no .gitignore present', async () => {
|
|
274
|
-
const { workTree, shadow } = await fixture();
|
|
275
|
-
await write(workTree, '.env', 'API_KEY=sk-live-secret\n');
|
|
276
|
-
await write(workTree, '.env.local', 'API_KEY=sk-live-secret\n');
|
|
277
|
-
await write(workTree, 'id_rsa', 'PRIVATE KEY\n');
|
|
278
|
-
await write(workTree, 'id_ed25519', 'PRIVATE KEY\n');
|
|
279
|
-
await write(workTree, '.netrc', 'machine example.com password hunter2\n');
|
|
280
|
-
await write(workTree, 'certs/server.pem', 'CERT\n');
|
|
281
|
-
await write(workTree, 'certs/server.key', 'KEY\n');
|
|
282
|
-
await write(workTree, '.ssh/known_hosts', 'host\n');
|
|
283
|
-
await write(workTree, 'home/.aws/credentials', 'aws_secret_access_key=x\n');
|
|
284
|
-
await write(workTree, 'node_modules/pkg/index.js', 'noise\n');
|
|
285
|
-
await write(workTree, '.agenticreplay/runs/run_a/events.jsonl', '{}\n');
|
|
286
|
-
await write(workTree, 'src/app.ts', 'export const ok = 1;\n');
|
|
287
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['src/app.ts']);
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
// Security property: gitignore negation outranks $GIT_DIR/info/exclude, so the exclusions must
|
|
291
|
-
// not rest on info/exclude alone.
|
|
292
|
-
itGit('never captures secrets even when .gitignore tries to un-ignore them', async () => {
|
|
293
|
-
const { workTree, shadow } = await fixture();
|
|
294
|
-
await write(workTree, '.gitignore', '!.env\n!id_rsa\n!.ssh/\n!*.key\n!.agenticreplay/\n');
|
|
295
|
-
await write(workTree, '.env', 'API_KEY=sk-live-secret\n');
|
|
296
|
-
await write(workTree, 'id_rsa', 'PRIVATE KEY\n');
|
|
297
|
-
await write(workTree, '.ssh/id_ed25519', 'PRIVATE KEY\n');
|
|
298
|
-
await write(workTree, 'deep/nested/secret.key', 'KEY\n');
|
|
299
|
-
await write(workTree, '.agenticreplay/runs/run_a/events.jsonl', '{}\n');
|
|
300
|
-
await write(workTree, 'ok.txt', 'fine\n');
|
|
301
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['.gitignore', 'ok.txt']);
|
|
302
|
-
});
|
|
303
|
-
// GIT_LITERAL_PATHSPECS turns `:(exclude,glob)...` into an ordinary filename, which would
|
|
304
|
-
// quietly disarm every exclusion above. Nothing in the ambient environment may weaken this.
|
|
305
|
-
itGit('never captures secrets when the environment tampers with pathspec parsing', async () => {
|
|
306
|
-
const { workTree, shadow } = await fixture();
|
|
307
|
-
await write(workTree, '.env', 'API_KEY=sk-live-secret\n');
|
|
308
|
-
await write(workTree, '.gitignore', '!.env\n');
|
|
309
|
-
await write(workTree, 'ok.txt', 'fine\n');
|
|
310
|
-
const saved = process.env.GIT_LITERAL_PATHSPECS;
|
|
311
|
-
process.env.GIT_LITERAL_PATHSPECS = '1';
|
|
312
|
-
try {
|
|
313
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['.gitignore', 'ok.txt']);
|
|
314
|
-
} finally {
|
|
315
|
-
if (saved === undefined) delete process.env.GIT_LITERAL_PATHSPECS;
|
|
316
|
-
else process.env.GIT_LITERAL_PATHSPECS = saved;
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Paths an adapter declares as its harness's product, captured despite the workspace ignoring them.
|
|
323
|
-
*
|
|
324
|
-
* A coding agent's output is the working tree, which the ordinary snapshot already holds. A
|
|
325
|
-
* pipeline's output is an index, and every such project ignores it — IndexRAG's first three
|
|
326
|
-
* `.gitignore` lines are `vector_store/`, `cache/` and `dataset/` — so a recording of an indexing
|
|
327
|
-
* run held every call that built the index and nothing of the index itself.
|
|
328
|
-
*/
|
|
329
|
-
/**
|
|
330
|
-
* A NESTED REPOSITORY WITH NO COMMIT.
|
|
331
|
-
*
|
|
332
|
-
* `git init` in a subdirectory and nothing committed yet — which is what anyone starting a second
|
|
333
|
-
* project inside their workspace has. Git records an embedded repository by the id of its HEAD
|
|
334
|
-
* commit, and this one has none, so `git add -A` answers `does not have a commit checked out` and
|
|
335
|
-
* abandons the whole add. Every one of these pins that the snapshot is taken anyway, without that
|
|
336
|
-
* directory, and that it is named.
|
|
337
|
-
*/
|
|
338
|
-
describe('a nested repository with no commit', () => {
|
|
339
|
-
async function initRepo(dir: string): Promise<void> {
|
|
340
|
-
await mkdir(dir, { recursive: true });
|
|
341
|
-
for (const args of [
|
|
342
|
-
['init', '-q'],
|
|
343
|
-
['config', 'user.email', 't@e.com'],
|
|
344
|
-
['config', 'user.name', 'T'],
|
|
345
|
-
]) {
|
|
346
|
-
await runGit(args, { cwd: dir });
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
async function commitless(workTree: string, rel: string): Promise<void> {
|
|
351
|
-
await initRepo(join(workTree, rel));
|
|
352
|
-
await write(workTree, `${rel}/mine.py`, 'MY OWN WORK\n');
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
itGit('snapshots the rest of the tree instead of failing', async () => {
|
|
356
|
-
const { workTree, shadow } = await fixture();
|
|
357
|
-
await write(workTree, 'README.md', 'the outer project\n');
|
|
358
|
-
await commitless(workTree, 'newproject');
|
|
359
|
-
|
|
360
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['README.md']);
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
itGit('names it, once, however many snapshots the run takes', async () => {
|
|
364
|
-
const { workTree, shadow } = await fixture();
|
|
365
|
-
await write(workTree, 'README.md', 'x\n');
|
|
366
|
-
await commitless(workTree, 'newproject');
|
|
367
|
-
|
|
368
|
-
await shadow.snapshot();
|
|
369
|
-
expect(shadow.uncommittedNested).toEqual(['newproject']);
|
|
370
|
-
await write(workTree, 'README.md', 'y\n');
|
|
371
|
-
await shadow.snapshot();
|
|
372
|
-
expect(shadow.uncommittedNested).toEqual([]);
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* Git names one and stops — with three of them the first add reported only the first, and
|
|
377
|
-
* excluding it made the next add fail on the second. Anything that runs the add once and gives
|
|
378
|
-
* up on the first name passes the single-repository test and fails here.
|
|
379
|
-
*/
|
|
380
|
-
itGit('leaves out every one of several, not only the first git named', async () => {
|
|
381
|
-
const { workTree, shadow } = await fixture();
|
|
382
|
-
await write(workTree, 'README.md', 'x\n');
|
|
383
|
-
for (const name of ['one', 'two', 'three']) await commitless(workTree, name);
|
|
384
|
-
|
|
385
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['README.md']);
|
|
386
|
-
expect([...shadow.uncommittedNested].sort()).toEqual(['one', 'three', 'two']);
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
itGit(
|
|
390
|
-
'leaves out one buried under ordinary directories, and keeps their other contents',
|
|
391
|
-
async () => {
|
|
392
|
-
const { workTree, shadow } = await fixture();
|
|
393
|
-
await write(workTree, 'a/b/keep.txt', 'mine\n');
|
|
394
|
-
await commitless(workTree, 'a/b/newproject');
|
|
395
|
-
|
|
396
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['a/b/keep.txt']);
|
|
397
|
-
expect(shadow.uncommittedNested).toEqual(['a/b/newproject']);
|
|
398
|
-
},
|
|
399
|
-
);
|
|
400
|
-
|
|
401
|
-
itGit('leaves out a name holding pattern characters, and only it', async () => {
|
|
402
|
-
const { workTree, shadow } = await fixture();
|
|
403
|
-
await write(workTree, 'README.md', 'x\n');
|
|
404
|
-
await write(workTree, 'my n project/neighbour.txt', 'must stay\n');
|
|
405
|
-
await commitless(workTree, 'my [new] project');
|
|
406
|
-
|
|
407
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual([
|
|
408
|
-
'README.md',
|
|
409
|
-
'my n project/neighbour.txt',
|
|
410
|
-
]);
|
|
411
|
-
expect(shadow.uncommittedNested).toEqual(['my [new] project']);
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* WHY THE EXCLUSION SAYS `literal`.
|
|
416
|
-
*
|
|
417
|
-
* The path is whatever the operator called the directory, and a pathspec without `literal` is a
|
|
418
|
-
* pattern. Measured beside a workspace holding `ab/` and `ax/`: `:(exclude)a*` took both out of
|
|
419
|
-
* the add; `:(exclude,literal)a*` took out only a path named exactly that. So a repository named
|
|
420
|
-
* `a*` would drop its neighbours from the snapshot — silently, since the add still succeeds.
|
|
421
|
-
*
|
|
422
|
-
* POSIX only, because `*` is not a legal character in a Windows filename, so the workspace this
|
|
423
|
-
* needs cannot exist there. The test above is the same shape with a `[`, which every platform
|
|
424
|
-
* can hold — and it passes either way, because git compares the leading directory literally
|
|
425
|
-
* before it wildmatches. This is the one that fails when `literal` is dropped.
|
|
426
|
-
*/
|
|
427
|
-
it.skipIf(!hasGit || process.platform === 'win32')(
|
|
428
|
-
'takes the path literally, so a name holding a wildcard excludes only itself',
|
|
429
|
-
async () => {
|
|
430
|
-
const { workTree, shadow } = await fixture();
|
|
431
|
-
await write(workTree, 'README.md', 'x\n');
|
|
432
|
-
await write(workTree, 'ab/neighbour.txt', 'must stay\n');
|
|
433
|
-
await write(workTree, 'ax/neighbour.txt', 'must stay too\n');
|
|
434
|
-
await commitless(workTree, 'a*');
|
|
435
|
-
|
|
436
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual([
|
|
437
|
-
'README.md',
|
|
438
|
-
'ab/neighbour.txt',
|
|
439
|
-
'ax/neighbour.txt',
|
|
440
|
-
]);
|
|
441
|
-
expect(shadow.uncommittedNested).toEqual(['a*']);
|
|
442
|
-
},
|
|
443
|
-
);
|
|
444
|
-
|
|
445
|
-
itGit('still records one that has a commit as a gitlink, beside one that has none', async () => {
|
|
446
|
-
const { workTree, gitDir, shadow } = await fixture();
|
|
447
|
-
await write(workTree, 'README.md', 'x\n');
|
|
448
|
-
await initRepo(join(workTree, 'vendor'));
|
|
449
|
-
await write(workTree, 'vendor/lib.py', 'upstream\n');
|
|
450
|
-
await runGit(['add', '-A'], { cwd: join(workTree, 'vendor') });
|
|
451
|
-
await runGit(['commit', '-qm', 'u'], { cwd: join(workTree, 'vendor') });
|
|
452
|
-
await commitless(workTree, 'fresh');
|
|
453
|
-
|
|
454
|
-
const tree = await shadow.snapshot();
|
|
455
|
-
expect(shadow.uncommittedNested).toEqual(['fresh']);
|
|
456
|
-
// The committed one is still a gitlink in the tree, which is what `gitlinks` reports and what
|
|
457
|
-
// the replay's own guard reads; the commit-less one is in neither, by definition.
|
|
458
|
-
expect(await shadow.gitlinks(tree)).toEqual(['vendor']);
|
|
459
|
-
const listed = await runGit(['ls-tree', '-r', '--full-tree', tree], { gitDir });
|
|
460
|
-
expect(listed.stdout).not.toContain('fresh');
|
|
461
|
-
});
|
|
462
|
-
|
|
463
|
-
itGit('drops the outer one only, when one with no commit holds another', async () => {
|
|
464
|
-
const { workTree, shadow } = await fixture();
|
|
465
|
-
await write(workTree, 'README.md', 'x\n');
|
|
466
|
-
await commitless(workTree, 'outer');
|
|
467
|
-
await commitless(workTree, 'outer/inner');
|
|
468
|
-
|
|
469
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['README.md']);
|
|
470
|
-
expect(shadow.uncommittedNested).toEqual(['outer']);
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* `-A` never reaches a path the workspace ignores, and a declared artifact path is exactly where
|
|
475
|
-
* an ignored one is — so the forced add can meet a commit-less repository the first add could
|
|
476
|
-
* not see. It has to survive that too, and say so.
|
|
477
|
-
*/
|
|
478
|
-
itGit('survives one inside a declared artifact path the workspace ignores', async () => {
|
|
479
|
-
const root = await makeTempDir();
|
|
480
|
-
const workTree = join(root, 'ws');
|
|
481
|
-
await mkdir(workTree, { recursive: true });
|
|
482
|
-
const shadow = await ShadowIndex.create({
|
|
483
|
-
gitDir: join(root, 'run', 'fs'),
|
|
484
|
-
workTree,
|
|
485
|
-
forced: ['dataset'],
|
|
486
|
-
});
|
|
487
|
-
await write(workTree, '.gitignore', 'dataset/\n');
|
|
488
|
-
await write(workTree, 'dataset/corpus.txt', 'the product\n');
|
|
489
|
-
await write(workTree, 'main.py', 'print(1)\n');
|
|
490
|
-
await initRepo(join(workTree, 'dataset', 'scratch'));
|
|
491
|
-
await write(workTree, 'dataset/scratch/notes.md', 'never committed\n');
|
|
492
|
-
|
|
493
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual([
|
|
494
|
-
'.gitignore',
|
|
495
|
-
'dataset/corpus.txt',
|
|
496
|
-
'main.py',
|
|
497
|
-
]);
|
|
498
|
-
expect(shadow.uncommittedNested).toEqual(['dataset/scratch']);
|
|
499
|
-
});
|
|
500
|
-
|
|
501
|
-
/** A failure that is not this one still throws, with git's own words. */
|
|
502
|
-
itGit('still fails on an add that goes wrong for any other reason', async () => {
|
|
503
|
-
const { workTree, shadow } = await fixture();
|
|
504
|
-
await write(workTree, 'README.md', 'x\n');
|
|
505
|
-
await rm(workTree, { recursive: true, force: true });
|
|
506
|
-
|
|
507
|
-
await expect(shadow.snapshot()).rejects.toThrow(/git add failed/);
|
|
508
|
-
});
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
* A DECLARED PATH INSIDE A NESTED REPOSITORY.
|
|
513
|
-
*
|
|
514
|
-
* Git stages nothing inside another repository, and asked to it answers in whichever way the
|
|
515
|
-
* operator's setup happens to produce: with the repository committed and not ignored, `add -A`
|
|
516
|
-
* stages it as a gitlink and `add -f -- data/cache` then dies ("Pathspec 'data/cache' is in
|
|
517
|
-
* submodule 'data'"), which cost a recording every snapshot it took; ignored, or with no commit,
|
|
518
|
-
* `add -f` exits 0 having staged nothing, which is silent. So the path is set aside before git sees
|
|
519
|
-
* it, and named with the repository around it.
|
|
520
|
-
*/
|
|
521
|
-
describe('a declared path inside a nested repository', () => {
|
|
522
|
-
async function initRepo(dir: string): Promise<void> {
|
|
523
|
-
await mkdir(dir, { recursive: true });
|
|
524
|
-
for (const args of [
|
|
525
|
-
['init', '-q'],
|
|
526
|
-
['config', 'user.email', 't@e.com'],
|
|
527
|
-
['config', 'user.name', 'T'],
|
|
528
|
-
]) {
|
|
529
|
-
await runGit(args, { cwd: dir });
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/** The operator's own project at `rel`, with their work in `cache/` inside it. */
|
|
534
|
-
async function project(workTree: string, rel: string, commit: boolean): Promise<void> {
|
|
535
|
-
await initRepo(join(workTree, rel));
|
|
536
|
-
await write(workTree, `${rel}/cache/mine.bin`, 'their own work\n');
|
|
537
|
-
await write(workTree, `${rel}/notes.md`, 'theirs too\n');
|
|
538
|
-
if (commit) {
|
|
539
|
-
await runGit(['add', '-A'], { cwd: join(workTree, rel) });
|
|
540
|
-
await runGit(['commit', '-qm', 'u'], { cwd: join(workTree, rel) });
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
async function forcedFixture(forced: string[]): Promise<Fixture> {
|
|
545
|
-
const root = await makeTempDir();
|
|
546
|
-
const workTree = join(root, 'ws');
|
|
547
|
-
const gitDir = join(root, 'run', 'fs');
|
|
548
|
-
await mkdir(workTree, { recursive: true });
|
|
549
|
-
const shadow = await ShadowIndex.create({ gitDir, workTree, forced });
|
|
550
|
-
return { root, workTree, gitDir, shadow };
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
/** The case that took every snapshot down with it. */
|
|
554
|
-
itGit('snapshots around one that is committed and not ignored, instead of dying', async () => {
|
|
555
|
-
const { workTree, shadow } = await forcedFixture(['data/cache']);
|
|
556
|
-
await write(workTree, 'README.md', 'x\n');
|
|
557
|
-
await project(workTree, 'data', true);
|
|
558
|
-
|
|
559
|
-
const tree = await shadow.snapshot();
|
|
560
|
-
// The outer file, and `data` as the gitlink `add -A` made of it — none of what is inside.
|
|
561
|
-
expect(await filesIn(shadow, tree)).toEqual(['README.md', 'data']);
|
|
562
|
-
expect(shadow.forcedInsideNested).toEqual([{ path: 'data/cache', repository: 'data' }]);
|
|
563
|
-
// What `add -A` made of the repository itself is left as it was: a gitlink, which the
|
|
564
|
-
// replay's own guard reads.
|
|
565
|
-
expect(await shadow.gitlinks(tree)).toEqual(['data']);
|
|
566
|
-
});
|
|
567
|
-
|
|
568
|
-
/** The silent case: nothing failed, and nothing said the declared path was not captured. */
|
|
569
|
-
itGit('names one the workspace ignores, which git passes over without a word', async () => {
|
|
570
|
-
const { workTree, shadow } = await forcedFixture(['data/cache']);
|
|
571
|
-
await write(workTree, '.gitignore', 'data/\n');
|
|
572
|
-
await project(workTree, 'data', true);
|
|
573
|
-
|
|
574
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['.gitignore']);
|
|
575
|
-
expect(shadow.forcedInsideNested).toEqual([{ path: 'data/cache', repository: 'data' }]);
|
|
576
|
-
});
|
|
577
|
-
|
|
578
|
-
itGit('names one with no commit, as well as naming the repository itself', async () => {
|
|
579
|
-
const { workTree, shadow } = await forcedFixture(['data/cache']);
|
|
580
|
-
await write(workTree, 'README.md', 'x\n');
|
|
581
|
-
await project(workTree, 'data', false);
|
|
582
|
-
|
|
583
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['README.md']);
|
|
584
|
-
expect(shadow.forcedInsideNested).toEqual([{ path: 'data/cache', repository: 'data' }]);
|
|
585
|
-
expect(shadow.uncommittedNested).toEqual(['data']);
|
|
586
|
-
});
|
|
587
|
-
|
|
588
|
-
itGit('names the nearest repository on the way down, however deep the path is', async () => {
|
|
589
|
-
const { workTree, shadow } = await forcedFixture(['a/b/data/cache/index']);
|
|
590
|
-
await write(workTree, 'a/b/keep.txt', 'mine\n');
|
|
591
|
-
await project(workTree, 'a/b/data', true);
|
|
592
|
-
|
|
593
|
-
await shadow.snapshot();
|
|
594
|
-
expect(shadow.forcedInsideNested).toEqual([
|
|
595
|
-
{ path: 'a/b/data/cache/index', repository: 'a/b/data' },
|
|
596
|
-
]);
|
|
597
|
-
});
|
|
598
|
-
|
|
599
|
-
itGit('still captures the declared paths that are not inside one', async () => {
|
|
600
|
-
const { workTree, shadow } = await forcedFixture(['data/cache', 'cache']);
|
|
601
|
-
await write(workTree, '.gitignore', 'cache/\ndata/\n');
|
|
602
|
-
await write(workTree, 'cache/index.bin', 'the product\n');
|
|
603
|
-
await project(workTree, 'data', true);
|
|
604
|
-
|
|
605
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual([
|
|
606
|
-
'.gitignore',
|
|
607
|
-
'cache/index.bin',
|
|
608
|
-
]);
|
|
609
|
-
expect(shadow.forcedInsideNested).toEqual([{ path: 'data/cache', repository: 'data' }]);
|
|
610
|
-
});
|
|
611
|
-
|
|
612
|
-
/**
|
|
613
|
-
* With every declared path set aside there is nothing to add — and nothing may be dropped:
|
|
614
|
-
* `ls-files -- <no paths>` lists the WHOLE index, so dropping the gitlinks it returns would take
|
|
615
|
-
* the workspace's own nested repositories out of the snapshot too.
|
|
616
|
-
*/
|
|
617
|
-
itGit(
|
|
618
|
-
'leaves the workspace’s other nested repositories alone when nothing is left to add',
|
|
619
|
-
async () => {
|
|
620
|
-
const { workTree, shadow } = await forcedFixture(['data/cache']);
|
|
621
|
-
await write(workTree, 'README.md', 'x\n');
|
|
622
|
-
await project(workTree, 'data', true);
|
|
623
|
-
await project(workTree, 'vendor', true);
|
|
624
|
-
|
|
625
|
-
const tree = await shadow.snapshot();
|
|
626
|
-
expect((await shadow.gitlinks(tree)).sort()).toEqual(['data', 'vendor']);
|
|
627
|
-
expect(shadow.skippedGitlinks).toEqual([]);
|
|
628
|
-
},
|
|
629
|
-
);
|
|
630
|
-
|
|
631
|
-
/** A declared path that IS the repository is a gitlink, dropped as before — not "inside" one. */
|
|
632
|
-
itGit('leaves a declared path that is itself a repository to the gitlink handling', async () => {
|
|
633
|
-
const { workTree, shadow } = await forcedFixture(['dataset']);
|
|
634
|
-
await write(workTree, '.gitignore', 'dataset/\n');
|
|
635
|
-
await project(workTree, 'dataset', true);
|
|
636
|
-
|
|
637
|
-
await shadow.snapshot();
|
|
638
|
-
expect(shadow.forcedInsideNested).toEqual([]);
|
|
639
|
-
expect(shadow.skippedGitlinks).toEqual(['dataset']);
|
|
640
|
-
});
|
|
641
|
-
|
|
642
|
-
itGit('walks only the literal segments before a glob', async () => {
|
|
643
|
-
const { workTree, shadow } = await forcedFixture(['data/*/cache', 'test_results_*.json']);
|
|
644
|
-
await write(workTree, 'test_results_1.json', '{}\n');
|
|
645
|
-
await project(workTree, 'data', true);
|
|
646
|
-
|
|
647
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toContain('test_results_1.json');
|
|
648
|
-
expect(shadow.forcedInsideNested).toEqual([{ path: 'data/*/cache', repository: 'data' }]);
|
|
649
|
-
});
|
|
650
|
-
|
|
651
|
-
itGit('names each one once, however many snapshots the run takes', async () => {
|
|
652
|
-
const { workTree, shadow } = await forcedFixture(['data/cache']);
|
|
653
|
-
await write(workTree, 'README.md', 'x\n');
|
|
654
|
-
await project(workTree, 'data', true);
|
|
655
|
-
|
|
656
|
-
await shadow.snapshot();
|
|
657
|
-
expect(shadow.forcedInsideNested).toHaveLength(1);
|
|
658
|
-
await write(workTree, 'README.md', 'y\n');
|
|
659
|
-
await shadow.snapshot();
|
|
660
|
-
expect(shadow.forcedInsideNested).toEqual([]);
|
|
661
|
-
});
|
|
662
|
-
|
|
663
|
-
itGit('says nothing when no declared path is inside a repository', async () => {
|
|
664
|
-
const { workTree, shadow } = await forcedFixture(['cache']);
|
|
665
|
-
await write(workTree, 'cache/index.bin', 'x\n');
|
|
666
|
-
|
|
667
|
-
await shadow.snapshot();
|
|
668
|
-
expect(shadow.forcedInsideNested).toEqual([]);
|
|
669
|
-
});
|
|
670
|
-
});
|
|
671
|
-
|
|
672
|
-
describe('forced capture', () => {
|
|
673
|
-
itGit('captures a path the workspace ignores, when the adapter declares it', async () => {
|
|
674
|
-
const root = await makeTempDir();
|
|
675
|
-
const workTree = join(root, 'ws');
|
|
676
|
-
await mkdir(workTree, { recursive: true });
|
|
677
|
-
const shadow = await ShadowIndex.create({
|
|
678
|
-
gitDir: join(root, 'run', 'fs'),
|
|
679
|
-
workTree,
|
|
680
|
-
forced: ['cache'],
|
|
681
|
-
});
|
|
682
|
-
await write(workTree, '.gitignore', 'cache/\nvector_store/\n');
|
|
683
|
-
await write(workTree, 'cache/mini_faqs.json', '{"faq_data":[]}\n');
|
|
684
|
-
await write(workTree, 'vector_store/index.faiss', 'binary\n');
|
|
685
|
-
await write(workTree, 'main.py', 'print(1)\n');
|
|
686
|
-
|
|
687
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual([
|
|
688
|
-
'.gitignore',
|
|
689
|
-
'cache/mini_faqs.json',
|
|
690
|
-
'main.py',
|
|
691
|
-
]);
|
|
692
|
-
});
|
|
693
|
-
|
|
694
|
-
/**
|
|
695
|
-
* The security property that makes this safe to hand to third-party plugin code: the sensitive
|
|
696
|
-
* pathspecs are applied to the forced add too, and a pathspec exclusion is enforced by `git add`
|
|
697
|
-
* itself — no `-f` and no `.gitignore` negation overrides it. So an adapter that declares `.`
|
|
698
|
-
* to try to sweep the whole tree in still cannot capture a credential.
|
|
699
|
-
*/
|
|
700
|
-
itGit('still refuses secrets when the adapter declares the whole tree', async () => {
|
|
701
|
-
const root = await makeTempDir();
|
|
702
|
-
const workTree = join(root, 'ws');
|
|
703
|
-
await mkdir(workTree, { recursive: true });
|
|
704
|
-
const shadow = await ShadowIndex.create({
|
|
705
|
-
gitDir: join(root, 'run', 'fs'),
|
|
706
|
-
workTree,
|
|
707
|
-
forced: ['.'],
|
|
708
|
-
});
|
|
709
|
-
await write(workTree, '.gitignore', '!.env\n');
|
|
710
|
-
await write(workTree, '.env', 'API_KEY=sk-live-secret\n');
|
|
711
|
-
await write(workTree, '.ssh/id_ed25519', 'PRIVATE KEY\n');
|
|
712
|
-
await write(workTree, 'node_modules/pkg/index.js', 'noise\n');
|
|
713
|
-
await write(workTree, 'ok.txt', 'fine\n');
|
|
714
|
-
|
|
715
|
-
const files = await filesIn(shadow, await shadow.snapshot());
|
|
716
|
-
expect(files).toEqual(['.gitignore', 'ok.txt']);
|
|
717
|
-
});
|
|
718
|
-
|
|
719
|
-
// Snapshot 0 is taken before the harness has written anything, and `git add` refuses a pathspec
|
|
720
|
-
// that matches nothing. One missing directory must not cost the whole snapshot.
|
|
721
|
-
itGit('snapshots normally when a declared path does not exist yet', async () => {
|
|
722
|
-
const root = await makeTempDir();
|
|
723
|
-
const workTree = join(root, 'ws');
|
|
724
|
-
await mkdir(workTree, { recursive: true });
|
|
725
|
-
const shadow = await ShadowIndex.create({
|
|
726
|
-
gitDir: join(root, 'run', 'fs'),
|
|
727
|
-
workTree,
|
|
728
|
-
forced: ['cache', 'vector_store'],
|
|
729
|
-
});
|
|
730
|
-
await write(workTree, '.gitignore', 'cache/\nvector_store/\n');
|
|
731
|
-
await write(workTree, 'main.py', 'print(1)\n');
|
|
732
|
-
|
|
733
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['.gitignore', 'main.py']);
|
|
734
|
-
|
|
735
|
-
// And it picks the path up as soon as the harness creates it.
|
|
736
|
-
await write(workTree, 'cache/mini_faqs.json', '{}\n');
|
|
737
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual([
|
|
738
|
-
'.gitignore',
|
|
739
|
-
'cache/mini_faqs.json',
|
|
740
|
-
'main.py',
|
|
741
|
-
]);
|
|
742
|
-
});
|
|
743
|
-
|
|
744
|
-
itGit('tracks a forced path across edits and deletions', async () => {
|
|
745
|
-
const root = await makeTempDir();
|
|
746
|
-
const workTree = join(root, 'ws');
|
|
747
|
-
await mkdir(workTree, { recursive: true });
|
|
748
|
-
const shadow = await ShadowIndex.create({
|
|
749
|
-
gitDir: join(root, 'run', 'fs'),
|
|
750
|
-
workTree,
|
|
751
|
-
forced: ['cache'],
|
|
752
|
-
});
|
|
753
|
-
await write(workTree, '.gitignore', 'cache/\n');
|
|
754
|
-
await write(workTree, 'cache/a.json', '{"n":1}\n');
|
|
755
|
-
const first = await shadow.snapshot();
|
|
756
|
-
|
|
757
|
-
await write(workTree, 'cache/a.json', '{"n":2}\n');
|
|
758
|
-
const second = await shadow.snapshot();
|
|
759
|
-
expect(first).not.toBe(second);
|
|
760
|
-
expect(new TextDecoder().decode(await shadow.readFileAt(second, 'cache/a.json'))).toBe(
|
|
761
|
-
'{"n":2}\n',
|
|
762
|
-
);
|
|
763
|
-
|
|
764
|
-
await rm(join(workTree, 'cache'), { recursive: true, force: true });
|
|
765
|
-
expect(await filesIn(shadow, await shadow.snapshot())).toEqual(['.gitignore']);
|
|
766
|
-
});
|
|
767
|
-
|
|
768
|
-
/**
|
|
769
|
-
* "Did not match any files" is the *only* `git add` failure a snapshot may ignore.
|
|
770
|
-
*
|
|
771
|
-
* The per-path retry exists for the pathspec that matches nothing, and it used to swallow every
|
|
772
|
-
* other failure with it — a file git cannot open because the harness is still writing it, EACCES,
|
|
773
|
-
* a path too long — because `runGit` resolves rather than throws and no exit code was read. The
|
|
774
|
-
* snapshot then returned a tree id as if all was well while silently not holding the declared
|
|
775
|
-
* path, which is worse than failing: on replay the same hole lands in the safety snapshot that
|
|
776
|
-
* `resetArtifacts` deletes against, so what agenticreplay could not copy it deletes anyway.
|
|
777
|
-
*
|
|
778
|
-
* A path outside the workspace is the portable way to provoke a non-benign failure (the original
|
|
779
|
-
* report used a file held open by another process, which only Windows makes easy) — and it is
|
|
780
|
-
* worth refusing on its own account, since an adapter reaching outside the workspace is not
|
|
781
|
-
* something to do quietly.
|
|
782
|
-
*/
|
|
783
|
-
itGit('refuses a declared path git fails on for any other reason', async () => {
|
|
784
|
-
const root = await makeTempDir();
|
|
785
|
-
const workTree = join(root, 'ws');
|
|
786
|
-
await mkdir(workTree, { recursive: true });
|
|
787
|
-
await write(root, 'outside.txt', 'not yours\n');
|
|
788
|
-
const shadow = await ShadowIndex.create({
|
|
789
|
-
gitDir: join(root, 'run', 'fs'),
|
|
790
|
-
workTree,
|
|
791
|
-
forced: ['cache', '../outside.txt'],
|
|
792
|
-
});
|
|
793
|
-
await write(workTree, '.gitignore', 'cache/\n');
|
|
794
|
-
await write(workTree, 'cache/mini_faqs.json', '{}\n');
|
|
795
|
-
|
|
796
|
-
await expect(shadow.snapshot()).rejects.toThrow(/declared artifact path '\.\.\/outside\.txt'/);
|
|
797
|
-
});
|
|
798
|
-
|
|
799
|
-
/**
|
|
800
|
-
* A cloned corpus inside a declared path, which `-f` reaches for the first time.
|
|
801
|
-
*
|
|
802
|
-
* `git add` records a nested repository as a gitlink whose contents live nowhere in this store,
|
|
803
|
-
* and `materialize` refuses such a tree rather than checking out an empty directory in its
|
|
804
|
-
* place. `dataset/` is both one of IndexRAG's declared paths and the ordinary place to clone a
|
|
805
|
-
* corpus into, so before this the first replay of such a workspace failed at the restore — after
|
|
806
|
-
* the reset had already deleted the artifacts the restore was supposed to put back.
|
|
807
|
-
*/
|
|
808
|
-
itGit('drops a nested repository inside a declared path, and names it once', async () => {
|
|
809
|
-
const root = await makeTempDir();
|
|
810
|
-
const workTree = join(root, 'ws');
|
|
811
|
-
await mkdir(workTree, { recursive: true });
|
|
812
|
-
const shadow = await ShadowIndex.create({
|
|
813
|
-
gitDir: join(root, 'run', 'fs'),
|
|
814
|
-
workTree,
|
|
815
|
-
forced: ['cache', 'dataset'],
|
|
816
|
-
});
|
|
817
|
-
await write(workTree, '.gitignore', 'cache/\ndataset/\n');
|
|
818
|
-
await write(workTree, 'cache/mini_faqs.json', '{}\n');
|
|
819
|
-
await write(workTree, 'dataset/notes.txt', 'loose file, still captured\n');
|
|
820
|
-
const corpus = join(workTree, 'dataset', 'hotpotqa');
|
|
821
|
-
await mkdir(corpus, { recursive: true });
|
|
822
|
-
await runGit(['init', '-q'], { cwd: corpus });
|
|
823
|
-
await write(corpus, 'docs.jsonl', '{"id":1}\n');
|
|
824
|
-
await runGit(['add', '-A'], { cwd: corpus });
|
|
825
|
-
await runGit(['-c', 'user.email=a@b.c', '-c', 'user.name=a', 'commit', '-qm', 'x'], {
|
|
826
|
-
cwd: corpus,
|
|
827
|
-
});
|
|
828
|
-
|
|
829
|
-
const tree = await shadow.snapshot();
|
|
830
|
-
expect(shadow.skippedGitlinks).toEqual(['dataset/hotpotqa']);
|
|
831
|
-
expect(await shadow.gitlinks(tree)).toEqual([]);
|
|
832
|
-
// Everything else the adapter declared is still there, and the tree restores.
|
|
833
|
-
expect(await filesIn(shadow, tree)).toEqual([
|
|
834
|
-
'.gitignore',
|
|
835
|
-
'cache/mini_faqs.json',
|
|
836
|
-
'dataset/notes.txt',
|
|
837
|
-
]);
|
|
838
|
-
await expect(shadow.materialize(tree, join(root, 'dest'))).resolves.toBeUndefined();
|
|
839
|
-
|
|
840
|
-
// Named once: a warning repeated on every turn of a long run is a warning nobody reads.
|
|
841
|
-
await shadow.snapshot();
|
|
842
|
-
expect(shadow.skippedGitlinks).toEqual([]);
|
|
843
|
-
});
|
|
844
|
-
|
|
845
|
-
/**
|
|
846
|
-
* What the snapshot did not take a copy of, for a caller about to delete these paths.
|
|
847
|
-
*
|
|
848
|
-
* Two rules keep things out of a forced add, and both are right: the sensitive pathspecs stop an
|
|
849
|
-
* adapter sweeping a credential into a trace however it declares its paths, and a nested
|
|
850
|
-
* repository cannot be held at all. Both mean the copy is missing something a reset would take —
|
|
851
|
-
* an `.env` the operator keeps beside a cache, a prebuilt store cloned into `vector_store/` —
|
|
852
|
-
* and neither need appear in the recording's own tree, since the operator may have put it there
|
|
853
|
-
* afterwards. `agenticreplay replay` deletes these paths on the strength of this copy, so it has to be
|
|
854
|
-
* able to ask what the copy is missing before it does.
|
|
855
|
-
*/
|
|
856
|
-
itGit('reports what a forced snapshot could not hold under the declared paths', async () => {
|
|
857
|
-
const root = await makeTempDir();
|
|
858
|
-
const workTree = join(root, 'ws');
|
|
859
|
-
await mkdir(workTree, { recursive: true });
|
|
860
|
-
const shadow = await ShadowIndex.create({
|
|
861
|
-
gitDir: join(root, 'run', 'fs'),
|
|
862
|
-
workTree,
|
|
863
|
-
forced: ['cache', 'vector_store'],
|
|
864
|
-
});
|
|
865
|
-
await write(workTree, '.gitignore', 'cache/\nvector_store/\n');
|
|
866
|
-
await write(workTree, 'cache/mini_faqs.json', '{}\n');
|
|
867
|
-
await write(workTree, 'cache/.env', 'INDEXRAG_EMBEDDING_API_KEY=sk-live\n');
|
|
868
|
-
const prebuilt = join(workTree, 'vector_store', 'prebuilt');
|
|
869
|
-
await mkdir(prebuilt, { recursive: true });
|
|
870
|
-
await runGit(['init', '-q'], { cwd: prebuilt });
|
|
871
|
-
await write(prebuilt, 'faiss.bin', 'months of work\n');
|
|
872
|
-
await runGit(['add', '-A'], { cwd: prebuilt });
|
|
873
|
-
await runGit(['-c', 'user.email=a@b.c', '-c', 'user.name=a', 'commit', '-qm', 'p'], {
|
|
874
|
-
cwd: prebuilt,
|
|
875
|
-
});
|
|
876
|
-
|
|
877
|
-
await shadow.snapshot();
|
|
878
|
-
// The credential, kept out on purpose; and the clone, which no snapshot can hold. A trailing
|
|
879
|
-
// slash on the second because git will not look inside a repository of its own.
|
|
880
|
-
expect(await shadow.uncaptured(['cache', 'vector_store'])).toEqual([
|
|
881
|
-
'cache/.env',
|
|
882
|
-
'vector_store/prebuilt/',
|
|
883
|
-
]);
|
|
884
|
-
// And the ordinary case says nothing, so a guard built on this is quiet in a normal run.
|
|
885
|
-
expect(await shadow.uncaptured(['cache/mini_faqs.json'])).toEqual([]);
|
|
886
|
-
});
|
|
887
|
-
|
|
888
|
-
/**
|
|
889
|
-
* The same question `materialize` answers by throwing, asked without writing anything.
|
|
890
|
-
*
|
|
891
|
-
* `agenticreplay replay` deletes the artifacts *before* the restore that puts them back, which is the
|
|
892
|
-
* only ordering that leaves them holding what they held when recording began. That makes the
|
|
893
|
-
* restore's refusal unrecoverable unless it can be seen coming — and recordings made before
|
|
894
|
-
* gitlinks were dropped are still on disk, which is who this is for.
|
|
895
|
-
*/
|
|
896
|
-
itGit('reports the gitlinks a restore would refuse, without touching the workspace', async () => {
|
|
897
|
-
const { root, workTree, shadow } = await fixture();
|
|
898
|
-
await write(workTree, 'a.txt', 'x\n');
|
|
899
|
-
const clean = await shadow.snapshot();
|
|
900
|
-
expect(await shadow.gitlinks(clean)).toEqual([]);
|
|
901
|
-
|
|
902
|
-
// Not inside a declared path, so `add -A` stages it exactly as it always has.
|
|
903
|
-
const inner = join(workTree, 'vendor', 'inner');
|
|
904
|
-
await mkdir(inner, { recursive: true });
|
|
905
|
-
await runGit(['init', '-q'], { cwd: inner });
|
|
906
|
-
await write(inner, 'f.txt', 'inner\n');
|
|
907
|
-
await runGit(['add', '-A'], { cwd: inner });
|
|
908
|
-
await runGit(['-c', 'user.email=a@b.c', '-c', 'user.name=a', 'commit', '-qm', 'x'], {
|
|
909
|
-
cwd: inner,
|
|
910
|
-
});
|
|
911
|
-
|
|
912
|
-
const withLink = await shadow.snapshot();
|
|
913
|
-
expect(await shadow.gitlinks(withLink)).toEqual(['vendor/inner']);
|
|
914
|
-
await expect(shadow.materialize(withLink, join(root, 'dest'))).rejects.toThrow(
|
|
915
|
-
/embedded git repositor/i,
|
|
916
|
-
);
|
|
917
|
-
});
|
|
918
|
-
});
|
|
919
|
-
|
|
920
|
-
describe('readFileAt', () => {
|
|
921
|
-
itGit('returns the exact bytes stored in a tree', async () => {
|
|
922
|
-
const { workTree, shadow } = await fixture();
|
|
923
|
-
const bytes = new Uint8Array([0x00, 0xff, 0x10, 0x0a, 0x7f]);
|
|
924
|
-
await write(workTree, 'nested/bin.dat', bytes);
|
|
925
|
-
await write(workTree, 'nested/u.txt', 'héllo ünicode ✓\n漢字\n');
|
|
926
|
-
const tree = await shadow.snapshot();
|
|
927
|
-
expect(await shadow.readFileAt(tree, 'nested/bin.dat')).toEqual(bytes);
|
|
928
|
-
expect(Buffer.from(await shadow.readFileAt(tree, 'nested/u.txt')).toString('utf8')).toBe(
|
|
929
|
-
'héllo ünicode ✓\n漢字\n',
|
|
930
|
-
);
|
|
931
|
-
});
|
|
932
|
-
|
|
933
|
-
itGit('throws for a path that is not in the tree', async () => {
|
|
934
|
-
const { workTree, shadow } = await fixture();
|
|
935
|
-
await write(workTree, 'a.txt', 'x\n');
|
|
936
|
-
const tree = await shadow.snapshot();
|
|
937
|
-
await expect(shadow.readFileAt(tree, 'missing.txt')).rejects.toThrow(/missing\.txt/);
|
|
938
|
-
});
|
|
939
|
-
});
|
|
940
|
-
|
|
941
|
-
describe('patch', () => {
|
|
942
|
-
itGit('produces a unified diff for the whole tree', async () => {
|
|
943
|
-
const { workTree, shadow } = await fixture();
|
|
944
|
-
await write(workTree, 'a.txt', 'l1\nl2\n');
|
|
945
|
-
const before = await shadow.snapshot();
|
|
946
|
-
await write(workTree, 'a.txt', 'l1\nl2\nl3\n');
|
|
947
|
-
await write(workTree, 'b.txt', 'new\n');
|
|
948
|
-
const patch = await shadow.patch(before, await shadow.snapshot());
|
|
949
|
-
expect(patch).toContain('diff --git a/a.txt b/a.txt');
|
|
950
|
-
expect(patch).toContain('+l3');
|
|
951
|
-
expect(patch).toContain('b.txt');
|
|
952
|
-
});
|
|
953
|
-
|
|
954
|
-
itGit('narrows to a single path when asked', async () => {
|
|
955
|
-
const { workTree, shadow } = await fixture();
|
|
956
|
-
await write(workTree, 'a.txt', 'l1\n');
|
|
957
|
-
await write(workTree, 'b.txt', 'l1\n');
|
|
958
|
-
const before = await shadow.snapshot();
|
|
959
|
-
await write(workTree, 'a.txt', 'l1\nl2\n');
|
|
960
|
-
await write(workTree, 'b.txt', 'l1\nl2\n');
|
|
961
|
-
const patch = await shadow.patch(before, await shadow.snapshot(), 'a.txt');
|
|
962
|
-
expect(patch).toContain('a.txt');
|
|
963
|
-
expect(patch).not.toContain('b.txt');
|
|
964
|
-
});
|
|
965
|
-
});
|
|
966
|
-
|
|
967
|
-
describe('materialize', () => {
|
|
968
|
-
itGit('round-trips a nested tree byte for byte', async () => {
|
|
969
|
-
const { root, workTree, shadow } = await fixture();
|
|
970
|
-
const unicode = 'héllo ünicode ✓\n漢字とカナ\nlast line without newline';
|
|
971
|
-
const binary = new Uint8Array([0, 1, 2, 253, 254, 255, 10, 13]);
|
|
972
|
-
await write(workTree, 'top.txt', 'top\n');
|
|
973
|
-
await write(workTree, 'nested/deep/u.txt', unicode);
|
|
974
|
-
await write(workTree, 'nested/deep/deeper/bin.dat', binary);
|
|
975
|
-
await write(workTree, 'nested/crlf.txt', 'a\r\nb\r\n');
|
|
976
|
-
await write(workTree, 'run.sh', '#!/bin/sh\necho hi\n');
|
|
977
|
-
await chmod(join(workTree, 'run.sh'), 0o755);
|
|
978
|
-
const tree = await shadow.snapshot();
|
|
979
|
-
|
|
980
|
-
const dest = join(root, 'materialized');
|
|
981
|
-
await shadow.materialize(tree, dest);
|
|
982
|
-
|
|
983
|
-
expect(await listFilesRecursive(dest)).toEqual(await listFilesRecursive(workTree));
|
|
984
|
-
for (const rel of await listFilesRecursive(workTree)) {
|
|
985
|
-
const original = await readFile(join(workTree, rel));
|
|
986
|
-
const restored = await readFile(join(dest, rel));
|
|
987
|
-
expect(restored.equals(original), `bytes differ for ${rel}`).toBe(true);
|
|
988
|
-
}
|
|
989
|
-
// Windows has no execute bit — git itself gives up on it there (`core.fileMode=false`), so a
|
|
990
|
-
// restore cannot put back what the filesystem cannot hold. Only this line is skipped: the
|
|
991
|
-
// byte-for-byte round trip above is exactly as meaningful on Windows and still runs.
|
|
992
|
-
//
|
|
993
|
-
// The consequence is real and belongs in the open, not in a green test: a run recorded on
|
|
994
|
-
// POSIX and forked on Windows gets its scripts back without `+x`.
|
|
995
|
-
if (process.platform !== 'win32') {
|
|
996
|
-
expect((await stat(join(dest, 'run.sh'))).mode & 0o111).toBeGreaterThan(0);
|
|
997
|
-
}
|
|
998
|
-
});
|
|
999
|
-
|
|
1000
|
-
/**
|
|
1001
|
-
* Creating the symlink is what fails on Windows, in this test's own setup: `symlink()` needs
|
|
1002
|
-
* Developer Mode or elevation, so the scenario cannot be built and `materialize` is never
|
|
1003
|
-
* reached. The gap on Windows is therefore unmeasured here, not proven — worth saying plainly
|
|
1004
|
-
* rather than leaving a red test that looks like a restore bug.
|
|
1005
|
-
*/
|
|
1006
|
-
itGit.skipIf(process.platform === 'win32')(
|
|
1007
|
-
'round-trips a symlink as a symlink, without following it',
|
|
1008
|
-
async () => {
|
|
1009
|
-
const { root, workTree, shadow } = await fixture();
|
|
1010
|
-
await write(workTree, 'target.txt', 'pointed at\n');
|
|
1011
|
-
await symlink('target.txt', join(workTree, 'link.txt'));
|
|
1012
|
-
await symlink('/etc/passwd', join(workTree, 'escape.txt'));
|
|
1013
|
-
const dest = join(root, 'materialized-links');
|
|
1014
|
-
await shadow.materialize(await shadow.snapshot(), dest);
|
|
1015
|
-
expect(await readlink(join(dest, 'link.txt'))).toBe('target.txt');
|
|
1016
|
-
expect(await readlink(join(dest, 'escape.txt'))).toBe('/etc/passwd');
|
|
1017
|
-
expect((await lstat(join(dest, 'escape.txt'))).isSymbolicLink()).toBe(true);
|
|
1018
|
-
},
|
|
1019
|
-
);
|
|
1020
|
-
|
|
1021
|
-
itGit('creates the destination directory if it does not exist', async () => {
|
|
1022
|
-
const { root, workTree, shadow } = await fixture();
|
|
1023
|
-
await write(workTree, 'a.txt', 'x\n');
|
|
1024
|
-
const dest = join(root, 'does', 'not', 'exist');
|
|
1025
|
-
await shadow.materialize(await shadow.snapshot(), dest);
|
|
1026
|
-
expect(await readFile(join(dest, 'a.txt'), 'utf8')).toBe('x\n');
|
|
1027
|
-
});
|
|
1028
|
-
|
|
1029
|
-
itGit('materializes the empty tree as an empty directory', async () => {
|
|
1030
|
-
const { root, shadow } = await fixture();
|
|
1031
|
-
const dest = join(root, 'empty-dest');
|
|
1032
|
-
await shadow.materialize(await shadow.snapshot(), dest);
|
|
1033
|
-
expect(await listFilesRecursive(dest)).toEqual([]);
|
|
1034
|
-
});
|
|
1035
|
-
|
|
1036
|
-
// git add stores a nested repository as a gitlink whose contents live nowhere in the shadow
|
|
1037
|
-
// store, so checkout-index would silently produce an empty directory. Fork replay must not
|
|
1038
|
-
// debug a workspace that quietly lost a subtree.
|
|
1039
|
-
itGit('refuses to materialize a tree containing an embedded git repository', async () => {
|
|
1040
|
-
const { root, workTree, shadow } = await fixture();
|
|
1041
|
-
await write(workTree, 'a.txt', 'x\n');
|
|
1042
|
-
const inner = join(workTree, 'vendor', 'inner');
|
|
1043
|
-
await mkdir(inner, { recursive: true });
|
|
1044
|
-
await runGit(['init', '-q'], { cwd: inner });
|
|
1045
|
-
await write(inner, 'f.txt', 'inner\n');
|
|
1046
|
-
await runGit(['add', '-A'], { cwd: inner });
|
|
1047
|
-
await runGit(['-c', 'user.email=a@b.c', '-c', 'user.name=a', 'commit', '-qm', 'x'], {
|
|
1048
|
-
cwd: inner,
|
|
1049
|
-
});
|
|
1050
|
-
const tree = await shadow.snapshot();
|
|
1051
|
-
const dest = join(root, 'dest');
|
|
1052
|
-
await expect(shadow.materialize(tree, dest)).rejects.toThrow(/embedded git repositor/i);
|
|
1053
|
-
await expect(
|
|
1054
|
-
shadow.materialize(tree, dest, { allowIncomplete: true }),
|
|
1055
|
-
).resolves.toBeUndefined();
|
|
1056
|
-
expect(await readFile(join(dest, 'a.txt'), 'utf8')).toBe('x\n');
|
|
1057
|
-
});
|
|
1058
|
-
});
|