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.
Files changed (202) hide show
  1. {cade_cli-0.16.4 → cade_cli-0.16.6}/PKG-INFO +9 -5
  2. {cade_cli-0.16.4 → cade_cli-0.16.6}/README.md +8 -4
  3. {cade_cli-0.16.4 → cade_cli-0.16.6}/pyproject.toml +1 -1
  4. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/daemon.py +13 -5
  5. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/imessage.py +1 -1
  6. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/config.py +1 -1
  7. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/server.py +15 -1
  8. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/shim.py +13 -6
  9. {cade_cli-0.16.4 → cade_cli-0.16.6}/.gitignore +0 -0
  10. {cade_cli-0.16.4 → cade_cli-0.16.6}/LICENSE +0 -0
  11. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/__init__.py +0 -0
  12. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/__main__.py +0 -0
  13. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/_metadata.py +0 -0
  14. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/config.py +0 -0
  15. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/errors.py +0 -0
  16. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/grants.py +0 -0
  17. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/resources.py +0 -0
  18. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/sandbox.py +0 -0
  19. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/server.py +0 -0
  20. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/__init__.py +0 -0
  21. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/_read_cache.py +0 -0
  22. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/access.py +0 -0
  23. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/agents.py +0 -0
  24. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/context.py +0 -0
  25. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/filesystem.py +0 -0
  26. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/git.py +0 -0
  27. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/notifications.py +0 -0
  28. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/questions.py +0 -0
  29. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/results.py +0 -0
  30. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/schemas.py +0 -0
  31. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/search.py +0 -0
  32. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/shell.py +0 -0
  33. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/snippets.py +0 -0
  34. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/tasks.py +0 -0
  35. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/web_fetch.py +0 -0
  36. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/tools/web_search.py +0 -0
  37. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/utils.py +0 -0
  38. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/__init__.py +0 -0
  39. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/arcade_client.py +0 -0
  40. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/cache.py +0 -0
  41. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/extract.py +0 -0
  42. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/markdown.py +0 -0
  43. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/preapproved.py +0 -0
  44. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/prompts.py +0 -0
  45. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/scrape.py +0 -0
  46. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/__init__.py +0 -0
  47. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/arcade.py +0 -0
  48. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/base.py +0 -0
  49. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cade_mcp_local/web/search/http.py +0 -0
  50. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/__init__.py +0 -0
  51. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ai/__init__.py +0 -0
  52. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ai/prompts.py +0 -0
  53. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/__init__.py +0 -0
  54. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/app.py +0 -0
  55. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/auth.py +0 -0
  56. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/__init__.py +0 -0
  57. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/account.py +0 -0
  58. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/agents.py +0 -0
  59. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/auth.py +0 -0
  60. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/chat.py +0 -0
  61. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/cron.py +0 -0
  62. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/grant.py +0 -0
  63. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/hooks.py +0 -0
  64. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/mcp.py +0 -0
  65. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/mem.py +0 -0
  66. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/tasks.py +0 -0
  67. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/thread.py +0 -0
  68. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/commands/tools.py +0 -0
  69. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/mcp_hosts.py +0 -0
  70. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/cli/onboarding.py +0 -0
  71. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/__init__.py +0 -0
  72. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/agent.py +0 -0
  73. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/comms.py +0 -0
  74. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/config.py +0 -0
  75. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/constants.py +0 -0
  76. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/errors.py +0 -0
  77. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/frozen.py +0 -0
  78. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/git.py +0 -0
  79. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/inbox.py +0 -0
  80. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/logging.py +0 -0
  81. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/memory.py +0 -0
  82. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/model_specs.py +0 -0
  83. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/names.py +0 -0
  84. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/paths.py +0 -0
  85. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/runtime.py +0 -0
  86. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/secrets.py +0 -0
  87. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/spawn.py +0 -0
  88. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/core/types.py +0 -0
  89. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/__init__.py +0 -0
  90. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/__init__.py +0 -0
  91. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/base.py +0 -0
  92. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/factory.py +0 -0
  93. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/registry.py +0 -0
  94. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/stub.py +0 -0
  95. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/adapters/telegram.py +0 -0
  96. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/allowlist.py +0 -0
  97. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/attach.py +0 -0
  98. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/chunker.py +0 -0
  99. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/client.py +0 -0
  100. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/commands.py +0 -0
  101. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/control.py +0 -0
  102. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/cron.py +0 -0
  103. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/elicitation.py +0 -0
  104. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/ensure.py +0 -0
  105. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/format.py +0 -0
  106. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/__init__.py +0 -0
  107. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/app.py +0 -0
  108. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/arcade_export.py +0 -0
  109. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/auth.py +0 -0
  110. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/constants.py +0 -0
  111. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/elicitation.py +0 -0
  112. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/exposure.py +0 -0
  113. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/limits.py +0 -0
  114. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/middleware.py +0 -0
  115. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/resources.py +0 -0
  116. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/subscriptions.py +0 -0
  117. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/gateway/turn_bridge.py +0 -0
  118. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/grants.py +0 -0
  119. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/inbox_cron.py +0 -0
  120. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/install.py +0 -0
  121. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/live.py +0 -0
  122. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/lock.py +0 -0
  123. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/mesh.py +0 -0
  124. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/message_pump.py +0 -0
  125. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/observability.py +0 -0
  126. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/owner.py +0 -0
  127. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/progress_sink.py +0 -0
  128. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/registry.py +0 -0
  129. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/router.py +0 -0
  130. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/runner.py +0 -0
  131. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/runner_main.py +0 -0
  132. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/secrets.py +0 -0
  133. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/secrets_broker.py +0 -0
  134. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/services.py +0 -0
  135. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/sinks.py +0 -0
  136. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/supervisor.py +0 -0
  137. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/tokens.py +0 -0
  138. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/traffic.py +0 -0
  139. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/turns.py +0 -0
  140. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/daemon/wake.py +0 -0
  141. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/__init__.py +0 -0
  142. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/context_window.py +0 -0
  143. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/mcp_schema_index.py +0 -0
  144. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/orchestrator.py +0 -0
  145. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/parallel.py +0 -0
  146. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/tool_result_store.py +0 -0
  147. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/execution/tool_schema_cache.py +0 -0
  148. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/__init__.py +0 -0
  149. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/config.py +0 -0
  150. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/engine.py +0 -0
  151. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/__init__.py +0 -0
  152. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/callback.py +0 -0
  153. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/command.py +0 -0
  154. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/http.py +0 -0
  155. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/prompt.py +0 -0
  156. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/executors/ssrf_guard.py +0 -0
  157. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/matchers.py +0 -0
  158. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/registry.py +0 -0
  159. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/hooks/types.py +0 -0
  160. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/__init__.py +0 -0
  161. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/anthropic.py +0 -0
  162. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/base.py +0 -0
  163. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/http_client.py +0 -0
  164. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/ollama.py +0 -0
  165. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/providers/openai.py +0 -0
  166. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/serve/__init__.py +0 -0
  167. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/storage/__init__.py +0 -0
  168. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/storage/threads.py +0 -0
  169. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/__init__.py +0 -0
  170. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/scheduler.py +0 -0
  171. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/store.py +0 -0
  172. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tasks/types.py +0 -0
  173. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/login_failed.html +0 -0
  174. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/login_success.html +0 -0
  175. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/serve/launchd.plist.tmpl +0 -0
  176. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/serve/serve.toml.example +0 -0
  177. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/serve/systemd.service.tmpl +0 -0
  178. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/templates/styles.css +0 -0
  179. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/__init__.py +0 -0
  180. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/__init__.py +0 -0
  181. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/_request_ctx.py +0 -0
  182. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/base.py +0 -0
  183. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/composite.py +0 -0
  184. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/config.py +0 -0
  185. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/manager/mcp.py +0 -0
  186. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/__init__.py +0 -0
  187. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/discovered.py +0 -0
  188. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/scoring.py +0 -0
  189. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/tools/search/service.py +0 -0
  190. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/__init__.py +0 -0
  191. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/completion.py +0 -0
  192. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/display.py +0 -0
  193. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/elicitation.py +0 -0
  194. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/input.py +0 -0
  195. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/session.py +0 -0
  196. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/ui/slash.py +0 -0
  197. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/__init__.py +0 -0
  198. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/audio.py +0 -0
  199. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/cleanup.py +0 -0
  200. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/session.py +0 -0
  201. {cade_cli-0.16.4 → cade_cli-0.16.6}/src/cadecoder/voice/stt.py +0 -0
  202. {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.4
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.4 CADE_INSTALL_DIR=/usr/local/bin \
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 Cloud + user MCP servers** — anything you register.
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; MCP hosts authenticate with bearer tokens; tools are default-deny against `[tools].allow`.
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]]`, `[serve]`, hooks) |
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.4 CADE_INSTALL_DIR=/usr/local/bin \
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 Cloud + user MCP servers** — anything you register.
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; MCP hosts authenticate with bearer tokens; tools are default-deny against `[tools].allow`.
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]]`, `[serve]`, hooks) |
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
  ---
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cade-cli"
3
- version = "0.16.4"
3
+ version = "0.16.6"
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"
@@ -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
- no_auth: bool = typer.Option(
107
- False, "--no-auth", help="Loopback only: treat every caller as the local principal."
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=not no_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
- "[serve.adapters.imessage]."
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/serve/adapters/` is the only code change needed.
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 drop --no-auth, or bind 127.0.0.1"
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
- manifest = read_gateway_manifest()
157
- if manifest is None:
158
- sys.stderr.write(
159
- "cade: no running daemon to connect to.\nStart one with: cade daemon start\n"
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