deepagents-code 0.1.1__tar.gz → 0.1.3__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 (257) hide show
  1. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/.gitignore +2 -0
  2. deepagents_code-0.1.3/AGENTS.md +95 -0
  3. deepagents_code-0.1.3/CHANGELOG.md +46 -0
  4. deepagents_code-0.1.3/COMMANDS.md +44 -0
  5. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/Makefile +8 -1
  6. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/PKG-INFO +3 -10
  7. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/README.md +0 -7
  8. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/__init__.py +1 -1
  9. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_version.py +1 -1
  10. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/agent.py +4 -4
  11. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/app.py +1173 -178
  12. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/command_registry.py +15 -6
  13. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/config.py +22 -4
  14. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/main.py +88 -37
  15. deepagents_code-0.1.3/deepagents_code/mcp_auth.py +1287 -0
  16. deepagents_code-0.1.3/deepagents_code/mcp_commands.py +174 -0
  17. deepagents_code-0.1.3/deepagents_code/mcp_disabled.py +182 -0
  18. deepagents_code-0.1.3/deepagents_code/mcp_login_service.py +281 -0
  19. deepagents_code-0.1.3/deepagents_code/mcp_oauth_ui.py +199 -0
  20. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/base.py +37 -3
  21. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/github.py +14 -3
  22. deepagents_code-0.1.3/deepagents_code/mcp_providers/slack.py +175 -0
  23. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/mcp_tools.py +111 -22
  24. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/model_config.py +127 -1
  25. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/non_interactive.py +85 -62
  26. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/skills/commands.py +2 -3
  27. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/system_prompt.md +0 -30
  28. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/textual_adapter.py +51 -77
  29. deepagents_code-0.1.3/deepagents_code/token_state.py +88 -0
  30. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/ui.py +77 -75
  31. deepagents_code-0.1.3/deepagents_code/widgets/mcp_login.py +434 -0
  32. deepagents_code-0.1.3/deepagents_code/widgets/mcp_reconnect.py +208 -0
  33. deepagents_code-0.1.3/deepagents_code/widgets/mcp_viewer.py +1424 -0
  34. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/model_selector.py +266 -49
  35. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/welcome.py +66 -9
  36. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/pyproject.toml +3 -3
  37. deepagents_code-0.1.3/scripts/generate_commands_catalog.py +133 -0
  38. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +2 -4
  39. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_agent.py +2 -2
  40. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_agent_friendly.py +13 -13
  41. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_app.py +1485 -3
  42. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_args.py +4 -4
  43. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_autocomplete.py +1 -1
  44. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_command_registry.py +50 -2
  45. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_config.py +13 -7
  46. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_configurable_model.py +32 -32
  47. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_main.py +5 -5
  48. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_main_args.py +178 -6
  49. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_auth.py +665 -35
  50. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_commands.py +16 -4
  51. deepagents_code-0.1.3/tests/unit_tests/test_mcp_disabled.py +125 -0
  52. deepagents_code-0.1.3/tests/unit_tests/test_mcp_login_modal.py +266 -0
  53. deepagents_code-0.1.3/tests/unit_tests/test_mcp_login_service.py +291 -0
  54. deepagents_code-0.1.3/tests/unit_tests/test_mcp_oauth_ui.py +422 -0
  55. deepagents_code-0.1.3/tests/unit_tests/test_mcp_reconnect.py +130 -0
  56. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_tools.py +265 -5
  57. deepagents_code-0.1.3/tests/unit_tests/test_mcp_viewer.py +1905 -0
  58. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_model_config.py +68 -9
  59. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_model_selector.py +236 -5
  60. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_model_switch.py +21 -21
  61. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_non_interactive.py +26 -0
  62. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_offload.py +9 -6
  63. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_session_stats.py +12 -12
  64. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_startup_fast_paths.py +4 -4
  65. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_status.py +2 -2
  66. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_textual_adapter.py +257 -0
  67. deepagents_code-0.1.3/tests/unit_tests/test_token_tracker.py +217 -0
  68. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_welcome.py +20 -2
  69. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/uv.lock +9 -9
  70. deepagents_code-0.1.1/CHANGELOG.md +0 -17
  71. deepagents_code-0.1.1/deepagents_code/mcp_auth.py +0 -712
  72. deepagents_code-0.1.1/deepagents_code/mcp_commands.py +0 -204
  73. deepagents_code-0.1.1/deepagents_code/mcp_providers/slack.py +0 -130
  74. deepagents_code-0.1.1/deepagents_code/token_state.py +0 -31
  75. deepagents_code-0.1.1/deepagents_code/widgets/mcp_viewer.py +0 -432
  76. deepagents_code-0.1.1/tests/unit_tests/test_mcp_viewer.py +0 -197
  77. deepagents_code-0.1.1/tests/unit_tests/test_token_tracker.py +0 -150
  78. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/DEV.md +0 -0
  79. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/THREAT_MODEL.md +0 -0
  80. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/__main__.py +0 -0
  81. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_ask_user_types.py +0 -0
  82. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_cli_context.py +0 -0
  83. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_constants.py +0 -0
  84. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_debug.py +0 -0
  85. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_env_vars.py +0 -0
  86. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_git.py +0 -0
  87. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_server_config.py +0 -0
  88. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_session_stats.py +0 -0
  89. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_testing_models.py +0 -0
  90. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/_textual_patches.py +0 -0
  91. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/app.tcss +0 -0
  92. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/ask_user.py +0 -0
  93. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/auth_store.py +0 -0
  94. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/__init__.py +0 -0
  95. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/remember/SKILL.md +0 -0
  96. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/skill-creator/SKILL.md +0 -0
  97. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +0 -0
  98. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +0 -0
  99. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/clipboard.py +0 -0
  100. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/configurable_model.py +0 -0
  101. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/default_agent_prompt.md +0 -0
  102. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/editor.py +0 -0
  103. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/event_bus.py +0 -0
  104. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/extras_info.py +0 -0
  105. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/file_ops.py +0 -0
  106. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/formatting.py +0 -0
  107. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/hooks.py +0 -0
  108. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/input.py +0 -0
  109. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/integrations/__init__.py +0 -0
  110. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/integrations/sandbox_factory.py +0 -0
  111. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/integrations/sandbox_provider.py +0 -0
  112. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/iterm_cursor_guide.py +0 -0
  113. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/local_context.py +0 -0
  114. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/__init__.py +0 -0
  115. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/mcp_providers/_registry.py +0 -0
  116. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/mcp_trust.py +0 -0
  117. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/media_utils.py +0 -0
  118. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/notifications.py +0 -0
  119. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/offload.py +0 -0
  120. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/onboarding.py +0 -0
  121. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/output.py +0 -0
  122. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/project_utils.py +0 -0
  123. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/py.typed +0 -0
  124. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/remote_client.py +0 -0
  125. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/server.py +0 -0
  126. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/server_graph.py +0 -0
  127. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/server_manager.py +0 -0
  128. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/sessions.py +0 -0
  129. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/skills/__init__.py +0 -0
  130. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/skills/invocation.py +0 -0
  131. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/skills/load.py +0 -0
  132. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/state_migration.py +0 -0
  133. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/subagents.py +0 -0
  134. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/terminal_capabilities.py +0 -0
  135. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/terminal_escape.py +0 -0
  136. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/theme.py +0 -0
  137. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/tool_display.py +0 -0
  138. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/tools.py +0 -0
  139. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/unicode_security.py +0 -0
  140. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/update_check.py +0 -0
  141. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/__init__.py +0 -0
  142. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/_links.py +0 -0
  143. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/agent_selector.py +0 -0
  144. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/approval.py +0 -0
  145. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/ask_user.py +0 -0
  146. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/auth.py +0 -0
  147. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/autocomplete.py +0 -0
  148. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/chat_input.py +0 -0
  149. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/diff.py +0 -0
  150. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/history.py +0 -0
  151. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/launch_init.py +0 -0
  152. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/loading.py +0 -0
  153. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/message_store.py +0 -0
  154. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/messages.py +0 -0
  155. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/notification_center.py +0 -0
  156. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/notification_detail.py +0 -0
  157. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/notification_settings.py +0 -0
  158. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/status.py +0 -0
  159. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/theme_selector.py +0 -0
  160. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/thread_selector.py +0 -0
  161. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/tool_renderers.py +0 -0
  162. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/tool_widgets.py +0 -0
  163. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/update_available.py +0 -0
  164. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/deepagents_code/widgets/update_progress.py +0 -0
  165. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/examples/skills/arxiv-search/SKILL.md +0 -0
  166. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  167. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/examples/skills/langgraph-docs/SKILL.md +0 -0
  168. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/examples/skills/skill-creator/SKILL.md +0 -0
  169. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  170. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  171. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/examples/skills/web-research/SKILL.md +0 -0
  172. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/images/tui.png +0 -0
  173. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/scripts/check_imports.py +0 -0
  174. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/scripts/debug_server.sh +0 -0
  175. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/scripts/install.sh +0 -0
  176. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/README.md +0 -0
  177. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/__init__.py +0 -0
  178. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/benchmarks/__init__.py +0 -0
  179. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
  180. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/conftest.py +0 -0
  181. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/test_acp_mode.py +0 -0
  182. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/test_compact_resume.py +0 -0
  183. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/test_sandbox_factory.py +0 -0
  184. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/integration_tests/test_sandbox_operations.py +0 -0
  185. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/__init__.py +0 -0
  186. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/conftest.py +0 -0
  187. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/skills/__init__.py +0 -0
  188. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/skills/test_commands.py +0 -0
  189. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/skills/test_load.py +0 -0
  190. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/skills/test_skills_json.py +0 -0
  191. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_agent_selector.py +0 -0
  192. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_approval.py +0 -0
  193. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_ask_user.py +0 -0
  194. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_ask_user_middleware.py +0 -0
  195. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_auth_store.py +0 -0
  196. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_auth_widgets.py +0 -0
  197. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_charset.py +0 -0
  198. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_chat_input.py +0 -0
  199. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_clipboard.py +0 -0
  200. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_compact_tool.py +0 -0
  201. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_debug.py +0 -0
  202. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_editor.py +0 -0
  203. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_end_to_end.py +0 -0
  204. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_env_vars.py +0 -0
  205. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_event_bus.py +0 -0
  206. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_exception_handling.py +0 -0
  207. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_extras_info.py +0 -0
  208. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_file_ops.py +0 -0
  209. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_formatting.py +0 -0
  210. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_git.py +0 -0
  211. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_history.py +0 -0
  212. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_hooks.py +0 -0
  213. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_imports.py +0 -0
  214. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_input_parsing.py +0 -0
  215. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_iterm_cursor_guide.py +0 -0
  216. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_launch_init.py +0 -0
  217. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_links.py +0 -0
  218. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_loading.py +0 -0
  219. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_local_context.py +0 -0
  220. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_main_acp_mode.py +0 -0
  221. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_mcp_trust.py +0 -0
  222. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_media_utils.py +0 -0
  223. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_message_store.py +0 -0
  224. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_messages.py +0 -0
  225. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_notification_center.py +0 -0
  226. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_notification_detail.py +0 -0
  227. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_notifications.py +0 -0
  228. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_offload_dict_messages.py +0 -0
  229. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_onboarding.py +0 -0
  230. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_output.py +0 -0
  231. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_reload.py +0 -0
  232. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_remote_client.py +0 -0
  233. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_sandbox_factory.py +0 -0
  234. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_server.py +0 -0
  235. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_server_config.py +0 -0
  236. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_server_graph.py +0 -0
  237. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_server_helpers.py +0 -0
  238. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_server_manager.py +0 -0
  239. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_sessions.py +0 -0
  240. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_shell_allow_list.py +0 -0
  241. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_skill_invocation.py +0 -0
  242. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_state_migration.py +0 -0
  243. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_subagents.py +0 -0
  244. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_terminal_capabilities.py +0 -0
  245. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_terminal_escape.py +0 -0
  246. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_textual_patches.py +0 -0
  247. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_theme.py +0 -0
  248. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_thread_selector.py +0 -0
  249. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_tool_display.py +0 -0
  250. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_ui.py +0 -0
  251. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_unicode_security.py +0 -0
  252. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_update_available.py +0 -0
  253. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_update_check.py +0 -0
  254. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_update_progress.py +0 -0
  255. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/test_version.py +0 -0
  256. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/tools/__init__.py +0 -0
  257. {deepagents_code-0.1.1 → deepagents_code-0.1.3}/tests/unit_tests/tools/test_fetch_url.py +0 -0
