duet-cli 0.2.12__tar.gz → 0.2.13__tar.gz

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.
Files changed (28) hide show
  1. duet_cli-0.2.13/PKG-INFO +74 -0
  2. duet_cli-0.2.13/README.md +53 -0
  3. {duet_cli-0.2.12 → duet_cli-0.2.13}/duet.py +2215 -54
  4. duet_cli-0.2.13/duet_cli.egg-info/PKG-INFO +74 -0
  5. {duet_cli-0.2.12 → duet_cli-0.2.13}/duet_cli.egg-info/SOURCES.txt +9 -0
  6. duet_cli-0.2.13/tests/test_backend_metrics.py +243 -0
  7. {duet_cli-0.2.12 → duet_cli-0.2.13}/tests/test_control_plane.py +186 -10
  8. {duet_cli-0.2.12 → duet_cli-0.2.13}/tests/test_duet.py +12 -1
  9. duet_cli-0.2.13/tests/test_feedback_concurrency.py +61 -0
  10. duet_cli-0.2.13/tests/test_finding_reports.py +170 -0
  11. duet_cli-0.2.13/tests/test_finding_workflow.py +346 -0
  12. duet_cli-0.2.13/tests/test_metrics_cli.py +150 -0
  13. duet_cli-0.2.13/tests/test_metrics_collection.py +309 -0
  14. duet_cli-0.2.13/tests/test_metrics_lifecycle.py +146 -0
  15. duet_cli-0.2.13/tests/test_metrics_reporting.py +306 -0
  16. duet_cli-0.2.13/tests/test_no_subagents.py +351 -0
  17. duet_cli-0.2.12/PKG-INFO +0 -276
  18. duet_cli-0.2.12/README.md +0 -255
  19. duet_cli-0.2.12/duet_cli.egg-info/PKG-INFO +0 -276
  20. {duet_cli-0.2.12 → duet_cli-0.2.13}/LICENSE +0 -0
  21. {duet_cli-0.2.12 → duet_cli-0.2.13}/duet_cli.egg-info/dependency_links.txt +0 -0
  22. {duet_cli-0.2.12 → duet_cli-0.2.13}/duet_cli.egg-info/entry_points.txt +0 -0
  23. {duet_cli-0.2.12 → duet_cli-0.2.13}/duet_cli.egg-info/requires.txt +0 -0
  24. {duet_cli-0.2.12 → duet_cli-0.2.13}/duet_cli.egg-info/top_level.txt +0 -0
  25. {duet_cli-0.2.12 → duet_cli-0.2.13}/pyproject.toml +0 -0
  26. {duet_cli-0.2.12 → duet_cli-0.2.13}/setup.cfg +0 -0
  27. {duet_cli-0.2.12 → duet_cli-0.2.13}/tests/test_bump_release_version.py +0 -0
  28. {duet_cli-0.2.12 → duet_cli-0.2.13}/tests/test_stop_control_plane.py +0 -0
