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