diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7ca1f64d..c93614b4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,10 +35,10 @@ jobs: # - os: ubuntu-20.04 # target: armv7-unknown-linux-gnueabihf # code-target: linux-armhf - - os: macos-13 + - os: macos-15 target: x86_64-apple-darwin code-target: darwin-x64 - - os: macos-14 + - os: macos-15 target: aarch64-apple-darwin code-target: darwin-arm64 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 74ccff07..550072cf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -34,10 +34,10 @@ jobs: # - os: ubuntu-20.04 # target: armv7-unknown-linux-gnueabihf # code-target: linux-armhf - - os: macos-13 + - os: macos-15 target: x86_64-apple-darwin code-target: darwin-x64 - - os: macos-14 + - os: macos-15 target: aarch64-apple-darwin code-target: darwin-arm64 diff --git a/.gitignore b/.gitignore index 2abb682d..0a26ccd9 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ package.json images/.DS_Store .DS_Store assets/refact-lsp* +.refact/* +.idea/* \ No newline at end of file diff --git a/README.md b/README.md index 5d05f017..23d33a6d 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,11 @@ ## Refact.ai - Your Customizable Open-Source AI Software Engineering Agent -Refact.ai is a free, **open-source** AI Agent that handles engineering tasks end-to-end. It deeply understands your codebases and integrates with your tools, databases, and browsers to automate complex, multi-step tasks. +Refact.ai is the #1 free **open-source** AI Agent on the SWE-bench verified leaderboard. It autonomously handles software engineering tasks end to end. It deeply understands large and complex codebases and integrates with developers’ tools (including MCP), databases, and browsers to automate complex, multi-step tasks. -- Integrate AI Agent with the tools you already use, allowing it to complete tasks for you end-to-end. -- Deploy Refact.ai on-premise and maintain **100% control over your codebase**. -- Access State-of-the-Art Models (Claude 3.7 Sonnet, GPT-4o, o3-mini, etc.) +- Integrate the AI Agent with the tools you already use, allowing it to complete tasks end to end while transparently showing every step it takes. +- Deploy Refact.ai on-premise to maintain **100% control over your codebase**. +- Access state-of-the-art models like Claude 4 Sonnet, GPT-4.1, 4o, Gemini 2.5 Pro, and more. - Bring your own key (BYOK) - Use your own API keys for external LLMs. - Stop switching between your IDE and chat—Refact.ai has an integrated chat right in your IDE. - Get free, unlimited, context-aware auto-completion. diff --git a/package.json b/package.json index 0b5df411..45188512 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "codify", "displayName": "Refact – Open-Source AI Agent, Code Generator & Chat for JavaScript, Python, TypeScript, Java, PHP, Go, and more.", - "description": "Refact.ai is a free, open-source AI Agent that adapts to your workflow. It tracks your cursor to provide instant assistance, connects with tools, databases and browsers, works with debuggers, and runs shell commands. As your AI copilot, it handles code generation, testing, review, and refactoring.", + "description": "Refact.ai is the #1 free open-source AI Agent on the SWE-bench verified leaderboard. It autonomously handles software engineering tasks end to end. It understands large and complex codebases, adapts to your workflow, and connects with the tools developers actually use (including MCP). It tracks your cursor to provide instant help and transparently shows every step the Agent takes. As your AI copilot, it handles code generation, testing, review, refactoring, and more.", "publisher": "smallcloud", "icon": "logo-small.png", "galleryBanner": { @@ -18,7 +18,7 @@ "url": "https://github.com/smallcloudai/refact-vscode/issues", "email": "support@smallcloud.tech" }, - "version": "6.5.8", + "version": "7.0.0", "dependencies": { "@types/marked": "^4.0.8", "@types/vscode": "^1.69.0", @@ -27,7 +27,7 @@ "fetch-h2": "^3.0.2", "json5": "^2.2.3", "marked": "^4.0.8", - "refact-chat-js": "^2.0.10-alpha.3", + "refact-chat-js": "^7.0.0", "uuid": "^9.0.1", "vscode-languageclient": "^7.0.0" }, diff --git a/src/sidebar.ts b/src/sidebar.ts index d6021bb3..84741cca 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -685,11 +685,18 @@ export class PanelWebview implements vscode.WebviewViewProvider { // } async handleToolEdit(toolCall: TextDocToolCall, toolEdit: ToolEditResult) { + const args = toolCall.function.arguments; + const filePath = 'path' in args ? args.path : undefined; + if (!filePath) { + console.error('Tool call arguments missing path property'); + return; + } + if(!toolEdit.file_before && toolEdit.file_after) { - return this.createNewFileWithContent(toolCall.function.arguments.path, toolEdit.file_after); + return this.createNewFileWithContent(filePath, toolEdit.file_after); } - return this.addDiffToFile(toolCall.function.arguments.path, toolEdit.file_after); + return this.addDiffToFile(filePath, toolEdit.file_after); } @@ -1034,15 +1041,30 @@ export class PanelWebview implements vscode.WebviewViewProvider { if(thread) { const chat: InitialState["chat"] = { - streaming: false, - error: null, - prevent_send: true, - waiting_for_response: false, - tool_use: thread.tool_use ? thread.tool_use : "explore", - cache: {}, + current_thread_id: thread.id, + open_thread_ids: [thread.id], + threads: { + [thread.id]: { + thread, + streaming: false, + waiting_for_response: false, + prevent_send: true, + error: null, + queued_items: [], + send_immediately: thread.messages.length > 0, + attached_images: [], + confirmation: { + pause: false, + pause_reasons: [], + status: { wasInteracted: false, confirmationStatus: false }, + }, + snapshot_received: false, + }, + }, system_prompt: {}, - send_immediately: thread.messages.length > 0, - thread, + tool_use: thread.tool_use ? thread.tool_use : "explore", + sse_refresh_requested: null, + stream_version: 0, }; state.chat = chat; state.pages = [{name: "login page"}, {name: "history"}, {name: "chat"}];