@theia/ai-claude-code 1.67.0-next.56 → 1.67.0-next.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/lib/browser/claude-code-chat-agent.d.ts +84 -0
  2. package/lib/browser/claude-code-chat-agent.d.ts.map +1 -0
  3. package/lib/browser/claude-code-chat-agent.js +525 -0
  4. package/lib/browser/claude-code-chat-agent.js.map +1 -0
  5. package/lib/browser/claude-code-command-contribution.d.ts +16 -0
  6. package/lib/browser/claude-code-command-contribution.d.ts.map +1 -0
  7. package/lib/browser/claude-code-command-contribution.js +86 -0
  8. package/lib/browser/claude-code-command-contribution.js.map +1 -0
  9. package/lib/browser/claude-code-edit-tool-service.d.ts +63 -0
  10. package/lib/browser/claude-code-edit-tool-service.d.ts.map +1 -0
  11. package/lib/browser/claude-code-edit-tool-service.js +225 -0
  12. package/lib/browser/claude-code-edit-tool-service.js.map +1 -0
  13. package/lib/browser/claude-code-file-edit-backup-service.d.ts +59 -0
  14. package/lib/browser/claude-code-file-edit-backup-service.d.ts.map +1 -0
  15. package/lib/browser/claude-code-file-edit-backup-service.js +98 -0
  16. package/lib/browser/claude-code-file-edit-backup-service.js.map +1 -0
  17. package/lib/browser/claude-code-frontend-module.d.ts +5 -0
  18. package/lib/browser/claude-code-frontend-module.d.ts.map +1 -0
  19. package/lib/browser/claude-code-frontend-module.js +83 -0
  20. package/lib/browser/claude-code-frontend-module.js.map +1 -0
  21. package/lib/browser/claude-code-frontend-service.d.ts +39 -0
  22. package/lib/browser/claude-code-frontend-service.d.ts.map +1 -0
  23. package/lib/browser/claude-code-frontend-service.js +189 -0
  24. package/lib/browser/claude-code-frontend-service.js.map +1 -0
  25. package/lib/browser/claude-code-slash-commands-contribution.d.ts +34 -0
  26. package/lib/browser/claude-code-slash-commands-contribution.d.ts.map +1 -0
  27. package/lib/browser/claude-code-slash-commands-contribution.js +219 -0
  28. package/lib/browser/claude-code-slash-commands-contribution.js.map +1 -0
  29. package/lib/browser/claude-code-tool-call-content.d.ts +8 -0
  30. package/lib/browser/claude-code-tool-call-content.d.ts.map +1 -0
  31. package/lib/browser/claude-code-tool-call-content.js +30 -0
  32. package/lib/browser/claude-code-tool-call-content.js.map +1 -0
  33. package/lib/browser/renderers/bash-tool-renderer.d.ts +10 -0
  34. package/lib/browser/renderers/bash-tool-renderer.d.ts.map +1 -0
  35. package/lib/browser/renderers/bash-tool-renderer.js +67 -0
  36. package/lib/browser/renderers/bash-tool-renderer.js.map +1 -0
  37. package/lib/browser/renderers/collapsible-tool-renderer.d.ts +13 -0
  38. package/lib/browser/renderers/collapsible-tool-renderer.d.ts.map +1 -0
  39. package/lib/browser/renderers/collapsible-tool-renderer.js +48 -0
  40. package/lib/browser/renderers/collapsible-tool-renderer.js.map +1 -0
  41. package/lib/browser/renderers/edit-tool-renderer.d.ts +16 -0
  42. package/lib/browser/renderers/edit-tool-renderer.d.ts.map +1 -0
  43. package/lib/browser/renderers/edit-tool-renderer.js +135 -0
  44. package/lib/browser/renderers/edit-tool-renderer.js.map +1 -0
  45. package/lib/browser/renderers/glob-tool-renderer.d.ts +14 -0
  46. package/lib/browser/renderers/glob-tool-renderer.d.ts.map +1 -0
  47. package/lib/browser/renderers/glob-tool-renderer.js +104 -0
  48. package/lib/browser/renderers/glob-tool-renderer.js.map +1 -0
  49. package/lib/browser/renderers/grep-tool-renderer.d.ts +14 -0
  50. package/lib/browser/renderers/grep-tool-renderer.d.ts.map +1 -0
  51. package/lib/browser/renderers/grep-tool-renderer.js +160 -0
  52. package/lib/browser/renderers/grep-tool-renderer.js.map +1 -0
  53. package/lib/browser/renderers/ls-tool-renderer.d.ts +16 -0
  54. package/lib/browser/renderers/ls-tool-renderer.d.ts.map +1 -0
  55. package/lib/browser/renderers/ls-tool-renderer.js +116 -0
  56. package/lib/browser/renderers/ls-tool-renderer.js.map +1 -0
  57. package/lib/browser/renderers/multiedit-tool-renderer.d.ts +16 -0
  58. package/lib/browser/renderers/multiedit-tool-renderer.d.ts.map +1 -0
  59. package/lib/browser/renderers/multiedit-tool-renderer.js +148 -0
  60. package/lib/browser/renderers/multiedit-tool-renderer.js.map +1 -0
  61. package/lib/browser/renderers/read-tool-renderer.d.ts +16 -0
  62. package/lib/browser/renderers/read-tool-renderer.d.ts.map +1 -0
  63. package/lib/browser/renderers/read-tool-renderer.js +124 -0
  64. package/lib/browser/renderers/read-tool-renderer.js.map +1 -0
  65. package/lib/browser/renderers/todo-write-renderer.d.ts +10 -0
  66. package/lib/browser/renderers/todo-write-renderer.d.ts.map +1 -0
  67. package/lib/browser/renderers/todo-write-renderer.js +133 -0
  68. package/lib/browser/renderers/todo-write-renderer.js.map +1 -0
  69. package/lib/browser/renderers/web-fetch-tool-renderer.d.ts +10 -0
  70. package/lib/browser/renderers/web-fetch-tool-renderer.d.ts.map +1 -0
  71. package/lib/browser/renderers/web-fetch-tool-renderer.js +83 -0
  72. package/lib/browser/renderers/web-fetch-tool-renderer.js.map +1 -0
  73. package/lib/browser/renderers/write-tool-renderer.d.ts +16 -0
  74. package/lib/browser/renderers/write-tool-renderer.d.ts.map +1 -0
  75. package/lib/browser/renderers/write-tool-renderer.js +114 -0
  76. package/lib/browser/renderers/write-tool-renderer.js.map +1 -0
  77. package/lib/common/claude-code-preferences.d.ts +5 -0
  78. package/lib/common/claude-code-preferences.d.ts.map +1 -0
  79. package/lib/common/claude-code-preferences.js +40 -0
  80. package/lib/common/claude-code-preferences.js.map +1 -0
  81. package/lib/common/claude-code-service.d.ts +235 -0
  82. package/lib/common/claude-code-service.d.ts.map +1 -0
  83. package/lib/common/claude-code-service.js +82 -0
  84. package/lib/common/claude-code-service.js.map +1 -0
  85. package/lib/common/index.d.ts +2 -0
  86. package/lib/common/index.d.ts.map +1 -0
  87. package/lib/common/index.js +20 -0
  88. package/lib/common/index.js.map +1 -0
  89. package/lib/node/claude-code-backend-module.d.ts +4 -0
  90. package/lib/node/claude-code-backend-module.d.ts.map +1 -0
  91. package/lib/node/claude-code-backend-module.js +35 -0
  92. package/lib/node/claude-code-backend-module.js.map +1 -0
  93. package/lib/node/claude-code-service-impl.d.ts +33 -0
  94. package/lib/node/claude-code-service-impl.d.ts.map +1 -0
  95. package/lib/node/claude-code-service-impl.js +468 -0
  96. package/lib/node/claude-code-service-impl.js.map +1 -0
  97. package/lib/package.spec.d.ts +1 -0
  98. package/lib/package.spec.d.ts.map +1 -0
  99. package/lib/package.spec.js +26 -0
  100. package/lib/package.spec.js.map +1 -0
  101. package/package.json +10 -10
  102. package/src/browser/claude-code-chat-agent.ts +17 -10
  103. package/src/browser/claude-code-edit-tool-service.ts +10 -7
  104. package/src/browser/claude-code-file-edit-backup-service.ts +6 -2
  105. package/src/browser/claude-code-slash-commands-contribution.ts +152 -73
