cade-cli 0.16.4__tar.gz → 0.16.6__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.16.4 → cade_cli-0.16.6}/PKG-INFO +9 -5
- {cade_cli-0.16.4 → cade_cli-0.16.6}/README.md +8 -4
- {cade_cli-0.16.4 → cade_cli-0.16.6}/pyproject.toml +1 -1
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/daemon.py +13 -5
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/imessage.py +1 -1
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/config.py +1 -1
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/server.py +15 -1
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/shim.py +13 -6
- {cade_cli-0.16.4 → cade_cli-0.16.6}/.gitignore +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/LICENSE +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/__main__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/_metadata.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/config.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/errors.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/grants.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/resources.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/sandbox.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/server.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/_read_cache.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/access.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/agents.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/context.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/filesystem.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/git.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/notifications.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/questions.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/results.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/schemas.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/search.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/shell.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/snippets.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/tasks.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/web_fetch.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/web_search.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/utils.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/arcade_client.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/cache.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/extract.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/markdown.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/preapproved.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/prompts.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/scrape.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/arcade.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/base.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/http.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ai/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ai/prompts.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/app.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/auth.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/account.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/agents.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/auth.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/chat.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/cron.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/grant.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/hooks.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/mcp.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/mem.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/tasks.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/thread.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/tools.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/mcp_hosts.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/onboarding.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/agent.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/comms.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/config.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/constants.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/errors.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/frozen.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/git.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/inbox.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/logging.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/memory.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/model_specs.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/names.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/paths.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/runtime.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/secrets.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/spawn.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/types.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/base.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/factory.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/registry.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/stub.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/telegram.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/allowlist.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/attach.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/chunker.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/client.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/commands.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/control.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/cron.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/elicitation.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/ensure.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/format.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/app.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/arcade_export.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/auth.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/constants.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/elicitation.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/exposure.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/limits.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/middleware.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/resources.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/subscriptions.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/turn_bridge.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/grants.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/inbox_cron.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/install.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/live.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/lock.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/mesh.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/message_pump.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/observability.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/owner.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/progress_sink.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/registry.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/router.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/runner.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/runner_main.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/secrets.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/secrets_broker.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/services.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/sinks.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/supervisor.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/tokens.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/traffic.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/turns.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/wake.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/context_window.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/mcp_schema_index.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/orchestrator.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/parallel.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/tool_result_store.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/tool_schema_cache.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/config.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/engine.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/callback.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/command.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/http.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/prompt.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/ssrf_guard.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/matchers.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/registry.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/types.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/anthropic.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/base.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/http_client.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/ollama.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/openai.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/serve/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/storage/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/storage/threads.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/scheduler.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/store.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/types.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/login_failed.html +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/login_success.html +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/serve/launchd.plist.tmpl +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/serve/serve.toml.example +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/serve/systemd.service.tmpl +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/styles.css +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/_request_ctx.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/base.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/composite.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/config.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/mcp.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/discovered.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/scoring.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/service.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/completion.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/display.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/elicitation.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/input.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/session.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/slash.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/__init__.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/audio.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/cleanup.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/session.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/stt.py +0 -0
- {cade_cli-0.16.4 → cade_cli-0.16.6}/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.16.
|
|
3
|
+
Version: 0.16.6
|
|
4
4
|
Summary: Cade - The CLI Agent from Arcade.dev (install: curl -fsSL https://arcadeagent.dev/install | sh)
|
|
5
5
|
Project-URL: Homepage, https://arcade.dev
|
|
6
6
|
Project-URL: Documentation, https://arcadeagent.dev/docs
|
|
@@ -129,7 +129,7 @@ The script detects your OS/arch, downloads the matching prebuilt binary
|
|
|
129
129
|
`~/.local/bin`. Pin a version or install location:
|
|
130
130
|
|
|
131
131
|
```bash
|
|
132
|
-
CADE_VERSION=0.16.
|
|
132
|
+
CADE_VERSION=0.16.6 CADE_INSTALL_DIR=/usr/local/bin \
|
|
133
133
|
sh -c "$(curl -fsSL https://arcadeagent.dev/install)"
|
|
134
134
|
```
|
|
135
135
|
|
|
@@ -211,13 +211,15 @@ Tools come from three sources and are addressed uniformly by their registered na
|
|
|
211
211
|
|
|
212
212
|
- **`Local_*`** — built-in: filesystem (`ReadFile`, `WriteFile`, `Edit`, `ListFiles`), shell (`Bash`), `Search`, `Git`, `Task*`, `AskUserQuestion`, `RetrieveToolResult`, `ToolSchema`, `PinContext`, `PushNotification`, `WebFetch`, and `WebSearch`.
|
|
213
213
|
- **`Memory_*`** — agent-library backed, per-agent indexed knowledge store.
|
|
214
|
-
- **Arcade
|
|
214
|
+
- **Arcade Agent Hub + user MCP servers** — Hub for Gmail/Slack/GitHub/… (`cade mcp authorize hub`); plus anything else you register.
|
|
215
215
|
|
|
216
216
|
```bash
|
|
217
217
|
cade tools list # all tools, all sources
|
|
218
218
|
cade tools list --source local # filter by source
|
|
219
219
|
cade tools search "send slack" # keyword search
|
|
220
220
|
cade tools info Local_ReadFile # full schema + description
|
|
221
|
+
cade mcp authorize hub # Arcade catalogue (OAuth)
|
|
222
|
+
cade mcp install-hosts # register Cade in Cursor / Claude / …
|
|
221
223
|
```
|
|
222
224
|
|
|
223
225
|
The full local tool surface (including the bidirectional MCP capabilities and `cade daemon` integration) is documented in [`docs/mcp.md`](./docs/mcp.md).
|
|
@@ -276,7 +278,7 @@ cade daemon token new cursor -e delegate -e resources
|
|
|
276
278
|
|
|
277
279
|
Adapter + tool config lives in `~/.cade/config/agents/<name>.toml`. Edit and `kill -HUP $(cat ~/.cade/run/daemon.pid)` to reload without restart.
|
|
278
280
|
|
|
279
|
-
**Security defaults are fail-closed:** `allowed_senders = []` blocks everyone on messengers;
|
|
281
|
+
**Security defaults are fail-closed:** `allowed_senders = []` blocks everyone on messengers; tools are default-deny against `[tools].allow`. Loopback MCP (stdio shim / local CLI) needs no token; pass `cade daemon start --auth` or bind off-loopback to require bearer tokens.
|
|
280
282
|
|
|
281
283
|
---
|
|
282
284
|
|
|
@@ -327,7 +329,7 @@ All state lives under `~/.cade/`. Override the location with `CADE_HOME=/path/to
|
|
|
327
329
|
| File | Purpose |
|
|
328
330
|
|---|---|
|
|
329
331
|
| `config/cade.toml` | Global settings + `[agent_defaults]` (model, provider, UI, …) |
|
|
330
|
-
| `config/agents/<name>.toml` | Per-agent config (model, prompt, `[[mcp]]`, `[
|
|
332
|
+
| `config/agents/<name>.toml` | Per-agent config (model, prompt, `[[mcp]]`, `[tools]`, `[adapters.*]`, hooks) |
|
|
331
333
|
| `data/agents/<id>/` | Per-agent state: `threads/ memory/ tasks/ inbox/` |
|
|
332
334
|
| `run/daemon.pid` | Single gateway-supervisor pidfile |
|
|
333
335
|
| `run/agents/<name>/` | Per-agent runtime: mcp-services, grants |
|
|
@@ -344,6 +346,8 @@ Full layout, env vars, and TOML schema in [`docs/configuration.md`](./docs/confi
|
|
|
344
346
|
| `ARCADE_API_KEY`, `ARCADE_BASE_URL` | Arcade Cloud (alternative to OAuth) |
|
|
345
347
|
| `CADE_LOCAL_ONLY=1` | Skip remote tools entirely |
|
|
346
348
|
| `CADE_HOME` | Override config directory |
|
|
349
|
+
| `CADE_ATTACH=0` | Don't attach CLI turns to `cade daemon` |
|
|
350
|
+
| `CADE_AUTOSTART=0` | Don't spawn the daemon when attach needs one |
|
|
347
351
|
| `CADE_PROJECT_ROOT` | Sandbox `Local_*` filesystem tools to this root |
|
|
348
352
|
|
|
349
353
|
---
|
|
@@ -38,7 +38,7 @@ The script detects your OS/arch, downloads the matching prebuilt binary
|
|
|
38
38
|
`~/.local/bin`. Pin a version or install location:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
CADE_VERSION=0.16.
|
|
41
|
+
CADE_VERSION=0.16.6 CADE_INSTALL_DIR=/usr/local/bin \
|
|
42
42
|
sh -c "$(curl -fsSL https://arcadeagent.dev/install)"
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -120,13 +120,15 @@ Tools come from three sources and are addressed uniformly by their registered na
|
|
|
120
120
|
|
|
121
121
|
- **`Local_*`** — built-in: filesystem (`ReadFile`, `WriteFile`, `Edit`, `ListFiles`), shell (`Bash`), `Search`, `Git`, `Task*`, `AskUserQuestion`, `RetrieveToolResult`, `ToolSchema`, `PinContext`, `PushNotification`, `WebFetch`, and `WebSearch`.
|
|
122
122
|
- **`Memory_*`** — agent-library backed, per-agent indexed knowledge store.
|
|
123
|
-
- **Arcade
|
|
123
|
+
- **Arcade Agent Hub + user MCP servers** — Hub for Gmail/Slack/GitHub/… (`cade mcp authorize hub`); plus anything else you register.
|
|
124
124
|
|
|
125
125
|
```bash
|
|
126
126
|
cade tools list # all tools, all sources
|
|
127
127
|
cade tools list --source local # filter by source
|
|
128
128
|
cade tools search "send slack" # keyword search
|
|
129
129
|
cade tools info Local_ReadFile # full schema + description
|
|
130
|
+
cade mcp authorize hub # Arcade catalogue (OAuth)
|
|
131
|
+
cade mcp install-hosts # register Cade in Cursor / Claude / …
|
|
130
132
|
```
|
|
131
133
|
|
|
132
134
|
The full local tool surface (including the bidirectional MCP capabilities and `cade daemon` integration) is documented in [`docs/mcp.md`](./docs/mcp.md).
|
|
@@ -185,7 +187,7 @@ cade daemon token new cursor -e delegate -e resources
|
|
|
185
187
|
|
|
186
188
|
Adapter + tool config lives in `~/.cade/config/agents/<name>.toml`. Edit and `kill -HUP $(cat ~/.cade/run/daemon.pid)` to reload without restart.
|
|
187
189
|
|
|
188
|
-
**Security defaults are fail-closed:** `allowed_senders = []` blocks everyone on messengers;
|
|
190
|
+
**Security defaults are fail-closed:** `allowed_senders = []` blocks everyone on messengers; tools are default-deny against `[tools].allow`. Loopback MCP (stdio shim / local CLI) needs no token; pass `cade daemon start --auth` or bind off-loopback to require bearer tokens.
|
|
189
191
|
|
|
190
192
|
---
|
|
191
193
|
|
|
@@ -236,7 +238,7 @@ All state lives under `~/.cade/`. Override the location with `CADE_HOME=/path/to
|
|
|
236
238
|
| File | Purpose |
|
|
237
239
|
|---|---|
|
|
238
240
|
| `config/cade.toml` | Global settings + `[agent_defaults]` (model, provider, UI, …) |
|
|
239
|
-
| `config/agents/<name>.toml` | Per-agent config (model, prompt, `[[mcp]]`, `[
|
|
241
|
+
| `config/agents/<name>.toml` | Per-agent config (model, prompt, `[[mcp]]`, `[tools]`, `[adapters.*]`, hooks) |
|
|
240
242
|
| `data/agents/<id>/` | Per-agent state: `threads/ memory/ tasks/ inbox/` |
|
|
241
243
|
| `run/daemon.pid` | Single gateway-supervisor pidfile |
|
|
242
244
|
| `run/agents/<name>/` | Per-agent runtime: mcp-services, grants |
|
|
@@ -253,6 +255,8 @@ Full layout, env vars, and TOML schema in [`docs/configuration.md`](./docs/confi
|
|
|
253
255
|
| `ARCADE_API_KEY`, `ARCADE_BASE_URL` | Arcade Cloud (alternative to OAuth) |
|
|
254
256
|
| `CADE_LOCAL_ONLY=1` | Skip remote tools entirely |
|
|
255
257
|
| `CADE_HOME` | Override config directory |
|
|
258
|
+
| `CADE_ATTACH=0` | Don't attach CLI turns to `cade daemon` |
|
|
259
|
+
| `CADE_AUTOSTART=0` | Don't spawn the daemon when attach needs one |
|
|
256
260
|
| `CADE_PROJECT_ROOT` | Sandbox `Local_*` filesystem tools to this root |
|
|
257
261
|
|
|
258
262
|
---
|
|
@@ -103,9 +103,16 @@ def start(
|
|
|
103
103
|
prewarm: list[str] = typer.Option(
|
|
104
104
|
None, "--prewarm", help="Agent to start at boot (repeatable)."
|
|
105
105
|
),
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
auth: Annotated[
|
|
107
|
+
bool | None,
|
|
108
|
+
typer.Option(
|
|
109
|
+
"--auth/--no-auth",
|
|
110
|
+
help=(
|
|
111
|
+
"Require bearer tokens. Default: off on loopback (stdio MCP hosts / "
|
|
112
|
+
"CLI attach), on for non-loopback binds. --no-auth is refused off-loopback."
|
|
113
|
+
),
|
|
114
|
+
),
|
|
115
|
+
] = None,
|
|
109
116
|
verbose: Annotated[
|
|
110
117
|
bool,
|
|
111
118
|
typer.Option(
|
|
@@ -117,7 +124,7 @@ def start(
|
|
|
117
124
|
) -> None:
|
|
118
125
|
"""Run the gateway supervisor in the foreground (serves all agents)."""
|
|
119
126
|
from cadecoder.daemon.lock import DaemonAlreadyRunningError
|
|
120
|
-
from cadecoder.daemon.server import UnsafeBindError, run_daemon
|
|
127
|
+
from cadecoder.daemon.server import UnsafeBindError, resolve_require_auth, run_daemon
|
|
121
128
|
|
|
122
129
|
if verbose:
|
|
123
130
|
from cadecoder.core.logging import setup_logging
|
|
@@ -130,9 +137,10 @@ def start(
|
|
|
130
137
|
"(recv/send/turn/tool/cron/wake/reject) to stdout[/dim]"
|
|
131
138
|
)
|
|
132
139
|
|
|
140
|
+
require_auth = resolve_require_auth(bind=bind, auth=auth)
|
|
133
141
|
try:
|
|
134
142
|
code = asyncio.run(
|
|
135
|
-
run_daemon(bind=bind, prewarm=list(prewarm or []), require_auth=
|
|
143
|
+
run_daemon(bind=bind, prewarm=list(prewarm or []), require_auth=require_auth)
|
|
136
144
|
)
|
|
137
145
|
except DaemonAlreadyRunningError as e:
|
|
138
146
|
console.print(f"[red]{e}[/red]")
|
|
@@ -458,7 +458,7 @@ class IMessageAdapter:
|
|
|
458
458
|
raise IMessageBridgeError(
|
|
459
459
|
f"imsg binary not found (cli_path={configured!r}). "
|
|
460
460
|
"Install it with `brew install steipete/tap/imsg` or set cli_path in "
|
|
461
|
-
"[
|
|
461
|
+
"[adapters.imessage]."
|
|
462
462
|
)
|
|
463
463
|
|
|
464
464
|
async def _spawn_and_subscribe(self) -> None:
|
|
@@ -7,7 +7,7 @@ file doesn't fail hard.
|
|
|
7
7
|
Adapter settings are driven by the adapter registry in
|
|
8
8
|
`cadecoder.daemon.adapters.registry`. Every registered adapter contributes
|
|
9
9
|
one `[adapters.<name>]` section; dropping a new adapter into
|
|
10
|
-
`cadecoder/
|
|
10
|
+
`cadecoder/daemon/adapters/` is the only code change needed.
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from __future__ import annotations
|
|
@@ -42,6 +42,20 @@ class UnsafeBindError(RuntimeError):
|
|
|
42
42
|
"""Refused: auth is off but the bind is reachable off-box."""
|
|
43
43
|
|
|
44
44
|
|
|
45
|
+
def resolve_require_auth(*, bind: str, auth: bool | None) -> bool:
|
|
46
|
+
"""Decide whether the gateway should require bearer tokens.
|
|
47
|
+
|
|
48
|
+
When ``auth`` is ``None`` (CLI default), loopback binds run unauthenticated
|
|
49
|
+
so stdio MCP hosts and CLI attach work without a token; non-loopback binds
|
|
50
|
+
require auth. Explicit ``--auth`` / ``--no-auth`` always win (subject to
|
|
51
|
+
:func:`_guard_auth_bind`).
|
|
52
|
+
"""
|
|
53
|
+
host, _ = _parse_bind(bind)
|
|
54
|
+
if auth is not None:
|
|
55
|
+
return auth
|
|
56
|
+
return host not in _LOOPBACK_HOSTS
|
|
57
|
+
|
|
58
|
+
|
|
45
59
|
def _guard_auth_bind(host: str, require_auth: bool) -> None:
|
|
46
60
|
"""Refuse to run unauthenticated on a non-loopback bind.
|
|
47
61
|
|
|
@@ -52,7 +66,7 @@ def _guard_auth_bind(host: str, require_auth: bool) -> None:
|
|
|
52
66
|
if not require_auth and host not in _LOOPBACK_HOSTS:
|
|
53
67
|
raise UnsafeBindError(
|
|
54
68
|
f"refusing to run with auth disabled on non-loopback bind {host!r}; "
|
|
55
|
-
"mint a token and
|
|
69
|
+
"mint a token and pass --auth, or bind 127.0.0.1"
|
|
56
70
|
)
|
|
57
71
|
|
|
58
72
|
|
|
@@ -152,12 +152,19 @@ class StdioHttpProxy:
|
|
|
152
152
|
|
|
153
153
|
|
|
154
154
|
def run_shim(agent: str | None = None) -> int:
|
|
155
|
-
"""Entry point for ``cade __mcp-adapter``. Returns a process exit code.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
155
|
+
"""Entry point for ``cade __mcp-adapter``. Returns a process exit code.
|
|
156
|
+
|
|
157
|
+
Autostarts ``cade daemon`` when none is running (same as CLI attach), unless
|
|
158
|
+
``CADE_AUTOSTART=0``. Lazy-imports ``ensure_daemon`` to avoid a cycle with
|
|
159
|
+
:mod:`cadecoder.daemon.ensure`.
|
|
160
|
+
"""
|
|
161
|
+
# Imported here: ensure.py imports read_gateway_manifest from this module.
|
|
162
|
+
from cadecoder.daemon.ensure import DaemonStartError, ensure_daemon
|
|
163
|
+
|
|
164
|
+
try:
|
|
165
|
+
manifest = ensure_daemon()
|
|
166
|
+
except DaemonStartError as e:
|
|
167
|
+
sys.stderr.write(f"cade: {e}\nStart one with: cade daemon start\n")
|
|
161
168
|
return 1
|
|
162
169
|
|
|
163
170
|
endpoint = manifest.get("endpoint")
|
|
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
|
|
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
|