deepcode-hku 2.1.0__tar.gz → 2.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/MANIFEST.in +1 -0
  2. {deepcode_hku-2.1.0/deepcode_hku.egg-info → deepcode_hku-2.2.0}/PKG-INFO +279 -15
  3. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/README.md +277 -13
  4. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/README_ZH.md +289 -59
  5. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/THIRD_PARTY_NOTICES.md +12 -0
  6. deepcode_hku-2.2.0/app_server/config_watch.py +59 -0
  7. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/dispatcher.py +153 -13
  8. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/protocol/methods.py +4 -0
  9. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/protocol/notifications.py +1 -0
  10. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/server.py +21 -0
  11. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/exec_cli.py +10 -0
  12. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/execution_options.py +31 -0
  13. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/goal_runner.py +3 -0
  14. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/headless_turn.py +13 -0
  15. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/loop_cli.py +12 -10
  16. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/schedule_cli.py +5 -2
  17. deepcode_hku-2.2.0/cli/tui/animation.py +89 -0
  18. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/tui/app.py +406 -47
  19. deepcode_hku-2.2.0/cli/tui/commands.py +876 -0
  20. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/tui/input.py +82 -4
  21. deepcode_hku-2.2.0/cli/tui/picker.py +285 -0
  22. deepcode_hku-2.2.0/cli/tui/renderer.py +806 -0
  23. deepcode_hku-2.2.0/cli/tui/session_bridge.py +58 -0
  24. deepcode_hku-2.2.0/cli/tui/text.py +85 -0
  25. deepcode_hku-2.2.0/cli/tui/theme.py +200 -0
  26. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/tui/thread_client.py +127 -8
  27. deepcode_hku-2.2.0/core/agent_presets/__init__.py +377 -0
  28. deepcode_hku-2.2.0/core/agent_presets/builtin/code-reader.md +11 -0
  29. deepcode_hku-2.2.0/core/agent_presets/builtin/minimal.md +9 -0
  30. deepcode_hku-2.2.0/core/agent_runtime/compaction.py +165 -0
  31. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/context.py +31 -5
  32. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/helpers.py +45 -14
  33. deepcode_hku-2.2.0/core/agent_runtime/pruner.py +85 -0
  34. deepcode_hku-2.2.0/core/agent_runtime/repeat_guard.py +130 -0
  35. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/runner.py +503 -147
  36. deepcode_hku-2.2.0/core/agent_runtime/token_meter.py +161 -0
  37. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/tools/base.py +67 -0
  38. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_setup.py +40 -2
  39. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/agent_adapter.py +22 -0
  40. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/application.py +3 -0
  41. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/config_store.py +32 -0
  42. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/diagnostics_service.py +16 -0
  43. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/event_service.py +31 -2
  44. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/execution_coordinator.py +36 -2
  45. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/llm_configuration_service.py +135 -19
  46. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/session_runtime.py +265 -6
  47. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/settings_service.py +21 -3
  48. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/thread_service.py +308 -24
  49. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/turn_service.py +128 -23
  50. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/views.py +13 -0
  51. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/workflow_service.py +1 -0
  52. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/config.py +106 -1
  53. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/execution_profile.py +23 -1
  54. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/thread.py +18 -0
  55. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/events/session.py +141 -5
  56. deepcode_hku-2.2.0/core/harness/agents/control.py +795 -0
  57. deepcode_hku-2.2.0/core/harness/agents/external_backend.py +302 -0
  58. deepcode_hku-2.2.0/core/harness/agents/structured_result.py +128 -0
  59. deepcode_hku-2.2.0/core/harness/command_guard.py +151 -0
  60. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/hooks/discovery.py +11 -2
  61. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/hooks/engine.py +26 -2
  62. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/hooks/events.py +8 -4
  63. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/hooks/execution.py +2 -0
  64. deepcode_hku-2.2.0/core/harness/memory.py +494 -0
  65. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/__init__.py +6 -1
  66. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/spawn_agent.py +87 -9
  67. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/models.py +7 -0
  68. deepcode_hku-2.2.0/core/mcp/runtime.py +455 -0
  69. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/tools.py +12 -4
  70. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/observability/bus.py +44 -0
  71. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/migrations.py +19 -0
  72. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/thread_repository.py +20 -1
  73. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/mcp.py +73 -1
  74. deepcode_hku-2.2.0/core/private_storage.py +322 -0
  75. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/base.py +33 -0
  76. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/catalog.py +24 -2
  77. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/catalog_service.py +151 -19
  78. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/openai_compat.py +6 -25
  79. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/profiles.py +62 -8
  80. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/registry.py +1 -10
  81. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/store.py +41 -0
  82. deepcode_hku-2.2.0/core/sessions/transcript.py +189 -0
  83. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/version.py +1 -1
  84. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0/deepcode_hku.egg-info}/PKG-INFO +279 -15
  85. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/deepcode_hku.egg-info/SOURCES.txt +47 -0
  86. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/deepcode_hku.egg-info/requires.txt +1 -1
  87. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/protocol/app-server.schema.json +324 -1
  88. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/requirements.txt +1 -1
  89. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/setup.py +1 -0
  90. deepcode_hku-2.2.0/tests/test_agent_presets.py +338 -0
  91. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_agent_runner_kernel.py +8 -1
  92. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_agent_session.py +34 -0
  93. deepcode_hku-2.2.0/tests/test_code_implementation_workspace.py +46 -0
  94. deepcode_hku-2.2.0/tests/test_code_indexer_concurrent.py +45 -0
  95. deepcode_hku-2.2.0/tests/test_command_executor_native_fence.py +86 -0
  96. deepcode_hku-2.2.0/tests/test_command_guard.py +85 -0
  97. deepcode_hku-2.2.0/tests/test_compaction_memory.py +172 -0
  98. deepcode_hku-2.2.0/tests/test_compaction_retry_memo.py +95 -0
  99. deepcode_hku-2.2.0/tests/test_config_layers.py +109 -0
  100. deepcode_hku-2.2.0/tests/test_context_note_sink.py +276 -0
  101. deepcode_hku-2.2.0/tests/test_context_window_overflow.py +59 -0
  102. deepcode_hku-2.2.0/tests/test_cross_process_run_lease.py +178 -0
  103. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_exec_sandbox_wiring.py +25 -0
  104. deepcode_hku-2.2.0/tests/test_external_subagent_backend.py +375 -0
  105. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_forge_provider.py +14 -25
  106. deepcode_hku-2.2.0/tests/test_git_command_url.py +42 -0
  107. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_loop_cli.py +3 -1
  108. deepcode_hku-2.2.0/tests/test_loop_detector.py +49 -0
  109. deepcode_hku-2.2.0/tests/test_manual_compact.py +163 -0
  110. deepcode_hku-2.2.0/tests/test_mcp_runtime_lazy.py +215 -0
  111. deepcode_hku-2.2.0/tests/test_memory.py +310 -0
  112. deepcode_hku-2.2.0/tests/test_model_visible_is_logged.py +175 -0
  113. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_plugins.py +83 -0
  114. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_private_storage.py +10 -0
  115. deepcode_hku-2.2.0/tests/test_private_storage_acl_once.py +173 -0
  116. deepcode_hku-2.2.0/tests/test_private_storage_windows.py +174 -0
  117. deepcode_hku-2.2.0/tests/test_repeat_call_reminder.py +187 -0
  118. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_session_compaction.py +26 -8
  119. deepcode_hku-2.2.0/tests/test_session_end_lifecycle.py +353 -0
  120. deepcode_hku-2.2.0/tests/test_session_run_lease.py +59 -0
  121. deepcode_hku-2.2.0/tests/test_session_transcript.py +72 -0
  122. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_skills.py +20 -0
  123. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_skills_product.py +11 -3
  124. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_spawn_agent.py +37 -44
  125. deepcode_hku-2.2.0/tests/test_stdlib_logging_bridge.py +102 -0
  126. deepcode_hku-2.2.0/tests/test_subagent_composition.py +288 -0
  127. deepcode_hku-2.2.0/tests/test_subagent_conversation.py +210 -0
  128. deepcode_hku-2.2.0/tests/test_subagent_late_result.py +108 -0
  129. deepcode_hku-2.2.0/tests/test_token_meter.py +88 -0
  130. deepcode_hku-2.2.0/tests/test_token_meter_wiring.py +80 -0
  131. deepcode_hku-2.2.0/tests/test_tool_call_timeout.py +212 -0
  132. deepcode_hku-2.2.0/tests/test_tool_description_quality.py +130 -0
  133. deepcode_hku-2.2.0/tests/test_tool_result_pruner.py +263 -0
  134. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_tui.py +793 -7
  135. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_tui_thread_client.py +49 -0
  136. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/code_implementation_server.py +22 -11
  137. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/code_indexer.py +3 -1
  138. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/command_executor.py +8 -0
  139. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/git_command.py +2 -2
  140. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/utils/loop_detector.py +9 -5
  141. deepcode_hku-2.1.0/cli/tui/commands.py +0 -286
  142. deepcode_hku-2.1.0/cli/tui/renderer.py +0 -318
  143. deepcode_hku-2.1.0/cli/tui/session_bridge.py +0 -211
  144. deepcode_hku-2.1.0/cli/tui/theme.py +0 -41
  145. deepcode_hku-2.1.0/core/harness/agents/control.py +0 -485
  146. deepcode_hku-2.1.0/core/harness/memory.py +0 -238
  147. deepcode_hku-2.1.0/core/mcp/runtime.py +0 -268
  148. deepcode_hku-2.1.0/core/private_storage.py +0 -158
  149. deepcode_hku-2.1.0/tests/test_memory.py +0 -153
  150. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/LICENSE +0 -0
  151. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/__init__.py +0 -0
  152. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/__init__.py +0 -0
  153. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/__main__.py +0 -0
  154. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/connection.py +0 -0
  155. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/errors.py +0 -0
  156. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/protocol/__init__.py +0 -0
  157. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/protocol/codec.py +0 -0
  158. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/protocol/models.py +0 -0
  159. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/app_server/runtime_probe.py +0 -0
  160. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/__init__.py +0 -0
  161. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/automation_cli.py +0 -0
  162. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/automation_foreground.py +0 -0
  163. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/config_errors.py +0 -0
  164. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/init_config.py +0 -0
  165. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/mcp_cli.py +0 -0
  166. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/mcp_server.py +0 -0
  167. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/plugin_cli.py +0 -0
  168. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/project_trust.py +0 -0
  169. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/provider_cli.py +0 -0
  170. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/session_cli.py +0 -0
  171. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/skill_cli.py +0 -0
  172. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/transcript.py +0 -0
  173. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/tui/__init__.py +0 -0
  174. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/tui/__main__.py +0 -0
  175. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/tui/domain_events.py +0 -0
  176. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/cli/tui/goal_controller.py +0 -0
  177. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/__init__.py +0 -0
  178. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/__init__.py +0 -0
  179. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/goal_runtime.py +0 -0
  180. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/hook.py +0 -0
  181. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/injections.py +0 -0
  182. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/processes.py +0 -0
  183. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/runtime.py +0 -0
  184. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/tools/__init__.py +0 -0
  185. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/tools/alias.py +0 -0
  186. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/tools/mcp.py +0 -0
  187. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/agent_runtime/tools/registry.py +0 -0
  188. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/__init__.py +0 -0
  189. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/application_lease.py +0 -0
  190. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/approval_service.py +0 -0
  191. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/automation_permission_policy.py +0 -0
  192. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/automation_schedule_policy.py +0 -0
  193. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/automation_scheduler.py +0 -0
  194. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/automation_service.py +0 -0
  195. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/errors.py +0 -0
  196. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/execution_admission.py +0 -0
  197. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/execution_handler_registry.py +0 -0
  198. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/execution_registry.py +0 -0
  199. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/execution_security_policy.py +0 -0
  200. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/extension_service.py +0 -0
  201. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/file_service.py +0 -0
  202. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/git_service.py +0 -0
  203. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/goal_extension.py +0 -0
  204. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/goal_prompts/__init__.py +0 -0
  205. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/goal_prompts/continuation.md +0 -0
  206. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/goal_turn_port.py +0 -0
  207. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/interactive_turn_router.py +0 -0
  208. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/legacy_session_importer.py +0 -0
  209. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/mcp_service.py +0 -0
  210. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/plugin_service.py +0 -0
  211. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/project_service.py +0 -0
  212. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/session_deletion_service.py +0 -0
  213. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/skill_service.py +0 -0
  214. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/terminal_service.py +0 -0
  215. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/test_service.py +0 -0
  216. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/turn_input_service.py +0 -0
  217. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/turn_projection.py +0 -0
  218. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/turn_usage.py +0 -0
  219. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/workflow_adapter.py +0 -0
  220. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/workspace_service.py +0 -0
  221. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/application/worktree_service.py +0 -0
  222. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/compat/__init__.py +0 -0
  223. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/compat/agent.py +0 -0
  224. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/compat/mcp_app.py +0 -0
  225. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/compat/parallel.py +0 -0
  226. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/compat/request_params.py +0 -0
  227. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/compat/runtime.py +0 -0
  228. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/__init__.py +0 -0
  229. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/approval.py +0 -0
  230. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/artifact.py +0 -0
  231. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/automation.py +0 -0
  232. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/common.py +0 -0
  233. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/event.py +0 -0
  234. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/execution_permission.py +0 -0
  235. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/execution_security.py +0 -0
  236. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/item.py +0 -0
  237. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/message_provenance.py +0 -0
  238. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/project.py +0 -0
  239. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/runtime_coordination.py +0 -0
  240. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/thread_goal.py +0 -0
  241. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/turn.py +0 -0
  242. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/domain/workflow.py +0 -0
  243. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/events/__init__.py +0 -0
  244. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/events/llm_events.py +0 -0
  245. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/events/parts.py +0 -0
  246. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/events/protocol.py +0 -0
  247. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/file_lock.py +0 -0
  248. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/__init__.py +0 -0
  249. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/agents/__init__.py +0 -0
  250. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/approval.py +0 -0
  251. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/code_mode/__init__.py +0 -0
  252. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/code_mode/_runner.py +0 -0
  253. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/code_mode/tool.py +0 -0
  254. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/collaboration.py +0 -0
  255. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/hooks/__init__.py +0 -0
  256. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/permissions.py +0 -0
  257. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/policy.py +0 -0
  258. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/sandbox.py +0 -0
  259. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/skills.py +0 -0
  260. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/snapshot.py +0 -0
  261. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/diagnostics.py +0 -0
  262. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/files.py +0 -0
  263. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/goal.py +0 -0
  264. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/patch.py +0 -0
  265. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/plan.py +0 -0
  266. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/replace.py +0 -0
  267. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/search.py +0 -0
  268. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/shell.py +0 -0
  269. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/user_input.py +0 -0
  270. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/tools/web.py +0 -0
  271. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/harness/windows_sandbox.py +0 -0
  272. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/llm_runtime.py +0 -0
  273. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/loop/__init__.py +0 -0
  274. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/loop/autodream.py +0 -0
  275. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/__init__.py +0 -0
  276. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/connection.py +0 -0
  277. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/naming.py +0 -0
  278. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/oauth.py +0 -0
  279. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/presets.json +0 -0
  280. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/presets.py +0 -0
  281. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/probe.py +0 -0
  282. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/resolver.py +0 -0
  283. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/mcp/schema.py +0 -0
  284. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/network/__init__.py +0 -0
  285. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/network/hostnames.py +0 -0
  286. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/network/safe_http.py +0 -0
  287. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/observability/__init__.py +0 -0
  288. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/observability/context.py +0 -0
  289. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/observability/records.py +0 -0
  290. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/__init__.py +0 -0
  291. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/automation_repository.py +0 -0
  292. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/coordination_repository.py +0 -0
  293. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/database.py +0 -0
  294. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/errors.py +0 -0
  295. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/event_repository.py +0 -0
  296. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/execution_repository.py +0 -0
  297. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/legacy_import_repository.py +0 -0
  298. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/project_repository.py +0 -0
  299. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/serde.py +0 -0
  300. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/persistence/workflow_repository.py +0 -0
  301. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/platform_compat.py +0 -0
  302. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/platform_file_lock.py +0 -0
  303. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/__init__.py +0 -0
  304. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/domain.py +0 -0
  305. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/formats/__init__.py +0 -0
  306. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/formats/agent_plugins_v1.py +0 -0
  307. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/host.py +0 -0
  308. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/registry.py +0 -0
  309. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/resolver.py +0 -0
  310. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/plugins/skill_provider.py +0 -0
  311. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/__init__.py +0 -0
  312. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/anthropic.py +0 -0
  313. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/credentials.py +0 -0
  314. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/model_compat.py +0 -0
  315. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/openai_responses/__init__.py +0 -0
  316. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/openai_responses/converters.py +0 -0
  317. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/openai_responses/parsing.py +0 -0
  318. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/reasoning.py +0 -0
  319. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/providers/timeouts.py +0 -0
  320. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/reasoning.py +0 -0
  321. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/schedule/__init__.py +0 -0
  322. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/schedule/keepalive.py +0 -0
  323. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/schedule/scheduler.py +0 -0
  324. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/__init__.py +0 -0
  325. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/continuation.py +0 -0
  326. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/deletion.py +0 -0
  327. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/index.py +0 -0
  328. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/legacy_goal_decoder.py +0 -0
  329. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/models.py +0 -0
  330. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/sessions/thread_goal_store.py +0 -0
  331. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/__init__.py +0 -0
  332. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/aggregation.py +0 -0
  333. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/UPSTREAM_SOURCES.json +0 -0
  334. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/frontend-design/LICENSE.txt +0 -0
  335. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/frontend-design/SKILL.md +0 -0
  336. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/LICENSE.txt +0 -0
  337. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/SKILL.md +0 -0
  338. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/reference/evaluation.md +0 -0
  339. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/reference/mcp_best_practices.md +0 -0
  340. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/reference/node_mcp_server.md +0 -0
  341. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/reference/python_mcp_server.md +0 -0
  342. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/scripts/connections.py +0 -0
  343. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/scripts/evaluation.py +0 -0
  344. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/scripts/example_evaluation.xml +0 -0
  345. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/mcp-builder/scripts/requirements.txt +0 -0
  346. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/review-agent/LICENSE.txt +0 -0
  347. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/review-agent/SKILL.md +0 -0
  348. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/review-agent/agents/openai.yaml +0 -0
  349. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/LICENSE.txt +0 -0
  350. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/SKILL.md +0 -0
  351. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/agents/openai.yaml +0 -0
  352. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/golang-general-backend-security.md +0 -0
  353. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/javascript-express-web-server-security.md +0 -0
  354. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/javascript-general-web-frontend-security.md +0 -0
  355. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/javascript-jquery-web-frontend-security.md +0 -0
  356. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +0 -0
  357. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +0 -0
  358. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +0 -0
  359. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/python-django-web-server-security.md +0 -0
  360. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/python-fastapi-web-server-security.md +0 -0
  361. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-best-practices/references/python-flask-web-server-security.md +0 -0
  362. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/LICENSE.txt +0 -0
  363. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/SKILL.md +0 -0
  364. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/agents/openai.yaml +0 -0
  365. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/references/neo4j-import.md +0 -0
  366. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/scripts/build_ownership_map.py +0 -0
  367. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/scripts/community_maintainers.py +0 -0
  368. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/scripts/query_ownership.py +0 -0
  369. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-ownership-map/scripts/run_ownership_map.py +0 -0
  370. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-threat-model/LICENSE.txt +0 -0
  371. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-threat-model/SKILL.md +0 -0
  372. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-threat-model/agents/openai.yaml +0 -0
  373. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-threat-model/references/prompt-template.md +0 -0
  374. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/security-threat-model/references/security-controls-and-assets.md +0 -0
  375. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/skill-creator/LICENSE.txt +0 -0
  376. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/skill-creator/SKILL.md +0 -0
  377. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/skill-creator/agents/openai.yaml +0 -0
  378. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/skill-creator/references/openai_yaml.md +0 -0
  379. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/skill-creator/scripts/generate_openai_yaml.py +0 -0
  380. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/skill-creator/scripts/init_skill.py +0 -0
  381. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/skill-creator/scripts/quick_validate.py +0 -0
  382. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/webapp-testing/LICENSE.txt +0 -0
  383. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/webapp-testing/SKILL.md +0 -0
  384. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/webapp-testing/examples/console_logging.py +0 -0
  385. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/webapp-testing/examples/element_discovery.py +0 -0
  386. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/webapp-testing/examples/static_html_automation.py +0 -0
  387. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin/webapp-testing/scripts/with_server.py +0 -0
  388. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/builtin_registry.py +0 -0
  389. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/capabilities.py +0 -0
  390. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/catalog.py +0 -0
  391. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/config.py +0 -0
  392. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/host.py +0 -0
  393. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/management.py +0 -0
  394. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/metadata.py +0 -0
  395. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/models.py +0 -0
  396. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/monitor.py +0 -0
  397. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/prompting.py +0 -0
  398. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/provider.py +0 -0
  399. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/resources.py +0 -0
  400. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/roots.py +0 -0
  401. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/skills/runtime.py +0 -0
  402. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/team/__init__.py +0 -0
  403. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/team/worktree.py +0 -0
  404. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/core/verification.py +0 -0
  405. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/deepcode.py +0 -0
  406. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/deepcode_hku.egg-info/dependency_links.txt +0 -0
  407. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/deepcode_hku.egg-info/entry_points.txt +0 -0
  408. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/deepcode_hku.egg-info/top_level.txt +0 -0
  409. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/__init__.py +0 -0
  410. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/README.md +0 -0
  411. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/__init__.py +0 -0
  412. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/dataset.py +0 -0
  413. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/evaluate.py +0 -0
  414. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/instance.py +0 -0
  415. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/predict.py +0 -0
  416. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/report.py +0 -0
  417. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/eval/swebench/run.py +0 -0
  418. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/prompts/__init__.py +0 -0
  419. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/prompts/code_prompts.py +0 -0
  420. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/pyproject.toml +0 -0
  421. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/schema/mcp-agent.config.schema.json +0 -0
  422. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/setup.cfg +0 -0
  423. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_apply_patch.py +0 -0
  424. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_autodream.py +0 -0
  425. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_automation_cli.py +0 -0
  426. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_automation_foreground.py +0 -0
  427. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_catalog.py +0 -0
  428. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_cli_logging_bootstrap.py +0 -0
  429. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_code_indexer_output.py +0 -0
  430. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_code_mode.py +0 -0
  431. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_collaboration.py +0 -0
  432. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_config_errors.py +0 -0
  433. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_config_layering.py +0 -0
  434. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_desktop_ci_scope.py +0 -0
  435. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_desktop_release_scripts.py +0 -0
  436. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_diagnostics.py +0 -0
  437. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_document_conversion.py +0 -0
  438. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_exec_cli.py +0 -0
  439. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_fuzzy_replace.py +0 -0
  440. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_goal_runtime.py +0 -0
  441. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_harness_approval.py +0 -0
  442. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_harness_permissions.py +0 -0
  443. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_harness_policy.py +0 -0
  444. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_harness_sandbox.py +0 -0
  445. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_hooks.py +0 -0
  446. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_init_config.py +0 -0
  447. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_llm_events.py +0 -0
  448. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_llm_runtime_connections.py +0 -0
  449. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_mcp_cli.py +0 -0
  450. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_mcp_oauth.py +0 -0
  451. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_mcp_runtime.py +0 -0
  452. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_mcp_server.py +0 -0
  453. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_model_catalog_service.py +0 -0
  454. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_model_compat.py +0 -0
  455. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_native_file_tools.py +0 -0
  456. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_openspace_recipe.py +0 -0
  457. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_parts.py +0 -0
  458. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_pdf_downloader_security.py +0 -0
  459. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_plan_tool.py +0 -0
  460. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_platform_compat.py +0 -0
  461. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_plugin_cli.py +0 -0
  462. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_provider_cli.py +0 -0
  463. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_provider_timeouts.py +0 -0
  464. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_python_distribution_release.py +0 -0
  465. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_reasoning.py +0 -0
  466. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_reasoning_capabilities.py +0 -0
  467. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_reasoning_catalog_alignment.py +0 -0
  468. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_reasoning_providers.py +0 -0
  469. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_requesty_provider.py +0 -0
  470. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_safe_http.py +0 -0
  471. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_schedule.py +0 -0
  472. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_session_cli.py +0 -0
  473. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_session_index.py +0 -0
  474. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_session_runtime.py +0 -0
  475. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_shell_search_tools.py +0 -0
  476. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_skill_capabilities.py +0 -0
  477. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_skill_cli.py +0 -0
  478. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_skill_host.py +0 -0
  479. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_skill_provider.py +0 -0
  480. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_snapshot.py +0 -0
  481. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_swebench_harness.py +0 -0
  482. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_team_worktree.py +0 -0
  483. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_thinking_requires_capable_model.py +0 -0
  484. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_tui_domain_events.py +0 -0
  485. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_turn_input_mailbox.py +0 -0
  486. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_turn_projection.py +0 -0
  487. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_turn_queue.py +0 -0
  488. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_turn_steering.py +0 -0
  489. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_unified_impl_workflow.py +0 -0
  490. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_user_input_tool.py +0 -0
  491. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_verification.py +0 -0
  492. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_version_metadata.py +0 -0
  493. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_web_tools.py +0 -0
  494. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_workflow_compatibility.py +0 -0
  495. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_workflow_interactions.py +0 -0
  496. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tests/test_zhipu_thinking_wire.py +0 -0
  497. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/__init__.py +0 -0
  498. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/code_reference_indexer.py +0 -0
  499. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/document_conversion.py +0 -0
  500. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/document_segmentation_server.py +0 -0
  501. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/indexer_config.yaml +0 -0
  502. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/pdf_converter.py +0 -0
  503. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/pdf_downloader.py +0 -0
  504. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/pdf_downloader_server.py +0 -0
  505. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/tools/pdf_utils.py +0 -0
  506. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/utils/__init__.py +0 -0
  507. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/utils/file_processor.py +0 -0
  508. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/utils/llm_utils.py +0 -0
  509. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/uv.lock +0 -0
  510. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/__init__.py +0 -0
  511. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/agent_orchestration_engine.py +0 -0
  512. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/agents/__init__.py +0 -0
  513. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/agents/code_implementation_agent.py +0 -0
  514. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/agents/document_segmentation_agent.py +0 -0
  515. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/agents/memory_agent_concise.py +0 -0
  516. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/agents/requirement_analysis_agent.py +0 -0
  517. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/code_implementation_workflow.py +0 -0
  518. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/codebase_index_workflow.py +0 -0
  519. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/environment.py +0 -0
  520. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/interactions/USAGE.md +0 -0
  521. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/interactions/__init__.py +0 -0
  522. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/interactions/base.py +0 -0
  523. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/interactions/integration.py +0 -0
  524. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/interactions/plan_review.py +0 -0
  525. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/interactions/requirement_analysis.py +0 -0
  526. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/plan_review_runtime.py +0 -0
  527. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/planning_runtime.py +0 -0
  528. {deepcode_hku-2.1.0 → deepcode_hku-2.2.0}/workflows/workflow_context.py +0 -0
