crabcode 0.1.5__tar.gz → 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. crabcode-0.1.6/.github/workflows/computer-use.yml +43 -0
  2. crabcode-0.1.6/.github/workflows/python-publish.yml +125 -0
  3. {crabcode-0.1.5 → crabcode-0.1.6}/.github/workflows/windows-compat.yml +6 -1
  4. crabcode-0.1.6/.gitignore +23 -0
  5. {crabcode-0.1.5 → crabcode-0.1.6}/PKG-INFO +3 -1
  6. {crabcode-0.1.5 → crabcode-0.1.6}/README.md +143 -11
  7. {crabcode-0.1.5 → crabcode-0.1.6}/README.zh-CN.md +164 -17
  8. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/app.py +69 -1
  9. crabcode-0.1.6/packages/cli/crabcode_cli/computer_use.py +286 -0
  10. crabcode-0.1.6/packages/cli/crabcode_cli/model_manager.py +649 -0
  11. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/pipe.py +13 -1
  12. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/repl.py +362 -51
  13. crabcode-0.1.6/packages/cli/hatch_build.py +71 -0
  14. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/pyproject.toml +5 -2
  15. crabcode-0.1.6/packages/computer-use/Cargo.lock +3000 -0
  16. crabcode-0.1.6/packages/computer-use/Cargo.toml +9 -0
  17. crabcode-0.1.6/packages/computer-use/README.md +200 -0
  18. crabcode-0.1.6/packages/computer-use/client/build.mjs +9 -0
  19. crabcode-0.1.6/packages/computer-use/client/channel.d.ts +151 -0
  20. crabcode-0.1.6/packages/computer-use/client/channel.js +614 -0
  21. crabcode-0.1.6/packages/computer-use/client/nativeClient.cjs +111 -0
  22. crabcode-0.1.6/packages/computer-use/client/nativeClient.d.cts +7 -0
  23. crabcode-0.1.6/packages/computer-use/client/nodeChannel.d.ts +11 -0
  24. crabcode-0.1.6/packages/computer-use/client/nodeChannel.js +25 -0
  25. crabcode-0.1.6/packages/computer-use/client/package.json +4 -0
  26. crabcode-0.1.6/packages/computer-use/client/src/channel.ts +688 -0
  27. crabcode-0.1.6/packages/computer-use/client/vscodeHost.d.ts +8 -0
  28. crabcode-0.1.6/packages/computer-use/client/vscodeHost.js +138 -0
  29. crabcode-0.1.6/packages/computer-use/core/Cargo.toml +32 -0
  30. crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_experiment.rs +219 -0
  31. crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_input/tests.rs +377 -0
  32. crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_input.rs +1247 -0
  33. crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_profiles.json +35 -0
  34. crabcode-0.1.6/packages/computer-use/core/src/computer_use/diagnostics.rs +53 -0
  35. crabcode-0.1.6/packages/computer-use/core/src/computer_use/mac_accessibility/tests.rs +914 -0
  36. crabcode-0.1.6/packages/computer-use/core/src/computer_use/mac_accessibility.rs +913 -0
  37. crabcode-0.1.6/packages/computer-use/core/src/computer_use/mac_ax_relations.rs +248 -0
  38. crabcode-0.1.6/packages/computer-use/core/src/computer_use/policy.rs +104 -0
  39. crabcode-0.1.6/packages/computer-use/core/src/computer_use/regression_tests.rs +218 -0
  40. crabcode-0.1.6/packages/computer-use/core/src/computer_use/window_lifecycle.rs +175 -0
  41. crabcode-0.1.6/packages/computer-use/core/src/computer_use/window_observation.rs +369 -0
  42. crabcode-0.1.6/packages/computer-use/core/src/computer_use/window_relations.rs +175 -0
  43. crabcode-0.1.6/packages/computer-use/core/src/computer_use/windows_clipboard.rs +398 -0
  44. crabcode-0.1.6/packages/computer-use/core/src/computer_use/windows_focus.rs +55 -0
  45. crabcode-0.1.6/packages/computer-use/core/src/computer_use/windows_input.rs +430 -0
  46. crabcode-0.1.6/packages/computer-use/core/src/computer_use.rs +6142 -0
  47. crabcode-0.1.6/packages/computer-use/core/src/lib.rs +3 -0
  48. crabcode-0.1.6/packages/computer-use/core/tests/fixtures/background_page.html +28 -0
  49. crabcode-0.1.6/packages/computer-use/core/tests/fixtures/keyboard_host.swift +86 -0
  50. crabcode-0.1.6/packages/computer-use/core/tests/fixtures/popup_observation_host.swift +59 -0
  51. crabcode-0.1.6/packages/computer-use/core/tests/fixtures/save_panel_host.swift +51 -0
  52. crabcode-0.1.6/packages/computer-use/core/tests/fixtures/scaled_ax_host.swift +82 -0
  53. crabcode-0.1.6/packages/computer-use/core/tests/fixtures/scroll_host.swift +208 -0
  54. crabcode-0.1.6/packages/computer-use/core/tests/fixtures/window_group_host.swift +103 -0
  55. crabcode-0.1.6/packages/computer-use/host/Cargo.toml +28 -0
  56. crabcode-0.1.6/packages/computer-use/host/build.rs +63 -0
  57. crabcode-0.1.6/packages/computer-use/host/src/lib.rs +1109 -0
  58. crabcode-0.1.6/packages/computer-use/host/src/main.rs +41 -0
  59. crabcode-0.1.6/packages/computer-use/host/src/permission_guide.m +153 -0
  60. crabcode-0.1.6/packages/computer-use/host/windows.rc +2 -0
  61. crabcode-0.1.6/packages/computer-use/icons/PROMPT.md +19 -0
  62. crabcode-0.1.6/packages/computer-use/icons/icon.icns +0 -0
  63. crabcode-0.1.6/packages/computer-use/icons/icon.ico +0 -0
  64. crabcode-0.1.6/packages/computer-use/icons/icon.png +0 -0
  65. crabcode-0.1.6/packages/computer-use/scripts/build-icons.mjs +54 -0
  66. crabcode-0.1.6/packages/computer-use/scripts/build.mjs +73 -0
  67. crabcode-0.1.6/packages/computer-use/scripts/check-wheel.py +84 -0
  68. crabcode-0.1.6/packages/computer-use/scripts/live-smoke.py +245 -0
  69. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/_version.py +1 -1
  70. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/agent_manager.py +63 -3
  71. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/anthropic_adapter.py +109 -13
  72. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/azure_adapter.py +2 -1
  73. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/base.py +57 -1
  74. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/codex_adapter.py +368 -45
  75. crabcode-0.1.6/packages/core/crabcode_core/api/error_logging.py +132 -0
  76. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/model_info.py +18 -2
  77. crabcode-0.1.6/packages/core/crabcode_core/api/network.py +62 -0
  78. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/openai_adapter.py +41 -7
  79. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/compact/compact.py +31 -35
  80. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/compact/context_tokens.py +28 -2
  81. crabcode-0.1.6/packages/core/crabcode_core/computer_use_mode.py +38 -0
  82. crabcode-0.1.6/packages/core/crabcode_core/computer_use_observation.py +144 -0
  83. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/config/claudemd.py +6 -2
  84. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/config/manager.py +11 -1
  85. crabcode-0.1.6/packages/core/crabcode_core/config/model_catalog.py +256 -0
  86. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/events.py +567 -81
  87. crabcode-0.1.6/packages/core/crabcode_core/image_io.py +111 -0
  88. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/io_worker.py +4 -2
  89. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/logging_utils.py +5 -3
  90. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/diagnostics.py +20 -0
  91. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/mcp/client.py +2 -1
  92. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/mcp/config.py +3 -2
  93. crabcode-0.1.6/packages/core/crabcode_core/paths.py +24 -0
  94. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/peer/runtime.py +2 -1
  95. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/permissions/ai_reviewer.py +10 -2
  96. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/permissions/manager.py +30 -7
  97. crabcode-0.1.6/packages/core/crabcode_core/prompts/blocks.py +10 -0
  98. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/context.py +2 -1
  99. crabcode-0.1.6/packages/core/crabcode_core/prompts/library.py +92 -0
  100. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/profile.py +14 -1
  101. crabcode-0.1.6/packages/core/crabcode_core/prompts/system.py +356 -0
  102. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/templates.py +29 -2
  103. crabcode-0.1.6/packages/core/crabcode_core/query/computer_use_history.py +83 -0
  104. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/query/loop.py +597 -75
  105. crabcode-0.1.6/packages/core/crabcode_core/query/retry.py +116 -0
  106. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/manager.py +15 -1
  107. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/store.py +3 -2
  108. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/meta_db.py +119 -16
  109. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/storage.py +379 -128
  110. crabcode-0.1.6/packages/core/crabcode_core/skills/context.py +23 -0
  111. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/skills/loader.py +5 -3
  112. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/snapshot/tracker.py +6 -4
  113. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/manager.py +3 -2
  114. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/__init__.py +6 -0
  115. crabcode-0.1.6/packages/core/crabcode_core/tools/apply_patch.py +587 -0
  116. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/bash.py +1 -1
  117. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/browser.py +4 -2
  118. crabcode-0.1.6/packages/core/crabcode_core/tools/computer_use.py +599 -0
  119. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/diff_utils.py +5 -2
  120. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/file_read.py +29 -6
  121. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/image.py +25 -18
  122. crabcode-0.1.6/packages/core/crabcode_core/tools/loading.py +187 -0
  123. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/memory.py +3 -3
  124. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/skill.py +2 -20
  125. crabcode-0.1.6/packages/core/crabcode_core/tools/tool_search.py +64 -0
  126. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/web_search.py +137 -13
  127. crabcode-0.1.6/packages/core/crabcode_core/turn_details.py +64 -0
  128. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/__init__.py +2 -0
  129. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/config.py +123 -3
  130. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/event.py +34 -0
  131. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/message.py +1 -0
  132. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/tool.py +2 -0
  133. crabcode-0.1.6/packages/core/crabcode_core/usage.py +289 -0
  134. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/pyproject.toml +3 -1
  135. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/pyproject.toml +2 -2
  136. crabcode-0.1.6/packages/desktop/README.md +164 -0
  137. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/package-lock.json +22 -2
  138. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/package.json +4 -1
  139. crabcode-0.1.6/packages/desktop/src/App.startup.test.tsx +79 -0
  140. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/App.test.tsx +238 -2
  141. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/App.tsx +2212 -1188
  142. crabcode-0.1.6/packages/desktop/src/ApprovalShortcutSettings.tsx +90 -0
  143. crabcode-0.1.6/packages/desktop/src/ChangeReview.test.tsx +118 -0
  144. crabcode-0.1.6/packages/desktop/src/ChangeReview.tsx +252 -0
  145. crabcode-0.1.6/packages/desktop/src/ChangeReviewControls.test.tsx +97 -0
  146. crabcode-0.1.6/packages/desktop/src/ChangeReviewControls.tsx +97 -0
  147. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ComposerEditor.test.tsx +18 -1
  148. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ComposerEditor.tsx +23 -42
  149. crabcode-0.1.6/packages/desktop/src/ConversationTurns.test.tsx +149 -0
  150. crabcode-0.1.6/packages/desktop/src/ConversationTurns.tsx +114 -0
  151. crabcode-0.1.6/packages/desktop/src/DocumentViewTabs.tsx +60 -0
  152. crabcode-0.1.6/packages/desktop/src/DocumentWorkspace.files.test.tsx +180 -0
  153. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.tsx +56 -24
  154. crabcode-0.1.6/packages/desktop/src/FileEditSummaryCard.test.tsx +80 -0
  155. crabcode-0.1.6/packages/desktop/src/FileEditSummaryCard.tsx +87 -0
  156. crabcode-0.1.6/packages/desktop/src/FollowUpQueue.test.tsx +80 -0
  157. crabcode-0.1.6/packages/desktop/src/FollowUpQueue.tsx +93 -0
  158. crabcode-0.1.6/packages/desktop/src/ModelSettingsPanel.test.tsx +117 -0
  159. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ModelSettingsPanel.tsx +99 -16
  160. crabcode-0.1.6/packages/desktop/src/PermissionPicker.test.tsx +43 -0
  161. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ProjectFilesWorkspace.test.tsx +76 -0
  162. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ProjectFilesWorkspace.tsx +102 -11
  163. crabcode-0.1.6/packages/desktop/src/PromptSettingsPanel.test.tsx +359 -0
  164. crabcode-0.1.6/packages/desktop/src/PromptSettingsPanel.tsx +645 -0
  165. crabcode-0.1.6/packages/desktop/src/ReviewMenu.tsx +116 -0
  166. crabcode-0.1.6/packages/desktop/src/RuntimeSettingsPanel.tsx +459 -0
  167. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/SettingsView.test.tsx +470 -7
  168. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/SettingsView.tsx +525 -44
  169. crabcode-0.1.6/packages/desktop/src/SlidingTabIndicator.test.tsx +66 -0
  170. crabcode-0.1.6/packages/desktop/src/SlidingTabIndicator.tsx +26 -0
  171. crabcode-0.1.6/packages/desktop/src/StatusBar.test.tsx +386 -0
  172. crabcode-0.1.6/packages/desktop/src/StatusBar.tsx +402 -0
  173. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/TrajectoryView.tsx +11 -0
  174. crabcode-0.1.6/packages/desktop/src/TurnDetailsButton.test.tsx +97 -0
  175. crabcode-0.1.6/packages/desktop/src/TurnDetailsButton.tsx +61 -0
  176. crabcode-0.1.6/packages/desktop/src/UsageSettingsPanel.css +95 -0
  177. crabcode-0.1.6/packages/desktop/src/UsageSettingsPanel.test.tsx +341 -0
  178. crabcode-0.1.6/packages/desktop/src/UsageSettingsPanel.tsx +489 -0
  179. crabcode-0.1.6/packages/desktop/src/VirtualMachineSettings.test.tsx +69 -0
  180. crabcode-0.1.6/packages/desktop/src/VirtualMachineSettings.tsx +213 -0
  181. crabcode-0.1.6/packages/desktop/src/approvalShortcuts.test.ts +117 -0
  182. crabcode-0.1.6/packages/desktop/src/approvalShortcuts.ts +130 -0
  183. crabcode-0.1.6/packages/desktop/src/computerUse.test.ts +727 -0
  184. crabcode-0.1.6/packages/desktop/src/computerUse.ts +42 -0
  185. crabcode-0.1.6/packages/desktop/src/desktopSlashCommands.test.ts +75 -0
  186. crabcode-0.1.6/packages/desktop/src/desktopSlashCommands.ts +115 -0
  187. crabcode-0.1.6/packages/desktop/src/diffRows.ts +62 -0
  188. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/events.test.ts +298 -0
  189. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/events.ts +172 -36
  190. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/favorites.ts +3 -2
  191. crabcode-0.1.6/packages/desktop/src/fileEditSummary.test.ts +91 -0
  192. crabcode-0.1.6/packages/desktop/src/fileEditSummary.ts +308 -0
  193. crabcode-0.1.6/packages/desktop/src/gateway.test.ts +196 -0
  194. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/gateway.ts +165 -19
  195. crabcode-0.1.6/packages/desktop/src/gatewayErrors.test.ts +46 -0
  196. crabcode-0.1.6/packages/desktop/src/gatewayStartup.test.ts +31 -0
  197. crabcode-0.1.6/packages/desktop/src/gatewayStartup.ts +59 -0
  198. crabcode-0.1.6/packages/desktop/src/lumeInstaller.test.tsx +95 -0
  199. crabcode-0.1.6/packages/desktop/src/lumeInstaller.ts +50 -0
  200. crabcode-0.1.6/packages/desktop/src/native.lume.test.ts +48 -0
  201. crabcode-0.1.6/packages/desktop/src/native.startup.test.ts +159 -0
  202. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/native.test.ts +73 -1
  203. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/native.ts +238 -27
  204. crabcode-0.1.6/packages/desktop/src/permissionPresentation.ts +64 -0
  205. crabcode-0.1.6/packages/desktop/src/platform.ts +5 -0
  206. crabcode-0.1.6/packages/desktop/src/promptTemplateFile.test.ts +52 -0
  207. crabcode-0.1.6/packages/desktop/src/promptTemplateFile.ts +112 -0
  208. crabcode-0.1.6/packages/desktop/src/reviewHistory.ts +23 -0
  209. crabcode-0.1.6/packages/desktop/src/sessionNotifications.test.ts +119 -0
  210. crabcode-0.1.6/packages/desktop/src/sessionNotifications.ts +190 -0
  211. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/styles.css +12309 -9597
  212. crabcode-0.1.6/packages/desktop/src/taskbarProgress.test.ts +71 -0
  213. crabcode-0.1.6/packages/desktop/src/taskbarProgress.ts +76 -0
  214. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/theme.ts +2 -4
  215. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/toolPresentation.test.ts +14 -0
  216. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/toolPresentation.ts +43 -4
  217. crabcode-0.1.6/packages/desktop/src/turnDetails.ts +72 -0
  218. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/types.ts +204 -1
  219. crabcode-0.1.6/packages/desktop/src/useGitReview.test.tsx +48 -0
  220. crabcode-0.1.6/packages/desktop/src/useGitReview.ts +64 -0
  221. crabcode-0.1.6/packages/desktop/src/useProjectModels.test.tsx +41 -0
  222. crabcode-0.1.6/packages/desktop/src/useProjectModels.ts +26 -0
  223. crabcode-0.1.6/packages/desktop/src/userPromptDisplay.test.ts +43 -0
  224. crabcode-0.1.6/packages/desktop/src/userPromptDisplay.ts +104 -0
  225. crabcode-0.1.6/packages/desktop/src/uuid.test.ts +29 -0
  226. crabcode-0.1.6/packages/desktop/src/uuid.ts +40 -0
  227. crabcode-0.1.6/packages/desktop/src/virtualMachine.ts +37 -0
  228. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/Cargo.lock +1437 -37
  229. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/Cargo.toml +7 -1
  230. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/capabilities/default.json +6 -1
  231. crabcode-0.1.6/packages/desktop/src-tauri/icons/icon.png +0 -0
  232. crabcode-0.1.6/packages/desktop/src-tauri/resources/dock-icon-light.png +0 -0
  233. crabcode-0.1.6/packages/desktop/src-tauri/src/computer_use.rs +119 -0
  234. crabcode-0.1.6/packages/desktop/src-tauri/src/gateway.rs +2343 -0
  235. crabcode-0.1.6/packages/desktop/src-tauri/src/gateway_runtime_tests.rs +251 -0
  236. crabcode-0.1.6/packages/desktop/src-tauri/src/lib.rs +59 -0
  237. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/src/main.rs +3 -0
  238. crabcode-0.1.6/packages/desktop/src-tauri/src/paths.rs +80 -0
  239. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/src/settings.rs +225 -33
  240. crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine/forwards.rs +123 -0
  241. crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine/guest.rs +409 -0
  242. crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine/installer.rs +298 -0
  243. crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine.rs +636 -0
  244. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/tauri.conf.json +5 -4
  245. crabcode-0.1.6/packages/desktop/src-tauri/tests/fixtures/gateway_python.py +109 -0
  246. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/types.py +10 -2
  247. crabcode-0.1.6/packages/gateway/crabcode_gateway/computer_use.py +364 -0
  248. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/document_engine.py +2 -1
  249. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/middleware.py +1 -0
  250. crabcode-0.1.6/packages/gateway/crabcode_gateway/routes/computer_use.py +101 -0
  251. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/config.py +494 -15
  252. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/event.py +266 -18
  253. crabcode-0.1.6/packages/gateway/crabcode_gateway/routes/git_review.py +232 -0
  254. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/session.py +123 -7
  255. crabcode-0.1.6/packages/gateway/crabcode_gateway/routes/usage.py +49 -0
  256. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/workspace.py +16 -0
  257. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/schemas.py +306 -6
  258. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/server.py +11 -0
  259. crabcode-0.1.6/packages/gateway/crabcode_gateway/turn_details.py +60 -0
  260. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/pyproject.toml +3 -2
  261. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/pyproject.toml +2 -2
  262. crabcode-0.1.6/packages/shared/package.json +4 -0
  263. crabcode-0.1.6/packages/shared/slashCommands.d.ts +18 -0
  264. crabcode-0.1.6/packages/shared/slashCommands.js +802 -0
  265. crabcode-0.1.6/packages/shared/turnProcess.d.ts +40 -0
  266. crabcode-0.1.6/packages/shared/turnProcess.js +66 -0
  267. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.vscodeignore +3 -0
  268. crabcode-0.1.6/packages/vscode/CHANGELOG.md +40 -0
  269. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/README.md +82 -8
  270. crabcode-0.1.6/packages/vscode/computer-use/.vscodeignore +4 -0
  271. crabcode-0.1.6/packages/vscode/computer-use/LICENSE +21 -0
  272. crabcode-0.1.6/packages/vscode/computer-use/README.md +19 -0
  273. crabcode-0.1.6/packages/vscode/computer-use/esbuild.cjs +2 -0
  274. crabcode-0.1.6/packages/vscode/computer-use/extension.js +19 -0
  275. crabcode-0.1.6/packages/vscode/computer-use/package-lock.json +527 -0
  276. crabcode-0.1.6/packages/vscode/computer-use/package.json +20 -0
  277. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/esbuild.js +12 -4
  278. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/package-lock.json +378 -2
  279. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/package.json +176 -8
  280. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/chatPanel.ts +2050 -1129
  281. crabcode-0.1.6/packages/vscode/src/client/permissionPresentation.ts +64 -0
  282. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/client/protocol.ts +34 -0
  283. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/client/types.ts +223 -7
  284. crabcode-0.1.6/packages/vscode/src/computerUse.ts +78 -0
  285. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/connection.ts +77 -2
  286. crabcode-0.1.6/packages/vscode/src/crabCodeSettingsPanel.ts +425 -0
  287. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/extension.ts +88 -28
  288. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/gatewayManager.ts +130 -2
  289. crabcode-0.1.6/packages/vscode/src/ideContext.ts +166 -0
  290. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/pendingEdits.ts +96 -37
  291. crabcode-0.1.6/packages/vscode/src/promptTemplateFile.ts +112 -0
  292. crabcode-0.1.6/packages/vscode/src/runtimeControls.ts +159 -0
  293. crabcode-0.1.6/packages/vscode/src/settings/catalog.ts +204 -0
  294. crabcode-0.1.6/packages/vscode/src/settings/protocol.ts +50 -0
  295. crabcode-0.1.6/packages/vscode/src/settings/webview.css +656 -0
  296. crabcode-0.1.6/packages/vscode/src/settings/webview.ts +1739 -0
  297. crabcode-0.1.6/packages/vscode/tests/computerUseController.test.cjs +82 -0
  298. crabcode-0.1.6/packages/vscode/tests/computerUseHost.test.cjs +73 -0
  299. crabcode-0.1.6/packages/vscode/tests/computerUseNative.test.cjs +123 -0
  300. crabcode-0.1.6/packages/vscode/tests/computerUsePolicy.test.cjs +93 -0
  301. crabcode-0.1.6/packages/vscode/tests/crabCodeSettingsPanel.test.cjs +362 -0
  302. crabcode-0.1.6/packages/vscode/tests/followUp.test.cjs +192 -0
  303. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tests/gatewayManager.test.cjs +43 -0
  304. crabcode-0.1.6/packages/vscode/tests/helpers/chatPanelHarness.cjs +67 -0
  305. crabcode-0.1.6/packages/vscode/tests/helpers/settingsHarness.cjs +365 -0
  306. crabcode-0.1.6/packages/vscode/tests/helpers/slashCommands.cjs +10 -0
  307. crabcode-0.1.6/packages/vscode/tests/helpers/turnProcess.cjs +9 -0
  308. crabcode-0.1.6/packages/vscode/tests/ideContext.test.cjs +169 -0
  309. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tests/imageCaptions.test.cjs +13 -1
  310. crabcode-0.1.6/packages/vscode/tests/permissionPolicy.test.cjs +52 -0
  311. crabcode-0.1.6/packages/vscode/tests/runtimeControls.test.cjs +156 -0
  312. crabcode-0.1.6/packages/vscode/tests/slashCommands.test.cjs +78 -0
  313. crabcode-0.1.6/packages/vscode/tests/streamRetry.test.cjs +135 -0
  314. crabcode-0.1.6/packages/vscode/tests/turnDetails.test.cjs +54 -0
  315. crabcode-0.1.6/packages/vscode/tests/turnProcess.test.cjs +223 -0
  316. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tsconfig.json +1 -1
  317. crabcode-0.1.6/packages/vscode/tsconfig.webview.json +13 -0
  318. {crabcode-0.1.5 → crabcode-0.1.6}/pyproject.toml +6 -1
  319. {crabcode-0.1.5 → crabcode-0.1.6}/scripts/audit_tool_cards.mjs +3 -1
  320. crabcode-0.1.6/scripts/prompt_budget.py +50 -0
  321. {crabcode-0.1.5 → crabcode-0.1.6}/scripts/sync_version.py +11 -0
  322. crabcode-0.1.6/tests/test_api_error_logging.py +210 -0
  323. crabcode-0.1.6/tests/test_apply_patch.py +442 -0
  324. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_cli_api_recovery.py +57 -9
  325. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_cli_composer.py +58 -2
  326. crabcode-0.1.6/tests/test_cli_computer_use.py +361 -0
  327. crabcode-0.1.6/tests/test_cli_model_management.py +377 -0
  328. crabcode-0.1.6/tests/test_cli_yolo.py +87 -0
  329. crabcode-0.1.6/tests/test_codex_context_window.py +125 -0
  330. crabcode-0.1.6/tests/test_compact_prompt.py +148 -0
  331. crabcode-0.1.6/tests/test_compaction_settings.py +98 -0
  332. crabcode-0.1.6/tests/test_computer_use.py +652 -0
  333. crabcode-0.1.6/tests/test_computer_use_ax.py +245 -0
  334. crabcode-0.1.6/tests/test_computer_use_history.py +93 -0
  335. crabcode-0.1.6/tests/test_computer_use_observation.py +96 -0
  336. crabcode-0.1.6/tests/test_computer_use_packaging.py +95 -0
  337. crabcode-0.1.6/tests/test_computer_use_policy.py +533 -0
  338. crabcode-0.1.6/tests/test_computer_use_window_observations.py +135 -0
  339. crabcode-0.1.6/tests/test_config_home.py +173 -0
  340. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_context_token_accounting.py +87 -1
  341. crabcode-0.1.6/tests/test_follow_up_messages.py +379 -0
  342. crabcode-0.1.6/tests/test_gateway_new_session_controls.py +55 -0
  343. crabcode-0.1.6/tests/test_gateway_runtime_info.py +32 -0
  344. crabcode-0.1.6/tests/test_gateway_send_message.py +69 -0
  345. crabcode-0.1.6/tests/test_git_review.py +151 -0
  346. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_image_context.py +1 -1
  347. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_image_tool.py +8 -5
  348. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_io_isolation.py +7 -3
  349. crabcode-0.1.6/tests/test_model_connection.py +83 -0
  350. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_model_info.py +17 -0
  351. crabcode-0.1.6/tests/test_model_settings_delete.py +52 -0
  352. crabcode-0.1.6/tests/test_network_policy.py +173 -0
  353. crabcode-0.1.6/tests/test_openai_tool_images.py +71 -0
  354. crabcode-0.1.6/tests/test_permission_policy_status.py +82 -0
  355. crabcode-0.1.6/tests/test_project_model_catalog.py +81 -0
  356. crabcode-0.1.6/tests/test_prompt_loading.py +90 -0
  357. crabcode-0.1.6/tests/test_prompt_settings.py +210 -0
  358. crabcode-0.1.6/tests/test_read_images.py +230 -0
  359. crabcode-0.1.6/tests/test_reasoning_effort.py +62 -0
  360. crabcode-0.1.6/tests/test_resume_model.py +272 -0
  361. crabcode-0.1.6/tests/test_session_storage_performance.py +110 -0
  362. crabcode-0.1.6/tests/test_stream_reconnect.py +736 -0
  363. crabcode-0.1.6/tests/test_tool_loading.py +396 -0
  364. crabcode-0.1.6/tests/test_turn_details.py +110 -0
  365. crabcode-0.1.6/tests/test_usage.py +272 -0
  366. crabcode-0.1.6/tests/test_web_search.py +168 -0
  367. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_windows_audit_regressions.py +1 -1
  368. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_windows_compat.py +8 -0
  369. crabcode-0.1.5/.github/workflows/python-publish.yml +0 -65
  370. crabcode-0.1.5/.gitignore +0 -17
  371. crabcode-0.1.5/docs/windows-compatibility-fixes.md +0 -58
  372. crabcode-0.1.5/packages/core/crabcode_core/prompts/system.py +0 -563
  373. crabcode-0.1.5/packages/desktop/README.md +0 -47
  374. crabcode-0.1.5/packages/desktop/src/RuntimeSettingsPanel.tsx +0 -292
  375. crabcode-0.1.5/packages/desktop/src-tauri/icons/icon.png +0 -0
  376. crabcode-0.1.5/packages/desktop/src-tauri/resources/dock-icon-light.png +0 -0
  377. crabcode-0.1.5/packages/desktop/src-tauri/src/gateway.rs +0 -663
  378. crabcode-0.1.5/packages/desktop/src-tauri/src/lib.rs +0 -34
  379. crabcode-0.1.5/packages/vscode/CHANGELOG.md +0 -25
  380. {crabcode-0.1.5 → crabcode-0.1.6}/.github/workflows/document-engine-wheels.yml +0 -0
  381. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/__init__.py +0 -0
  382. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/__main__.py +0 -0
  383. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/banner.py +0 -0
  384. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/model_picker.py +0 -0
  385. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/render/__init__.py +0 -0
  386. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/render/messages.py +0 -0
  387. {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/session_picker.py +0 -0
  388. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/__init__.py +0 -0
  389. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/_windows_process.py +0 -0
  390. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/__init__.py +0 -0
  391. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/gemini_adapter.py +0 -0
  392. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/ollama_adapter.py +0 -0
  393. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/registry.py +0 -0
  394. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/command_line.py +0 -0
  395. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/compact/__init__.py +0 -0
  396. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/config/__init__.py +0 -0
  397. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/file_lock.py +0 -0
  398. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/filesystem.py +0 -0
  399. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/goal.py +0 -0
  400. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/hooks/__init__.py +0 -0
  401. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/hooks/manager.py +0 -0
  402. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/__init__.py +0 -0
  403. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/client.py +0 -0
  404. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/manager.py +0 -0
  405. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/mcp/__init__.py +0 -0
  406. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/path_validation.py +0 -0
  407. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/peer/__init__.py +0 -0
  408. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/permissions/__init__.py +0 -0
  409. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/plan/__init__.py +0 -0
  410. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/plan/executor.py +0 -0
  411. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/plan/types.py +0 -0
  412. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/__init__.py +0 -0
  413. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/query/__init__.py +0 -0
  414. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/__init__.py +0 -0
  415. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/models.py +0 -0
  416. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/timing.py +0 -0
  417. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/__init__.py +0 -0
  418. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/export.py +0 -0
  419. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/title_gen.py +0 -0
  420. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/skills/__init__.py +0 -0
  421. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/skills/matcher.py +0 -0
  422. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/snapshot/__init__.py +0 -0
  423. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/snapshot/snapshot.py +0 -0
  424. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/subprocess_utils.py +0 -0
  425. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/__init__.py +0 -0
  426. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/bridge.py +0 -0
  427. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/inbox.py +0 -0
  428. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/message_bus.py +0 -0
  429. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/models.py +0 -0
  430. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/recovery.py +0 -0
  431. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/text_io.py +0 -0
  432. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/_input_helpers.py +0 -0
  433. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/_input_schema.py +0 -0
  434. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/agent.py +0 -0
  435. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/ask_user.py +0 -0
  436. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/checklist.py +0 -0
  437. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/checkpoint.py +0 -0
  438. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/file_edit.py +0 -0
  439. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/file_write.py +0 -0
  440. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/glob.py +0 -0
  441. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/goal.py +0 -0
  442. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/grep.py +0 -0
  443. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/image_generate.py +0 -0
  444. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/lint.py +0 -0
  445. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/monitor.py +0 -0
  446. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/peer.py +0 -0
  447. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/revert.py +0 -0
  448. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/schedule.py +0 -0
  449. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/switch_mode.py +0 -0
  450. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/team.py +0 -0
  451. {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/utf8_sanitize.py +0 -0
  452. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/__init__.py +0 -0
  453. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/adapters.py +0 -0
  454. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/dap.py +0 -0
  455. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/memory.py +0 -0
  456. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/process.py +0 -0
  457. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/runtime.py +0 -0
  458. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/sessions.py +0 -0
  459. {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/tool.py +0 -0
  460. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/THEMES.md +0 -0
  461. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/index.html +0 -0
  462. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/CopyButton.tsx +0 -0
  463. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.blog.test.tsx +0 -0
  464. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.selection.test.tsx +0 -0
  465. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.test.ts +0 -0
  466. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.toolbar.test.tsx +0 -0
  467. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/TrajectoryView.test.tsx +0 -0
  468. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/favorites.test.ts +0 -0
  469. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/main.tsx +0 -0
  470. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/markdownMath.ts +0 -0
  471. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/pathUtils.ts +0 -0
  472. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/theme.test.ts +0 -0
  473. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/themePackages.test.ts +0 -0
  474. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/themePackages.ts +0 -0
  475. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/vite-env.d.ts +0 -0
  476. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/build.rs +0 -0
  477. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/128x128.png +0 -0
  478. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/128x128@2x.png +0 -0
  479. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/32x32.png +0 -0
  480. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/icon.icns +0 -0
  481. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/icon.ico +0 -0
  482. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/tsconfig.json +0 -0
  483. {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/vite.config.ts +0 -0
  484. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/__init__.py +0 -0
  485. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/__init__.py +0 -0
  486. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/agent.py +0 -0
  487. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/session.py +0 -0
  488. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/transport.py +0 -0
  489. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/adapter.py +0 -0
  490. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/auth.py +0 -0
  491. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/document_worker.py +0 -0
  492. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/event_bus.py +0 -0
  493. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/__init__.py +0 -0
  494. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/crabcode_pb2.py +0 -0
  495. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/crabcode_pb2_grpc.py +0 -0
  496. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/proto/crabcode.proto +0 -0
  497. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/server.py +0 -0
  498. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/protocol.py +0 -0
  499. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/__init__.py +0 -0
  500. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/agent.py +0 -0
  501. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/auth.py +0 -0
  502. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/document.py +0 -0
  503. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/health.py +0 -0
  504. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/peer.py +0 -0
  505. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/permission.py +0 -0
  506. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/schedule.py +0 -0
  507. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/snapshot.py +0 -0
  508. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/tasks.py +0 -0
  509. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/team.py +0 -0
  510. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/safe_file.py +0 -0
  511. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/session_registry.py +0 -0
  512. {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/task_registry.py +0 -0
  513. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/__init__.py +0 -0
  514. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/background.py +0 -0
  515. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/chunker.py +0 -0
  516. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/embedder.py +0 -0
  517. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/indexer.py +0 -0
  518. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/store.py +0 -0
  519. {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/tool.py +0 -0
  520. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.gitignore +0 -0
  521. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.nvmrc +0 -0
  522. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.vscode/launch.json +0 -0
  523. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.vscode/tasks.json +0 -0
  524. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/LICENSE +0 -0
  525. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/logo.png +0 -0
  526. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/resources/icon.svg +0 -0
  527. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/scripts/gen-types.py +0 -0
  528. {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tests/contextUsage.test.cjs +0 -0
  529. {crabcode-0.1.5 → crabcode-0.1.6}/scripts/build_document_engine_bundle.py +0 -0
  530. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_cli_model_picker.py +0 -0
  531. {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_cli_session_picker.py +0 -0
@@ -0,0 +1,43 @@
1
+ name: Shared Computer Use
2
+ on:
3
+ pull_request:
4
+ push:
5
+ branches: [main]
6
+ permissions:
7
+ contents: read
8
+ jobs:
9
+ native:
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ os: [macos-14, windows-latest]
14
+ runs-on: ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-node@v4
18
+ with:
19
+ node-version: '22'
20
+ - run: cargo test --locked --workspace
21
+ working-directory: packages/computer-use
22
+ - run: node packages/computer-use/scripts/build.mjs --debug
23
+ - uses: actions/setup-python@v5
24
+ with:
25
+ python-version: '3.12'
26
+ - run: python -m pip install -e . build hatchling pytest pefile
27
+ - run: python -m pytest tests/test_cli_computer_use.py tests/test_computer_use_packaging.py -q
28
+ - name: Build and verify Python platform wheel
29
+ shell: bash
30
+ run: |
31
+ export CRABCODE_COMPUTER_USE_BUNDLE="$PWD/packages/computer-use/dist/$(node -p 'process.platform + "-" + process.arch')"
32
+ python -m build --wheel --no-isolation
33
+ python packages/computer-use/scripts/check-wheel.py dist
34
+ - run: npm ci
35
+ working-directory: packages/vscode
36
+ - run: npm run build
37
+ working-directory: packages/vscode
38
+ - run: node --test tests/computerUse*.test.cjs
39
+ working-directory: packages/vscode
40
+ - run: npm ci
41
+ working-directory: packages/vscode/computer-use
42
+ - run: npm run build
43
+ working-directory: packages/vscode/computer-use
@@ -0,0 +1,125 @@
1
+ # This workflow will upload a Python Package to PyPI when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
+
4
+ # This workflow uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: Upload Python Package
10
+
11
+
12
+ on:
13
+ release:
14
+ types: [published]
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ release-build:
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ include:
25
+ - name: universal
26
+ os: ubuntu-latest
27
+ - name: darwin-arm64
28
+ os: macos-15
29
+ - name: darwin-x64
30
+ os: macos-15-intel
31
+ - name: win32-x64
32
+ os: windows-latest
33
+ runs-on: ${{ matrix.os }}
34
+
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+
38
+ - uses: actions/setup-python@v5
39
+ with:
40
+ python-version: "3.10"
41
+
42
+ - name: Check version metadata
43
+ run: python scripts/sync_version.py --check
44
+
45
+ - uses: actions/setup-node@v4
46
+ if: matrix.name != 'universal'
47
+ with:
48
+ node-version: '22'
49
+
50
+ - name: Import macOS signing identity when configured
51
+ if: runner.os == 'macOS'
52
+ shell: bash
53
+ env:
54
+ SIGNING_CERTIFICATE: ${{ secrets.CRABCODE_SIGNING_CERTIFICATE_P12_BASE64 }}
55
+ SIGNING_PASSWORD: ${{ secrets.CRABCODE_SIGNING_CERTIFICATE_PASSWORD }}
56
+ run: |
57
+ if [ -z "$SIGNING_CERTIFICATE" ]; then exit 0; fi
58
+ python - <<'PY'
59
+ import base64, os
60
+ from pathlib import Path
61
+ (Path(os.environ['RUNNER_TEMP']) / 'crabcode-signing.p12').write_bytes(base64.b64decode(os.environ['SIGNING_CERTIFICATE']))
62
+ PY
63
+ keychain="$RUNNER_TEMP/crabcode-signing.keychain-db"
64
+ keychain_password="$(openssl rand -base64 32)"
65
+ security create-keychain -p "$keychain_password" "$keychain"
66
+ security unlock-keychain -p "$keychain_password" "$keychain"
67
+ security import "$RUNNER_TEMP/crabcode-signing.p12" -k "$keychain" -P "$SIGNING_PASSWORD" -T /usr/bin/codesign
68
+ security set-key-partition-list -S apple-tool:,apple: -k "$keychain_password" "$keychain" >/dev/null
69
+ security list-keychains -d user -s "$keychain" login.keychain-db
70
+ rm "$RUNNER_TEMP/crabcode-signing.p12"
71
+
72
+ - name: Build bundled Computer Use component
73
+ if: matrix.name != 'universal'
74
+ env:
75
+ MACOSX_DEPLOYMENT_TARGET: '11.0'
76
+ CRABCODE_SIGNING_IDENTITY: ${{ secrets.CRABCODE_SIGNING_IDENTITY }}
77
+ run: node packages/computer-use/scripts/build.mjs
78
+
79
+ - name: Install Python build tools
80
+ run: python -m pip install build pefile
81
+
82
+ - name: Build universal wheel and source distribution
83
+ if: matrix.name == 'universal'
84
+ run: python -m build
85
+
86
+ - name: Build platform wheel with Computer Use
87
+ if: matrix.name != 'universal'
88
+ env:
89
+ CRABCODE_COMPUTER_USE_BUNDLE: ${{ github.workspace }}/packages/computer-use/dist/${{ matrix.name }}
90
+ run: python -m build --wheel
91
+
92
+ - name: Verify native payload and wheel metadata
93
+ if: matrix.name != 'universal'
94
+ run: |
95
+ python packages/computer-use/scripts/check-wheel.py dist
96
+
97
+ - name: Upload distributions
98
+ uses: actions/upload-artifact@v4
99
+ with:
100
+ name: release-dists-${{ matrix.name }}
101
+ path: dist/
102
+
103
+ pypi-publish:
104
+ runs-on: ubuntu-latest
105
+ needs:
106
+ - release-build
107
+ permissions:
108
+ id-token: write
109
+
110
+ environment:
111
+ name: pypi
112
+ url: https://pypi.org/p/crabcode
113
+
114
+ steps:
115
+ - name: Retrieve release distributions
116
+ uses: actions/download-artifact@v4
117
+ with:
118
+ pattern: release-dists-*
119
+ merge-multiple: true
120
+ path: dist/
121
+
122
+ - name: Publish release distributions to PyPI
123
+ uses: pypa/gh-action-pypi-publish@release/v1
124
+ with:
125
+ packages-dir: dist/
@@ -24,8 +24,9 @@ jobs:
24
24
  - uses: actions/setup-node@v4
25
25
  with:
26
26
  node-version: '22'
27
- - run: python -m pip install -e . fastapi pypdf python-multipart
27
+ - run: python -m pip install -e . fastapi pypdf python-multipart pytest
28
28
  - run: python -m unittest discover -s tests -p "test_windows*.py" -v
29
+ - run: python -m pytest tests/test_cli_computer_use.py -q
29
30
 
30
31
  windows-clients:
31
32
  runs-on: windows-latest
@@ -46,6 +47,10 @@ jobs:
46
47
  working-directory: packages/vscode
47
48
  - run: npx tsc --noEmit
48
49
  working-directory: packages/vscode
50
+ - run: npm run computer-use:build -- --debug
51
+ working-directory: packages/desktop
52
+ - run: cargo test --locked --workspace
53
+ working-directory: packages/computer-use
49
54
  - run: cargo test --locked
50
55
  working-directory: packages/desktop/src-tauri
51
56
  - run: cargo test --locked windows_credentials_survive_a_new_entry -- --ignored
@@ -0,0 +1,23 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .venv/
7
+ .env
8
+ *.egg
9
+ .mypy_cache/
10
+ .ruff_cache/
11
+ .crabcode/
12
+ .claude/
13
+ .DS_Store
14
+ theme-samples
15
+ node_modules
16
+ target/
17
+ packages/computer-use/target-*/
18
+ packages/desktop/src-tauri/gen/schemas/
19
+ packages/desktop/src-tauri/resources/computer-use/
20
+ packages/vscode/resources/computer-use/
21
+ packages/vscode/computer-use/resources/computer-use/
22
+ packages/vscode/computer-use/*.vsix
23
+ _native
@@ -1,17 +1,19 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: crabcode
3
- Version: 0.1.5
3
+ Version: 0.1.6
4
4
  Summary: CrabCode - AI coding assistant in the terminal
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: anthropic>=0.40.0
7
7
  Requires-Dist: httpx>=0.27.0
8
8
  Requires-Dist: mcp>=1.0.0
9
9
  Requires-Dist: openai>=1.50.0
10
+ Requires-Dist: pillow>=11.3.0
10
11
  Requires-Dist: prompt-toolkit>=3.0.0
11
12
  Requires-Dist: pydantic>=2.0.0
12
13
  Requires-Dist: rich>=13.0.0
13
14
  Requires-Dist: tiktoken>=0.7.0
14
15
  Requires-Dist: typer>=0.12.0
16
+ Requires-Dist: tzdata>=2024.1; sys_platform == 'win32'
15
17
  Requires-Dist: websockets>=12.0
16
18
  Provides-Extra: all
17
19
  Requires-Dist: agent-client-protocol>=0.9.0; extra == 'all'
@@ -48,7 +48,7 @@ the provider-specific keys below).
48
48
 
49
49
  ```bash
50
50
  # Install packages in editable mode
51
- pip install -e packages/core packages/cli packages/search
51
+ pip install -e packages/core packages/cli packages/search packages/debugger crabcode-gateway
52
52
  # Minimal install (core + cli only, no semantic search)
53
53
  pip install -e packages/core packages/cli
54
54
  # Browser automation dependency
@@ -69,6 +69,9 @@ echo "explain this codebase" | crabcode -p
69
69
  # Interactive REPL
70
70
  crabcode
71
71
 
72
+ # Full Access for this run (skip tool permission prompts)
73
+ crabcode --yolo
74
+
72
75
  # Resume last session
73
76
  crabcode --continue # or -c
74
77
 
@@ -81,6 +84,34 @@ newline. You can also press **Esc**, then **Enter** to insert a newline. The
81
84
  input frame grows with newlines and wrapped text, and scrolls with the cursor
82
85
  when it fills the terminal. These keys also work while the agent is running.
83
86
 
87
+ ### Follow-up behavior
88
+
89
+ CLI, VS Code, and Desktop support follow-ups during an active run. **Queue** is
90
+ the default: messages run as separate turns in FIFO order after the current turn
91
+ finishes. **Steer** adds guidance at a safe boundary of the current run, such as
92
+ after a tool returns. Queued input retains its images and attached context.
93
+
94
+ Choose the default in **Desktop Settings → General → Conversation → Follow-up
95
+ behavior** or in VS Code's `crabcode.followUpMode` setting. Queued messages appear
96
+ in cards above the composer, with Steer and Delete actions. The menu offers Edit
97
+ message (recall the message and its images into the composer) and Disable queue
98
+ (switch future messages to Steer while keeping existing queued messages).
99
+ During a run, Enter uses the default and Cmd+Enter
100
+ (macOS) / Ctrl+Enter (Windows/Linux) uses the opposite for just that message;
101
+ Shift+Enter inserts a newline. Idle input keeps the configured send shortcut.
102
+
103
+ In the CLI, `/follow-up queue` and `/follow-up steer` save `follow_up_mode` in user
104
+ settings. Ctrl+S sends the opposite while working; Ctrl+Enter also works in
105
+ terminals that report extended key codes. Ctrl+J and Alt/Opt+Enter insert newlines.
106
+ With an empty composer and no pending image attachments, Ctrl+S / Ctrl+Enter
107
+ moves the oldest queued message into steering, including its original attachments,
108
+ without changing the default mode. Use `/queue` to list pending messages and
109
+ `/queue steer [number]` to promote one (the number defaults to 1). Promotion applies
110
+ at the next safe boundary; it leaves the message queued if steering fails.
111
+
112
+ Stopping or failing a run discards its unexecuted queue. Desktop and VS Code keep
113
+ that input available to restore into the composer; CLI prints the unsent messages.
114
+
84
115
  ### Persistent Goals
85
116
 
86
117
  Use `/goal` to keep a measurable objective active across turns, compaction, and
@@ -202,7 +233,7 @@ Use HTTPS/WSS whenever the gateway is exposed beyond the local machine.
202
233
  | Endpoint | Method | Description |
203
234
  | ---------- | -------- | ------------- |
204
235
  | `/health` | GET | Health check with the CrabCode version and gateway protocol compatibility range |
205
- | `/session/new` | POST | Create a session; accepts `cwd` plus optional `model`, `provider`, `base_url`, `api_format`, and `model_profile` overrides |
236
+ | `/session/new` | POST | Create a session; accepts `cwd` plus optional model overrides and composer-control defaults (`reasoning_effort`, `ultra_mode`, `mode`, `permission_mode`) |
206
237
  | `/session/send` | POST | Send a message (starts query loop, events via SSE) |
207
238
  | `/session/interrupt` | POST | Interrupt current turn |
208
239
  | `/session/compact` | POST | Trigger manual compaction |
@@ -276,7 +307,7 @@ Use HTTPS/WSS whenever the gateway is exposed beyond the local machine.
276
307
  `delete_model`, `upsert_group`, `delete_group`, `set_default_model`, and
277
308
  `clear_default_model`. Mutations target `userSettings`, `projectSettings`, or
278
309
  `localSettings`; project layers require a `cwd` within the Gateway workspace.
279
- `POST /config/runtime-settings` accepts `set_snapshot`, `add_extra_tool`, and
310
+ `POST /config/runtime-settings` accepts `set_snapshot`, `set_computer_use_mode`, `add_extra_tool`, and
280
311
  `remove_extra_tool`, using the same configuration layers. Disabling snapshots
281
312
  skips only the file-system copy; conversation checkpoints are still persisted.
282
313
 
@@ -474,7 +505,9 @@ Or configure in `~/.crabcode/settings.json`:
474
505
  | `reasoning_effort` | Model reasoning effort. OpenAI Responses/Codex sends it as `reasoning.effort`; Anthropic sends supported values as `output_config.effort`. When set, it takes precedence over the Codex `thinking_budget` mapping. Options: `none` \| `minimal` \| `low` \| `medium` \| `high` \| `xhigh` \| `max` (availability depends on the model/provider). | — |
475
506
  | `max_tokens` | Maximum output tokens | `16384` |
476
507
  | `timeout` | API call timeout in seconds (prevents hanging on slow/unresponsive APIs) | `300` |
477
- | `max_retries` | Automatic reconnect attempts for transient API, rate-limit, timeout, and server failures. Requests are replayed only when no response content or tool call has arrived. | `5` |
508
+ | `request_max_retries` | Silent HTTP request retry budget for transport failures and 5xx responses (429 is handled by the stream layer). Uses 200 ms exponential backoff with jitter. | `4` |
509
+ | `max_retries` | Stream reconnect budget. Retryable drops are replayed from the last completed response item with 200 ms exponential backoff and jitter; completed tool calls are never executed twice. | `5` |
510
+ | `unbounded_connection_retries` | Keep retrying connection-establishment failures with a separate 5–60 second exponential backoff. Stream failures still use `max_retries`. | `true` |
478
511
  | `context_window` | Override the model's context window size (tokens). Used when auto-detection fails or is inaccurate — see [Context Window](#context-window) below. | auto-detected |
479
512
  | `prompt_cache_key` | Prompt cache routing key for OpenAI Responses/Codex requests; defaults to `http_headers.session_id` when omitted | — |
480
513
  | `prompt_cache_retention` | OpenAI Responses/Codex prompt cache retention policy: `in_memory` \| `24h` | — |
@@ -563,7 +596,7 @@ If your model is not in the built-in table and you don't set an override, the 20
563
596
 
564
597
  **Automatic compaction**
565
598
 
566
- CrabCode estimates the complete request (system prompts, messages, tool calls/results, tool schemas, and image payloads). It normally compacts before input exceeds `context_window - max(max_tokens, 20000)`:
599
+ CrabCode measures the complete request (system prompts, messages, tool calls/results, tool schemas, and image payloads). It automatically compacts when input exceeds `context_window - max(max_tokens, compact_buffer_tokens)`, with `compact_buffer_tokens` defaulting to `20000`:
567
600
 
568
601
  1. Incrementally summarizes the full older history into a structured, resumable checkpoint
569
602
  2. Keeps up to two complete recent user turns, so tool calls are never separated from their results
@@ -572,6 +605,18 @@ CrabCode estimates the complete request (system prompts, messages, tool calls/re
572
605
 
573
606
  Use `/compact [optional instructions]` to trigger it manually. `auto_compact_enabled` controls automatic compaction. `max_context_length` can set an earlier input threshold, but it cannot raise the threshold past the provider-safe limit.
574
607
 
608
+ Configure these top-level fields in `settings.json`:
609
+
610
+ ```json
611
+ {
612
+ "auto_compact_enabled": true,
613
+ "compact_buffer_tokens": 30000,
614
+ "max_context_length": null
615
+ }
616
+ ```
617
+
618
+ The buffer must be a nonnegative integer. Setting it to `0` still reserves the model's `max_tokens` output allowance. A `null` `max_context_length` uses the automatic threshold. All three controls are available in the VS Code chat settings menu → **上下文压缩** (or the **CrabCode:打开上下文压缩设置** command) and Desktop **Settings → 运行与工具 → 上下文压缩**. Both let you choose the configuration layer to save. Changes apply from the next conversation turn; a running turn keeps its original settings.
619
+
575
620
  > **Note**: Compaction uses the configured API model. If checkpoint generation fails, CrabCode keeps the original conversation unchanged; it never replaces history with a lossy fallback. Provider overflow recovery is attempted only before response output has started, avoiding duplicate tool calls after a partial response.
576
621
 
577
622
  ### Logging
@@ -714,9 +759,15 @@ crabcode --model-profile smart # short: -M smart
714
759
  /model fast # switch to the "fast" (ollama) profile
715
760
  /model smart # switch to the "smart" (anthropic) profile
716
761
  /model code # switch to the "code" (openai) profile
762
+ /add # guided menu: add a model or shared group
763
+ /add model # open the add-model wizard directly
764
+ /del group # choose and delete a group definition
717
765
  ```
718
766
 
719
767
  Switching does not clear conversation history — you can mix models freely within a single session.
768
+ The `/add` and `/del` wizards let you choose user, shared-project, or local-project
769
+ settings. Delete targets show their exact source layer; the active model (or its
770
+ group) is protected until you switch away from it.
720
771
 
721
772
  ## Built-in Tools
722
773
 
@@ -724,6 +775,7 @@ Switching does not clear conversation history — you can mix models freely with
724
775
  | ------ | ------ | ------------- |
725
776
  | `Bash` | write | Execute shell commands |
726
777
  | `Read` | read | Read file contents |
778
+ | `apply_patch` | write | Apply a validated, transactional multi-file patch |
727
779
  | `Write` | write | Create or overwrite files |
728
780
  | `StrReplace` | write | Precise in-place text replacement |
729
781
  | `Glob` | read | Find files by glob pattern |
@@ -734,6 +786,13 @@ Switching does not clear conversation history — you can mix models freely with
734
786
  | `Memory` | write | Store and retrieve persistent notes |
735
787
  | `AskUser` | read | Present choices to the user and wait for selection |
736
788
 
789
+ For shell-level discovery, CrabCode reports whether `rg`, `sed`, and `find` are
790
+ available in the runtime environment. The agent prefers dedicated tools for
791
+ ordinary reads and searches, while using read-only `sed -n` pipelines and
792
+ advanced `find` predicates when they are a better fit. File mutation stays in
793
+ `apply_patch`, `Edit`, or `Write`, so changes retain permission checks, snapshots,
794
+ and diff rendering.
795
+
737
796
  ### Lint
738
797
 
739
798
  The `Lint` tool runs the appropriate linter for the given language automatically:
@@ -872,7 +931,7 @@ In **pipe mode** (non-interactive), the first option is auto-selected.
872
931
 
873
932
  The `WebSearch` tool searches the public web and returns compact search results with titles, URLs, and snippets.
874
933
 
875
- - **Default provider order** — Tavily first when `TAVILY_API_KEY` is configured, otherwise DuckDuckGo HTML search
934
+ - **Default provider order** — Tavily first when `TAVILY_API_KEY` is configured, otherwise DuckDuckGo HTML search. If DuckDuckGo answers with a bot check, search continues with Bing RSS instead of reporting an empty result.
876
935
  - **Offline behavior** — if CrabCode cannot detect outbound network access during session startup, `WebSearch` is disabled for that session and is not exposed to the model
877
936
  - **Permission behavior** — `WebSearch` is read-only, but still asks for confirmation before each network request
878
937
 
@@ -893,7 +952,7 @@ Configure via `tool_settings.WebSearch` in `settings.json`:
893
952
 
894
953
  Supported `provider` values:
895
954
 
896
- - `"auto"` — use Tavily when configured, otherwise DuckDuckGo; if Tavily fails at runtime, retry with DuckDuckGo once
955
+ - `"auto"` — use Tavily when configured, otherwise DuckDuckGo; if Tavily fails at runtime, retry with DuckDuckGo once. If DuckDuckGo is blocked, fall back to Bing for about ten minutes
897
956
  - `"tavily"` — require a configured API key and use Tavily only
898
957
  - `"ddg"` — use DuckDuckGo only
899
958
 
@@ -963,9 +1022,38 @@ Default permission behavior:
963
1022
 
964
1023
  `headless` in `tool_settings.Browser` is the session default. The tool input can override it per session when calling `create_session`.
965
1024
 
1025
+ ### Computer Use modes
1026
+
1027
+ Desktop, VS Code and CLI share a standalone Computer Use component; VS Code and CLI do not require Crab Desktop. Platform wheels for macOS (Apple Silicon / Intel) and Windows x64 include the native executor, so `pip install crabcode` installs it too. The first CLI session automatically deploys it to the shared user directory, with no extra installation command or launch flag. Interactive and pipe sessions connect automatically; status appears in `/status`, without a startup banner. `crabcode computer-use status` also checks capabilities directly. Source installs and universal wheels can reuse an existing component; otherwise, use a platform wheel containing the native executor.
1028
+
1029
+ In VS Code, `crabcode.computerUseEnabled` is enabled by default; set it to `false` to disable Computer Use. Use the Computer Use status-bar menu for monitoring, permission settings and refresh. Remote SSH/WSL/container windows use the **local** CrabCode Computer Use companion extension. On macOS, grant **Crab Computer Use** Accessibility and Screen Recording permissions. See [component development and packaging](packages/computer-use/README.md).
1030
+
1031
+ Once a host is connected, agents can inspect and operate desktop applications. Background application mode is the default:
1032
+
1033
+ ```json
1034
+ {
1035
+ "computer_use": {
1036
+ "target_scope": "app_window",
1037
+ "delivery_policy": "allow_foreground"
1038
+ }
1039
+ }
1040
+ ```
1041
+
1042
+ On AX-capable macOS hosts, window observation prefers the accessibility tree. `observe` accepts `observation: "auto" | "ax" | "screenshot"`; `auto` falls back to pixels when AX observation is unavailable. Use `press`, `set_value` (replace the whole text value), or `perform_action` with the returned `window_id`, `snapshot_id` and `element_id`. Element actions return a fresh bounded tree; screenshots are optional. References belong to one host connection, session and agent, expire, and are invalidated by new observations, input and release. Re-observe stale references; never replay uncertain AX input through mouse events. An AX acknowledgement alone does not prove the intended effect occurred. After fresh observation, the agent can make a new decision using a screenshot: coordinate clicks on the new protocol use mouse delivery directly, without another AXPress attempt. `allow_foreground` also permits explicitly focusing the window before re-observing.
1043
+
1044
+ AX observation works with Accessibility permission even without Screen Recording. Strict background still requires an exact validated OS/app/element/action profile and sampled isolation checks: currently TextEdit 1.20/415 on macOS build 25D125 arm64 supports `AXValue` on its `AXTextArea`. Other AX actions remain gated, and existing validated coordinate routes remain available. Desktop scope and local VMs retain their screenshot workflow.
1045
+
1046
+ The target and delivery policy are independent:
1047
+
1048
+ - `app_window` observes and sends input to a selected macOS application window; call `list_windows` first and pass `window_id`. `desktop` controls the complete desktop and real pointer/keyboard.
1049
+ - `strict_background` uses process/window-targeted delivery and does not expose `focus_window`; applications that require activation may ignore input.
1050
+ - `allow_foreground` permits activating the target window when background delivery is insufficient and can interrupt the current user. Desktop scope requires this policy.
1051
+
1052
+ Crab Desktop can write these settings from **Settings → Runtime & Tools → Computer Use** at the user, project, or project-local layer. VS Code can explicitly override them with `crabcode.computerUseTargetScope` and `crabcode.computerUseDeliveryPolicy`. Delivery policy is independent of tool approval modes such as Full Access, and the agent cannot override it inside an action.
1053
+
966
1054
  ### Diff Display
967
1055
 
968
- When the agent edits a file via `StrReplace` or `Write`, the terminal shows a compact inline diff:
1056
+ When the agent edits files via `apply_patch`, `Edit`, or `Write`, the terminal shows an inline diff. Multi-file patches are grouped by file:
969
1057
 
970
1058
  ```
971
1059
  ✎ src/auth.py lines 42–55 (+8 / -3)
@@ -980,7 +1068,7 @@ CrabCode automatically tracks file-system changes made during a session, allowin
980
1068
  **How it works:**
981
1069
 
982
1070
  1. Every time you create a checkpoint (`/checkpoint`), CrabCode takes a snapshot of the working directory state using git internals (or file-copy fallback for non-git projects).
983
- 2. Tools that modify files (`Edit`, `Write`, `Bash`) also record per-file snapshots before each change.
1071
+ 2. Tools that modify files (`apply_patch`, `Edit`, `Write`, `Bash`) also record per-file snapshots before each change.
984
1072
  3. You can revert to any checkpoint to restore both the conversation **and** the files to that point.
985
1073
 
986
1074
  **Commands:**
@@ -1032,6 +1120,14 @@ section can add or remove `extra_tools` import paths on the remote Gateway;
1032
1120
  the package must be installed in that Gateway environment. Changes apply to
1033
1121
  new sessions or after reconnecting an existing session.
1034
1122
 
1123
+ For a local Gateway, Desktop also exposes **Settings → General → CrabCode
1124
+ Suite**. Automatic provisioning keeps the lightweight `gateway` extra, while
1125
+ the explicit installer keeps Gateway selected and lets you independently check
1126
+ Search, Debugger, and future optional capabilities. The VS Code extension uses
1127
+ the same multi-select model through **CrabCode: Select and Install Local Suite**
1128
+ and the link beside `crabcode.gatewayAutoInstall`. Remote environments are
1129
+ never modified by either client.
1130
+
1035
1131
  **Gateway API:**
1036
1132
 
1037
1133
  | Endpoint | Method | Description |
@@ -1053,6 +1149,8 @@ new sessions or after reconnecting an existing session.
1053
1149
  | `/logs --clear <name>` | Clear a specific log file |
1054
1150
  | `/model` | Open a searchable model picker organized by group; ↑/↓ select, Enter switches, Esc cancels, Tab and ←/→ filter groups |
1055
1151
  | `/model <name>` | Switch to a named model from `settings.models` |
1152
+ | `/add [model\|group]` | Add a named model or shared group with a guided, searchable configuration wizard |
1153
+ | `/del [model\|group]` | Delete a model or group from a selected writable settings layer |
1056
1154
  | `/effort` | Show the active reasoning effort |
1057
1155
  | `/effort <none\|minimal\|low\|medium\|high\|xhigh\|max>` | Set reasoning effort for subsequent requests in the current runtime session |
1058
1156
  | `/ultra` | Toggle ultra mode for subsequent requests |
@@ -1219,6 +1317,11 @@ Set `"default_mode": "run_everything"` to skip all permission prompts and execut
1219
1317
 
1220
1318
  `"run_everything": true` is still accepted for backward compatibility.
1221
1319
 
1320
+ Use `crabcode --yolo` to enable Full Access for a single CLI run without
1321
+ changing `settings.json`. It also works with `-p`, `--continue`, and `--resume`,
1322
+ and overrides configured permission rules and AI review using the existing
1323
+ `run_everything` mode. Plan mode and Computer Use delivery policy still apply.
1324
+
1222
1325
  > **Use with caution.** In this mode CrabCode will run shell commands and write files without asking.
1223
1326
 
1224
1327
  The VS Code extension defaults to **Follow settings** (`crabcode.permissionMode: "default"`),
@@ -1235,6 +1338,32 @@ Settings are loaded from multiple layers (later overrides earlier):
1235
1338
  4. Flag settings
1236
1339
  5. `~/.crabcode/managed-settings.json` (policy)
1237
1340
 
1341
+ ### Custom Global Directory
1342
+
1343
+ Set `CRABCODE_HOME` before starting CrabCode to use a different global directory:
1344
+
1345
+ ```bash
1346
+ export CRABCODE_HOME="$HOME/.config/crabcode"
1347
+ crabcode
1348
+ ```
1349
+
1350
+ On PowerShell: `$env:CRABCODE_HOME = "$HOME\.config\crabcode"`.
1351
+ Use an absolute directory path or `~/...`. An unset or blank value defaults to
1352
+ `~/.crabcode`; relative paths are rejected so different projects share the same
1353
+ global directory.
1354
+
1355
+ The directory contains `settings.json`, `managed-settings.json`, global MCP
1356
+ configuration, skills, `CLAUDE.md`, memories, sessions, usage and schedules.
1357
+ Desktop settings and its managed Gateway environment also use this directory.
1358
+ Project-level `.crabcode` directories and explicit feature-specific paths
1359
+ (such as `CRABCODE_DOCUMENT_ENGINE_HOME`) keep their existing behavior.
1360
+ References to `~/.crabcode` elsewhere in this guide describe the default location.
1361
+
1362
+ Existing files are not moved automatically; copy them into the new directory if
1363
+ you want to reuse them. Restart CLI, Gateway and Desktop after changing the
1364
+ variable, and ensure each process inherits it. A desktop app launched from the
1365
+ system launcher may not inherit variables exported in a terminal.
1366
+
1238
1367
  ### Ultra Mode
1239
1368
 
1240
1369
  Set the top-level `ultra_mode` field to make the main model proactively split non-trivial work across many sub-agents and run independent tasks in parallel:
@@ -1259,7 +1388,7 @@ By default, CrabCode does not apply a global timeout to tool calls. Set the top-
1259
1388
 
1260
1389
  Omit `tool_call_timeout` or set it to `null` to disable the global limit. Filesystem and tool-specific timeouts, such as `filesystem_timeout`, `Bash.timeout`, or `agent.timeout`, still apply independently and may be shorter.
1261
1390
 
1262
- The shared filesystem tool timeout defaults to **3600 seconds** for Read, Write, Edit, Glob, Grep, and Bash. Set the top-level `filesystem_timeout` field in `~/.crabcode/settings.json` or the project's `.crabcode/settings.json` to change it:
1391
+ The shared filesystem tool timeout defaults to **3600 seconds** for Read, apply_patch, Write, Edit, Glob, Grep, and Bash. Set the top-level `filesystem_timeout` field in `~/.crabcode/settings.json` or the project's `.crabcode/settings.json` to change it:
1263
1392
 
1264
1393
  ```json
1265
1394
  {
@@ -1967,8 +2096,11 @@ Each section field follows the same rule:
1967
2096
  | `output_efficiency` | Verbosity rules | built-in |
1968
2097
  | `session_guidance` | Session-level hints | built-in |
1969
2098
  | `agent_prompt` | System prompt for spawned sub-agents | built-in |
2099
+ | `compact_prompt` | Checkpoint prompt for manual and automatic context compaction | built-in |
1970
2100
  | `extra_sections` | Additional sections appended after all built-in ones | `[]` |
1971
2101
 
2102
+ The desktop **Settings → Prompts** panel and VS Code's **CrabCode: Open Prompt Settings** command include a context-compaction prompt field. Load the built-in text to edit it, then save the template for subsequent manual, automatic, and sub-agent compaction. Clear the field or use **Restore default**, then save, to restore the built-in prompt. This field follows the active template and is included in template JSON imports and exports. Temporary instructions after `/compact` are still appended to the compaction prompt.
2103
+
1972
2104
  You can also build profiles in code using `PromptProfile` from `crabcode_core.prompts.profile`:
1973
2105
 
1974
2106
  ```python
@@ -1994,7 +2126,7 @@ crabcode/
1994
2126
  │ │ ├── types/ # Pydantic types (Message, Tool, Event, Config)
1995
2127
  │ │ ├── api/ # API adapters (Anthropic, OpenAI, Router)
1996
2128
  │ │ ├── query/ # Agentic turn loop
1997
- │ │ ├── tools/ # Built-in tools (Bash, Read, Edit, Write, Grep, Glob, WebSearch, Lint, Memory, AskUser, Team)
2129
+ │ │ ├── tools/ # Built-in tools (Bash, Read, apply_patch, Edit, Write, Grep, Glob, WebSearch, Lint, Memory, AskUser, Team)
1998
2130
  │ │ ├── team/ # Agent Teams (models, message bus, manager, inbox, recovery, bridge)
1999
2131
  │ │ ├── lsp/ # LSP client integration (LSPClient, LSPManager, diagnostics formatting, server registry)
2000
2132
  │ │ ├── skills/ # Skill loading + auto-trigger matching (SkillDefinition, load_skills, auto_match)