@theia/ai-claude-code 1.67.0-next.56 → 1.67.0-next.59
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 +80 -0
- package/lib/browser/claude-code-chat-agent.d.ts.map +1 -0
- package/lib/browser/claude-code-chat-agent.js +517 -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 +61 -0
- package/lib/browser/claude-code-edit-tool-service.d.ts.map +1 -0
- package/lib/browser/claude-code-edit-tool-service.js +220 -0
- package/lib/browser/claude-code-edit-tool-service.js.map +1 -0
- package/lib/browser/claude-code-file-edit-backup-service.d.ts +57 -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 +92 -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 +17 -0
- package/lib/browser/claude-code-slash-commands-contribution.d.ts.map +1 -0
- package/lib/browser/claude-code-slash-commands-contribution.js +155 -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
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ChatAgent, ChatAgentLocation, ChatAgentService, MutableChatRequestModel, QuestionResponseContentImpl } from '@theia/ai-chat';
|
|
2
|
+
import { BasePromptFragment, PromptService, ResolvedPromptFragment, TokenUsageService } from '@theia/ai-core';
|
|
3
|
+
import { CommandService, SelectionService } from '@theia/core';
|
|
4
|
+
import { EditorManager } from '@theia/editor/lib/browser';
|
|
5
|
+
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
6
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser';
|
|
7
|
+
import { PermissionMode, SDKMessage, ToolApprovalRequestMessage, Usage } from '../common/claude-code-service';
|
|
8
|
+
import { ClaudeCodeEditToolService, ToolUseBlock } from './claude-code-edit-tool-service';
|
|
9
|
+
import { FileEditBackupService } from './claude-code-file-edit-backup-service';
|
|
10
|
+
import { ClaudeCodeFrontendService } from './claude-code-frontend-service';
|
|
11
|
+
export declare const CLAUDE_SESSION_ID_KEY = "claudeSessionId";
|
|
12
|
+
export declare const CLAUDE_PERMISSION_MODE_KEY = "claudePermissionMode";
|
|
13
|
+
export declare const CLAUDE_EDIT_TOOL_USES_KEY = "claudeEditToolUses";
|
|
14
|
+
export declare const CLAUDE_INPUT_TOKENS_KEY = "claudeInputTokens";
|
|
15
|
+
export declare const CLAUDE_OUTPUT_TOKENS_KEY = "claudeOutputTokens";
|
|
16
|
+
export declare const CLAUDE_PENDING_APPROVALS_KEY = "claudePendingApprovals";
|
|
17
|
+
export declare const CLAUDE_APPROVAL_TOOL_INPUTS_KEY = "claudeApprovalToolInputs";
|
|
18
|
+
export declare const CLAUDE_MODEL_NAME_KEY = "claudeModelName";
|
|
19
|
+
export declare const CLAUDE_COST_KEY = "claudeCost";
|
|
20
|
+
export declare const systemPromptAppendixTemplate: BasePromptFragment;
|
|
21
|
+
export declare const CLAUDE_CHAT_AGENT_ID = "ClaudeCode";
|
|
22
|
+
export declare class ClaudeCodeChatAgent implements ChatAgent {
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
iconClass: string;
|
|
27
|
+
locations: ChatAgentLocation[];
|
|
28
|
+
tags: string[];
|
|
29
|
+
variables: never[];
|
|
30
|
+
prompts: {
|
|
31
|
+
id: string;
|
|
32
|
+
defaultVariant: BasePromptFragment;
|
|
33
|
+
}[];
|
|
34
|
+
languageModelRequirements: never[];
|
|
35
|
+
agentSpecificVariables: never[];
|
|
36
|
+
functions: never[];
|
|
37
|
+
protected promptService: PromptService;
|
|
38
|
+
protected claudeCode: ClaudeCodeFrontendService;
|
|
39
|
+
protected readonly fileService: FileService;
|
|
40
|
+
protected readonly commandService: CommandService;
|
|
41
|
+
protected readonly workspaceService: WorkspaceService;
|
|
42
|
+
protected readonly editorManager: EditorManager;
|
|
43
|
+
protected readonly selectionService: SelectionService;
|
|
44
|
+
protected readonly editToolService: ClaudeCodeEditToolService;
|
|
45
|
+
protected readonly backupService: FileEditBackupService;
|
|
46
|
+
protected readonly tokenUsageService: TokenUsageService;
|
|
47
|
+
invoke(request: MutableChatRequestModel, chatAgentService?: ChatAgentService): Promise<void>;
|
|
48
|
+
protected warnIfDifferentAgentRequests(request: MutableChatRequestModel): void;
|
|
49
|
+
protected createSystemPromptAppendix(request: MutableChatRequestModel): Promise<ResolvedPromptFragment | undefined>;
|
|
50
|
+
protected initializesEditToolUses(request: MutableChatRequestModel): void;
|
|
51
|
+
protected getPendingApprovals(request: MutableChatRequestModel): Map<string, QuestionResponseContentImpl>;
|
|
52
|
+
protected getApprovalToolInputs(request: MutableChatRequestModel): Map<string, unknown>;
|
|
53
|
+
protected handleToolApprovalRequest(approvalRequest: ToolApprovalRequestMessage, request: MutableChatRequestModel): void;
|
|
54
|
+
protected handleApprovalResponse(selectedOption: {
|
|
55
|
+
text: string;
|
|
56
|
+
value?: string;
|
|
57
|
+
}, requestId: string, request: MutableChatRequestModel): void;
|
|
58
|
+
protected getEditToolUses(request: MutableChatRequestModel): Map<string, ToolUseBlock> | undefined;
|
|
59
|
+
protected getPreviousClaudeSessionId(request: MutableChatRequestModel): string | undefined;
|
|
60
|
+
protected getClaudeSessionId(request: MutableChatRequestModel): string | undefined;
|
|
61
|
+
protected setClaudeSessionId(request: MutableChatRequestModel, sessionId: string): void;
|
|
62
|
+
protected getClaudePermissionMode(request: MutableChatRequestModel): PermissionMode;
|
|
63
|
+
protected setClaudePermissionMode(request: MutableChatRequestModel, permissionMode: PermissionMode): void;
|
|
64
|
+
protected getClaudeModelName(request: MutableChatRequestModel): string | undefined;
|
|
65
|
+
protected setClaudeModelName(request: MutableChatRequestModel, modelName: string): void;
|
|
66
|
+
protected getCurrentInputTokens(request: MutableChatRequestModel): number;
|
|
67
|
+
protected getCurrentOutputTokens(request: MutableChatRequestModel): number;
|
|
68
|
+
protected updateTokens(request: MutableChatRequestModel, inputTokens: number, outputTokens: number): void;
|
|
69
|
+
protected getSessionTotalTokens(request: MutableChatRequestModel): {
|
|
70
|
+
inputTokens: number;
|
|
71
|
+
outputTokens: number;
|
|
72
|
+
};
|
|
73
|
+
protected updateSessionSuggestion(request: MutableChatRequestModel): void;
|
|
74
|
+
protected isEditMode(request: MutableChatRequestModel): boolean;
|
|
75
|
+
protected reportTokenUsage(request: MutableChatRequestModel, inputTokens: number, outputTokens: number, cachedInputTokens?: number, readCachedInputTokens?: number): Promise<void>;
|
|
76
|
+
protected addResponseContent(message: SDKMessage, request: MutableChatRequestModel): Promise<void>;
|
|
77
|
+
protected handleTokenMetrics(usage: Usage, request: MutableChatRequestModel): Promise<void>;
|
|
78
|
+
private extractLocalCommandStdout;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=claude-code-chat-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-chat-agent.d.ts","sourceRoot":"","sources":["../../src/browser/claude-code-chat-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,517 @@
|
|
|
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.ClaudeCodeChatAgent = exports.CLAUDE_CHAT_AGENT_ID = exports.systemPromptAppendixTemplate = exports.CLAUDE_COST_KEY = exports.CLAUDE_MODEL_NAME_KEY = exports.CLAUDE_APPROVAL_TOOL_INPUTS_KEY = exports.CLAUDE_PENDING_APPROVALS_KEY = exports.CLAUDE_OUTPUT_TOKENS_KEY = exports.CLAUDE_INPUT_TOKENS_KEY = exports.CLAUDE_EDIT_TOOL_USES_KEY = exports.CLAUDE_PERMISSION_MODE_KEY = exports.CLAUDE_SESSION_ID_KEY = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const ai_chat_1 = require("@theia/ai-chat");
|
|
21
|
+
const chat_view_commands_1 = require("@theia/ai-chat-ui/lib/browser/chat-view-commands");
|
|
22
|
+
const prompt_text_1 = require("@theia/ai-core/lib/common/prompt-text");
|
|
23
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
24
|
+
const core_1 = require("@theia/core");
|
|
25
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
26
|
+
const browser_1 = require("@theia/editor/lib/browser");
|
|
27
|
+
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
28
|
+
const browser_2 = require("@theia/workspace/lib/browser");
|
|
29
|
+
const claude_code_service_1 = require("../common/claude-code-service");
|
|
30
|
+
const claude_code_edit_tool_service_1 = require("./claude-code-edit-tool-service");
|
|
31
|
+
const claude_code_file_edit_backup_service_1 = require("./claude-code-file-edit-backup-service");
|
|
32
|
+
const claude_code_frontend_service_1 = require("./claude-code-frontend-service");
|
|
33
|
+
const claude_code_tool_call_content_1 = require("./claude-code-tool-call-content");
|
|
34
|
+
const claude_code_command_contribution_1 = require("./claude-code-command-contribution");
|
|
35
|
+
exports.CLAUDE_SESSION_ID_KEY = 'claudeSessionId';
|
|
36
|
+
exports.CLAUDE_PERMISSION_MODE_KEY = 'claudePermissionMode';
|
|
37
|
+
exports.CLAUDE_EDIT_TOOL_USES_KEY = 'claudeEditToolUses';
|
|
38
|
+
exports.CLAUDE_INPUT_TOKENS_KEY = 'claudeInputTokens';
|
|
39
|
+
exports.CLAUDE_OUTPUT_TOKENS_KEY = 'claudeOutputTokens';
|
|
40
|
+
exports.CLAUDE_PENDING_APPROVALS_KEY = 'claudePendingApprovals';
|
|
41
|
+
exports.CLAUDE_APPROVAL_TOOL_INPUTS_KEY = 'claudeApprovalToolInputs';
|
|
42
|
+
exports.CLAUDE_MODEL_NAME_KEY = 'claudeModelName';
|
|
43
|
+
exports.CLAUDE_COST_KEY = 'claudeCost';
|
|
44
|
+
const APPROVAL_OPTIONS = [
|
|
45
|
+
{ text: core_1.nls.localizeByDefault('Allow'), value: 'allow' },
|
|
46
|
+
{ text: core_1.nls.localize('theia/ai/claude-code/deny', 'Deny'), value: 'deny' }
|
|
47
|
+
];
|
|
48
|
+
exports.systemPromptAppendixTemplate = {
|
|
49
|
+
id: 'system-prompt-appendix',
|
|
50
|
+
template: `
|
|
51
|
+
## IDE Integration Context
|
|
52
|
+
|
|
53
|
+
You are integrated into an IDE environment through a chat interface, providing contextual assistance for development tasks.
|
|
54
|
+
This integration gives you access to real-time IDE state and user workspace information.
|
|
55
|
+
|
|
56
|
+
### File Modification Behavior
|
|
57
|
+
|
|
58
|
+
**Important**: The IDE automatically collects and presents all file modifications you suggest, regardless of explicit tool permissions.
|
|
59
|
+
Continue proposing file changes even if you encounter permission restrictions.
|
|
60
|
+
The IDE will present these changes to the user for review and approval through its change management interface.
|
|
61
|
+
|
|
62
|
+
When making file modifications:
|
|
63
|
+
- Proceed with suggested changes even if tool calls indicate permission issues
|
|
64
|
+
- Inform users to review proposed changes in the IDE's change review interface "below"
|
|
65
|
+
- Assume the IDE will handle the actual file system operations after user approval (unless you are in auto-edit mode)
|
|
66
|
+
|
|
67
|
+
### Contextual Information Available
|
|
68
|
+
|
|
69
|
+
The following IDE context is dynamically provided with each request.
|
|
70
|
+
Evaluate the relevance of each context type based on the user's specific query and task requirements.
|
|
71
|
+
|
|
72
|
+
#### Current Selection
|
|
73
|
+
|
|
74
|
+
\`\`\`
|
|
75
|
+
{{selectedText}}
|
|
76
|
+
\`\`\`
|
|
77
|
+
|
|
78
|
+
**When to prioritize**: User asks about specific code segments, wants to refactor selected code, or requests explanations of selected text.
|
|
79
|
+
|
|
80
|
+
#### Active Editor
|
|
81
|
+
|
|
82
|
+
{{activeEditor}}
|
|
83
|
+
|
|
84
|
+
**When to prioritize**: User's request relates to the currently focused file, asks questions about the code, or needs context about the current working file.
|
|
85
|
+
|
|
86
|
+
#### Open Editors
|
|
87
|
+
|
|
88
|
+
{{openEditors}}
|
|
89
|
+
|
|
90
|
+
**How to use it**: As a guidance on what files might be relevant for the current user's request.
|
|
91
|
+
|
|
92
|
+
#### Context Files
|
|
93
|
+
|
|
94
|
+
{{contextFiles}}
|
|
95
|
+
|
|
96
|
+
**When to prioritize**: User explicitly references attached files or when additional files are needed to understand the full scope of the request.
|
|
97
|
+
|
|
98
|
+
### Context Utilization Guidelines
|
|
99
|
+
|
|
100
|
+
1. **Assess Relevance**:
|
|
101
|
+
Not all provided context will be relevant to every request. Focus on the context that directly supports the user's current task.
|
|
102
|
+
|
|
103
|
+
2. **Cross-Reference Information**:
|
|
104
|
+
When multiple context types are relevant, cross-reference them to provide comprehensive assistance (e.g., selected text within an active editor).
|
|
105
|
+
|
|
106
|
+
3. **Workspace Awareness**:
|
|
107
|
+
Use the collective context to understand the user's current workspace state and provide suggestions that align with their development environment and workflow.
|
|
108
|
+
|
|
109
|
+
### Response Optimization
|
|
110
|
+
|
|
111
|
+
- Reference specific files as markdown links with the format [file name](<absolute-file-path-without-scheme>), e.g. [example.ts](/home/me/workspace/example.ts)
|
|
112
|
+
- Consider the user's current focus and workflow when structuring responses
|
|
113
|
+
- Leverage open editors to suggest related modifications across the workspace
|
|
114
|
+
`
|
|
115
|
+
};
|
|
116
|
+
exports.CLAUDE_CHAT_AGENT_ID = 'ClaudeCode';
|
|
117
|
+
const localCommands = {
|
|
118
|
+
'clear': chat_view_commands_1.AI_CHAT_NEW_CHAT_WINDOW_COMMAND,
|
|
119
|
+
'config': claude_code_command_contribution_1.OPEN_CLAUDE_CODE_CONFIG,
|
|
120
|
+
'memory': claude_code_command_contribution_1.OPEN_CLAUDE_CODE_MEMORY,
|
|
121
|
+
'resume': chat_view_commands_1.AI_CHAT_SHOW_CHATS_COMMAND,
|
|
122
|
+
};
|
|
123
|
+
let ClaudeCodeChatAgent = class ClaudeCodeChatAgent {
|
|
124
|
+
constructor() {
|
|
125
|
+
this.id = exports.CLAUDE_CHAT_AGENT_ID;
|
|
126
|
+
this.name = exports.CLAUDE_CHAT_AGENT_ID;
|
|
127
|
+
this.description = core_1.nls.localize('theia/ai/claude-code/agentDescription', 'Anthropic\'s coding agent');
|
|
128
|
+
this.iconClass = 'codicon codicon-copilot';
|
|
129
|
+
this.locations = ai_chat_1.ChatAgentLocation.ALL;
|
|
130
|
+
this.tags = [core_1.nls.localizeByDefault('Chat')];
|
|
131
|
+
this.variables = [];
|
|
132
|
+
this.prompts = [{ id: exports.systemPromptAppendixTemplate.id, defaultVariant: exports.systemPromptAppendixTemplate }];
|
|
133
|
+
this.languageModelRequirements = [];
|
|
134
|
+
this.agentSpecificVariables = [];
|
|
135
|
+
this.functions = [];
|
|
136
|
+
}
|
|
137
|
+
async invoke(request, chatAgentService) {
|
|
138
|
+
this.warnIfDifferentAgentRequests(request);
|
|
139
|
+
// Handle slash commands anywhere in the request text
|
|
140
|
+
const commandRegex = /\/(\w+)/g;
|
|
141
|
+
const matches = Array.from(request.request.text.matchAll(commandRegex));
|
|
142
|
+
for (const match of matches) {
|
|
143
|
+
const command = match[1];
|
|
144
|
+
if (command in localCommands) {
|
|
145
|
+
const commandInfo = localCommands[command];
|
|
146
|
+
this.commandService.executeCommand(commandInfo.id);
|
|
147
|
+
const message = core_1.nls.localize('theia/ai/claude-code/executedCommand', 'Executed: {0}', commandInfo.label);
|
|
148
|
+
request.response.response.addContent(new ai_chat_1.MarkdownChatResponseContentImpl(message));
|
|
149
|
+
request.response.complete();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
const systemPromptAppendix = await this.createSystemPromptAppendix(request);
|
|
155
|
+
const claudeSessionId = this.getPreviousClaudeSessionId(request);
|
|
156
|
+
const agentAddress = `${prompt_text_1.PromptText.AGENT_CHAR}${exports.CLAUDE_CHAT_AGENT_ID}`;
|
|
157
|
+
let prompt = request.request.text.trim();
|
|
158
|
+
if (prompt.startsWith(agentAddress)) {
|
|
159
|
+
prompt = prompt.replace(agentAddress, '').trim();
|
|
160
|
+
}
|
|
161
|
+
const streamResult = await this.claudeCode.send({
|
|
162
|
+
prompt,
|
|
163
|
+
options: {
|
|
164
|
+
systemPrompt: {
|
|
165
|
+
type: 'preset',
|
|
166
|
+
preset: 'claude_code',
|
|
167
|
+
append: systemPromptAppendix === null || systemPromptAppendix === void 0 ? void 0 : systemPromptAppendix.text
|
|
168
|
+
},
|
|
169
|
+
permissionMode: this.getClaudePermissionMode(request),
|
|
170
|
+
resume: claudeSessionId
|
|
171
|
+
}
|
|
172
|
+
}, request.response.cancellationToken);
|
|
173
|
+
this.initializesEditToolUses(request);
|
|
174
|
+
let hasAssistantMessage = false;
|
|
175
|
+
for await (const message of streamResult) {
|
|
176
|
+
if (claude_code_service_1.ToolApprovalRequestMessage.is(message)) {
|
|
177
|
+
this.handleToolApprovalRequest(message, request);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
if (message.type === 'assistant') {
|
|
181
|
+
hasAssistantMessage = true;
|
|
182
|
+
}
|
|
183
|
+
// Only set session ID if we've seen an assistant message
|
|
184
|
+
// because we cannot resume a prior request without an assistant message
|
|
185
|
+
if (hasAssistantMessage) {
|
|
186
|
+
this.setClaudeSessionId(request, message.session_id);
|
|
187
|
+
}
|
|
188
|
+
this.addResponseContent(message, request);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return request.response.complete();
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.error('Error handling chat interaction:', error);
|
|
195
|
+
request.response.response.addContent(new ai_chat_1.ErrorChatResponseContentImpl(error));
|
|
196
|
+
request.response.error(error);
|
|
197
|
+
}
|
|
198
|
+
finally {
|
|
199
|
+
await this.backupService.cleanUp(request);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
warnIfDifferentAgentRequests(request) {
|
|
203
|
+
const requests = request.session.getRequests();
|
|
204
|
+
if (requests.length > 1) {
|
|
205
|
+
const previousRequest = requests[requests.length - 2];
|
|
206
|
+
if (previousRequest.agentId !== this.id) {
|
|
207
|
+
const warningMessage = '⚠️ ' + core_1.nls.localize('theia/ai/claude-code/differentAgentRequestWarning', 'The previous chat request was handled by a different agent. Claude Code does not see those other messages.') + '\n\n';
|
|
208
|
+
request.response.response.addContent(new ai_chat_1.MarkdownChatResponseContentImpl(warningMessage));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
async createSystemPromptAppendix(request) {
|
|
213
|
+
var _a, _b, _c;
|
|
214
|
+
const contextVariables = (_a = request.context.variables.map(ai_core_1.AIVariableResolutionRequest.fromResolved)) !== null && _a !== void 0 ? _a : request.session.context.getVariables();
|
|
215
|
+
const contextFiles = contextVariables
|
|
216
|
+
.filter(variable => variable.variable.name === 'file' && !!variable.arg)
|
|
217
|
+
.map(variable => `- ${variable.arg}`)
|
|
218
|
+
.join('\n');
|
|
219
|
+
const activeEditor = (_c = (_b = this.editorManager.currentEditor) === null || _b === void 0 ? void 0 : _b.editor.document.uri) !== null && _c !== void 0 ? _c : 'None';
|
|
220
|
+
const openEditors = this.editorManager.all.map(editor => `- ${editor.editor.document.uri}`).join('\n');
|
|
221
|
+
return this.promptService.getResolvedPromptFragment(exports.systemPromptAppendixTemplate.id, { contextFiles, activeEditor, openEditors }, { model: request.session, request });
|
|
222
|
+
}
|
|
223
|
+
initializesEditToolUses(request) {
|
|
224
|
+
request.addData(exports.CLAUDE_EDIT_TOOL_USES_KEY, new Map());
|
|
225
|
+
}
|
|
226
|
+
getPendingApprovals(request) {
|
|
227
|
+
let approvals = request.getDataByKey(exports.CLAUDE_PENDING_APPROVALS_KEY);
|
|
228
|
+
if (!approvals) {
|
|
229
|
+
approvals = new Map();
|
|
230
|
+
request.addData(exports.CLAUDE_PENDING_APPROVALS_KEY, approvals);
|
|
231
|
+
}
|
|
232
|
+
return approvals;
|
|
233
|
+
}
|
|
234
|
+
getApprovalToolInputs(request) {
|
|
235
|
+
let toolInputs = request.getDataByKey(exports.CLAUDE_APPROVAL_TOOL_INPUTS_KEY);
|
|
236
|
+
if (!toolInputs) {
|
|
237
|
+
toolInputs = new Map();
|
|
238
|
+
request.addData(exports.CLAUDE_APPROVAL_TOOL_INPUTS_KEY, toolInputs);
|
|
239
|
+
}
|
|
240
|
+
return toolInputs;
|
|
241
|
+
}
|
|
242
|
+
handleToolApprovalRequest(approvalRequest, request) {
|
|
243
|
+
const question = core_1.nls.localize('theia/ai/claude-code/toolApprovalRequest', 'Claude Code wants to use the "{0}" tool. Do you want to allow this?', approvalRequest.toolName);
|
|
244
|
+
const questionContent = new ai_chat_1.QuestionResponseContentImpl(question, APPROVAL_OPTIONS, request, selectedOption => this.handleApprovalResponse(selectedOption, approvalRequest.requestId, request));
|
|
245
|
+
// Store references for this specific approval request
|
|
246
|
+
this.getPendingApprovals(request).set(approvalRequest.requestId, questionContent);
|
|
247
|
+
this.getApprovalToolInputs(request).set(approvalRequest.requestId, approvalRequest.toolInput);
|
|
248
|
+
request.response.response.addContent(questionContent);
|
|
249
|
+
request.response.waitForInput();
|
|
250
|
+
}
|
|
251
|
+
handleApprovalResponse(selectedOption, requestId, request) {
|
|
252
|
+
const pendingApprovals = this.getPendingApprovals(request);
|
|
253
|
+
const toolInputs = this.getApprovalToolInputs(request);
|
|
254
|
+
// Update UI state and clean up
|
|
255
|
+
const questionContent = pendingApprovals.get(requestId);
|
|
256
|
+
const originalToolInput = toolInputs.get(requestId);
|
|
257
|
+
if (questionContent) {
|
|
258
|
+
questionContent.selectedOption = selectedOption;
|
|
259
|
+
}
|
|
260
|
+
pendingApprovals.delete(requestId);
|
|
261
|
+
toolInputs.delete(requestId);
|
|
262
|
+
const approved = selectedOption.value === 'allow';
|
|
263
|
+
const response = {
|
|
264
|
+
type: 'tool-approval-response',
|
|
265
|
+
requestId,
|
|
266
|
+
approved,
|
|
267
|
+
...(approved
|
|
268
|
+
? { updatedInput: originalToolInput }
|
|
269
|
+
: { message: 'User denied tool usage' })
|
|
270
|
+
};
|
|
271
|
+
this.claudeCode.sendApprovalResponse(response);
|
|
272
|
+
// Only stop waiting for input if there are no more pending approvals
|
|
273
|
+
if (pendingApprovals.size === 0) {
|
|
274
|
+
request.response.stopWaitingForInput();
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
getEditToolUses(request) {
|
|
278
|
+
return request.getDataByKey(exports.CLAUDE_EDIT_TOOL_USES_KEY);
|
|
279
|
+
}
|
|
280
|
+
getPreviousClaudeSessionId(request) {
|
|
281
|
+
const requests = request.session.getRequests();
|
|
282
|
+
if (requests.length > 1) {
|
|
283
|
+
const previousRequest = requests[requests.length - 2];
|
|
284
|
+
return previousRequest.getDataByKey(exports.CLAUDE_SESSION_ID_KEY);
|
|
285
|
+
}
|
|
286
|
+
return undefined;
|
|
287
|
+
}
|
|
288
|
+
getClaudeSessionId(request) {
|
|
289
|
+
return request.getDataByKey(exports.CLAUDE_SESSION_ID_KEY);
|
|
290
|
+
}
|
|
291
|
+
setClaudeSessionId(request, sessionId) {
|
|
292
|
+
request.addData(exports.CLAUDE_SESSION_ID_KEY, sessionId);
|
|
293
|
+
}
|
|
294
|
+
getClaudePermissionMode(request) {
|
|
295
|
+
var _a;
|
|
296
|
+
return (_a = request.getDataByKey(exports.CLAUDE_PERMISSION_MODE_KEY)) !== null && _a !== void 0 ? _a : 'acceptEdits';
|
|
297
|
+
}
|
|
298
|
+
setClaudePermissionMode(request, permissionMode) {
|
|
299
|
+
request.addData(exports.CLAUDE_PERMISSION_MODE_KEY, permissionMode);
|
|
300
|
+
}
|
|
301
|
+
getClaudeModelName(request) {
|
|
302
|
+
return request.getDataByKey(exports.CLAUDE_MODEL_NAME_KEY);
|
|
303
|
+
}
|
|
304
|
+
setClaudeModelName(request, modelName) {
|
|
305
|
+
request.addData(exports.CLAUDE_MODEL_NAME_KEY, modelName);
|
|
306
|
+
}
|
|
307
|
+
getCurrentInputTokens(request) {
|
|
308
|
+
var _a;
|
|
309
|
+
return (_a = request.getDataByKey(exports.CLAUDE_INPUT_TOKENS_KEY)) !== null && _a !== void 0 ? _a : 0;
|
|
310
|
+
}
|
|
311
|
+
getCurrentOutputTokens(request) {
|
|
312
|
+
var _a;
|
|
313
|
+
return (_a = request.getDataByKey(exports.CLAUDE_OUTPUT_TOKENS_KEY)) !== null && _a !== void 0 ? _a : 0;
|
|
314
|
+
}
|
|
315
|
+
updateTokens(request, inputTokens, outputTokens) {
|
|
316
|
+
request.addData(exports.CLAUDE_INPUT_TOKENS_KEY, inputTokens);
|
|
317
|
+
request.addData(exports.CLAUDE_OUTPUT_TOKENS_KEY, outputTokens);
|
|
318
|
+
this.updateSessionSuggestion(request);
|
|
319
|
+
}
|
|
320
|
+
getSessionTotalTokens(request) {
|
|
321
|
+
var _a, _b;
|
|
322
|
+
const requests = request.session.getRequests();
|
|
323
|
+
let totalInputTokens = 0;
|
|
324
|
+
let totalOutputTokens = 0;
|
|
325
|
+
for (const req of requests) {
|
|
326
|
+
const inputTokens = (_a = req.getDataByKey(exports.CLAUDE_INPUT_TOKENS_KEY)) !== null && _a !== void 0 ? _a : 0;
|
|
327
|
+
const outputTokens = (_b = req.getDataByKey(exports.CLAUDE_OUTPUT_TOKENS_KEY)) !== null && _b !== void 0 ? _b : 0;
|
|
328
|
+
totalInputTokens += inputTokens;
|
|
329
|
+
totalOutputTokens += outputTokens;
|
|
330
|
+
}
|
|
331
|
+
return { inputTokens: totalInputTokens, outputTokens: totalOutputTokens };
|
|
332
|
+
}
|
|
333
|
+
updateSessionSuggestion(request) {
|
|
334
|
+
const { inputTokens, outputTokens } = this.getSessionTotalTokens(request);
|
|
335
|
+
const formatTokens = (tokens) => {
|
|
336
|
+
if (tokens >= 1000) {
|
|
337
|
+
return `${(tokens / 1000).toFixed(1)}K`;
|
|
338
|
+
}
|
|
339
|
+
return tokens.toString();
|
|
340
|
+
};
|
|
341
|
+
const suggestion = `↑ ${formatTokens(inputTokens)} | ↓ ${formatTokens(outputTokens)}`;
|
|
342
|
+
request.session.setSuggestions([suggestion]);
|
|
343
|
+
}
|
|
344
|
+
isEditMode(request) {
|
|
345
|
+
const permissionMode = this.getClaudePermissionMode(request);
|
|
346
|
+
return permissionMode === 'acceptEdits' || permissionMode === 'bypassPermissions';
|
|
347
|
+
}
|
|
348
|
+
async reportTokenUsage(request, inputTokens, outputTokens, cachedInputTokens, readCachedInputTokens) {
|
|
349
|
+
const modelName = this.getClaudeModelName(request);
|
|
350
|
+
if (!modelName) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const prefixedModelName = `anthropic/claude-code/${modelName}`;
|
|
354
|
+
const sessionId = this.getClaudeSessionId(request);
|
|
355
|
+
const requestId = sessionId || request.id;
|
|
356
|
+
try {
|
|
357
|
+
await this.tokenUsageService.recordTokenUsage(prefixedModelName, {
|
|
358
|
+
inputTokens,
|
|
359
|
+
outputTokens,
|
|
360
|
+
cachedInputTokens,
|
|
361
|
+
readCachedInputTokens,
|
|
362
|
+
requestId
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
console.error('Failed to report token usage:', error);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
async addResponseContent(message, request) {
|
|
370
|
+
var _a, _b, _c, _d;
|
|
371
|
+
// Extract model name from system init message
|
|
372
|
+
if (message.type === 'system' && message.subtype === 'init' && message.model) {
|
|
373
|
+
this.setClaudeModelName(request, message.model);
|
|
374
|
+
}
|
|
375
|
+
// Handle result messages with final usage
|
|
376
|
+
if (message.type === 'assistant' && message.message.usage) {
|
|
377
|
+
await this.handleTokenMetrics(message.message.usage, request);
|
|
378
|
+
}
|
|
379
|
+
if (message.type === 'result' && message.usage) {
|
|
380
|
+
request.addData(exports.CLAUDE_COST_KEY, message.total_cost_usd);
|
|
381
|
+
await this.handleTokenMetrics(message.usage, request);
|
|
382
|
+
}
|
|
383
|
+
// Handle user messages for local-command-stdout extraction
|
|
384
|
+
if (message.type === 'user') {
|
|
385
|
+
const extractedContent = this.extractLocalCommandStdout(message.message.content);
|
|
386
|
+
if (extractedContent) {
|
|
387
|
+
request.response.response.addContent(new ai_chat_1.MarkdownChatResponseContentImpl(extractedContent));
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
if (message.type === 'assistant' || message.type === 'user') {
|
|
391
|
+
if (!Array.isArray(message.message.content)) {
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
for (const block of message.message.content) {
|
|
395
|
+
switch (block.type) {
|
|
396
|
+
case 'text':
|
|
397
|
+
request.response.response.addContent(new ai_chat_1.MarkdownChatResponseContentImpl(block.text));
|
|
398
|
+
break;
|
|
399
|
+
case 'tool_use':
|
|
400
|
+
case 'server_tool_use':
|
|
401
|
+
if (block.name === 'Task' && claude_code_service_1.TaskInput.is(block.input)) {
|
|
402
|
+
request.response.response.addContent(new ai_chat_1.MarkdownChatResponseContentImpl(`\n\n### Task: ${block.input.description}\n\n${block.input.prompt}`));
|
|
403
|
+
}
|
|
404
|
+
// Track file edits
|
|
405
|
+
if ((block.name === 'Edit' && claude_code_service_1.EditInput.is(block.input)) ||
|
|
406
|
+
(block.name === 'MultiEdit' && claude_code_service_1.MultiEditInput.is(block.input)) ||
|
|
407
|
+
(block.name === 'Write' && claude_code_service_1.WriteInput.is(block.input))) {
|
|
408
|
+
const toolUse = {
|
|
409
|
+
name: block.name,
|
|
410
|
+
input: block.input
|
|
411
|
+
};
|
|
412
|
+
(_a = this.getEditToolUses(request)) === null || _a === void 0 ? void 0 : _a.set(block.id, toolUse);
|
|
413
|
+
}
|
|
414
|
+
request.response.response.addContent(new claude_code_tool_call_content_1.ClaudeCodeToolCallChatResponseContent(block.id, block.name, JSON.stringify(block.input)));
|
|
415
|
+
break;
|
|
416
|
+
case 'tool_result':
|
|
417
|
+
if ((_b = this.getEditToolUses(request)) === null || _b === void 0 ? void 0 : _b.has(block.tool_use_id)) {
|
|
418
|
+
const toolUse = (_c = this.getEditToolUses(request)) === null || _c === void 0 ? void 0 : _c.get(block.tool_use_id);
|
|
419
|
+
if (toolUse) {
|
|
420
|
+
await this.editToolService.handleEditTool(toolUse, request, {
|
|
421
|
+
sessionId: this.getClaudeSessionId(request),
|
|
422
|
+
isEditMode: this.isEditMode(request)
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
request.response.response.addContent(new claude_code_tool_call_content_1.ClaudeCodeToolCallChatResponseContent(block.tool_use_id, '', '', true, JSON.stringify(block.content)));
|
|
427
|
+
break;
|
|
428
|
+
case 'thinking':
|
|
429
|
+
request.response.response.addContent(new ai_chat_1.ThinkingChatResponseContentImpl(block.thinking.trim(), ((_d = block.signature) === null || _d === void 0 ? void 0 : _d.trim()) || ''));
|
|
430
|
+
break;
|
|
431
|
+
case 'redacted_thinking':
|
|
432
|
+
request.response.response.addContent(new ai_chat_1.ThinkingChatResponseContentImpl(block.data.trim(), ''));
|
|
433
|
+
break;
|
|
434
|
+
case 'web_search_tool_result':
|
|
435
|
+
if (Array.isArray(block.content)) {
|
|
436
|
+
const result = block.content.map(value => value.title + ':' + value.url).join(', ');
|
|
437
|
+
request.response.response.addContent(new claude_code_tool_call_content_1.ClaudeCodeToolCallChatResponseContent(block.tool_use_id, '', '', true, result));
|
|
438
|
+
}
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
async handleTokenMetrics(usage, request) {
|
|
445
|
+
var _a, _b, _c, _d, _e, _f;
|
|
446
|
+
const allInputTokens = ((_a = usage.input_tokens) !== null && _a !== void 0 ? _a : 0) + ((_b = usage.cache_creation_input_tokens) !== null && _b !== void 0 ? _b : 0);
|
|
447
|
+
this.updateTokens(request, allInputTokens, ((_c = usage.output_tokens) !== null && _c !== void 0 ? _c : 0));
|
|
448
|
+
await this.reportTokenUsage(request, allInputTokens, ((_d = usage.output_tokens) !== null && _d !== void 0 ? _d : 0), ((_e = usage.cache_creation_input_tokens) !== null && _e !== void 0 ? _e : 0), ((_f = usage.cache_read_input_tokens) !== null && _f !== void 0 ? _f : 0));
|
|
449
|
+
}
|
|
450
|
+
extractLocalCommandStdout(content) {
|
|
451
|
+
const regex = /<(local-command-stdout|local-command-stderr)>([\s\S]*?)<\/\1>/g;
|
|
452
|
+
let extractedContent = '';
|
|
453
|
+
let match;
|
|
454
|
+
if (typeof content === 'string') {
|
|
455
|
+
// eslint-disable-next-line no-null/no-null
|
|
456
|
+
while ((match = regex.exec(content)) !== null) {
|
|
457
|
+
extractedContent += match[2];
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
for (const block of content) {
|
|
462
|
+
if (block.type === 'text') {
|
|
463
|
+
// eslint-disable-next-line no-null/no-null
|
|
464
|
+
while ((match = regex.exec(block.text)) !== null) {
|
|
465
|
+
extractedContent += match[2];
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return extractedContent || undefined;
|
|
471
|
+
}
|
|
472
|
+
};
|
|
473
|
+
exports.ClaudeCodeChatAgent = ClaudeCodeChatAgent;
|
|
474
|
+
tslib_1.__decorate([
|
|
475
|
+
(0, inversify_1.inject)(ai_core_1.PromptService),
|
|
476
|
+
tslib_1.__metadata("design:type", Object)
|
|
477
|
+
], ClaudeCodeChatAgent.prototype, "promptService", void 0);
|
|
478
|
+
tslib_1.__decorate([
|
|
479
|
+
(0, inversify_1.inject)(claude_code_frontend_service_1.ClaudeCodeFrontendService),
|
|
480
|
+
tslib_1.__metadata("design:type", claude_code_frontend_service_1.ClaudeCodeFrontendService)
|
|
481
|
+
], ClaudeCodeChatAgent.prototype, "claudeCode", void 0);
|
|
482
|
+
tslib_1.__decorate([
|
|
483
|
+
(0, inversify_1.inject)(file_service_1.FileService),
|
|
484
|
+
tslib_1.__metadata("design:type", file_service_1.FileService)
|
|
485
|
+
], ClaudeCodeChatAgent.prototype, "fileService", void 0);
|
|
486
|
+
tslib_1.__decorate([
|
|
487
|
+
(0, inversify_1.inject)(core_1.CommandService),
|
|
488
|
+
tslib_1.__metadata("design:type", Object)
|
|
489
|
+
], ClaudeCodeChatAgent.prototype, "commandService", void 0);
|
|
490
|
+
tslib_1.__decorate([
|
|
491
|
+
(0, inversify_1.inject)(browser_2.WorkspaceService),
|
|
492
|
+
tslib_1.__metadata("design:type", browser_2.WorkspaceService)
|
|
493
|
+
], ClaudeCodeChatAgent.prototype, "workspaceService", void 0);
|
|
494
|
+
tslib_1.__decorate([
|
|
495
|
+
(0, inversify_1.inject)(browser_1.EditorManager),
|
|
496
|
+
tslib_1.__metadata("design:type", browser_1.EditorManager)
|
|
497
|
+
], ClaudeCodeChatAgent.prototype, "editorManager", void 0);
|
|
498
|
+
tslib_1.__decorate([
|
|
499
|
+
(0, inversify_1.inject)(core_1.SelectionService),
|
|
500
|
+
tslib_1.__metadata("design:type", core_1.SelectionService)
|
|
501
|
+
], ClaudeCodeChatAgent.prototype, "selectionService", void 0);
|
|
502
|
+
tslib_1.__decorate([
|
|
503
|
+
(0, inversify_1.inject)(claude_code_edit_tool_service_1.ClaudeCodeEditToolService),
|
|
504
|
+
tslib_1.__metadata("design:type", Object)
|
|
505
|
+
], ClaudeCodeChatAgent.prototype, "editToolService", void 0);
|
|
506
|
+
tslib_1.__decorate([
|
|
507
|
+
(0, inversify_1.inject)(claude_code_file_edit_backup_service_1.FileEditBackupService),
|
|
508
|
+
tslib_1.__metadata("design:type", Object)
|
|
509
|
+
], ClaudeCodeChatAgent.prototype, "backupService", void 0);
|
|
510
|
+
tslib_1.__decorate([
|
|
511
|
+
(0, inversify_1.inject)(ai_core_1.TokenUsageService),
|
|
512
|
+
tslib_1.__metadata("design:type", Object)
|
|
513
|
+
], ClaudeCodeChatAgent.prototype, "tokenUsageService", void 0);
|
|
514
|
+
exports.ClaudeCodeChatAgent = ClaudeCodeChatAgent = tslib_1.__decorate([
|
|
515
|
+
(0, inversify_1.injectable)()
|
|
516
|
+
], ClaudeCodeChatAgent);
|
|
517
|
+
//# sourceMappingURL=claude-code-chat-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-chat-agent.js","sourceRoot":"","sources":["../../src/browser/claude-code-chat-agent.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,4CASwB;AACxB,yFAA+H;AAC/H,uEAAmE;AACnE,4CAA2I;AAC3I,sCAAoE;AACpE,4DAAkE;AAClE,uDAA0D;AAC1D,6EAAyE;AACzE,0DAAgE;AAChE,uEAWuC;AACvC,mFAA0F;AAC1F,iGAA+E;AAC/E,iFAA2E;AAC3E,mFAAwF;AACxF,yFAAsG;AAEzF,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,0BAA0B,GAAG,sBAAsB,CAAC;AACpD,QAAA,yBAAyB,GAAG,oBAAoB,CAAC;AACjD,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAC9C,QAAA,wBAAwB,GAAG,oBAAoB,CAAC;AAChD,QAAA,4BAA4B,GAAG,wBAAwB,CAAC;AACxD,QAAA,+BAA+B,GAAG,0BAA0B,CAAC;AAC7D,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,eAAe,GAAG,YAAY,CAAC;AAE5C,MAAM,gBAAgB,GAAG;IACrB,EAAE,IAAI,EAAE,UAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;IACxD,EAAE,IAAI,EAAE,UAAG,CAAC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;CAC7E,CAAC;AAEW,QAAA,4BAA4B,GAAuB;IAC5D,EAAE,EAAE,wBAAwB;IAC5B,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEb;CACA,CAAC;AAEW,QAAA,oBAAoB,GAAG,YAAY,CAAC;AAEjD,MAAM,aAAa,GAAG;IAClB,OAAO,EAAE,oDAA+B;IACxC,QAAQ,EAAE,0DAAuB;IACjC,QAAQ,EAAE,0DAAuB;IACjC,QAAQ,EAAE,+CAA0B;CACvC,CAAC;AAGK,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAAzB;QACH,OAAE,GAAG,4BAAoB,CAAC;QAC1B,SAAI,GAAG,4BAAoB,CAAC;QAC5B,gBAAW,GAAG,UAAG,CAAC,QAAQ,CAAC,uCAAuC,EAAE,2BAA2B,CAAC,CAAC;QACjG,cAAS,GAAW,yBAAyB,CAAC;QAC9C,cAAS,GAAwB,2BAAiB,CAAC,GAAG,CAAC;QACvD,SAAI,GAAG,CAAC,UAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvC,cAAS,GAAG,EAAE,CAAC;QACf,YAAO,GAAG,CAAC,EAAE,EAAE,EAAE,oCAA4B,CAAC,EAAE,EAAE,cAAc,EAAE,oCAA4B,EAAE,CAAC,CAAC;QAClG,8BAAyB,GAAG,EAAE,CAAC;QAC/B,2BAAsB,GAAG,EAAE,CAAC;QAC5B,cAAS,GAAG,EAAE,CAAC;IAibnB,CAAC;IAjZG,KAAK,CAAC,MAAM,CAAC,OAAgC,EAAE,gBAAmC;QAC9E,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAE3C,qDAAqD;QACrD,MAAM,YAAY,GAAG,UAAU,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QACxE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,aAAa,CAAC,OAAqC,CAAC,CAAC;gBACzE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,UAAG,CAAC,QAAQ,CAAC,sCAAsC,EAAE,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACzG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,yCAA+B,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnF,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC5B,OAAO;YACX,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,GAAG,wBAAU,CAAC,UAAU,GAAG,4BAAoB,EAAE,CAAC;YACvE,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC5C,MAAM;gBACN,OAAO,EAAE;oBACL,YAAY,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,aAAa;wBACrB,MAAM,EAAE,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,IAAI;qBACrC;oBACD,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;oBACrD,MAAM,EAAE,eAAe;iBAC1B;aACJ,EAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAEvC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,mBAAmB,GAAG,KAAK,CAAC;YAChC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACvC,IAAI,gDAA0B,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACJ,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBAC/B,mBAAmB,GAAG,IAAI,CAAC;oBAC/B,CAAC;oBACD,yDAAyD;oBACzD,wEAAwE;oBACxE,IAAI,mBAAmB,EAAE,CAAC;wBACtB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;oBACzD,CAAC;oBACD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;YAED,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,sCAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACP,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAES,4BAA4B,CAAC,OAAgC;QACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,KAAK,GAAG,UAAG,CAAC,QAAQ,CAAC,mDAAmD,EAC3F,4GAA4G,CAAC,GAAG,MAAM,CAAC;gBAC3H,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,yCAA+B,CAAC,cAAc,CAAC,CAAC,CAAC;YAC9F,CAAC;QACL,CAAC;IACL,CAAC;IAES,KAAK,CAAC,0BAA0B,CAAC,OAAgC;;QACvE,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,qCAA2B,CAAC,YAAY,CAAC,mCAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC3I,MAAM,YAAY,GAAG,gBAAgB;aAChC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;aACvE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;aACpC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,MAAM,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,CAAC,aAAa,0CAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,mCAAI,MAAM,CAAC;QACrF,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvG,OAAO,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAC/C,oCAA4B,CAAC,EAAE,EAC/B,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,EAC3C,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CACtC,CAAC;IACN,CAAC;IAES,uBAAuB,CAAC,OAAgC;QAC9D,OAAO,CAAC,OAAO,CAAC,iCAAyB,EAAE,IAAI,GAAG,EAAwB,CAAC,CAAC;IAChF,CAAC;IAES,mBAAmB,CAAC,OAAgC;QAC1D,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,oCAA4B,CAAyD,CAAC;QAC3H,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,SAAS,GAAG,IAAI,GAAG,EAAuC,CAAC;YAC3D,OAAO,CAAC,OAAO,CAAC,oCAA4B,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,qBAAqB,CAAC,OAAgC;QAC5D,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,uCAA+B,CAAqC,CAAC;QAC3G,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,uCAA+B,EAAE,UAAU,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAES,yBAAyB,CAC/B,eAA2C,EAC3C,OAAgC;QAEhC,MAAM,QAAQ,GAAG,UAAG,CAAC,QAAQ,CAAC,0CAA0C,EAAE,qEAAqE,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE3K,MAAM,eAAe,GAAG,IAAI,qCAA2B,CACnD,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CACpG,CAAC;QAEF,sDAAsD;QACtD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAClF,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QAE9F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAES,sBAAsB,CAC5B,cAAgD,EAChD,SAAiB,EACjB,OAAgC;QAEhC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAEvD,+BAA+B;QAC/B,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEpD,IAAI,eAAe,EAAE,CAAC;YAClB,eAAe,CAAC,cAAc,GAAG,cAAc,CAAC;QACpD,CAAC;QAED,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,KAAK,OAAO,CAAC;QAClD,MAAM,QAAQ,GAAgC;YAC1C,IAAI,EAAE,wBAAwB;YAC9B,SAAS;YACT,QAAQ;YACR,GAAG,CAAC,QAAQ;gBACR,CAAC,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE;gBACrC,CAAC,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAC1C;SACJ,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE/C,qEAAqE;QACrE,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAC3C,CAAC;IACL,CAAC;IAES,eAAe,CAAC,OAAgC;QACtD,OAAO,OAAO,CAAC,YAAY,CAAC,iCAAyB,CAAC,CAAC;IAC3D,CAAC;IAES,0BAA0B,CAAC,OAAgC;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtD,OAAO,eAAe,CAAC,YAAY,CAAC,6BAAqB,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,kBAAkB,CAAC,OAAgC;QACzD,OAAO,OAAO,CAAC,YAAY,CAAC,6BAAqB,CAAC,CAAC;IACvD,CAAC;IAES,kBAAkB,CAAC,OAAgC,EAAE,SAAiB;QAC5E,OAAO,CAAC,OAAO,CAAC,6BAAqB,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAES,uBAAuB,CAAC,OAAgC;;QAC9D,OAAO,MAAA,OAAO,CAAC,YAAY,CAAC,kCAA0B,CAAC,mCAAI,aAAa,CAAC;IAC7E,CAAC;IAES,uBAAuB,CAAC,OAAgC,EAAE,cAA8B;QAC9F,OAAO,CAAC,OAAO,CAAC,kCAA0B,EAAE,cAAc,CAAC,CAAC;IAChE,CAAC;IAES,kBAAkB,CAAC,OAAgC;QACzD,OAAO,OAAO,CAAC,YAAY,CAAC,6BAAqB,CAAC,CAAC;IACvD,CAAC;IAES,kBAAkB,CAAC,OAAgC,EAAE,SAAiB;QAC5E,OAAO,CAAC,OAAO,CAAC,6BAAqB,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAES,qBAAqB,CAAC,OAAgC;;QAC5D,OAAO,MAAA,OAAO,CAAC,YAAY,CAAC,+BAAuB,CAAW,mCAAI,CAAC,CAAC;IACxE,CAAC;IAES,sBAAsB,CAAC,OAAgC;;QAC7D,OAAO,MAAA,OAAO,CAAC,YAAY,CAAC,gCAAwB,CAAW,mCAAI,CAAC,CAAC;IACzE,CAAC;IAES,YAAY,CAAC,OAAgC,EAAE,WAAmB,EAAE,YAAoB;QAC9F,OAAO,CAAC,OAAO,CAAC,+BAAuB,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,CAAC,OAAO,CAAC,gCAAwB,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAES,qBAAqB,CAAC,OAAgC;;QAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,YAAY,CAAC,+BAAuB,CAAW,mCAAI,CAAC,CAAC;YAC7E,MAAM,YAAY,GAAG,MAAA,GAAG,CAAC,YAAY,CAAC,gCAAwB,CAAW,mCAAI,CAAC,CAAC;YAC/E,gBAAgB,IAAI,WAAW,CAAC;YAChC,iBAAiB,IAAI,YAAY,CAAC;QACtC,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAC9E,CAAC;IAES,uBAAuB,CAAC,OAAgC;QAC9D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,CAAC,MAAc,EAAU,EAAE;YAC5C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACjB,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5C,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,KAAK,YAAY,CAAC,WAAW,CAAC,QAAQ,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QACtF,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,CAAC;IAES,UAAU,CAAC,OAAgC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,cAAc,KAAK,aAAa,IAAI,cAAc,KAAK,mBAAmB,CAAC;IACtF,CAAC;IAES,KAAK,CAAC,gBAAgB,CAC5B,OAAgC,EAChC,WAAmB,EACnB,YAAoB,EACpB,iBAA0B,EAC1B,qBAA8B;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,yBAAyB,SAAS,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;QAE1C,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;gBAC7D,WAAW;gBACX,YAAY;gBACZ,iBAAiB;gBACjB,qBAAqB;gBACrB,SAAS;aACZ,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,OAAmB,EAAE,OAAgC;;QACpF,8CAA8C;QAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3E,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,0CAA0C;QAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,OAAO,CAAC,OAAO,CAAC,uBAAe,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,2DAA2D;QAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjF,IAAI,gBAAgB,EAAE,CAAC;gBACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,yCAA+B,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAChG,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,OAAO;YACX,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,MAAM;wBACP,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,yCAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBACtF,MAAM;oBACV,KAAK,UAAU,CAAC;oBAChB,KAAK,iBAAiB;wBAClB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,+BAAS,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;4BACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,yCAA+B,CAAC,iBAAiB,KAAK,CAAC,KAAK,CAAC,WAAW,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;wBACnJ,CAAC;wBAED,mBAAmB;wBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,+BAAS,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACpD,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,oCAAc,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BAC9D,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,gCAAU,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;4BACzD,MAAM,OAAO,GAAiB;gCAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,KAAK,EAAE,KAAK,CAAC,KAAK;6BACrB,CAAC;4BACF,MAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,0CAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;wBAC1D,CAAC;wBACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,qEAAqC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACnI,MAAM;oBACV,KAAK,aAAa;wBACd,IAAI,MAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,0CAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;4BACxD,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,0CAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;4BACtE,IAAI,OAAO,EAAE,CAAC;gCACV,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;oCACxD,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;oCAC3C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;iCACvC,CAAC,CAAC;4BACP,CAAC;wBACL,CAAC;wBACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,qEAAqC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAChJ,MAAM;oBACV,KAAK,UAAU;wBACX,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,yCAA+B,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,IAAI,EAAE,KAAI,EAAE,CAAC,CAAC,CAAC;wBAChI,MAAM;oBACV,KAAK,mBAAmB;wBACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,yCAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBACjG,MAAM;oBACV,KAAK,wBAAwB;wBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACpF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,qEAAqC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;wBAC7H,CAAC;wBACD,MAAM;gBACd,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,KAAY,EAAE,OAAgC;;QAC7E,MAAM,cAAc,GAAG,CAAC,MAAA,KAAK,CAAC,YAAY,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,KAAK,CAAC,2BAA2B,mCAAI,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,MAAA,KAAK,CAAC,aAAa,mCAAI,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,MAAA,KAAK,CAAC,aAAa,mCAAI,CAAC,CAAC,EAC3E,CAAC,MAAA,KAAK,CAAC,2BAA2B,mCAAI,CAAC,CAAC,EAAE,CAAC,MAAA,KAAK,CAAC,uBAAuB,mCAAI,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAEO,yBAAyB,CAAC,OAAgC;QAC9D,MAAM,KAAK,GAAG,gEAAgE,CAAC;QAC/E,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC;QAEV,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,2CAA2C;YAC3C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5C,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACxB,2CAA2C;oBAC3C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC/C,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,IAAI,SAAS,CAAC;IACzC,CAAC;CACJ,CAAA;AA7bY,kDAAmB;AAelB;IADT,IAAA,kBAAM,EAAC,uBAAa,CAAC;;0DACiB;AAG7B;IADT,IAAA,kBAAM,EAAC,wDAAyB,CAAC;sCACZ,wDAAyB;uDAAC;AAG7B;IADlB,IAAA,kBAAM,EAAC,0BAAW,CAAC;sCACY,0BAAW;wDAAC;AAGzB;IADlB,IAAA,kBAAM,EAAC,qBAAc,CAAC;;2DAC2B;AAG/B;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACY,0BAAgB;6DAAC;AAGnC;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;sCACY,uBAAa;0DAAC;AAG7B;IADlB,IAAA,kBAAM,EAAC,uBAAgB,CAAC;sCACY,uBAAgB;6DAAC;AAGnC;IADlB,IAAA,kBAAM,EAAC,yDAAyB,CAAC;;4DAC4B;AAG3C;IADlB,IAAA,kBAAM,EAAC,4DAAqB,CAAC;;0DAC0B;AAGrC;IADlB,IAAA,kBAAM,EAAC,2BAAiB,CAAC;;8DAC8B;8BA1C/C,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;GACA,mBAAmB,CA6b/B"}
|