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.
Files changed (25) hide show
  1. {duet_cli-0.2.13/duet_cli.egg-info → duet_cli-0.2.14}/PKG-INFO +30 -3
  2. {duet_cli-0.2.13 → duet_cli-0.2.14}/README.md +29 -2
  3. {duet_cli-0.2.13 → duet_cli-0.2.14}/duet.py +1 -1
  4. {duet_cli-0.2.13 → duet_cli-0.2.14/duet_cli.egg-info}/PKG-INFO +30 -3
  5. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_bump_release_version.py +3 -3
  6. {duet_cli-0.2.13 → duet_cli-0.2.14}/LICENSE +0 -0
  7. {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/SOURCES.txt +0 -0
  8. {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/dependency_links.txt +0 -0
  9. {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/entry_points.txt +0 -0
  10. {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/requires.txt +0 -0
  11. {duet_cli-0.2.13 → duet_cli-0.2.14}/duet_cli.egg-info/top_level.txt +0 -0
  12. {duet_cli-0.2.13 → duet_cli-0.2.14}/pyproject.toml +0 -0
  13. {duet_cli-0.2.13 → duet_cli-0.2.14}/setup.cfg +0 -0
  14. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_backend_metrics.py +0 -0
  15. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_control_plane.py +0 -0
  16. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_duet.py +0 -0
  17. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_feedback_concurrency.py +0 -0
  18. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_finding_reports.py +0 -0
  19. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_finding_workflow.py +0 -0
  20. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_cli.py +0 -0
  21. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_collection.py +0 -0
  22. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_lifecycle.py +0 -0
  23. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_metrics_reporting.py +0 -0
  24. {duet_cli-0.2.13 → duet_cli-0.2.14}/tests/test_no_subagents.py +0 -0
  25. {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.13
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? Follow the plugin guide for
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? Follow the plugin guide for
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)
@@ -69,7 +69,7 @@ from typing import Callable, Iterable, Optional
69
69
 
70
70
  # ---------- defaults ----------
71
71
 
72
- __version__ = "0.2.13"
72
+ __version__ = "0.2.14"
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.13
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? Follow the plugin guide for
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-claude" / ".claude-plugin"
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-claude/.claude-plugin/plugin.json").read_text())
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-claude/.claude-plugin/plugin.json").read_text())
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