duet-cli 0.2.12__tar.gz → 0.2.14__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.14/PKG-INFO +101 -0
  2. duet_cli-0.2.14/README.md +80 -0
  3. {duet_cli-0.2.12 → duet_cli-0.2.14}/duet.py +2215 -54
  4. duet_cli-0.2.14/duet_cli.egg-info/PKG-INFO +101 -0
  5. {duet_cli-0.2.12 → duet_cli-0.2.14}/duet_cli.egg-info/SOURCES.txt +9 -0
  6. duet_cli-0.2.14/tests/test_backend_metrics.py +243 -0
  7. {duet_cli-0.2.12 → duet_cli-0.2.14}/tests/test_bump_release_version.py +3 -3
  8. {duet_cli-0.2.12 → duet_cli-0.2.14}/tests/test_control_plane.py +186 -10
  9. {duet_cli-0.2.12 → duet_cli-0.2.14}/tests/test_duet.py +12 -1
  10. duet_cli-0.2.14/tests/test_feedback_concurrency.py +61 -0
  11. duet_cli-0.2.14/tests/test_finding_reports.py +170 -0
  12. duet_cli-0.2.14/tests/test_finding_workflow.py +346 -0
  13. duet_cli-0.2.14/tests/test_metrics_cli.py +150 -0
  14. duet_cli-0.2.14/tests/test_metrics_collection.py +309 -0
  15. duet_cli-0.2.14/tests/test_metrics_lifecycle.py +146 -0
  16. duet_cli-0.2.14/tests/test_metrics_reporting.py +306 -0
  17. duet_cli-0.2.14/tests/test_no_subagents.py +351 -0
  18. duet_cli-0.2.12/PKG-INFO +0 -276
  19. duet_cli-0.2.12/README.md +0 -255
  20. duet_cli-0.2.12/duet_cli.egg-info/PKG-INFO +0 -276
  21. {duet_cli-0.2.12 → duet_cli-0.2.14}/LICENSE +0 -0
  22. {duet_cli-0.2.12 → duet_cli-0.2.14}/duet_cli.egg-info/dependency_links.txt +0 -0
  23. {duet_cli-0.2.12 → duet_cli-0.2.14}/duet_cli.egg-info/entry_points.txt +0 -0
  24. {duet_cli-0.2.12 → duet_cli-0.2.14}/duet_cli.egg-info/requires.txt +0 -0
  25. {duet_cli-0.2.12 → duet_cli-0.2.14}/duet_cli.egg-info/top_level.txt +0 -0
  26. {duet_cli-0.2.12 → duet_cli-0.2.14}/pyproject.toml +0 -0
  27. {duet_cli-0.2.12 → duet_cli-0.2.14}/setup.cfg +0 -0
  28. {duet_cli-0.2.12 → duet_cli-0.2.14}/tests/test_stop_control_plane.py +0 -0
