crabcode 0.1.5__tar.gz → 0.1.7__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 (585) hide show
  1. crabcode-0.1.7/.github/actions/client-apple-signing/action.yml +51 -0
  2. crabcode-0.1.7/.github/workflows/client-packages.yml +214 -0
  3. crabcode-0.1.7/.github/workflows/computer-use.yml +43 -0
  4. crabcode-0.1.7/.github/workflows/python-publish.yml +125 -0
  5. {crabcode-0.1.5 → crabcode-0.1.7}/.github/workflows/windows-compat.yml +11 -1
  6. crabcode-0.1.7/.gitignore +23 -0
  7. {crabcode-0.1.5 → crabcode-0.1.7}/PKG-INFO +3 -1
  8. {crabcode-0.1.5 → crabcode-0.1.7}/README.md +148 -11
  9. {crabcode-0.1.5 → crabcode-0.1.7}/README.zh-CN.md +171 -17
  10. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/app.py +69 -1
  11. crabcode-0.1.7/packages/cli/crabcode_cli/computer_use.py +296 -0
  12. crabcode-0.1.7/packages/cli/crabcode_cli/model_manager.py +649 -0
  13. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/pipe.py +13 -1
  14. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/repl.py +385 -51
  15. crabcode-0.1.7/packages/cli/hatch_build.py +71 -0
  16. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/pyproject.toml +5 -2
  17. crabcode-0.1.7/packages/computer-use/Cargo.lock +3000 -0
  18. crabcode-0.1.7/packages/computer-use/Cargo.toml +9 -0
  19. crabcode-0.1.7/packages/computer-use/README.md +209 -0
  20. crabcode-0.1.7/packages/computer-use/client/build.mjs +9 -0
  21. crabcode-0.1.7/packages/computer-use/client/channel.d.ts +151 -0
  22. crabcode-0.1.7/packages/computer-use/client/channel.js +614 -0
  23. crabcode-0.1.7/packages/computer-use/client/nativeClient.cjs +123 -0
  24. crabcode-0.1.7/packages/computer-use/client/nativeClient.d.cts +7 -0
  25. crabcode-0.1.7/packages/computer-use/client/nodeChannel.d.ts +11 -0
  26. crabcode-0.1.7/packages/computer-use/client/nodeChannel.js +25 -0
  27. crabcode-0.1.7/packages/computer-use/client/package.json +4 -0
  28. crabcode-0.1.7/packages/computer-use/client/src/channel.ts +688 -0
  29. crabcode-0.1.7/packages/computer-use/client/vscodeHost.d.ts +8 -0
  30. crabcode-0.1.7/packages/computer-use/client/vscodeHost.js +131 -0
  31. crabcode-0.1.7/packages/computer-use/core/Cargo.toml +32 -0
  32. crabcode-0.1.7/packages/computer-use/core/src/computer_use/background_experiment.rs +219 -0
  33. crabcode-0.1.7/packages/computer-use/core/src/computer_use/background_input/tests.rs +377 -0
  34. crabcode-0.1.7/packages/computer-use/core/src/computer_use/background_input.rs +1247 -0
  35. crabcode-0.1.7/packages/computer-use/core/src/computer_use/background_profiles.json +35 -0
  36. crabcode-0.1.7/packages/computer-use/core/src/computer_use/diagnostics.rs +53 -0
  37. crabcode-0.1.7/packages/computer-use/core/src/computer_use/mac_accessibility/tests.rs +914 -0
  38. crabcode-0.1.7/packages/computer-use/core/src/computer_use/mac_accessibility.rs +913 -0
  39. crabcode-0.1.7/packages/computer-use/core/src/computer_use/mac_ax_relations.rs +248 -0
  40. crabcode-0.1.7/packages/computer-use/core/src/computer_use/policy.rs +104 -0
  41. crabcode-0.1.7/packages/computer-use/core/src/computer_use/regression_tests.rs +218 -0
  42. crabcode-0.1.7/packages/computer-use/core/src/computer_use/window_lifecycle.rs +175 -0
  43. crabcode-0.1.7/packages/computer-use/core/src/computer_use/window_observation.rs +369 -0
  44. crabcode-0.1.7/packages/computer-use/core/src/computer_use/window_relations.rs +175 -0
  45. crabcode-0.1.7/packages/computer-use/core/src/computer_use/windows_clipboard.rs +398 -0
  46. crabcode-0.1.7/packages/computer-use/core/src/computer_use/windows_focus.rs +55 -0
  47. crabcode-0.1.7/packages/computer-use/core/src/computer_use/windows_input.rs +430 -0
  48. crabcode-0.1.7/packages/computer-use/core/src/computer_use.rs +6142 -0
  49. crabcode-0.1.7/packages/computer-use/core/src/lib.rs +3 -0
  50. crabcode-0.1.7/packages/computer-use/core/tests/fixtures/background_page.html +28 -0
  51. crabcode-0.1.7/packages/computer-use/core/tests/fixtures/keyboard_host.swift +86 -0
  52. crabcode-0.1.7/packages/computer-use/core/tests/fixtures/popup_observation_host.swift +59 -0
  53. crabcode-0.1.7/packages/computer-use/core/tests/fixtures/save_panel_host.swift +51 -0
  54. crabcode-0.1.7/packages/computer-use/core/tests/fixtures/scaled_ax_host.swift +82 -0
  55. crabcode-0.1.7/packages/computer-use/core/tests/fixtures/scroll_host.swift +208 -0
  56. crabcode-0.1.7/packages/computer-use/core/tests/fixtures/window_group_host.swift +103 -0
  57. crabcode-0.1.7/packages/computer-use/host/Cargo.toml +28 -0
  58. crabcode-0.1.7/packages/computer-use/host/build.rs +63 -0
  59. crabcode-0.1.7/packages/computer-use/host/src/lib.rs +1109 -0
  60. crabcode-0.1.7/packages/computer-use/host/src/main.rs +41 -0
  61. crabcode-0.1.7/packages/computer-use/host/src/permission_guide.m +153 -0
  62. crabcode-0.1.7/packages/computer-use/host/windows.rc +2 -0
  63. crabcode-0.1.7/packages/computer-use/icons/PROMPT.md +19 -0
  64. crabcode-0.1.7/packages/computer-use/icons/icon.icns +0 -0
  65. crabcode-0.1.7/packages/computer-use/icons/icon.ico +0 -0
  66. crabcode-0.1.7/packages/computer-use/icons/icon.png +0 -0
  67. crabcode-0.1.7/packages/computer-use/scripts/build-icons.mjs +54 -0
  68. crabcode-0.1.7/packages/computer-use/scripts/build.mjs +73 -0
  69. crabcode-0.1.7/packages/computer-use/scripts/check-wheel.py +84 -0
  70. crabcode-0.1.7/packages/computer-use/scripts/live-smoke.py +245 -0
  71. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/_version.py +1 -1
  72. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/agent_manager.py +63 -3
  73. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/anthropic_adapter.py +109 -13
  74. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/azure_adapter.py +2 -1
  75. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/base.py +57 -1
  76. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/codex_adapter.py +368 -45
  77. crabcode-0.1.7/packages/core/crabcode_core/api/error_logging.py +132 -0
  78. crabcode-0.1.7/packages/core/crabcode_core/api/model_discovery.py +136 -0
  79. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/model_info.py +29 -7
  80. crabcode-0.1.7/packages/core/crabcode_core/api/network.py +62 -0
  81. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/openai_adapter.py +41 -7
  82. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/compact/compact.py +31 -35
  83. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/compact/context_tokens.py +28 -2
  84. crabcode-0.1.7/packages/core/crabcode_core/computer_use_mode.py +38 -0
  85. crabcode-0.1.7/packages/core/crabcode_core/computer_use_observation.py +144 -0
  86. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/config/claudemd.py +6 -2
  87. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/config/manager.py +11 -1
  88. crabcode-0.1.7/packages/core/crabcode_core/config/model_catalog.py +256 -0
  89. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/events.py +567 -81
  90. crabcode-0.1.7/packages/core/crabcode_core/image_io.py +111 -0
  91. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/io_worker.py +4 -2
  92. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/logging_utils.py +5 -3
  93. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/lsp/diagnostics.py +20 -0
  94. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/mcp/client.py +2 -1
  95. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/mcp/config.py +3 -2
  96. crabcode-0.1.7/packages/core/crabcode_core/paths.py +24 -0
  97. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/peer/runtime.py +2 -1
  98. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/permissions/ai_reviewer.py +10 -2
  99. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/permissions/manager.py +30 -7
  100. crabcode-0.1.7/packages/core/crabcode_core/prompts/blocks.py +10 -0
  101. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/prompts/context.py +2 -1
  102. crabcode-0.1.7/packages/core/crabcode_core/prompts/library.py +92 -0
  103. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/prompts/profile.py +14 -1
  104. crabcode-0.1.7/packages/core/crabcode_core/prompts/system.py +356 -0
  105. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/prompts/templates.py +29 -2
  106. crabcode-0.1.7/packages/core/crabcode_core/query/computer_use_history.py +83 -0
  107. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/query/loop.py +597 -75
  108. crabcode-0.1.7/packages/core/crabcode_core/query/retry.py +116 -0
  109. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/schedule/manager.py +15 -1
  110. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/schedule/store.py +3 -2
  111. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/session/meta_db.py +119 -16
  112. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/session/storage.py +379 -128
  113. crabcode-0.1.7/packages/core/crabcode_core/skills/context.py +23 -0
  114. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/skills/loader.py +5 -3
  115. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/snapshot/tracker.py +6 -4
  116. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/team/manager.py +3 -2
  117. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/__init__.py +6 -0
  118. crabcode-0.1.7/packages/core/crabcode_core/tools/apply_patch.py +587 -0
  119. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/bash.py +1 -1
  120. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/browser.py +4 -2
  121. crabcode-0.1.7/packages/core/crabcode_core/tools/computer_use.py +599 -0
  122. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/diff_utils.py +5 -2
  123. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/file_read.py +29 -6
  124. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/image.py +25 -18
  125. crabcode-0.1.7/packages/core/crabcode_core/tools/loading.py +187 -0
  126. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/memory.py +3 -3
  127. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/skill.py +2 -20
  128. crabcode-0.1.7/packages/core/crabcode_core/tools/tool_search.py +64 -0
  129. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/web_search.py +137 -13
  130. crabcode-0.1.7/packages/core/crabcode_core/turn_details.py +64 -0
  131. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/types/__init__.py +2 -0
  132. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/types/config.py +123 -3
  133. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/types/event.py +34 -0
  134. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/types/message.py +1 -0
  135. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/types/tool.py +2 -0
  136. crabcode-0.1.7/packages/core/crabcode_core/usage.py +289 -0
  137. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/pyproject.toml +3 -1
  138. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/pyproject.toml +2 -2
  139. crabcode-0.1.7/packages/desktop/README.md +173 -0
  140. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/package-lock.json +22 -2
  141. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/package.json +8 -3
  142. crabcode-0.1.7/packages/desktop/src/App.startup.test.tsx +83 -0
  143. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/App.test.tsx +252 -3
  144. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/App.tsx +2652 -1616
  145. crabcode-0.1.7/packages/desktop/src/ApprovalShortcutSettings.tsx +91 -0
  146. crabcode-0.1.7/packages/desktop/src/ChangeReview.test.tsx +118 -0
  147. crabcode-0.1.7/packages/desktop/src/ChangeReview.tsx +251 -0
  148. crabcode-0.1.7/packages/desktop/src/ChangeReviewControls.test.tsx +97 -0
  149. crabcode-0.1.7/packages/desktop/src/ChangeReviewControls.tsx +98 -0
  150. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/ComposerEditor.test.tsx +18 -1
  151. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/ComposerEditor.tsx +37 -54
  152. crabcode-0.1.7/packages/desktop/src/ConversationTurns.test.tsx +149 -0
  153. crabcode-0.1.7/packages/desktop/src/ConversationTurns.tsx +115 -0
  154. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/CopyButton.tsx +5 -4
  155. crabcode-0.1.7/packages/desktop/src/DocumentViewTabs.tsx +60 -0
  156. crabcode-0.1.7/packages/desktop/src/DocumentWorkspace.files.test.tsx +180 -0
  157. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/DocumentWorkspace.tsx +158 -126
  158. crabcode-0.1.7/packages/desktop/src/FileEditSummaryCard.test.tsx +80 -0
  159. crabcode-0.1.7/packages/desktop/src/FileEditSummaryCard.tsx +84 -0
  160. crabcode-0.1.7/packages/desktop/src/FollowUpQueue.test.tsx +80 -0
  161. crabcode-0.1.7/packages/desktop/src/FollowUpQueue.tsx +94 -0
  162. crabcode-0.1.7/packages/desktop/src/GroupModelDiscovery.test.tsx +66 -0
  163. crabcode-0.1.7/packages/desktop/src/GroupModelDiscovery.tsx +113 -0
  164. crabcode-0.1.7/packages/desktop/src/ModelSettingsPanel.test.tsx +118 -0
  165. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/ModelSettingsPanel.tsx +203 -80
  166. crabcode-0.1.7/packages/desktop/src/PermissionPicker.test.tsx +43 -0
  167. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/ProjectFilesWorkspace.test.tsx +76 -0
  168. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/ProjectFilesWorkspace.tsx +139 -46
  169. crabcode-0.1.7/packages/desktop/src/PromptSettingsPanel.test.tsx +361 -0
  170. crabcode-0.1.7/packages/desktop/src/PromptSettingsPanel.tsx +648 -0
  171. crabcode-0.1.7/packages/desktop/src/ReviewMenu.tsx +118 -0
  172. crabcode-0.1.7/packages/desktop/src/RuntimeSettingsPanel.tsx +458 -0
  173. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/SettingsView.test.tsx +502 -7
  174. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/SettingsView.tsx +734 -232
  175. crabcode-0.1.7/packages/desktop/src/SlidingTabIndicator.test.tsx +66 -0
  176. crabcode-0.1.7/packages/desktop/src/SlidingTabIndicator.tsx +26 -0
  177. crabcode-0.1.7/packages/desktop/src/StatusBar.test.tsx +386 -0
  178. crabcode-0.1.7/packages/desktop/src/StatusBar.tsx +404 -0
  179. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/TrajectoryView.test.tsx +2 -2
  180. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/TrajectoryView.tsx +51 -38
  181. crabcode-0.1.7/packages/desktop/src/TurnDetailsButton.test.tsx +97 -0
  182. crabcode-0.1.7/packages/desktop/src/TurnDetailsButton.tsx +62 -0
  183. crabcode-0.1.7/packages/desktop/src/UsageSettingsPanel.css +95 -0
  184. crabcode-0.1.7/packages/desktop/src/UsageSettingsPanel.test.tsx +341 -0
  185. crabcode-0.1.7/packages/desktop/src/UsageSettingsPanel.tsx +484 -0
  186. crabcode-0.1.7/packages/desktop/src/VirtualMachineSettings.test.tsx +69 -0
  187. crabcode-0.1.7/packages/desktop/src/VirtualMachineSettings.tsx +213 -0
  188. crabcode-0.1.7/packages/desktop/src/approvalShortcuts.test.ts +117 -0
  189. crabcode-0.1.7/packages/desktop/src/approvalShortcuts.ts +131 -0
  190. crabcode-0.1.7/packages/desktop/src/computerUse.test.ts +727 -0
  191. crabcode-0.1.7/packages/desktop/src/computerUse.ts +42 -0
  192. crabcode-0.1.7/packages/desktop/src/desktopSlashCommands.test.ts +75 -0
  193. crabcode-0.1.7/packages/desktop/src/desktopSlashCommands.ts +116 -0
  194. crabcode-0.1.7/packages/desktop/src/diffRows.ts +62 -0
  195. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/events.test.ts +298 -0
  196. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/events.ts +188 -51
  197. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/favorites.ts +5 -3
  198. crabcode-0.1.7/packages/desktop/src/fileEditSummary.test.ts +91 -0
  199. crabcode-0.1.7/packages/desktop/src/fileEditSummary.ts +308 -0
  200. crabcode-0.1.7/packages/desktop/src/gateway.test.ts +196 -0
  201. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/gateway.ts +178 -22
  202. crabcode-0.1.7/packages/desktop/src/gatewayErrors.test.ts +46 -0
  203. crabcode-0.1.7/packages/desktop/src/gatewayStartup.test.ts +31 -0
  204. crabcode-0.1.7/packages/desktop/src/gatewayStartup.ts +60 -0
  205. crabcode-0.1.7/packages/desktop/src/i18n.ts +11 -0
  206. crabcode-0.1.7/packages/desktop/src/lumeInstaller.test.tsx +95 -0
  207. crabcode-0.1.7/packages/desktop/src/lumeInstaller.ts +51 -0
  208. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/main.tsx +3 -0
  209. crabcode-0.1.7/packages/desktop/src/native.lume.test.ts +48 -0
  210. crabcode-0.1.7/packages/desktop/src/native.startup.test.ts +159 -0
  211. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/native.test.ts +82 -1
  212. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/native.ts +250 -36
  213. crabcode-0.1.7/packages/desktop/src/permissionPresentation.ts +65 -0
  214. crabcode-0.1.7/packages/desktop/src/platform.ts +5 -0
  215. crabcode-0.1.7/packages/desktop/src/promptTemplateFile.test.ts +52 -0
  216. crabcode-0.1.7/packages/desktop/src/promptTemplateFile.ts +112 -0
  217. crabcode-0.1.7/packages/desktop/src/reviewHistory.ts +23 -0
  218. crabcode-0.1.7/packages/desktop/src/sessionNotifications.test.ts +119 -0
  219. crabcode-0.1.7/packages/desktop/src/sessionNotifications.ts +191 -0
  220. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/styles.css +12397 -9578
  221. crabcode-0.1.7/packages/desktop/src/taskbarProgress.test.ts +71 -0
  222. crabcode-0.1.7/packages/desktop/src/taskbarProgress.ts +76 -0
  223. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/theme.ts +32 -33
  224. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/themePackages.ts +43 -42
  225. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/toolPresentation.test.ts +14 -0
  226. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/toolPresentation.ts +52 -12
  227. crabcode-0.1.7/packages/desktop/src/turnDetails.ts +74 -0
  228. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/types.ts +212 -1
  229. crabcode-0.1.7/packages/desktop/src/useGitReview.test.tsx +48 -0
  230. crabcode-0.1.7/packages/desktop/src/useGitReview.ts +65 -0
  231. crabcode-0.1.7/packages/desktop/src/useProjectModels.test.tsx +41 -0
  232. crabcode-0.1.7/packages/desktop/src/useProjectModels.ts +26 -0
  233. crabcode-0.1.7/packages/desktop/src/userPromptDisplay.test.ts +43 -0
  234. crabcode-0.1.7/packages/desktop/src/userPromptDisplay.ts +105 -0
  235. crabcode-0.1.7/packages/desktop/src/uuid.test.ts +29 -0
  236. crabcode-0.1.7/packages/desktop/src/uuid.ts +40 -0
  237. crabcode-0.1.7/packages/desktop/src/virtualMachine.ts +37 -0
  238. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/Cargo.lock +1437 -37
  239. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/Cargo.toml +7 -1
  240. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/capabilities/default.json +6 -1
  241. crabcode-0.1.7/packages/desktop/src-tauri/icons/icon.png +0 -0
  242. crabcode-0.1.7/packages/desktop/src-tauri/resources/dock-icon-light.png +0 -0
  243. crabcode-0.1.7/packages/desktop/src-tauri/src/computer_use.rs +119 -0
  244. crabcode-0.1.7/packages/desktop/src-tauri/src/gateway.rs +2343 -0
  245. crabcode-0.1.7/packages/desktop/src-tauri/src/gateway_runtime_tests.rs +251 -0
  246. crabcode-0.1.7/packages/desktop/src-tauri/src/lib.rs +59 -0
  247. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/src/main.rs +3 -0
  248. crabcode-0.1.7/packages/desktop/src-tauri/src/paths.rs +80 -0
  249. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/src/settings.rs +226 -33
  250. crabcode-0.1.7/packages/desktop/src-tauri/src/virtual_machine/forwards.rs +123 -0
  251. crabcode-0.1.7/packages/desktop/src-tauri/src/virtual_machine/guest.rs +409 -0
  252. crabcode-0.1.7/packages/desktop/src-tauri/src/virtual_machine/installer.rs +298 -0
  253. crabcode-0.1.7/packages/desktop/src-tauri/src/virtual_machine.rs +636 -0
  254. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/tauri.conf.json +5 -4
  255. crabcode-0.1.7/packages/desktop/src-tauri/tests/fixtures/gateway_python.py +109 -0
  256. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/acp/types.py +10 -2
  257. crabcode-0.1.7/packages/gateway/crabcode_gateway/computer_use.py +364 -0
  258. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/document_engine.py +2 -1
  259. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/middleware.py +1 -0
  260. crabcode-0.1.7/packages/gateway/crabcode_gateway/routes/computer_use.py +101 -0
  261. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/config.py +548 -16
  262. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/event.py +266 -18
  263. crabcode-0.1.7/packages/gateway/crabcode_gateway/routes/git_review.py +232 -0
  264. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/session.py +123 -7
  265. crabcode-0.1.7/packages/gateway/crabcode_gateway/routes/usage.py +49 -0
  266. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/workspace.py +16 -0
  267. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/schemas.py +314 -6
  268. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/server.py +11 -0
  269. crabcode-0.1.7/packages/gateway/crabcode_gateway/turn_details.py +60 -0
  270. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/pyproject.toml +3 -2
  271. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/pyproject.toml +2 -2
  272. crabcode-0.1.7/packages/shared/i18n/README.md +50 -0
  273. crabcode-0.1.7/packages/shared/i18n/index.d.ts +28 -0
  274. crabcode-0.1.7/packages/shared/i18n/index.js +22 -0
  275. crabcode-0.1.7/packages/shared/i18n/locales/de.json +2866 -0
  276. crabcode-0.1.7/packages/shared/i18n/locales/en.json +2866 -0
  277. crabcode-0.1.7/packages/shared/i18n/locales/es.json +2866 -0
  278. crabcode-0.1.7/packages/shared/i18n/locales/fr.json +2866 -0
  279. crabcode-0.1.7/packages/shared/i18n/locales/ja.json +2866 -0
  280. crabcode-0.1.7/packages/shared/i18n/locales/ko.json +2866 -0
  281. crabcode-0.1.7/packages/shared/i18n/locales/pt-BR.json +2866 -0
  282. crabcode-0.1.7/packages/shared/i18n/locales/ru.json +2866 -0
  283. crabcode-0.1.7/packages/shared/i18n/locales/zh-CN.json +2866 -0
  284. crabcode-0.1.7/packages/shared/i18n/locales/zh-TW.json +2866 -0
  285. crabcode-0.1.7/packages/shared/i18n/metadata.d.ts +2 -0
  286. crabcode-0.1.7/packages/shared/i18n/metadata.js +6 -0
  287. crabcode-0.1.7/packages/shared/i18n/runtime.js +64 -0
  288. crabcode-0.1.7/packages/shared/i18n/runtime.test.mjs +67 -0
  289. crabcode-0.1.7/packages/shared/package.json +7 -0
  290. crabcode-0.1.7/packages/shared/slashCommands.d.ts +19 -0
  291. crabcode-0.1.7/packages/shared/slashCommands.js +804 -0
  292. crabcode-0.1.7/packages/shared/turnProcess.d.ts +40 -0
  293. crabcode-0.1.7/packages/shared/turnProcess.js +66 -0
  294. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/.vscode/launch.json +2 -1
  295. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/.vscodeignore +4 -0
  296. crabcode-0.1.7/packages/vscode/CHANGELOG.md +40 -0
  297. crabcode-0.1.7/packages/vscode/README.md +257 -0
  298. crabcode-0.1.7/packages/vscode/computer-use/.vscodeignore +4 -0
  299. crabcode-0.1.7/packages/vscode/computer-use/LICENSE +21 -0
  300. crabcode-0.1.7/packages/vscode/computer-use/README.md +22 -0
  301. crabcode-0.1.7/packages/vscode/computer-use/esbuild.cjs +2 -0
  302. crabcode-0.1.7/packages/vscode/computer-use/extension.js +19 -0
  303. crabcode-0.1.7/packages/vscode/computer-use/package-lock.json +527 -0
  304. crabcode-0.1.7/packages/vscode/computer-use/package.json +36 -0
  305. crabcode-0.1.7/packages/vscode/computer-use/package.nls.de.json +3 -0
  306. crabcode-0.1.7/packages/vscode/computer-use/package.nls.es.json +3 -0
  307. crabcode-0.1.7/packages/vscode/computer-use/package.nls.fr.json +3 -0
  308. crabcode-0.1.7/packages/vscode/computer-use/package.nls.ja.json +3 -0
  309. crabcode-0.1.7/packages/vscode/computer-use/package.nls.json +3 -0
  310. crabcode-0.1.7/packages/vscode/computer-use/package.nls.ko.json +3 -0
  311. crabcode-0.1.7/packages/vscode/computer-use/package.nls.pt-br.json +3 -0
  312. crabcode-0.1.7/packages/vscode/computer-use/package.nls.ru.json +3 -0
  313. crabcode-0.1.7/packages/vscode/computer-use/package.nls.zh-cn.json +3 -0
  314. crabcode-0.1.7/packages/vscode/computer-use/package.nls.zh-tw.json +3 -0
  315. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/esbuild.js +12 -4
  316. crabcode-0.1.7/packages/vscode/logo.png +0 -0
  317. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/package-lock.json +378 -2
  318. crabcode-0.1.7/packages/vscode/package.json +453 -0
  319. crabcode-0.1.7/packages/vscode/package.nls.de.json +68 -0
  320. crabcode-0.1.7/packages/vscode/package.nls.es.json +68 -0
  321. crabcode-0.1.7/packages/vscode/package.nls.fr.json +68 -0
  322. crabcode-0.1.7/packages/vscode/package.nls.ja.json +68 -0
  323. crabcode-0.1.7/packages/vscode/package.nls.json +68 -0
  324. crabcode-0.1.7/packages/vscode/package.nls.ko.json +68 -0
  325. crabcode-0.1.7/packages/vscode/package.nls.pt-br.json +68 -0
  326. crabcode-0.1.7/packages/vscode/package.nls.ru.json +68 -0
  327. crabcode-0.1.7/packages/vscode/package.nls.zh-cn.json +68 -0
  328. crabcode-0.1.7/packages/vscode/package.nls.zh-tw.json +68 -0
  329. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/scripts/gen-types.py +20 -2
  330. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/src/chatPanel.ts +2505 -1552
  331. crabcode-0.1.7/packages/vscode/src/client/permissionPresentation.ts +52 -0
  332. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/src/client/protocol.ts +34 -0
  333. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/src/client/types.ts +242 -8
  334. crabcode-0.1.7/packages/vscode/src/computerUse.ts +68 -0
  335. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/src/connection.ts +77 -2
  336. crabcode-0.1.7/packages/vscode/src/crabCodeSettingsPanel.ts +436 -0
  337. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/src/extension.ts +115 -48
  338. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/src/gatewayManager.ts +227 -67
  339. crabcode-0.1.7/packages/vscode/src/i18n.ts +10 -0
  340. crabcode-0.1.7/packages/vscode/src/ideContext.ts +167 -0
  341. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/src/pendingEdits.ts +114 -54
  342. crabcode-0.1.7/packages/vscode/src/promptTemplateFile.ts +112 -0
  343. crabcode-0.1.7/packages/vscode/src/runtimeControls.ts +160 -0
  344. crabcode-0.1.7/packages/vscode/src/settings/catalog.ts +213 -0
  345. crabcode-0.1.7/packages/vscode/src/settings/protocol.ts +53 -0
  346. crabcode-0.1.7/packages/vscode/src/settings/webview.css +771 -0
  347. crabcode-0.1.7/packages/vscode/src/settings/webview.ts +2005 -0
  348. crabcode-0.1.7/packages/vscode/tests/computerUseController.test.cjs +94 -0
  349. crabcode-0.1.7/packages/vscode/tests/computerUseHost.test.cjs +73 -0
  350. crabcode-0.1.7/packages/vscode/tests/computerUseNative.test.cjs +148 -0
  351. crabcode-0.1.7/packages/vscode/tests/computerUsePolicy.test.cjs +93 -0
  352. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/tests/contextUsage.test.cjs +1 -1
  353. crabcode-0.1.7/packages/vscode/tests/crabCodeSettingsPanel.test.cjs +420 -0
  354. crabcode-0.1.7/packages/vscode/tests/followUp.test.cjs +192 -0
  355. crabcode-0.1.7/packages/vscode/tests/gatewayManager.test.cjs +265 -0
  356. crabcode-0.1.7/packages/vscode/tests/helpers/chatPanelHarness.cjs +67 -0
  357. crabcode-0.1.7/packages/vscode/tests/helpers/i18n.cjs +12 -0
  358. crabcode-0.1.7/packages/vscode/tests/helpers/settingsHarness.cjs +368 -0
  359. crabcode-0.1.7/packages/vscode/tests/helpers/slashCommands.cjs +10 -0
  360. crabcode-0.1.7/packages/vscode/tests/helpers/turnProcess.cjs +9 -0
  361. crabcode-0.1.7/packages/vscode/tests/i18n.test.cjs +111 -0
  362. crabcode-0.1.7/packages/vscode/tests/ideContext.test.cjs +169 -0
  363. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/tests/imageCaptions.test.cjs +14 -2
  364. crabcode-0.1.7/packages/vscode/tests/permissionPolicy.test.cjs +63 -0
  365. crabcode-0.1.7/packages/vscode/tests/runtimeControls.test.cjs +156 -0
  366. crabcode-0.1.7/packages/vscode/tests/slashCommands.test.cjs +78 -0
  367. crabcode-0.1.7/packages/vscode/tests/streamRetry.test.cjs +136 -0
  368. crabcode-0.1.7/packages/vscode/tests/turnDetails.test.cjs +54 -0
  369. crabcode-0.1.7/packages/vscode/tests/turnProcess.test.cjs +223 -0
  370. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/tsconfig.json +1 -1
  371. crabcode-0.1.7/packages/vscode/tsconfig.webview.json +13 -0
  372. {crabcode-0.1.5 → crabcode-0.1.7}/pyproject.toml +6 -1
  373. {crabcode-0.1.5 → crabcode-0.1.7}/scripts/audit_tool_cards.mjs +6 -3
  374. crabcode-0.1.7/scripts/i18n.mjs +107 -0
  375. crabcode-0.1.7/scripts/package_clients.py +339 -0
  376. crabcode-0.1.7/scripts/prompt_budget.py +50 -0
  377. {crabcode-0.1.5 → crabcode-0.1.7}/scripts/sync_version.py +23 -6
  378. crabcode-0.1.7/tests/test_api_error_logging.py +210 -0
  379. crabcode-0.1.7/tests/test_apply_patch.py +442 -0
  380. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_cli_api_recovery.py +57 -9
  381. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_cli_composer.py +97 -2
  382. crabcode-0.1.7/tests/test_cli_computer_use.py +456 -0
  383. crabcode-0.1.7/tests/test_cli_model_management.py +377 -0
  384. crabcode-0.1.7/tests/test_cli_yolo.py +87 -0
  385. crabcode-0.1.7/tests/test_client_packaging.py +254 -0
  386. crabcode-0.1.7/tests/test_codex_context_window.py +125 -0
  387. crabcode-0.1.7/tests/test_compact_prompt.py +148 -0
  388. crabcode-0.1.7/tests/test_compaction_settings.py +98 -0
  389. crabcode-0.1.7/tests/test_computer_use.py +652 -0
  390. crabcode-0.1.7/tests/test_computer_use_ax.py +245 -0
  391. crabcode-0.1.7/tests/test_computer_use_history.py +93 -0
  392. crabcode-0.1.7/tests/test_computer_use_observation.py +96 -0
  393. crabcode-0.1.7/tests/test_computer_use_packaging.py +95 -0
  394. crabcode-0.1.7/tests/test_computer_use_policy.py +533 -0
  395. crabcode-0.1.7/tests/test_computer_use_window_observations.py +135 -0
  396. crabcode-0.1.7/tests/test_config_home.py +173 -0
  397. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_context_token_accounting.py +87 -1
  398. crabcode-0.1.7/tests/test_follow_up_messages.py +379 -0
  399. crabcode-0.1.7/tests/test_gateway_new_session_controls.py +55 -0
  400. crabcode-0.1.7/tests/test_gateway_runtime_info.py +32 -0
  401. crabcode-0.1.7/tests/test_gateway_send_message.py +69 -0
  402. crabcode-0.1.7/tests/test_git_review.py +151 -0
  403. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_image_context.py +1 -1
  404. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_image_tool.py +8 -5
  405. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_io_isolation.py +7 -3
  406. crabcode-0.1.7/tests/test_model_connection.py +83 -0
  407. crabcode-0.1.7/tests/test_model_discovery.py +200 -0
  408. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_model_info.py +19 -2
  409. crabcode-0.1.7/tests/test_model_settings_delete.py +52 -0
  410. crabcode-0.1.7/tests/test_network_policy.py +173 -0
  411. crabcode-0.1.7/tests/test_openai_tool_images.py +71 -0
  412. crabcode-0.1.7/tests/test_permission_policy_status.py +82 -0
  413. crabcode-0.1.7/tests/test_project_model_catalog.py +81 -0
  414. crabcode-0.1.7/tests/test_prompt_loading.py +90 -0
  415. crabcode-0.1.7/tests/test_prompt_settings.py +210 -0
  416. crabcode-0.1.7/tests/test_read_images.py +230 -0
  417. crabcode-0.1.7/tests/test_reasoning_effort.py +62 -0
  418. crabcode-0.1.7/tests/test_resume_model.py +272 -0
  419. crabcode-0.1.7/tests/test_session_storage_performance.py +110 -0
  420. crabcode-0.1.7/tests/test_stream_reconnect.py +736 -0
  421. crabcode-0.1.7/tests/test_tool_loading.py +396 -0
  422. crabcode-0.1.7/tests/test_turn_details.py +110 -0
  423. crabcode-0.1.7/tests/test_usage.py +272 -0
  424. crabcode-0.1.7/tests/test_web_search.py +168 -0
  425. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_windows_audit_regressions.py +1 -1
  426. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_windows_compat.py +8 -0
  427. crabcode-0.1.5/.github/workflows/python-publish.yml +0 -65
  428. crabcode-0.1.5/.gitignore +0 -17
  429. crabcode-0.1.5/docs/windows-compatibility-fixes.md +0 -58
  430. crabcode-0.1.5/packages/core/crabcode_core/prompts/system.py +0 -563
  431. crabcode-0.1.5/packages/desktop/README.md +0 -47
  432. crabcode-0.1.5/packages/desktop/src/RuntimeSettingsPanel.tsx +0 -292
  433. crabcode-0.1.5/packages/desktop/src-tauri/icons/icon.png +0 -0
  434. crabcode-0.1.5/packages/desktop/src-tauri/resources/dock-icon-light.png +0 -0
  435. crabcode-0.1.5/packages/desktop/src-tauri/src/gateway.rs +0 -663
  436. crabcode-0.1.5/packages/desktop/src-tauri/src/lib.rs +0 -34
  437. crabcode-0.1.5/packages/vscode/CHANGELOG.md +0 -25
  438. crabcode-0.1.5/packages/vscode/README.md +0 -156
  439. crabcode-0.1.5/packages/vscode/logo.png +0 -0
  440. crabcode-0.1.5/packages/vscode/package.json +0 -248
  441. crabcode-0.1.5/packages/vscode/tests/gatewayManager.test.cjs +0 -71
  442. {crabcode-0.1.5 → crabcode-0.1.7}/.github/workflows/document-engine-wheels.yml +0 -0
  443. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/__init__.py +0 -0
  444. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/__main__.py +0 -0
  445. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/banner.py +0 -0
  446. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/model_picker.py +0 -0
  447. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/render/__init__.py +0 -0
  448. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/render/messages.py +0 -0
  449. {crabcode-0.1.5 → crabcode-0.1.7}/packages/cli/crabcode_cli/session_picker.py +0 -0
  450. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/__init__.py +0 -0
  451. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/_windows_process.py +0 -0
  452. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/__init__.py +0 -0
  453. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/gemini_adapter.py +0 -0
  454. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/ollama_adapter.py +0 -0
  455. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/api/registry.py +0 -0
  456. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/command_line.py +0 -0
  457. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/compact/__init__.py +0 -0
  458. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/config/__init__.py +0 -0
  459. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/file_lock.py +0 -0
  460. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/filesystem.py +0 -0
  461. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/goal.py +0 -0
  462. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/hooks/__init__.py +0 -0
  463. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/hooks/manager.py +0 -0
  464. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/lsp/__init__.py +0 -0
  465. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/lsp/client.py +0 -0
  466. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/lsp/manager.py +0 -0
  467. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/mcp/__init__.py +0 -0
  468. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/path_validation.py +0 -0
  469. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/peer/__init__.py +0 -0
  470. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/permissions/__init__.py +0 -0
  471. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/plan/__init__.py +0 -0
  472. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/plan/executor.py +0 -0
  473. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/plan/types.py +0 -0
  474. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/prompts/__init__.py +0 -0
  475. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/query/__init__.py +0 -0
  476. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/schedule/__init__.py +0 -0
  477. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/schedule/models.py +0 -0
  478. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/schedule/timing.py +0 -0
  479. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/session/__init__.py +0 -0
  480. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/session/export.py +0 -0
  481. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/session/title_gen.py +0 -0
  482. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/skills/__init__.py +0 -0
  483. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/skills/matcher.py +0 -0
  484. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/snapshot/__init__.py +0 -0
  485. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/snapshot/snapshot.py +0 -0
  486. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/subprocess_utils.py +0 -0
  487. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/team/__init__.py +0 -0
  488. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/team/bridge.py +0 -0
  489. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/team/inbox.py +0 -0
  490. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/team/message_bus.py +0 -0
  491. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/team/models.py +0 -0
  492. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/team/recovery.py +0 -0
  493. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/text_io.py +0 -0
  494. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/_input_helpers.py +0 -0
  495. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/_input_schema.py +0 -0
  496. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/agent.py +0 -0
  497. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/ask_user.py +0 -0
  498. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/checklist.py +0 -0
  499. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/checkpoint.py +0 -0
  500. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/file_edit.py +0 -0
  501. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/file_write.py +0 -0
  502. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/glob.py +0 -0
  503. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/goal.py +0 -0
  504. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/grep.py +0 -0
  505. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/image_generate.py +0 -0
  506. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/lint.py +0 -0
  507. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/monitor.py +0 -0
  508. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/peer.py +0 -0
  509. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/revert.py +0 -0
  510. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/schedule.py +0 -0
  511. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/switch_mode.py +0 -0
  512. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/tools/team.py +0 -0
  513. {crabcode-0.1.5 → crabcode-0.1.7}/packages/core/crabcode_core/utf8_sanitize.py +0 -0
  514. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/__init__.py +0 -0
  515. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/adapters.py +0 -0
  516. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/dap.py +0 -0
  517. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/memory.py +0 -0
  518. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/process.py +0 -0
  519. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/runtime.py +0 -0
  520. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/sessions.py +0 -0
  521. {crabcode-0.1.5 → crabcode-0.1.7}/packages/debugger/crabcode_debugger/tool.py +0 -0
  522. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/THEMES.md +0 -0
  523. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/index.html +0 -0
  524. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/DocumentWorkspace.blog.test.tsx +0 -0
  525. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/DocumentWorkspace.selection.test.tsx +0 -0
  526. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/DocumentWorkspace.test.ts +0 -0
  527. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/DocumentWorkspace.toolbar.test.tsx +0 -0
  528. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/favorites.test.ts +0 -0
  529. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/markdownMath.ts +0 -0
  530. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/pathUtils.ts +0 -0
  531. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/theme.test.ts +0 -0
  532. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/themePackages.test.ts +0 -0
  533. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src/vite-env.d.ts +0 -0
  534. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/build.rs +0 -0
  535. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/icons/128x128.png +0 -0
  536. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/icons/128x128@2x.png +0 -0
  537. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/icons/32x32.png +0 -0
  538. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/icons/icon.icns +0 -0
  539. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/src-tauri/icons/icon.ico +0 -0
  540. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/tsconfig.json +0 -0
  541. {crabcode-0.1.5 → crabcode-0.1.7}/packages/desktop/vite.config.ts +0 -0
  542. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/__init__.py +0 -0
  543. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/acp/__init__.py +0 -0
  544. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/acp/agent.py +0 -0
  545. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/acp/session.py +0 -0
  546. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/acp/transport.py +0 -0
  547. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/adapter.py +0 -0
  548. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/auth.py +0 -0
  549. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/document_worker.py +0 -0
  550. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/event_bus.py +0 -0
  551. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/grpc/__init__.py +0 -0
  552. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/grpc/crabcode_pb2.py +0 -0
  553. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/grpc/crabcode_pb2_grpc.py +0 -0
  554. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/grpc/proto/crabcode.proto +0 -0
  555. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/grpc/server.py +0 -0
  556. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/protocol.py +0 -0
  557. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/__init__.py +0 -0
  558. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/agent.py +0 -0
  559. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/auth.py +0 -0
  560. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/document.py +0 -0
  561. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/health.py +0 -0
  562. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/peer.py +0 -0
  563. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/permission.py +0 -0
  564. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/schedule.py +0 -0
  565. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/snapshot.py +0 -0
  566. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/tasks.py +0 -0
  567. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/routes/team.py +0 -0
  568. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/safe_file.py +0 -0
  569. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/session_registry.py +0 -0
  570. {crabcode-0.1.5 → crabcode-0.1.7}/packages/gateway/crabcode_gateway/task_registry.py +0 -0
  571. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/crabcode_search/__init__.py +0 -0
  572. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/crabcode_search/background.py +0 -0
  573. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/crabcode_search/chunker.py +0 -0
  574. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/crabcode_search/embedder.py +0 -0
  575. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/crabcode_search/indexer.py +0 -0
  576. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/crabcode_search/store.py +0 -0
  577. {crabcode-0.1.5 → crabcode-0.1.7}/packages/search/crabcode_search/tool.py +0 -0
  578. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/.gitignore +0 -0
  579. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/.nvmrc +0 -0
  580. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/.vscode/tasks.json +0 -0
  581. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/LICENSE +0 -0
  582. {crabcode-0.1.5 → crabcode-0.1.7}/packages/vscode/resources/icon.svg +0 -0
  583. {crabcode-0.1.5 → crabcode-0.1.7}/scripts/build_document_engine_bundle.py +0 -0
  584. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_cli_model_picker.py +0 -0
  585. {crabcode-0.1.5 → crabcode-0.1.7}/tests/test_cli_session_picker.py +0 -0