@@ -24,3 +24,4 @@ global-exclude .git*
24
24
  global-exclude .history*
25
25
  global-exclude .ruff_cache*
26
26
  global-exclude __pycache__*
27
+ recursive-include core/agent_presets/builtin *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepcode-hku
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Open agentic coding with durable sessions, goals, and verification
5
5
  Home-page: https://github.com/HKUDS/DeepCode
6
6
  Author: DeepCode Team
@@ -37,7 +37,7 @@ Requires-Dist: openapi
37
37
  Requires-Dist: pathlib2
38
38
  Requires-Dist: prompt_toolkit>=3.0.0
39
39
  Requires-Dist: pydantic-settings>=2.14.2
40
- Requires-Dist: pypdf>=6.15.0
40
+ Requires-Dist: pypdf>=6.16.1
41
41
  Requires-Dist: PyYAML>=6.0
42
42
  Requires-Dist: reportlab>=3.5.0
43
43
  Requires-Dist: rich>=13.0.0
@@ -88,6 +88,10 @@ Dynamic: summary
88
88
 
89
89
  ### *Advancing Code Generation with Multi-Agent Systems*
90
90
 
91
+ <p align="center">
92
+ <a href="https://hkuds.github.io/DeepCode/" target="_blank"><img alt="Website — hkuds.github.io/DeepCode" src="https://img.shields.io/badge/Website-hkuds.github.io%2FDeepCode%20%E2%86%97-06B6D4?style=for-the-badge&labelColor=0B1116" height="36"></a>
93
+ </p>
94
+
91
95
  <!-- <p align="center">
