Adds the snapshot-test harness and the keyless replay pipeline end-to-end. - snapshot-harness.ts: boots the real acp-agent subprocess via the cordis Loader (preserving TSX_TSCONFIG_PATH so unbuilt dsh-* imports resolve from a temp cwd), tees raw stdout into an SDK ClientSideConnection, interprets a per-scenario input.json DSL (initialize / newSession capturing the random sessionId / prompt / cancel), closes stdin to trigger graceful shutdown, and harvests the persisted session.jsonl. Failure-safe: a finally block SIGKILLs a live child, awaits its exit, and removes both temp dirs even on a thrown step or harvest. Raw bytes are buffered and decoded once (no multibyte split). - snapshot-normalize.ts (+ spec): two pure normalizers (stdout frames + session JSONL) scrub cwd, session ids / UUIDs, and JSON-RPC ids, and zero time / createdAt — but keep `seq` (deterministic by contract). normalizeStdout throws on a non-JSON line (the stdout-purity check). - start.ts: selects cordis.snapshot.yml (replay, providerless) or cordis.snapshot-record.yml (record, real adapter) from DSH_SNAPSHOT, skips .env in replay, and disposes the ctx on stdin end so persistence flushes before exit (harvest-after-flush, not on the prompt response). - acp.snapshot.ts: asserts the normalized stdout golden (and, for model scenarios, the re-persisted JSONL golden) via toMatchFileSnapshot; record mode writes the harvested log back to the scenario fixture; an orphan-fixture guard fails on an unregistered scenario dir. - handshake scenario: initialize + session/new (no model call; a header-only session.jsonl, since session/new persists no events). - vitest.snapshot.config.ts, test:snapshot / test:snapshot:record scripts, a pre-push snapshot job, and the knip entry. Incorporates Codex review: record-fixture writeback, failure-safe teardown, seq-not-scrubbed, harvest-after-flush. Per docs/rfc/implemented/2026-06-19.
62 lines
2.3 KiB
JSON
62 lines
2.3 KiB
JSON
{
|
|
"name": "@deepseek-ai/dsh-root",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"packageManager": "pnpm@11.7.0",
|
|
"engines": {
|
|
"node": ">=24"
|
|
},
|
|
"workspaces": [
|
|
"vendor/*",
|
|
"packages/*"
|
|
],
|
|
"scripts": {
|
|
"build": "tsc -b tsconfig.build.json && tsdown",
|
|
"typecheck": "tsc -b tsconfig.build.json && tsc -p tsconfig.typecheck.json",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"test": "vitest run",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
"test:snapshot": "vitest run --config vitest.snapshot.config.ts",
|
|
"test:snapshot:record": "DSH_SNAPSHOT=record vitest run --config vitest.snapshot.config.ts --update",
|
|
"knip": "knip",
|
|
"publint": "tsx scripts/publint-all.ts",
|
|
"doc-typecheck": "tsx scripts/doc-typecheck.ts",
|
|
"verify-event-taxonomy": "tsx scripts/verify-event-taxonomy.ts",
|
|
"verify-md-wrap": "tsx scripts/verify-md-wrap.ts",
|
|
"verify-md-links": "tsx scripts/verify-md-links.ts",
|
|
"gen-module-graph": "tsx scripts/gen-module-graph.ts",
|
|
"verify-module-graph": "tsx scripts/gen-module-graph.ts --check",
|
|
"constraints": "tsx scripts/check-workspace-constraints.ts",
|
|
"doc-sync": "pnpm run doc-typecheck && pnpm run verify-event-taxonomy && pnpm run verify-md-wrap && pnpm run verify-md-links",
|
|
"hygiene": "pnpm run knip && pnpm run publint && pnpm run constraints",
|
|
"demo:echo": "node --expose-internals --import tsx examples/echo-agent/start.ts",
|
|
"demo:coding": "node --expose-internals --import tsx examples/coding-agent/start.ts",
|
|
"demo:acp": "node --expose-internals --import tsx examples/acp-agent/start.ts",
|
|
"postinstall": "lefthook install"
|
|
},
|
|
"devDependencies": {
|
|
"@agentclientprotocol/sdk": "0.25.1",
|
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
"@types/mdast": "^4.0.4",
|
|
"@types/node": "^25.3.5",
|
|
"@vitest/coverage-v8": "^4.1.8",
|
|
"eslint": "^10.4.1",
|
|
"fast-check": "^4.8.0",
|
|
"knip": "^6.16.1",
|
|
"lefthook": "^2.1.9",
|
|
"mdast-util-from-markdown": "^2.0.3",
|
|
"mdast-util-gfm": "^3.1.0",
|
|
"micromark-extension-gfm": "^3.0.0",
|
|
"publint": "^0.3.21",
|
|
"tsdown": "^0.22.2",
|
|
"tsx": "^4.22.4",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.61.0",
|
|
"vite-tsconfig-paths": "^6.1.1",
|
|
"vitest": "^4.1.8"
|
|
}
|
|
}
|