@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.
- package/lib/browser/claude-code-chat-agent.d.ts +84 -0
- package/lib/browser/claude-code-chat-agent.d.ts.map +1 -0
- package/lib/browser/claude-code-chat-agent.js +525 -0
- package/lib/browser/claude-code-chat-agent.js.map +1 -0
- package/lib/browser/claude-code-command-contribution.d.ts +16 -0
- package/lib/browser/claude-code-command-contribution.d.ts.map +1 -0
- package/lib/browser/claude-code-command-contribution.js +86 -0
- package/lib/browser/claude-code-command-contribution.js.map +1 -0
- package/lib/browser/claude-code-edit-tool-service.d.ts +63 -0
- package/lib/browser/claude-code-edit-tool-service.d.ts.map +1 -0
- package/lib/browser/claude-code-edit-tool-service.js +225 -0
- package/lib/browser/claude-code-edit-tool-service.js.map +1 -0
- package/lib/browser/claude-code-file-edit-backup-service.d.ts +59 -0
- package/lib/browser/claude-code-file-edit-backup-service.d.ts.map +1 -0
- package/lib/browser/claude-code-file-edit-backup-service.js +98 -0
- package/lib/browser/claude-code-file-edit-backup-service.js.map +1 -0
- package/lib/browser/claude-code-frontend-module.d.ts +5 -0
- package/lib/browser/claude-code-frontend-module.d.ts.map +1 -0
- package/lib/browser/claude-code-frontend-module.js +83 -0
- package/lib/browser/claude-code-frontend-module.js.map +1 -0
- package/lib/browser/claude-code-frontend-service.d.ts +39 -0
- package/lib/browser/claude-code-frontend-service.d.ts.map +1 -0
- package/lib/browser/claude-code-frontend-service.js +189 -0
- package/lib/browser/claude-code-frontend-service.js.map +1 -0
- package/lib/browser/claude-code-slash-commands-contribution.d.ts +34 -0
- package/lib/browser/claude-code-slash-commands-contribution.d.ts.map +1 -0
- package/lib/browser/claude-code-slash-commands-contribution.js +219 -0
- package/lib/browser/claude-code-slash-commands-contribution.js.map +1 -0
- package/lib/browser/claude-code-tool-call-content.d.ts +8 -0
- package/lib/browser/claude-code-tool-call-content.d.ts.map +1 -0
- package/lib/browser/claude-code-tool-call-content.js +30 -0
- package/lib/browser/claude-code-tool-call-content.js.map +1 -0
- package/lib/browser/renderers/bash-tool-renderer.d.ts +10 -0
- package/lib/browser/renderers/bash-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/bash-tool-renderer.js +67 -0
- package/lib/browser/renderers/bash-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/collapsible-tool-renderer.d.ts +13 -0
- package/lib/browser/renderers/collapsible-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/collapsible-tool-renderer.js +48 -0
- package/lib/browser/renderers/collapsible-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/edit-tool-renderer.d.ts +16 -0
- package/lib/browser/renderers/edit-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/edit-tool-renderer.js +135 -0
- package/lib/browser/renderers/edit-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/glob-tool-renderer.d.ts +14 -0
- package/lib/browser/renderers/glob-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/glob-tool-renderer.js +104 -0
- package/lib/browser/renderers/glob-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/grep-tool-renderer.d.ts +14 -0
- package/lib/browser/renderers/grep-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/grep-tool-renderer.js +160 -0
- package/lib/browser/renderers/grep-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/ls-tool-renderer.d.ts +16 -0
- package/lib/browser/renderers/ls-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/ls-tool-renderer.js +116 -0
- package/lib/browser/renderers/ls-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/multiedit-tool-renderer.d.ts +16 -0
- package/lib/browser/renderers/multiedit-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/multiedit-tool-renderer.js +148 -0
- package/lib/browser/renderers/multiedit-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/read-tool-renderer.d.ts +16 -0
- package/lib/browser/renderers/read-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/read-tool-renderer.js +124 -0
- package/lib/browser/renderers/read-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/todo-write-renderer.d.ts +10 -0
- package/lib/browser/renderers/todo-write-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/todo-write-renderer.js +133 -0
- package/lib/browser/renderers/todo-write-renderer.js.map +1 -0
- package/lib/browser/renderers/web-fetch-tool-renderer.d.ts +10 -0
- package/lib/browser/renderers/web-fetch-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/web-fetch-tool-renderer.js +83 -0
- package/lib/browser/renderers/web-fetch-tool-renderer.js.map +1 -0
- package/lib/browser/renderers/write-tool-renderer.d.ts +16 -0
- package/lib/browser/renderers/write-tool-renderer.d.ts.map +1 -0
- package/lib/browser/renderers/write-tool-renderer.js +114 -0
- package/lib/browser/renderers/write-tool-renderer.js.map +1 -0
- package/lib/common/claude-code-preferences.d.ts +5 -0
- package/lib/common/claude-code-preferences.d.ts.map +1 -0
- package/lib/common/claude-code-preferences.js +40 -0
- package/lib/common/claude-code-preferences.js.map +1 -0
- package/lib/common/claude-code-service.d.ts +235 -0
- package/lib/common/claude-code-service.d.ts.map +1 -0
- package/lib/common/claude-code-service.js +82 -0
- package/lib/common/claude-code-service.js.map +1 -0
- package/lib/common/index.d.ts +2 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +20 -0
- package/lib/common/index.js.map +1 -0
- package/lib/node/claude-code-backend-module.d.ts +4 -0
- package/lib/node/claude-code-backend-module.d.ts.map +1 -0
- package/lib/node/claude-code-backend-module.js +35 -0
- package/lib/node/claude-code-backend-module.js.map +1 -0
- package/lib/node/claude-code-service-impl.d.ts +33 -0
- package/lib/node/claude-code-service-impl.d.ts.map +1 -0
- package/lib/node/claude-code-service-impl.js +468 -0
- package/lib/node/claude-code-service-impl.js.map +1 -0
- package/lib/package.spec.d.ts +1 -0
- package/lib/package.spec.d.ts.map +1 -0
- package/lib/package.spec.js +26 -0
- package/lib/package.spec.js.map +1 -0
- package/package.json +10 -10
- package/src/browser/claude-code-chat-agent.ts +17 -10
- package/src/browser/claude-code-edit-tool-service.ts +10 -7
- package/src/browser/claude-code-file-edit-backup-service.ts +6 -2
- package/src/browser/claude-code-slash-commands-contribution.ts +152 -73
|
@@ -0,0 +1,83 @@
|
|
|
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
|
+
const ai_chat_1 = require("@theia/ai-chat");
|
|
19
|
+
const chat_response_part_renderer_1 = require("@theia/ai-chat-ui/lib/browser/chat-response-part-renderer");
|
|
20
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
21
|
+
const core_1 = require("@theia/core");
|
|
22
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
23
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
24
|
+
require("../../src/browser/style/claude-code-tool-renderers.css");
|
|
25
|
+
const claude_code_service_1 = require("../common/claude-code-service");
|
|
26
|
+
const claude_code_preferences_1 = require("../common/claude-code-preferences");
|
|
27
|
+
const claude_code_chat_agent_1 = require("./claude-code-chat-agent");
|
|
28
|
+
const claude_code_edit_tool_service_1 = require("./claude-code-edit-tool-service");
|
|
29
|
+
const claude_code_file_edit_backup_service_1 = require("./claude-code-file-edit-backup-service");
|
|
30
|
+
const claude_code_frontend_service_1 = require("./claude-code-frontend-service");
|
|
31
|
+
const bash_tool_renderer_1 = require("./renderers/bash-tool-renderer");
|
|
32
|
+
const edit_tool_renderer_1 = require("./renderers/edit-tool-renderer");
|
|
33
|
+
const glob_tool_renderer_1 = require("./renderers/glob-tool-renderer");
|
|
34
|
+
const grep_tool_renderer_1 = require("./renderers/grep-tool-renderer");
|
|
35
|
+
const ls_tool_renderer_1 = require("./renderers/ls-tool-renderer");
|
|
36
|
+
const multiedit_tool_renderer_1 = require("./renderers/multiedit-tool-renderer");
|
|
37
|
+
const read_tool_renderer_1 = require("./renderers/read-tool-renderer");
|
|
38
|
+
const todo_write_renderer_1 = require("./renderers/todo-write-renderer");
|
|
39
|
+
const web_fetch_tool_renderer_1 = require("./renderers/web-fetch-tool-renderer");
|
|
40
|
+
const write_tool_renderer_1 = require("./renderers/write-tool-renderer");
|
|
41
|
+
const claude_code_slash_commands_contribution_1 = require("./claude-code-slash-commands-contribution");
|
|
42
|
+
const claude_code_command_contribution_1 = require("./claude-code-command-contribution");
|
|
43
|
+
exports.default = new inversify_1.ContainerModule(bind => {
|
|
44
|
+
bind(core_1.PreferenceContribution).toConstantValue({ schema: claude_code_preferences_1.ClaudeCodePreferencesSchema });
|
|
45
|
+
bind(browser_1.FrontendApplicationContribution).to(claude_code_slash_commands_contribution_1.ClaudeCodeSlashCommandsContribution).inSingletonScope();
|
|
46
|
+
bind(core_1.CommandContribution).to(claude_code_command_contribution_1.ClaudeCodeCommandContribution).inSingletonScope();
|
|
47
|
+
bind(claude_code_frontend_service_1.ClaudeCodeFrontendService).toSelf().inSingletonScope();
|
|
48
|
+
bind(claude_code_frontend_service_1.ClaudeCodeClientImpl).toSelf().inSingletonScope();
|
|
49
|
+
bind(claude_code_service_1.ClaudeCodeClient).toService(claude_code_frontend_service_1.ClaudeCodeClientImpl);
|
|
50
|
+
bind(claude_code_service_1.ClaudeCodeService).toDynamicValue(ctx => {
|
|
51
|
+
const connection = ctx.container.get(browser_1.RemoteConnectionProvider);
|
|
52
|
+
const backendClient = ctx.container.get(claude_code_service_1.ClaudeCodeClient);
|
|
53
|
+
return connection.createProxy(claude_code_service_1.CLAUDE_CODE_SERVICE_PATH, backendClient);
|
|
54
|
+
}).inSingletonScope();
|
|
55
|
+
bind(claude_code_file_edit_backup_service_1.FileEditBackupServiceImpl).toSelf().inSingletonScope();
|
|
56
|
+
bind(claude_code_file_edit_backup_service_1.FileEditBackupService).toService(claude_code_file_edit_backup_service_1.FileEditBackupServiceImpl);
|
|
57
|
+
bind(claude_code_edit_tool_service_1.ClaudeCodeEditToolServiceImpl).toSelf().inSingletonScope();
|
|
58
|
+
bind(claude_code_edit_tool_service_1.ClaudeCodeEditToolService).toService(claude_code_edit_tool_service_1.ClaudeCodeEditToolServiceImpl);
|
|
59
|
+
bind(claude_code_chat_agent_1.ClaudeCodeChatAgent).toSelf().inSingletonScope();
|
|
60
|
+
bind(ai_core_1.Agent).toService(claude_code_chat_agent_1.ClaudeCodeChatAgent);
|
|
61
|
+
bind(ai_chat_1.ChatAgent).toService(claude_code_chat_agent_1.ClaudeCodeChatAgent);
|
|
62
|
+
bind(todo_write_renderer_1.TodoWriteRenderer).toSelf().inSingletonScope();
|
|
63
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(todo_write_renderer_1.TodoWriteRenderer);
|
|
64
|
+
bind(read_tool_renderer_1.ReadToolRenderer).toSelf().inSingletonScope();
|
|
65
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(read_tool_renderer_1.ReadToolRenderer);
|
|
66
|
+
bind(bash_tool_renderer_1.BashToolRenderer).toSelf().inSingletonScope();
|
|
67
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(bash_tool_renderer_1.BashToolRenderer);
|
|
68
|
+
bind(ls_tool_renderer_1.LSToolRenderer).toSelf().inSingletonScope();
|
|
69
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(ls_tool_renderer_1.LSToolRenderer);
|
|
70
|
+
bind(edit_tool_renderer_1.EditToolRenderer).toSelf().inSingletonScope();
|
|
71
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(edit_tool_renderer_1.EditToolRenderer);
|
|
72
|
+
bind(grep_tool_renderer_1.GrepToolRenderer).toSelf().inSingletonScope();
|
|
73
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(grep_tool_renderer_1.GrepToolRenderer);
|
|
74
|
+
bind(glob_tool_renderer_1.GlobToolRenderer).toSelf().inSingletonScope();
|
|
75
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(glob_tool_renderer_1.GlobToolRenderer);
|
|
76
|
+
bind(write_tool_renderer_1.WriteToolRenderer).toSelf().inSingletonScope();
|
|
77
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(write_tool_renderer_1.WriteToolRenderer);
|
|
78
|
+
bind(multiedit_tool_renderer_1.MultiEditToolRenderer).toSelf().inSingletonScope();
|
|
79
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(multiedit_tool_renderer_1.MultiEditToolRenderer);
|
|
80
|
+
bind(web_fetch_tool_renderer_1.WebFetchToolRenderer).toSelf().inSingletonScope();
|
|
81
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).toService(web_fetch_tool_renderer_1.WebFetchToolRenderer);
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=claude-code-frontend-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-frontend-module.js","sourceRoot":"","sources":["../../src/browser/claude-code-frontend-module.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;;AAEhF,4CAA2C;AAC3C,2GAAqG;AACrG,4CAAuC;AACvC,sCAA0E;AAC1E,qDAA+H;AAC/H,4DAA+D;AAC/D,kEAAgE;AAChE,uEAIuC;AACvC,+EAAgF;AAChF,qEAA+D;AAC/D,mFAA2G;AAC3G,iGAA0G;AAC1G,iFAAiG;AACjG,uEAAkE;AAClE,uEAAkE;AAClE,uEAAkE;AAClE,uEAAkE;AAClE,mEAA8D;AAC9D,iFAA4E;AAC5E,uEAAkE;AAClE,yEAAoE;AACpE,iFAA2E;AAC3E,yEAAoE;AACpE,uGAAgG;AAChG,yFAAmF;AAEnF,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,6BAAsB,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,qDAA2B,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,yCAA+B,CAAC,CAAC,EAAE,CAAC,6EAAmC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjG,IAAI,CAAC,0BAAmB,CAAC,CAAC,EAAE,CAAC,gEAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAE/E,IAAI,CAAC,wDAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,mDAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvD,IAAI,CAAC,sCAAgB,CAAC,CAAC,SAAS,CAAC,mDAAoB,CAAC,CAAC;IACvD,IAAI,CAAC,uCAAiB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QACzC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA4B,kCAAwB,CAAC,CAAC;QAC1F,MAAM,aAAa,GAAqB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,sCAAgB,CAAC,CAAC;QAC5E,OAAO,UAAU,CAAC,WAAW,CAAC,8CAAwB,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEtB,IAAI,CAAC,gEAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,4DAAqB,CAAC,CAAC,SAAS,CAAC,gEAAyB,CAAC,CAAC;IAEjE,IAAI,CAAC,6DAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChE,IAAI,CAAC,yDAAyB,CAAC,CAAC,SAAS,CAAC,6DAA6B,CAAC,CAAC;IAEzE,IAAI,CAAC,4CAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,eAAK,CAAC,CAAC,SAAS,CAAC,4CAAmB,CAAC,CAAC;IAC3C,IAAI,CAAC,mBAAS,CAAC,CAAC,SAAS,CAAC,4CAAmB,CAAC,CAAC;IAE/C,IAAI,CAAC,uCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,uCAAiB,CAAC,CAAC;IAE5D,IAAI,CAAC,qCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,qCAAgB,CAAC,CAAC;IAE3D,IAAI,CAAC,qCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,qCAAgB,CAAC,CAAC;IAE3D,IAAI,CAAC,iCAAc,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,iCAAc,CAAC,CAAC;IAEzD,IAAI,CAAC,qCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,qCAAgB,CAAC,CAAC;IAE3D,IAAI,CAAC,qCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,qCAAgB,CAAC,CAAC;IAE3D,IAAI,CAAC,qCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,qCAAgB,CAAC,CAAC;IAE3D,IAAI,CAAC,uCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,uCAAiB,CAAC,CAAC;IAE5D,IAAI,CAAC,+CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,+CAAqB,CAAC,CAAC;IAEhE,IAAI,CAAC,8CAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,8CAAoB,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { CancellationToken, ILogger, PreferenceService } from '@theia/core';
|
|
2
|
+
import { OutputChannel, OutputChannelManager } from '@theia/output/lib/browser/output-channel';
|
|
3
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser';
|
|
4
|
+
import { ClaudeCodeClient, ClaudeCodeRequest, ClaudeCodeService, StreamMessage, ToolApprovalResponseMessage } from '../common/claude-code-service';
|
|
5
|
+
export declare class ClaudeCodeClientImpl implements ClaudeCodeClient {
|
|
6
|
+
protected tokenHandlers: Map<string, (token?: StreamMessage) => void>;
|
|
7
|
+
protected errorHandlers: Map<string, (error: Error) => void>;
|
|
8
|
+
sendToken(streamId: string, token?: StreamMessage): void;
|
|
9
|
+
sendError(streamId: string, error: Error): void;
|
|
10
|
+
registerTokenHandler(streamId: string, handler: (token?: StreamMessage) => void): void;
|
|
11
|
+
registerErrorHandler(streamId: string, handler: (error: Error) => void): void;
|
|
12
|
+
unregisterHandlers(streamId: string): void;
|
|
13
|
+
}
|
|
14
|
+
interface StreamState {
|
|
15
|
+
id: string;
|
|
16
|
+
tokens: (StreamMessage | undefined)[];
|
|
17
|
+
isComplete: boolean;
|
|
18
|
+
hasError: boolean;
|
|
19
|
+
error?: Error;
|
|
20
|
+
pendingResolve?: () => void;
|
|
21
|
+
pendingReject?: (error: Error) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare class ClaudeCodeFrontendService {
|
|
24
|
+
protected claudeCodeBackendService: ClaudeCodeService;
|
|
25
|
+
protected client: ClaudeCodeClientImpl;
|
|
26
|
+
protected readonly workspaceService: WorkspaceService;
|
|
27
|
+
protected preferenceService: PreferenceService;
|
|
28
|
+
protected readonly outputChannelManager: OutputChannelManager;
|
|
29
|
+
protected logger: ILogger;
|
|
30
|
+
protected streams: Map<string, StreamState>;
|
|
31
|
+
send(request: ClaudeCodeRequest, cancellationToken?: CancellationToken): Promise<AsyncIterable<StreamMessage>>;
|
|
32
|
+
protected generateStreamId(): string;
|
|
33
|
+
protected setupStreamHandlers(streamState: StreamState): void;
|
|
34
|
+
protected createAsyncIterable(streamState: StreamState): AsyncIterable<StreamMessage>;
|
|
35
|
+
sendApprovalResponse(response: ToolApprovalResponseMessage): void;
|
|
36
|
+
protected getOutputChannel(): OutputChannel | undefined;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=claude-code-frontend-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-frontend-service.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-frontend-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAgB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG1F,OAAO,EACH,aAAa,EACb,oBAAoB,EAEvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACH,gBAAgB,EAEhB,iBAAiB,EACjB,iBAAiB,EAEjB,aAAa,EACb,2BAA2B,EAC9B,MAAM,+BAA+B,CAAC;AAGvC,qBACa,oBAAqB,YAAW,gBAAgB;IACzD,SAAS,CAAC,aAAa,uBAA4B,aAAa,KAAK,IAAI,EAAI;IAC7E,SAAS,CAAC,aAAa,sBAA2B,KAAK,KAAK,IAAI,EAAI;IAGpE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IAQxD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAO/C,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAItF,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAI7E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAI7C;AAED,UAAU,WAAW;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC1C;AAED,qBACa,yBAAyB;IAGlC,SAAS,CAAC,wBAAwB,EAAE,iBAAiB,CAAC;IAGtD,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAGvC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAG9D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,OAAO,2BAAkC;IAE7C,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAiCpH,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;cA6B5C,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC;IAiC5F,oBAAoB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI;IAKjE,SAAS,CAAC,gBAAgB,IAAI,aAAa,GAAG,SAAS;CAI1D"}
|
|
@@ -0,0 +1,189 @@
|
|
|
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.ClaudeCodeFrontendService = exports.ClaudeCodeClientImpl = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const core_1 = require("@theia/core");
|
|
21
|
+
const file_uri_1 = require("@theia/core/lib/common/file-uri");
|
|
22
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
|
+
const output_channel_1 = require("@theia/output/lib/browser/output-channel");
|
|
24
|
+
const browser_1 = require("@theia/workspace/lib/browser");
|
|
25
|
+
const claude_code_service_1 = require("../common/claude-code-service");
|
|
26
|
+
const claude_code_preferences_1 = require("../common/claude-code-preferences");
|
|
27
|
+
let ClaudeCodeClientImpl = class ClaudeCodeClientImpl {
|
|
28
|
+
constructor() {
|
|
29
|
+
this.tokenHandlers = new Map();
|
|
30
|
+
this.errorHandlers = new Map();
|
|
31
|
+
}
|
|
32
|
+
// invoked by the backend
|
|
33
|
+
sendToken(streamId, token) {
|
|
34
|
+
const handler = this.tokenHandlers.get(streamId);
|
|
35
|
+
if (handler) {
|
|
36
|
+
handler(token);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// invoked by the backend
|
|
40
|
+
sendError(streamId, error) {
|
|
41
|
+
const handler = this.errorHandlers.get(streamId);
|
|
42
|
+
if (handler) {
|
|
43
|
+
handler(error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
registerTokenHandler(streamId, handler) {
|
|
47
|
+
this.tokenHandlers.set(streamId, handler);
|
|
48
|
+
}
|
|
49
|
+
registerErrorHandler(streamId, handler) {
|
|
50
|
+
this.errorHandlers.set(streamId, handler);
|
|
51
|
+
}
|
|
52
|
+
unregisterHandlers(streamId) {
|
|
53
|
+
this.tokenHandlers.delete(streamId);
|
|
54
|
+
this.errorHandlers.delete(streamId);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.ClaudeCodeClientImpl = ClaudeCodeClientImpl;
|
|
58
|
+
exports.ClaudeCodeClientImpl = ClaudeCodeClientImpl = tslib_1.__decorate([
|
|
59
|
+
(0, inversify_1.injectable)()
|
|
60
|
+
], ClaudeCodeClientImpl);
|
|
61
|
+
let ClaudeCodeFrontendService = class ClaudeCodeFrontendService {
|
|
62
|
+
constructor() {
|
|
63
|
+
this.streams = new Map();
|
|
64
|
+
}
|
|
65
|
+
async send(request, cancellationToken) {
|
|
66
|
+
var _a;
|
|
67
|
+
const streamState = {
|
|
68
|
+
id: this.generateStreamId(),
|
|
69
|
+
tokens: [],
|
|
70
|
+
isComplete: false,
|
|
71
|
+
hasError: false
|
|
72
|
+
};
|
|
73
|
+
this.streams.set(streamState.id, streamState);
|
|
74
|
+
this.setupStreamHandlers(streamState);
|
|
75
|
+
cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.onCancellationRequested(() => this.claudeCodeBackendService.cancel(streamState.id));
|
|
76
|
+
const roots = await this.workspaceService.roots;
|
|
77
|
+
const rootsUris = roots.map(root => file_uri_1.FileUri.fsPath(root.resource.toString()));
|
|
78
|
+
const prompt = request.prompt;
|
|
79
|
+
const apiKey = this.preferenceService.get(claude_code_preferences_1.CLAUDE_CODE_API_KEY_PREF, undefined);
|
|
80
|
+
const claudeCodePath = this.preferenceService.get(claude_code_preferences_1.CLAUDE_CODE_EXECUTABLE_PATH_PREF, undefined);
|
|
81
|
+
(_a = this.getOutputChannel()) === null || _a === void 0 ? void 0 : _a.appendLine(JSON.stringify(request, undefined, 2));
|
|
82
|
+
await this.claudeCodeBackendService.send({
|
|
83
|
+
prompt,
|
|
84
|
+
apiKey,
|
|
85
|
+
claudeCodePath,
|
|
86
|
+
options: {
|
|
87
|
+
cwd: rootsUris[0],
|
|
88
|
+
...request.options
|
|
89
|
+
}
|
|
90
|
+
}, streamState.id);
|
|
91
|
+
return this.createAsyncIterable(streamState);
|
|
92
|
+
}
|
|
93
|
+
generateStreamId() {
|
|
94
|
+
return (0, core_1.generateUuid)();
|
|
95
|
+
}
|
|
96
|
+
setupStreamHandlers(streamState) {
|
|
97
|
+
this.client.registerTokenHandler(streamState.id, (token) => {
|
|
98
|
+
var _a;
|
|
99
|
+
if (token === undefined) {
|
|
100
|
+
streamState.isComplete = true;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
(_a = this.getOutputChannel()) === null || _a === void 0 ? void 0 : _a.appendLine(JSON.stringify(token, undefined, 2));
|
|
104
|
+
streamState.tokens.push(token);
|
|
105
|
+
}
|
|
106
|
+
// Resolve any pending iterator
|
|
107
|
+
if (streamState.pendingResolve) {
|
|
108
|
+
streamState.pendingResolve();
|
|
109
|
+
streamState.pendingResolve = undefined;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
this.client.registerErrorHandler(streamState.id, (error) => {
|
|
113
|
+
var _a;
|
|
114
|
+
streamState.hasError = true;
|
|
115
|
+
streamState.error = error;
|
|
116
|
+
(_a = this.getOutputChannel()) === null || _a === void 0 ? void 0 : _a.appendLine(JSON.stringify(error, undefined, 2), output_channel_1.OutputChannelSeverity.Error);
|
|
117
|
+
// Reject any pending iterator
|
|
118
|
+
if (streamState.pendingReject) {
|
|
119
|
+
streamState.pendingReject(error);
|
|
120
|
+
streamState.pendingReject = undefined;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
async *createAsyncIterable(streamState) {
|
|
125
|
+
let currentIndex = 0;
|
|
126
|
+
while (true) {
|
|
127
|
+
// Check for available tokens
|
|
128
|
+
if (currentIndex < streamState.tokens.length) {
|
|
129
|
+
const token = streamState.tokens[currentIndex];
|
|
130
|
+
currentIndex++;
|
|
131
|
+
if (token !== undefined) {
|
|
132
|
+
yield token;
|
|
133
|
+
}
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (streamState.isComplete) {
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
if (streamState.hasError && streamState.error) {
|
|
140
|
+
throw streamState.error;
|
|
141
|
+
}
|
|
142
|
+
// Wait for next token
|
|
143
|
+
await new Promise((resolve, reject) => {
|
|
144
|
+
streamState.pendingResolve = resolve;
|
|
145
|
+
streamState.pendingReject = reject;
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// Cleanup
|
|
149
|
+
this.client.unregisterHandlers(streamState.id);
|
|
150
|
+
this.streams.delete(streamState.id);
|
|
151
|
+
}
|
|
152
|
+
sendApprovalResponse(response) {
|
|
153
|
+
var _a;
|
|
154
|
+
(_a = this.getOutputChannel()) === null || _a === void 0 ? void 0 : _a.appendLine(JSON.stringify(response, undefined, 2));
|
|
155
|
+
this.claudeCodeBackendService.handleApprovalResponse(response);
|
|
156
|
+
}
|
|
157
|
+
getOutputChannel() {
|
|
158
|
+
return this.outputChannelManager.getChannel('Claude Code');
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
exports.ClaudeCodeFrontendService = ClaudeCodeFrontendService;
|
|
162
|
+
tslib_1.__decorate([
|
|
163
|
+
(0, inversify_1.inject)(claude_code_service_1.ClaudeCodeService),
|
|
164
|
+
tslib_1.__metadata("design:type", Object)
|
|
165
|
+
], ClaudeCodeFrontendService.prototype, "claudeCodeBackendService", void 0);
|
|
166
|
+
tslib_1.__decorate([
|
|
167
|
+
(0, inversify_1.inject)(new inversify_1.LazyServiceIdentifier(() => ClaudeCodeClientImpl)),
|
|
168
|
+
tslib_1.__metadata("design:type", ClaudeCodeClientImpl)
|
|
169
|
+
], ClaudeCodeFrontendService.prototype, "client", void 0);
|
|
170
|
+
tslib_1.__decorate([
|
|
171
|
+
(0, inversify_1.inject)(browser_1.WorkspaceService),
|
|
172
|
+
tslib_1.__metadata("design:type", browser_1.WorkspaceService)
|
|
173
|
+
], ClaudeCodeFrontendService.prototype, "workspaceService", void 0);
|
|
174
|
+
tslib_1.__decorate([
|
|
175
|
+
(0, inversify_1.inject)(core_1.PreferenceService),
|
|
176
|
+
tslib_1.__metadata("design:type", Object)
|
|
177
|
+
], ClaudeCodeFrontendService.prototype, "preferenceService", void 0);
|
|
178
|
+
tslib_1.__decorate([
|
|
179
|
+
(0, inversify_1.inject)(output_channel_1.OutputChannelManager),
|
|
180
|
+
tslib_1.__metadata("design:type", output_channel_1.OutputChannelManager)
|
|
181
|
+
], ClaudeCodeFrontendService.prototype, "outputChannelManager", void 0);
|
|
182
|
+
tslib_1.__decorate([
|
|
183
|
+
(0, inversify_1.inject)(core_1.ILogger),
|
|
184
|
+
tslib_1.__metadata("design:type", Object)
|
|
185
|
+
], ClaudeCodeFrontendService.prototype, "logger", void 0);
|
|
186
|
+
exports.ClaudeCodeFrontendService = ClaudeCodeFrontendService = tslib_1.__decorate([
|
|
187
|
+
(0, inversify_1.injectable)()
|
|
188
|
+
], ClaudeCodeFrontendService);
|
|
189
|
+
//# sourceMappingURL=claude-code-frontend-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-frontend-service.js","sourceRoot":"","sources":["../../src/browser/claude-code-frontend-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { PromptService } from '@theia/ai-core/lib/common/prompt-service';
|
|
2
|
+
import { DisposableCollection, ILogger, URI } from '@theia/core';
|
|
3
|
+
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
4
|
+
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
5
|
+
import { FileChangeType } from '@theia/filesystem/lib/common/files';
|
|
6
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser';
|
|
7
|
+
export declare class ClaudeCodeSlashCommandsContribution implements FrontendApplicationContribution {
|
|
8
|
+
private readonly staticCommands;
|
|
9
|
+
protected readonly logger: ILogger;
|
|
10
|
+
protected readonly promptService: PromptService;
|
|
11
|
+
protected readonly workspaceService: WorkspaceService;
|
|
12
|
+
protected readonly fileService: FileService;
|
|
13
|
+
protected readonly toDispose: DisposableCollection;
|
|
14
|
+
protected currentWorkspaceRoot: URI | undefined;
|
|
15
|
+
protected fileWatcherDisposable: DisposableCollection | undefined;
|
|
16
|
+
onStart(): Promise<void>;
|
|
17
|
+
onStop(): void;
|
|
18
|
+
protected registerStaticCommands(): void;
|
|
19
|
+
protected initializeDynamicCommands(): Promise<void>;
|
|
20
|
+
protected registerDynamicCommandsForWorkspace(workspaceRoot: URI): Promise<void>;
|
|
21
|
+
protected registerDynamicCommand(commandsDir: URI, filename: string): Promise<void>;
|
|
22
|
+
protected setupFileWatcher(workspaceRoot: URI): void;
|
|
23
|
+
protected handleFileChange(resource: URI, changeType: FileChangeType, commandsUri: URI): Promise<void>;
|
|
24
|
+
protected handleWorkspaceChange(): Promise<void>;
|
|
25
|
+
protected clearDynamicCommands(): Promise<void>;
|
|
26
|
+
protected getWorkspaceRoot(): URI | undefined;
|
|
27
|
+
protected getCommandsUri(workspaceRoot: URI): URI;
|
|
28
|
+
protected isCommandFile(resource: URI, commandsUri: URI): boolean;
|
|
29
|
+
protected getCommandNameFromFilename(filename: string): string;
|
|
30
|
+
protected getDynamicCommandId(commandName: string): string;
|
|
31
|
+
protected listMarkdownFiles(uri: URI): Promise<string[]>;
|
|
32
|
+
protected listFilesDirectly(uri: URI): Promise<string[]>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=claude-code-slash-commands-contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-slash-commands-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-slash-commands-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAO,GAAG,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAYhE,qBACa,mCAAoC,YAAW,+BAA+B;IAEvF,OAAO,CAAC,QAAQ,CAAC,cAAc,CA6B7B;IAGF,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAC1D,SAAS,CAAC,oBAAoB,EAAE,GAAG,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,qBAAqB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAE5D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,MAAM,IAAI,IAAI;IAId,SAAS,CAAC,sBAAsB,IAAI,IAAI;cAaxB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;cAW1C,mCAAmC,CAAC,aAAa,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;cAStE,sBAAsB,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzF,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;cAyBpC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;cAY5F,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;cAYtC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAcrD,SAAS,CAAC,gBAAgB,IAAI,GAAG,GAAG,SAAS;IAK7C,SAAS,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,GAAG,GAAG;IAIjD,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO;IAIjE,SAAS,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9D,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;cAI1C,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAK9C,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAgBjE"}
|
|
@@ -0,0 +1,219 @@
|
|
|
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.ClaudeCodeSlashCommandsContribution = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const prompt_service_1 = require("@theia/ai-core/lib/common/prompt-service");
|
|
21
|
+
const core_1 = require("@theia/core");
|
|
22
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
|
+
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
24
|
+
const browser_1 = require("@theia/workspace/lib/browser");
|
|
25
|
+
const claude_code_chat_agent_1 = require("./claude-code-chat-agent");
|
|
26
|
+
const CLAUDE_COMMANDS = '.claude/commands';
|
|
27
|
+
const COMMAND_FRAGMENT_PREFIX = 'claude-code-slash-';
|
|
28
|
+
const DYNAMIC_COMMAND_PREFIX = 'claude-code-dynamic-';
|
|
29
|
+
let ClaudeCodeSlashCommandsContribution = class ClaudeCodeSlashCommandsContribution {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.staticCommands = [
|
|
32
|
+
{
|
|
33
|
+
name: 'clear',
|
|
34
|
+
description: core_1.nls.localize('theia/ai/claude-code/clearCommand/description', 'Create a new session'),
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'compact',
|
|
38
|
+
description: core_1.nls.localize('theia/ai/claude-code/compactCommand/description', 'Compact conversation with optional focus instructions'),
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'config',
|
|
42
|
+
description: core_1.nls.localize('theia/ai/claude-code/configCommand/description', 'Open Claude Code Configuration'),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'init',
|
|
46
|
+
description: core_1.nls.localize('theia/ai/claude-code/initCommand/description', 'Initialize project with CLAUDE.md guide'),
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'memory',
|
|
50
|
+
description: core_1.nls.localize('theia/ai/claude-code/memoryCommand/description', 'Edit CLAUDE.md memory file'),
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'review',
|
|
54
|
+
description: core_1.nls.localize('theia/ai/claude-code/reviewCommand/description', 'Request code review'),
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'resume',
|
|
58
|
+
description: core_1.nls.localize('theia/ai/claude-code/resumeCommand/description', 'Resume a session'),
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
this.toDispose = new core_1.DisposableCollection();
|
|
62
|
+
}
|
|
63
|
+
async onStart() {
|
|
64
|
+
this.registerStaticCommands();
|
|
65
|
+
await this.initializeDynamicCommands();
|
|
66
|
+
this.toDispose.push(this.workspaceService.onWorkspaceChanged(() => this.handleWorkspaceChange()));
|
|
67
|
+
}
|
|
68
|
+
onStop() {
|
|
69
|
+
this.toDispose.dispose();
|
|
70
|
+
}
|
|
71
|
+
registerStaticCommands() {
|
|
72
|
+
for (const command of this.staticCommands) {
|
|
73
|
+
this.promptService.addBuiltInPromptFragment({
|
|
74
|
+
id: `${COMMAND_FRAGMENT_PREFIX}${command.name}`,
|
|
75
|
+
template: `/${command.name}`,
|
|
76
|
+
isCommand: true,
|
|
77
|
+
commandName: command.name,
|
|
78
|
+
commandDescription: command.description,
|
|
79
|
+
commandAgents: [claude_code_chat_agent_1.CLAUDE_CHAT_AGENT_ID]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async initializeDynamicCommands() {
|
|
84
|
+
const workspaceRoot = this.getWorkspaceRoot();
|
|
85
|
+
if (!workspaceRoot) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
this.currentWorkspaceRoot = workspaceRoot;
|
|
89
|
+
await this.registerDynamicCommandsForWorkspace(workspaceRoot);
|
|
90
|
+
this.setupFileWatcher(workspaceRoot);
|
|
91
|
+
}
|
|
92
|
+
async registerDynamicCommandsForWorkspace(workspaceRoot) {
|
|
93
|
+
const commandsUri = this.getCommandsUri(workspaceRoot);
|
|
94
|
+
const files = await this.listMarkdownFiles(commandsUri);
|
|
95
|
+
for (const filename of files) {
|
|
96
|
+
await this.registerDynamicCommand(commandsUri, filename);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async registerDynamicCommand(commandsDir, filename) {
|
|
100
|
+
const commandName = this.getCommandNameFromFilename(filename);
|
|
101
|
+
const fileUri = commandsDir.resolve(filename);
|
|
102
|
+
try {
|
|
103
|
+
const content = await this.fileService.read(fileUri);
|
|
104
|
+
this.promptService.addBuiltInPromptFragment({
|
|
105
|
+
id: this.getDynamicCommandId(commandName),
|
|
106
|
+
template: content.value,
|
|
107
|
+
isCommand: true,
|
|
108
|
+
commandName,
|
|
109
|
+
commandAgents: [claude_code_chat_agent_1.CLAUDE_CHAT_AGENT_ID]
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
this.logger.error(`Failed to register Claude Code slash command '${commandName}' from ${fileUri}:`, error);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
setupFileWatcher(workspaceRoot) {
|
|
117
|
+
var _a;
|
|
118
|
+
(_a = this.fileWatcherDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
119
|
+
this.fileWatcherDisposable = new core_1.DisposableCollection();
|
|
120
|
+
const commandsUri = this.getCommandsUri(workspaceRoot);
|
|
121
|
+
this.fileWatcherDisposable.push(this.fileService.onDidFilesChange(async (event) => {
|
|
122
|
+
const relevantChanges = event.changes.filter(change => this.isCommandFile(change.resource, commandsUri));
|
|
123
|
+
if (relevantChanges.length === 0) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
for (const change of relevantChanges) {
|
|
127
|
+
await this.handleFileChange(change.resource, change.type, commandsUri);
|
|
128
|
+
}
|
|
129
|
+
}));
|
|
130
|
+
this.toDispose.push(this.fileWatcherDisposable);
|
|
131
|
+
}
|
|
132
|
+
async handleFileChange(resource, changeType, commandsUri) {
|
|
133
|
+
const filename = resource.path.base;
|
|
134
|
+
const commandName = this.getCommandNameFromFilename(filename);
|
|
135
|
+
const fragmentId = this.getDynamicCommandId(commandName);
|
|
136
|
+
if (changeType === 2 /* FileChangeType.DELETED */) {
|
|
137
|
+
this.promptService.removePromptFragment(fragmentId);
|
|
138
|
+
}
|
|
139
|
+
else if (changeType === 1 /* FileChangeType.ADDED */ || changeType === 0 /* FileChangeType.UPDATED */) {
|
|
140
|
+
await this.registerDynamicCommand(commandsUri, filename);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async handleWorkspaceChange() {
|
|
144
|
+
var _a;
|
|
145
|
+
const newRoot = this.getWorkspaceRoot();
|
|
146
|
+
if (((_a = this.currentWorkspaceRoot) === null || _a === void 0 ? void 0 : _a.toString()) === (newRoot === null || newRoot === void 0 ? void 0 : newRoot.toString())) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
await this.clearDynamicCommands();
|
|
150
|
+
this.currentWorkspaceRoot = newRoot;
|
|
151
|
+
await this.initializeDynamicCommands();
|
|
152
|
+
}
|
|
153
|
+
async clearDynamicCommands() {
|
|
154
|
+
if (!this.currentWorkspaceRoot) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const commandsUri = this.getCommandsUri(this.currentWorkspaceRoot);
|
|
158
|
+
const files = await this.listMarkdownFiles(commandsUri);
|
|
159
|
+
for (const filename of files) {
|
|
160
|
+
const commandName = this.getCommandNameFromFilename(filename);
|
|
161
|
+
this.promptService.removePromptFragment(this.getDynamicCommandId(commandName));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
getWorkspaceRoot() {
|
|
165
|
+
const roots = this.workspaceService.tryGetRoots();
|
|
166
|
+
return roots.length > 0 ? roots[0].resource : undefined;
|
|
167
|
+
}
|
|
168
|
+
getCommandsUri(workspaceRoot) {
|
|
169
|
+
return workspaceRoot.resolve(CLAUDE_COMMANDS);
|
|
170
|
+
}
|
|
171
|
+
isCommandFile(resource, commandsUri) {
|
|
172
|
+
return resource.toString().startsWith(commandsUri.toString()) && resource.path.ext === '.md';
|
|
173
|
+
}
|
|
174
|
+
getCommandNameFromFilename(filename) {
|
|
175
|
+
return filename.replace(/\.md$/, '');
|
|
176
|
+
}
|
|
177
|
+
getDynamicCommandId(commandName) {
|
|
178
|
+
return `${DYNAMIC_COMMAND_PREFIX}${commandName}`;
|
|
179
|
+
}
|
|
180
|
+
async listMarkdownFiles(uri) {
|
|
181
|
+
const allFiles = await this.listFilesDirectly(uri);
|
|
182
|
+
return allFiles.filter(file => file.endsWith('.md'));
|
|
183
|
+
}
|
|
184
|
+
async listFilesDirectly(uri) {
|
|
185
|
+
const result = [];
|
|
186
|
+
if (!await this.fileService.exists(uri)) {
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
const stat = await this.fileService.resolve(uri);
|
|
190
|
+
if (stat && stat.isDirectory && stat.children) {
|
|
191
|
+
for (const child of stat.children) {
|
|
192
|
+
result.push(child.resource.path.base);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
exports.ClaudeCodeSlashCommandsContribution = ClaudeCodeSlashCommandsContribution;
|
|
199
|
+
tslib_1.__decorate([
|
|
200
|
+
(0, inversify_1.inject)(core_1.ILogger),
|
|
201
|
+
(0, inversify_1.named)('claude-code'),
|
|
202
|
+
tslib_1.__metadata("design:type", Object)
|
|
203
|
+
], ClaudeCodeSlashCommandsContribution.prototype, "logger", void 0);
|
|
204
|
+
tslib_1.__decorate([
|
|
205
|
+
(0, inversify_1.inject)(prompt_service_1.PromptService),
|
|
206
|
+
tslib_1.__metadata("design:type", Object)
|
|
207
|
+
], ClaudeCodeSlashCommandsContribution.prototype, "promptService", void 0);
|
|
208
|
+
tslib_1.__decorate([
|
|
209
|
+
(0, inversify_1.inject)(browser_1.WorkspaceService),
|
|
210
|
+
tslib_1.__metadata("design:type", browser_1.WorkspaceService)
|
|
211
|
+
], ClaudeCodeSlashCommandsContribution.prototype, "workspaceService", void 0);
|
|
212
|
+
tslib_1.__decorate([
|
|
213
|
+
(0, inversify_1.inject)(file_service_1.FileService),
|
|
214
|
+
tslib_1.__metadata("design:type", file_service_1.FileService)
|
|
215
|
+
], ClaudeCodeSlashCommandsContribution.prototype, "fileService", void 0);
|
|
216
|
+
exports.ClaudeCodeSlashCommandsContribution = ClaudeCodeSlashCommandsContribution = tslib_1.__decorate([
|
|
217
|
+
(0, inversify_1.injectable)()
|
|
218
|
+
], ClaudeCodeSlashCommandsContribution);
|
|
219
|
+
//# sourceMappingURL=claude-code-slash-commands-contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-slash-commands-contribution.js","sourceRoot":"","sources":["../../src/browser/claude-code-slash-commands-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ToolCallChatResponseContentImpl } from '@theia/ai-chat/lib/common';
|
|
2
|
+
import { ToolCallResult } from '@theia/ai-core';
|
|
3
|
+
export declare class ClaudeCodeToolCallChatResponseContent extends ToolCallChatResponseContentImpl {
|
|
4
|
+
static readonly type = "claude-code-tool-call";
|
|
5
|
+
constructor(id?: string, name?: string, arg_string?: string, finished?: boolean, result?: ToolCallResult);
|
|
6
|
+
static is(content: unknown): content is ClaudeCodeToolCallChatResponseContent;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=claude-code-tool-call-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-tool-call-content.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-tool-call-content.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,qBAAa,qCAAsC,SAAQ,+BAA+B;IACtF,MAAM,CAAC,QAAQ,CAAC,IAAI,2BAA2B;gBAEnC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc;IAIxG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,qCAAqC;CAGhF"}
|