@@ -0,0 +1,16 @@
1
+ import { Command, CommandContribution, CommandRegistry } from '@theia/core';
2
+ import { EditorManager } from '@theia/editor/lib/browser';
3
+ import { FileService } from '@theia/filesystem/lib/browser/file-service';
4
+ import { WorkspaceService } from '@theia/workspace/lib/browser';
5
+ import { AIActivationService } from '@theia/ai-core/lib/browser';
6
+ export declare const OPEN_CLAUDE_CODE_CONFIG: Command;
7
+ export declare const OPEN_CLAUDE_CODE_MEMORY: Command;
8
+ export declare class ClaudeCodeCommandContribution implements CommandContribution {
9
+ protected readonly workspaceService: WorkspaceService;
10
+ protected readonly fileService: FileService;
11
+ protected readonly editorManager: EditorManager;
12
+ protected readonly activationService: AIActivationService;
13
+ registerCommands(commands: CommandRegistry): void;
14
+ protected openFileInWorkspace(file: string, initialContent: string): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=claude-code-command-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-command-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-command-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,eAAO,MAAM,uBAAuB,SAKkC,CAAC;AAEvE,eAAO,MAAM,uBAAuB,SAKkC,CAAC;AAEvE,qBACa,6BAA8B,YAAW,mBAAmB;IAGrE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;cAajC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY3F"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ClaudeCodeCommandContribution = exports.OPEN_CLAUDE_CODE_MEMORY = exports.OPEN_CLAUDE_CODE_CONFIG = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const core_1 = require("@theia/core");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const browser_1 = require("@theia/core/lib/browser");
23
+ const browser_2 = require("@theia/editor/lib/browser");
24
+ const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
25
+ const browser_3 = require("@theia/workspace/lib/browser");
26
+ const chat_view_commands_1 = require("@theia/ai-chat-ui/lib/browser/chat-view-commands");
27
+ const browser_4 = require("@theia/ai-core/lib/browser");
28
+ exports.OPEN_CLAUDE_CODE_CONFIG = core_1.Command.toLocalizedCommand({
29
+ id: 'chat:open-claude-code-config',
30
+ category: chat_view_commands_1.ChatCommands.CHAT_CATEGORY,
31
+ iconClass: (0, browser_1.codicon)('bracket'),
32
+ label: 'Open Claude Code Configuration'
33
+ }, 'theia/ai-claude-code/open-config', chat_view_commands_1.ChatCommands.CHAT_CATEGORY_KEY);
34
+ exports.OPEN_CLAUDE_CODE_MEMORY = core_1.Command.toLocalizedCommand({
35
+ id: 'chat:open-claude-code-memory',
36
+ category: chat_view_commands_1.ChatCommands.CHAT_CATEGORY,
37
+ iconClass: (0, browser_1.codicon)('bracket'),
38
+ label: 'Open Claude Code Memory (CLAUDE.MD)'
39
+ }, 'theia/ai-claude-code/open-memory', chat_view_commands_1.ChatCommands.CHAT_CATEGORY_KEY);
40
+ let ClaudeCodeCommandContribution = class ClaudeCodeCommandContribution {
41
+ registerCommands(commands) {
42
+ commands.registerCommand(exports.OPEN_CLAUDE_CODE_CONFIG, {
43
+ execute: async () => await this.openFileInWorkspace('.claude/settings.json', JSON.stringify({}, undefined, 2)),
44
+ isVisible: () => this.activationService.isActive,
45
+ isEnabled: () => this.activationService.isActive
46
+ });
47
+ commands.registerCommand(exports.OPEN_CLAUDE_CODE_MEMORY, {
48
+ execute: async () => await this.openFileInWorkspace('.claude/CLAUDE.md', ''),
49
+ isVisible: () => this.activationService.isActive,
50
+ isEnabled: () => this.activationService.isActive
51
+ });
52
+ }
53
+ async openFileInWorkspace(file, initialContent) {
54
+ const roots = this.workspaceService.tryGetRoots();
55
+ if (roots.length < 1) {
56
+ return;
57
+ }
58
+ const uri = roots[0].resource;
59
+ const claudeSettingsUri = uri.resolve(file);
60
+ if (!await this.fileService.exists(claudeSettingsUri)) {
61
+ await this.fileService.write(claudeSettingsUri, initialContent, { encoding: 'utf8' });
62
+ }
63
+ this.editorManager.open(claudeSettingsUri);
64
+ }
65
+ };
66
+ exports.ClaudeCodeCommandContribution = ClaudeCodeCommandContribution;
67
+ tslib_1.__decorate([
68
+ (0, inversify_1.inject)(browser_3.WorkspaceService),
69
+ tslib_1.__metadata("design:type", browser_3.WorkspaceService)
70
+ ], ClaudeCodeCommandContribution.prototype, "workspaceService", void 0);
71
+ tslib_1.__decorate([
72
+ (0, inversify_1.inject)(file_service_1.FileService),
73
+ tslib_1.__metadata("design:type", file_service_1.FileService)
74
+ ], ClaudeCodeCommandContribution.prototype, "fileService", void 0);
75
+ tslib_1.__decorate([
76
+ (0, inversify_1.inject)(browser_2.EditorManager),
77
+ tslib_1.__metadata("design:type", browser_2.EditorManager)
78
+ ], ClaudeCodeCommandContribution.prototype, "editorManager", void 0);
79
+ tslib_1.__decorate([
80
+ (0, inversify_1.inject)(browser_4.AIActivationService),
81
+ tslib_1.__metadata("design:type", Object)
82
+ ], ClaudeCodeCommandContribution.prototype, "activationService", void 0);
83
+ exports.ClaudeCodeCommandContribution = ClaudeCodeCommandContribution = tslib_1.__decorate([
84
+ (0, inversify_1.injectable)()
85
+ ], ClaudeCodeCommandContribution);
86
+ //# sourceMappingURL=claude-code-command-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-command-contribution.js","sourceRoot":"","sources":["../../src/browser/claude-code-command-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { MutableChatRequestModel } from '@theia/ai-chat';
2
+ import { ChangeSetFileElementFactory } from '@theia/ai-chat/lib/browser/change-set-file-element';
3
+ import { ChangeSetElement } from '@theia/ai-chat/lib/common/change-set';
4
+ import { Replacement } from '@theia/core/lib/common/content-replacer';
5
+ import { URI } from '@theia/core/lib/common/uri';
6
+ import { FileService } from '@theia/filesystem/lib/browser/file-service';
7
+ import { WorkspaceService } from '@theia/workspace/lib/browser';
8
+ import { FileEditBackupService } from './claude-code-file-edit-backup-service';
9
+ import { ILogger } from '@theia/core';
10
+ export interface EditToolInput {
11
+ file_path: string;
12
+ old_string: string;
13
+ new_string: string;
14
+ }
15
+ export interface MultiEditToolInput {
16
+ file_path: string;
17
+ edits: Array<{
18
+ old_string: string;
19
+ new_string: string;
20
+ }>;
21
+ }
22
+ export interface WriteToolInput {
23
+ file_path: string;
24
+ content: string;
25
+ }
26
+ export interface ToolUseBlock {
27
+ name: string;
28
+ input: EditToolInput | MultiEditToolInput | WriteToolInput;
29
+ }
30
+ export interface EditToolContext {
31
+ sessionId: string | undefined;
32
+ isEditMode: boolean;
33
+ }
34
+ export declare const ClaudeCodeEditToolService: unique symbol;
35
+ /**
36
+ * Service for handling edit tool operations.
37
+ *
38
+ * Invoked by the ClaudeCodeChatAgent on each finished edit tool request.
39
+ * This can be used to track and manage file edits made by the agent, e.g.
40
+ * to propagate them to ChangeSets (see ClaudeCodeEditToolServiceImpl below).
41
+ */
42
+ export interface ClaudeCodeEditToolService {
43
+ handleEditTool(toolUse: ToolUseBlock, request: MutableChatRequestModel, context: EditToolContext): Promise<void>;
44
+ }
45
+ /**
46
+ * Propagates edit tool results to change sets in the specified request's session.
47
+ */
48
+ export declare class ClaudeCodeEditToolServiceImpl implements ClaudeCodeEditToolService {
49
+ protected readonly fileChangeFactory: ChangeSetFileElementFactory;
50
+ protected readonly fileService: FileService;
51
+ protected readonly workspaceService: WorkspaceService;
52
+ protected readonly backupService: FileEditBackupService;
53
+ protected readonly logger: ILogger;
54
+ private readonly contentReplacer;
55
+ handleEditTool(toolUse: ToolUseBlock, request: MutableChatRequestModel, context: EditToolContext): Promise<void>;
56
+ protected handleEditSingle(input: EditToolInput, request: MutableChatRequestModel, context: EditToolContext): Promise<void>;
57
+ protected handleEditMultiple(input: MultiEditToolInput, request: MutableChatRequestModel, context: EditToolContext): Promise<void>;
58
+ protected handleWriteFile(input: WriteToolInput, request: MutableChatRequestModel, context: EditToolContext): Promise<void>;
59
+ protected handleEditModeCommon(workspaceUri: URI, currentContentString: string, replacements: Replacement[], existingChangeSetElement: ChangeSetElement | undefined, request: MutableChatRequestModel, context: EditToolContext): Promise<void>;
60
+ protected handleNonEditModeCommon(workspaceUri: URI, currentContentString: string, replacements: Replacement[], existingChangeSetElement: ChangeSetElement | undefined, request: MutableChatRequestModel): Promise<void>;
61
+ protected toWorkspaceUri(absolutePath: string): Promise<URI>;
62
+ }
63
+ //# sourceMappingURL=claude-code-edit-tool-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-edit-tool-service.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-edit-tool-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ClaudeCodeEditToolServiceImpl = exports.ClaudeCodeEditToolService = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const change_set_file_element_1 = require("@theia/ai-chat/lib/browser/change-set-file-element");
21
+ const content_replacer_1 = require("@theia/core/lib/common/content-replacer");
22
+ const uri_1 = require("@theia/core/lib/common/uri");
23
+ const inversify_1 = require("@theia/core/shared/inversify");
24
+ const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
25
+ const browser_1 = require("@theia/workspace/lib/browser");
26
+ const claude_code_file_edit_backup_service_1 = require("./claude-code-file-edit-backup-service");
27
+ const core_1 = require("@theia/core");
28
+ exports.ClaudeCodeEditToolService = Symbol('ClaudeCodeEditToolService');
29
+ /**
30
+ * Propagates edit tool results to change sets in the specified request's session.
31
+ */
32
+ let ClaudeCodeEditToolServiceImpl = class ClaudeCodeEditToolServiceImpl {
33
+ constructor() {
34
+ this.contentReplacer = new content_replacer_1.ContentReplacerV1Impl();
35
+ }
36
+ async handleEditTool(toolUse, request, context) {
37
+ try {
38
+ const { name, input } = toolUse;
39
+ switch (name) {
40
+ case 'Edit':
41
+ await this.handleEditSingle(input, request, context);
42
+ break;
43
+ case 'MultiEdit':
44
+ await this.handleEditMultiple(input, request, context);
45
+ break;
46
+ case 'Write':
47
+ await this.handleWriteFile(input, request, context);
48
+ break;
49
+ }
50
+ }
51
+ catch (error) {
52
+ this.logger.error('Error handling edit tool:', error);
53
+ }
54
+ }
55
+ async handleEditSingle(input, request, context) {
56
+ try {
57
+ const workspaceUri = await this.toWorkspaceUri(input.file_path);
58
+ const currentContent = await this.fileService.read(workspaceUri);
59
+ const currentContentString = currentContent.value.toString();
60
+ const existingChangeSetElement = request.session.changeSet.getElementByURI(workspaceUri);
61
+ const replacement = {
62
+ oldContent: input.old_string,
63
+ newContent: input.new_string
64
+ };
65
+ if (context.isEditMode) {
66
+ await this.handleEditModeCommon(workspaceUri, currentContentString, [replacement], existingChangeSetElement, request, context);
67
+ }
68
+ else {
69
+ await this.handleNonEditModeCommon(workspaceUri, currentContentString, [replacement], existingChangeSetElement, request);
70
+ }
71
+ request.session.changeSet.setTitle(core_1.nls.localize('theia/ai/claude-code/changeSetTitle', 'Changes by Claude Code'));
72
+ }
73
+ catch (error) {
74
+ this.logger.error('Error handling Edit tool:', error);
75
+ }
76
+ }
77
+ async handleEditMultiple(input, request, context) {
78
+ try {
79
+ const workspaceUri = await this.toWorkspaceUri(input.file_path);
80
+ const currentContent = await this.fileService.read(workspaceUri);
81
+ const currentContentString = currentContent.value.toString();
82
+ const existingChangeSetElement = request.session.changeSet.getElementByURI(workspaceUri);
83
+ const replacements = input.edits.map(edit => ({
84
+ oldContent: edit.old_string,
85
+ newContent: edit.new_string
86
+ }));
87
+ if (context.isEditMode) {
88
+ await this.handleEditModeCommon(workspaceUri, currentContentString, replacements, existingChangeSetElement, request, context);
89
+ }
90
+ else {
91
+ await this.handleNonEditModeCommon(workspaceUri, currentContentString, replacements, existingChangeSetElement, request);
92
+ }
93
+ request.session.changeSet.setTitle(core_1.nls.localize('theia/ai/claude-code/changeSetTitle', 'Changes by Claude Code'));
94
+ }
95
+ catch (error) {
96
+ this.logger.error('Error handling MultiEdit tool:', error);
97
+ }
98
+ }
99
+ async handleWriteFile(input, request, context) {
100
+ var _a;
101
+ try {
102
+ const workspaceUri = await this.toWorkspaceUri(input.file_path);
103
+ const fileExists = await this.fileService.exists(workspaceUri);
104
+ if (context.isEditMode) {
105
+ if (input.content === '') {
106
+ const originalState = await this.backupService.getOriginal(workspaceUri, context.sessionId);
107
+ const fileElement = this.fileChangeFactory({
108
+ uri: workspaceUri,
109
+ type: 'delete',
110
+ state: 'applied',
111
+ originalState,
112
+ targetState: '',
113
+ requestId: request.id,
114
+ chatSessionId: request.session.id
115
+ });
116
+ request.session.changeSet.addElements(fileElement);
117
+ }
118
+ else {
119
+ const type = !fileExists ? 'add' : 'modify';
120
+ let originalState = '';
121
+ if (type === 'modify') {
122
+ originalState = (_a = (await this.backupService.getOriginal(workspaceUri, context.sessionId))) !== null && _a !== void 0 ? _a : '';
123
+ }
124
+ const fileElement = this.fileChangeFactory({
125
+ uri: workspaceUri,
126
+ type,
127
+ state: 'applied',
128
+ originalState,
129
+ targetState: input.content,
130
+ requestId: request.id,
131
+ chatSessionId: request.session.id
132
+ });
133
+ request.session.changeSet.addElements(fileElement);
134
+ }
135
+ }
136
+ else {
137
+ const type = input.content === '' ? 'delete' :
138
+ !fileExists ? 'add' : 'modify';
139
+ const fileElement = this.fileChangeFactory({
140
+ uri: workspaceUri,
141
+ type,
142
+ state: 'pending',
143
+ targetState: input.content,
144
+ requestId: request.id,
145
+ chatSessionId: request.session.id
146
+ });
147
+ request.session.changeSet.addElements(fileElement);
148
+ }
149
+ request.session.changeSet.setTitle(core_1.nls.localize('theia/ai/claude-code/changeSetTitle', 'Changes by Claude Code'));
150
+ }
151
+ catch (error) {
152
+ this.logger.error('Error handling Write tool:', error);
153
+ }
154
+ }
155
+ async handleEditModeCommon(workspaceUri, currentContentString, replacements, existingChangeSetElement, request, context) {
156
+ const originalState = await this.backupService.getOriginal(workspaceUri, context.sessionId);
157
+ const existingReplacements = (existingChangeSetElement instanceof change_set_file_element_1.ChangeSetFileElement) && existingChangeSetElement.replacements || [];
158
+ const fileElement = this.fileChangeFactory({
159
+ uri: workspaceUri,
160
+ type: 'modify',
161
+ state: 'applied',
162
+ originalState,
163
+ targetState: currentContentString,
164
+ requestId: request.id,
165
+ chatSessionId: request.session.id,
166
+ replacements: [...existingReplacements, ...replacements]
167
+ });
168
+ request.session.changeSet.addElements(fileElement);
169
+ }
170
+ async handleNonEditModeCommon(workspaceUri, currentContentString, replacements, existingChangeSetElement, request) {
171
+ const { updatedContent, errors } = this.contentReplacer.applyReplacements(currentContentString, replacements);
172
+ if (errors.length > 0) {
173
+ this.logger.error('Content replacement errors:', errors);
174
+ return;
175
+ }
176
+ if (updatedContent !== currentContentString) {
177
+ const existingReplacements = (existingChangeSetElement instanceof change_set_file_element_1.ChangeSetFileElement) && existingChangeSetElement.replacements || [];
178
+ const fileElement = this.fileChangeFactory({
179
+ uri: workspaceUri,
180
+ type: 'modify',
181
+ state: 'pending',
182
+ targetState: updatedContent,
183
+ requestId: request.id,
184
+ chatSessionId: request.session.id,
185
+ replacements: [...existingReplacements, ...replacements]
186
+ });
187
+ request.session.changeSet.addElements(fileElement);
188
+ }
189
+ }
190
+ async toWorkspaceUri(absolutePath) {
191
+ const absoluteUri = new uri_1.URI(absolutePath);
192
+ const workspaceUri = this.workspaceService.getWorkspaceRootUri(absoluteUri);
193
+ if (!workspaceUri) {
194
+ throw new Error(`No workspace found for ${absolutePath}`);
195
+ }
196
+ const relativeUri = await this.workspaceService.getWorkspaceRelativePath(absoluteUri);
197
+ return workspaceUri === null || workspaceUri === void 0 ? void 0 : workspaceUri.resolve(relativeUri);
198
+ }
199
+ };
200
+ exports.ClaudeCodeEditToolServiceImpl = ClaudeCodeEditToolServiceImpl;
201
+ tslib_1.__decorate([
202
+ (0, inversify_1.inject)(change_set_file_element_1.ChangeSetFileElementFactory),
203
+ tslib_1.__metadata("design:type", Function)
204
+ ], ClaudeCodeEditToolServiceImpl.prototype, "fileChangeFactory", void 0);
205
+ tslib_1.__decorate([
206
+ (0, inversify_1.inject)(file_service_1.FileService),
207
+ tslib_1.__metadata("design:type", file_service_1.FileService)
208
+ ], ClaudeCodeEditToolServiceImpl.prototype, "fileService", void 0);
209
+ tslib_1.__decorate([
210
+ (0, inversify_1.inject)(browser_1.WorkspaceService),
211
+ tslib_1.__metadata("design:type", browser_1.WorkspaceService)
212
+ ], ClaudeCodeEditToolServiceImpl.prototype, "workspaceService", void 0);
213
+ tslib_1.__decorate([
214
+ (0, inversify_1.inject)(claude_code_file_edit_backup_service_1.FileEditBackupService),
215
+ tslib_1.__metadata("design:type", Object)
216
+ ], ClaudeCodeEditToolServiceImpl.prototype, "backupService", void 0);
217
+ tslib_1.__decorate([
218
+ (0, inversify_1.inject)(core_1.ILogger),
219
+ (0, inversify_1.named)('claude-code'),
220
+ tslib_1.__metadata("design:type", Object)
221
+ ], ClaudeCodeEditToolServiceImpl.prototype, "logger", void 0);
222
+ exports.ClaudeCodeEditToolServiceImpl = ClaudeCodeEditToolServiceImpl = tslib_1.__decorate([
223
+ (0, inversify_1.injectable)()
224
+ ], ClaudeCodeEditToolServiceImpl);
225
+ //# sourceMappingURL=claude-code-edit-tool-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-edit-tool-service.js","sourceRoot":"","sources":["../../src/browser/claude-code-edit-tool-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,gGAAuH;AAEvH,8EAA6F;AAC7F,oDAAiD;AACjD,4DAAyE;AACzE,6EAAyE;AACzE,0DAAgE;AAChE,iGAA+E;AAC/E,sCAA2C;AA+B9B,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAa7E;;GAEG;AAEI,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAAnC;QAiBc,oBAAe,GAAG,IAAI,wCAAqB,EAAE,CAAC;IAkOnE,CAAC;IAhOG,KAAK,CAAC,cAAc,CAAC,OAAqB,EAAE,OAAgC,EAAE,OAAwB;QAClG,IAAI,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAEhC,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,MAAM;oBACP,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAsB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBACtE,MAAM;gBACV,KAAK,WAAW;oBACZ,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAA2B,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7E,MAAM;gBACV,KAAK,OAAO;oBACR,MAAM,IAAI,CAAC,eAAe,CAAC,KAAuB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBACtE,MAAM;YACd,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,KAAoB,EAAE,OAAgC,EAAE,OAAwB;QAC7G,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjE,MAAM,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7D,MAAM,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAEzF,MAAM,WAAW,GAAgB;gBAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;aAC/B,CAAC;YAEF,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,oBAAoB,CAC3B,YAAY,EACZ,oBAAoB,EACpB,CAAC,WAAW,CAAC,EACb,wBAAwB,EACxB,OAAO,EACP,OAAO,CACV,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,uBAAuB,CAC9B,YAAY,EACZ,oBAAoB,EACpB,CAAC,WAAW,CAAC,EACb,wBAAwB,EACxB,OAAO,CACV,CAAC;YACN,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAG,CAAC,QAAQ,CAAC,qCAAqC,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACtH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,KAAyB,EAAE,OAAgC,EAAE,OAAwB;QACpH,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjE,MAAM,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7D,MAAM,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAEzF,MAAM,YAAY,GAAkB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;aAC9B,CAAC,CAAC,CAAC;YAEJ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,oBAAoB,CAC3B,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,wBAAwB,EACxB,OAAO,EACP,OAAO,CACV,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,uBAAuB,CAC9B,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,wBAAwB,EACxB,OAAO,CACV,CAAC;YACN,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAG,CAAC,QAAQ,CAAC,qCAAqC,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACtH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,KAAqB,EAAE,OAAgC,EAAE,OAAwB;;QAC7G,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAE/D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;oBACvB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;wBACvC,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,SAAS;wBAChB,aAAa;wBACb,WAAW,EAAE,EAAE;wBACf,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;qBACpC,CAAC,CAAC;oBAEH,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC5C,IAAI,aAAa,GAAG,EAAE,CAAC;oBACvB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpB,aAAa,GAAG,MAAA,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,mCAAI,EAAE,CAAC;oBAClG,CAAC;oBAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;wBACvC,GAAG,EAAE,YAAY;wBACjB,IAAI;wBACJ,KAAK,EAAE,SAAS;wBAChB,aAAa;wBACb,WAAW,EAAE,KAAK,CAAC,OAAO;wBAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;qBACpC,CAAC,CAAC;oBAEH,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACvD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC1C,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;oBACvC,GAAG,EAAE,YAAY;oBACjB,IAAI;oBACJ,KAAK,EAAE,SAAS;oBAChB,WAAW,EAAE,KAAK,CAAC,OAAO;oBAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;iBACpC,CAAC,CAAC;gBAEH,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAG,CAAC,QAAQ,CAAC,qCAAqC,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACtH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAES,KAAK,CAAC,oBAAoB,CAChC,YAAiB,EACjB,oBAA4B,EAC5B,YAA2B,EAC3B,wBAAsD,EACtD,OAAgC,EAChC,OAAwB;QAExB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5F,MAAM,oBAAoB,GAAG,CAAC,wBAAwB,YAAY,8CAAoB,CAAC,IAAI,wBAAwB,CAAC,YAAY,IAAI,EAAE,CAAC;QAEvI,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACvC,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,SAAS;YAChB,aAAa;YACb,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YACjC,YAAY,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,YAAY,CAAC;SAC3D,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAES,KAAK,CAAC,uBAAuB,CACnC,YAAiB,EACjB,oBAA4B,EAC5B,YAA2B,EAC3B,wBAAsD,EACtD,OAAgC;QAEhC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CACrE,oBAAoB,EACpB,YAAY,CACf,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,cAAc,KAAK,oBAAoB,EAAE,CAAC;YAC1C,MAAM,oBAAoB,GAAG,CAAC,wBAAwB,YAAY,8CAAoB,CAAC,IAAI,wBAAwB,CAAC,YAAY,IAAI,EAAE,CAAC;YAEvI,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACvC,GAAG,EAAE,YAAY;gBACjB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,cAAc;gBAC3B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjC,YAAY,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,YAAY,CAAC;aAC3D,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,YAAoB;QAC/C,MAAM,WAAW,GAAG,IAAI,SAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACtF,OAAO,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;CAEJ,CAAA;AAnPY,sEAA6B;AAGnB;IADlB,IAAA,kBAAM,EAAC,qDAA2B,CAAC;;wEAC8B;AAG/C;IADlB,IAAA,kBAAM,EAAC,0BAAW,CAAC;sCACY,0BAAW;kEAAC;AAGzB;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACY,0BAAgB;uEAAC;AAGnC;IADlB,IAAA,kBAAM,EAAC,4DAAqB,CAAC;;oEAC0B;AAGrC;IADlB,IAAA,kBAAM,EAAC,cAAO,CAAC;IAAE,IAAA,iBAAK,EAAC,aAAa,CAAC;;6DACH;wCAf1B,6BAA6B;IADzC,IAAA,sBAAU,GAAE;GACA,6BAA6B,CAmPzC"}
@@ -0,0 +1,59 @@
1
+ import { MutableChatRequestModel } from '@theia/ai-chat';
2
+ import { URI } from '@theia/core/lib/common/uri';
3
+ import { FileService } from '@theia/filesystem/lib/browser/file-service';
4
+ import { WorkspaceService } from '@theia/workspace/lib/browser';
5
+ import { ILogger } from '@theia/core';
6
+ export declare const FileEditBackupService: unique symbol;
7
+ /**
8
+ * Service for managing file backup operations during Claude Code edit sessions.
9
+ *
10
+ * This service handles the retrieval of original file content from backup files
11
+ * created by the file backup hooks in ClaudeCodeServiceImpl. The backup hooks
12
+ * run before file modification tools (Write, Edit, MultiEdit) and create backups
13
+ * in the `.claude/.edit-baks/{session_id}/` directory structure.
14
+ *
15
+ * @see packages/ai-claude-code/src/node/claude-code-service-impl.ts#ensureFileBackupHook
16
+ * The coupling with the backup hooks is intentional - this service reads from
17
+ * the same backup location that the hooks write to.
18
+ */
19
+ export interface FileEditBackupService {
20
+ /**
21
+ * Retrieves the original content of a file from its backup.
22
+ *
23
+ * This method reads from backup files created by the file backup hooks
24
+ * that are installed by ClaudeCodeServiceImpl.ensureFileBackupHook().
25
+ *
26
+ * @param workspaceUri The URI of the file to get backup content for
27
+ * @param sessionId The Claude session ID used for backup organization
28
+ * @returns The original file content, or undefined if no backup exists
29
+ */
30
+ getOriginal(workspaceUri: URI, sessionId: string | undefined): Promise<string | undefined>;
31
+ /**
32
+ * Cleans up backup files for a completed chat session.
33
+ *
34
+ * This method removes the backup directory structure for the given session
35
+ * from all workspaces that have change set elements.
36
+ *
37
+ * @param request The chat request model containing session and change set information
38
+ */
39
+ cleanUp(request: MutableChatRequestModel): Promise<void>;
40
+ /**
41
+ * Gets the backup location for a workspace root.
42
+ *
43
+ * This must match the backup location used by the file backup hooks
44
+ * in ClaudeCodeServiceImpl.
45
+ *
46
+ * @param workspaceRoot The workspace root URI
47
+ * @returns The backup directory URI
48
+ */
49
+ getLocation(workspaceRoot: URI): URI;
50
+ }
51
+ export declare class FileEditBackupServiceImpl implements FileEditBackupService {
52
+ protected readonly fileService: FileService;
53
+ protected readonly workspaceService: WorkspaceService;
54
+ protected readonly logger: ILogger;
55
+ getLocation(workspaceRoot: URI): URI;
56
+ getOriginal(workspaceUri: URI, sessionId: string | undefined): Promise<string | undefined>;
57
+ cleanUp(request: MutableChatRequestModel): Promise<void>;
58
+ }
59
+ //# sourceMappingURL=claude-code-file-edit-backup-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-file-edit-backup-service.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-file-edit-backup-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IAClC;;;;;;;;;OASG;IACH,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3F;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD;;;;;;;;OAQG;IACH,WAAW,CAAC,aAAa,EAAE,GAAG,GAAG,GAAG,CAAC;CACxC;AAED,qBACa,yBAA0B,YAAW,qBAAqB;IAGnE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,WAAW,CAAC,aAAa,EAAE,GAAG,GAAG,GAAG;IAO9B,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0B1F,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBjE"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.FileEditBackupServiceImpl = exports.FileEditBackupService = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const change_set_file_element_1 = require("@theia/ai-chat/lib/browser/change-set-file-element");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
23
+ const browser_1 = require("@theia/workspace/lib/browser");
24
+ const claude_code_chat_agent_1 = require("./claude-code-chat-agent");
25
+ const core_1 = require("@theia/core");
26
+ exports.FileEditBackupService = Symbol('FileEditBackupService');
27
+ let FileEditBackupServiceImpl = class FileEditBackupServiceImpl {
28
+ getLocation(workspaceRoot) {
29
+ // This path structure must match the backup hooks in claude-code-service-impl.ts
30
+ // See ensureFileBackupHook() method which creates backups at:
31
+ // path.join(hookData.cwd, '.claude', '.edit-baks', hookData.session_id)
32
+ return workspaceRoot.resolve('.claude').resolve('.edit-baks');
33
+ }
34
+ async getOriginal(workspaceUri, sessionId) {
35
+ if (!sessionId) {
36
+ return undefined;
37
+ }
38
+ try {
39
+ const workspaceRoot = this.workspaceService.getWorkspaceRootUri(workspaceUri);
40
+ if (!workspaceRoot) {
41
+ return undefined;
42
+ }
43
+ const relativePath = await this.workspaceService.getWorkspaceRelativePath(workspaceUri);
44
+ // This path structure must match the backup hooks in claude-code-service-impl.ts
45
+ const backupPath = this.getLocation(workspaceRoot).resolve(sessionId).resolve(relativePath);
46
+ if (await this.fileService.exists(backupPath)) {
47
+ const backupContent = await this.fileService.read(backupPath);
48
+ return backupContent.value.toString();
49
+ }
50
+ }
51
+ catch (error) {
52
+ this.logger.error('Error reading backup file:', error);
53
+ }
54
+ return undefined;
55
+ }
56
+ async cleanUp(request) {
57
+ const sessionId = request.getDataByKey(claude_code_chat_agent_1.CLAUDE_SESSION_ID_KEY);
58
+ if (!sessionId) {
59
+ return;
60
+ }
61
+ if (request.session.changeSet.getElements().length < 1) {
62
+ return;
63
+ }
64
+ const workspaceUris = new Set();
65
+ request.session.changeSet.getElements()
66
+ .filter((element) => element instanceof change_set_file_element_1.ChangeSetFileElement)
67
+ .map(element => this.workspaceService.getWorkspaceRootUri(element.uri))
68
+ .filter((element) => element !== undefined)
69
+ .forEach(element => workspaceUris.add(element));
70
+ for (const workspaceUri of workspaceUris) {
71
+ const backupLocation = this.getLocation(workspaceUri).resolve(sessionId);
72
+ try {
73
+ await this.fileService.delete(backupLocation, { recursive: true });
74
+ }
75
+ catch (error) {
76
+ // Ignore cleanup errors - not critical
77
+ }
78
+ }
79
+ }
80
+ };
81
+ exports.FileEditBackupServiceImpl = FileEditBackupServiceImpl;
82
+ tslib_1.__decorate([
83
+ (0, inversify_1.inject)(file_service_1.FileService),
84
+ tslib_1.__metadata("design:type", file_service_1.FileService)
85
+ ], FileEditBackupServiceImpl.prototype, "fileService", void 0);
86
+ tslib_1.__decorate([
87
+ (0, inversify_1.inject)(browser_1.WorkspaceService),
88
+ tslib_1.__metadata("design:type", browser_1.WorkspaceService)
89
+ ], FileEditBackupServiceImpl.prototype, "workspaceService", void 0);
90
+ tslib_1.__decorate([
91
+ (0, inversify_1.inject)(core_1.ILogger),
92
+ (0, inversify_1.named)('claude-code'),
93
+ tslib_1.__metadata("design:type", Object)
94
+ ], FileEditBackupServiceImpl.prototype, "logger", void 0);
95
+ exports.FileEditBackupServiceImpl = FileEditBackupServiceImpl = tslib_1.__decorate([
96
+ (0, inversify_1.injectable)()
97
+ ], FileEditBackupServiceImpl);
98
+ //# sourceMappingURL=claude-code-file-edit-backup-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-file-edit-backup-service.js","sourceRoot":"","sources":["../../src/browser/claude-code-file-edit-backup-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ContainerModule } from '@theia/core/shared/inversify';
2
+ import '../../src/browser/style/claude-code-tool-renderers.css';
3
+ declare const _default: ContainerModule;
4
+ export default _default;
5
+ //# sourceMappingURL=claude-code-frontend-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-frontend-module.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,wDAAwD,CAAC;;AAwBhE,wBAqDG"}