mirror of
https://github.com/zhukunpenglinyutong/jetbrains-cc-gui.git
synced 2026-08-28 16:31:27 +08:00
refactor(package): reorganize Java package structure by domain
Move classes from root package into domain-specific sub-packages: - action/dev: OpenDevToolsAction - action/editor: QuickFixWithClaudeAction, SendFilePathToInputAction, SendSelectionToTerminalAction - action/tab: CreateNewTabAction, DetachTabAction, RenameTabAction - action/vcs: GenerateCommitMessageAction - ui/detached: DetachedChatFrame, DetachedWindowManager - ui/toolwindow: ClaudeChatWindow, ClaudeSDKToolWindow, CodeSnippetManager - i18n: ClaudeCodeGuiBundle - permission: ToolInterceptor - session: ClaudeSession, SessionLoadService - settings: CodemossSettingsService - skill: CodexSkillService, SkillService Update all import references across handlers, providers, session and test files accordingly.
This commit is contained in:
@@ -0,0 +1,469 @@
|
||||
# Java 主包目录结构整理计划
|
||||
|
||||
**日期**: 2026-03-22
|
||||
**状态**: 待执行
|
||||
**范围**: `src/main/java/com/github/claudecodegui`
|
||||
**目标**: 在不改变插件行为、消息协议和用户体验的前提下,逐步收敛根包、按功能分组目录、降低后续维护和继续重构的理解成本。
|
||||
|
||||
---
|
||||
|
||||
## 背景判断
|
||||
|
||||
当前结构并不是“完全错误”,但已经出现了典型的“分层做到一半”的迹象。
|
||||
|
||||
基于现有代码结构的快速盘点:
|
||||
|
||||
- 根包 `com.github.claudecodegui` 下面仍直接放了约 20 个类,职责混合了窗口、会话、设置、技能、Action 和工具拦截。
|
||||
- `handler` 目录已有约 47 个类,是目前最容易继续膨胀的目录。
|
||||
- `util` 目录已有约 18 个类,里面既有纯工具类,也有带明显业务语义的配置类。
|
||||
- 与此同时,`permission`、`session`、`provider`、`skill`、`settings`、`ui` 等功能目录已经初步存在,说明项目已经朝“按功能分组”的方向发展。
|
||||
|
||||
因此,这次整理的核心目标不是推倒重来,而是把已经形成的分组方向收口,让目录结构更一致、更容易理解。
|
||||
|
||||
---
|
||||
|
||||
## 核心原则
|
||||
|
||||
### 1. 按功能分组,不按类名后缀分组
|
||||
|
||||
不建议把所有 `Service`、`Manager`、`Handler`、`Action` 简单集中到同一目录。
|
||||
|
||||
原因:
|
||||
|
||||
- 这种分法表面整齐,但会把同一业务链路拆散。
|
||||
- 后续定位问题时,往往是按“会话 / 权限 / Provider / 技能 / UI”来思考,而不是按“这是个 Service 还是 Manager”来思考。
|
||||
- 当前仓库已经有大量按功能分组的基础目录,继续沿这个方向最稳。
|
||||
|
||||
### 2. 先清理根包,再继续细分大目录
|
||||
|
||||
优先级建议:
|
||||
|
||||
1. 先把根包里的明显归属类迁回功能目录。
|
||||
2. 再细分 `handler`。
|
||||
3. 最后收敛 `util`,只保留真正的通用工具类。
|
||||
|
||||
### 3. 小步重构,不一次性搬完整棵树
|
||||
|
||||
本计划强调分阶段、小批量迁移:
|
||||
|
||||
- 每一轮只处理一组低耦合对象。
|
||||
- 每次迁移后都进行编译和插件注册校验。
|
||||
- 不在目录迁移时顺便改业务逻辑,避免把“结构整理”和“功能变更”叠到一起。
|
||||
|
||||
### 4. 目录移动必须同步更新注册与引用
|
||||
|
||||
这是 IntelliJ 插件项目,类路径不仅存在于 Java import 中,也存在于注册文件中。
|
||||
|
||||
尤其要同步检查:
|
||||
|
||||
- `src/main/resources/META-INF/plugin.xml`
|
||||
- 任何通过反射、字符串类名、静态入口引用到旧包路径的代码
|
||||
|
||||
---
|
||||
|
||||
## 推荐目标目录树
|
||||
|
||||
```text
|
||||
src/main/java/com/github/claudecodegui
|
||||
├── action
|
||||
│ ├── chat // 聊天窗口内动作:发送、复制、粘贴、换行、快捷键同步
|
||||
│ ├── dev // 开发辅助动作:DevTools 等
|
||||
│ ├── editor // 编辑器/项目树动作:发送选中代码、发送文件路径、Quick Fix
|
||||
│ ├── tab // 标签页动作:新建、重命名、分离
|
||||
│ └── vcs // Git / Commit 相关动作
|
||||
├── bridge // Node / SDK bridge 环境、目录、进程管理
|
||||
├── cache // Session 索引与缓存
|
||||
├── dependency // 依赖安装、更新检测、结果对象
|
||||
├── handler
|
||||
│ ├── core // Dispatcher、Base handler、上下文对象
|
||||
│ ├── context // Java / Python / Runtime 上下文采集
|
||||
│ ├── diff // Diff 展示、刷新、请求分发
|
||||
│ ├── file // 文件打开、导出、撤销、收集器
|
||||
│ ├── history // 历史记录加载、删除、导出、元数据、注入
|
||||
│ ├── provider // Provider 读取、切换、导入导出、排序
|
||||
│ ├── session // Session 消息处理
|
||||
│ ├── settings // 设置相关 handler
|
||||
│ ├── skill // Skill / Agent / MCP 相关 handler
|
||||
│ └── window // Tab / Window 事件处理
|
||||
├── i18n // 国际化 bundle 入口
|
||||
├── model // 纯数据模型、枚举、结果对象
|
||||
├── notifications // 通知、状态栏、提示音
|
||||
├── permission // 权限请求、Diff review、tool interception
|
||||
├── provider
|
||||
│ ├── claude
|
||||
│ ├── codex
|
||||
│ └── common
|
||||
├── session // 会话状态、回调、消息编排、生命周期
|
||||
├── settings // 配置 facade 与各类 manager
|
||||
├── skill // Claude / Codex skill 扫描、解析、注册
|
||||
├── startup // 启动预热、插件更新监听
|
||||
├── terminal // Terminal 集成
|
||||
├── ui
|
||||
│ ├── detached // 分离窗口
|
||||
│ ├── toolwindow // ToolWindow / ChatWindow / tab 关联管理
|
||||
│ └── webview // Webview 初始化、watchdog、delegate、编辑器上下文桥接
|
||||
├── util // 仅保留通用、无状态工具类
|
||||
└── watcher // 文件监听器(若数量持续增长,可再拆)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 根包迁移建议对照表
|
||||
|
||||
以下类建议优先从根包迁移到对应目录。
|
||||
|
||||
| 当前类 | 建议新位置 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `ClaudeChatWindow` | `ui/toolwindow/ClaudeChatWindow.java` | 聊天窗口核心对象,明显属于 ToolWindow/UI 侧 |
|
||||
| `ClaudeSDKToolWindow` | `ui/toolwindow/ClaudeSDKToolWindow.java` | ToolWindow 工厂与入口 |
|
||||
| `CodeSnippetManager` | `ui/toolwindow/CodeSnippetManager.java` | 标签页/窗口间片段投递协调 |
|
||||
| `DetachedChatFrame` | `ui/detached/DetachedChatFrame.java` | 分离窗口 UI |
|
||||
| `DetachedWindowManager` | `ui/detached/DetachedWindowManager.java` | 分离窗口注册与生命周期 |
|
||||
| `ClaudeSession` | `session/ClaudeSession.java` | 会话核心对象,应与现有 `session` 包收拢 |
|
||||
| `SessionLoadService` | `session/SessionLoadService.java` | 会话加载桥接服务 |
|
||||
| `CodemossSettingsService` | `settings/CodemossSettingsService.java` | 配置 facade,和现有 `settings` 包高度一致 |
|
||||
| `SkillService` | `skill/SkillService.java` | Claude 技能管理 |
|
||||
| `CodexSkillService` | `skill/CodexSkillService.java` | Codex 技能管理 |
|
||||
| `ToolInterceptor` | `permission/ToolInterceptor.java` | 权限相关工具调用拦截 |
|
||||
| `ClaudeCodeGuiBundle` | `i18n/ClaudeCodeGuiBundle.java` | 国际化入口类,避免长期占据根包 |
|
||||
| `CreateNewTabAction` | `action/tab/CreateNewTabAction.java` | 标签页动作 |
|
||||
| `RenameTabAction` | `action/tab/RenameTabAction.java` | 标签页动作 |
|
||||
| `DetachTabAction` | `action/tab/DetachTabAction.java` | 标签页动作 |
|
||||
| `SendSelectionToTerminalAction` | `action/editor/SendSelectionToTerminalAction.java` | 编辑器右键动作 |
|
||||
| `SendFilePathToInputAction` | `action/editor/SendFilePathToInputAction.java` | 项目树右键动作 |
|
||||
| `QuickFixWithClaudeAction` | `action/editor/QuickFixWithClaudeAction.java` | 编辑器修复动作 |
|
||||
| `GenerateCommitMessageAction` | `action/vcs/GenerateCommitMessageAction.java` | VCS / Commit 动作 |
|
||||
| `OpenDevToolsAction` | `action/dev/OpenDevToolsAction.java` | 开发调试动作 |
|
||||
|
||||
完成这一轮后,根包应尽量只保留极少数真正无法明确归属的顶层入口类。理想状态下,根包最终可以接近空壳。
|
||||
|
||||
---
|
||||
|
||||
## `action` 目录整理建议
|
||||
|
||||
当前项目已经有 `action` 包,但只覆盖了聊天窗口内部动作,属于“已经开了头但没有统一到底”的状态。
|
||||
|
||||
建议最终分为以下几组:
|
||||
|
||||
### `action/chat`
|
||||
|
||||
- `ChatSendAction`
|
||||
- `ChatNewlineAction`
|
||||
- `ChatCopyAction`
|
||||
- `ChatCutAction`
|
||||
- `ChatPasteAction`
|
||||
- `ChatToolWindowAction`
|
||||
- `SendShortcutSync`
|
||||
|
||||
### `action/editor`
|
||||
|
||||
- `SendSelectionToTerminalAction`
|
||||
- `SendFilePathToInputAction`
|
||||
- `QuickFixWithClaudeAction`
|
||||
|
||||
### `action/tab`
|
||||
|
||||
- `CreateNewTabAction`
|
||||
- `RenameTabAction`
|
||||
- `DetachTabAction`
|
||||
|
||||
### `action/vcs`
|
||||
|
||||
- `GenerateCommitMessageAction`
|
||||
|
||||
### `action/dev`
|
||||
|
||||
- `OpenDevToolsAction`
|
||||
|
||||
---
|
||||
|
||||
## `handler` 目录二次拆分建议
|
||||
|
||||
`handler` 是当前最需要继续细分的目录,但不建议一上来大改逻辑。最稳的方式是保留消息协议和入口类行为,只按职责移动文件。
|
||||
|
||||
### `handler/core`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `BaseMessageHandler`
|
||||
- `MessageHandler`
|
||||
- `MessageDispatcher`
|
||||
- `HandlerContext`
|
||||
|
||||
### `handler/file`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `FileHandler`
|
||||
- `OpenFileHandler`
|
||||
- `FileExportHandler`
|
||||
- `UndoFileHandler`
|
||||
- `OpenFileCollector`
|
||||
- `RecentFileCollector`
|
||||
- `FileSystemCollector`
|
||||
- `RuntimeContextCollector`
|
||||
|
||||
### `handler/history`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `HistoryHandler`
|
||||
- `HistoryLoadService`
|
||||
- `HistoryDeleteService`
|
||||
- `HistoryExportService`
|
||||
- `HistoryMetadataService`
|
||||
- `HistoryMessageInjector`
|
||||
|
||||
### `handler/provider`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `ProviderHandler`
|
||||
- `ClaudeProviderOperations`
|
||||
- `CodexProviderOperations`
|
||||
- `ProviderImportExportSupport`
|
||||
- `ProviderOrderingService`
|
||||
- `ModelProviderHandler`
|
||||
|
||||
### `handler/session`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `SessionHandler`
|
||||
|
||||
### `handler/settings`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `SettingsHandler`
|
||||
- `NodePathHandler`
|
||||
- `PermissionModeHandler`
|
||||
- `SoundSettingsHandler`
|
||||
- `InputHistoryHandler`
|
||||
- `ProjectConfigHandler`
|
||||
|
||||
### `handler/skill`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `SkillHandler`
|
||||
- `AgentHandler`
|
||||
- `McpServerHandler`
|
||||
- `CodexMcpServerHandler`
|
||||
- `DependencyHandler`
|
||||
|
||||
### `handler/window`
|
||||
|
||||
建议归入:
|
||||
|
||||
- `TabHandler`
|
||||
- `WindowEventHandler`
|
||||
|
||||
### 保持原样的子目录
|
||||
|
||||
以下目录已经较清晰,可在第一阶段保持不动:
|
||||
|
||||
- `handler/context`
|
||||
- `handler/diff`
|
||||
|
||||
---
|
||||
|
||||
## `util` 目录收敛原则
|
||||
|
||||
`util` 不建议继续作为“任何暂时不知道放哪就先塞进去”的目录。
|
||||
|
||||
推荐原则:
|
||||
|
||||
- **保留在 `util` 的类**:纯函数、无状态、跨多个功能域复用的工具类。
|
||||
- **逐步迁出的类**:名称中带有明显业务语义、配置语义、主题语义、声音语义、语言语义的类。
|
||||
|
||||
可保留在 `util` 的典型类:
|
||||
|
||||
- `PathUtils`
|
||||
- `LineSeparatorUtil`
|
||||
- `TagExtractor`
|
||||
- `IgnoreRuleParser`
|
||||
- `IgnoreRuleMatcher`
|
||||
- `TokenUsageUtils`
|
||||
|
||||
可作为后续候选迁出的类:
|
||||
|
||||
- `ThemeConfigService`
|
||||
- `FontConfigService`
|
||||
- `LanguageConfigService`
|
||||
- `SoundNotificationService`
|
||||
- `HtmlLoader`
|
||||
- `JBCefBrowserFactory`
|
||||
|
||||
这一步不需要优先执行,但应作为结构治理的长期约束,避免 `util` 持续膨胀。
|
||||
|
||||
---
|
||||
|
||||
## 推荐执行顺序
|
||||
|
||||
### Phase 1:清理根包
|
||||
|
||||
目标:
|
||||
|
||||
- 先处理最容易确认归属的类。
|
||||
- 最大化“第一眼可读性”提升。
|
||||
- 降低后续继续细分时的认知负担。
|
||||
|
||||
建议顺序:
|
||||
|
||||
1. 迁移根包 Action 到 `action/*`
|
||||
2. 迁移 `ClaudeSession`、`SessionLoadService` 到 `session`
|
||||
3. 迁移 `CodemossSettingsService` 到 `settings`
|
||||
4. 迁移 `SkillService`、`CodexSkillService` 到 `skill`
|
||||
5. 迁移 `ClaudeChatWindow`、`ClaudeSDKToolWindow`、`CodeSnippetManager` 到 `ui/toolwindow`
|
||||
6. 迁移 `DetachedChatFrame`、`DetachedWindowManager` 到 `ui/detached`
|
||||
7. 迁移 `ToolInterceptor` 到 `permission`
|
||||
8. 迁移 `ClaudeCodeGuiBundle` 到 `i18n`
|
||||
|
||||
### Phase 2:细分 `handler`
|
||||
|
||||
目标:
|
||||
|
||||
- 保持现有 `SUPPORTED_TYPES` 和消息分发协议不变。
|
||||
- 按功能继续收拢文件位置。
|
||||
|
||||
建议顺序:
|
||||
|
||||
1. `core`
|
||||
2. `history`
|
||||
3. `file`
|
||||
4. `provider`
|
||||
5. `settings`
|
||||
6. `skill`
|
||||
7. `window`
|
||||
8. `session`
|
||||
|
||||
### Phase 3:收敛 `util`
|
||||
|
||||
目标:
|
||||
|
||||
- 把 `util` 恢复为“真正的工具类目录”。
|
||||
- 将业务意味较强的对象迁回所属功能域。
|
||||
|
||||
### Phase 4:文档与命名复查
|
||||
|
||||
目标:
|
||||
|
||||
- 确保目录结构调整后仍易于新人理解。
|
||||
- 避免“搬过去了,但命名还是旧上下文”的情况。
|
||||
|
||||
建议检查:
|
||||
|
||||
- 类名是否还反映当前职责
|
||||
- 包名与类职责是否一致
|
||||
- 文档、注释、注册文件是否同步更新
|
||||
|
||||
---
|
||||
|
||||
## 实施约束
|
||||
|
||||
为避免结构整理演变为高风险功能改造,本计划约束如下:
|
||||
|
||||
- 不在目录迁移时顺便改业务逻辑。
|
||||
- 不在同一轮里同时改消息协议、UI 交互和包结构。
|
||||
- 不一次性批量移动过多核心类,优先做低耦合迁移。
|
||||
- 每次迁移后立即修正 import、注册类名和相关引用。
|
||||
- 若发现某个类与多个目录强耦合,先暂停迁移,只记录为待决策项。
|
||||
|
||||
---
|
||||
|
||||
## 风险点
|
||||
|
||||
### 1. `plugin.xml` 注册路径失效
|
||||
|
||||
受影响对象:
|
||||
|
||||
- ToolWindow factory
|
||||
- Action 注册
|
||||
- 任何扩展点实现类
|
||||
|
||||
处理方式:
|
||||
|
||||
- 每一轮目录迁移后立即检查 `src/main/resources/META-INF/plugin.xml`
|
||||
- 保证类路径与包名同步更新
|
||||
|
||||
### 2. 包级可见性与静态协作关系
|
||||
|
||||
例如窗口相关类之间存在包级方法调用或强协作关系,迁移时可能暴露出隐藏耦合。
|
||||
|
||||
处理方式:
|
||||
|
||||
- 先搬协作最紧密的一组类,避免拆散半套协作对象
|
||||
- 必要时再决定是否提升可见性或引入更明确的 coordinator
|
||||
|
||||
### 3. 大目录移动引发大面积 import 修改
|
||||
|
||||
处理方式:
|
||||
|
||||
- 每次只移动一组相关类
|
||||
- 每次移动后立即编译验证,避免把多个错误点叠到一起
|
||||
|
||||
### 4. `handler` 拆分时误伤消息协议
|
||||
|
||||
处理方式:
|
||||
|
||||
- 保留原入口类与消息类型定义
|
||||
- 只做物理位置整理与内部委托调整,不改前端协议
|
||||
|
||||
---
|
||||
|
||||
## 验收标准
|
||||
|
||||
完成本计划时,应满足以下标准:
|
||||
|
||||
- 根包显著瘦身,不再混放窗口、Action、设置、技能、会话等多类职责。
|
||||
- 目录结构能从名字直接反映功能域,而不是只能靠类名猜职责。
|
||||
- `plugin.xml` 与所有 Java 引用同步更新,无失效注册。
|
||||
- `handler` 不再是单层超大目录,核心子领域可以独立浏览。
|
||||
- `util` 不再继续吸纳带业务语义的服务对象。
|
||||
- 插件行为、消息协议、用户操作路径保持不变。
|
||||
|
||||
---
|
||||
|
||||
## 推荐验证方式
|
||||
|
||||
每一轮目录迁移后,至少执行以下验证:
|
||||
|
||||
### 编译 / 测试
|
||||
|
||||
- `./gradlew test`
|
||||
|
||||
### 定向人工检查
|
||||
|
||||
- ToolWindow 能否正常打开
|
||||
- 新建标签页 / 重命名 / 分离窗口是否正常
|
||||
- 编辑器右键发送代码、发送文件路径是否正常
|
||||
- Quick Fix Action 是否仍可触发
|
||||
- Commit Message Action 是否仍可显示
|
||||
|
||||
### 注册文件检查
|
||||
|
||||
- `src/main/resources/META-INF/plugin.xml` 中所有迁移类路径都已同步修改
|
||||
|
||||
---
|
||||
|
||||
## 非目标
|
||||
|
||||
本计划暂不包含以下内容:
|
||||
|
||||
- 重写现有业务逻辑
|
||||
- 改造 `provider/claude`、`provider/codex` 的内部设计
|
||||
- 大规模重命名消息类型或前后端协议
|
||||
- 一次性清空所有历史结构问题
|
||||
|
||||
这是一份“结构整理计划”,不是“一步到位的架构重写计划”。
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
当前项目更适合继续沿“按功能分组”的方向演进,而不是退回到“按 Service / Manager / Handler 类型分组”的做法。
|
||||
|
||||
最优先、最划算的一步,是先把根包清理干净;第二步再继续把 `handler` 拆成多个子目录;最后再逐步收敛 `util`。
|
||||
|
||||
如果后续按本计划执行,项目目录会更接近“新同事第一次打开就能快速知道每块代码在哪”的状态,同时还能把重构风险控制在较低水平。
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.action;
|
||||
|
||||
import com.github.claudecodegui.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.action;
|
||||
|
||||
import com.github.claudecodegui.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.action;
|
||||
|
||||
import com.github.claudecodegui.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.action;
|
||||
|
||||
import com.github.claudecodegui.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.google.gson.Gson;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.action;
|
||||
|
||||
import com.github.claudecodegui.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.github.claudecodegui.action;
|
||||
|
||||
import com.github.claudecodegui.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ClaudeSDKToolWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.dev;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
+4
-1
@@ -1,8 +1,11 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.editor;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.notifications.ClaudeNotifier;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
import com.github.claudecodegui.provider.common.SDKResult;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
+3
-1
@@ -1,5 +1,7 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.editor;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
+3
-4
@@ -1,5 +1,7 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.editor;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
@@ -19,8 +21,6 @@ import com.intellij.util.concurrency.AppExecutorUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Action that sends selected code to the plugin chat window.
|
||||
* Supports cross-platform shortcuts: Mac (Cmd+Option+K) and Windows/Linux (Ctrl+Alt+K).
|
||||
@@ -241,4 +241,3 @@ public class SendSelectionToTerminalAction extends AnAction implements DumbAware
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -1,5 +1,8 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.tab;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
+6
-1
@@ -1,5 +1,10 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.tab;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.ui.detached.DetachedChatFrame;
|
||||
import com.github.claudecodegui.ui.detached.DetachedWindowManager;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
+4
-1
@@ -1,6 +1,9 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.tab;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.settings.TabStateService;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.action.vcs;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.notifications.ClaudeNotifier;
|
||||
import com.github.claudecodegui.service.GitCommitMessageService;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.model.ConflictStrategy;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
|
||||
@@ -128,7 +128,7 @@ public class ClaudeProviderOperations {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Failed to add provider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.addFailed", e.getMessage())));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.addFailed", e.getMessage())));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -163,7 +163,7 @@ public class ClaudeProviderOperations {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Failed to update provider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.updateFailed", e.getMessage())));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.updateFailed", e.getMessage())));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -182,7 +182,7 @@ public class ClaudeProviderOperations {
|
||||
if (!data.has("id")) {
|
||||
LOG.error("[ProviderHandler] ERROR: Missing 'id' field in request");
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.deleteMissingId")));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.deleteMissingId")));
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -211,7 +211,7 @@ public class ClaudeProviderOperations {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Exception in handleDeleteProvider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.deleteFailed", e.getMessage())));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.deleteFailed", e.getMessage())));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ public class ClaudeProviderOperations {
|
||||
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showSwitchSuccess",
|
||||
context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("toast.providerDisabled")));
|
||||
context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerDisabled")));
|
||||
handleGetProviders();
|
||||
handleGetActiveProvider();
|
||||
});
|
||||
@@ -245,7 +245,7 @@ public class ClaudeProviderOperations {
|
||||
LOG.warn("[ProviderHandler] Local settings.json does not exist at: " + settingsPath);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError",
|
||||
context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("error.localProviderSettingsNotFound")));
|
||||
context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.localProviderSettingsNotFound")));
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -258,7 +258,7 @@ public class ClaudeProviderOperations {
|
||||
LOG.error("[ProviderHandler] Invalid JSON in settings.json: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError",
|
||||
context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("error.localProviderInvalidJson", e.getMessage())));
|
||||
context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.localProviderInvalidJson", e.getMessage())));
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -277,7 +277,7 @@ public class ClaudeProviderOperations {
|
||||
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showSwitchSuccess",
|
||||
context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("toast.localProviderSwitchSuccess")));
|
||||
context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.localProviderSwitchSuccess")));
|
||||
handleGetProviders();
|
||||
handleGetActiveProvider();
|
||||
});
|
||||
@@ -288,14 +288,14 @@ public class ClaudeProviderOperations {
|
||||
context.getSettingsService().applyActiveProviderToClaudeSettings();
|
||||
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showSwitchSuccess", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("toast.providerSwitchSuccess") + com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.switchSyncClaude")));
|
||||
context.callJavaScript("window.showSwitchSuccess", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerSwitchSuccess") + com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.switchSyncClaude")));
|
||||
handleGetProviders();
|
||||
handleGetActiveProvider();
|
||||
});
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Failed to switch provider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("toast.providerSwitchFailed") + ": " + e.getMessage()));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerSwitchFailed") + ": " + e.getMessage()));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public class CodexProviderOperations {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Failed to add Codex provider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.addCodexFailed", e.getMessage())));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.addCodexFailed", e.getMessage())));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -103,7 +103,7 @@ public class CodexProviderOperations {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Failed to update Codex provider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.updateCodexFailed", e.getMessage())));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.updateCodexFailed", e.getMessage())));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -122,7 +122,7 @@ public class CodexProviderOperations {
|
||||
if (!data.has("id")) {
|
||||
LOG.error("[ProviderHandler] ERROR: Missing 'id' field in request");
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.deleteCodexMissingId")));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.deleteCodexMissingId")));
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -148,7 +148,7 @@ public class CodexProviderOperations {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Exception in handleDeleteCodexProvider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.deleteCodexFailed", e.getMessage())));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.deleteCodexFailed", e.getMessage())));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ public class CodexProviderOperations {
|
||||
context.getSettingsService().applyActiveProviderToCodexSettings();
|
||||
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showSwitchSuccess", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("toast.providerSwitchSuccess") + com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.switchSyncCodex")));
|
||||
context.callJavaScript("window.showSwitchSuccess", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerSwitchSuccess") + com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.switchSyncCodex")));
|
||||
handleGetCodexProviders(); // Refresh provider list
|
||||
handleGetCurrentCodexConfig(); // Refresh Codex CLI config display
|
||||
handleGetActiveCodexProvider(); // Refresh active provider config
|
||||
@@ -175,7 +175,7 @@ public class CodexProviderOperations {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[ProviderHandler] Failed to switch Codex provider: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("toast.providerSwitchFailed") + ": " + e.getMessage()));
|
||||
context.callJavaScript("window.showError", context.escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("toast.providerSwitchFailed") + ": " + e.getMessage()));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,11 +41,11 @@ public class FileExportHandler extends BaseMessageHandler {
|
||||
public boolean handle(String type, String content) {
|
||||
if ("save_markdown".equals(type)) {
|
||||
LOG.info("[FileExportHandler] 处理: save_markdown");
|
||||
handleSaveFile(content, ".md", com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.saveMarkdownDialog"));
|
||||
handleSaveFile(content, ".md", com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveMarkdownDialog"));
|
||||
return true;
|
||||
} else if ("save_json".equals(type)) {
|
||||
LOG.info("[FileExportHandler] 处理: save_json");
|
||||
handleSaveFile(content, ".json", com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.saveJsonDialog"));
|
||||
handleSaveFile(content, ".json", com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveJsonDialog"));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -111,7 +111,7 @@ public class FileExportHandler extends BaseMessageHandler {
|
||||
|
||||
// Notify frontend of success
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
String successMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.saved"));
|
||||
String successMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saved"));
|
||||
String jsCode = "if (window.addToast) { " +
|
||||
" window.addToast('" + successMsg + "', 'success'); " +
|
||||
"}";
|
||||
@@ -123,8 +123,8 @@ public class FileExportHandler extends BaseMessageHandler {
|
||||
|
||||
// Notify frontend of failure
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
String errorDetail = e.getMessage() != null ? e.getMessage() : com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.saveFailed");
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.saveFailedWithReason", errorDetail));
|
||||
String errorDetail = e.getMessage() != null ? e.getMessage() : com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveFailed");
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveFailedWithReason", errorDetail));
|
||||
String jsCode = "if (window.addToast) { " +
|
||||
" window.addToast('" + errorMsg + "', 'error'); " +
|
||||
"}";
|
||||
@@ -138,8 +138,8 @@ public class FileExportHandler extends BaseMessageHandler {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[FileExportHandler] ❌ 显示对话框失败: " + e.getMessage(), e);
|
||||
|
||||
String errorDetail = e.getMessage() != null ? e.getMessage() : com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.showDialogFailed");
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.saveFailedWithReason", errorDetail));
|
||||
String errorDetail = e.getMessage() != null ? e.getMessage() : com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.showDialogFailed");
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveFailedWithReason", errorDetail));
|
||||
String jsCode = "if (window.addToast) { " +
|
||||
" window.addToast('" + errorMsg + "', 'error'); " +
|
||||
"}";
|
||||
@@ -153,8 +153,8 @@ public class FileExportHandler extends BaseMessageHandler {
|
||||
LOG.error("[FileExportHandler] ❌ 处理保存请求失败: " + e.getMessage(), e);
|
||||
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
String errorDetail = e.getMessage() != null ? e.getMessage() : com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.unknownError");
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("file.saveFailedWithReason", errorDetail));
|
||||
String errorDetail = e.getMessage() != null ? e.getMessage() : com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.unknownError");
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("file.saveFailedWithReason", errorDetail));
|
||||
String jsCode = "if (window.addToast) { " +
|
||||
" window.addToast('" + errorMsg + "', 'error'); " +
|
||||
"}";
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeSDKBridge;
|
||||
import com.github.claudecodegui.provider.codex.CodexSDKBridge;
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.ui.jcef.JBCefBrowser;
|
||||
|
||||
@@ -261,7 +261,7 @@ public class McpServerHandler extends BaseMessageHandler {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[McpServerHandler] Failed to add MCP server: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("mcp.addServerFailedWithReason", e.getMessage()));
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.addServerFailedWithReason", e.getMessage()));
|
||||
callJavaScript("window.showError", errorMsg);
|
||||
});
|
||||
}
|
||||
@@ -284,7 +284,7 @@ public class McpServerHandler extends BaseMessageHandler {
|
||||
} catch (Exception e) {
|
||||
LOG.error("[McpServerHandler] Failed to update MCP server: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("mcp.updateServerFailedWithReason", e.getMessage()));
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.updateServerFailedWithReason", e.getMessage()));
|
||||
callJavaScript("window.showError", errorMsg);
|
||||
});
|
||||
}
|
||||
@@ -308,14 +308,14 @@ public class McpServerHandler extends BaseMessageHandler {
|
||||
});
|
||||
} else {
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("mcp.deleteServerFailedWithReason", com.github.claudecodegui.ClaudeCodeGuiBundle.message("mcp.serverNotFound")));
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.deleteServerFailedWithReason", com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.serverNotFound")));
|
||||
callJavaScript("window.showError", errorMsg);
|
||||
});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.error("[McpServerHandler] Failed to delete MCP server: " + e.getMessage(), e);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.ClaudeCodeGuiBundle.message("mcp.deleteServerFailedWithReason", e.getMessage()));
|
||||
String errorMsg = escapeJs(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("mcp.deleteServerFailedWithReason", e.getMessage()));
|
||||
callJavaScript("window.showError", errorMsg);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -167,8 +167,8 @@ public class PermissionHandler extends BaseMessageHandler {
|
||||
}
|
||||
|
||||
// Get the window instance for the target project
|
||||
com.github.claudecodegui.ClaudeChatWindow targetWindow =
|
||||
com.github.claudecodegui.ClaudeSDKToolWindow.getChatWindow(targetProject);
|
||||
com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow targetWindow =
|
||||
com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow.getChatWindow(targetProject);
|
||||
|
||||
if (targetWindow == null) {
|
||||
LOG.error("[PermissionHandler] Error: cannot find window instance for project " + targetProject.getName());
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.action.SendShortcutSync;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeHistoryReader;
|
||||
import com.github.claudecodegui.provider.codex.CodexHistoryReader;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.model.ConflictStrategy;
|
||||
import com.github.claudecodegui.model.PromptScope;
|
||||
import com.github.claudecodegui.settings.AbstractPromptManager;
|
||||
|
||||
@@ -50,9 +50,9 @@ public class ProviderImportExportSupport {
|
||||
LOG.info("[ProviderHandler] Database file exists: " + dbFile.exists());
|
||||
|
||||
if (!dbFile.exists()) {
|
||||
String errorMsg = com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.notFound", dbFile.getAbsolutePath());
|
||||
String errorMsg = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.notFound", dbFile.getAbsolutePath());
|
||||
LOG.error("[ProviderHandler] " + errorMsg);
|
||||
sendErrorToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.notFoundTitle"), errorMsg);
|
||||
sendErrorToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.notFoundTitle"), errorMsg);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class ProviderImportExportSupport {
|
||||
|
||||
if (providers.isEmpty()) {
|
||||
LOG.info("[ProviderHandler] No Claude provider configs found in database");
|
||||
sendInfoToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.noDataTitle"), com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.noData"));
|
||||
sendInfoToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.noDataTitle"), com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.noData"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -80,9 +80,9 @@ public class ProviderImportExportSupport {
|
||||
context.callJavaScript("window.import_preview_result", context.escapeJs(jsonStr));
|
||||
|
||||
} catch (Exception e) {
|
||||
String errorDetails = com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailed") + ": " + e.getMessage();
|
||||
String errorDetails = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailed") + ": " + e.getMessage();
|
||||
LOG.error("[ProviderHandler] " + errorDetails, e);
|
||||
sendErrorToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailedTitle"), errorDetails);
|
||||
sendErrorToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailedTitle"), errorDetails);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -103,8 +103,8 @@ public class ProviderImportExportSupport {
|
||||
false // chooseMultiple
|
||||
);
|
||||
|
||||
descriptor.setTitle(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.selectTitle"));
|
||||
descriptor.setDescription(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.selectDesc"));
|
||||
descriptor.setTitle(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.selectTitle"));
|
||||
descriptor.setDescription(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.selectDesc"));
|
||||
descriptor.withFileFilter(file -> {
|
||||
String name = file.getName().toLowerCase();
|
||||
return name.endsWith(".db");
|
||||
@@ -131,7 +131,7 @@ public class ProviderImportExportSupport {
|
||||
|
||||
if (selectedFiles.length == 0) {
|
||||
LOG.info("[ProviderHandler] User cancelled file selection");
|
||||
sendInfoToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.cancelledTitle"), com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.cancelled"));
|
||||
sendInfoToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.cancelledTitle"), com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.cancelled"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -143,18 +143,18 @@ public class ProviderImportExportSupport {
|
||||
LOG.info("[ProviderHandler] Database file exists: " + dbFile.exists());
|
||||
|
||||
if (!dbFile.exists()) {
|
||||
String errorMsg = com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.notFound", dbFile.getAbsolutePath());
|
||||
String errorMsg = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.notFound", dbFile.getAbsolutePath());
|
||||
LOG.error("[ProviderHandler] " + errorMsg);
|
||||
sendErrorToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.notFoundTitle"), errorMsg);
|
||||
sendErrorToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.notFoundTitle"), errorMsg);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dbFile.canRead()) {
|
||||
String errorMsg = com.github.claudecodegui.ClaudeCodeGuiBundle.message("error.cannotReadFile") + "\n" +
|
||||
String errorMsg = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.cannotReadFile") + "\n" +
|
||||
dbFile.getAbsolutePath() + "\n" +
|
||||
com.github.claudecodegui.ClaudeCodeGuiBundle.message("error.checkFilePermissions");
|
||||
com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.checkFilePermissions");
|
||||
LOG.error("[ProviderHandler] " + errorMsg);
|
||||
sendErrorToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.permissionErrorTitle"), errorMsg);
|
||||
sendErrorToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.permissionErrorTitle"), errorMsg);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ public class ProviderImportExportSupport {
|
||||
|
||||
if (providers.isEmpty()) {
|
||||
LOG.info("[ProviderHandler] No Claude provider configs found in database");
|
||||
sendInfoToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.noDataTitle"), com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.noData"));
|
||||
sendInfoToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.noDataTitle"), com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.noData"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -183,16 +183,16 @@ public class ProviderImportExportSupport {
|
||||
context.callJavaScript("window.import_preview_result", context.escapeJs(jsonStr));
|
||||
|
||||
} catch (Exception e) {
|
||||
String errorDetails = com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailed") + ": " + e.getMessage();
|
||||
String errorDetails = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailed") + ": " + e.getMessage();
|
||||
LOG.error("[ProviderHandler] " + errorDetails, e);
|
||||
sendErrorToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailedTitle"), errorDetails);
|
||||
sendErrorToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.readFailedTitle"), errorDetails);
|
||||
}
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
String errorDetails = com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.fileChooserFailed") + ": " + e.getMessage();
|
||||
String errorDetails = com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.fileChooserFailed") + ": " + e.getMessage();
|
||||
LOG.error("[ProviderHandler] " + errorDetails, e);
|
||||
sendErrorToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.fileChooserFailedTitle"), errorDetails);
|
||||
sendErrorToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.fileChooserFailedTitle"), errorDetails);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -221,12 +221,12 @@ public class ProviderImportExportSupport {
|
||||
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
claudeOps.handleGetProviders(); // Refresh UI
|
||||
sendInfoToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.importSuccessTitle"), com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.importSuccess", count));
|
||||
sendInfoToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.importSuccessTitle"), com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.importSuccess", count));
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
LOG.error("Failed to save imported providers", e);
|
||||
sendErrorToFrontend(com.github.claudecodegui.ClaudeCodeGuiBundle.message("provider.ccswitch.saveFailedTitle"), e.getMessage());
|
||||
sendErrorToFrontend(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("provider.ccswitch.saveFailedTitle"), e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.bridge.NodeDetector;
|
||||
import com.github.claudecodegui.model.NodeDetectionResult;
|
||||
import com.github.claudecodegui.notifications.ClaudeNotifier;
|
||||
@@ -385,8 +385,8 @@ public class SessionHandler extends BaseMessageHandler {
|
||||
// (relative paths are resolved only when projectPath is valid).
|
||||
if (projectPath != null && new File(projectPath).exists()) {
|
||||
try {
|
||||
com.github.claudecodegui.CodemossSettingsService settingsService =
|
||||
new com.github.claudecodegui.CodemossSettingsService();
|
||||
com.github.claudecodegui.settings.CodemossSettingsService settingsService =
|
||||
new com.github.claudecodegui.settings.CodemossSettingsService();
|
||||
String customWorkingDir = settingsService.getCustomWorkingDirectory(projectPath);
|
||||
|
||||
if (customWorkingDir != null && !customWorkingDir.isEmpty()) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.CodexSkillService;
|
||||
import com.github.claudecodegui.SkillService;
|
||||
import com.github.claudecodegui.skill.CodexSkillService;
|
||||
import com.github.claudecodegui.skill.SkillService;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.util.SoundNotificationService;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ClaudeSDKToolWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.github.claudecodegui.settings.TabStateService;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.github.claudecodegui.handler;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.util.TokenUsageUtils;
|
||||
import com.github.claudecodegui.util.EditorFileUtils;
|
||||
import com.github.claudecodegui.util.IgnoreRuleMatcher;
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler.diff;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
import com.github.claudecodegui.util.ContentRebuildUtil;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.fileTypes.FileTypes;
|
||||
import com.github.claudecodegui.util.LineSeparatorUtil;
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler.diff;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.handler.diff;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
import com.github.claudecodegui.util.ContentRebuildUtil;
|
||||
import com.github.claudecodegui.util.EditorFileUtils;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.i18n;
|
||||
|
||||
import com.intellij.DynamicBundle;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.notifications;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.util.SoundNotificationService;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.notifications;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.wm.CustomStatusBarWidget;
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
/**
|
||||
* Permission request dialog.
|
||||
|
||||
+1
-3
@@ -1,8 +1,6 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.permission;
|
||||
|
||||
import com.google.gson.*;
|
||||
import com.github.claudecodegui.permission.PermissionDialog;
|
||||
import com.github.claudecodegui.permission.PermissionRequest;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.provider.claude;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.provider.common.DaemonBridge;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
import com.github.claudecodegui.provider.common.SDKResult;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.provider.claude;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.bridge.EnvironmentConfigurator;
|
||||
import com.github.claudecodegui.bridge.NodeDetector;
|
||||
import com.github.claudecodegui.bridge.ProcessManager;
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.provider.claude;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.github.claudecodegui.provider.claude;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.model.NodeDetectionResult;
|
||||
import com.github.claudecodegui.provider.common.BaseSDKBridge;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
|
||||
@@ -4,8 +4,8 @@ import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.dependency.DependencyManager;
|
||||
import com.github.claudecodegui.provider.common.BaseSDKBridge;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.github.claudecodegui.service;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeSDKBridge;
|
||||
import com.github.claudecodegui.provider.codex.CodexSDKBridge;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.permission.PermissionRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession.Message;
|
||||
import com.github.claudecodegui.session.ClaudeSession.Message;
|
||||
import com.github.claudecodegui.handler.SettingsHandler;
|
||||
import com.github.claudecodegui.notifications.ClaudeNotifier;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
|
||||
+1
-7
@@ -1,15 +1,9 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.permission.PermissionManager;
|
||||
import com.github.claudecodegui.permission.PermissionRequest;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeSDKBridge;
|
||||
import com.github.claudecodegui.provider.codex.CodexSDKBridge;
|
||||
import com.github.claudecodegui.session.SessionContextService;
|
||||
import com.github.claudecodegui.session.SessionCallbackFacade;
|
||||
import com.github.claudecodegui.session.SessionMessageOrchestrator;
|
||||
import com.github.claudecodegui.session.SessionProviderRouter;
|
||||
import com.github.claudecodegui.session.SessionSendService;
|
||||
import com.github.claudecodegui.session.SessionState;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -2,7 +2,7 @@ package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
import com.github.claudecodegui.provider.common.SDKResult;
|
||||
import com.github.claudecodegui.ClaudeSession.Message;
|
||||
import com.github.claudecodegui.session.ClaudeSession.Message;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.handler.PermissionHandler;
|
||||
import com.github.claudecodegui.permission.PermissionRequest;
|
||||
import com.github.claudecodegui.util.JsUtils;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.notifications.ClaudeNotifier;
|
||||
import com.github.claudecodegui.permission.PermissionRequest;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.service.RunConfigMonitorService;
|
||||
import com.github.claudecodegui.terminal.TerminalMonitorService;
|
||||
import com.google.gson.JsonArray;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
import com.github.claudecodegui.handler.SettingsHandler;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeSDKBridge;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
/**
|
||||
* Session load service (singleton).
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.handler.SettingsHandler;
|
||||
import com.github.claudecodegui.notifications.ClaudeNotifier;
|
||||
import com.github.claudecodegui.util.TokenUsageUtils;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.notifications.ClaudeNotifier;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeSDKBridge;
|
||||
import com.github.claudecodegui.provider.codex.CodexSDKBridge;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
import com.github.claudecodegui.util.JsUtils;
|
||||
import com.github.claudecodegui.util.MessageJsonConverter;
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.settings;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.model.ConflictStrategy;
|
||||
import com.github.claudecodegui.model.DeleteResult;
|
||||
import com.github.claudecodegui.model.PromptScope;
|
||||
import com.github.claudecodegui.settings.*;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonObject;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.settings;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.bridge.NodeDetector;
|
||||
import com.github.claudecodegui.model.DeleteResult;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
+1
-2
@@ -1,7 +1,6 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.skill;
|
||||
|
||||
import com.github.claudecodegui.settings.CodexSettingsManager;
|
||||
import com.github.claudecodegui.skill.SkillFrontmatterParser;
|
||||
import com.github.claudecodegui.util.PlatformUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.skill;
|
||||
|
||||
import com.github.claudecodegui.skill.SkillFrontmatterParser;
|
||||
import com.github.claudecodegui.util.PlatformUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.skill;
|
||||
|
||||
import com.github.claudecodegui.CodexSkillService;
|
||||
import com.github.claudecodegui.skill.CodexSkillService;
|
||||
import com.github.claudecodegui.util.PlatformUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.github.claudecodegui.ui;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.handler.AgentHandler;
|
||||
import com.github.claudecodegui.handler.ClipboardHandler;
|
||||
import com.github.claudecodegui.handler.CodexMcpServerHandler;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.ui;
|
||||
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.util.IgnoreRuleMatcher;
|
||||
import com.github.claudecodegui.util.JsUtils;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ErrorPanelBuilder {
|
||||
bottomPanel.setBorder(BorderFactory.createEmptyBorder(10, 20, 20, 20));
|
||||
bottomPanel.setBackground(new Color(30, 30, 30));
|
||||
|
||||
JLabel nodeLabel = new JLabel(com.github.claudecodegui.ClaudeCodeGuiBundle.message("error.nodePathLabel"));
|
||||
JLabel nodeLabel = new JLabel(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.nodePathLabel"));
|
||||
nodeLabel.setForeground(Color.WHITE);
|
||||
nodeLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||
|
||||
@@ -74,7 +74,7 @@ public class ErrorPanelBuilder {
|
||||
LOG.warn("Failed to preload Node.js path: " + e.getMessage());
|
||||
}
|
||||
|
||||
JButton saveAndRetryButton = new JButton(com.github.claudecodegui.ClaudeCodeGuiBundle.message("error.saveButton"));
|
||||
JButton saveAndRetryButton = new JButton(com.github.claudecodegui.i18n.ClaudeCodeGuiBundle.message("error.saveButton"));
|
||||
saveAndRetryButton.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||
saveAndRetryButton.addActionListener(e -> {
|
||||
String manualPath = nodeField.getText();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.ui;
|
||||
|
||||
import com.github.claudecodegui.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.bridge.NodeDetector;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeSDKBridge;
|
||||
|
||||
+4
-1
@@ -1,5 +1,8 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.ui.detached;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow;
|
||||
import com.intellij.ide.ui.LafManagerListener;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.ui.detached;
|
||||
|
||||
import com.github.claudecodegui.ui.toolwindow.ClaudeChatWindow;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
+4
-1
@@ -1,4 +1,4 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.ui.toolwindow;
|
||||
|
||||
import com.github.claudecodegui.action.SendShortcutSync;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
@@ -9,9 +9,12 @@ import com.github.claudecodegui.permission.PermissionService;
|
||||
import com.github.claudecodegui.provider.claude.ClaudeSDKBridge;
|
||||
import com.github.claudecodegui.provider.codex.CodexSDKBridge;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.session.SessionCallbackAdapter;
|
||||
import com.github.claudecodegui.session.SessionLifecycleManager;
|
||||
import com.github.claudecodegui.session.SessionLoadService;
|
||||
import com.github.claudecodegui.session.StreamMessageCoalescer;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.ui.ChatWindowDelegate;
|
||||
import com.github.claudecodegui.ui.EditorContextTracker;
|
||||
import com.github.claudecodegui.ui.WebviewInitializer;
|
||||
+5
-3
@@ -1,7 +1,9 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.ui.toolwindow;
|
||||
|
||||
import com.github.claudecodegui.i18n.ClaudeCodeGuiBundle;
|
||||
import com.github.claudecodegui.settings.TabStateService;
|
||||
import com.github.claudecodegui.startup.BridgePreloader;
|
||||
import com.github.claudecodegui.ui.detached.DetachedWindowManager;
|
||||
import com.github.claudecodegui.util.PlatformUtils;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -112,14 +114,14 @@ public class ClaudeSDKToolWindow implements ToolWindowFactory, DumbAware {
|
||||
* Mark a Content as being detached (moving to a floating window).
|
||||
* This prevents the contentRemoved listener from disposing the associated ClaudeChatWindow.
|
||||
*/
|
||||
static void markContentAsDetaching(Content content) {
|
||||
public static void markContentAsDetaching(Content content) {
|
||||
detachingContents.add(content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the detaching mark from a Content after the detach operation is complete.
|
||||
*/
|
||||
static void unmarkContentAsDetaching(Content content) {
|
||||
public static void unmarkContentAsDetaching(Content content) {
|
||||
detachingContents.remove(content);
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.github.claudecodegui;
|
||||
package com.github.claudecodegui.ui.toolwindow;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.util;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.handler.HandlerContext;
|
||||
import com.github.claudecodegui.handler.SettingsHandler;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.util;
|
||||
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import javazoom.jl.decoder.JavaLayerException;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.util;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.watcher;
|
||||
|
||||
import com.github.claudecodegui.CodemossSettingsService;
|
||||
import com.github.claudecodegui.settings.CodemossSettingsService;
|
||||
import com.github.claudecodegui.model.PromptScope;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<!-- CC GUI tool window (includes history feature) -->
|
||||
<toolWindow id="CCG"
|
||||
anchor="right"
|
||||
factoryClass="com.github.claudecodegui.ClaudeSDKToolWindow"
|
||||
factoryClass="com.github.claudecodegui.ui.toolwindow.ClaudeSDKToolWindow"
|
||||
icon="/icons/cc-gui-icon.svg"
|
||||
canCloseContents="true"/>
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<actions>
|
||||
<!-- Action to send selected code to terminal -->
|
||||
<action id="ClaudeCodeGUI.SendSelectionToTerminalAction"
|
||||
class="com.github.claudecodegui.SendSelectionToTerminalAction"
|
||||
class="com.github.claudecodegui.action.editor.SendSelectionToTerminalAction"
|
||||
icon="/icons/send-to-terminal.svg">
|
||||
<!-- Add to editor context menu (displayed at the top) -->
|
||||
<add-to-group group-id="EditorPopupMenu" anchor="first"/>
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
<!-- Quick Fix with Claude Action -->
|
||||
<action id="ClaudeCodeGUI.QuickFixWithClaudeAction"
|
||||
class="com.github.claudecodegui.QuickFixWithClaudeAction"
|
||||
class="com.github.claudecodegui.action.editor.QuickFixWithClaudeAction"
|
||||
icon="/icons/quick-fix.svg">
|
||||
<add-to-group group-id="EditorPopupMenu"
|
||||
anchor="after"
|
||||
@@ -100,27 +100,27 @@
|
||||
|
||||
<!-- Create New Tab Action (can be invoked via Find Action or programmatically) -->
|
||||
<action id="ClaudeCodeGUI.CreateNewTabAction"
|
||||
class="com.github.claudecodegui.CreateNewTabAction"
|
||||
class="com.github.claudecodegui.action.tab.CreateNewTabAction"
|
||||
icon="AllIcons.General.Add"/>
|
||||
|
||||
<!-- Rename Tab Action -->
|
||||
<action id="ClaudeCodeGUI.RenameTabAction"
|
||||
class="com.github.claudecodegui.RenameTabAction"
|
||||
class="com.github.claudecodegui.action.tab.RenameTabAction"
|
||||
icon="AllIcons.Actions.Edit"/>
|
||||
|
||||
<!-- Detach Tab Action -->
|
||||
<action id="ClaudeCodeGUI.DetachTabAction"
|
||||
class="com.github.claudecodegui.DetachTabAction"
|
||||
class="com.github.claudecodegui.action.tab.DetachTabAction"
|
||||
icon="AllIcons.Actions.MoveToWindow"/>
|
||||
|
||||
<!-- Open DevTools Action for JCEF debugging -->
|
||||
<action id="ClaudeCodeGUI.OpenDevToolsAction"
|
||||
class="com.github.claudecodegui.OpenDevToolsAction"
|
||||
class="com.github.claudecodegui.action.dev.OpenDevToolsAction"
|
||||
icon="AllIcons.Xml.Browsers.Chromium"/>
|
||||
|
||||
<!-- Action to send file path from the file tree to the input box -->
|
||||
<action id="ClaudeCodeGUI.SendFilePathToInputAction"
|
||||
class="com.github.claudecodegui.SendFilePathToInputAction"
|
||||
class="com.github.claudecodegui.action.editor.SendFilePathToInputAction"
|
||||
icon="/icons/send-to-terminal.svg">
|
||||
<!-- Add to project file tree context menu -->
|
||||
<add-to-group group-id="ProjectViewPopupMenu" anchor="first"/>
|
||||
@@ -128,7 +128,7 @@
|
||||
|
||||
<!-- Generate Commit Message with AI Action -->
|
||||
<action id="ClaudeCodeGUI.GenerateCommitMessageAction"
|
||||
class="com.github.claudecodegui.GenerateCommitMessageAction"
|
||||
class="com.github.claudecodegui.action.vcs.GenerateCommitMessageAction"
|
||||
icon="/icons/logo-16.png">
|
||||
<!-- Add to VCS Commit toolbar -->
|
||||
<add-to-group group-id="Vcs.MessageActionGroup" anchor="last"/>
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.provider.claude;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.provider.common.MessageCallback;
|
||||
import com.github.claudecodegui.provider.common.SDKResult;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import org.junit.Rule;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.claudecodegui.session;
|
||||
|
||||
import com.github.claudecodegui.ClaudeSession;
|
||||
import com.github.claudecodegui.session.ClaudeSession;
|
||||
import com.github.claudecodegui.permission.PermissionRequest;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
Reference in New Issue
Block a user