diff --git a/README.md b/README.md index 26a35822..1ab1fc09 100644 --- a/README.md +++ b/README.md @@ -475,6 +475,7 @@ The [independent model research](community/projects/tools/README.md#independent- - [Testimonial miner](https://github.com/AppitStudio/testimonial-miner) - Python CLI that finds quotable user praise in Gmail mailboxes with one Jev request per email (message kind, app, praise quality, and a Noul per sentence) and stores verbatim quotes for review; requires a TypeSafe key and Google app passwords, and sends cleaned email text to TypeSafe. [Project guide](community/projects/tools/testimonial-miner.md). - [toolgate](https://github.com/RiskAverseTech/toolgate) - Open Claude Code PreToolUse and MCP tool-call firewall with static rules, TypeSafe Jev judgments, YAML policy, and a local audit log. [Project guide](community/projects/tools/toolgate.md). - [Tripwire](https://github.com/anuran-de/tripwire) - Streaming proxy that trips on partial LLM output and can abort upstream mid-flight, with TypeSafe Jev or a heuristic detector. [Project guide](community/projects/tools/tripwire.md). +- [tdd-gate](https://github.com/bensheridan/tdd-gate) - Keeps test and code agents on one plan: TypeSafe Jev judges coverage, blame, gaming, weakening, and drift. [Project guide](community/projects/tools/tdd-gate.md). - [triagedy](https://github.com/m0rphtail/triagedy) - UNIX-filter security-alert triage: JSONL in, typed TypeSafe Jev decisions out; policy routing stays in Rust code. [Project guide](community/projects/tools/triagedy.md). - [typesafe-agent-gates](https://github.com/ThiagaoBR/typesafe_agent_gates) - LangChain/Deep Agents middleware using TypeSafe Jev for shell gates, issue triage, MR detection, and test-spec review. [Project guide](community/projects/tools/typesafe-agent-gates.md). - [TypeSafe Mario](https://github.com/fhshaik/typesafe-mario) - Selects emulator controller inputs with Jev from structured Mario telemetry; includes a synthetic state demo, with upstream licensing unspecified. [Project guide](community/projects/tools/typesafe-mario.md). diff --git a/community/projects/tools/README.md b/community/projects/tools/README.md index 78aa8cd9..53dccf36 100644 --- a/community/projects/tools/README.md +++ b/community/projects/tools/README.md @@ -252,6 +252,7 @@ See the [computer-use guide](../../../docs/computer-use.md) for a comparison, fo | [todo-jev](todo-jev.md) | Classify requests into a 3-tier path (local rule / Jev skill / foundation model) with skill profiles and preflight. | Python · Typer CLI (`todo-jev` 0.1.0) | | [toolgate](toolgate.md) | Gate Claude Code and MCP tool calls with static rules plus TypeSafe Jev risk judgments and a local audit log. | TypeScript · CLI, Claude Code hook and MCP proxy | | [Tripwire](tripwire.md) | Abort bad streaming completions mid-flight using TypeSafe Jev (or an offline heuristic) inside an OpenAI-compatible proxy. | Python · package (`tripwire` 0.1.0) | +| [tdd-gate](tdd-gate.md) | Dual-agent TDD gates: TypeSafe Jev coverage/blame/gaming/weakening/drift judgments; optional isolated orchestrator. | TypeScript · CLI (`tdd-gate` 0.1.0, MIT) | | [triagedy](triagedy.md) | Triage JSONL security alerts with TypeSafe Jev typed questions; route outcomes in ordinary Rust code. | Rust · CLI (`triagedy` 0.1.0) | | [typesafe-agent-gates](typesafe-agent-gates.md) | Gate unattended LangChain/Deep Agents shell commands and triage with TypeSafe Jev middleware. | Python · LangChain middleware | | [VexJoy Agent](vexjoy-agent.md) | Route plain-English requests to specialist agents/skills; optional `/d` uses TypeSafe Jev classification and intent gates. | Python · agent toolkit (Claude Code / Codex hooks) | diff --git a/community/projects/tools/tdd-gate.md b/community/projects/tools/tdd-gate.md new file mode 100644 index 00000000..dce5a9b5 --- /dev/null +++ b/community/projects/tools/tdd-gate.md @@ -0,0 +1,49 @@ +# tdd-gate + +[All projects](../README.md) · [Developer tools](README.md#developer-tools) + +CLI gates for dual-agent TDD: TypeSafe Jev judges requirement↔test coverage, failing-test blame routing, gaming, weakening, and drift—without generating code. Optional `tdd-gate run` orchestrates isolated worktrees. + +| At a glance | Details | +| --- | --- | +| Source | [Source](https://github.com/bensheridan/tdd-gate) | +| Maintainer | [bensheridan](https://github.com/bensheridan). Independently curated; this entry is not an upstream submission or endorsement. | +| Format | TypeScript CLI **`tdd-gate` 0.1.0** (private package layout; `npm run build` → `dist/cli.js`). Depends on `@typesafe-ai/sdk`. | +| Requirements | Node.js **≥ 20** (upstream `.nvmrc` notes 24); `TYPESAFE_API_KEY` for live gates. `--dry-run` coverage path needs no key. | +| License | [MIT](https://github.com/bensheridan/tdd-gate/blob/30e27f6400259389ee774f7dfc6c9e27a2996db9/LICENSE). | +| Disclosure | AI-assisted catalog review; no affiliation. Listing is not an endorsement. Source inspected (README, LICENSE, `package.json`). Offline `npm test` and live dual-agent runs were **not** executed on the review host. Upstream live-run anecdotes are author-reported. | + +## When to use + +Use it when a test-writing agent and a code-writing agent must stay on one plan and you need **typed** coverage/blame/gaming/weakening/drift judgments before accepting a turn. Prefer [agent-evals](agent-evals.md) for broader CI judging harnesses. + +## How it works + +Each subcommand builds TypeSafe System One questions over requirements, tests, diffs, and/or JUnit results; code applies thresholds and prints JSON routes. `tdd-gate run` drives two agent CLIs in throwaway worktrees (code agent’s tree has tests deleted), runs gates before commits, and stops for humans on ambiguous blame. Gates never contact agents themselves. + +## Get started + +```sh +git clone https://github.com/bensheridan/tdd-gate.git +cd tdd-gate +git checkout 30e27f6400259389ee774f7dfc6c9e27a2996db9 +npm install && npm run build +node dist/cli.js coverage --requirements examples/slugify/requirements.yml --tests examples/slugify/tests --dry-run +# Live (charges): export TYPESAFE_API_KEY=... && drop --dry-run +``` + +## Examples and demos + +- `examples/slugify/` fixtures for coverage/blame/gaming/weakening/drift. +- Upstream README live dual-Claude-Code run notes (not reproduced here). +- `eval/cases/` harvested scenarios. + +## Limits and data handling + +Live gates send requirement/test/diff text to TypeSafe. Orchestrator isolation is by worktree deletion of tests—not a full sandbox. Assertion messages shown to the code agent can leak inputs/expected outputs; gaming gate is meant to catch that. No live Jev in this listing. + +## Review and maintenance + +Reviewed on **2026-09-23** at [commit 30e27f6](https://github.com/bensheridan/tdd-gate/tree/30e27f6400259389ee774f7dfc6c9e27a2996db9) (**0.1.0**, MIT). AI-assisted source review of README, LICENSE, package metadata. No live TypeSafe spend. + +Related: [agent-evals](agent-evals.md), [semantic-assert](semantic-assert.md), [Canny](canny.md).