tagteam 0.3.0__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 (88) hide show
  1. tagteam-0.3.0/MANIFEST.in +3 -0
  2. tagteam-0.3.0/PKG-INFO +178 -0
  3. tagteam-0.3.0/README.md +156 -0
  4. tagteam-0.3.0/pyproject.toml +56 -0
  5. tagteam-0.3.0/setup.cfg +4 -0
  6. tagteam-0.3.0/tagteam/__init__.py +13 -0
  7. tagteam-0.3.0/tagteam/__main__.py +6 -0
  8. tagteam-0.3.0/tagteam/cli.py +418 -0
  9. tagteam-0.3.0/tagteam/config.py +185 -0
  10. tagteam-0.3.0/tagteam/cycle.py +607 -0
  11. tagteam-0.3.0/tagteam/data/.claude/skills/handoff/SKILL.md +153 -0
  12. tagteam-0.3.0/tagteam/data/checklists/code_review.md +43 -0
  13. tagteam-0.3.0/tagteam/data/checklists/plan_review.md +34 -0
  14. tagteam-0.3.0/tagteam/data/templates/cycle.md +32 -0
  15. tagteam-0.3.0/tagteam/data/templates/decision_log.md +26 -0
  16. tagteam-0.3.0/tagteam/data/templates/feedback.md +42 -0
  17. tagteam-0.3.0/tagteam/data/templates/handoff_impl.md +36 -0
  18. tagteam-0.3.0/tagteam/data/templates/handoff_plan.md +37 -0
  19. tagteam-0.3.0/tagteam/data/templates/implementation_log.md +23 -0
  20. tagteam-0.3.0/tagteam/data/templates/phase_plan.md +44 -0
  21. tagteam-0.3.0/tagteam/data/templates/requirements_brief.md +24 -0
  22. tagteam-0.3.0/tagteam/data/templates/roadmap.md +39 -0
  23. tagteam-0.3.0/tagteam/data/templates/sync_state.md +33 -0
  24. tagteam-0.3.0/tagteam/data/web/app.js +1177 -0
  25. tagteam-0.3.0/tagteam/data/web/conversation.js +669 -0
  26. tagteam-0.3.0/tagteam/data/web/index.html +179 -0
  27. tagteam-0.3.0/tagteam/data/web/sprites.js +379 -0
  28. tagteam-0.3.0/tagteam/data/web/styles.css +840 -0
  29. tagteam-0.3.0/tagteam/data/workflows.md +219 -0
  30. tagteam-0.3.0/tagteam/iterm.py +417 -0
  31. tagteam-0.3.0/tagteam/migrate.py +115 -0
  32. tagteam-0.3.0/tagteam/parser.py +240 -0
  33. tagteam-0.3.0/tagteam/registry.py +62 -0
  34. tagteam-0.3.0/tagteam/roadmap.py +184 -0
  35. tagteam-0.3.0/tagteam/server.py +540 -0
  36. tagteam-0.3.0/tagteam/session.py +418 -0
  37. tagteam-0.3.0/tagteam/setup.py +226 -0
  38. tagteam-0.3.0/tagteam/state.py +597 -0
  39. tagteam-0.3.0/tagteam/templates.py +42 -0
  40. tagteam-0.3.0/tagteam/tui/__init__.py +52 -0
  41. tagteam-0.3.0/tagteam/tui/__main__.py +8 -0
  42. tagteam-0.3.0/tagteam/tui/app.py +513 -0
  43. tagteam-0.3.0/tagteam/tui/art/__init__.py +1 -0
  44. tagteam-0.3.0/tagteam/tui/art/clock.py +16 -0
  45. tagteam-0.3.0/tagteam/tui/art/mayor.py +36 -0
  46. tagteam-0.3.0/tagteam/tui/art/rabbit.py +33 -0
  47. tagteam-0.3.0/tagteam/tui/art/saloon.py +61 -0
  48. tagteam-0.3.0/tagteam/tui/characters.py +34 -0
  49. tagteam-0.3.0/tagteam/tui/clock_widget.py +98 -0
  50. tagteam-0.3.0/tagteam/tui/conversation.py +96 -0
  51. tagteam-0.3.0/tagteam/tui/conversations/__init__.py +1 -0
  52. tagteam-0.3.0/tagteam/tui/conversations/intro.py +206 -0
  53. tagteam-0.3.0/tagteam/tui/conversations/transitions.py +86 -0
  54. tagteam-0.3.0/tagteam/tui/dialogue.py +322 -0
  55. tagteam-0.3.0/tagteam/tui/handoff_reader.py +69 -0
  56. tagteam-0.3.0/tagteam/tui/map_data.py +216 -0
  57. tagteam-0.3.0/tagteam/tui/map_widget.py +142 -0
  58. tagteam-0.3.0/tagteam/tui/review_dialogue.py +192 -0
  59. tagteam-0.3.0/tagteam/tui/review_replay.py +89 -0
  60. tagteam-0.3.0/tagteam/tui/scene.py +212 -0
  61. tagteam-0.3.0/tagteam/tui/sound.py +40 -0
  62. tagteam-0.3.0/tagteam/tui/sounds/bell.wav +0 -0
  63. tagteam-0.3.0/tagteam/tui/sounds/chime.wav +0 -0
  64. tagteam-0.3.0/tagteam/tui/sounds/coo.wav +0 -0
  65. tagteam-0.3.0/tagteam/tui/sounds/stamp.wav +0 -0
  66. tagteam-0.3.0/tagteam/tui/sounds/tick.wav +0 -0
  67. tagteam-0.3.0/tagteam/tui/state_watcher.py +116 -0
  68. tagteam-0.3.0/tagteam/tui/status_bar.py +90 -0
  69. tagteam-0.3.0/tagteam/watcher.py +762 -0
  70. tagteam-0.3.0/tagteam.egg-info/PKG-INFO +178 -0
  71. tagteam-0.3.0/tagteam.egg-info/SOURCES.txt +86 -0
  72. tagteam-0.3.0/tagteam.egg-info/dependency_links.txt +1 -0
  73. tagteam-0.3.0/tagteam.egg-info/entry_points.txt +3 -0
  74. tagteam-0.3.0/tagteam.egg-info/requires.txt +4 -0
  75. tagteam-0.3.0/tagteam.egg-info/top_level.txt +1 -0
  76. tagteam-0.3.0/tests/test_config.py +354 -0
  77. tagteam-0.3.0/tests/test_cycle.py +537 -0
  78. tagteam-0.3.0/tests/test_iterm.py +363 -0
  79. tagteam-0.3.0/tests/test_migrate.py +80 -0
  80. tagteam-0.3.0/tests/test_parser.py +342 -0
  81. tagteam-0.3.0/tests/test_quickstart.py +421 -0
  82. tagteam-0.3.0/tests/test_registry.py +107 -0
  83. tagteam-0.3.0/tests/test_review_dialogue.py +76 -0
  84. tagteam-0.3.0/tests/test_roadmap.py +455 -0
  85. tagteam-0.3.0/tests/test_server_validation.py +59 -0
  86. tagteam-0.3.0/tests/test_state_diagnose.py +277 -0
  87. tagteam-0.3.0/tests/test_state_watcher.py +158 -0
  88. tagteam-0.3.0/tests/test_templates.py +121 -0
