cade-cli 0.18.0__tar.gz → 0.19.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.
- {cade_cli-0.18.0 → cade_cli-0.19.0}/.gitignore +1 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/PKG-INFO +1 -1
- {cade_cli-0.18.0 → cade_cli-0.19.0}/pyproject.toml +1 -1
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/allowlist.py +24 -17
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/constants.py +0 -17
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/exposure.py +0 -6
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/resources.py +0 -26
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/subscriptions.py +1 -9
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/.claude-plugin/plugin.json +1 -1
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/.cursor-plugin/plugin.json +1 -1
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/doctor.py +3 -1
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/templates/serve/serve.toml.example +7 -8
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/voice/__init__.py +21 -1
- {cade_cli-0.18.0 → cade_cli-0.19.0}/LICENSE +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/README.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/__main__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/_metadata.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/config.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/errors.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/grants.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/resources.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/sandbox.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/server.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/_read_cache.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/access.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/agents.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/filesystem.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/git.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/notifications.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/questions.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/results.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/schemas.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/search.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/shell.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/tasks.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/web_fetch.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/tools/web_search.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/utils.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/arcade_client.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/cache.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/extract.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/markdown.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/preapproved.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/prompts.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/scrape.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/search/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/search/arcade.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/search/base.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cade_mcp_local/web/search/http.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ai/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ai/prompts.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/app.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/auth.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/account.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/agent_group.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/agents.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/auth.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/chat.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/cron.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/daemon.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/grant.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/hooks.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/mcp.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/mem.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/tasks.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/thread.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/commands/tools.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/mcp_hosts.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/onboarding.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/cli/ui.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/agent.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/binary.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/comms.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/config.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/constants.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/errors.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/frozen.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/git.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/inbox.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/logging.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/memory.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/model_specs.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/names.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/paths.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/runtime.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/secrets.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/spawn.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/text.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/core/types.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/adapters/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/adapters/base.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/adapters/factory.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/adapters/imessage.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/adapters/registry.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/adapters/stub.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/adapters/telegram.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/attach.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/chunker.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/client.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/commands.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/config.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/control.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/cron.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/elicitation.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/ensure.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/format.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/app.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/auth.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/elicitation.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/host_agent.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/limits.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/middleware.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/gateway/turn_bridge.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/grants.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/inbox.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/inbox_cron.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/install.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/lock.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/mesh.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/message_pump.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/observability.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/owner.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/progress_sink.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/registry.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/router.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/runner.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/runner_main.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/secrets.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/secrets_broker.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/server.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/services.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/sinks.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/supervisor.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/tokens.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/traffic.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/turns.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/daemon/wake.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/execution/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/execution/context_window.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/execution/mcp_schema_index.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/execution/orchestrator.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/execution/parallel.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/execution/tool_result_store.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/execution/tool_schema_cache.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/config.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/engine.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/executors/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/executors/callback.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/executors/command.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/executors/http.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/executors/prompt.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/executors/ssrf_guard.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/matchers.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/registry.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/hooks/types.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/.claude-plugin/marketplace.json +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/.cursor-plugin/marketplace.json +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/agents/operator.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/commands/ask.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/commands/memory.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/commands/tasks.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/mcp.json +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/rules/gateway.mdc +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/skills/ask/SKILL.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/skills/memory/SKILL.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/skills/tasks/SKILL.md +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/install.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/paths.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/state.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/providers/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/providers/anthropic.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/providers/base.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/providers/http_client.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/providers/ollama.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/providers/openai.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/storage/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/storage/threads.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tasks/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tasks/scheduler.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tasks/store.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tasks/types.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/templates/login_failed.html +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/templates/login_success.html +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/templates/serve/launchd.plist.tmpl +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/templates/serve/systemd.service.tmpl +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/templates/styles.css +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/manager/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/manager/_request_ctx.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/manager/base.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/manager/composite.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/manager/config.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/manager/mcp.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/search/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/search/discovered.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/search/scoring.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/tools/search/service.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ui/__init__.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ui/completion.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ui/display.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ui/elicitation.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ui/input.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ui/session.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/ui/slash.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/voice/audio.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/voice/cleanup.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/voice/session.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/voice/stt.py +0 -0
- {cade_cli-0.18.0 → cade_cli-0.19.0}/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.
|
|
3
|
+
Version: 0.19.0
|
|
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
|
|
@@ -9,8 +9,8 @@ Policy:
|
|
|
9
9
|
* `deny` wins over `allow` (explicit block beats any permit).
|
|
10
10
|
* If `allow` is non-empty, only tools matching one of its patterns may run.
|
|
11
11
|
* If BOTH `allow` and `deny` are empty, everything is allowed (unrestricted).
|
|
12
|
-
* The shipped default (`DEFAULT_TOOL_ALLOW` / `DEFAULT_TOOL_DENY`) is
|
|
13
|
-
|
|
12
|
+
* The shipped default (`DEFAULT_TOOL_ALLOW` / `DEFAULT_TOOL_DENY`) is empty
|
|
13
|
+
on both sides — every tool is allowed.
|
|
14
14
|
* When `sandbox_root` is set, every Local_* tool call whose arguments carry
|
|
15
15
|
a filesystem path is rejected if that path resolves outside the root —
|
|
16
16
|
unless path restrictions are globally disabled via
|
|
@@ -37,23 +37,29 @@ HOOK_NAME = "cadecoder.daemon.allowlist"
|
|
|
37
37
|
# The shipped default tool policy, and the only definition of it. Everything
|
|
38
38
|
# that seeds a policy for a new agent reads these — never the literals.
|
|
39
39
|
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
# the
|
|
40
|
+
# Empty on both sides: no allow-restriction and nothing denied by name. Bash
|
|
41
|
+
# used to be denied here on the grounds that a script can `cd` out of any
|
|
42
|
+
# sandbox root, but containment is now the OS sandbox's job — Local_Bash runs
|
|
43
|
+
# under sandbox-exec/bwrap with only the live GrantSet mounted, and refuses to
|
|
44
|
+
# run at all when no backend is available. Denying it by name only cost
|
|
45
|
+
# capability; it was never what kept it contained.
|
|
46
|
+
#
|
|
47
|
+
# Both lists are still written (empty, not absent), so a seeded agent stays
|
|
48
|
+
# distinguishable from one whose policy was never configured — see
|
|
49
|
+
# ToolsSettings.is_configured.
|
|
44
50
|
#
|
|
45
51
|
# Tuples, not lists: a module-level mutable default is one `.append()` away
|
|
46
52
|
# from leaking into every config that shares it.
|
|
47
53
|
DEFAULT_TOOL_ALLOW: Final[tuple[str, ...]] = ()
|
|
48
|
-
DEFAULT_TOOL_DENY: Final[tuple[str, ...]] = (
|
|
54
|
+
DEFAULT_TOOL_DENY: Final[tuple[str, ...]] = ()
|
|
49
55
|
|
|
50
56
|
# Path-bearing argument name per tool. Keys are the runtime tool names the
|
|
51
57
|
# composite manager exposes (Local_* prefix). Values are the JSON input key
|
|
52
58
|
# whose value is a filesystem path. Tools not in this map are not path-checked.
|
|
53
59
|
#
|
|
54
|
-
# Bash takes a `cwd` but
|
|
55
|
-
#
|
|
56
|
-
#
|
|
60
|
+
# Bash takes a `cwd` but is not path-checked here — a script can `cd` anywhere,
|
|
61
|
+
# so a pre-flight argument check proves nothing. Its containment is the OS
|
|
62
|
+
# sandbox in cade_mcp_local.tools.shell. This map intentionally omits it.
|
|
57
63
|
_PATH_ARGS: dict[str, str] = {
|
|
58
64
|
"Local_ReadFile": "file_path",
|
|
59
65
|
"Local_WriteFile": "file_path",
|
|
@@ -178,11 +184,11 @@ def default_tool_settings() -> ToolsSettings:
|
|
|
178
184
|
policy another agent was seeded with.
|
|
179
185
|
|
|
180
186
|
Returns:
|
|
181
|
-
Settings permitting every tool
|
|
187
|
+
Settings permitting every tool.
|
|
182
188
|
|
|
183
189
|
Example:
|
|
184
190
|
>>> settings = default_tool_settings()
|
|
185
|
-
>>> is_tool_allowed("
|
|
191
|
+
>>> is_tool_allowed("Local_Bash", settings.allow or [], settings.deny or [])
|
|
186
192
|
True
|
|
187
193
|
"""
|
|
188
194
|
return ToolsSettings(allow=list(DEFAULT_TOOL_ALLOW), deny=list(DEFAULT_TOOL_DENY))
|
|
@@ -237,11 +243,12 @@ def install_allowlist_hook(
|
|
|
237
243
|
log.debug(f"Replaced {removed} existing {HOOK_NAME!r} hook(s)")
|
|
238
244
|
|
|
239
245
|
if not tools.allow and not tools.deny:
|
|
240
|
-
log.
|
|
241
|
-
"serve tool
|
|
242
|
-
"configured tool, including Local_Bash
|
|
243
|
-
"
|
|
244
|
-
"
|
|
246
|
+
log.info(
|
|
247
|
+
"serve tool policy is unrestricted (the shipped default) — every "
|
|
248
|
+
"configured tool is reachable, including Local_Bash, which runs "
|
|
249
|
+
"OS-sandboxed against the agent's granted paths. To narrow it, add "
|
|
250
|
+
"patterns to [tools].allow or [tools].deny in the agent's config "
|
|
251
|
+
"file, then run: cade daemon restart"
|
|
245
252
|
)
|
|
246
253
|
|
|
247
254
|
hook = CallbackHook(
|
|
@@ -29,16 +29,6 @@ TASKS_URI = "tasks://"
|
|
|
29
29
|
TASK_TEMPLATE = "tasks://{task_id}"
|
|
30
30
|
FILESYSTEM_URI = "filesystem://"
|
|
31
31
|
|
|
32
|
-
# Pre-0.16.21 branded URIs. Still registered + accepted so hosts that have not
|
|
33
|
-
# re-run ``cade mcp install-hosts`` keep working after upgrade.
|
|
34
|
-
LEGACY_THREADS_URI = "cade://threads"
|
|
35
|
-
LEGACY_THREAD_TEMPLATE = "cade://thread/{thread_id}"
|
|
36
|
-
LEGACY_MEMORY_URI = "cade://memory"
|
|
37
|
-
LEGACY_MEMORY_SOURCES_URI = "cade://memory/sources"
|
|
38
|
-
LEGACY_TASKS_URI = "cade://tasks"
|
|
39
|
-
LEGACY_TASK_TEMPLATE = "cade://tasks/{task_id}"
|
|
40
|
-
LEGACY_FILESYSTEM_URI = "cade://filesystem"
|
|
41
|
-
|
|
42
32
|
|
|
43
33
|
def thread_uri(thread_id: str) -> str:
|
|
44
34
|
"""The concrete ``thread://{id}`` URI for one thread."""
|
|
@@ -48,13 +38,6 @@ def thread_uri(thread_id: str) -> str:
|
|
|
48
38
|
__all__ = [
|
|
49
39
|
"CANONICAL_ASK",
|
|
50
40
|
"FILESYSTEM_URI",
|
|
51
|
-
"LEGACY_FILESYSTEM_URI",
|
|
52
|
-
"LEGACY_MEMORY_SOURCES_URI",
|
|
53
|
-
"LEGACY_MEMORY_URI",
|
|
54
|
-
"LEGACY_TASKS_URI",
|
|
55
|
-
"LEGACY_TASK_TEMPLATE",
|
|
56
|
-
"LEGACY_THREADS_URI",
|
|
57
|
-
"LEGACY_THREAD_TEMPLATE",
|
|
58
41
|
"MCP_SURFACE",
|
|
59
42
|
"MEMORY_SOURCES_URI",
|
|
60
43
|
"MEMORY_URI",
|
|
@@ -44,12 +44,6 @@ _RESOURCE_GROUP: list[tuple[str, str]] = [
|
|
|
44
44
|
("memory://", GROUP_RESOURCES),
|
|
45
45
|
("filesystem://", GROUP_RESOURCES),
|
|
46
46
|
("file://", GROUP_RESOURCES),
|
|
47
|
-
# Pre-0.16.21 branded URIs (still accepted for upgrade compatibility).
|
|
48
|
-
("cade://threads", GROUP_RESOURCES),
|
|
49
|
-
("cade://thread/", GROUP_RESOURCES),
|
|
50
|
-
("cade://tasks", GROUP_RESOURCES),
|
|
51
|
-
("cade://memory", GROUP_RESOURCES),
|
|
52
|
-
("cade://filesystem", GROUP_RESOURCES),
|
|
53
47
|
]
|
|
54
48
|
|
|
55
49
|
|
|
@@ -21,13 +21,6 @@ from arcade_mcp_server.context import get_current_model_context
|
|
|
21
21
|
from cadecoder.core.logging import log
|
|
22
22
|
from cadecoder.daemon.gateway.constants import (
|
|
23
23
|
FILESYSTEM_URI,
|
|
24
|
-
LEGACY_FILESYSTEM_URI,
|
|
25
|
-
LEGACY_MEMORY_SOURCES_URI,
|
|
26
|
-
LEGACY_MEMORY_URI,
|
|
27
|
-
LEGACY_TASK_TEMPLATE,
|
|
28
|
-
LEGACY_TASKS_URI,
|
|
29
|
-
LEGACY_THREAD_TEMPLATE,
|
|
30
|
-
LEGACY_THREADS_URI,
|
|
31
24
|
MCP_SURFACE,
|
|
32
25
|
MEMORY_SOURCES_URI,
|
|
33
26
|
MEMORY_URI,
|
|
@@ -311,25 +304,6 @@ def register_gateway_resources(app: Any) -> None:
|
|
|
311
304
|
mime_type="application/json",
|
|
312
305
|
handler=lambda _uri: filesystem_payload(),
|
|
313
306
|
)
|
|
314
|
-
# Legacy cade:// aliases — same handlers so hosts that have not refreshed
|
|
315
|
-
# skills/rules after upgrade keep working.
|
|
316
|
-
for legacy_uri, name, handler in (
|
|
317
|
-
(LEGACY_THREADS_URI, "threads-legacy", lambda _uri: threads_payload()),
|
|
318
|
-
(LEGACY_THREAD_TEMPLATE, "thread-legacy", thread_payload),
|
|
319
|
-
(LEGACY_MEMORY_URI, "memory-legacy", lambda _uri: memory_payload()),
|
|
320
|
-
(LEGACY_MEMORY_SOURCES_URI, "memory-sources-legacy", lambda _uri: memory_sources_payload()),
|
|
321
|
-
(LEGACY_TASKS_URI, "tasks-legacy", lambda _uri: tasks_payload()),
|
|
322
|
-
(LEGACY_TASK_TEMPLATE, "task-legacy", task_payload),
|
|
323
|
-
(LEGACY_FILESYSTEM_URI, "filesystem-legacy", lambda _uri: filesystem_payload()),
|
|
324
|
-
):
|
|
325
|
-
app.add_resource(
|
|
326
|
-
legacy_uri,
|
|
327
|
-
name=name,
|
|
328
|
-
title=name,
|
|
329
|
-
description="Legacy cade:// alias; prefer the plain-named URI.",
|
|
330
|
-
mime_type="application/json",
|
|
331
|
-
handler=handler,
|
|
332
|
-
)
|
|
333
307
|
log.debug("registered gateway thread/memory/tasks/filesystem resources")
|
|
334
308
|
|
|
335
309
|
|
|
@@ -26,7 +26,6 @@ from collections.abc import Awaitable, Callable
|
|
|
26
26
|
|
|
27
27
|
from cadecoder.core.logging import log
|
|
28
28
|
from cadecoder.daemon.gateway.constants import (
|
|
29
|
-
LEGACY_THREADS_URI,
|
|
30
29
|
THREADS_URI,
|
|
31
30
|
thread_uri,
|
|
32
31
|
)
|
|
@@ -115,14 +114,7 @@ class ThreadUpdateBus:
|
|
|
115
114
|
registry, emit, loop = self._registry, self._emit, self._loop
|
|
116
115
|
if registry is None or emit is None or loop is None:
|
|
117
116
|
return
|
|
118
|
-
|
|
119
|
-
# the 0.16.21 rename keep receiving updates until they reinstall.
|
|
120
|
-
uris = (
|
|
121
|
-
thread_uri(thread_id),
|
|
122
|
-
THREADS_URI,
|
|
123
|
-
f"cade://thread/{thread_id}",
|
|
124
|
-
LEGACY_THREADS_URI,
|
|
125
|
-
)
|
|
117
|
+
uris = (thread_uri(thread_id), THREADS_URI)
|
|
126
118
|
targets: list[tuple[str, str]] = []
|
|
127
119
|
for uri in uris:
|
|
128
120
|
for session_id in registry.sessions_for(uri):
|
{cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/.cursor-plugin/plugin.json
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "cade",
|
|
3
3
|
"displayName": "Cade",
|
|
4
4
|
"description": "Your persistent on-device agent: notes memory, durable tasks, and connected tools via Ask.",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.19.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Arcade.dev",
|
|
8
8
|
"email": "support@arcade.dev"
|
|
@@ -30,7 +30,9 @@ def _mcp_servers_from_file(path: Path) -> dict[str, Any] | None:
|
|
|
30
30
|
return None
|
|
31
31
|
if not isinstance(data, dict):
|
|
32
32
|
return None
|
|
33
|
-
|
|
33
|
+
# "servers" is VS Code's spelling; without it the doctor skips that host
|
|
34
|
+
# silently, so neither a missing entry nor a stale endpoint is ever caught.
|
|
35
|
+
servers = data.get("mcpServers") or data.get("mcp") or data.get("servers")
|
|
34
36
|
return servers if isinstance(servers, dict) else None
|
|
35
37
|
|
|
36
38
|
|
|
@@ -16,20 +16,19 @@
|
|
|
16
16
|
# support globs (`Local_*`), regex (`/^Local_Task/`), and pipe lists
|
|
17
17
|
# (`Local_ReadFile|Local_ListFiles`).
|
|
18
18
|
#
|
|
19
|
-
# The shipped default below
|
|
20
|
-
#
|
|
21
|
-
#
|
|
19
|
+
# The shipped default below allows every tool. Narrow it by adding patterns to
|
|
20
|
+
# `allow` (e.g. ["Local_*", "Memory_*"]) if you want this agent restricted to a
|
|
21
|
+
# subset, or to `deny` to block specific tools.
|
|
22
22
|
#
|
|
23
23
|
# Every Local_* call that takes a filesystem path is also sandboxed to the
|
|
24
24
|
# agent's workspace. Absolute paths, `..` traversal, and symlinks that resolve
|
|
25
|
-
# outside it are rejected before the tool runs.
|
|
26
|
-
#
|
|
25
|
+
# outside it are rejected before the tool runs. Both shell tools are contained
|
|
26
|
+
# by the OS sandbox instead: Local_ScratchBash sees only an isolated scratch
|
|
27
|
+
# dir (network off), and Local_Bash mounts just the agent's granted paths.
|
|
27
28
|
#
|
|
28
29
|
# Removing this whole table restores the default on the next `cade daemon init`.
|
|
29
|
-
# Leaving it here with both lists empty is a deliberate "no restrictions at
|
|
30
|
-
# all" and is preserved as-is.
|
|
31
30
|
allow = []
|
|
32
|
-
deny = [
|
|
31
|
+
deny = []
|
|
33
32
|
|
|
34
33
|
[adapters.telegram]
|
|
35
34
|
enabled = false
|
|
@@ -26,11 +26,31 @@ warnings.filterwarnings(
|
|
|
26
26
|
category=DeprecationWarning,
|
|
27
27
|
)
|
|
28
28
|
|
|
29
|
+
from typing import TYPE_CHECKING, Any # noqa: E402
|
|
30
|
+
|
|
29
31
|
from cadecoder.voice.cleanup import strip_for_speech # noqa: E402
|
|
30
|
-
|
|
32
|
+
|
|
33
|
+
if TYPE_CHECKING:
|
|
34
|
+
from cadecoder.voice.session import VoiceChatSession, run_voice_session
|
|
31
35
|
|
|
32
36
|
__all__ = [
|
|
33
37
|
"VoiceChatSession",
|
|
34
38
|
"run_voice_session",
|
|
35
39
|
"strip_for_speech",
|
|
36
40
|
]
|
|
41
|
+
|
|
42
|
+
# The session module pulls in sounddevice and the MLX stack, which only ship
|
|
43
|
+
# with the optional ``voice`` extra. Importing it here made the whole package
|
|
44
|
+
# unimportable without them — including ``cleanup``, which is pure text and
|
|
45
|
+
# needs nothing. Resolve the heavy names on first access instead, so
|
|
46
|
+
# ``from cadecoder.voice import run_voice_session`` still works unchanged.
|
|
47
|
+
_LAZY = frozenset({"VoiceChatSession", "run_voice_session"})
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def __getattr__(name: str) -> Any:
|
|
51
|
+
"""Import the audio-dependent exports on demand (PEP 562)."""
|
|
52
|
+
if name in _LAZY:
|
|
53
|
+
from cadecoder.voice import session
|
|
54
|
+
|
|
55
|
+
return getattr(session, name)
|
|
56
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/.claude-plugin/marketplace.json
RENAMED
|
File without changes
|
{cade_cli-0.18.0 → cade_cli-0.19.0}/src/cadecoder/host_plugin/assets/.cursor-plugin/marketplace.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|