tag-agent 0.1.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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 TAG
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ include README.md
2
+ include LICENSE
3
+ include TODO.md
4
+ include pyproject.toml
5
+ recursive-include src/tag/assets *.yaml
6
+ recursive-include src/tag/config *.yaml
7
+ recursive-include src/tag/docs *.md
8
+ recursive-include src/tag/patches *.patch
9
+ recursive-include src/tag/vendor *.tar.gz
@@ -0,0 +1,229 @@
1
+ Metadata-Version: 2.4
2
+ Name: tag-agent
3
+ Version: 0.1.0
4
+ Summary: TAG: a Hermes-based orchestration layer with patched TUI, profile routing, and OpenRouter/Codex workflows.
5
+ Author: TAG
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/sanskarpan/tag-agent
8
+ Project-URL: Repository, https://github.com/sanskarpan/tag-agent.git
9
+ Project-URL: Issues, https://github.com/sanskarpan/tag-agent/issues
10
+ Keywords: agents,cli,codex,hermes,openrouter,orchestration,tui
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development
20
+ Classifier: Topic :: Terminals
21
+ Requires-Python: <3.14,>=3.11
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: PyYAML>=6.0
25
+ Provides-Extra: dev
26
+ Requires-Dist: build>=1.2.2; extra == "dev"
27
+ Requires-Dist: pytest>=8.0; extra == "dev"
28
+ Requires-Dist: twine>=6.1.0; extra == "dev"
29
+ Dynamic: license-file
30
+
31
+ # TAG
32
+
33
+ TAG is a standalone orchestration layer on top of Hermes. It packages the work
34
+ done in this workspace into one installable CLI with:
35
+
36
+ - a bundled Hermes source snapshot for first-run provisioning
37
+ - managed Hermes bootstrap
38
+ - shipped Hermes TUI patching
39
+ - a custom `tag-control` skin
40
+ - profile-based master/worker orchestration
41
+ - OpenRouter worker routing
42
+ - Codex import and runtime support
43
+ - direct execution, Kanban execution, and benchmark history
44
+
45
+ ## Install
46
+
47
+ ```bash
48
+ pip install tag-agent
49
+ ```
50
+
51
+ This installs the `tag` command.
52
+
53
+ For npm:
54
+
55
+ ```bash
56
+ npm install -g tag-agent
57
+ ```
58
+
59
+ For pnpm:
60
+
61
+ ```bash
62
+ pnpm add -g tag-agent
63
+ ```
64
+
65
+ The npm package installs a thin Node launcher for `tag`. On first run it
66
+ creates an isolated Python runtime under `~/.tag/npm-runtime/<version>`,
67
+ installs the bundled TAG Python package there, and then executes the same TAG
68
+ CLI. That means the npm path still requires Python `>=3.11` and `<3.14` on
69
+ `PATH`. The launcher will probe `python3.13`, `python3.12`, `python3.11`,
70
+ `python3`, and `python` in that order on Unix-like systems.
71
+
72
+ For a build artifact install:
73
+
74
+ ```bash
75
+ python -m build
76
+ pip install dist/tag_agent-0.1.0-py3-none-any.whl
77
+ ```
78
+
79
+ For an npm artifact check:
80
+
81
+ ```bash
82
+ npm pack
83
+ ```
84
+
85
+ ## First run
86
+
87
+ ```bash
88
+ tag
89
+ ```
90
+
91
+ Default behavior:
92
+
93
+ 1. create `~/.tag/config/tag.yaml` and the benchmark suite if missing
94
+ 2. extract the bundled Hermes snapshot into `~/.tag/managed/hermes-agent-upstream` if needed
95
+ 3. create a virtualenv for Hermes
96
+ 4. install Hermes with the required extras
97
+ 5. apply the TAG TUI patch
98
+ 6. install/build the Hermes TUI workspace
99
+ 7. bootstrap the default TAG profiles
100
+ 8. launch the orchestrator TUI
101
+
102
+ The same managed bootstrap now happens automatically for non-TUI commands that
103
+ need Hermes, for example:
104
+
105
+ ```bash
106
+ tag submit --task-type mixed --execution direct --prompt "Reply with exactly: smoke-ok"
107
+ tag benchmark --profile researcher --model-ref openrouter/deepseek/deepseek-v4-flash
108
+ tag model --profile orchestrator -- list
109
+ ```
110
+
111
+ For those commands, TAG provisions Hermes on demand and skips the TUI build if
112
+ it is not needed, so `npm` is not required just to use submit/benchmark/model
113
+ flows.
114
+
115
+ If `tag` is started from a non-interactive context, it does not try to open the
116
+ TUI blindly. It exits with a clear message and tells you to use `tag doctor`,
117
+ `tag setup`, or `tag tui` from a real terminal.
118
+
119
+ If you want the setup step explicitly:
120
+
121
+ ```bash
122
+ tag setup
123
+ tag tui
124
+ ```
125
+
126
+ ## Main commands
127
+
128
+ ```bash
129
+ tag
130
+ tag setup
131
+ tag doctor
132
+ tag bootstrap
133
+ tag status
134
+ tag assignments
135
+ tag models --profile researcher
136
+ tag openrouter-models --profile researcher --search gemini
137
+ tag set-model --profile reviewer --ref openrouter/deepseek/deepseek-v4-pro
138
+ tag submit --task-type mixed --execution direct --prompt "Reply with exactly: smoke-ok"
139
+ tag benchmark --profile researcher --model-ref openrouter/deepseek/deepseek-v4-flash
140
+ tag runs
141
+ tag import-codex --profile orchestrator --codex-home ~/.codex
142
+ tag chat --profile orchestrator -- --help
143
+ tag config --profile orchestrator -- edit
144
+ tag gateway --profile orchestrator -- start
145
+ tag kanban --profile orchestrator -- list
146
+ tag sessions --profile orchestrator -- list
147
+ tag skills --profile orchestrator -- list
148
+ tag plugins --profile orchestrator -- list
149
+ tag tools --profile orchestrator -- list
150
+ tag mcp --profile orchestrator -- list
151
+ tag logs --profile orchestrator -- --since 1h
152
+ tag dashboard --profile orchestrator -- --status
153
+ tag memory --profile orchestrator -- status
154
+ tag model --profile orchestrator -- list
155
+ tag profile -- list
156
+ tag completion --profile orchestrator -- zsh
157
+ tag prompt-size --profile orchestrator
158
+ tag update
159
+ tag hermes --profile orchestrator -- gateway start
160
+ tag tui --profile orchestrator
161
+ ```
162
+
163
+ ## Persistence
164
+
165
+ TAG stores its managed state under `~/.tag` by default:
166
+
167
+ - `config/tag.yaml`
168
+ - `config/benchmark-suite.yaml`
169
+ - `managed/hermes-agent-upstream`
170
+ - `runtime/home`
171
+ - `runtime/tag.sqlite3`
172
+
173
+ Override the root with:
174
+
175
+ ```bash
176
+ export TAG_HOME=/some/other/location
177
+ ```
178
+
179
+ ## Notes
180
+
181
+ - The managed Hermes checkout remains Hermes internally; TAG is the packaged
182
+ experience and command surface around it.
183
+ - TAG does not require a preinstalled Hermes checkout. By default it provisions
184
+ Hermes from a bundled source snapshot and only falls back to `git clone` if
185
+ that snapshot is unavailable.
186
+ - If TAG can already discover a valid local Hermes source checkout, it will
187
+ reuse it automatically instead of forcing a second separate install.
188
+ - If a real Codex CLI home already exists with `auth.json`, TAG imports that
189
+ into the managed orchestrator profiles automatically during setup.
190
+ - The shipped patch only touches Hermes TUI skin handling and profile-aware
191
+ chrome.
192
+ - OpenRouter keys and Codex auth remain per-profile concerns.
193
+ - TAG currently targets Python `>=3.11` and `<3.14` and expects `npm` for full first-run
194
+ bootstrap because Hermes' TUI workspace is built locally. `git` is still
195
+ recommended for Hermes features like worktrees and for refresh/update flows,
196
+ but it is no longer required for the default bundled install path.
197
+ - `tag update` is lifecycle-aware:
198
+ - on a bundled Hermes checkout, it refreshes the managed runtime from the
199
+ packaged snapshot and rebuilds it
200
+ - on a git-backed checkout, it delegates to Hermes' own update flow
201
+ - The npm distribution is a launcher wrapper around the Python package, not a
202
+ separate Node reimplementation.
203
+
204
+ ## Command strategy
205
+
206
+ TAG currently has three layers of command surface:
207
+
208
+ 1. Native TAG orchestration commands
209
+ - `setup`, `doctor`, `bootstrap`, `route`, `submit`, `benchmark`, `runs`
210
+ 2. High-value managed Hermes wrappers
211
+ - `chat`, `gateway`, `kanban`, `model`, `profile`, `status`, `config`, `sessions`, `skills`, `plugins`, `tools`, `mcp`, `logs`, `dashboard`, `memory`, `completion`, `prompt-size`, `update`, `tui`
212
+ 3. Full escape hatch
213
+ - `tag hermes -- ...`
214
+
215
+ This means TAG does not reimplement all of Hermes. Instead, it owns the
216
+ installation, profile layout, patching, orchestration, and default UX, while
217
+ still letting you reach the underlying Hermes runtime when needed.
218
+
219
+ ## Release Checks
220
+
221
+ Before publishing, run:
222
+
223
+ ```bash
224
+ pytest -q tests/test_controller.py
225
+ python -m build
226
+ npm pack
227
+ tag doctor
228
+ tag setup --json
229
+ ```
@@ -0,0 +1,199 @@
1
+ # TAG
2
+
3
+ TAG is a standalone orchestration layer on top of Hermes. It packages the work
4
+ done in this workspace into one installable CLI with:
5
+
6
+ - a bundled Hermes source snapshot for first-run provisioning
7
+ - managed Hermes bootstrap
8
+ - shipped Hermes TUI patching
9
+ - a custom `tag-control` skin
10
+ - profile-based master/worker orchestration
11
+ - OpenRouter worker routing
12
+ - Codex import and runtime support
13
+ - direct execution, Kanban execution, and benchmark history
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ pip install tag-agent
19
+ ```
20
+
21
+ This installs the `tag` command.
22
+
23
+ For npm:
24
+
25
+ ```bash
26
+ npm install -g tag-agent
27
+ ```
28
+
29
+ For pnpm:
30
+
31
+ ```bash
32
+ pnpm add -g tag-agent
33
+ ```
34
+
35
+ The npm package installs a thin Node launcher for `tag`. On first run it
36
+ creates an isolated Python runtime under `~/.tag/npm-runtime/<version>`,
37
+ installs the bundled TAG Python package there, and then executes the same TAG
38
+ CLI. That means the npm path still requires Python `>=3.11` and `<3.14` on
39
+ `PATH`. The launcher will probe `python3.13`, `python3.12`, `python3.11`,
40
+ `python3`, and `python` in that order on Unix-like systems.
41
+
42
+ For a build artifact install:
43
+
44
+ ```bash
45
+ python -m build
46
+ pip install dist/tag_agent-0.1.0-py3-none-any.whl
47
+ ```
48
+
49
+ For an npm artifact check:
50
+
51
+ ```bash
52
+ npm pack
53
+ ```
54
+
55
+ ## First run
56
+
57
+ ```bash
58
+ tag
59
+ ```
60
+
61
+ Default behavior:
62
+
63
+ 1. create `~/.tag/config/tag.yaml` and the benchmark suite if missing
64
+ 2. extract the bundled Hermes snapshot into `~/.tag/managed/hermes-agent-upstream` if needed
65
+ 3. create a virtualenv for Hermes
66
+ 4. install Hermes with the required extras
67
+ 5. apply the TAG TUI patch
68
+ 6. install/build the Hermes TUI workspace
69
+ 7. bootstrap the default TAG profiles
70
+ 8. launch the orchestrator TUI
71
+
72
+ The same managed bootstrap now happens automatically for non-TUI commands that
73
+ need Hermes, for example:
74
+
75
+ ```bash
76
+ tag submit --task-type mixed --execution direct --prompt "Reply with exactly: smoke-ok"
77
+ tag benchmark --profile researcher --model-ref openrouter/deepseek/deepseek-v4-flash
78
+ tag model --profile orchestrator -- list
79
+ ```
80
+
81
+ For those commands, TAG provisions Hermes on demand and skips the TUI build if
82
+ it is not needed, so `npm` is not required just to use submit/benchmark/model
83
+ flows.
84
+
85
+ If `tag` is started from a non-interactive context, it does not try to open the
86
+ TUI blindly. It exits with a clear message and tells you to use `tag doctor`,
87
+ `tag setup`, or `tag tui` from a real terminal.
88
+
89
+ If you want the setup step explicitly:
90
+
91
+ ```bash
92
+ tag setup
93
+ tag tui
94
+ ```
95
+
96
+ ## Main commands
97
+
98
+ ```bash
99
+ tag
100
+ tag setup
101
+ tag doctor
102
+ tag bootstrap
103
+ tag status
104
+ tag assignments
105
+ tag models --profile researcher
106
+ tag openrouter-models --profile researcher --search gemini
107
+ tag set-model --profile reviewer --ref openrouter/deepseek/deepseek-v4-pro
108
+ tag submit --task-type mixed --execution direct --prompt "Reply with exactly: smoke-ok"
109
+ tag benchmark --profile researcher --model-ref openrouter/deepseek/deepseek-v4-flash
110
+ tag runs
111
+ tag import-codex --profile orchestrator --codex-home ~/.codex
112
+ tag chat --profile orchestrator -- --help
113
+ tag config --profile orchestrator -- edit
114
+ tag gateway --profile orchestrator -- start
115
+ tag kanban --profile orchestrator -- list
116
+ tag sessions --profile orchestrator -- list
117
+ tag skills --profile orchestrator -- list
118
+ tag plugins --profile orchestrator -- list
119
+ tag tools --profile orchestrator -- list
120
+ tag mcp --profile orchestrator -- list
121
+ tag logs --profile orchestrator -- --since 1h
122
+ tag dashboard --profile orchestrator -- --status
123
+ tag memory --profile orchestrator -- status
124
+ tag model --profile orchestrator -- list
125
+ tag profile -- list
126
+ tag completion --profile orchestrator -- zsh
127
+ tag prompt-size --profile orchestrator
128
+ tag update
129
+ tag hermes --profile orchestrator -- gateway start
130
+ tag tui --profile orchestrator
131
+ ```
132
+
133
+ ## Persistence
134
+
135
+ TAG stores its managed state under `~/.tag` by default:
136
+
137
+ - `config/tag.yaml`
138
+ - `config/benchmark-suite.yaml`
139
+ - `managed/hermes-agent-upstream`
140
+ - `runtime/home`
141
+ - `runtime/tag.sqlite3`
142
+
143
+ Override the root with:
144
+
145
+ ```bash
146
+ export TAG_HOME=/some/other/location
147
+ ```
148
+
149
+ ## Notes
150
+
151
+ - The managed Hermes checkout remains Hermes internally; TAG is the packaged
152
+ experience and command surface around it.
153
+ - TAG does not require a preinstalled Hermes checkout. By default it provisions
154
+ Hermes from a bundled source snapshot and only falls back to `git clone` if
155
+ that snapshot is unavailable.
156
+ - If TAG can already discover a valid local Hermes source checkout, it will
157
+ reuse it automatically instead of forcing a second separate install.
158
+ - If a real Codex CLI home already exists with `auth.json`, TAG imports that
159
+ into the managed orchestrator profiles automatically during setup.
160
+ - The shipped patch only touches Hermes TUI skin handling and profile-aware
161
+ chrome.
162
+ - OpenRouter keys and Codex auth remain per-profile concerns.
163
+ - TAG currently targets Python `>=3.11` and `<3.14` and expects `npm` for full first-run
164
+ bootstrap because Hermes' TUI workspace is built locally. `git` is still
165
+ recommended for Hermes features like worktrees and for refresh/update flows,
166
+ but it is no longer required for the default bundled install path.
167
+ - `tag update` is lifecycle-aware:
168
+ - on a bundled Hermes checkout, it refreshes the managed runtime from the
169
+ packaged snapshot and rebuilds it
170
+ - on a git-backed checkout, it delegates to Hermes' own update flow
171
+ - The npm distribution is a launcher wrapper around the Python package, not a
172
+ separate Node reimplementation.
173
+
174
+ ## Command strategy
175
+
176
+ TAG currently has three layers of command surface:
177
+
178
+ 1. Native TAG orchestration commands
179
+ - `setup`, `doctor`, `bootstrap`, `route`, `submit`, `benchmark`, `runs`
180
+ 2. High-value managed Hermes wrappers
181
+ - `chat`, `gateway`, `kanban`, `model`, `profile`, `status`, `config`, `sessions`, `skills`, `plugins`, `tools`, `mcp`, `logs`, `dashboard`, `memory`, `completion`, `prompt-size`, `update`, `tui`
182
+ 3. Full escape hatch
183
+ - `tag hermes -- ...`
184
+
185
+ This means TAG does not reimplement all of Hermes. Instead, it owns the
186
+ installation, profile layout, patching, orchestration, and default UX, while
187
+ still letting you reach the underlying Hermes runtime when needed.
188
+
189
+ ## Release Checks
190
+
191
+ Before publishing, run:
192
+
193
+ ```bash
194
+ pytest -q tests/test_controller.py
195
+ python -m build
196
+ npm pack
197
+ tag doctor
198
+ tag setup --json
199
+ ```
@@ -0,0 +1,48 @@
1
+ # TAG Todo
2
+
3
+ This file tracks the remaining work needed before TAG can reasonably be
4
+ described as a polished standalone product instead of a strong prototype.
5
+
6
+ ## In Progress
7
+
8
+ - [ ] None
9
+
10
+ ## Pending
11
+
12
+ - [ ] None
13
+
14
+ ## Completed
15
+
16
+ - [x] Harden packaging and distribution
17
+ - add package metadata suitable for publication
18
+ - include shipped resources and license in sdist/wheel builds
19
+ - verify non-editable wheel install behavior
20
+ - clean generated artifacts from the source tree
21
+
22
+ - [x] Re-run regression testing across all maintained surfaces
23
+ - TAG unit tests
24
+ - hermes-lab unit tests
25
+ - Hermes patched TUI tests/build
26
+ - installed `tag` smoke tests
27
+
28
+ - [x] Harden bare `tag` startup behavior
29
+ - add TTY detection
30
+ - add a non-interactive fallback mode
31
+ - avoid hanging when launched from non-interactive contexts
32
+
33
+ - [x] Improve `doctor` and `setup` prerequisite validation
34
+ - verify `git`, `npm`, and usable Python tooling up front
35
+ - surface missing dependencies before setup begins
36
+ - report whether Hermes checkout, patch state, and TUI build state are healthy
37
+
38
+ - [x] Clarify and strengthen TAG command-surface coverage
39
+ - decide which Hermes capabilities should remain passthrough-only
40
+ - document the intended contract of `tag hermes`
41
+ - add any missing high-value first-class TAG commands
42
+
43
+ - [x] Standalone `tag` Python package skeleton
44
+ - [x] Managed Hermes bootstrap flow
45
+ - [x] TAG config and benchmark suite persistence
46
+ - [x] Shipped `tag-control` skin
47
+ - [x] Hermes TUI patch integration
48
+ - [x] Profile bootstrap and rendered config installation
@@ -0,0 +1,62 @@
1
+ [build-system]
2
+ requires = ["setuptools>=69", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "tag-agent"
7
+ version = "0.1.0"
8
+ description = "TAG: a Hermes-based orchestration layer with patched TUI, profile routing, and OpenRouter/Codex workflows."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11,<3.14"
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ authors = [
14
+ { name = "TAG" }
15
+ ]
16
+ keywords = ["agents", "cli", "codex", "hermes", "openrouter", "orchestration", "tui"]
17
+ classifiers = [
18
+ "Development Status :: 3 - Alpha",
19
+ "Environment :: Console",
20
+ "Intended Audience :: Developers",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3 :: Only",
24
+ "Programming Language :: Python :: 3.11",
25
+ "Programming Language :: Python :: 3.12",
26
+ "Topic :: Software Development",
27
+ "Topic :: Terminals",
28
+ ]
29
+ dependencies = [
30
+ "PyYAML>=6.0"
31
+ ]
32
+
33
+ [project.optional-dependencies]
34
+ dev = [
35
+ "build>=1.2.2",
36
+ "pytest>=8.0",
37
+ "twine>=6.1.0",
38
+ ]
39
+
40
+ [project.urls]
41
+ Homepage = "https://github.com/sanskarpan/tag-agent"
42
+ Repository = "https://github.com/sanskarpan/tag-agent.git"
43
+ Issues = "https://github.com/sanskarpan/tag-agent/issues"
44
+
45
+ [project.scripts]
46
+ tag = "tag.controller:main"
47
+
48
+ [tool.setuptools]
49
+ package-dir = {"" = "src"}
50
+ include-package-data = true
51
+
52
+ [tool.setuptools.packages.find]
53
+ where = ["src"]
54
+
55
+ [tool.setuptools.package-data]
56
+ tag = [
57
+ "assets/skins/*.yaml",
58
+ "config/*.yaml",
59
+ "docs/*.md",
60
+ "patches/*.patch",
61
+ "vendor/*.tar.gz",
62
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,5 @@
1
+ """TAG package."""
2
+
3
+ __all__ = ["__version__"]
4
+
5
+ __version__ = "0.1.0"
@@ -0,0 +1,7 @@
1
+ from __future__ import annotations
2
+
3
+ from .cli import main
4
+
5
+
6
+ if __name__ == "__main__":
7
+ raise SystemExit(main())
@@ -0,0 +1,61 @@
1
+ name: tag-control
2
+ description: TAG control-room skin with indigo panels, cobalt prompts, and electric-blue accents.
3
+ colors:
4
+ banner_border: "#44517A"
5
+ banner_title: "#8FA8FF"
6
+ banner_accent: "#52B6FF"
7
+ banner_dim: "#7587B3"
8
+ banner_text: "#E6EEFF"
9
+ ui_primary: "#8FA8FF"
10
+ ui_accent: "#52B6FF"
11
+ ui_border: "#44517A"
12
+ ui_text: "#E6EEFF"
13
+ ui_muted: "#7587B3"
14
+ ui_label: "#B7C7FF"
15
+ ui_ok: "#66D7A1"
16
+ ui_error: "#FF7D97"
17
+ ui_warn: "#7FD7FF"
18
+ prompt: "#8FA8FF"
19
+ input_rule: "#44517A"
20
+ response_border: "#52B6FF"
21
+ status_bar_bg: "#0D1324"
22
+ status_bar_text: "#DCE6FF"
23
+ status_bar_strong: "#52B6FF"
24
+ status_bar_dim: "#7587B3"
25
+ status_bar_good: "#66D7A1"
26
+ status_bar_warn: "#7FD7FF"
27
+ status_bar_bad: "#A88BFF"
28
+ status_bar_critical: "#FF7D97"
29
+ session_label: "#B7C7FF"
30
+ session_border: "#7587B3"
31
+ selection_bg: "#1D294A"
32
+ completion_menu_bg: "#0D1324"
33
+ completion_menu_current_bg: "#1D294A"
34
+ completion_menu_meta_bg: "#0A1020"
35
+ completion_menu_meta_current_bg: "#16254A"
36
+ shell_dollar: "#52B6FF"
37
+ branding:
38
+ agent_name: "TAG Control"
39
+ agent_icon: "◈"
40
+ welcome: "TAG control plane online. Type your message or /help."
41
+ goodbye: "TAG control plane offline."
42
+ response_label: " ◈ TAG "
43
+ prompt_symbol: "›"
44
+ help_header: "[tag] Commands"
45
+ tool_prefix: "│"
46
+ banner_logo: |
47
+ [bold #52B6FF]████████╗ █████╗ ██████╗[/]
48
+ [bold #8FA8FF]╚══██╔══╝██╔══██╗██╔════╝[/]
49
+ [bold #B7C7FF] ██║ ███████║██║ ███╗[/]
50
+ [bold #A88BFF] ██║ ██╔══██║██║ ██║[/]
51
+ [bold #7FD7FF] ██║ ██║ ██║╚██████╔╝[/]
52
+ banner_hero: |
53
+ [#52B6FF] ╭────────────╮[/]
54
+ [#8FA8FF] ╭───┤ TAG ├───╮[/]
55
+ [#7587B3] │ ╰────┬───────╯ │[/]
56
+ [#B7C7FF] │ ╭────┴────╮ │[/]
57
+ [#52B6FF] ├───┤ CONTROL ├───┬──┤[/]
58
+ [#7587B3] │ ╰────┬────╯ │ │[/]
59
+ [#A88BFF] │ ╭────┴────╮ │ │[/]
60
+ [#66D7A1] ╰───┤ AGENTS ├───╯ │[/]
61
+ [#7587B3] ╰─────────╯ │[/]
@@ -0,0 +1,7 @@
1
+ from __future__ import annotations
2
+
3
+ from .controller import main
4
+
5
+
6
+ if __name__ == "__main__":
7
+ raise SystemExit(main())
@@ -0,0 +1,14 @@
1
+ cases:
2
+ - id: exact-echo
3
+ prompt: "Reply with exactly: bench-ok"
4
+ expected_exact: bench-ok
5
+
6
+ - id: math-json
7
+ prompt: 'Return only compact JSON {"status":"ok","sum":42}'
8
+ expected_json:
9
+ status: ok
10
+ sum: 42
11
+
12
+ - id: bullet-format
13
+ prompt: "Reply with exactly these two lines and nothing else: - alpha\n- beta"
14
+ expected_regex: '(^|\n)- alpha\n- beta\s*$'