duet-cli 0.2.14__tar.gz → 0.2.16__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 (25) hide show
  1. {duet_cli-0.2.14/duet_cli.egg-info → duet_cli-0.2.16}/PKG-INFO +48 -11
  2. {duet_cli-0.2.14 → duet_cli-0.2.16}/README.md +47 -10
  3. {duet_cli-0.2.14 → duet_cli-0.2.16}/duet.py +1 -1
  4. {duet_cli-0.2.14 → duet_cli-0.2.16/duet_cli.egg-info}/PKG-INFO +48 -11
  5. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_duet.py +1 -1
  6. {duet_cli-0.2.14 → duet_cli-0.2.16}/LICENSE +0 -0
  7. {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/SOURCES.txt +0 -0
  8. {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/dependency_links.txt +0 -0
  9. {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/entry_points.txt +0 -0
  10. {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/requires.txt +0 -0
  11. {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/top_level.txt +0 -0
  12. {duet_cli-0.2.14 → duet_cli-0.2.16}/pyproject.toml +0 -0
  13. {duet_cli-0.2.14 → duet_cli-0.2.16}/setup.cfg +0 -0
  14. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_backend_metrics.py +0 -0
  15. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_bump_release_version.py +0 -0
  16. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_control_plane.py +0 -0
  17. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_feedback_concurrency.py +0 -0
  18. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_finding_reports.py +0 -0
  19. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_finding_workflow.py +0 -0
  20. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_cli.py +0 -0
  21. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_collection.py +0 -0
  22. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_lifecycle.py +0 -0
  23. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_reporting.py +0 -0
  24. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_no_subagents.py +0 -0
  25. {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_stop_control_plane.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: duet-cli
3
- Version: 0.2.14
3
+ Version: 0.2.16
4
4
  Summary: Two CLI agents in conversation. One Python file. Stdlib only.
5
5
  Author: Volkan Altan
6
6
  License-Expression: MIT
@@ -27,8 +27,10 @@ Duet runs two coding agents in alternating turns: one reviews or plans, the
27
27
  other implements or challenges the result. Each keeps its own conversation,
28
28
  and you get a saved transcript to inspect.
29
29
 
30
- Pair Claude and Codex, or use **two models through one CLI**. Gemini,
31
- Copilot, and OpenCode are also supported.
30
+ Run **two different models through a single agent harness (CLI)**, such as
31
+ Codex or OpenCode. You can also pair different CLIs, such as Claude Code and
32
+ Codex. Gemini and Copilot are also supported.
33
+ [See examples using one CLI](https://github.com/volkan/duet/blob/main/docs/USAGE.md#same-backend-peering).
32
34
 
33
35
  [![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
36
 
@@ -44,9 +46,11 @@ both the code and a test that had accepted the incorrect output.
44
46
 
45
47
  ## Quick start
46
48
 
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).
49
+ You need Python 3.9+ and at least one chosen agent CLI, installed and signed
50
+ in. See [Claude Code installation](https://code.claude.com/docs/en/quickstart)
51
+ or [Codex CLI installation](https://developers.openai.com/codex/cli#getting-started).
52
+ Duet uses two separate sessions, which may use the same CLI with different
53
+ models.
50
54
  **Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
51
55
  For the Claude + Codex pair, run this from a Git repository:
52
56
 
@@ -69,11 +73,36 @@ npx skills add volkan/duet --skill duet --global \
69
73
  Start a new session, then use `/duet` in Claude Code, `$duet` in Codex, or ask
70
74
  OpenCode to use the `duet` skill.
71
75
  [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).
76
+ cover `~/.agents/skills`, prerequisites, and alternative installers. See the
77
+ [OpenCode guide](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md)
78
+ for its native skill and optional command wrapper.
79
+
80
+ ## Native plugin installation
81
+
82
+ These optional native routes install the same shared Duet skill. Use one route
83
+ per host.
84
+
85
+ Codex, in a terminal:
86
+
87
+ ```bash
88
+ codex plugin marketplace add volkan/duet
89
+ codex plugin add duet@volkan-duet
90
+ ```
91
+
92
+ Start a new Codex session, then invoke `$duet`. See the [Codex installation
93
+ guide](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md#install-checklist)
94
+ for setup and marketplace recovery.
95
+
96
+ Claude Code, inside Claude Code:
97
+
98
+ ```text
99
+ /plugin marketplace add volkan/duet
100
+ /plugin install duet@volkan-duet
101
+ /reload-plugins
102
+ ```
103
+
104
+ Then invoke `/duet:duet`. See the [Claude Code installation
105
+ guide](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md).
77
106
 
78
107
  ## Upgrade
79
108
 
@@ -84,6 +113,14 @@ pipx upgrade duet-cli
84
113
  npx skills update duet --global
85
114
  ```
86
115
 
116
+ If pipx reports `already at latest version` despite a newer release on PyPI,
117
+ retry without pip's cache:
118
+
119
+ ```bash
120
+ pipx upgrade duet-cli --pip-args="--no-cache-dir"
121
+ duet --version
122
+ ```
123
+
87
124
  Start a new agent session afterward. For `uv`, `pip`, source checkouts, or
88
125
  native marketplace plugins, follow the
89
126
  [upgrade guide](https://github.com/volkan/duet/blob/main/docs/INSTALLATION.md#upgrade).
@@ -6,8 +6,10 @@ Duet runs two coding agents in alternating turns: one reviews or plans, the
6
6
  other implements or challenges the result. Each keeps its own conversation,
7
7
  and you get a saved transcript to inspect.
8
8
 
9
- Pair Claude and Codex, or use **two models through one CLI**. Gemini,
10
- Copilot, and OpenCode are also supported.
9
+ Run **two different models through a single agent harness (CLI)**, such as
10
+ Codex or OpenCode. You can also pair different CLIs, such as Claude Code and
11
+ Codex. Gemini and Copilot are also supported.
12
+ [See examples using one CLI](https://github.com/volkan/duet/blob/main/docs/USAGE.md#same-backend-peering).
11
13
 
12
14
  [![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
15
 
@@ -23,9 +25,11 @@ both the code and a test that had accepted the incorrect output.
23
25
 
24
26
  ## Quick start
25
27
 
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).
28
+ You need Python 3.9+ and at least one chosen agent CLI, installed and signed
29
+ in. See [Claude Code installation](https://code.claude.com/docs/en/quickstart)
30
+ or [Codex CLI installation](https://developers.openai.com/codex/cli#getting-started).
31
+ Duet uses two separate sessions, which may use the same CLI with different
32
+ models.
29
33
  **Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
30
34
  For the Claude + Codex pair, run this from a Git repository:
31
35
 
@@ -48,11 +52,36 @@ npx skills add volkan/duet --skill duet --global \
48
52
  Start a new session, then use `/duet` in Claude Code, `$duet` in Codex, or ask
49
53
  OpenCode to use the `duet` skill.
50
54
  [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).
55
+ cover `~/.agents/skills`, prerequisites, and alternative installers. See the
56
+ [OpenCode guide](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md)
57
+ for its native skill and optional command wrapper.
58
+
59
+ ## Native plugin installation
60
+
61
+ These optional native routes install the same shared Duet skill. Use one route
62
+ per host.
63
+
64
+ Codex, in a terminal:
65
+
66
+ ```bash
67
+ codex plugin marketplace add volkan/duet
68
+ codex plugin add duet@volkan-duet
69
+ ```
70
+
71
+ Start a new Codex session, then invoke `$duet`. See the [Codex installation
72
+ guide](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md#install-checklist)
73
+ for setup and marketplace recovery.
74
+
75
+ Claude Code, inside Claude Code:
76
+
77
+ ```text
78
+ /plugin marketplace add volkan/duet
79
+ /plugin install duet@volkan-duet
80
+ /reload-plugins
81
+ ```
82
+
83
+ Then invoke `/duet:duet`. See the [Claude Code installation
84
+ guide](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md).
56
85
 
57
86
  ## Upgrade
58
87
 
@@ -63,6 +92,14 @@ pipx upgrade duet-cli
63
92
  npx skills update duet --global
64
93
  ```
65
94
 
95
+ If pipx reports `already at latest version` despite a newer release on PyPI,
96
+ retry without pip's cache:
97
+
98
+ ```bash
99
+ pipx upgrade duet-cli --pip-args="--no-cache-dir"
100
+ duet --version
101
+ ```
102
+
66
103
  Start a new agent session afterward. For `uv`, `pip`, source checkouts, or
67
104
  native marketplace plugins, follow the
68
105
  [upgrade guide](https://github.com/volkan/duet/blob/main/docs/INSTALLATION.md#upgrade).
@@ -69,7 +69,7 @@ from typing import Callable, Iterable, Optional
69
69
 
70
70
  # ---------- defaults ----------
71
71
 
72
- __version__ = "0.2.14"
72
+ __version__ = "0.2.16"
73
73
 
74
74
  DEFAULT_SENTINEL = "<<<LGTM>>>"
75
75
  DEFAULT_SANDBOX = "workspace-write"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: duet-cli
3
- Version: 0.2.14
3
+ Version: 0.2.16
4
4
  Summary: Two CLI agents in conversation. One Python file. Stdlib only.
5
5
  Author: Volkan Altan
6
6
  License-Expression: MIT
@@ -27,8 +27,10 @@ Duet runs two coding agents in alternating turns: one reviews or plans, the
27
27
  other implements or challenges the result. Each keeps its own conversation,
28
28
  and you get a saved transcript to inspect.
29
29
 
30
- Pair Claude and Codex, or use **two models through one CLI**. Gemini,
31
- Copilot, and OpenCode are also supported.
30
+ Run **two different models through a single agent harness (CLI)**, such as
31
+ Codex or OpenCode. You can also pair different CLIs, such as Claude Code and
32
+ Codex. Gemini and Copilot are also supported.
33
+ [See examples using one CLI](https://github.com/volkan/duet/blob/main/docs/USAGE.md#same-backend-peering).
32
34
 
33
35
  [![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
36
 
@@ -44,9 +46,11 @@ both the code and a test that had accepted the incorrect output.
44
46
 
45
47
  ## Quick start
46
48
 
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).
49
+ You need Python 3.9+ and at least one chosen agent CLI, installed and signed
50
+ in. See [Claude Code installation](https://code.claude.com/docs/en/quickstart)
51
+ or [Codex CLI installation](https://developers.openai.com/codex/cli#getting-started).
52
+ Duet uses two separate sessions, which may use the same CLI with different
53
+ models.
50
54
  **Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
51
55
  For the Claude + Codex pair, run this from a Git repository:
52
56
 
@@ -69,11 +73,36 @@ npx skills add volkan/duet --skill duet --global \
69
73
  Start a new session, then use `/duet` in Claude Code, `$duet` in Codex, or ask
70
74
  OpenCode to use the `duet` skill.
71
75
  [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).
76
+ cover `~/.agents/skills`, prerequisites, and alternative installers. See the
77
+ [OpenCode guide](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md)
78
+ for its native skill and optional command wrapper.
79
+
80
+ ## Native plugin installation
81
+
82
+ These optional native routes install the same shared Duet skill. Use one route
83
+ per host.
84
+
85
+ Codex, in a terminal:
86
+
87
+ ```bash
88
+ codex plugin marketplace add volkan/duet
89
+ codex plugin add duet@volkan-duet
90
+ ```
91
+
92
+ Start a new Codex session, then invoke `$duet`. See the [Codex installation
93
+ guide](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md#install-checklist)
94
+ for setup and marketplace recovery.
95
+
96
+ Claude Code, inside Claude Code:
97
+
98
+ ```text
99
+ /plugin marketplace add volkan/duet
100
+ /plugin install duet@volkan-duet
101
+ /reload-plugins
102
+ ```
103
+
104
+ Then invoke `/duet:duet`. See the [Claude Code installation
105
+ guide](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md).
77
106
 
78
107
  ## Upgrade
79
108
 
@@ -84,6 +113,14 @@ pipx upgrade duet-cli
84
113
  npx skills update duet --global
85
114
  ```
86
115
 
116
+ If pipx reports `already at latest version` despite a newer release on PyPI,
117
+ retry without pip's cache:
118
+
119
+ ```bash
120
+ pipx upgrade duet-cli --pip-args="--no-cache-dir"
121
+ duet --version
122
+ ```
123
+
87
124
  Start a new agent session afterward. For `uv`, `pip`, source checkouts, or
88
125
  native marketplace plugins, follow the
89
126
  [upgrade guide](https://github.com/volkan/duet/blob/main/docs/INSTALLATION.md#upgrade).
@@ -9,7 +9,7 @@ status fallbacks. They are pure-function tests — no subprocesses, no filesyste
9
9
  writes, no agent CLIs.
10
10
 
11
11
  Run via:
12
- python3 -m unittest discover -s tests
12
+ DUET_METRICS=0 python3 -m unittest discover -s tests
13
13
  or (alongside the smoke suite):
14
14
  make test
15
15
  """
File without changes
File without changes
File without changes