cade-cli 0.15.0__tar.gz → 0.15.1__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.
- {cade_cli-0.15.0 → cade_cli-0.15.1}/PKG-INFO +2 -2
- {cade_cli-0.15.0 → cade_cli-0.15.1}/README.md +1 -1
- {cade_cli-0.15.0 → cade_cli-0.15.1}/pyproject.toml +1 -1
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/app.py +69 -1
- {cade_cli-0.15.0 → cade_cli-0.15.1}/.gitignore +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/LICENSE +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/__main__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/_metadata.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/config.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/errors.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/resources.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/server.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/_read_cache.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/agents.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/context.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/filesystem.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/git.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/notifications.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/questions.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/results.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/schemas.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/search.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/shell.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/snippets.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/tasks.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/web_fetch.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/tools/web_search.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/utils.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/arcade_client.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/cache.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/extract.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/markdown.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/preapproved.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/prompts.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/scrape.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/search/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/search/arcade.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/search/base.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cade_mcp_local/web/search/http.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ai/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ai/prompts.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/auth.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/account.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/agents.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/auth.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/chat.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/cron.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/hooks.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/mcp.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/mem.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/serve.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/tasks.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/thread.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/commands/tools.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/cli/onboarding.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/agent.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/comms.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/config.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/constants.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/errors.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/frozen.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/git.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/inbox.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/logging.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/memory.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/model_specs.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/names.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/paths.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/runtime.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/secrets.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/spawn.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/core/types.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/execution/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/execution/context_window.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/execution/mcp_schema_index.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/execution/orchestrator.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/execution/parallel.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/execution/tool_result_store.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/execution/tool_schema_cache.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/config.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/engine.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/executors/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/executors/callback.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/executors/command.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/executors/http.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/executors/prompt.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/executors/ssrf_guard.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/matchers.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/registry.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/hooks/types.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/providers/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/providers/anthropic.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/providers/base.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/providers/ollama.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/providers/openai.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/adapters/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/adapters/base.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/adapters/desktop.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/adapters/registry.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/adapters/stub.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/adapters/telegram.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/allowlist.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/chunker.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/commands.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/config.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/cron.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/daemon.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/elicitation.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/format.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/install.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/lock.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/observability.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/owner.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/progress_sink.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/router.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/secrets.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/services.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/sinks.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/serve/worker.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/storage/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/storage/threads.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tasks/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tasks/lock.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tasks/scheduler.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tasks/store.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tasks/types.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/templates/login_failed.html +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/templates/login_success.html +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/templates/serve/launchd.plist.tmpl +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/templates/serve/serve.toml.example +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/templates/serve/systemd.service.tmpl +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/templates/styles.css +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/manager/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/manager/_request_ctx.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/manager/base.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/manager/composite.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/manager/config.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/manager/mcp.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/search/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/search/discovered.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/search/scoring.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/tools/search/service.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ui/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ui/completion.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ui/display.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ui/elicitation.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ui/input.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ui/session.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/ui/slash.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/voice/__init__.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/voice/audio.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/voice/cleanup.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/voice/session.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/voice/stt.py +0 -0
- {cade_cli-0.15.0 → cade_cli-0.15.1}/src/cadecoder/voice/tts.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cade-cli
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.1
|
|
4
4
|
Summary: Cade - The CLI Agent from Arcade.dev
|
|
5
5
|
Project-URL: Homepage, https://arcade.dev
|
|
6
6
|
Project-URL: Documentation, https://docs.arcade.dev
|
|
@@ -123,7 +123,7 @@ The install script detects your OS/arch, downloads the matching prebuilt binary
|
|
|
123
123
|
`~/.local/bin` — no GitHub token required. Pin a version or install location:
|
|
124
124
|
|
|
125
125
|
```bash
|
|
126
|
-
CADE_VERSION=0.15.
|
|
126
|
+
CADE_VERSION=0.15.1 CADE_INSTALL_DIR=/usr/local/bin \
|
|
127
127
|
sh -c "$(curl -fsSL https://arcadeagent.dev/install)"
|
|
128
128
|
```
|
|
129
129
|
|
|
@@ -35,7 +35,7 @@ The install script detects your OS/arch, downloads the matching prebuilt binary
|
|
|
35
35
|
`~/.local/bin` — no GitHub token required. Pin a version or install location:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
CADE_VERSION=0.15.
|
|
38
|
+
CADE_VERSION=0.15.1 CADE_INSTALL_DIR=/usr/local/bin \
|
|
39
39
|
sh -c "$(curl -fsSL https://arcadeagent.dev/install)"
|
|
40
40
|
```
|
|
41
41
|
|
|
@@ -1,7 +1,75 @@
|
|
|
1
1
|
"""Main CLI application setup and entry point for CadeCoder."""
|
|
2
2
|
|
|
3
|
+
import multiprocessing
|
|
3
4
|
import os
|
|
4
|
-
import
|
|
5
|
+
import sys
|
|
6
|
+
|
|
7
|
+
# Defensive: harmless no-op on macOS/Linux, required on Windows if any bundled
|
|
8
|
+
# dependency uses multiprocessing in a frozen build.
|
|
9
|
+
multiprocessing.freeze_support()
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _python_style_target(argv: list[str]) -> tuple[str, str, list[str]] | None:
|
|
13
|
+
"""Classify a ``python``-style ``-m``/``-c`` invocation. Pure + testable.
|
|
14
|
+
|
|
15
|
+
Returns ``("module", name, rest)`` or ``("code", code, rest)`` if ``argv``
|
|
16
|
+
looks like ``<exe> -m <importable.module> ...`` or ``<exe> -c <code> ...``;
|
|
17
|
+
otherwise ``None``. A ``-m`` argument only counts when it's an importable
|
|
18
|
+
dotted module path (what a dependency passes to ``python -m``), so a real
|
|
19
|
+
chat message like ``-m "fix the bug"`` is never misclassified.
|
|
20
|
+
"""
|
|
21
|
+
if len(argv) >= 2 and argv[1] == "-c":
|
|
22
|
+
return ("code", argv[2] if len(argv) >= 3 else "", list(argv[3:]))
|
|
23
|
+
if len(argv) >= 3 and argv[1] == "-m":
|
|
24
|
+
module = argv[2]
|
|
25
|
+
if "." in module and not any(c.isspace() for c in module):
|
|
26
|
+
try:
|
|
27
|
+
import importlib.util
|
|
28
|
+
|
|
29
|
+
if importlib.util.find_spec(module) is not None:
|
|
30
|
+
return ("module", module, list(argv[3:]))
|
|
31
|
+
except (ImportError, ValueError):
|
|
32
|
+
pass
|
|
33
|
+
return None
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _run_python_style_invocation_if_frozen() -> None:
|
|
37
|
+
"""In frozen builds, emulate ``python -m <module>`` / ``python -c <code>``.
|
|
38
|
+
|
|
39
|
+
Several dependencies shell out to ``sys.executable`` assuming it is a Python
|
|
40
|
+
interpreter. The most damaging is arcade-core's detached PostHog usage
|
|
41
|
+
reporter, which runs ``[sys.executable, "-m", "arcade_core.usage"]`` for
|
|
42
|
+
every usage event. In a PyInstaller binary ``sys.executable`` is THIS cli,
|
|
43
|
+
so ``cade -m arcade_core.usage`` was parsed as single-message mode — it
|
|
44
|
+
started a whole agent, which emitted more usage events, each spawning
|
|
45
|
+
another agent: a fork bomb of hundreds of ``cade`` processes.
|
|
46
|
+
|
|
47
|
+
Intercept the Python-style ``-m``/``-c`` invocations here, before Typer sees
|
|
48
|
+
them, and run them via ``runpy``/``exec`` so the frozen binary behaves like
|
|
49
|
+
the interpreter the dependency expected. This both stops the fork bomb and
|
|
50
|
+
lets the telemetry subprocess do its (lightweight, one-shot) job. No-op for
|
|
51
|
+
normal use, including ``cade -m "a chat message"``.
|
|
52
|
+
"""
|
|
53
|
+
if not getattr(sys, "frozen", False):
|
|
54
|
+
return
|
|
55
|
+
target = _python_style_target(sys.argv)
|
|
56
|
+
if target is None:
|
|
57
|
+
return
|
|
58
|
+
kind, what, rest = target
|
|
59
|
+
if kind == "code":
|
|
60
|
+
sys.argv = ["-c", *rest]
|
|
61
|
+
exec(compile(what, "<string>", "exec"), {"__name__": "__main__"})
|
|
62
|
+
else:
|
|
63
|
+
import runpy
|
|
64
|
+
|
|
65
|
+
sys.argv = [what, *rest]
|
|
66
|
+
runpy.run_module(what, run_name="__main__", alter_sys=True)
|
|
67
|
+
raise SystemExit(0)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
_run_python_style_invocation_if_frozen()
|
|
71
|
+
|
|
72
|
+
import warnings # noqa: E402
|
|
5
73
|
|
|
6
74
|
# Set environment variable to disable tokenizers parallelism warning
|
|
7
75
|
# This must be set before any imports that use tokenizers
|
|
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
|
|
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
|