agent-toggle 0.11.1__tar.gz → 0.11.3__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.
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/PKG-INFO +1 -1
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/__init__.py +1 -1
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/update_prompt.py +3 -1
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle.egg-info/PKG-INFO +1 -1
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_cli.py +14 -2
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_update_prompt.py +12 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/LICENSE +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/README.md +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/__main__.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/backends/__init__.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/backends/flag_json.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/backends/mcp_json.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/backends/mcp_toml.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/backends/plugin_cli.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/cli.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/companions.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/config.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/cost.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/doctor.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/fs.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/harnesses.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/help.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/i18n.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/locales/__init__.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/locales/zh_tw_cli.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/locales/zh_tw_common.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/locales/zh_tw_config.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/locales/zh_tw_picker.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/mechanisms.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ops.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/output.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/profiles.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/settings.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/shims/claude.md.tmpl +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/shims/generic.md.tmpl +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/spinner.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/store.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/toml_check.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ui/__init__.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ui/config_menu.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ui/logo.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ui/menu.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ui/model.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ui/picker.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/ui/theme.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/undo.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle/update_check.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle.egg-info/SOURCES.txt +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle.egg-info/dependency_links.txt +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle.egg-info/entry_points.txt +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle.egg-info/requires.txt +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/agent_toggle.egg-info/top_level.txt +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/pyproject.toml +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/setup.cfg +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_alias.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_all_type.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_backends.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_cli_surface.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_color.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_companions.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_completions.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_config.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_config_menu.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_conformance.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_containment.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_cost.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_crash.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_doctor.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_encoding.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_fs.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_harnesses.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_help.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_i18n.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_install.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_logo.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_mechanisms.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_menu.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_mods.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_picker.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_platform.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_profiles.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_project.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_safety.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_same_name.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_secret_audit.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_settings.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_store.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_theme.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_undo.py +0 -0
- {agent_toggle-0.11.1 → agent_toggle-0.11.3}/tests/test_update_check.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-toggle
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.3
|
|
4
4
|
Summary: Temporarily disable / re-enable AI-agent skills, agents, commands, rules, plugins and MCP servers across harnesses (Claude Code, Codex, Grok, OpenCode, OpenClaw, Copilot, Vibe, Devin, Antigravity)
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/weskao/agent-toggle
|
|
@@ -206,7 +206,9 @@ def offer(started: update_check.Started | None, *, json_mode: bool = False,
|
|
|
206
206
|
def run(cmd, **kw): # their output must never reach stdout; no step may prompt
|
|
207
207
|
if cmd[0] == "claude":
|
|
208
208
|
cmd = [plugin_cli.claude_bin() or "claude", *cmd[1:]]
|
|
209
|
-
|
|
209
|
+
# the install-shims step is agent-toggle itself: it must not re-check and print the hint again
|
|
210
|
+
env = {**os.environ, settings.DEFAULTS["update_check"].env: "0"}
|
|
211
|
+
return subprocess.run(cmd, stdout=sys.stderr, stdin=subprocess.DEVNULL, env=env, **kw)
|
|
210
212
|
steps: list[list[str]] = []
|
|
211
213
|
def upgrade(_found):
|
|
212
214
|
steps.extend(upgrade_steps())
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-toggle
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.3
|
|
4
4
|
Summary: Temporarily disable / re-enable AI-agent skills, agents, commands, rules, plugins and MCP servers across harnesses (Claude Code, Codex, Grok, OpenCode, OpenClaw, Copilot, Vibe, Devin, Antigravity)
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/weskao/agent-toggle
|
|
@@ -173,7 +173,8 @@ class UpdateCheckTest(CliCase):
|
|
|
173
173
|
self.addCleanup(env.stop)
|
|
174
174
|
os.environ.pop("AGENT_TOGGLE_UPDATE_CHECK", None)
|
|
175
175
|
for target, kw in ((update_check, {"fetch_pypi": mock.Mock(return_value=PYPI_99)}),
|
|
176
|
-
(update_prompt, {"is_interactive": mock.Mock(return_value=False)})
|
|
176
|
+
(update_prompt, {"is_interactive": mock.Mock(return_value=False)}),
|
|
177
|
+
(fs, {"WIN": False})): # the panel/upgrade flow; Windows has its own test
|
|
177
178
|
patch = mock.patch.multiple(target, **kw)
|
|
178
179
|
patch.start()
|
|
179
180
|
self.addCleanup(patch.stop)
|
|
@@ -234,11 +235,22 @@ class UpdateCheckTest(CliCase):
|
|
|
234
235
|
rc, out, err = self.run_cli("--version") # runs no other subprocess
|
|
235
236
|
self.assertEqual((rc, out.strip()), (0, f"agent-toggle {__version__}"))
|
|
236
237
|
run.assert_called_once_with(["uv", "tool", "upgrade", "agent-toggle"], check=False,
|
|
237
|
-
stdout=mock.ANY, stdin=subprocess.DEVNULL)
|
|
238
|
+
stdout=mock.ANY, stdin=subprocess.DEVNULL, env=mock.ANY)
|
|
238
239
|
self.assertIn("did not finish", run.call_args.kwargs["stdout"].getvalue()) # = stderr
|
|
239
240
|
self.assertIn("upgrade did not finish — run it yourself: uv tool upgrade agent-toggle"
|
|
240
241
|
"\n agent-toggle install-shims", err)
|
|
241
242
|
|
|
243
|
+
def test_windows_tty_only_hints_and_never_upgrades(self) -> None:
|
|
244
|
+
update_prompt.is_interactive.return_value = True
|
|
245
|
+
with mock.patch.object(fs, "WIN", True), \
|
|
246
|
+
mock.patch.object(update_prompt, "ask") as ask, \
|
|
247
|
+
mock.patch.object(update_prompt.subprocess, "run") as run:
|
|
248
|
+
rc, _, err = self.run_cli("--version") # agent-toggle.exe cannot replace itself
|
|
249
|
+
self.assertEqual(rc, 0)
|
|
250
|
+
self.assertIn(HINT, err)
|
|
251
|
+
ask.assert_not_called()
|
|
252
|
+
run.assert_not_called()
|
|
253
|
+
|
|
242
254
|
def test_tty_skip_version_and_ctrl_c(self) -> None:
|
|
243
255
|
update_prompt.is_interactive.return_value = True
|
|
244
256
|
with mock.patch.object(update_prompt, "ask", side_effect=KeyboardInterrupt):
|
|
@@ -34,6 +34,18 @@ class UpgradeStepsTest(unittest.TestCase):
|
|
|
34
34
|
self.assertEqual(self.steps(None, []), [cli, shims])
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
class OfferRunTest(unittest.TestCase):
|
|
38
|
+
def test_upgrade_steps_run_with_the_update_check_off(self) -> None:
|
|
39
|
+
def offer(_started, ask, *, run, **_kw):
|
|
40
|
+
run(["agent-toggle", "install-shims"], check=False)
|
|
41
|
+
return update_check.UPDATE_NOW
|
|
42
|
+
with mock.patch.object(update_check, "offer", side_effect=offer), \
|
|
43
|
+
mock.patch.object(update_prompt.subprocess, "run") as sub, \
|
|
44
|
+
mock.patch.object(update_prompt, "cache_path", return_value="x"):
|
|
45
|
+
update_prompt.offer(mock.Mock())
|
|
46
|
+
self.assertEqual(sub.call_args.kwargs["env"]["AGENT_TOGGLE_UPDATE_CHECK"], "0")
|
|
47
|
+
|
|
48
|
+
|
|
37
49
|
class CmdUpdateTest(unittest.TestCase):
|
|
38
50
|
def run_update(self, latest):
|
|
39
51
|
out = mock.Mock()
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|