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.
- crabcode-0.1.6/.github/workflows/computer-use.yml +43 -0
- crabcode-0.1.6/.github/workflows/python-publish.yml +125 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/.github/workflows/windows-compat.yml +6 -1
- crabcode-0.1.6/.gitignore +23 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/PKG-INFO +3 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/README.md +143 -11
- {crabcode-0.1.5 → crabcode-0.1.6}/README.zh-CN.md +164 -17
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/app.py +69 -1
- crabcode-0.1.6/packages/cli/crabcode_cli/computer_use.py +286 -0
- crabcode-0.1.6/packages/cli/crabcode_cli/model_manager.py +649 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/pipe.py +13 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/repl.py +362 -51
- crabcode-0.1.6/packages/cli/hatch_build.py +71 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/pyproject.toml +5 -2
- crabcode-0.1.6/packages/computer-use/Cargo.lock +3000 -0
- crabcode-0.1.6/packages/computer-use/Cargo.toml +9 -0
- crabcode-0.1.6/packages/computer-use/README.md +200 -0
- crabcode-0.1.6/packages/computer-use/client/build.mjs +9 -0
- crabcode-0.1.6/packages/computer-use/client/channel.d.ts +151 -0
- crabcode-0.1.6/packages/computer-use/client/channel.js +614 -0
- crabcode-0.1.6/packages/computer-use/client/nativeClient.cjs +111 -0
- crabcode-0.1.6/packages/computer-use/client/nativeClient.d.cts +7 -0
- crabcode-0.1.6/packages/computer-use/client/nodeChannel.d.ts +11 -0
- crabcode-0.1.6/packages/computer-use/client/nodeChannel.js +25 -0
- crabcode-0.1.6/packages/computer-use/client/package.json +4 -0
- crabcode-0.1.6/packages/computer-use/client/src/channel.ts +688 -0
- crabcode-0.1.6/packages/computer-use/client/vscodeHost.d.ts +8 -0
- crabcode-0.1.6/packages/computer-use/client/vscodeHost.js +138 -0
- crabcode-0.1.6/packages/computer-use/core/Cargo.toml +32 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_experiment.rs +219 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_input/tests.rs +377 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_input.rs +1247 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/background_profiles.json +35 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/diagnostics.rs +53 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/mac_accessibility/tests.rs +914 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/mac_accessibility.rs +913 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/mac_ax_relations.rs +248 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/policy.rs +104 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/regression_tests.rs +218 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/window_lifecycle.rs +175 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/window_observation.rs +369 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/window_relations.rs +175 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/windows_clipboard.rs +398 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/windows_focus.rs +55 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use/windows_input.rs +430 -0
- crabcode-0.1.6/packages/computer-use/core/src/computer_use.rs +6142 -0
- crabcode-0.1.6/packages/computer-use/core/src/lib.rs +3 -0
- crabcode-0.1.6/packages/computer-use/core/tests/fixtures/background_page.html +28 -0
- crabcode-0.1.6/packages/computer-use/core/tests/fixtures/keyboard_host.swift +86 -0
- crabcode-0.1.6/packages/computer-use/core/tests/fixtures/popup_observation_host.swift +59 -0
- crabcode-0.1.6/packages/computer-use/core/tests/fixtures/save_panel_host.swift +51 -0
- crabcode-0.1.6/packages/computer-use/core/tests/fixtures/scaled_ax_host.swift +82 -0
- crabcode-0.1.6/packages/computer-use/core/tests/fixtures/scroll_host.swift +208 -0
- crabcode-0.1.6/packages/computer-use/core/tests/fixtures/window_group_host.swift +103 -0
- crabcode-0.1.6/packages/computer-use/host/Cargo.toml +28 -0
- crabcode-0.1.6/packages/computer-use/host/build.rs +63 -0
- crabcode-0.1.6/packages/computer-use/host/src/lib.rs +1109 -0
- crabcode-0.1.6/packages/computer-use/host/src/main.rs +41 -0
- crabcode-0.1.6/packages/computer-use/host/src/permission_guide.m +153 -0
- crabcode-0.1.6/packages/computer-use/host/windows.rc +2 -0
- crabcode-0.1.6/packages/computer-use/icons/PROMPT.md +19 -0
- crabcode-0.1.6/packages/computer-use/icons/icon.icns +0 -0
- crabcode-0.1.6/packages/computer-use/icons/icon.ico +0 -0
- crabcode-0.1.6/packages/computer-use/icons/icon.png +0 -0
- crabcode-0.1.6/packages/computer-use/scripts/build-icons.mjs +54 -0
- crabcode-0.1.6/packages/computer-use/scripts/build.mjs +73 -0
- crabcode-0.1.6/packages/computer-use/scripts/check-wheel.py +84 -0
- crabcode-0.1.6/packages/computer-use/scripts/live-smoke.py +245 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/_version.py +1 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/agent_manager.py +63 -3
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/anthropic_adapter.py +109 -13
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/azure_adapter.py +2 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/base.py +57 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/codex_adapter.py +368 -45
- crabcode-0.1.6/packages/core/crabcode_core/api/error_logging.py +132 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/model_info.py +18 -2
- crabcode-0.1.6/packages/core/crabcode_core/api/network.py +62 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/openai_adapter.py +41 -7
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/compact/compact.py +31 -35
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/compact/context_tokens.py +28 -2
- crabcode-0.1.6/packages/core/crabcode_core/computer_use_mode.py +38 -0
- crabcode-0.1.6/packages/core/crabcode_core/computer_use_observation.py +144 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/config/claudemd.py +6 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/config/manager.py +11 -1
- crabcode-0.1.6/packages/core/crabcode_core/config/model_catalog.py +256 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/events.py +567 -81
- crabcode-0.1.6/packages/core/crabcode_core/image_io.py +111 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/io_worker.py +4 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/logging_utils.py +5 -3
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/diagnostics.py +20 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/mcp/client.py +2 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/mcp/config.py +3 -2
- crabcode-0.1.6/packages/core/crabcode_core/paths.py +24 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/peer/runtime.py +2 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/permissions/ai_reviewer.py +10 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/permissions/manager.py +30 -7
- crabcode-0.1.6/packages/core/crabcode_core/prompts/blocks.py +10 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/context.py +2 -1
- crabcode-0.1.6/packages/core/crabcode_core/prompts/library.py +92 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/profile.py +14 -1
- crabcode-0.1.6/packages/core/crabcode_core/prompts/system.py +356 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/templates.py +29 -2
- crabcode-0.1.6/packages/core/crabcode_core/query/computer_use_history.py +83 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/query/loop.py +597 -75
- crabcode-0.1.6/packages/core/crabcode_core/query/retry.py +116 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/manager.py +15 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/store.py +3 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/meta_db.py +119 -16
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/storage.py +379 -128
- crabcode-0.1.6/packages/core/crabcode_core/skills/context.py +23 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/skills/loader.py +5 -3
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/snapshot/tracker.py +6 -4
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/manager.py +3 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/__init__.py +6 -0
- crabcode-0.1.6/packages/core/crabcode_core/tools/apply_patch.py +587 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/bash.py +1 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/browser.py +4 -2
- crabcode-0.1.6/packages/core/crabcode_core/tools/computer_use.py +599 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/diff_utils.py +5 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/file_read.py +29 -6
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/image.py +25 -18
- crabcode-0.1.6/packages/core/crabcode_core/tools/loading.py +187 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/memory.py +3 -3
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/skill.py +2 -20
- crabcode-0.1.6/packages/core/crabcode_core/tools/tool_search.py +64 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/web_search.py +137 -13
- crabcode-0.1.6/packages/core/crabcode_core/turn_details.py +64 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/__init__.py +2 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/config.py +123 -3
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/event.py +34 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/message.py +1 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/types/tool.py +2 -0
- crabcode-0.1.6/packages/core/crabcode_core/usage.py +289 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/pyproject.toml +3 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/pyproject.toml +2 -2
- crabcode-0.1.6/packages/desktop/README.md +164 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/package-lock.json +22 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/package.json +4 -1
- crabcode-0.1.6/packages/desktop/src/App.startup.test.tsx +79 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/App.test.tsx +238 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/App.tsx +2212 -1188
- crabcode-0.1.6/packages/desktop/src/ApprovalShortcutSettings.tsx +90 -0
- crabcode-0.1.6/packages/desktop/src/ChangeReview.test.tsx +118 -0
- crabcode-0.1.6/packages/desktop/src/ChangeReview.tsx +252 -0
- crabcode-0.1.6/packages/desktop/src/ChangeReviewControls.test.tsx +97 -0
- crabcode-0.1.6/packages/desktop/src/ChangeReviewControls.tsx +97 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ComposerEditor.test.tsx +18 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ComposerEditor.tsx +23 -42
- crabcode-0.1.6/packages/desktop/src/ConversationTurns.test.tsx +149 -0
- crabcode-0.1.6/packages/desktop/src/ConversationTurns.tsx +114 -0
- crabcode-0.1.6/packages/desktop/src/DocumentViewTabs.tsx +60 -0
- crabcode-0.1.6/packages/desktop/src/DocumentWorkspace.files.test.tsx +180 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.tsx +56 -24
- crabcode-0.1.6/packages/desktop/src/FileEditSummaryCard.test.tsx +80 -0
- crabcode-0.1.6/packages/desktop/src/FileEditSummaryCard.tsx +87 -0
- crabcode-0.1.6/packages/desktop/src/FollowUpQueue.test.tsx +80 -0
- crabcode-0.1.6/packages/desktop/src/FollowUpQueue.tsx +93 -0
- crabcode-0.1.6/packages/desktop/src/ModelSettingsPanel.test.tsx +117 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ModelSettingsPanel.tsx +99 -16
- crabcode-0.1.6/packages/desktop/src/PermissionPicker.test.tsx +43 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ProjectFilesWorkspace.test.tsx +76 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/ProjectFilesWorkspace.tsx +102 -11
- crabcode-0.1.6/packages/desktop/src/PromptSettingsPanel.test.tsx +359 -0
- crabcode-0.1.6/packages/desktop/src/PromptSettingsPanel.tsx +645 -0
- crabcode-0.1.6/packages/desktop/src/ReviewMenu.tsx +116 -0
- crabcode-0.1.6/packages/desktop/src/RuntimeSettingsPanel.tsx +459 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/SettingsView.test.tsx +470 -7
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/SettingsView.tsx +525 -44
- crabcode-0.1.6/packages/desktop/src/SlidingTabIndicator.test.tsx +66 -0
- crabcode-0.1.6/packages/desktop/src/SlidingTabIndicator.tsx +26 -0
- crabcode-0.1.6/packages/desktop/src/StatusBar.test.tsx +386 -0
- crabcode-0.1.6/packages/desktop/src/StatusBar.tsx +402 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/TrajectoryView.tsx +11 -0
- crabcode-0.1.6/packages/desktop/src/TurnDetailsButton.test.tsx +97 -0
- crabcode-0.1.6/packages/desktop/src/TurnDetailsButton.tsx +61 -0
- crabcode-0.1.6/packages/desktop/src/UsageSettingsPanel.css +95 -0
- crabcode-0.1.6/packages/desktop/src/UsageSettingsPanel.test.tsx +341 -0
- crabcode-0.1.6/packages/desktop/src/UsageSettingsPanel.tsx +489 -0
- crabcode-0.1.6/packages/desktop/src/VirtualMachineSettings.test.tsx +69 -0
- crabcode-0.1.6/packages/desktop/src/VirtualMachineSettings.tsx +213 -0
- crabcode-0.1.6/packages/desktop/src/approvalShortcuts.test.ts +117 -0
- crabcode-0.1.6/packages/desktop/src/approvalShortcuts.ts +130 -0
- crabcode-0.1.6/packages/desktop/src/computerUse.test.ts +727 -0
- crabcode-0.1.6/packages/desktop/src/computerUse.ts +42 -0
- crabcode-0.1.6/packages/desktop/src/desktopSlashCommands.test.ts +75 -0
- crabcode-0.1.6/packages/desktop/src/desktopSlashCommands.ts +115 -0
- crabcode-0.1.6/packages/desktop/src/diffRows.ts +62 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/events.test.ts +298 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/events.ts +172 -36
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/favorites.ts +3 -2
- crabcode-0.1.6/packages/desktop/src/fileEditSummary.test.ts +91 -0
- crabcode-0.1.6/packages/desktop/src/fileEditSummary.ts +308 -0
- crabcode-0.1.6/packages/desktop/src/gateway.test.ts +196 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/gateway.ts +165 -19
- crabcode-0.1.6/packages/desktop/src/gatewayErrors.test.ts +46 -0
- crabcode-0.1.6/packages/desktop/src/gatewayStartup.test.ts +31 -0
- crabcode-0.1.6/packages/desktop/src/gatewayStartup.ts +59 -0
- crabcode-0.1.6/packages/desktop/src/lumeInstaller.test.tsx +95 -0
- crabcode-0.1.6/packages/desktop/src/lumeInstaller.ts +50 -0
- crabcode-0.1.6/packages/desktop/src/native.lume.test.ts +48 -0
- crabcode-0.1.6/packages/desktop/src/native.startup.test.ts +159 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/native.test.ts +73 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/native.ts +238 -27
- crabcode-0.1.6/packages/desktop/src/permissionPresentation.ts +64 -0
- crabcode-0.1.6/packages/desktop/src/platform.ts +5 -0
- crabcode-0.1.6/packages/desktop/src/promptTemplateFile.test.ts +52 -0
- crabcode-0.1.6/packages/desktop/src/promptTemplateFile.ts +112 -0
- crabcode-0.1.6/packages/desktop/src/reviewHistory.ts +23 -0
- crabcode-0.1.6/packages/desktop/src/sessionNotifications.test.ts +119 -0
- crabcode-0.1.6/packages/desktop/src/sessionNotifications.ts +190 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/styles.css +12309 -9597
- crabcode-0.1.6/packages/desktop/src/taskbarProgress.test.ts +71 -0
- crabcode-0.1.6/packages/desktop/src/taskbarProgress.ts +76 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/theme.ts +2 -4
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/toolPresentation.test.ts +14 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/toolPresentation.ts +43 -4
- crabcode-0.1.6/packages/desktop/src/turnDetails.ts +72 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/types.ts +204 -1
- crabcode-0.1.6/packages/desktop/src/useGitReview.test.tsx +48 -0
- crabcode-0.1.6/packages/desktop/src/useGitReview.ts +64 -0
- crabcode-0.1.6/packages/desktop/src/useProjectModels.test.tsx +41 -0
- crabcode-0.1.6/packages/desktop/src/useProjectModels.ts +26 -0
- crabcode-0.1.6/packages/desktop/src/userPromptDisplay.test.ts +43 -0
- crabcode-0.1.6/packages/desktop/src/userPromptDisplay.ts +104 -0
- crabcode-0.1.6/packages/desktop/src/uuid.test.ts +29 -0
- crabcode-0.1.6/packages/desktop/src/uuid.ts +40 -0
- crabcode-0.1.6/packages/desktop/src/virtualMachine.ts +37 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/Cargo.lock +1437 -37
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/Cargo.toml +7 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/capabilities/default.json +6 -1
- crabcode-0.1.6/packages/desktop/src-tauri/icons/icon.png +0 -0
- crabcode-0.1.6/packages/desktop/src-tauri/resources/dock-icon-light.png +0 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/computer_use.rs +119 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/gateway.rs +2343 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/gateway_runtime_tests.rs +251 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/lib.rs +59 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/src/main.rs +3 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/paths.rs +80 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/src/settings.rs +225 -33
- crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine/forwards.rs +123 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine/guest.rs +409 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine/installer.rs +298 -0
- crabcode-0.1.6/packages/desktop/src-tauri/src/virtual_machine.rs +636 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/tauri.conf.json +5 -4
- crabcode-0.1.6/packages/desktop/src-tauri/tests/fixtures/gateway_python.py +109 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/types.py +10 -2
- crabcode-0.1.6/packages/gateway/crabcode_gateway/computer_use.py +364 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/document_engine.py +2 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/middleware.py +1 -0
- crabcode-0.1.6/packages/gateway/crabcode_gateway/routes/computer_use.py +101 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/config.py +494 -15
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/event.py +266 -18
- crabcode-0.1.6/packages/gateway/crabcode_gateway/routes/git_review.py +232 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/session.py +123 -7
- crabcode-0.1.6/packages/gateway/crabcode_gateway/routes/usage.py +49 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/workspace.py +16 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/schemas.py +306 -6
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/server.py +11 -0
- crabcode-0.1.6/packages/gateway/crabcode_gateway/turn_details.py +60 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/pyproject.toml +3 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/pyproject.toml +2 -2
- crabcode-0.1.6/packages/shared/package.json +4 -0
- crabcode-0.1.6/packages/shared/slashCommands.d.ts +18 -0
- crabcode-0.1.6/packages/shared/slashCommands.js +802 -0
- crabcode-0.1.6/packages/shared/turnProcess.d.ts +40 -0
- crabcode-0.1.6/packages/shared/turnProcess.js +66 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.vscodeignore +3 -0
- crabcode-0.1.6/packages/vscode/CHANGELOG.md +40 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/README.md +82 -8
- crabcode-0.1.6/packages/vscode/computer-use/.vscodeignore +4 -0
- crabcode-0.1.6/packages/vscode/computer-use/LICENSE +21 -0
- crabcode-0.1.6/packages/vscode/computer-use/README.md +19 -0
- crabcode-0.1.6/packages/vscode/computer-use/esbuild.cjs +2 -0
- crabcode-0.1.6/packages/vscode/computer-use/extension.js +19 -0
- crabcode-0.1.6/packages/vscode/computer-use/package-lock.json +527 -0
- crabcode-0.1.6/packages/vscode/computer-use/package.json +20 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/esbuild.js +12 -4
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/package-lock.json +378 -2
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/package.json +176 -8
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/chatPanel.ts +2050 -1129
- crabcode-0.1.6/packages/vscode/src/client/permissionPresentation.ts +64 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/client/protocol.ts +34 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/client/types.ts +223 -7
- crabcode-0.1.6/packages/vscode/src/computerUse.ts +78 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/connection.ts +77 -2
- crabcode-0.1.6/packages/vscode/src/crabCodeSettingsPanel.ts +425 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/extension.ts +88 -28
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/gatewayManager.ts +130 -2
- crabcode-0.1.6/packages/vscode/src/ideContext.ts +166 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/src/pendingEdits.ts +96 -37
- crabcode-0.1.6/packages/vscode/src/promptTemplateFile.ts +112 -0
- crabcode-0.1.6/packages/vscode/src/runtimeControls.ts +159 -0
- crabcode-0.1.6/packages/vscode/src/settings/catalog.ts +204 -0
- crabcode-0.1.6/packages/vscode/src/settings/protocol.ts +50 -0
- crabcode-0.1.6/packages/vscode/src/settings/webview.css +656 -0
- crabcode-0.1.6/packages/vscode/src/settings/webview.ts +1739 -0
- crabcode-0.1.6/packages/vscode/tests/computerUseController.test.cjs +82 -0
- crabcode-0.1.6/packages/vscode/tests/computerUseHost.test.cjs +73 -0
- crabcode-0.1.6/packages/vscode/tests/computerUseNative.test.cjs +123 -0
- crabcode-0.1.6/packages/vscode/tests/computerUsePolicy.test.cjs +93 -0
- crabcode-0.1.6/packages/vscode/tests/crabCodeSettingsPanel.test.cjs +362 -0
- crabcode-0.1.6/packages/vscode/tests/followUp.test.cjs +192 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tests/gatewayManager.test.cjs +43 -0
- crabcode-0.1.6/packages/vscode/tests/helpers/chatPanelHarness.cjs +67 -0
- crabcode-0.1.6/packages/vscode/tests/helpers/settingsHarness.cjs +365 -0
- crabcode-0.1.6/packages/vscode/tests/helpers/slashCommands.cjs +10 -0
- crabcode-0.1.6/packages/vscode/tests/helpers/turnProcess.cjs +9 -0
- crabcode-0.1.6/packages/vscode/tests/ideContext.test.cjs +169 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tests/imageCaptions.test.cjs +13 -1
- crabcode-0.1.6/packages/vscode/tests/permissionPolicy.test.cjs +52 -0
- crabcode-0.1.6/packages/vscode/tests/runtimeControls.test.cjs +156 -0
- crabcode-0.1.6/packages/vscode/tests/slashCommands.test.cjs +78 -0
- crabcode-0.1.6/packages/vscode/tests/streamRetry.test.cjs +135 -0
- crabcode-0.1.6/packages/vscode/tests/turnDetails.test.cjs +54 -0
- crabcode-0.1.6/packages/vscode/tests/turnProcess.test.cjs +223 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tsconfig.json +1 -1
- crabcode-0.1.6/packages/vscode/tsconfig.webview.json +13 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/pyproject.toml +6 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/scripts/audit_tool_cards.mjs +3 -1
- crabcode-0.1.6/scripts/prompt_budget.py +50 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/scripts/sync_version.py +11 -0
- crabcode-0.1.6/tests/test_api_error_logging.py +210 -0
- crabcode-0.1.6/tests/test_apply_patch.py +442 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_cli_api_recovery.py +57 -9
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_cli_composer.py +58 -2
- crabcode-0.1.6/tests/test_cli_computer_use.py +361 -0
- crabcode-0.1.6/tests/test_cli_model_management.py +377 -0
- crabcode-0.1.6/tests/test_cli_yolo.py +87 -0
- crabcode-0.1.6/tests/test_codex_context_window.py +125 -0
- crabcode-0.1.6/tests/test_compact_prompt.py +148 -0
- crabcode-0.1.6/tests/test_compaction_settings.py +98 -0
- crabcode-0.1.6/tests/test_computer_use.py +652 -0
- crabcode-0.1.6/tests/test_computer_use_ax.py +245 -0
- crabcode-0.1.6/tests/test_computer_use_history.py +93 -0
- crabcode-0.1.6/tests/test_computer_use_observation.py +96 -0
- crabcode-0.1.6/tests/test_computer_use_packaging.py +95 -0
- crabcode-0.1.6/tests/test_computer_use_policy.py +533 -0
- crabcode-0.1.6/tests/test_computer_use_window_observations.py +135 -0
- crabcode-0.1.6/tests/test_config_home.py +173 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_context_token_accounting.py +87 -1
- crabcode-0.1.6/tests/test_follow_up_messages.py +379 -0
- crabcode-0.1.6/tests/test_gateway_new_session_controls.py +55 -0
- crabcode-0.1.6/tests/test_gateway_runtime_info.py +32 -0
- crabcode-0.1.6/tests/test_gateway_send_message.py +69 -0
- crabcode-0.1.6/tests/test_git_review.py +151 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_image_context.py +1 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_image_tool.py +8 -5
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_io_isolation.py +7 -3
- crabcode-0.1.6/tests/test_model_connection.py +83 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_model_info.py +17 -0
- crabcode-0.1.6/tests/test_model_settings_delete.py +52 -0
- crabcode-0.1.6/tests/test_network_policy.py +173 -0
- crabcode-0.1.6/tests/test_openai_tool_images.py +71 -0
- crabcode-0.1.6/tests/test_permission_policy_status.py +82 -0
- crabcode-0.1.6/tests/test_project_model_catalog.py +81 -0
- crabcode-0.1.6/tests/test_prompt_loading.py +90 -0
- crabcode-0.1.6/tests/test_prompt_settings.py +210 -0
- crabcode-0.1.6/tests/test_read_images.py +230 -0
- crabcode-0.1.6/tests/test_reasoning_effort.py +62 -0
- crabcode-0.1.6/tests/test_resume_model.py +272 -0
- crabcode-0.1.6/tests/test_session_storage_performance.py +110 -0
- crabcode-0.1.6/tests/test_stream_reconnect.py +736 -0
- crabcode-0.1.6/tests/test_tool_loading.py +396 -0
- crabcode-0.1.6/tests/test_turn_details.py +110 -0
- crabcode-0.1.6/tests/test_usage.py +272 -0
- crabcode-0.1.6/tests/test_web_search.py +168 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_windows_audit_regressions.py +1 -1
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_windows_compat.py +8 -0
- crabcode-0.1.5/.github/workflows/python-publish.yml +0 -65
- crabcode-0.1.5/.gitignore +0 -17
- crabcode-0.1.5/docs/windows-compatibility-fixes.md +0 -58
- crabcode-0.1.5/packages/core/crabcode_core/prompts/system.py +0 -563
- crabcode-0.1.5/packages/desktop/README.md +0 -47
- crabcode-0.1.5/packages/desktop/src/RuntimeSettingsPanel.tsx +0 -292
- crabcode-0.1.5/packages/desktop/src-tauri/icons/icon.png +0 -0
- crabcode-0.1.5/packages/desktop/src-tauri/resources/dock-icon-light.png +0 -0
- crabcode-0.1.5/packages/desktop/src-tauri/src/gateway.rs +0 -663
- crabcode-0.1.5/packages/desktop/src-tauri/src/lib.rs +0 -34
- crabcode-0.1.5/packages/vscode/CHANGELOG.md +0 -25
- {crabcode-0.1.5 → crabcode-0.1.6}/.github/workflows/document-engine-wheels.yml +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/__main__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/banner.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/model_picker.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/render/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/render/messages.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/cli/crabcode_cli/session_picker.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/_windows_process.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/gemini_adapter.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/ollama_adapter.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/api/registry.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/command_line.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/compact/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/config/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/file_lock.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/filesystem.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/goal.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/hooks/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/hooks/manager.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/client.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/lsp/manager.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/mcp/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/path_validation.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/peer/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/permissions/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/plan/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/plan/executor.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/plan/types.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/prompts/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/query/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/models.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/schedule/timing.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/export.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/session/title_gen.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/skills/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/skills/matcher.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/snapshot/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/snapshot/snapshot.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/subprocess_utils.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/bridge.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/inbox.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/message_bus.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/models.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/team/recovery.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/text_io.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/_input_helpers.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/_input_schema.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/agent.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/ask_user.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/checklist.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/checkpoint.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/file_edit.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/file_write.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/glob.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/goal.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/grep.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/image_generate.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/lint.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/monitor.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/peer.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/revert.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/schedule.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/switch_mode.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/tools/team.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/core/crabcode_core/utf8_sanitize.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/adapters.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/dap.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/memory.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/process.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/runtime.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/sessions.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/debugger/crabcode_debugger/tool.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/THEMES.md +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/index.html +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/CopyButton.tsx +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.blog.test.tsx +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.selection.test.tsx +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.test.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/DocumentWorkspace.toolbar.test.tsx +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/TrajectoryView.test.tsx +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/favorites.test.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/main.tsx +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/markdownMath.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/pathUtils.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/theme.test.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/themePackages.test.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/themePackages.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src/vite-env.d.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/build.rs +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/128x128.png +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/128x128@2x.png +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/32x32.png +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/icon.icns +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/src-tauri/icons/icon.ico +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/tsconfig.json +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/desktop/vite.config.ts +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/agent.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/session.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/acp/transport.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/adapter.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/auth.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/document_worker.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/event_bus.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/crabcode_pb2.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/crabcode_pb2_grpc.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/proto/crabcode.proto +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/grpc/server.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/protocol.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/agent.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/auth.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/document.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/health.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/peer.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/permission.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/schedule.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/snapshot.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/tasks.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/routes/team.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/safe_file.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/session_registry.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/gateway/crabcode_gateway/task_registry.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/__init__.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/background.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/chunker.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/embedder.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/indexer.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/store.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/search/crabcode_search/tool.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.gitignore +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.nvmrc +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.vscode/launch.json +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/.vscode/tasks.json +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/LICENSE +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/logo.png +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/resources/icon.svg +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/scripts/gen-types.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/packages/vscode/tests/contextUsage.test.cjs +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/scripts/build_document_engine_bundle.py +0 -0
- {crabcode-0.1.5 → crabcode-0.1.6}/tests/test_cli_model_picker.py +0 -0
- {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.
|
|
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
|
|
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
|
-
| `
|
|
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
|
|
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
|
|
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)
|