cade-cli 0.19.0__tar.gz → 0.19.2__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.
Files changed (220) hide show
  1. {cade_cli-0.19.0 → cade_cli-0.19.2}/PKG-INFO +1 -1
  2. {cade_cli-0.19.0 → cade_cli-0.19.2}/pyproject.toml +1 -1
  3. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/account.py +27 -20
  4. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/.claude-plugin/plugin.json +1 -1
  5. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/.cursor-plugin/plugin.json +1 -1
  6. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/doctor.py +28 -0
  7. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/manager/composite.py +26 -3
  8. {cade_cli-0.19.0 → cade_cli-0.19.2}/.gitignore +0 -0
  9. {cade_cli-0.19.0 → cade_cli-0.19.2}/LICENSE +0 -0
  10. {cade_cli-0.19.0 → cade_cli-0.19.2}/README.md +0 -0
  11. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/__init__.py +0 -0
  12. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/__main__.py +0 -0
  13. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/_metadata.py +0 -0
  14. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/config.py +0 -0
  15. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/errors.py +0 -0
  16. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/grants.py +0 -0
  17. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/resources.py +0 -0
  18. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/sandbox.py +0 -0
  19. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/server.py +0 -0
  20. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/__init__.py +0 -0
  21. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/_read_cache.py +0 -0
  22. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/access.py +0 -0
  23. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/agents.py +0 -0
  24. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/filesystem.py +0 -0
  25. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/git.py +0 -0
  26. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/notifications.py +0 -0
  27. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/questions.py +0 -0
  28. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/results.py +0 -0
  29. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/schemas.py +0 -0
  30. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/search.py +0 -0
  31. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/shell.py +0 -0
  32. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/tasks.py +0 -0
  33. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/web_fetch.py +0 -0
  34. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/tools/web_search.py +0 -0
  35. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/utils.py +0 -0
  36. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/__init__.py +0 -0
  37. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/arcade_client.py +0 -0
  38. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/cache.py +0 -0
  39. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/extract.py +0 -0
  40. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/markdown.py +0 -0
  41. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/preapproved.py +0 -0
  42. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/prompts.py +0 -0
  43. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/scrape.py +0 -0
  44. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/search/__init__.py +0 -0
  45. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/search/arcade.py +0 -0
  46. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/search/base.py +0 -0
  47. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cade_mcp_local/web/search/http.py +0 -0
  48. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/__init__.py +0 -0
  49. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ai/__init__.py +0 -0
  50. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ai/prompts.py +0 -0
  51. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/__init__.py +0 -0
  52. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/app.py +0 -0
  53. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/auth.py +0 -0
  54. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/__init__.py +0 -0
  55. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/agent_group.py +0 -0
  56. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/agents.py +0 -0
  57. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/auth.py +0 -0
  58. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/chat.py +0 -0
  59. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/cron.py +0 -0
  60. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/daemon.py +0 -0
  61. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/grant.py +0 -0
  62. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/hooks.py +0 -0
  63. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/mcp.py +0 -0
  64. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/mem.py +0 -0
  65. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/tasks.py +0 -0
  66. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/thread.py +0 -0
  67. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/commands/tools.py +0 -0
  68. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/mcp_hosts.py +0 -0
  69. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/onboarding.py +0 -0
  70. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/cli/ui.py +0 -0
  71. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/__init__.py +0 -0
  72. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/agent.py +0 -0
  73. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/binary.py +0 -0
  74. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/comms.py +0 -0
  75. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/config.py +0 -0
  76. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/constants.py +0 -0
  77. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/errors.py +0 -0
  78. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/frozen.py +0 -0
  79. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/git.py +0 -0
  80. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/inbox.py +0 -0
  81. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/logging.py +0 -0
  82. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/memory.py +0 -0
  83. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/model_specs.py +0 -0
  84. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/names.py +0 -0
  85. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/paths.py +0 -0
  86. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/runtime.py +0 -0
  87. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/secrets.py +0 -0
  88. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/spawn.py +0 -0
  89. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/text.py +0 -0
  90. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/core/types.py +0 -0
  91. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/__init__.py +0 -0
  92. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/adapters/__init__.py +0 -0
  93. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/adapters/base.py +0 -0
  94. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/adapters/factory.py +0 -0
  95. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/adapters/imessage.py +0 -0
  96. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/adapters/registry.py +0 -0
  97. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/adapters/stub.py +0 -0
  98. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/adapters/telegram.py +0 -0
  99. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/allowlist.py +0 -0
  100. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/attach.py +0 -0
  101. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/chunker.py +0 -0
  102. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/client.py +0 -0
  103. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/commands.py +0 -0
  104. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/config.py +0 -0
  105. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/control.py +0 -0
  106. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/cron.py +0 -0
  107. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/elicitation.py +0 -0
  108. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/ensure.py +0 -0
  109. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/format.py +0 -0
  110. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/__init__.py +0 -0
  111. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/app.py +0 -0
  112. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/auth.py +0 -0
  113. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/constants.py +0 -0
  114. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/elicitation.py +0 -0
  115. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/exposure.py +0 -0
  116. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/host_agent.py +0 -0
  117. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/limits.py +0 -0
  118. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/middleware.py +0 -0
  119. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/resources.py +0 -0
  120. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/subscriptions.py +0 -0
  121. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/gateway/turn_bridge.py +0 -0
  122. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/grants.py +0 -0
  123. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/inbox.py +0 -0
  124. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/inbox_cron.py +0 -0
  125. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/install.py +0 -0
  126. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/lock.py +0 -0
  127. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/mesh.py +0 -0
  128. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/message_pump.py +0 -0
  129. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/observability.py +0 -0
  130. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/owner.py +0 -0
  131. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/progress_sink.py +0 -0
  132. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/registry.py +0 -0
  133. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/router.py +0 -0
  134. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/runner.py +0 -0
  135. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/runner_main.py +0 -0
  136. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/secrets.py +0 -0
  137. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/secrets_broker.py +0 -0
  138. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/server.py +0 -0
  139. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/services.py +0 -0
  140. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/sinks.py +0 -0
  141. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/supervisor.py +0 -0
  142. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/tokens.py +0 -0
  143. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/traffic.py +0 -0
  144. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/turns.py +0 -0
  145. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/daemon/wake.py +0 -0
  146. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/execution/__init__.py +0 -0
  147. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/execution/context_window.py +0 -0
  148. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/execution/mcp_schema_index.py +0 -0
  149. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/execution/orchestrator.py +0 -0
  150. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/execution/parallel.py +0 -0
  151. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/execution/tool_result_store.py +0 -0
  152. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/execution/tool_schema_cache.py +0 -0
  153. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/__init__.py +0 -0
  154. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/config.py +0 -0
  155. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/engine.py +0 -0
  156. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/executors/__init__.py +0 -0
  157. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/executors/callback.py +0 -0
  158. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/executors/command.py +0 -0
  159. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/executors/http.py +0 -0
  160. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/executors/prompt.py +0 -0
  161. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/executors/ssrf_guard.py +0 -0
  162. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/matchers.py +0 -0
  163. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/registry.py +0 -0
  164. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/hooks/types.py +0 -0
  165. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/__init__.py +0 -0
  166. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/.claude-plugin/marketplace.json +0 -0
  167. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/.cursor-plugin/marketplace.json +0 -0
  168. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/agents/operator.md +0 -0
  169. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/commands/ask.md +0 -0
  170. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/commands/memory.md +0 -0
  171. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/commands/tasks.md +0 -0
  172. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/mcp.json +0 -0
  173. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/rules/gateway.mdc +0 -0
  174. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/skills/ask/SKILL.md +0 -0
  175. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/skills/memory/SKILL.md +0 -0
  176. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/assets/skills/tasks/SKILL.md +0 -0
  177. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/install.py +0 -0
  178. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/paths.py +0 -0
  179. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/host_plugin/state.py +0 -0
  180. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/providers/__init__.py +0 -0
  181. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/providers/anthropic.py +0 -0
  182. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/providers/base.py +0 -0
  183. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/providers/http_client.py +0 -0
  184. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/providers/ollama.py +0 -0
  185. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/providers/openai.py +0 -0
  186. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/storage/__init__.py +0 -0
  187. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/storage/threads.py +0 -0
  188. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tasks/__init__.py +0 -0
  189. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tasks/scheduler.py +0 -0
  190. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tasks/store.py +0 -0
  191. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tasks/types.py +0 -0
  192. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/templates/login_failed.html +0 -0
  193. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/templates/login_success.html +0 -0
  194. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/templates/serve/launchd.plist.tmpl +0 -0
  195. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/templates/serve/serve.toml.example +0 -0
  196. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/templates/serve/systemd.service.tmpl +0 -0
  197. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/templates/styles.css +0 -0
  198. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/__init__.py +0 -0
  199. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/manager/__init__.py +0 -0
  200. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/manager/_request_ctx.py +0 -0
  201. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/manager/base.py +0 -0
  202. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/manager/config.py +0 -0
  203. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/manager/mcp.py +0 -0
  204. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/search/__init__.py +0 -0
  205. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/search/discovered.py +0 -0
  206. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/search/scoring.py +0 -0
  207. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/tools/search/service.py +0 -0
  208. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ui/__init__.py +0 -0
  209. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ui/completion.py +0 -0
  210. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ui/display.py +0 -0
  211. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ui/elicitation.py +0 -0
  212. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ui/input.py +0 -0
  213. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ui/session.py +0 -0
  214. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/ui/slash.py +0 -0
  215. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/voice/__init__.py +0 -0
  216. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/voice/audio.py +0 -0
  217. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/voice/cleanup.py +0 -0
  218. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/voice/session.py +0 -0
  219. {cade_cli-0.19.0 → cade_cli-0.19.2}/src/cadecoder/voice/stt.py +0 -0
  220. {cade_cli-0.19.0 → cade_cli-0.19.2}/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.19.0
