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.
- {duet_cli-0.2.14/duet_cli.egg-info → duet_cli-0.2.16}/PKG-INFO +48 -11
- {duet_cli-0.2.14 → duet_cli-0.2.16}/README.md +47 -10
- {duet_cli-0.2.14 → duet_cli-0.2.16}/duet.py +1 -1
- {duet_cli-0.2.14 → duet_cli-0.2.16/duet_cli.egg-info}/PKG-INFO +48 -11
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_duet.py +1 -1
- {duet_cli-0.2.14 → duet_cli-0.2.16}/LICENSE +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/SOURCES.txt +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/dependency_links.txt +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/entry_points.txt +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/requires.txt +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/duet_cli.egg-info/top_level.txt +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/pyproject.toml +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/setup.cfg +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_backend_metrics.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_bump_release_version.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_control_plane.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_feedback_concurrency.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_finding_reports.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_finding_workflow.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_cli.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_collection.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_lifecycle.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_metrics_reporting.py +0 -0
- {duet_cli-0.2.14 → duet_cli-0.2.16}/tests/test_no_subagents.py +0 -0
- {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.
|
|
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
|
-
|
|
31
|
-
|
|
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
|
[](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
|
|
48
|
-
[
|
|
49
|
-
[
|
|
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.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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
|
[](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
|
|
27
|
-
[
|
|
28
|
-
[
|
|
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.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: duet-cli
|
|
3
|
-
Version: 0.2.
|
|
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
|
-
|
|
31
|
-
|
|
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
|
[](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
|
|
48
|
-
[
|
|
49
|
-
[
|
|
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.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|