@@ -0,0 +1,3 @@
1
+ recursive-include tagteam/data *.md
2
+ recursive-include tagteam/data/web *.html *.css *.js *.svg
3
+ recursive-include tagteam/tui/sounds *.wav
tagteam-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,178 @@
1
+ Metadata-Version: 2.4
2
+ Name: tagteam
3
+ Version: 0.3.0
4
+ Summary: A collaboration framework for structured AI-to-AI handoffs with human oversight
5
+ License: MIT
6
+ Project-URL: Homepage, https://github.com/jblacketter/tagteam
7
+ Project-URL: Documentation, https://github.com/jblacketter/tagteam#readme
8
+ Project-URL: Repository, https://github.com/jblacketter/tagteam
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ Requires-Dist: pyyaml>=6.0
20
+ Provides-Extra: tui
21
+ Requires-Dist: textual>=1.0.0; extra == "tui"
22
+
23
+ # Tagteam
24
+
25
+ A collaboration framework for structured AI-to-AI handoffs with human oversight. One AI leads, another reviews, and you arbitrate — the whole cycle runs phase by phase from a roadmap.
26
+
27
+ ## How it works
28
+
29
+ - **Lead** (one AI agent) plans each phase and implements the approved plan.
30
+ - **Reviewer** (a second AI agent) reviews both the plan and the implementation.
31
+ - **Arbiter** (you, the human) breaks ties and approves phases.
32
+
33
+ Work progresses phase by phase. Each phase is listed in `docs/roadmap.md` and goes through two review cycles: plan, then implementation. If the two agents can't make progress in 10 rounds, control escalates to the human arbiter.
34
+
35
+ State is tracked in `handoff-state.json` (current turn) and `docs/handoffs/<phase>_<type>_rounds.jsonl` + `_status.json` (per-cycle rounds). Either agent can pick up where the other left off at any time.
36
+
37
+ ## Quick Start
38
+
39
+ ```bash
40
+ pip install git+https://github.com/jblacketter/tagteam.git
41
+ cd ~/projects/myproject
42
+ tagteam quickstart
43
+ ```
44
+
45
+ You'll be prompted for your two agent names, then quickstart sets up the workspace and starts a handoff session. It auto-detects the best terminal backend available on your machine:
46
+
47
+ - **iTerm2** (macOS, default when iTerm2 is installed) — opens three labeled tabs in a single window, auto-launching iTerm2 if it isn't already running.
48
+ - **tmux** (Linux, WSL, or macOS without iTerm2) — creates one `tmux` session with three labeled panes.
49
+ - **manual** (anywhere else, including Windows without WSL) — prints the three commands for you to run in terminals you open yourself.
50
+
51
+ When quickstart finishes it prints what to paste into the Lead and Reviewer agents to kick off the first handoff. Override the auto-detection with `--backend iterm2|tmux|manual` if you need a specific one.
52
+
53
+ ## Running a handoff
54
+
55
+ **Single phase** — start a plan review, let the watcher handle the back-and-forth, and stop when the phase completes.
56
+
57
+ ```text
58
+ /handoff start my-phase
59
+ ```
60
+
61
+ **Full roadmap** — run all incomplete phases end-to-end.
62
+
63
+ ```text
64
+ /handoff start --roadmap
65
+ /handoff start --roadmap api-gateway
66
+ ```
67
+
68
+ | Command | Purpose | Who |
69
+ | ------------------------------- | ----------------------------------------------- | ---- |
70
+ | `/handoff` | Auto-detects role + state, does the right thing | Both |
71
+ | `/handoff start [phase]` | Begin a new phase (plan + review cycle) | Lead |
72
+ | `/handoff start [phase] impl` | Begin implementation review for a phase | Lead |
73
+ | `/handoff status` | Orientation, status check, drift reset | Both |
74
+
75
+ **Human-in-the-loop** — add `--confirm` to pause for approval before each automatic send.
76
+
77
+ ```bash
78
+ tagteam watch --mode notify --confirm
79
+ ```
80
+
81
+ ## Other platforms
82
+
83
+ <details>
84
+ <summary>tmux (explicit invocation)</summary>
85
+
86
+ ```bash
87
+ tagteam quickstart --backend tmux
88
+ ```
89
+
90
+ Creates one `tmux` session named `tagteam` with three labeled panes (Lead, Watcher, Reviewer). Attach later with `tmux attach -t tagteam`.
91
+
92
+ </details>
93
+
94
+ <details>
95
+ <summary>Windows / manual fallback</summary>
96
+
97
+ On Windows without WSL, terminal automation isn't available. Quickstart prints the commands for you to run yourself in three terminals:
98
+
99
+ ```bash
100
+ tagteam quickstart --backend manual
101
+ ```
102
+
103
+ You can also run each step individually:
104
+
105
+ ```bash
106
+ tagteam setup
107
+ tagteam init
108
+ tagteam session start --backend manual
109
+ tagteam watch --mode notify
110
+ ```
111
+
112
+ For full automation on Windows today, use WSL with `tmux`.
113
+
114
+ </details>
115
+
116
+ <details>
117
+ <summary>Advanced setup (run each step yourself)</summary>
118
+
119
+ ```bash
120
+ tagteam setup # copy skills, templates, docs
121
+ tagteam init # interactive agent config → tagteam.yaml
122
+ tagteam session start # create terminals and auto-launch agents
123
+ ```
124
+
125
+ Options:
126
+
127
+ - `tagteam session start --no-launch` — create terminals but don't start agents
128
+ - `tagteam session start --backend <name>` — force a specific backend
129
+ - `tagteam session kill` — close the current session
130
+
131
+ > **Manual mode:** you can always run handoffs without any automation by pasting `/handoff` output between agents yourself.
132
+
133
+ </details>
134
+
135
+ ## The Saloon
136
+
137
+ A graphical dashboard for monitoring and controlling handoff cycles:
138
+
139
+ ```bash
140
+ tagteam serve --dir ~/projects/myproject
141
+ ```
142
+
143
+ ## Configuration
144
+
145
+ Agents are defined in `tagteam.yaml`:
146
+
147
+ ```yaml
148
+ agents:
149
+ lead:
150
+ name: claude
151
+ command: claude
152
+ reviewer:
153
+ name: codex
154
+ command: codex
155
+ ```
156
+
157
+ ## CLI Reference
158
+
159
+ ```bash
160
+ tagteam quickstart # Setup + init + session start
161
+ tagteam session start # Auto-detect backend, launch agents
162
+ tagteam session start --backend manual # Force manual backend
163
+ tagteam session start --no-launch # Create terminals, skip agent launch
164
+ tagteam session kill
165
+ tagteam init
166
+ tagteam setup
167
+ tagteam state
168
+ tagteam state diagnose
169
+ tagteam watch --mode notify
170
+ tagteam roadmap phases
171
+ tagteam serve --dir .
172
+ tagteam upgrade
173
+ tagteam --help
174
+ ```
175
+
176
+ ## License
177
+
178
+ MIT
@@ -0,0 +1,156 @@
1
+ # Tagteam
2
+
3
+ A collaboration framework for structured AI-to-AI handoffs with human oversight. One AI leads, another reviews, and you arbitrate — the whole cycle runs phase by phase from a roadmap.
4
+
5
+ ## How it works
6
+
7
+ - **Lead** (one AI agent) plans each phase and implements the approved plan.
8
+ - **Reviewer** (a second AI agent) reviews both the plan and the implementation.
9
+ - **Arbiter** (you, the human) breaks ties and approves phases.
10
+
11
+ Work progresses phase by phase. Each phase is listed in `docs/roadmap.md` and goes through two review cycles: plan, then implementation. If the two agents can't make progress in 10 rounds, control escalates to the human arbiter.
12
+
13
+ State is tracked in `handoff-state.json` (current turn) and `docs/handoffs/<phase>_<type>_rounds.jsonl` + `_status.json` (per-cycle rounds). Either agent can pick up where the other left off at any time.
14
+
15
+ ## Quick Start
16
+
17
+ ```bash
18
+ pip install git+https://github.com/jblacketter/tagteam.git
19
+ cd ~/projects/myproject
20
+ tagteam quickstart
21
+ ```
22
+
23
+ You'll be prompted for your two agent names, then quickstart sets up the workspace and starts a handoff session. It auto-detects the best terminal backend available on your machine:
24
+
25
+ - **iTerm2** (macOS, default when iTerm2 is installed) — opens three labeled tabs in a single window, auto-launching iTerm2 if it isn't already running.
26
+ - **tmux** (Linux, WSL, or macOS without iTerm2) — creates one `tmux` session with three labeled panes.
27
+ - **manual** (anywhere else, including Windows without WSL) — prints the three commands for you to run in terminals you open yourself.
28
+
29
+ When quickstart finishes it prints what to paste into the Lead and Reviewer agents to kick off the first handoff. Override the auto-detection with `--backend iterm2|tmux|manual` if you need a specific one.
30
+
31
+ ## Running a handoff
32
+
33
+ **Single phase** — start a plan review, let the watcher handle the back-and-forth, and stop when the phase completes.
34
+
35
+ ```text
36
+ /handoff start my-phase
37
+ ```
38
+
39
+ **Full roadmap** — run all incomplete phases end-to-end.
40
+
41
+ ```text
42
+ /handoff start --roadmap
43
+ /handoff start --roadmap api-gateway
44
+ ```
45
+
46
+ | Command | Purpose | Who |
47
+ | ------------------------------- | ----------------------------------------------- | ---- |
48
+ | `/handoff` | Auto-detects role + state, does the right thing | Both |
49
+ | `/handoff start [phase]` | Begin a new phase (plan + review cycle) | Lead |
50
+ | `/handoff start [phase] impl` | Begin implementation review for a phase | Lead |
51
+ | `/handoff status` | Orientation, status check, drift reset | Both |
52
+
53
+ **Human-in-the-loop** — add `--confirm` to pause for approval before each automatic send.
54
+
55
+ ```bash
56
+ tagteam watch --mode notify --confirm
57
+ ```
58
+
59
+ ## Other platforms
60
+
61
+ <details>
62
+ <summary>tmux (explicit invocation)</summary>
63
+
64
+ ```bash
65
+ tagteam quickstart --backend tmux
66
+ ```
67
+
68
+ Creates one `tmux` session named `tagteam` with three labeled panes (Lead, Watcher, Reviewer). Attach later with `tmux attach -t tagteam`.
69
+
70
+ </details>
71
+
72
+ <details>
73
+ <summary>Windows / manual fallback</summary>
74
+
75
+ On Windows without WSL, terminal automation isn't available. Quickstart prints the commands for you to run yourself in three terminals:
76
+
77
+ ```bash
78
+ tagteam quickstart --backend manual
79
+ ```
80
+
81
+ You can also run each step individually:
82
+
83
+ ```bash
84
+ tagteam setup
85
+ tagteam init
86
+ tagteam session start --backend manual
87
+ tagteam watch --mode notify
88
+ ```
89
+
90
+ For full automation on Windows today, use WSL with `tmux`.
91
+
92
+ </details>
93
+
94
+ <details>
95
+ <summary>Advanced setup (run each step yourself)</summary>
96
+
97
+ ```bash
98
+ tagteam setup # copy skills, templates, docs
99
+ tagteam init # interactive agent config → tagteam.yaml
100
+ tagteam session start # create terminals and auto-launch agents
101
+ ```
102
+
103
+ Options:
104
+
105
+ - `tagteam session start --no-launch` — create terminals but don't start agents
106
+ - `tagteam session start --backend <name>` — force a specific backend
107
+ - `tagteam session kill` — close the current session
108
+
109
+ > **Manual mode:** you can always run handoffs without any automation by pasting `/handoff` output between agents yourself.
110
+
111
+ </details>
112
+
113
+ ## The Saloon
114
+
115
+ A graphical dashboard for monitoring and controlling handoff cycles:
116
+
117
+ ```bash
118
+ tagteam serve --dir ~/projects/myproject
119
+ ```
120
+
121
+ ## Configuration
122
+
123
+ Agents are defined in `tagteam.yaml`:
124
+
125
+ ```yaml
126
+ agents:
127
+ lead:
128
+ name: claude
129
+ command: claude
130
+ reviewer:
131
+ name: codex
132
+ command: codex
133
+ ```
134
+
135
+ ## CLI Reference
136
+
137
+ ```bash
138
+ tagteam quickstart # Setup + init + session start
139
+ tagteam session start # Auto-detect backend, launch agents
140
+ tagteam session start --backend manual # Force manual backend
141
+ tagteam session start --no-launch # Create terminals, skip agent launch
142
+ tagteam session kill
143
+ tagteam init
144
+ tagteam setup
145
+ tagteam state
146
+ tagteam state diagnose
147
+ tagteam watch --mode notify
148
+ tagteam roadmap phases
149
+ tagteam serve --dir .
150
+ tagteam upgrade
151
+ tagteam --help
152
+ ```
153
+
154
+ ## License
155
+
156
+ MIT
@@ -0,0 +1,56 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "tagteam"
7
+ version = "0.3.0"
8
+ description = "A collaboration framework for structured AI-to-AI handoffs with human oversight"
9
+ readme = "README.md"
10
+ license = {text = "MIT"}
11
+ requires-python = ">=3.10"
12
+ dependencies = [
13
+ "pyyaml>=6.0",
14
+ ]
15
+ classifiers = [
16
+ "Development Status :: 3 - Alpha",
17
+ "Intended Audience :: Developers",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.10",
21
+ "Programming Language :: Python :: 3.11",
22
+ "Programming Language :: Python :: 3.12",
23
+ "Programming Language :: Python :: 3.13",
24
+ ]
25
+
26
+ [project.optional-dependencies]
27
+ tui = ["textual>=1.0.0"]
28
+
29
+ [project.scripts]
30
+ tagteam = "tagteam.cli:main"
31
+ tagteam-setup = "tagteam.setup:cli"
32
+
33
+ [project.urls]
34
+ Homepage = "https://github.com/jblacketter/tagteam"
35
+ Documentation = "https://github.com/jblacketter/tagteam#readme"
36
+ Repository = "https://github.com/jblacketter/tagteam"
37
+
38
+ [tool.pytest.ini_options]
39
+ testpaths = ["tests"]
40
+
41
+ [tool.setuptools]
42
+ packages = ["tagteam", "tagteam.tui", "tagteam.tui.art", "tagteam.tui.conversations"]
43
+ include-package-data = true
44
+
45
+ [tool.setuptools.package-data]
46
+ tagteam = [
47
+ "data/.claude/skills/*.md",
48
+ "data/.claude/skills/**/*.md",
49
+ "data/templates/*.md",
50
+ "data/checklists/*.md",
51
+ "data/*.md",
52
+ "data/web/*.html",
53
+ "data/web/*.css",
54
+ "data/web/*.js",
55
+ "tui/sounds/*.wav",
56
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,13 @@
1
+ """
2
+ Tagteam
3
+
4
+ A collaboration framework for structured AI-to-AI handoffs with human oversight.
5
+ Configure your lead and reviewer agents via tagteam.yaml.
6
+ """
7
+
8
+ from importlib.metadata import PackageNotFoundError, version as _pkg_version
9
+
10
+ try:
11
+ __version__ = _pkg_version("tagteam")
12
+ except PackageNotFoundError:
13
+ __version__ = "0.0.0+unknown"
@@ -0,0 +1,6 @@
1
+ """CLI entrypoint for python -m tagteam"""
2
+ import sys
3
+ from tagteam.cli import main
4
+
5
+ if __name__ == "__main__":
6
+ sys.exit(main())