3
+ Version: 0.19.2
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cade-cli"
3
- version = "0.19.0"
3
+ version = "0.19.2"
4
4
  description = "Cade - The CLI Agent from Arcade.dev (install: curl -fsSL https://arcadeagent.dev/install | sh)"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -96,6 +96,32 @@ def _doctor_paths(runtime: Any) -> dict[str, Any]:
96
96
  }
97
97
 
98
98
 
99
+ # How `cade doctor` groups its output. A check whose name is absent here still
100
+ # runs but is never printed, so `test_every_doctor_check_is_rendered` asserts
101
+ # this stays exhaustive.
102
+ DOCTOR_SECTIONS: list[tuple[str, list[str]]] = [
103
+ (
104
+ "Setup",
105
+ ["binary", "ssl-env", "anthropic-runtime", "onboarded", "model", "arcade-login", "arcade"],
106
+ ),
107
+ (
108
+ "Hosts (Cursor / Claude)",
109
+ [
110
+ "host-plugin",
111
+ "cursor-plugin",
112
+ "claude-skills",
113
+ "mcp-entry",
114
+ "mcp-endpoint",
115
+ "mcp-agent",
116
+ "mcp-builtins",
117
+ "mcp-duplicate",
118
+ "host-plugin-state",
119
+ ],
120
+ ),
121
+ ("Daemon & channels", ["daemon", "daemon-service", "adapters", "voice"]),
122
+ ]
123
+
124
+
99
125
  @account_app.command(
100
126
  "doctor",
101
127
  help="Show paths, the current agent, and check the Cade home for problems",
@@ -131,26 +157,7 @@ def doctor_cmd(
131
157
  raise typer.Exit(1) from None
132
158
 
133
159
  checks = run_host_doctor()
134
- sections: list[tuple[str, list[str]]] = [
135
- (
136
- "Setup",
137
- ["binary", "onboarded", "model", "arcade-login", "arcade"],
138
- ),
139
- (
140
- "Hosts (Cursor / Claude)",
141
- [
142
- "host-plugin",
143
- "cursor-plugin",
144
- "claude-skills",
145
- "mcp-entry",
146
- "mcp-command",
147
- "mcp-agent",
148
- "mcp-duplicate",
149
- "host-plugin-state",
150
- ],
151
- ),
152
- ("Daemon & channels", ["daemon", "adapters", "voice"]),
153
- ]
160
+ sections = DOCTOR_SECTIONS
154
161
  by_name = {c.name: c for c in checks}
155
162
  failed = False
156
163
  warned = False
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cade",
3
3
  "description": "Your persistent on-device agent: notes memory, durable tasks, and connected tools via Ask.",
4
- "version": "0.19.0",
4
+ "version": "0.19.2",
5
5
  "author": {
6
6
  "name": "Arcade.dev",
7
7
  "url": "https://docs.cade.dev"
@@ -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.19.0",
5
+ "version": "0.19.2",
6
6
  "author": {
7
7
  "name": "Arcade.dev",
8
8
  "email": "support@arcade.dev"
@@ -257,6 +257,33 @@ def _host_plugin_state(home: Path | None = None) -> DoctorCheck:
257
257
  )
258
258
 
259
259
 
260
+ def _builtin_mcp_enabled() -> DoctorCheck:
261
+ """Report built-in MCP servers an agent's ``mcp`` list has switched off.
262
+
263
+ A disabled built-in is filtered out of the loadout before it is ever
264
+ connected, so it produces no connect error anywhere — the session simply
265
+ comes up without its ``Local_*`` / ``Memory_*`` tools.
266
+ """
267
+ try:
268
+ from cadecoder.tools.manager.composite import (
269
+ builtin_default_servers,
270
+ effective_mcp_servers,
271
+ )
272
+
273
+ present = {cfg.name for cfg in effective_mcp_servers()}
274
+ missing = [d.name for d in builtin_default_servers() if d.name not in present]
275
+ except Exception as exc: # noqa: BLE001
276
+ return DoctorCheck("mcp-builtins", "warn", f"could not resolve MCP loadout: {exc}")
277
+ if missing:
278
+ fixes = " · ".join(f"cade mcp enable {name}" for name in missing)
279
+ return DoctorCheck(
280
+ "mcp-builtins",
281
+ "fail",
282
+ f"disabled in the agent's mcp list: {', '.join(missing)} — {fixes}",
283
+ )
284
+ return DoctorCheck("mcp-builtins", "ok", "built-in local + memory servers enabled")
285
+
286
+
260
287
  def _daemon_status() -> DoctorCheck:
261
288
  try:
262
289
  from cadecoder.daemon.services import read_gateway_manifest
@@ -497,6 +524,7 @@ def run_host_doctor(*, home: Path | None = None) -> list[DoctorCheck]:
497
524
  _mcp_entry_present(home=home),
498
525
  _mcp_endpoints(home=home),
499
526
  _mcp_agent(),
527
+ _builtin_mcp_enabled(),
500
528
  _duplicate_cursor_mcp(home=home),
501
529
  _host_plugin_state(home=home),
502
530
  _daemon_status(),
@@ -616,9 +616,29 @@ class CompositeToolManager(ToolManager):
616
616
  self._mcp_store = MCPServerStore(persona) if (enable_mcp and not local_only) else None
617
617
  if local_only:
618
618
  log.info("Local-only mode: external MCP servers disabled")
619
- for server_config in effective_mcp_servers(
619
+ effective = effective_mcp_servers(
620
620
  persona=persona, enable_user=enable_mcp, local_only=local_only
621
- ):
621
+ )
622
+ # A built-in that an agent's mcp list disables is filtered out before it
623
+ # reaches us — it never connects, so it never errors, and the session
624
+ # loses every Local_*/Memory_* tool with nothing to explain it. Notice
625
+ # the gap here and carry it into connect_errors so it surfaces like any
626
+ # other unavailable server.
627
+ present = {cfg.name for cfg in effective}
628
+ self._disabled_builtins: list[tuple[str, str]] = [
629
+ (
630
+ default.name,
631
+ "disabled in this agent's mcp list; re-enable with "
632
+ f"'cade mcp enable {default.name}'",
633
+ )
634
+ for default in builtin_default_servers(persona)
635
+ if default.name not in present
636
+ ]
637
+ for _name, _reason in self._disabled_builtins:
638
+ log.warning(f"built-in MCP server '{_name}' is {_reason}")
639
+ # Known before any load, so report it without waiting for get_tools().
640
+ self._connect_errors = list(self._disabled_builtins)
641
+ for server_config in effective:
622
642
  if server_config.name == BUILTIN_MEMORY_NAME:
623
643
  self._memory_config = server_config
624
644
  continue
@@ -886,7 +906,7 @@ class CompositeToolManager(ToolManager):
886
906
  self._defer_log_emitted = True
887
907
 
888
908
  self._deferred_names = set()
889
- self._connect_errors = []
909
+ self._connect_errors = list(self._disabled_builtins)
890
910
 
891
911
  # Process results (asyncio.gather preserves input order)
892
912
  auth_warnings: list[tuple[str, str | None]] = []
@@ -1016,6 +1036,9 @@ class CompositeToolManager(ToolManager):
1016
1036
 
1017
1037
  local_count += self._register_static_memory_tools(all_tools, server_statuses)
1018
1038
 
1039
+ for name, reason in self._disabled_builtins:
1040
+ server_statuses[name] = {"status": "disabled", "tool_count": 0, "error": reason}
1041
+
1019
1042
  total_elapsed = time.monotonic() - total_start
1020
1043
 
1021
1044
  # Summary
File without changes
File without changes
File without changes