92
96
  <img src="https://img.shields.io/badge/Version-1.0.0-00d4ff?style=for-the-badge&logo=rocket&logoColor=white" alt="Version">
93
97
 
@@ -179,25 +183,28 @@ Skills, permissions, Goals, and Automations. See the
179
183
  - [📰 News](#news)
180
184
  - [🧠 What Deep means in DeepCode](#what-deep-means-in-deepcode)
181
185
  - [🚀 Core capabilities](#core-capabilities)
182
- - [Agent Harness](#agent-harness)
183
- - [Loop Engineering](#loop-engineering)
184
- - [Context Engineering](#context-engineering)
186
+ - [Work directly in your repository](#work-directly-in-your-repository)
187
+ - [Goal-driven Loop Engineering](#goal-driven-loop-engineering)
185
188
  - [Evidence-driven completion](#evidence-driven-completion)
186
- - [Durable local work](#durable-local-work)
187
- - [Models and Skills under your control](#models-and-skills-under-your-control)
188
- - [Parallel and repeatable work](#parallel-and-repeatable-work)
189
+ - [Durable Sessions and project context](#durable-sessions-and-project-context)
190
+ - [Your models, your reasoning settings](#your-models-your-reasoning-settings)
191
+ - [Reusable Skills](#reusable-skills)
192
+ - [Permissions you can understand](#permissions-you-can-understand)
193
+ - [Parallel agents without file collisions](#parallel-agents-without-file-collisions)
194
+ - [Automate repeatable engineering work](#automate-repeatable-engineering-work)
195
+ - [Paper2Code](#paper2code)
189
196
  - [⚡ Quick start](#quick-start)
190
197
  - [🧭 Using DeepCode](#using-deepcode)
191
198
  - [⚙️ Headless and automation](docs/HEADLESS_AND_AUTOMATION.md)
192
- - [🔬 Paper2Code](#paper2code)
199
+ - [🔬 Paper2Code](#paper2code-1)
193
200
  - [The original architecture](#the-original-architecture)
194
201
  - [Research results](#research-results)
195
- - [🎬 Live demonstrations](#live-demonstrations)
202
+ - [🎬 Live demonstrations](#-live-demonstrations)
196
203
  - [🛠️ Development](#development)
197
- - [⭐ Star History](#star-history)
198
- - [🙏 Appreciation](#contributors)
199
- - [📖 Citation](#citation)
200
- - [📄 License](#license)
204
+ - [⭐ Star History](#-star-history)
205
+ - [🙏 Appreciation](#-appreciation)
206
+ - [📖 Citation](#-citation)
207
+ - [📄 License](#-license)
201
208
 
202
209
  <p align="center">
203
210
  <img src="assets/readme/deepcode-overview.png" alt="A verified task completed with DeepCode" width="1080" />
@@ -205,6 +212,246 @@ Skills, permissions, Goals, and Automations. See the
205
212
 
206
213
  ## News
207
214
 
215
+ **2026-09-06 · DeepCode v2.2.0: Session context-window caps, compaction that leaves a memory, and a fully localized Desktop**
216
+
217
+ - **Cap a Session's context window.** `/context 64k` in the TUI or the
218
+ preset next to the Desktop model picker narrows the model's published
219
+ window for future Turns; the cap is frozen into each accepted Turn and
220
+ feeds the compaction gate directly. `/context auto` follows the model
221
+ again. (#203)
222
+ - **Compaction leaves a note in memory, and memory notes cannot escape their
223
+ boundary.** A compaction summary is deposited into the workspace memory on
224
+ a background thread, and injected memory content is wrapped in an
225
+ `<untrusted-data>` boundary whose closing tags are escaped, so a poisoned
226
+ note cannot forge instructions. (#204)
227
+ - **Appearance settings speak Simplified Chinese too**, completing the
228
+ Desktop shell's zh-CN coverage. (#202)
229
+
230
+ **2026-09-03 · Desktop catalog race, an honest command screen, GLM-5.2, and two dependency bumps**
231
+
232
+ - **Switching projects no longer strands the MCP catalog.** A probe or
233
+ mutation started in one project can no longer invalidate the load of the
234
+ project you switched to, so the catalog stops sticking in a loading state.
235
+ (#201)
236
+ - **The legacy `execute_bash` screen matches on argv, not substrings.**
237
+ `rm -r -f`, `--recursive --force`, `chmod 0777` and a destructive stage
238
+ inside a pipeline are caught; `touch rm-rf-notes.txt` is not. It stays a
239
+ cheap first pass in front of the sandbox, which remains the boundary.
240
+ (#195)
241
+ - **GLM-5.2 is in the model catalog** — 1M context, 128K output,
242
+ `reasoning_effort` `high` / `max`. (from #198)
243
+ - **Security bumps:** `browserslist` past GHSA-c83g-rgw3-j3cx in the Desktop
244
+ toolchain, and the App Server sidecar's `pypdf` to 6.16.1
245
+ (CVE-2026-84309/84310/84311).
246
+
247
+ **2026-08-28 · Community fixes: plugin credential warnings and a wider zh-CN Desktop**
248
+
249
+ - **Agent Plugin manifests now warn about plaintext credentials.** Literal
250
+ `env` and `headers` values in a Plugin's `mcp.json` that look like secrets
251
+ produce a redacted warning instead of loading silently, and the docs point
252
+ to runtime credential bindings instead. (#194, landed 2026-08-27)
253
+ - **Most of the Desktop shell speaks Simplified Chinese.** The thread header,
254
+ Goal rail, approval card, inspector, sidebar, and the Updates and
255
+ Diagnostics settings gained about a hundred zh-CN strings; English stays
256
+ the inline default. (#187)
257
+
258
+ **2026-08-25 · Command executors close two bypasses**
259
+
260
+ - **Case and whitespace no longer slip past the dangerous-command check**, and
261
+ the native `mkdir`/`touch`/`rm`/`cp`/`mv` fast path declines any operand
262
+ outside the working directory, so those commands run through the sandbox
263
+ like every other command instead of as in-process file operations. (#193)
264
+
265
+ **2026-08-23 · Five repaired contributions land together**
266
+
267
+ - **MCP servers can start lazily.** `deferLoading` keeps a server off until
268
+ the agent calls `activate_server`; deferred servers stay reachable and
269
+ cancellation-safe. (#184)
270
+ - **Hooks see the whole lifecycle.** `SessionEnd` runs exactly once at
271
+ teardown and `PreCompact` can inject context before a compaction. (#172)
272
+ - **Instruction files can be excluded, and the dangerous preset must be named
273
+ explicitly.** (#186)
274
+ - **Windows private files get a fail-safe ACL**, applied once at creation
275
+ (#164); the Desktop sidecar's pip pin also moved past PYSEC-2026-3721 (#191).
276
+
277
+ **2026-08-19 · Sessions that survive resume, compaction, and a second window**
278
+
279
+ - **Resuming a session restores what the agent did, not only what it said.**
280
+ Tool calls and their results are part of the canonical record now, so a
281
+ resumed agent can answer "what did you just run?". A test makes the rule
282
+ executable: every request a run sends must be rebuildable from the session
283
+ file alone.
284
+ - **Compaction keeps the recent tail.** The checkpoint replaces the older
285
+ range and everything recent survives verbatim — assistant messages and tool
286
+ results included — instead of dropping them and putting the summary last.
287
+ Manual `/compact` used to refuse almost every real conversation; it works,
288
+ and the checkpoint speaks as the model's own history, so it stops being
289
+ discounted as someone else's report.
290
+ - **Context pressure is measured, not guessed.** The gate now anchors on the
291
+ size the provider itself reports. The built-in estimator prices Chinese
292
+ prose at more than twice its real cost, which was compacting Chinese
293
+ conversations at roughly half the context they could hold.
294
+ - **Two windows on one Session no longer crash each other.** Each Session
295
+ now has one live writer, enforced by an OS lock held around a turn: the
296
+ second window gets a sentence naming who is running it, instead of a
297
+ process dying to a database constraint about half the time. Alternate
298
+ freely between Desktop and the terminal — just not mid-turn.
299
+
300
+ **2026-08-18 · The runtime learns dsh's context discipline, and the TUI gets a face**
301
+
302
+ - **A new turn no longer throws away the prompt cache.** The environment
303
+ block used to be re-inserted before your newest message every turn, so each
304
+ turn diverged from the previous request right where that block had been:
305
+ 7,420 prompt tokens recomputed at every turn boundary, now 28.
306
+ - **The TUI has a logo, a live status line, and tool cards that read.** A
307
+ spinner and a sweep while work runs, paths written the way you would type
308
+ them, the plan tool's checklist visible at last, and a turn footer with its
309
+ time and token usage. An idle TUI costs nothing to animate.
310
+ - **A source-level comparison against dsh became a plan.** Where the message
311
+ list the model sees comes from, what compaction should keep, and what the
312
+ session record must contain — measured and written down, and four
313
+ unreferenced documents retired.
314
+
315
+ **2026-08-17 · Fixes from a review pass over the new settings and TUI work**
316
+
317
+ - **A declared model reads the same everywhere.** Per-model declarations now
318
+ shape the catalog a picker shows, not only what a Turn executes with, so a
319
+ context window you set to avoid overflow is the number you see.
320
+ - **Adopting fetched models shows them immediately.** The catalog cache is
321
+ keyed on the settings that shape it, instead of serving the previous remote
322
+ listing for up to an hour.
323
+ - **Escape closes one thing.** Dismissing the provider editor no longer tears
324
+ down the settings dialog around it and discards a half-typed key.
325
+ - **A removed model row takes its own capacities with it** rather than leaving
326
+ them on the row that survived — which then saved them onto the wrong model.
327
+ - **Automated runs keep their tools.** A default agent preset chosen for
328
+ interactive chatting no longer narrows `deepcode exec` and goal runs behind
329
+ your back.
330
+ - **The provider section says it is user-scoped**, instead of letting the
331
+ dialog's project write scope imply otherwise.
332
+
333
+ **2026-08-16 · The TUI answers every bare command with a selector**
334
+
335
+ - **Type the command, pick from a list.** `/model` now opens the full model
336
+ directory — every configured connection's catalog (remote snapshot or
337
+ declared entries, near a thousand rows on OpenRouter) in one filterable
338
+ selector with the current route pinned first and each model's published
339
+ reasoning ladder on Shift+Tab; Enter commits model and effort together.
340
+ `/preset`, `/effort`, `/permissions`, `/transcript` and `/skill` join
341
+ `/resume`: a bare invocation opens a picker with the current choice
342
+ marked, while argument forms and piped runs keep their text paths.
343
+ - **Background tracebacks can no longer shred the transcript.** Stdlib
344
+ logging is bridged into loguru with call-site fidelity, so file-only
345
+ transports really are file-only; and the durable event relay backs off
346
+ exponentially on persistent failure — one traceback per streak, one-line
347
+ repeats, a recovery notice.
348
+
349
+ **2026-08-15 · Settings grow up: a dsh-style dialog, declared models, and a safer config**
350
+
351
+ - **A connection's key now reaches exactly the requests it was resolved
352
+ for.** Building a provider no longer exports the key into the process
353
+ environment, where every same-template connection could pick it up as its
354
+ own; removing a provider un-configures every key source instead of letting
355
+ it reappear; and when a launch environment variable shadows a pasted key,
356
+ the editor says which one and that it wins. Verification also works from
357
+ async hosts now.
358
+ - **The agent-preset picker grew up.** A menu with per-preset descriptions
359
+ and trust marking replaces the cramped native dropdown, the duplicate
360
+ "Default" row is gone, and a started session shows a read-only label of
361
+ what it runs.
362
+ - **Manage what each connection actually serves.** The provider editor can
363
+ fetch the live model list from a connection's endpoint and adopt picked
364
+ models as its manual list, an environment-provided key locks the paste
365
+ field instead of silently outranking it, and connection rows show the
366
+ discovered model count.
367
+ - **`deepcode chat` reads like a terminal app, not a log.** A restyled
368
+ transcript — brand-gradient banner, status-colored tool cards with result
369
+ elbows, block spacing, word-boundary wrapping — plus streaming that
370
+ survives the prompt redraw with real colors instead of `?[36m` litter.
371
+ - **Desktop Settings became a dsh-style dialog.** General / Models /
372
+ Plugins / Agent presets in a left rail, with Open configuration file and
373
+ the write-scope picker in the header. General gains the five canonical
374
+ rows — default agent preset for new sessions (applied as a by-value
375
+ snapshot at creation, CLI and TUI included), permissions, language
376
+ (English/中文, first translated batch), Light/Dark/System appearance
377
+ cards, and a steer-or-queue busy-Enter preference.
378
+ - **Models are declarations now.** `manualModels` entries can carry a
379
+ label, capacities, and the published reasoning ladder; declarations are
380
+ authoritative offline for execution profiles and every picker. Discovery
381
+ probes the editor form as shown — unsaved URL or key included — and
382
+ adopted picks land as accurate declaration rows. Config writes gained
383
+ optimistic concurrency (a changed file conflicts instead of being
384
+ clobbered) and a settings.changed push keeps an open dialog fresh.
385
+ - **Session and model commands now hold up.** `/resume` and `/model` open
386
+ an inline selector — type to filter by title, arrows move, Enter picks,
387
+ Tab flips directory scope, Shift+Tab cycles the route's published
388
+ reasoning effort — and resume replays the conversation tail. Bare model
389
+ names resolve their connection, typos no longer kill the REPL, and
390
+ `/compact` summarizes with the model you actually selected. New verbs:
391
+ `/rename`, `/delete`, `/retry`, with tab completion for session ids,
392
+ transcript modes, permission presets, and effort levels.
393
+
394
+ <details>
395
+ <summary><strong>Earlier August 2026 updates</strong></summary>
396
+
397
+ **2026-08-14 · Subagent runtime, compaction, and one-way persistence**
398
+
399
+ - **Delegate to Codex or Claude Code as a subagent.** `spawn_agent` gains
400
+ external backends that run the installed CLI with a scrubbed environment and
401
+ strict success criteria, while native subagents gain personas, validated
402
+ tool allowlists, JSON output schemas, follow-up conversation via
403
+ `send_message`, and full transcripts in the parent session.
404
+ - **Guard the loop.** Tools can declare timeouts the runner enforces, and a
405
+ repeat-call tracker injects an escalating, model-visible reminder when
406
+ identical calls repeat.
407
+ - **Compact on demand.** `/compact` summarizes older turns in the resident
408
+ context; every refusal is a stable, readable reason (busy Turn, too little
409
+ history, a failed or non-shrinking summary) and canonical session data is
410
+ never touched.
411
+ - **See which file sets every configuration value.** Diagnostics report each
412
+ configured leaf with its providing layer and a bounded preview;
413
+ credential-shaped subtrees are redacted whole. A verbatim deepseek-harness
414
+ Skill also loads unchanged from `.agents/skills`.
415
+ - **Relieve context pressure with the cheapest sufficient measure.** Under
416
+ pressure the runtime first middle-prunes oversized tool results — a free,
417
+ convergent pass covering MCP and custom tools alike — and only summarizes
418
+ if that is not enough; the summarization call replays the routed request as
419
+ a genuine prefix so provider prompt caching is reused, and a summary that
420
+ would not shrink the conversation is rejected.
421
+ - **Deleted sessions stay deleted.** The Desktop projection no longer adopts
422
+ a thread back into canonical storage unless SQLite genuinely owns it
423
+ (legacy import or automation bootstrap), and every mid-turn message the
424
+ model sees — goal updates, recovery prompts, injected results — now lands
425
+ in the canonical session log, so a resumed session rebuilds exactly the
426
+ history the model saw.
427
+ - **Open a session as a different agent.** Named agent presets bundle a
428
+ persona and a tool face — `deepcode exec --preset code-reader`, `/preset`
429
+ in the TUI, or the picker beside the Desktop model control — while the
430
+ model route and permissions stay independent knobs. A preset is one
431
+ markdown agent file in the `.claude/agents`/`.agents` dialect, so
432
+ definitions written for other harnesses load unchanged; the resolved
433
+ composition is snapshotted into the session record and locked once the
434
+ conversation starts, at which point the Desktop picker becomes a
435
+ read-only label of what the session runs.
436
+
437
+ **2026-08-13 · Desktop typography, themes, and native controls**
438
+
439
+ - **Make the type-size preference actually resize the app.** Every interface
440
+ size now derives from one rem-based scale, so the Appearance slider moves the
441
+ whole window. It previously moved almost nothing: 255 hardcoded pixel values
442
+ ignored it, and the smallest labels sat at 7px.
443
+ - **Pick from eight themes, including high contrast.** Light, Dark, Paper, and
444
+ Midnight are joined by two terracotta palettes and a WCAG AAA high-contrast
445
+ option. Tests compare each palette against the complete token set, so a theme
446
+ cannot half-apply and leave a stray default showing through.
447
+ - **See one design language rather than the operating system's.** Sliders,
448
+ selects, and focus rings now follow the active theme instead of falling back
449
+ to platform chrome, and an explicit theme choice moves `color-scheme` with it
450
+ so native controls stop rendering in the OS scheme.
451
+ - **Read the quiet text.** The light palette's secondary tones and every accent
452
+ colour were refitted to clear WCAG AA against the surfaces they actually sit
453
+ on, several of which previously measured under 3:1.
454
+
208
455
  **2026-08-12 · Reviewed upstream core Skills**
209
456
 
210
457
  - **Start with reviewed upstream Skills.** DeepCode now bundles eight pinned,
@@ -342,6 +589,8 @@ DeepCode v2.0 is built to help you spend less time supervising every step and
342
589
  more time shipping software you are proud of. We cannot wait to see what you
343
590
  build! 🚀
344
591
 
592
+ </details>
593
+
345
594
  <details>
346
595
  <summary><strong>Earlier 2026 milestones</strong></summary>
347
596
 
@@ -704,6 +953,10 @@ Open **Settings → AI providers** after Desktop starts.
704
953
 
705
954
  ## Using DeepCode
706
955
 
956
+ Prefer a guided walkthrough? The [teaching guides](docs/guide/README.md) cover
957
+ the same ground page by page — first session, the TUI, sessions, models,
958
+ skills and memory, and headless automation — with worked examples.
959
+
707
960
  ### Sessions
708
961
 
709
962
  Every task lives in a durable Session attached to its original Project. Open a
@@ -719,14 +972,22 @@ and CLI without export or conversion.
719
972
  | Attach a file | Use the composer attachment | `@path/to/file` |
720
973
  | Change the next Turn's model | Composer model picker | `/model` |
721
974
  | Adjust Thinking effort | Composer effort picker | `/effort` |
975
+ | Cap the Session context window | Model picker context control | `/context` |
722
976
  | Choose tool access | Composer access picker | `/permissions` |
723
977
  | Load Skills for the next Turn | Composer Skills control | `/skill <name>` |
724
978
  | Create a reusable Skill | **Skills → Create Skill** | `$skill-creator` |
725
979
  | Set or revise a durable Goal | Goal panel | `/goal` |
980
+ | Queue the next instruction | Composer while a Turn runs | `/queue <text>` |
726
981
  | Stop the active Turn | Use the stop control | `/stop` |
982
+ | Re-run the last Turn | Retry control on the Turn | `/retry` |
983
+ | Compact a long conversation | Automatic under pressure | `/compact` (also automatic) |
984
+ | Change transcript detail | — | `/transcript` or `Ctrl+O` |
985
+ | Rename or delete a Session | Session context menu | `/rename <title>` · `/delete <id>` |
727
986
 
728
987
  Session history, tool activity, approvals, Goal state, and verification evidence
729
- remain together. Archiving hides a Session without deleting its history;
988
+ remain together. A Session has one live writer at a time: Desktop and the CLI
989
+ may hold it open together, but if one is mid-Turn the other refuses new input
990
+ with a message naming the holder instead of corrupting shared history. Archiving hides a Session without deleting its history;
730
991
  permanent deletion removes the Session records but never repository files.
731
992
 
732
993
  ### Connections and models
@@ -734,6 +995,9 @@ permanent deletion removes the Session records but never repository files.
734
995
  Desktop provides connection setup and verification under **Settings → AI
735
996
  providers**. In the CLI, `/model` changes the connection and model for future
736
997
  Turns, while `/effort` selects a Thinking level supported by that model.
998
+ Use the model picker's context control, or `/context 64k` in the TUI, to make
999
+ future Turns compact history sooner; `/context auto` restores the model's
1000
+ published window.
737
1001
 
738
1002
  Model changes never rewrite earlier history or alter an active Turn. Thinking
739
1003
  effort controls the request sent to the provider; transcript detail controls