@@ -0,0 +1,101 @@
1
+ Metadata-Version: 2.4
2
+ Name: duet-cli
3
+ Version: 0.2.14
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
+ [install Claude Code](https://code.claude.com/docs/en/quickstart) and
49
+ [install Codex CLI](https://developers.openai.com/codex/cli#getting-started).
50
+ **Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
51
+ For the Claude + Codex pair, run this from a Git repository:
52
+
53
+ ```bash
54
+ pipx install duet-cli
55
+ duet --recipe review
56
+ ```
57
+
58
+ This starts a review and fix loop with the coder in a separate Git worktree.
59
+ Inspect the changes before merging; agent agreement does not prove correctness.
60
+
61
+ Already working inside an agent? Install the **same Duet skill** for Claude
62
+ Code, Codex, and OpenCode (requires Node.js/npm; choose **Symlink**):
63
+
64
+ ```bash
65
+ npx skills add volkan/duet --skill duet --global \
66
+ --agent claude-code --agent codex --agent opencode
67
+ ```
68
+
69
+ Start a new session, then use `/duet` in Claude Code, `$duet` in Codex, or ask
70
+ OpenCode to use the `duet` skill.
71
+ [Installation details](https://github.com/volkan/duet/blob/main/docs/INSTALLATION.md)
72
+ cover `~/.agents/skills`, prerequisites, and alternative installers. Native
73
+ integration guides:
74
+ [Claude Code](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md),
75
+ [Codex](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md), or
76
+ [OpenCode](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md).
77
+
78
+ ## Upgrade
79
+
80
+ Update the CLI and, if installed, the shared skill:
81
+
82
+ ```bash
83
+ pipx upgrade duet-cli
84
+ npx skills update duet --global
85
+ ```
86
+
87
+ Start a new agent session afterward. For `uv`, `pip`, source checkouts, or
88
+ native marketplace plugins, follow the
89
+ [upgrade guide](https://github.com/volkan/duet/blob/main/docs/INSTALLATION.md#upgrade).
90
+
91
+ ## Go further
92
+
93
+ - [Installation, recipes, and CLI reference](https://github.com/volkan/duet/blob/main/docs/USAGE.md)
94
+ - [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)
95
+ - [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)
96
+
97
+ One Python file. Stdlib-only runtime; YAML support is optional. MIT licensed.
98
+
99
+ Contributing: [project guidance](https://github.com/volkan/duet/blob/main/CLAUDE.md),
100
+ [Codex notes](https://github.com/volkan/duet/blob/main/AGENTS.md), and
101
+ [merge checks](https://github.com/volkan/duet/blob/main/.github/BRANCH_PROTECTION.md).
@@ -0,0 +1,80 @@
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
+ [install Claude Code](https://code.claude.com/docs/en/quickstart) and
28
+ [install Codex CLI](https://developers.openai.com/codex/cli#getting-started).
29
+ **Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
30
+ For the Claude + Codex pair, run this from a Git repository:
31
+
32
+ ```bash
33
+ pipx install duet-cli
34
+ duet --recipe review
35
+ ```
36
+
37
+ This starts a review and fix loop with the coder in a separate Git worktree.
38
+ Inspect the changes before merging; agent agreement does not prove correctness.
39
+
40
+ Already working inside an agent? Install the **same Duet skill** for Claude
41
+ Code, Codex, and OpenCode (requires Node.js/npm; choose **Symlink**):
42
+
43
+ ```bash
44
+ npx skills add volkan/duet --skill duet --global \
45
+ --agent claude-code --agent codex --agent opencode
46
+ ```
47
+
48
+ Start a new session, then use `/duet` in Claude Code, `$duet` in Codex, or ask
49
+ OpenCode to use the `duet` skill.
50
+ [Installation details](https://github.com/volkan/duet/blob/main/docs/INSTALLATION.md)
51
+ cover `~/.agents/skills`, prerequisites, and alternative installers. Native
52
+ integration guides:
53
+ [Claude Code](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md),
54
+ [Codex](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md), or
55
+ [OpenCode](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md).
56
+
57
+ ## Upgrade
58
+
59
+ Update the CLI and, if installed, the shared skill:
60
+
61
+ ```bash
62
+ pipx upgrade duet-cli
63
+ npx skills update duet --global
64
+ ```
65
+
66
+ Start a new agent session afterward. For `uv`, `pip`, source checkouts, or
67
+ native marketplace plugins, follow the
68
+ [upgrade guide](https://github.com/volkan/duet/blob/main/docs/INSTALLATION.md#upgrade).
69
+
70
+ ## Go further
71
+
72
+ - [Installation, recipes, and CLI reference](https://github.com/volkan/duet/blob/main/docs/USAGE.md)
73
+ - [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)
74
+ - [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)
75
+
76
+ One Python file. Stdlib-only runtime; YAML support is optional. MIT licensed.
77
+
78
+ Contributing: [project guidance](https://github.com/volkan/duet/blob/main/CLAUDE.md),
79
+ [Codex notes](https://github.com/volkan/duet/blob/main/AGENTS.md), and
80
+ [merge checks](https://github.com/volkan/duet/blob/main/.github/BRANCH_PROTECTION.md).