@@ -0,0 +1,51 @@
1
+ name: Client Apple signing
2
+ description: Import the optional shared Computer Use and Desktop signing identity
3
+ inputs:
4
+ certificate:
5
+ description: Base64 encoded signing certificate in PKCS12 format
6
+ required: false
7
+ password:
8
+ description: PKCS12 password
9
+ required: false
10
+ identity:
11
+ description: Developer ID signing identity
12
+ required: false
13
+ outputs:
14
+ identity:
15
+ description: Imported identity, or ad-hoc signing when no credentials are configured
16
+ value: ${{ steps.import.outputs.identity }}
17
+ runs:
18
+ using: composite
19
+ steps:
20
+ - id: import
21
+ shell: bash
22
+ env:
23
+ CLIENT_SIGNING_CERTIFICATE: ${{ inputs.certificate }}
24
+ CLIENT_SIGNING_PASSWORD: ${{ inputs.password }}
25
+ CLIENT_SIGNING_IDENTITY: ${{ inputs.identity }}
26
+ run: |
27
+ if [ -z "$CLIENT_SIGNING_CERTIFICATE" ] && [ -z "$CLIENT_SIGNING_IDENTITY" ]; then
28
+ echo 'identity=-' >> "$GITHUB_OUTPUT"
29
+ exit 0
30
+ fi
31
+ if [ -z "$CLIENT_SIGNING_CERTIFICATE" ] || [ -z "$CLIENT_SIGNING_IDENTITY" ]; then
32
+ echo 'Configure both CRABCODE_SIGNING_CERTIFICATE_P12_BASE64 and CRABCODE_SIGNING_IDENTITY.' >&2
33
+ exit 1
34
+ fi
35
+ certificate="$RUNNER_TEMP/client-signing.p12"
36
+ trap 'rm -f "$certificate"' EXIT
37
+ python - <<'PY'
38
+ import base64, os
39
+ from pathlib import Path
40
+ (Path(os.environ['RUNNER_TEMP']) / 'client-signing.p12').write_bytes(
41
+ base64.b64decode(''.join(os.environ['CLIENT_SIGNING_CERTIFICATE'].split()), validate=True))
42
+ PY
43
+ keychain="$RUNNER_TEMP/client-signing.keychain-db"
44
+ keychain_password="$(openssl rand -base64 32)"
45
+ security create-keychain -p "$keychain_password" "$keychain"
46
+ security set-keychain-settings -lut 21600 "$keychain"
47
+ security unlock-keychain -p "$keychain_password" "$keychain"
48
+ security import "$certificate" -k "$keychain" -P "$CLIENT_SIGNING_PASSWORD" -T /usr/bin/codesign
49
+ security set-key-partition-list -S apple-tool:,apple: -k "$keychain_password" "$keychain" >/dev/null
50
+ security list-keychains -d user -s "$keychain" login.keychain-db
51
+ printf 'identity=%s\n' "$CLIENT_SIGNING_IDENTITY" >> "$GITHUB_OUTPUT"
@@ -0,0 +1,214 @@
1
+ name: Client Packages
2
+ run-name: Client packages · ${{ github.ref_name }} · ${{ github.run_number }}
3
+
4
+ # Download the packages from this run's Artifacts and upload them manually.
5
+ # Python Release/PyPI publishing is intentionally independent.
6
+ on:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ checks:
14
+ name: Check client versions and tests
15
+ timeout-minutes: 20
16
+ runs-on: ubuntu-24.04
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-node@v4
20
+ with:
21
+ node-version: '22'
22
+ cache: npm
23
+ cache-dependency-path: |
24
+ packages/vscode/package-lock.json
25
+ packages/vscode/computer-use/package-lock.json
26
+ packages/desktop/package-lock.json
27
+ - uses: actions/setup-python@v5
28
+ with:
29
+ python-version: '3.12'
30
+ - name: Check version metadata and Marketplace assets
31
+ run: |
32
+ python scripts/sync_version.py --check
33
+ python scripts/package_clients.py check
34
+ python packages/vscode/scripts/gen-types.py --check
35
+ - run: npm ci
36
+ working-directory: packages/vscode
37
+ - run: npm run lint
38
+ working-directory: packages/vscode
39
+ - run: npm test
40
+ working-directory: packages/vscode
41
+ - run: python -m unittest discover -s tests -p test_client_packaging.py -v
42
+ - run: npm ci
43
+ working-directory: packages/desktop
44
+ - run: npm test
45
+ working-directory: packages/desktop
46
+
47
+ native:
48
+ name: Computer Use · ${{ matrix.platform }}
49
+ timeout-minutes: 45
50
+ needs: checks
51
+ strategy:
52
+ fail-fast: false
53
+ matrix:
54
+ include:
55
+ - platform: darwin-arm64
56
+ os: macos-15
57
+ - platform: darwin-x64
58
+ os: macos-15-intel
59
+ - platform: win32-x64
60
+ os: windows-2022
61
+ runs-on: ${{ matrix.os }}
62
+ env:
63
+ MACOSX_DEPLOYMENT_TARGET: '11.0'
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+ - uses: actions/setup-node@v4
67
+ with:
68
+ node-version: '22'
69
+ - uses: actions/setup-python@v5
70
+ with:
71
+ python-version: '3.12'
72
+ - uses: dtolnay/rust-toolchain@stable
73
+ - uses: Swatinem/rust-cache@v2
74
+ with:
75
+ workspaces: packages/computer-use -> target
76
+ shared-key: client-native-${{ matrix.platform }}
77
+ - id: signing
78
+ if: runner.os == 'macOS'
79
+ uses: ./.github/actions/client-apple-signing
80
+ with:
81
+ certificate: ${{ secrets.CRABCODE_SIGNING_CERTIFICATE_P12_BASE64 }}
82
+ password: ${{ secrets.CRABCODE_SIGNING_CERTIFICATE_PASSWORD }}
83
+ identity: ${{ secrets.CRABCODE_SIGNING_IDENTITY }}
84
+ - run: cargo test --locked --workspace
85
+ working-directory: packages/computer-use
86
+ - name: Build native bundle once
87
+ env:
88
+ CRABCODE_SIGNING_IDENTITY: ${{ steps.signing.outputs.identity }}
89
+ run: node packages/computer-use/scripts/build.mjs
90
+ - name: Verify bundle and target architecture
91
+ run: python scripts/package_clients.py native --platform ${{ matrix.platform }}
92
+ - name: Archive bundle with executable permissions and signatures
93
+ shell: bash
94
+ run: tar -czf computer-use-${{ matrix.platform }}.tar.gz -C packages/computer-use/dist ${{ matrix.platform }}
95
+ - uses: actions/upload-artifact@v4
96
+ with:
97
+ name: computer-use-${{ matrix.platform }}
98
+ path: computer-use-${{ matrix.platform }}.tar.gz
99
+ if-no-files-found: error
100
+ retention-days: 7
101
+ overwrite: true
102
+
103
+ vsix:
104
+ name: Platform and universal VSIXs
105
+ timeout-minutes: 20
106
+ needs: native
107
+ runs-on: ubuntu-24.04
108
+ steps:
109
+ - uses: actions/checkout@v4
110
+ - uses: actions/setup-node@v4
111
+ with:
112
+ node-version: '22'
113
+ cache: npm
114
+ cache-dependency-path: |
115
+ packages/vscode/package-lock.json
116
+ packages/vscode/computer-use/package-lock.json
117
+ - uses: actions/setup-python@v5
118
+ with:
119
+ python-version: '3.12'
120
+ - uses: actions/download-artifact@v4
121
+ with:
122
+ pattern: computer-use-*
123
+ merge-multiple: true
124
+ path: native-bundles
125
+ - name: Restore all native bundles
126
+ run: |
127
+ mkdir -p packages/computer-use/dist
128
+ for archive in native-bundles/*.tar.gz; do
129
+ tar -xzf "$archive" -C packages/computer-use/dist
130
+ done
131
+ - run: npm ci
132
+ working-directory: packages/vscode
133
+ - run: npm ci
134
+ working-directory: packages/vscode/computer-use
135
+ - name: Package and inspect all VSIXs
136
+ run: python scripts/package_clients.py vsix --output dist/vsix
137
+ - uses: actions/upload-artifact@v4
138
+ with:
139
+ name: vsix-${{ github.run_number }}
140
+ path: dist/vsix/
141
+ if-no-files-found: error
142
+ retention-days: 30
143
+ overwrite: true
144
+ - name: Add download instructions
145
+ run: |
146
+ echo '## VSIX packages' >> "$GITHUB_STEP_SUMMARY"
147
+ echo 'Download **vsix-${{ github.run_number }}** from Artifacts and unzip it. It contains the universal CrabCode main extension, three platform Computer Use companions, the all-platform companion, and SHA256SUMS. Upload the VSIXs to the extension store manually.' >> "$GITHUB_STEP_SUMMARY"
148
+
149
+ desktop:
150
+ name: Desktop installer · ${{ matrix.platform }}
151
+ timeout-minutes: 90
152
+ needs: native
153
+ strategy:
154
+ fail-fast: false
155
+ matrix:
156
+ include:
157
+ - platform: darwin-arm64
158
+ os: macos-15
159
+ - platform: darwin-x64
160
+ os: macos-15-intel
161
+ - platform: win32-x64
162
+ os: windows-2022
163
+ runs-on: ${{ matrix.os }}
164
+ env:
165
+ MACOSX_DEPLOYMENT_TARGET: '11.0'
166
+ steps:
167
+ - uses: actions/checkout@v4
168
+ - uses: actions/setup-node@v4
169
+ with:
170
+ node-version: '22'
171
+ cache: npm
172
+ cache-dependency-path: packages/desktop/package-lock.json
173
+ - uses: actions/setup-python@v5
174
+ with:
175
+ python-version: '3.12'
176
+ - uses: dtolnay/rust-toolchain@stable
177
+ - uses: Swatinem/rust-cache@v2
178
+ with:
179
+ workspaces: packages/desktop/src-tauri -> target
180
+ shared-key: client-desktop-${{ matrix.platform }}
181
+ - id: signing
182
+ if: runner.os == 'macOS'
183
+ uses: ./.github/actions/client-apple-signing
184
+ with:
185
+ certificate: ${{ secrets.CRABCODE_SIGNING_CERTIFICATE_P12_BASE64 }}
186
+ password: ${{ secrets.CRABCODE_SIGNING_CERTIFICATE_PASSWORD }}
187
+ identity: ${{ secrets.CRABCODE_SIGNING_IDENTITY }}
188
+ - uses: actions/download-artifact@v4
189
+ with:
190
+ name: computer-use-${{ matrix.platform }}
191
+ path: native-bundles
192
+ - name: Restore native bundle
193
+ shell: bash
194
+ run: |
195
+ mkdir -p packages/computer-use/dist
196
+ tar -xzf native-bundles/computer-use-${{ matrix.platform }}.tar.gz -C packages/computer-use/dist
197
+ - run: npm ci
198
+ working-directory: packages/desktop
199
+ - name: Package and verify DMG or MSI
200
+ env:
201
+ CRABCODE_SIGNING_IDENTITY: ${{ steps.signing.outputs.identity }}
202
+ run: python scripts/package_clients.py desktop --platform ${{ matrix.platform }} --output dist/desktop
203
+ - uses: actions/upload-artifact@v4
204
+ with:
205
+ name: desktop-${{ matrix.platform }}-${{ github.run_number }}
206
+ path: dist/desktop/
207
+ if-no-files-found: error
208
+ retention-days: 30
209
+ overwrite: true
210
+ - name: Add download instructions
211
+ shell: bash
212
+ run: |
213
+ echo '## Desktop installer' >> "$GITHUB_STEP_SUMMARY"
214
+ echo 'Download **desktop-${{ matrix.platform }}-${{ github.run_number }}** from Artifacts. It contains the DMG or MSI and SHA256SUMS.' >> "$GITHUB_STEP_SUMMARY"
@@ -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,14 @@ 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
+ - name: Check release metadata and generated client types
28
+ run: |
29
+ python scripts/sync_version.py --check
30
+ python packages/vscode/scripts/gen-types.py --check
31
+ python -m unittest discover -s tests -p test_client_packaging.py -v
32
+ - run: python -m pip install -e . fastapi pypdf python-multipart pytest
28
33
  - run: python -m unittest discover -s tests -p "test_windows*.py" -v
34
+ - run: python -m pytest tests/test_cli_computer_use.py -q
29
35
 
30
36
  windows-clients:
31
37
  runs-on: windows-latest
@@ -46,6 +52,10 @@ jobs:
46
52
  working-directory: packages/vscode
47
53
  - run: npx tsc --noEmit
48
54
  working-directory: packages/vscode
55
+ - run: npm run computer-use:build -- --debug
56
+ working-directory: packages/desktop
57
+ - run: cargo test --locked --workspace
58
+ working-directory: packages/computer-use
49
59
  - run: cargo test --locked
50
60
  working-directory: packages/desktop/src-tauri
51
61
  - 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.7
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'