duet-cli 0.2.13__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.
- {duet_cli-0.2.13/duet_cli.egg-info → duet_cli-0.2.14}/PKG-INFO +30 -3
- {duet_cli-0.2.13 → duet_cli-0.2.14}/README.md +29 -2
- {duet_cli-0.2.13 → duet_cli-0.2.14}/duet.py +1 -1
- {duet_cli-0.2.13 → duet_cli-0.2.14/duet_cli.egg-info}/PKG-INFO +30 -3
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_bump_release_version.py +3 -3
- {duet_cli-0.2.13 → duet_cli-0.2.14}/LICENSE +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/SOURCES.txt +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/dependency_links.txt +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/entry_points.txt +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/requires.txt +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/top_level.txt +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/pyproject.toml +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/setup.cfg +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_backend_metrics.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_control_plane.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_duet.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_feedback_concurrency.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_finding_reports.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_finding_workflow.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_cli.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_collection.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_lifecycle.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_reporting.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_no_subagents.py +0 -0
- {duet_cli-0.2.13 → duet_cli-0.2.14}/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.14
|
|
4
4
|
Summary: Two CLI agents in conversation. One Python file. Stdlib only.
|
|
5
5
|
Author: Volkan Altan
|
|
6
6
|
License-Expression: MIT
|
|
@@ -44,7 +44,9 @@ both the code and a test that had accepted the incorrect output.
|
|
|
44
44
|
|
|
45
45
|
## Quick start
|
|
46
46
|
|
|
47
|
-
You need Python 3.9+ and the CLIs for your chosen pair, installed and signed in
|
|
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).
|
|
48
50
|
**Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
|
|
49
51
|
For the Claude + Codex pair, run this from a Git repository:
|
|
50
52
|
|
|
@@ -56,11 +58,36 @@ duet --recipe review
|
|
|
56
58
|
This starts a review and fix loop with the coder in a separate Git worktree.
|
|
57
59
|
Inspect the changes before merging; agent agreement does not prove correctness.
|
|
58
60
|
|
|
59
|
-
Already working inside an agent?
|
|
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:
|
|
60
74
|
[Claude Code](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md),
|
|
61
75
|
[Codex](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md), or
|
|
62
76
|
[OpenCode](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md).
|
|
63
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
|
+
|
|
64
91
|
## Go further
|
|
65
92
|
|
|
66
93
|
- [Installation, recipes, and CLI reference](https://github.com/volkan/duet/blob/main/docs/USAGE.md)
|
|
@@ -23,7 +23,9 @@ both the code and a test that had accepted the incorrect output.
|
|
|
23
23
|
|
|
24
24
|
## Quick start
|
|
25
25
|
|
|
26
|
-
You need Python 3.9+ and the CLIs for your chosen pair, installed and signed in
|
|
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).
|
|
27
29
|
**Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
|
|
28
30
|
For the Claude + Codex pair, run this from a Git repository:
|
|
29
31
|
|
|
@@ -35,11 +37,36 @@ duet --recipe review
|
|
|
35
37
|
This starts a review and fix loop with the coder in a separate Git worktree.
|
|
36
38
|
Inspect the changes before merging; agent agreement does not prove correctness.
|
|
37
39
|
|
|
38
|
-
Already working inside an agent?
|
|
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:
|
|
39
53
|
[Claude Code](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md),
|
|
40
54
|
[Codex](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md), or
|
|
41
55
|
[OpenCode](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md).
|
|
42
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
|
+
|
|
43
70
|
## Go further
|
|
44
71
|
|
|
45
72
|
- [Installation, recipes, and CLI reference](https://github.com/volkan/duet/blob/main/docs/USAGE.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: duet-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.14
|
|
4
4
|
Summary: Two CLI agents in conversation. One Python file. Stdlib only.
|
|
5
5
|
Author: Volkan Altan
|
|
6
6
|
License-Expression: MIT
|
|
@@ -44,7 +44,9 @@ both the code and a test that had accepted the incorrect output.
|
|
|
44
44
|
|
|
45
45
|
## Quick start
|
|
46
46
|
|
|
47
|
-
You need Python 3.9+ and the CLIs for your chosen pair, installed and signed in
|
|
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).
|
|
48
50
|
**Only have Codex?** [Run two Codex models](https://github.com/volkan/duet/blob/main/docs/USAGE.md#codex-only-review).
|
|
49
51
|
For the Claude + Codex pair, run this from a Git repository:
|
|
50
52
|
|
|
@@ -56,11 +58,36 @@ duet --recipe review
|
|
|
56
58
|
This starts a review and fix loop with the coder in a separate Git worktree.
|
|
57
59
|
Inspect the changes before merging; agent agreement does not prove correctness.
|
|
58
60
|
|
|
59
|
-
Already working inside an agent?
|
|
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:
|
|
60
74
|
[Claude Code](https://github.com/volkan/duet/blob/main/docs/CLAUDE_CODE_PLUGIN.md),
|
|
61
75
|
[Codex](https://github.com/volkan/duet/blob/main/docs/CODEX_PLUGIN.md), or
|
|
62
76
|
[OpenCode](https://github.com/volkan/duet/blob/main/docs/OPENCODE_PLUGIN.md).
|
|
63
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
|
+
|
|
64
91
|
## Go further
|
|
65
92
|
|
|
66
93
|
- [Installation, recipes, and CLI reference](https://github.com/volkan/duet/blob/main/docs/USAGE.md)
|
|
@@ -26,7 +26,7 @@ CODEX_PLUGIN = {"name": "duet", "version": "0.2.1", "skills": "./skills/"}
|
|
|
26
26
|
|
|
27
27
|
def _make_repo(tmp: Path) -> None:
|
|
28
28
|
(tmp / "duet.py").write_text(DUET_SOURCE, encoding="utf-8")
|
|
29
|
-
claude = tmp / "plugins" / "duet
|
|
29
|
+
claude = tmp / "plugins" / "duet" / ".claude-plugin"
|
|
30
30
|
codex = tmp / "plugins" / "duet" / ".codex-plugin"
|
|
31
31
|
claude.mkdir(parents=True)
|
|
32
32
|
codex.mkdir(parents=True)
|
|
@@ -56,7 +56,7 @@ class TestBump(unittest.TestCase):
|
|
|
56
56
|
|
|
57
57
|
def _versions(self):
|
|
58
58
|
runtime = brv.read_current_version((self.root / "duet.py").read_text())
|
|
59
|
-
cl = json.loads((self.root / "plugins/duet
|
|
59
|
+
cl = json.loads((self.root / "plugins/duet/.claude-plugin/plugin.json").read_text())
|
|
60
60
|
cx = json.loads((self.root / "plugins/duet/.codex-plugin/plugin.json").read_text())
|
|
61
61
|
return runtime, cl["version"], cx["version"]
|
|
62
62
|
|
|
@@ -70,7 +70,7 @@ class TestBump(unittest.TestCase):
|
|
|
70
70
|
|
|
71
71
|
def test_bump_preserves_source_and_json_structure(self):
|
|
72
72
|
brv.bump(self.root, "0.2.2")
|
|
73
|
-
cl = json.loads((self.root / "plugins/duet
|
|
73
|
+
cl = json.loads((self.root / "plugins/duet/.claude-plugin/plugin.json").read_text())
|
|
74
74
|
self.assertEqual(cl["name"], "duet")
|
|
75
75
|
self.assertEqual(cl["author"], {"name": "Volkan Altan"})
|
|
76
76
|
source = (self.root / "duet.py").read_text()
|
|
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
|