@@ -138,6 +138,8 @@ celerybeat.pid
138
138
  # Environments
139
139
  .env
140
140
  .envrc
141
+ env.local
142
+ *.env.local
141
143
  .venv
142
144
  env/
143
145
  venv/
@@ -0,0 +1,95 @@
1
+ # `libs/code` agent guide
2
+
3
+ `deepagents-code` is the interactive coding agent — the Textual REPL, headless `-x` mode, MCP integration, skills, sandbox bootstrap, and slash-command surface. Forked from `deepagents-cli` at the 0.1.0 split.
4
+
5
+ For monorepo-wide conventions (commit titles, lint, testing, docs, CI, benchmarks), see the root `AGENTS.md`.
6
+
7
+ ## Textual (terminal UI framework)
8
+
9
+ `deepagents-code` uses [Textual](https://textual.textualize.io/).
10
+
11
+ **Key Textual resources:**
12
+
13
+ - **Guide:** https://textual.textualize.io/guide/
14
+ - **Widget gallery:** https://textual.textualize.io/widget_gallery/
15
+ - **CSS reference:** https://textual.textualize.io/styles/
16
+ - **API reference:** https://textual.textualize.io/api/
17
+
18
+ ### Styled text in widgets
19
+
20
+ Prefer Textual's `Content` (`textual.content`) over Rich's `Text` for widget rendering. `Content` is immutable (like `str`) and integrates natively with Textual's rendering pipeline. Rich `Text` is still correct for code that renders via Rich's `Console.print()` (e.g., `non_interactive.py`, `main.py`).
21
+
22
+ IMPORTANT: `Content` requires **Textual's** `Style` (`textual.style.Style`) for rendering, not Rich's `Style` (`rich.style.Style`). Mixing Rich `Style` objects into `Content` spans will cause `TypeError` during widget rendering. String styles (`"bold cyan"`, `"dim"`) work for non-link styling. For links, use `TStyle(link=url)`.
23
+
24
+ **Never use f-string interpolation in Rich markup** (e.g., `f"[bold]{var}[/bold]"`). If `var` contains square brackets, the markup breaks or throws. Use `Content` methods instead:
25
+
26
+ - `Content.from_markup("[bold]$var[/bold]", var=value)` — for inline markup templates. `$var` substitution auto-escapes dynamic content. **Use when the variable is external/user-controlled** (tool args, file paths, user messages, diff content, error messages from exceptions).
27
+ - `Content.styled(text, "bold")` — single style applied to plain text. No markup parsing. Use for static strings or when the variable is internal/trusted (glyphs, ints, enum-like status values). Avoid `Content.styled(f"..{var}..", style)` when `var` is user-controlled — while `styled` doesn't parse markup, the f-string pattern is fragile and inconsistent with the `from_markup` convention.
28
+ - `Content.assemble("prefix: ", (text, "bold"), " ", other_content)` — for composing pre-built `Content` objects, `(text, style)` tuples, and plain strings. Plain strings are treated as plain text (no markup parsing). Use for structural composition, especially when parts use `TStyle(link=url)`.
29
+ - `content.join(parts)` — like `str.join()` for `Content` objects.
30
+
31
+ **Decision rule:** if the value could ever come from outside the codebase (user input, tool output, API responses, file contents), use `from_markup` with `$var`. If it's a hardcoded string, glyph, or computed int, `styled` is fine.
32
+
33
+ ### `App.notify()` defaults to `markup=True`
34
+
35
+ Textual's `App.notify(message)` parses the message string as Rich markup by default. Any dynamic content (exception messages, file paths, user input, command strings) containing brackets `[]`, ANSI escape codes, or `=` will cause a `MarkupError` crash in Textual's Toast renderer. Always pass `markup=False` when the message contains f-string interpolated variables. Hardcoded string literals are safe with the default.
36
+
37
+ ### Rich `console.print()` and number highlighting
38
+
39
+ `console.print()` defaults to `highlight=True`, which runs `ReprHighlighter` and auto-applies bold + cyan to any detected numbers. This visually overrides subtle styles like `dim` (bold cancels dim in most terminals). Pass `highlight=False` on any `console.print()` call where the content contains numbers and consistent dim/subtle styling matters.
40
+
41
+ ### Textual patterns used in this codebase
42
+
43
+ - **Workers** (`@work` decorator) for async operations - see [Workers guide](https://textual.textualize.io/guide/workers/)
44
+ - **Message passing** for widget communication - see [Events guide](https://textual.textualize.io/guide/events/)
45
+ - **Reactive attributes** for state management - see [Reactivity guide](https://textual.textualize.io/guide/reactivity/)
46
+
47
+ ### Testing Textual apps
48
+
49
+ - Use `textual.pilot` for async UI testing - see [Testing guide](https://textual.textualize.io/guide/testing/)
50
+ - Snapshot testing available for visual regression - see repo `notes/snapshot_testing.md`
51
+
52
+ ## SDK dependency pin
53
+
54
+ `deepagents-code` pins an exact `deepagents==X.Y.Z` version in `pyproject.toml`. When developing features that depend on new SDK functionality, bump this pin as part of the same PR. A CI check verifies the pin matches the current SDK version at release time (unless bypassed with `dangerous-skip-sdk-pin-check`).
55
+
56
+ ## Startup performance
57
+
58
+ `deepagents-code` must stay fast to launch. Never import heavy packages (e.g., `deepagents`, LangChain, LangGraph) at module level or in the argument-parsing path. These imports pull in large dependency trees and add seconds to every invocation, including trivial commands like `deepagents-code -v`.
59
+
60
+ - Keep top-level imports in `main.py` and other entry-point modules minimal.
61
+ - Defer heavy imports to the point where they are actually needed (inside functions/methods).
62
+ - To read another package's version without importing it, use `importlib.metadata.version("package-name")`.
63
+ - Feature-gate checks on the startup hot path (before background workers fire) must be lightweight — env var lookups, small file reads. Never pull in expensive modules just to decide whether to skip a feature.
64
+ - When adding logic that already exists elsewhere (e.g., editable-install detection), import the existing cached implementation rather than duplicating it.
65
+ - Features that run shell commands silently must be opt-in, never default-enabled. Gate behind an explicit env var or config key.
66
+ - Background workers that spawn subprocesses must set a timeout to avoid blocking indefinitely.
67
+
68
+ ## CLI help screen
69
+
70
+ The `deepagents-code --help` screen is hand-maintained in `ui.show_help()`, separate from the argparse definitions in `main.parse_args()`. When adding a new CLI flag, update **both** files. A drift-detection test (`test_args.TestHelpScreenDrift`) fails if a flag is registered in argparse but missing from the help screen.
71
+
72
+ ## Splash screen tips
73
+
74
+ When adding a user-facing CLI feature (new slash command, keybinding, workflow), add a corresponding tip to the `_TIPS` list in `deepagents_code/widgets/welcome.py`. Tips are shown randomly on startup to help users discover features. Keep tips short and action-oriented (e.g., `"Press ctrl+x to compose prompts in your external editor"`).
75
+
76
+ ## Slash commands
77
+
78
+ Slash commands are defined as `SlashCommand` entries in the `COMMANDS` tuple in `deepagents_code/command_registry.py`. Each entry declares the command name, description, `bypass_tier` (queue-bypass classification), optional `hidden_keywords` for fuzzy matching, and optional `aliases`. Bypass-tier frozensets and the `SLASH_COMMANDS` autocomplete list are derived automatically — no other file should hard-code command metadata.
79
+
80
+ To add a new slash command: (1) add a `SlashCommand` entry to `COMMANDS`, (2) set the appropriate `bypass_tier`, (3) add a handler branch in `_handle_command` in `app.py`, (4) run `make lint && make test` — the drift test will catch any mismatch.
81
+
82
+ ## Adding a new model provider
83
+
84
+ `deepagents-code` supports LangChain-based chat model providers as optional dependencies. To add a new provider, update these files (all entries alphabetically sorted):
85
+
86
+ 1. `deepagents_code/model_config.py` — add `"provider_name": "ENV_VAR_NAME"` to `PROVIDER_API_KEY_ENV`
87
+ 2. `pyproject.toml` — add `provider = ["langchain-provider>=X.Y.Z,<N.0.0"]` to `[project.optional-dependencies]` and include it in the `all-providers` composite extra
88
+ 3. `tests/unit_tests/test_model_config.py` — add `assert PROVIDER_API_KEY_ENV["provider_name"] == "ENV_VAR_NAME"` to `TestProviderApiKeyEnv.test_contains_major_providers`
89
+
90
+ **Not required** unless the provider's models have a distinctive name prefix (like `gpt-*`, `claude*`, `gemini*`):
91
+
92
+ - `detect_provider()` in `config.py` — only needed for auto-detection from bare model names
93
+ - `Settings.has_*` property in `config.py` — only needed if referenced by `detect_provider()` fallback logic
94
+
95
+ Model discovery, credential checking, and UI integration are automatic once `PROVIDER_API_KEY_ENV` is populated and the `langchain-*` package is installed.
@@ -0,0 +1,46 @@
1
+ # Deep Agents Code Changelog
2
+
3
+ ## [0.1.3](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.2...deepagents-code==0.1.3) (2026-05-20)
4
+
5
+ ### Features
6
+
7
+ * In-TUI MCP OAuth login with auto-refresh ([#3469](https://github.com/langchain-ai/deepagents/issues/3469)) ([20e38b8](https://github.com/langchain-ai/deepagents/commit/20e38b8ebd8d9aa4697334432f7832a0a07aea3a))
8
+ * Float unauthorized MCP servers to top and prompt before reconnect ([#3493](https://github.com/langchain-ai/deepagents/issues/3493)) ([2d66580](https://github.com/langchain-ai/deepagents/commit/2d665804131961dfa7e2849248047deec818e4ef))
9
+ * Disable MCP servers from TUI ([#3501](https://github.com/langchain-ai/deepagents/issues/3501)) ([5725de8](https://github.com/langchain-ai/deepagents/commit/5725de857722dbca768a95bc6d97af5b838a11a9))
10
+ * `/restart` hidden slash command ([#3514](https://github.com/langchain-ai/deepagents/issues/3514)) ([74bdd36](https://github.com/langchain-ai/deepagents/commit/74bdd3688948d8369cdd978590f5a822eabeb12c))
11
+
12
+ ### Bug Fixes
13
+
14
+ * Persist `_context_tokens` via `after_model` middleware ([#3496](https://github.com/langchain-ai/deepagents/issues/3496)) ([e2bb284](https://github.com/langchain-ai/deepagents/commit/e2bb284e506e0e49a05169fc6de01bdf42350267))
15
+ * Refresh status bar model after recovering from failed startup ([#3511](https://github.com/langchain-ai/deepagents/issues/3511)) ([c96f822](https://github.com/langchain-ai/deepagents/commit/c96f822de187431404d093b852c4a855d3ab8d30))
16
+
17
+ ## [0.1.2](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.1...deepagents-code==0.1.2) (2026-05-19)
18
+
19
+ ### Features
20
+
21
+ * `/model` toggle for recommended-only list ([#3453](https://github.com/langchain-ai/deepagents/issues/3453)) ([c326b7e](https://github.com/langchain-ai/deepagents/commit/c326b7ec1b9940861175e0466ab4221f03e2bcba))
22
+ * `--timeout` flag for non-interactive ([#3351](https://github.com/langchain-ai/deepagents/issues/3351)) ([44e86ab](https://github.com/langchain-ai/deepagents/commit/44e86abbb1870f689dace8b1be6ed430d65e74c1))
23
+ * Browser loopback OAuth callback for MCP auth ([#3467](https://github.com/langchain-ai/deepagents/issues/3467)) ([d83aa07](https://github.com/langchain-ai/deepagents/commit/d83aa07c818af35800f81d062a147fa45a47ace7))
24
+ * MCP screen metadata ([#3349](https://github.com/langchain-ai/deepagents/issues/3349)) ([ce2f07e](https://github.com/langchain-ai/deepagents/commit/ce2f07e7211f22b3f44a1a232088b89a469a0a99))
25
+
26
+ ### Bug Fixes
27
+
28
+ * Drop sections from `system_prompt.md` already supplied by SDK middleware ([#3448](https://github.com/langchain-ai/deepagents/issues/3448)) ([9dbf2c2](https://github.com/langchain-ai/deepagents/commit/9dbf2c2f19e941e012d0c93418ef09fb56f30d6a))
29
+ * Rename stale usage commands ([#3460](https://github.com/langchain-ai/deepagents/issues/3460)) ([da43b7f](https://github.com/langchain-ai/deepagents/commit/da43b7f9d913e6190ff03c496a269faf08bbf182))
30
+ * Suppress interrupt-cleanup state writes from traces ([#3465](https://github.com/langchain-ai/deepagents/issues/3465)) ([319b24e](https://github.com/langchain-ai/deepagents/commit/319b24e6f179eaf56f105a6db683901c82fe95be))
31
+
32
+ ## [0.1.1](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.0...deepagents-code==0.1.1) (2026-05-16)
33
+
34
+ ### Bug Fixes
35
+
36
+ * Correct LangSmith sandbox working directory ([#3415](https://github.com/langchain-ai/deepagents/issues/3415)) ([b0e8d83](https://github.com/langchain-ai/deepagents/commit/b0e8d83f97a2a698268173a839000c84e8368324))
37
+ * Guard `fetch_url` against SSRF ([#3411](https://github.com/langchain-ai/deepagents/issues/3411)) ([54d8521](https://github.com/langchain-ai/deepagents/commit/54d8521976940dfe147ead4b56565360241335be))
38
+
39
+ ## [0.1.0](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.0.1...deepagents-code==0.1.0) (2026-05-12)
40
+
41
+ Hello world! Ported from `libs/cli`.
42
+
43
+ ---
44
+
45
+ `deepagents-code` was forked from `deepagents-cli` at v0.1.0 (2026-05-12).
46
+ For history prior to the fork, see [the `deepagents-cli` changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md).
@@ -0,0 +1,44 @@
1
+ <!-- AUTO-GENERATED by scripts/generate_commands_catalog.py — do not edit manually. -->
2
+ # Slash command catalog
3
+
4
+ Canonical list of slash commands for `deepagents-code`, derived from
5
+ `deepagents_code/command_registry.py`. Run `make commands-catalog` to
6
+ regenerate after editing the registry.
7
+
8
+
9
+ ## Public (25)
10
+
11
+ | Command | Aliases | Description |
12
+ | --- | --- | --- |
13
+ | `/agents` | | Browse and switch between available agents |
14
+ | `/auth` | `/connect` | Manage stored API keys for model providers |
15
+ | `/auto-update` | | Toggle automatic updates on or off |
16
+ | `/changelog` | | Open changelog in browser |
17
+ | `/clear` | | Clear chat and start new thread |
18
+ | `/copy` | | Copy latest assistant message to clipboard |
19
+ | `/docs` | | Open documentation in browser |
20
+ | `/editor` | | Open prompt in external editor ($EDITOR) |
21
+ | `/feedback` | | Submit a bug report or feature request |
22
+ | `/force-clear` | | Interrupt active work, clear chat, and start new thread |
23
+ | `/help` | | Show help |
24
+ | `/mcp` | | Show MCP servers; `/mcp login <server>` to authenticate, `/mcp reconnect` to load deferred logins, F2 in the viewer to disable/enable a server |
25
+ | `/model` | | Switch or configure model (--model-params, --default) |
26
+ | `/notifications` | | Configure startup warning preferences |
27
+ | `/offload` | `/compact` | Free up context window space by offloading older messages |
28
+ | `/quit` | `/q` | Exit app |
29
+ | `/reload` | | Reload config from environment variables and .env |
30
+ | `/remember` | | Update memory and skills from conversation |
31
+ | `/skill-creator` | | Guide for creating effective agent skills |
32
+ | `/theme` | | Switch color theme |
33
+ | `/threads` | | Browse and resume previous threads |
34
+ | `/tokens` | | Token usage |
35
+ | `/trace` | | Open current thread in LangSmith |
36
+ | `/update` | | Check for and install updates |
37
+ | `/version` | `/about` | Show version |
38
+
39
+ ## Hidden (2)
40
+
41
+ Hidden commands not exposed in autocomplete or help. See the `HIDDEN_COMMANDS` docstring in the registry for context.
42
+
43
+ - `/debug-error`
44
+ - `/restart`
@@ -1,4 +1,4 @@
1
- .PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage
1
+ .PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage commands-catalog commands-catalog-check
2
2
 
3
3
  .DEFAULT_GOAL := help
4
4
 
@@ -66,6 +66,7 @@ lint lint_diff lint_package lint_tests:
66
66
  [ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff check $(PYTHON_FILES)
67
67
  [ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff format $(PYTHON_FILES) --diff
68
68
  $(MAKE) type PYTHON_FILES="$(PYTHON_FILES)"
69
+ uv run --all-groups python scripts/generate_commands_catalog.py --check
69
70
 
70
71
  type: ## Run type checker
71
72
  type typecheck:
@@ -80,6 +81,12 @@ check_imports: ## Check imports
80
81
  check_imports: $(shell find deepagents_code -name '*.py')
81
82
  uv run --all-groups python ./scripts/check_imports.py $^
82
83
 
84
+ commands-catalog: ## Regenerate COMMANDS.md from the slash-command registry
85
+ uv run --all-groups python scripts/generate_commands_catalog.py
86
+
87
+ commands-catalog-check: ## Verify COMMANDS.md matches the slash-command registry
88
+ uv run --all-groups python scripts/generate_commands_catalog.py --check
89
+
83
90
  ######################
84
91
  # HELP
85
92
  ######################
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-code
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
5
5
  Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
6
6
  Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
@@ -27,13 +27,13 @@ Classifier: Topic :: Terminals
27
27
  Requires-Python: <4.0,>=3.11
28
28
  Requires-Dist: aiosqlite<1.0.0,>=0.19.0
29
29
  Requires-Dist: deepagents-acp>=0.0.4
30
- Requires-Dist: deepagents==0.6.1
30
+ Requires-Dist: deepagents==0.6.3
31
31
  Requires-Dist: httpx<1.0.0,>=0.28.1
32
32
  Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3
33
33
  Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
34
34
  Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
35
35
  Requires-Dist: langchain-openai<2.0.0,>=1.2.1
36
- Requires-Dist: langchain<2.0.0,>=1.3.0
36
+ Requires-Dist: langchain<2.0.0,>=1.3.1
37
37
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.0
38
38
  Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
39
39
  Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.28.1
@@ -154,13 +154,6 @@ curl -LsSf https://langch.in/dcode | bash
154
154
  DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
155
155
  ```
156
156
 
157
- Or install directly with `uv`:
158
-
159
- ```bash
160
- # Install with chosen model providers
161
- uv tool install 'deepagents-code[nvidia,ollama]'
162
- ```
163
-
164
157
  Run:
165
158
 
166
159
  ```bash
@@ -21,13 +21,6 @@ curl -LsSf https://langch.in/dcode | bash
21
21
  DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
22
22
  ```
23
23
 
24
- Or install directly with `uv`:
25
-
26
- ```bash
27
- # Install with chosen model providers
28
- uv tool install 'deepagents-code[nvidia,ollama]'
29
- ```
30
-
31
24
  Run:
32
25
 
33
26
  ```bash
@@ -1,4 +1,4 @@
1
- """Deep Agents CLI - Interactive AI coding assistant."""
1
+ """Deep Agents Code - Interactive AI coding assistant."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Keep the `x-release-please-version` annotation — release-please uses it to
4
4
  # bump `__version__` in sync with `pyproject.toml` on every release PR.
5
- __version__ = "0.1.1" # x-release-please-version
5
+ __version__ = "0.1.3" # x-release-please-version
6
6
 
7
7
  DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/code"
8
8
  """URL for `deepagents-code` documentation."""
@@ -420,7 +420,7 @@ def reset_agent(
420
420
  console.print(
421
421
  f"[bold red]Error:[/bold red] Source agent '{source_agent}' not found "
422
422
  "or has no AGENTS.md\n"
423
- " Available agents: deepagents agents list"
423
+ " Available agents: dcode agents list"
424
424
  )
425
425
  raise SystemExit(1)
426
426
 
@@ -1100,9 +1100,9 @@ def create_cli_agent(
1100
1100
  agent_middleware = []
1101
1101
  agent_middleware.append(ConfigurableModelMiddleware())
1102
1102
 
1103
- # Token state: adds _context_tokens to graph state (checkpointed, not
1104
- # passed to model). Must be registered before any middleware that might
1105
- # read the channel.
1103
+ # Token state: declares the `_context_tokens` channel and writes it from
1104
+ # `after_model` based on the latest `AIMessage.usage_metadata`. The CLI
1105
+ # reads it back from `state_values` on thread resume.
1106
1106
  from deepagents_code.token_state import TokenStateMiddleware
1107
1107
 
1108
1108
  agent_middleware.append(TokenStateMiddleware())