@@ -0,0 +1,74 @@
1
+ Metadata-Version: 2.4
2
+ Name: duet-cli
3
+ Version: 0.2.13
4
+ Summary: Two CLI agents in conversation. One Python file. Stdlib only.
5
+ Author: Volkan Altan
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/volkan/duet
8
+ Project-URL: Repository, https://github.com/volkan/duet
9
+ Keywords: agents,cli,claude,codex,llm,orchestration,pair-programming
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Software Development
15
+ Requires-Python: >=3.9
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Provides-Extra: yaml
19
+ Requires-Dist: pyyaml; extra == "yaml"
20
+ Dynamic: license-file
21
+
22
+ # duet
23
+
24
+ **A second opinion for your AI coding work.**
25
+
26
+ Duet runs two coding agents in alternating turns: one reviews or plans, the
27
+ other implements or challenges the result. Each keeps its own conversation,
28
+ and you get a saved transcript to inspect.
29
+
30
+ Pair Claude and Codex, or use **two models through one CLI**. Gemini,
31
+ Copilot, and OpenCode are also supported.
32
+
33
+ [![Watch the 80-second review workflow demo](https://raw.githubusercontent.com/volkan/duet/main/docs/demos/finding-review.png)](https://github.com/volkan/duet/blob/main/docs/demos/finding-review.mp4)
34
+
35
+ An edited replay using a public toy fixture. [Playback and source](https://github.com/volkan/duet/blob/main/docs/demos/README.md).
36
+
37
+ ## A real example
38
+
39
+ A supplied work audit describes a proposed fix that accidentally stopped
40
+ hiding sensitive values. The other agent challenged it, and the first revised
41
+ both the code and a test that had accepted the incorrect output.
42
+
43
+ [Read the anonymized cases and their limits](https://github.com/volkan/duet/blob/main/docs/REAL_CASES.md).
44
+
45
+ ## Quick start
46
+
47
+ You need Python 3.9+ and the CLIs for your chosen pair, installed and signed in.
48
+ **Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
49
+ For the Claude + Codex pair, run this from a Git repository:
50
+
51
+ ```bash
52
+ pipx install duet-cli
53
+ duet --recipe review
54
+ ```
55
+
56
+ This starts a review and fix loop with the coder in a separate Git worktree.
57
+ Inspect the changes before merging; agent agreement does not prove correctness.
58
+
59
+ Already working inside an agent? Follow the plugin guide for
60
+ [Claude Code](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md),
61
+ [Codex](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md), or
62
+ [OpenCode](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md).
63
+
64
+ ## Go further
65
+
66
+ - [Installation, recipes, and CLI reference](https://github.com/volkan/duet/blob/main/docs/USAGE.md)
67
+ - [Review reports and feedback](https://github.com/volkan/duet/blob/main/docs/FINDINGS.md) · [Recorded workflow demo](https://github.com/volkan/duet/blob/main/docs/demos/README.md)
68
+ - [Local metrics and privacy](https://github.com/volkan/duet/blob/main/docs/METRICS.md) · [Usage evidence](https://github.com/volkan/duet/blob/main/docs/USAGE_EVIDENCE.md)
69
+
70
+ One Python file. Stdlib-only runtime; YAML support is optional. MIT licensed.
71
+
72
+ Contributing: [project guidance](https://github.com/volkan/duet/blob/main/CLAUDE.md),
73
+ [Codex notes](https://github.com/volkan/duet/blob/main/AGENTS.md), and
74
+ [merge checks](https://github.com/volkan/duet/blob/main/.github/BRANCH_PROTECTION.md).
@@ -0,0 +1,53 @@
1
+ # duet
2
+
3
+ **A second opinion for your AI coding work.**
4
+
5
+ Duet runs two coding agents in alternating turns: one reviews or plans, the
6
+ other implements or challenges the result. Each keeps its own conversation,
7
+ and you get a saved transcript to inspect.
8
+
9
+ Pair Claude and Codex, or use **two models through one CLI**. Gemini,
10
+ Copilot, and OpenCode are also supported.
11
+
12
+ [![Watch the 80-second review workflow demo](https://raw.githubusercontent.com/volkan/duet/main/docs/demos/finding-review.png)](https://github.com/volkan/duet/blob/main/docs/demos/finding-review.mp4)
13
+
14
+ An edited replay using a public toy fixture. [Playback and source](https://github.com/volkan/duet/blob/main/docs/demos/README.md).
15
+
16
+ ## A real example
17
+
18
+ A supplied work audit describes a proposed fix that accidentally stopped
19
+ hiding sensitive values. The other agent challenged it, and the first revised
20
+ both the code and a test that had accepted the incorrect output.
21
+
22
+ [Read the anonymized cases and their limits](https://github.com/volkan/duet/blob/main/docs/REAL_CASES.md).
23
+
24
+ ## Quick start
25
+
26
+ You need Python 3.9+ and the CLIs for your chosen pair, installed and signed in.
27
+ **Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
28
+ For the Claude + Codex pair, run this from a Git repository:
29
+
30
+ ```bash
31
+ pipx install duet-cli
32
+ duet --recipe review
33
+ ```
34
+
35
+ This starts a review and fix loop with the coder in a separate Git worktree.
36
+ Inspect the changes before merging; agent agreement does not prove correctness.
37
+
38
+ Already working inside an agent? Follow the plugin guide for
39
+ [Claude Code](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md),
40
+ [Codex](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md), or
41
+ [OpenCode](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md).
42
+
43
+ ## Go further
44
+
45
+ - [Installation, recipes, and CLI reference](https://github.com/volkan/duet/blob/main/docs/USAGE.md)
46
+ - [Review reports and feedback](https://github.com/volkan/duet/blob/main/docs/FINDINGS.md) · [Recorded workflow demo](https://github.com/volkan/duet/blob/main/docs/demos/README.md)
47
+ - [Local metrics and privacy](https://github.com/volkan/duet/blob/main/docs/METRICS.md) · [Usage evidence](https://github.com/volkan/duet/blob/main/docs/USAGE_EVIDENCE.md)
48
+
49
+ One Python file. Stdlib-only runtime; YAML support is optional. MIT licensed.
50
+
51
+ Contributing: [project guidance](https://github.com/volkan/duet/blob/main/CLAUDE.md),
52
+ [Codex notes](https://github.com/volkan/duet/blob/main/AGENTS.md), and
53
+ [merge checks](https://github.com/volkan/duet/blob/main/.github/BRANCH_PROTECTION.md).