Fix ISSUE:The parameter max_tokens specified in the request are not…#1
Open
Fix ISSUE:The parameter max_tokens specified in the request are not…#1
max_tokens specified in the request are not…#1Conversation
… valid: max_tokens and max_completion_tokens cannot be set at the same time;Refactor maxTokens assignment in AbstractLlmService 在依赖的agentscope中OpenAIChatFormatter.java第107-110行,代码同时将maxTokens设置到了OpenAIRequest的maxCompletionTokens和maxTokens两个字段中,这导致了API返回400错误,因为这两个参数是互斥的。根据OpenAI API文档,max_completion_tokens是较新的参数,用于替代max_tokens,所以应该只设置其中一个。
* feat(coding): 添加 HiCoding 功能模块
- 新增 AgentMessage 组件用于显示 AI 消息
- 实现 ChatStream 组件用于聊天消息流展示
- 创建 CodingInput 组件提供编码会话输入功能
- 开发 CodingSidebar 组件管理编码任务列表
- 构建 CodingTopBar 组件显示状态和配置选项
- 添加 CodingWelcome 组件作为欢迎界面
- 实现 DiffViewer 组件用于文件差异对比
- 创建 PermissionDialog 组件处理权限请求确认
- 开发 PlanDisplay 组件展示任务计划
- 添加 SlashMenu 组件提供命令菜单功能
- 实现 TerminalOutput 组件显示终端输出
- 创建 ThoughtBlock 组件展示思考过程
- 开发 ToolCallCard 组件显示工具调用卡片
- 添加 ToolPanel 组件提供工具面板功能
- 实现 UserMessage 组件显示用户消息
- 在 Header 组件中添加 HiCoding 导航标签
- 创建 CodingSessionContext 提供编码会话上下文管理
* fix
* fix
* feat(coding): 添加文件渲染器和预览功能
- 新增 ArtifactRenderer 组件用于根据文件类型渲染不同内容
- 实现 HtmlRenderer、MarkdownRenderer、SvgRenderer、ImageRenderer、PdfRenderer 等渲染器
- 添加 FileRenderer 用于显示文件类型的通用预览界面
- 集成 ArtifactPreview 组件支持文件预览和下载功能
- 在 AgentMessage 中添加 compact 变体样式选项
- 扩展 ChatStream 组件支持工作单元卡片和滚动功能
- 为 CodingInput 添加文件附件上传和拖拽支持功能
- 更新 PlanDisplay 组件支持内联变体和展开收起功能
- 新增 ChangesView 组件用于显示代码变更差异
- 集成 Ant Design Image 组件用于图片预览功能
* docs(acp): 添加 Agent Client Protocol 网站文档和规范说明
- 新增多个 ACP 相关页面文档,包括入门介绍、架构说明、客户端、代理及库列表
- 更新 ACP 注册表说明,涵盖代理列表及使用提交流程
- 添加多语言库支持介绍文档,包含 Kotlin、Python、Rust、TypeScript 和社区维护库
- 补充.gitignore 文件,忽略新的工作空间目录
- 新增 AGENTS.md,规范所有答复均使用简体中文回复
* feat(hicoding): initial commit of HiWork module and integrate multi-tenant AI IDE support
- Add comprehensive requirements document detailing HiWork design and user stories
- Implement WebSocket-to-stdio ACP proxy and AgentRun lifecycle management specifications
- Define multi-tenant session isolation, resource limits, and support for multiple Agent types
- Update workspace path handling to properly resolve absolute and relative paths securely
- Extend token utility to support JWT expiration with day unit
- Increase JWT expiration duration from 2 hours to 7 days in configuration
- Rename UI labels from "HiCoding" to "HiWork" to reflect rebranding
- Enhance DiffViewer to use 'diff' library for better diff line handling and display
- Add user scroll interaction detection and task completion toast with browser notifications
- Add queued prompt handling in CodingInput with UI for queued messages management
- Introduce unit tests for ChangesView and ChatStream components to improve test coverage
- Add new dependencies like 'diff', 'vitest', and testing-library for improved development experience
- Include TerminalView component import and adjustments for RightPanel enhancements
* refactor(quest): rename coding components and context to quest
- Rename all components and context files from 'coding' to 'quest'
- Update imports and references in all affected files accordingly
- Replace useCodingState and useCodingDispatch hooks with quest equivalents
- Rename CodingSessionContext and related types to QuestSessionContext
- Adjust routing and page components from /coding to /quest and related names
- Introduce auto-permission logic in useAcpSession for permission requests
- Modify Header tabs to replace "/coding" path with "/quest" for HiWork tab
- Update tests and mocks to use QuestSessionContext instead of CodingSessionContext
* feat(coding): add interactive terminal and workspace file tree features
- Add TerminalProcess class using pty4j for PTY shell processes
- Implement TerminalWebSocketHandler for WebSocket-based shell interaction
- Update SecurityConfig to allow /ws/terminal WebSocket endpoint
- Register TerminalWebSocketHandler in WebSocketConfig
- Add DevProxyController to proxy requests to local dev servers by port
- Extend WorkspaceController with API for directory tree retrieval with depth control
- Enhance ResponseAdvice to support Mono types in unified response handling
- Incorporate terminal-related dependencies in pom.xml (pty4j)
- Introduce coding UI components: Header tab, CodingTopBar, EditorArea, FileTree,
PreviewPanel, TerminalPanel with xterm.js integration and WebSocket connection
- Update frontend dependencies to add @monaco-editor/react, @xterm/xterm, and addons
- Add UX improvements for workspace file browsing and terminal output handling
- Maintain security and error handling standards in new WebSocket and REST endpoints
* feat(quest): add clickable file path links and merge consecutive tool calls
- Enhance AgentMessage to linkify file paths with clickable, accessible spans
- Add onOpenFile handlers to AgentMessage, ChatStream, WorkUnitCard and Coding page
- Implement file path open logic in CodingContent with content fetching and tab switching
- Refactor ToolCallCard: introduce EditCard and ExecuteCard components with expandable diffs and commands
- Add merged rendering of consecutive auxiliary tool calls in WorkUnitCard with expandable group rows
- Improve ThoughtBlock with streaming duration display and adaptive styles
- Update UI colors and typography for better consistency in PlanDisplay, ThoughtBlock, and ToolCallCard
- Fix styling and accessibility issues on interactive elements across components
* feat(quest): add file mention menu with filtering and keyboard navigation
- Introduce FileMentionMenu component to display file list with icons and selection support
- Implement flattening and filtering utilities for file trees matching input queries
- Add "@" mention detection in QuestInput to trigger file mention menu with filter
- Enable keyboard navigation (arrow keys, enter) and mouse selection in mention menu
- Load and cache workspace file tree asynchronously on first mention trigger
- Insert selected file mention text and create file path attachments in input context
- Show loading and empty states in mention menu during file fetch and filtering
- Update QuestInput state and handlers to support mention menu visibility and interactions
* feat(acp): 支持多种 ACP CLI Provider 并实现动态选择
- 扩展配置支持多个 CLI Provider,包括命令、参数和环境变量配置
- 新增 /cli-providers 接口,列出所有可用的 CLI Provider 并检测命令可用性
- WebSocket 握手时支持通过查询参数选择特定 CLI Provider,默认使用全局配置
- AcpProcess 支持传入额外环境变量,增强子进程启动灵活性
- 修改前端 ACL 路由,新增 /cli-providers 路径支持
- 增加了多种 CLI Provider 的单元及集成测试,覆盖初始化、会话与命令可用性检测
- 统一日志与错误处理,清晰标示具体 CLI Provider 的启动与通讯状态
* refactor(ui): 将下拉选择控件替换为Ant Design组件
- 将CliProviderSelect中的原生select替换为Ant Design的Select组件
- 优化CliProviderSelect的样式和交互,支持禁用选项显示
- CodingTopBar和QuestTopBar中模型选择下拉也改用Ant Design的Select
- update application.yml,新增opencode CLI命令配置,修改qwen-code命令名链接
* style(frontend): 优化界面字体样式与布局细节
- 统一调整聊天和任务相关组件中的字体大小和行距,提升文本可读性
- 优化各组件的间距和圆角样式,增强界面一致性和美观度
- WorkUnitCard组件改进动作区域的展开逻辑,避免手动切换时自动展开干扰
- PlanDisplay和ThoughtBlock组件调整边框和按钮样式,实现统一的交互体验
- Messages和AgentMessage组件详细调整Markdown渲染的样式类,提高视觉效果
- 更新index.css引入Inter和Noto Sans SC字体,并优化字体平滑显示效果
* feat(hicli): 集成 ACP 调试前端模块 HiCli
- 迁移 acp-demo ACP 协议调试功能到 himarket-frontend,形成独立 HiCli 模块
- 扩展 QuestSessionContext,新增调试相关状态和 action,管理原始消息与聚合日志
- 实现 useHiCliSession Hook,支持 WebSocket 连接、日志处理及会话操作
- 新建 HiCli 专用组件(HiCliSelector、HiCliTopBar、AcpLogPanel、AgentInfoCard 等)
- 创建 HiCli 页面,集成聊天区和调试面板,支持多会话切换和权限请求
- 使用 Tailwind CSS 与 Ant Design 统一样式,替代 acp-demo 原生 CSS
- 添加 /hicli 路由及导航标签,确保与平台其他模块风格和流程一致
- 迁移日志聚合器和日志过滤器,新增对应的属性测试保障正确性
- 完成 Agent 信息展示、ACL 日志面板、调试标签切换等核心功能需求
- 在服务器配置中新增 isolateHome 选项,实现 CLI 工具凭证隔离机制
* feat(acp-error-response): 实现ACP错误响应的对话流展示
- 新增 ChatItemError 类型,支持完整错误码、消息及扩展数据存储
- 在 questReducer 中新增 PROMPT_ERROR action,追加错误消息且更新处理状态
- 修改 useAcpSession 和 useHiCliSession Hook,捕获并分发 PROMPT_ERROR 替代原错误处理
- 创建 ErrorMessage 组件以视觉区分错误信息,支持错误码、消息及扩展数据展示
- 扩展 ChatStream 组件以渲染 error 类型 ChatItem
- 完整链路确保ACP错误响应从resolveResponse到UI展示错误信息不丢失
- 使用 fast-check 实现多项属性测试覆盖类型定义、状态更新、Hook行为及UI渲染等关键环节
* feat(runtime): 实现多运行时策略抽象与 K8s 支持
- 引入 RuntimeAdapter 接口及 LocalRuntimeAdapter 和 K8sRuntimeAdapter 实现
- 设计 RuntimeFactory 根据类型创建对应运行时实例
- 统一后端通过 RuntimeAdapter 管理 CLI 进程生命周期和通信
- 前端新增 RuntimeSelector 组件支持运行时方案选择
- useAcpSession Hook 扩展支持运行时参数传递
- 完成文件系统抽象和通信适配,保障跨运行时一致性
- 集成 K8s 客户端动态管理 Pod,实现沙箱隔离和资源限制
- 支持运行时健康检查及异常通知机制,提升稳定性
- 提供详细设计文档和多项属性基测试保障正确性和安全性
* refactor(acp-session): 重构hiwork和hicoding会话为延迟连接模式
- 引入欢迎页和CLI选择器,页面加载时不再自动建立WebSocket连接
- 选择CLI后构建连接URL并建立连接,连接成功后自动创建Quest会话
- 移除QuestTopBar和CodingTopBar顶部栏中的CLI切换下拉框
- 侧边栏底部新增切换工具按钮,实现断开连接并返回欢迎页
- useAcpSession和useAcpWebSocket支持URL为空时不自动连接
- 新增autoCreatedRef状态,断开连接时重置,防止切换后会话丢失
- 提取公共CliSelector组件复用hiwork、hicoding和hicli的CLI选择逻辑
- 设计并计划基于属性的测试确保Reset State、连接管理及状态同步的正确性
* feat(workspace): 限制文件预览大小并优化目录树展示
- 新增文件大小限制,文本文件最大2MB,二进制文件最大20MB,超过限制返回413错误
- 文件预览接口支持根据编码(utf-8/base64)正确返回内容
- 编辑器支持显示图片类型文件,新增ImageRenderer渲染图片内容
- 目录树节点限制最多展示2000个,超出时标记truncated并在UI显示警告信息
- 增加前端文件
* feat(auth-architecture): 设计CLI Agent凭证归属与认证架构
- 制定多租户环境下CLI工具凭证的归属模型,包括平台凭证、用户凭证和混合模式
- 定义开源CLI与商业CLI的认证策略分类及凭证注入机制
- 设计凭证的安全存储方案,支持加密、访问控制和轮换管理
- 设计凭证自动注入机制,实现无感知认证启动体验
- 设计用户凭证管理界面,支持凭证绑定、验证和撤销
- 管理平台凭证与用户用量配额,控制调用额度和访问权限
- 实现认证架构与多运行时环境(Local、K8s)无缝集成
- 定义从POC到生产的认证架构分阶段演进策略
- 优先推荐使用开源CLI与自有模型端点,提升平台控制力
* feat(cli): 实现自定义模型配置支持并集成至CLI启动流程
- 定义 CustomModelConfig 数据模型,支持 baseUrl、apiKey、modelId、modelName、protocolType字段及校验
- 实现 CliConfigGenerator 接口及两种生成器 OpenCodeConfigGenerator 和 QwenCodeConfigGenerator
- 支持生成并合并 opencode.json 与 .qwen/settings.json 文件,确保配置文件合法且包含用户自定义模型
- 扩展 AcpHandshakeInterceptor 从 WebSocket 查询参数解析 customModelConfig JSON,存入会话属性
- 在 AcpWebSocketHandler 启动CLI进程前注入自定义模型配置及环境变量,启动失败时清理生成的配置文件
- 扩展 CliProviderConfig 和响应,新增 supportsCustomModel 字段以标识支持自定义模型的CLI工具
- 前端新增 CustomModelForm 组件,动态展现自定义模型配置表单并完成字段校验
- 通过 WebSocket URL 查询参数传递序列化的自定义模型配置,实现前后端联动切换模型
- 在 application.yml 配置文件标记 OpenCode 和 QwenCode 支持自定义模型,默认其他CLI工具不支持
* refactor(mvn): 重命名配置文件并调整数据库迁移脚本版本
- 将 .mvn/jvm.config.bak 重命名为 .mvn/jvm.config
- 删除 .mvn/maven.config.bak 文件内容
- 将数据库迁移脚本 V6__Add_k8s_cluster_table.sql 重命名为 V7__Add_k8s_cluster_table.sql
* feat(cli-provider): 实现模型市场模型列表接口,支持前端选择已订阅模型
- 新增 BaseUrlExtractor 工具类,实现从产品路由配置提取模型接入点 baseUrl
- 新增 ProtocolTypeMapper 工具类,实现协议类型字符串映射
- 在 CliProviderController 中新增 GET /cli-providers/market-models 接口,返回当前开发者已订阅的 MODEL_API 类型模型列表及 apiKey
- 接口根据开发者主消费者获取订阅,筛选 APPROVED 状态且产品类型为 MODEL_API 的产品,跳过不符合条件的产品并记录日志
- 组装 MarketModelInfo DTO,包含 productId、name、modelId、baseUrl、protocolType、description
- 处理无主消费者、无订阅以及凭证缺失等边界情况,返回空列表及 null apiKey
- 日志打印关键警告信息,保证接口鲁棒性与正确性
* feat(cli-mcp-skill): 集成市场 MCP Server 和 Skill 支持
- 新增后端接口 GET /cli-providers/market-mcps,返回已订阅 MCP Server 列表及认证信息
- 新增后端接口 GET /cli-providers/market-skills,返回已发布 Skill 列表,无需认证
- 扩展 CliSessionConfig 数据模型,支持传递 customModelConfig、mcpServers 和 skills
- AcpHandshakeInterceptor 支持解析 cliSessionConfig 参数,保持向后兼容 customModelConfig 参数
- AcpWebSocketHandler 启动时调用 generateMcpConfig 和 generateSkillConfig 注入 MCP 和 Skill 配置
- 扩展 CliConfigGenerator 接口,新增默认方法生成 MCP 和 Skill 配置,支持按需覆盖
- QwenCodeConfigGenerator 实现 MCP 配置写入 .qwen/settings.json 和 Skill 配置写入 .agents/skills/*/SKILL.md
- 新增前端 MarketMcpSelector 和 MarketSkillSelector 组件,实现 MCP Server 和 Skill 的列表展示及选择
- 扩展公共 CliSelector 组件状态管理,组装完整 CliSessionConfig 并通过 WebSocket 传递
- 扩展前端 API 接口,支持市场 MCP 和 Skill 的获取及 Skill 文件下载
- 增加 CliProviderConfig 和 CliProviderInfo 支持 MCP 和 Skill 的能力标记
- WebSocket URL 支持新增 cliSessionConfig 查询参数,兼容旧参数 customModelConfig
- 设计及测试文档详述架构方案、数据模型、错误处理及属性测试策略,保证功能正确性及兼容性
- 实现多种异常及边界处理逻辑,保证前后端稳定运行与良好体验
* test(hooks): 删除 useAcpSession 运行时 webcontainer 相关测试
- 移除 useAcpSession 中 WebContainer 适配器和文件同步服务相关代码
- 删除所有关于 WebContainer 运行时的单元测试用例
- 去除 package.json 中 @webcontainer/api 依赖
- 调整 useAcpSession 测试只覆盖 WebSocket 通信分支
- 移除 webcontainer 模式下的错误处理及连接管理代码
- 删除 FileSyncService 及相关测试代码和依赖
- 简化 useAcpSession 返回,不再包含 runtimeError 和 reconnect 特殊处理
* feat(sidecar): 实现支持多 CLI 的 Node.js Sidecar Server替代 websocat
- 新增基于 Node.js 的 Sidecar Server,支持通过 WebSocket URL 动态指定 CLI 命令
- Sidecar Server 维护命令白名单,拒绝非白名单命令连接
- 实现多并发 WebSocket 会话隔离与双向消息桥接 CLI stdin/stdout
- 完善 CLI 子进程生命周期管理,支持优雅关闭和异常处理
- 提供健康检查 HTTP 端点,反映当前连接数和进程数
- 改造沙箱镜像及入口脚本,移除 websocat 用新的 Sidecar Server 启动逻辑
- 后端 Java 代码改造:
- 移除 Pod 环境变量中的 CLI_COMMAND/CLI_ARGS,新增 ALLOWED_COMMANDS 参数
- 简化 Pod 复用逻辑,不再区分 provider 标签
- 动态构建 Sidecar WebSocket URI,包含 CLI 命令及参数
- AcpWebSocketHandler 传递 CLI 参数至 K8sRuntimeAdapter,注入配置到 Pod
- 新增属性和单元测试覆盖命令校验、URI 构造、Pod 规格及连接生命周期
- 优化日志和错误处理,提升系统稳定性和安全性
* refactor(runtime): 统一沙箱运行时架构与接口设计
- 引入 SandboxProvider 抽象,多种沙箱类型实现统一接口
- 本地沙箱启动 Sidecar Server,文件操作统一通过 Sidecar HTTP API
- K8s 沙箱改用 Pod 内 Sidecar HTTP API 替代 kubectl exec 操作文件
- 消除 Handler 中 Runtime 类型分支,统一通过 SandboxProvider 交互
- 实现 SandboxInitPipeline 统一初始化流程,所有沙箱共用
- 完善初始化阶段设计,支持沙箱获取、文件系统健康检查、配置注入等
- 新增 SandboxProviderRegistry 管理多种沙箱提供者实例
- 定义统一沙箱配置 SandboxConfig 和沙箱信息 SandboxInfo 结构
- 适配前端 WebSocket 与后端流水线调用,保证行为一致性
- 提升架构扩展性,支持未来新增 E2B 等多种沙箱类型
- 统一错误处理与重试策略,保证初始化可靠性
* chore(cleanup): ignore docs and remove local-generated files
* chore(gitignore): stop tracking docs directory
* fix(build): restore local CSB system dependency
* feat(sandbox): 支持 HiWork 与 HiCoding 沙箱模式对接
- HiWork 和 HiCoding 启用运行时选择器,支持本地与 K8s 运行时切换
- WebSocket URL 增加 sandboxMode 参数,K8s 模式传递 user 级沙箱参数
- HiWork 和 HiCoding 页面展示沙箱状态(creating、ready、error)
- K8s 沙箱就绪后自动创建 Quest,避免 Pod 未准备完成时请求失败
- HiCli CliSelector 补充传递 sandboxMode 参数及认证方案差异化支持
- 增加认证方案步骤,根据 CLI 工具支持展示分别认证选项
- 后端 CliProviderConfig 扩展 authOptions 和 authEnvVar,支持认证凭据注入环境变量
- 按 CLI 工具差异化生成 MCP 与 Skill 配置文件路径,新增相关 ConfigGenerator 实现
- 运行时选择单一选项时自动选中,提升用户体验
- 提供 Kiro CLI 沙箱认证待支持提示,禁用对应运行时连接按钮
- 增加全面的属性测试和单元测试覆盖正确性及异常处理
- 升级 Dockerfile 基础镜像,注释调整 Arthas 安装步骤
* feat(acp): 实现 HiWork 和 HiCoding 沙箱认证及配置支持
- 在后端 AcpProperties.CliProviderConfig 中新增 authOptions 和 authEnvVar 字段支持认证方案配置
- 扩展 CliProviderController 接口返回 authOptions 和 authEnvVar,支持前端渲染
- 在 AcpWebSocketHandler 中实现 authToken 注入环境变量逻辑,支持 CLI 子进程认证凭据传递
- 新增 ClaudeCodeConfigGenerator 和 QoderCliConfigGenerator,生成对应配置文件并支持 MCP 配置合并
- LocalSandboxProvider 支持通过 query 参数传递环境变量给 Sidecar,解决进程复用环境变量更新问题
- 前端扩展 ICliProvider、CliSessionConfig 类型,支持认证方案和 authToken 传递
- CliSelector 组件新增认证方案选择步骤,支持默认方案和 Personal Access Token 输入
- Claude Code + K8s 运行时显示 API Key 输入框,Kiro CLI + K8s 运行时禁用连接并展示提示
- HiWork(Quest.tsx)和 HiCoding(Coding.tsx)页面支持运行时选择和沙箱模式参数传递
- 连接流程支持 sandboxMode 传递,沙箱状态管理和自动创建 Quest 逻辑调整为等待沙箱就绪
- 修改配置文件 application.yml,更新相关 CLI 认证环境变量名及认证方案配置
- 补充步骤工具函数 pure computeSteps 函数中插入认证方案步骤逻辑,实现可见性控制
* fix(hicli): 修复延迟创建会话避免空白会话自动生成
- 移除 HiCli.tsx 中 WebSocket 连接成功且 ACP 初始化完成时自动创建空会话的逻辑
- 修改主内容区渲染,支持无活跃会话时展示输入框和欢迎提示
- sendPrompt 支持无活跃会话时先创建会话再发送消息
- "+"按钮复用已有无消息空会话,避免重复创建
- HiCliWelcome 组件展示空初始欢迎提示,不再仅显示“新建 Quest”按钮
- HiCliSidebar 空状态提示改为“发送消息开始新对话”
- HiCliTopBar 模式选择器无活动会话时回退到初始化状态的 mode
- 保持发送消息、会话切换、多会话创建等行为不变
- 新增属性基和探索性测试覆盖所有 CLI Provider 和运行时类型,确保修复正确无回归
* fix(acp): 优化沙箱主机信息传递和终端连接的Pod健康校验
- 修改默认K8s命名空间为"default",替换原"himarket"
- 在沙箱WebSocketHandler中推送沙箱Host信息给前端,提高状态通知准确性
- 新增sendSandboxStatus重载方法,支持携带sandboxHost参数
- PodReuseManager新增getHealthyPodEntry方法,增强Pod健康状态验证和缓存回退逻辑
- TerminalWebSocketHandler中实现终端连接时对Pod的健康重试机制,提升连接稳定性
- 调整K8sRuntimeAdapter和PodReuseManager的默认命名空间配置一致性
* refactor(acp): 优化Pod缓存处理逻辑和代码格式
- 统一Pod缓存计算方法,增强Pod健康检查逻辑
- 优化日志记录格式,提升可读性
- 修改K8s终端后端构造参数格式,提升代码一致性
- 前端测试代码中移除未使用变量,修正大小写使其规范
- 统一HiCliWelcome组件中未使用的props命名以避免警告
- 保持性属性测试中调整模拟函数参数和变量命名,改进代码可维护性
* chore(build): 优化Docker镜像构建和调整WebSocket重连次数
- 将Docker镜像构建脚本中buildx添加--pull=false参数,避免每次拉取最新基础镜像
- 将useAcpWebSocket和useTerminalWebSocket的maxReconnectAttempts参数从10降至2,减少重连次数
- 修改application.yml配置,将acp.local-enabled从true改为false
- 调整Header组件中标签顺序,优化用户界面显示顺序
* feat(cli): 默认选中市场模型并自动选择第一个市场模型
- 将 CliSelector 组件的默认 modelConfigMode 从 'none' 改为 'market'
- 切换 CLI 工具时重置模型配置模式为 'market'
- 调整模型配置选项顺序,默认将市场模型提前显示
- MarketModelSelector 加载市场模型后自动选中第一个模型
- 实现自动调用 onChange 传递选中模型的信息以便后续使用
* fix: add git ignore
* feat(skill): 实现技能包上传与预览功能
- 新增 skill_file 表及相关实体,支持存储技能包内文件内容及元信息
- 修改 product 表结构,去除 name 唯一约束并扩展 description 字段长度
- 实现技能包上传接口,支持 zip 和 tar.gz 格式,解析 SKILL.md 并校验 YAML front matter
- 实现上传文件内容编码判断,文本内容直接保存,二进制文件 Base64 编码存储
- 支持批量 upsert skill_file 表,文件数量限制 500,单文件大小上限 5MB
- 新增公开接口获取技能包文件树、单个文件内容、所有文件及整体压缩包下载
- himarket-admin 新增技能包管理 Tab,支持拖拽上传并预览文件树及文件内容
- himarket-frontend 扩展 SkillDetail 页面,添加文件树侧边栏及文件预览功能
- 前端预览支持 markdown 渲染和 Monaco Editor,二进制文件显示不支持预览提示
- CliSelector 逻辑改造,选择技能时调用接口获取完整文件列表写入 CliSessionConfig
- generateSkillConfig 方法支持根据文件列表写入完整目录结构,兼容旧数据只写 SKILL.md
- 添加 commons-compress 依赖用于 tar.gz 解压,使用 Java 标准库解压 zip 文件
- 详细异常处理,上传时缺少关键字段返回明确错误信息
- 保留向后兼容接口 GET /skills/{productId}/download 返回原 product.document 内容
- 设计文档、需求文档和任务清单全面覆盖实现细节及验证点
* feat(acp): 支持通过 WebSocket 消息延迟初始化沙箱并增加配置批量注入功能
- 新增 deferredInitMap 用于暂存未携带 session/config 消息的 WebSocket 连接参数
- 支持等待前端发送 session/config 消息后再启动沙箱初始化流水线
- ConfigInjectionPhase 改用 tar.gz 包批量注入配置文件,避免 JSON 序列化导致的 Unicode 规范化问题
- 实现 SandboxProvider.extractArchive 接口,通过 Sidecar HTTP API 上传 tar.gz 压缩包并解压
- K8sSandboxProvider 和 LocalSandboxProvider 实现 extractArchive 方法
- 增加对配置文件注入后抽样读回验证,确保文件正确解压且不为空
- PodReuseManager 新增等待 SLB 后端健康检查通过逻辑,确保流量可达 Pod 的 sidecar
- AcpWebSocketHandler 优化消息处理逻辑,支持兼容旧客户端同时对新客户端延迟启动pipeline
- 修复 SkillPackageServiceImpl 中编码内容长度计算冗余问题
- README 文档补充 Agent Skill 相关描述及 ServiceAccount 绑定 Role 的声明
- 测试覆盖改进,新增 ConfigInjectionPhase 相关单元测试,覆盖 tar.gz 解压及异常场景处理
* refactor(runtime): 优化 Pod 和 Service 名称管理,提升资源复用
- Pod 名称改为固定格式 sandbox-{userId},替代原随机生成名称
- Service 名称同样改为统一 sandbox-svc-{userId},确保与 Pod 对应关系明确
- 新增 getHealthyPodEntryWithDefaultClient 方法,便于无客户端引用调用方获取健康 Pod
- 创建 Pod 前检查并删除残留同名旧 Pod,避免状态冲突
- 查询 Service 逻辑简化,直接按确定性名称查找,删除孤儿 Service 逻辑取消
- Service 创建改为 createOrReplace,支持更新已有服务
- 相关测试调整,适配新版固定 Pod 名称规则
feat(frontend): 集成 Monaco Editor,提升代码编辑体验
- 前端工程引入 vite-plugin-monaco-editor 插件
- 配置 Vite 以加载并启用 Monaco Editor
- 移除 frontend 中对 monaco-editor 的手动加载冗余代码
fix(frontend): 增加目录树深度查询,优化文件浏览
- 将 fetchDirectoryTree 调用中 depth 参数由默认 5 增加至 10,支持更深层级目录展示
- 涉及 QuestInput 组件、Coding 页面以及 workspaceApi 工具的相关调用均作相应调整
* perf(config): 优化前端缓存策略和代码分割配置
- 在 proxy.conf 中为静态资源添加 365 天缓存策略
- 为静态资源设置 Cache-Control 头为 public, immutable
- 在根路径添加 no-cache 头防止 HTML 缓存
- 移除 Google Fonts 的外部依赖导入
- 配置 Vite 打包时的代码分割策略
- 将 React 相关库分离到 vendor-react 块
- 将 Ant Design 相关库分离到 vendor-antd 块
- 将 Markdown 相关库分离到 vendor-markdown 块
- 将 Swagger UI 相关库分离到 vendor-swagger 块
- 将 XTerm 相关库分离到 vendor-xterm 块
* refactor(acp): 优化 K8s 集群配置获取逻辑,统一使用默认集群接口
- 新增 getDefaultClient() 方法获取默认 K8s 客户端,优先从缓存获取避免重复查库
- 新增 getDefaultConfigId() 方法获取默认集群 configId,简化集群配置获取流程
- 更新 AcpWebSocketHandler 使用 getDefaultConfigId() 替代直接列表查询
- 更新 PodReuseManager 中所有 getClient(null) 调用改为 getDefaultClient()
- 简化 TerminalWebSocketHandler 集群获取逻辑,移除冗余的列表查询和错误处理
- 移除不必要的导入(K8sClusterInfo、List),减少代码耦合
- 统一 POC 阶段集群选择策略,提升代码可维护性
* refactor(runtime): 用 SandboxType 替换 RuntimeType 实现沙箱类型统一管理
- 将代码中的 RuntimeType 替换为更通用的 SandboxType,提升类型表达一致性
- 修改 AcpProperties、CliProviderController、AcpWebSocketHandler 等多个类相应字段与方法
- 删除不再使用的 RuntimeFactory 和 E2BSandboxProvider 实现,简化代码结构
- 调整 LocalRuntimeAdapter、K8sRuntimeAdapter、LocalFileSystemAdapter 等类以适配 SandboxType
- 清理 AcpWebSocketHandler 中废弃的 K8s Pod 异步初始化和配置文件管理代码
- 修改异常类 FileSystemException 使用 SandboxType 表示错误来源沙箱类型
- 兼容老接口参数,保证向后兼容和代码行为一致性
* refactor(test): 调整K8sConfigService模拟代码格式以提高可读性
- 删除AcpWebSocketHandler中未使用的导入
- 移除PodReuseManager尾部多余空行
- 统一编写RuntimeControllerTest中K8sConfigService模拟类的多行格式
- 统一修改RuntimeAvailabilityPropertyTest中K8sConfigService模拟代码格式
- 统一更新RuntimeSelectionFilterPropertyTest中所有K8sConfigService模拟代码格式
- 统一调整RuntimeSelectorTest中K8sConfigService模拟类的格式和缩进
* feat(sandbox): Add detailed sandbox initialization progress tracking
- Create SandboxInitProgress component to display 5-phase initialization workflow
- Add initProgress state to QuestSessionContext for tracking phase status and progress
- Add INIT_PROGRESS action type to questReducer for handling progress updates
- Update useAcpSession to dispatch progress events from sandbox/init-progress notifications
- Update useHiCliSession to dispatch progress events from cli/init-progress notifications
- Integrate SandboxInitProgress display in HiCli, Coding, and Quest pages
- Update .gitignore to exclude only /docs/acp instead of entire /docs directory
- Display real-time progress with phase cards showing pending, executing, and completed states
* chore(docs,config): Update steering docs and project configuration
- Add Java coding standards guide for Spring Boot 17+ development
- Add Spring Boot verification cycle documentation with test examples
- Remove K8s environment context document (moved to separate reference)
- Update .gitignore to exclude .app.pid file
- Update application.yml configuration for bootstrap module
- Refactor ACP WebSocket handler and code generation logic
- Optimize K8s runtime adapter and sandbox provider implementations
- Update frontend hooks for ACP and CLI session management
- Refactor Coding and Quest page components
- Remove root package.json (moved to module-specific configs)
- Update sandbox Dockerfile and run.sh scripts
- Update AGENTS.md and add CLAUDE.md documentation
* feat(skills): Add comprehensive skill definitions for HiMarket and Kiro
- Add create-issue-himarket skill for creating GitHub issues with Feature Request and Bug Report templates
- Add create-pr-himarket skill for creating pull requests with conventional commit format validation
- Add java-coding-standards skill for Java development guidelines
- Add springboot-verification skill for Spring Boot project verification
- Add start-himarket skill for HiMarket project initialization
- Add tmux skill with helper scripts for session management and text waiting
- Migrate skills from .claude to .kiro and .qoder directories for multi-agent support
- Remove legacy steering documentation (java-coding-standards.md)
- Update .gitignore to exclude jqwik database files
- Standardize skill structure across all agent directories
* docs(steering,agents): Remove outdated spec generation rules and update verification guidelines
- Delete spec-generation.md steering document with outdated spec generation rules
- Delete IMPLEMENTATION.md frontend documentation that is no longer maintained
- Update AGENTS.md to mark code verification as required rather than optional
- Add guidance for end-to-end verification of spec tasks with concrete steps
- Clarify when to skip verification for non-interface tasks like refactoring
- Fix newline at end of .gitignore file
- Normalize runtime type string comparisons from mixed case to lowercase in useHiCliSession hook
* refactor(cli): 统一重构 CLI 配置注入机制
- 移除废弃的 kiro-cli 和 codex CLI Provider 配置及相关代码
- Claude Code 支持自定义模型配置,环境变量注入 ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL、ANTHROPIC_MODEL
- Claude Code MCP 配置文件从 .claude/settings.json 迁移到 .mcp.json
- 优化 Qwen Code 配置,API Key 不再写入 settings.json 的 env 字段
- 为 Claude Code 和 QoderCli 新增 Skills 配置写入,支持项目级 SKILL.md 文件注入
- 统一所有 CLI 的认证信息通过环境变量注入,避免敏感信息写入磁盘
- 配置文件写入失败时记录日志并继续执行,确保环境变量注入不中断
- 各 CLI Skills 配置目录隔离,防止配置冲突
* fix(acp): 拒绝无 token 的 WebSocket 连接,防止匿名访问
- AcpHandshakeInterceptor 修改为无 token 则拒绝握手并记录 warn 日志
- AcpHandshakeInterceptorTest 更新为断言无 token 连接被拒绝,不允许匿名访问
- WorkspaceController getCurrentUserId 方法改为无认证抛出业务异常,禁止匿名回退
- 调整相关导入,确保业务异常和错误码引用正确
- Coding 页面配置补全逻辑优化,自动填充模型和 CLI 提供者名称
- ConfigSidebar 修改配置变更回调,添加名称字段同步更新
- RuntimeSelector 测试用例中移除 POC 本地启动文案,改为正式描述“本地运行”
- 移除前端多处 POC 和匿名访问相关注释和代码
- 删减无 token 连接允许的 POC 模式残余代码,提升安全性和代码洁净度
* refactor(frontend): Remove HiCli POC module and migrate shared components
- Delete HiCli page, HiCliSessionContext, and useHiCliSession hook
- Remove hicli/ directory components (AcpLogPanel, AgentInfoCard, HiCliSelector, etc.)
- Migrate shared components from hicli/ to common/ (CustomModelForm, MarketMcpSelector, etc.)
- Remove HiCli routes and navigation entries from Header and router
- Delete HiCli-specific test files and context tests
- Update .gitignore to exclude OpenSandbox local clone
- Preserve all backend sandbox infrastructure (LocalSandboxProvider, K8s providers, etc.)
- Update design and requirements documentation to reflect frontend-only cleanup scope
- HiCli served its purpose as POC for ACP protocol validation; HiCoding now handles all CLI interactions
* feat(acp): Refactor HiCoding architecture with modular config and sandbox services
- Extract SessionConfigResolver service to handle CLI session configuration parsing independently
- Extract ConfigFileBuilder service to generate configuration files from resolved configs
- Extract AcpSessionInitializer to orchestrate session initialization pipeline
- Extract AcpMessageRouter to handle WebSocket message routing and forwarding
- Extract AcpConnectionManager to manage connection lifecycle and resource cleanup
- Add SandboxHttpClient to unify HTTP communication across K8s and Local sandbox providers
- Add InitErrorCode enum for structured error classification and handling
- Add CliConfigGeneratorRegistry to manage CLI configuration generator implementations
- Refactor AcpWebSocketHandler to lightweight entry point delegating to specialized services
- Refactor ConfigInjectionPhase to use ConfigFileBuilder for config generation
- Update InitContext to carry resolved session configuration through pipeline
- Update SandboxProvider interface and implementations to use unified HTTP client
- Migrate architecture specification to .kiro/specs/hicoding-architecture-refactor
- Remove outdated poc-code-cleanup.md specification
- Reduce AcpWebSocketHandler from 1000+ lines to <200 lines by delegating responsibilities
- Eliminate code duplication between K8s and Local sandbox providers
- Prepare clean extension points for OpenSandbox integration
* feat(sandbox): 重构沙箱架构引入共享K8s Pod实现
- 重新定义SandboxType枚举,包含LOCAL、SHARED_K8S、OPEN_SANDBOX、E2B四种类型,移除旧K8S
- 实现SharedK8sSandboxProvider,连接Helm预置共享沙箱Pod,无需动态调用K8s API
- 保留OpenSandboxProvider和E2BSandboxProvider空实现,预留未来扩展接口
- 更新SandboxProviderRegistry注册逻辑,支持多沙箱类型自动注册
- 修改RuntimeSelector适配四种沙箱类型,更新运行时可用性判断和UI标签
- 新增Helm模板部署共享沙箱Deployment和ClusterIP Service
- 移除旧的共享模式开关,增加共享Pod服务名配置,默认运行时改为shared-k8s
- 工作目录实现基于用户ID隔离,Sidecar自动为每用户spawn独立CLI进程
- 支持旧值"k8s"向后兼容映射为SHARED_K8S,前端runtime参数同步更新
- 明确多用户并发访问共享Pod机制和安全隔离策略,简化权限需求,提升部署便捷性
* feat(hicoding): Implement connection resilience and artifact deduplication
- Add connection resilience specs for HiCoding with design, requirements, and tasks documentation
- Implement path normalization in artifactDetector to eliminate format inconsistencies (e.g., "./" prefix, duplicate slashes)
- Refactor artifact detection to trigger only on completed/failed tool_call status, eliminating duplicate detections
- Add ConnectionBanner component to display WebSocket connection status and reconnection progress
- Implement exponential backoff reconnection strategy with infinite retry for ACP WebSocket
- Add terminal WebSocket reconnection trigger when ACP connection recovers
- Remove legacy CodingSession entity, repository, controller, service, and related DTOs
- Update DevProxyController and WorkspaceController to remove CodingSession dependencies
- Refactor ACP connection manager and WebSocket handler for improved resilience
- Update K8s workspace service initialization phases for better config injection
- Migrate frontend components to use unified ACP session management via useAcpSession hook
- Remove SessionSidebar component and codingSession API module
- Add sandbox push script for AMD64 architecture
- Update Nacos skill maintenance documentation
- Resolves duplicate artifact detection and improves user experience during connection interruptions
* style(workspace,frontend): Format code and refactor WebSocket imports
- Reformat method parameters and switch cases in WorkspaceController for consistency
- Refactor K8sWorkspaceService file download logic with improved line breaks
- Update QuestSessionContext to use null instead of undefined for state initialization
- Remove unused noRuntimeProvider test fixture from useRuntimeSelection tests
- Remove unused RECONNECT_CONFIG import from useTerminalWebSocket
- Add type assertion for Blob creation in workspaceApi to fix type compatibility
- Add push-podman.sh script for container image deployment automation
* feat(himarket): Integrate Nacos default instance binding with Agent Skill
- Add Nacos default instance and namespace concept to auto-bind Agent Skills
- Extend nacos_instance table with is_default and default_namespace fields via Flyway V9-V10
- Implement default Nacos instance management APIs in NacosService and NacosController
- Refactor SkillController to resolve Nacos coordinates through productId instead of direct paths
- Replace SkillPackageParser with SkillZipParser and add FileTreeBuilder and SkillMdBuilder utilities
- Remove SkillFile entity and SkillPackageService, consolidate into SkillService
- Add UpdateSkillNacosParam DTO for skill-nacos association updates
- Implement ProductService auto-binding of default Nacos instance for new AGENT_SKILL products
- Add ApiProductLinkNacos component for frontend Nacos linking UI
- Update NacosConsoles and ApiProductDetail pages to support default instance management
- Enhance skill market capability checklist and add comprehensive Nacos integration specifications
- Update ACP config generators to support Nacos skill integration
- Migrate skill package upload flow to use new Nacos-integrated architecture
* chore: 移除 Local 类型沙箱相关逻辑
* feat(acp,sandbox): Integrate Nacos CLI sandbox with enhanced workspace and runtime services
- Add NacosEnvGenerator for Nacos environment variable configuration injection
- Add SkillDownloadPhase for Agent Skill artifact download during initialization
- Add ExecResult model for sandbox execution result handling
- Rename K8sWorkspaceService to RemoteWorkspaceService for broader runtime abstraction
- Update WorkspaceController to support runtime parameter routing (k8s/local)
- Enhance ACP session initialization with Nacos configuration and skill download phases
- Update ConsumerService and NacosServiceImpl for improved service integration
- Add comprehensive sandbox integration documentation (SANDBOX_GUIDE.md)
- Update Kiro specs for sandbox terminal, file tree, and Nacos CLI integration
- Refactor sandbox Dockerfile and sidecar server for enhanced runtime support
- Update WebSocket URL resolution and ACP session hooks for runtime awareness
- Add and update unit tests for new phases, config generators, and workspace service
- Improve skill upload script for sandbox artifact management
* feat(himarket): Enhance skill download and improve UI loading states
- Add authentication token support to skill package downloads in frontend components
- Implement proper Authorization header handling for API requests
- Replace anchor tag with button component for download functionality with error handling
- Add skeleton loading states to ApiProductDetail for better UX during data fetch
- Prevent menu item flickering by conditionally rendering navigation based on data availability
- Update SkillZipParser to handle single-part resource paths without skill name prefix
- Enhance upload-skills.sh script with automatic portal publication after successful skill upload
- Add portal discovery logic to automatically publish skills to default portal when available
* refactor(core): 将 ACP 相关包及引用统一重命名为 HiCoding
- 将所有包路径中的 acp 修改为 hicoding,涵盖 websocket、runtime、sandbox、cli、filesystem 等模块
- 更新所有相关类的包导入路径,如 WebSocketConfig 中的处理器和拦截器
- 重命名了多个服务类及配置类的包路径以反映命名空间调整
- 修正注释中的 Handler 名称对应包路径变更
- 统一替换 ACP 命名为 HiCoding,确保整体代码结构一致性
- 调整 sandbox 初始化相关类的包路径及导入,保持依赖正确
- 重构运行时和沙箱相关类的包路径,改进模块划分清晰度
* docs(block-grouping): 添加完整的分组折叠算法设计文档
- 描述了AI对话界面中低价值操作块折叠成分组卡片的设计背景与目标
- 详细阐述了整体架构,包含多层设计及数据流传递
- 说明了ACP协议细节、事件类型及流状态机对分组的影响
- 介绍了从ACP事件到渲染块的转换逻辑及SubAgent数据流处理
- 定义了核心概念,包括Block类型、工具分类与状态、活动分组属性
- 设计了策略模式及多种折叠策略的继承体系与选择算法
- 详解了分组算法核心流程、最后消息保护策略及flush机制
- 说明了isExploring状态判断及SubAgent递归处理流程
- 给出了策略折叠规则与各类型block折叠判断流程的设计思路
* fix(runtime): 删除 RemoteRuntimeAdapter 中的闲置检查逻辑
- 移除 RemoteRuntimeAdapter 中的闲置超时检测相关代码及相关字段
- 删除 lastActiveAt 状态和 idleTimeoutSeconds 配置
- 去除与闲置检测相关的定时任务调度和触发逻辑
- 简化了 WebSocket 连接的部分代码实现
fix(sandbox): 使用绝对路径替换相对路径以确保 exec 调用正确
- 在 SkillDownloadPhase 中将 nacos-env 配置文件路径及技能目录转换为绝对路径
- 添加 toAbsolutePath 方法,实现基于 workspacePath 拼接绝对路径
- 确保 exec 调用时工作目录无关,避免路径解析错误
feat(coding): 优化默认 CLI 和模型自动选择逻辑
- 移除 ConfigSidebar 中自动选中第一个可用 CLI 的代码
- 改为在 Coding.tsx 页面加载时自动异步选择默认 CLI Provider 和默认模型
- 使用全新 useCodingConfig Hook 管理配置状态,实现配置纯内存管理且不依赖 localStorage
- 在 send message 场景下,自动填充基本的 cliSessionConfig 包含 modelProductId,防止数据缺失
fix(adp): 处理 MODEL_API 模型不返回 methodPathList 场景
- 在 AdpAIGatewayOperator 中 MODEL_API 场景下,对缺失 methodPathList 的模型构造兜底路由
- 路由采用 basePath 拼接默认路径 "/v1/chat/completions"
- 确保 BaseUrlExtractor 能正确提取 baseUrl
chore(sandbox): 更新 Dockerfile 中的 nacos-cli 安装及验证
- nacos-cli 安装完成后改为执行 help 命令替代 version 命令验证安装结果
- 移除未适配的 kiro-cli 安装注释代码
style(code): 代码格式及导入整理
- 删除无用导入
- 统一类型定义换行格式
- 修正代码注释对齐与格式
* test(frontend): Remove unused imports and add type assertions
- Remove unused fireEvent import from RuntimeSelector.test.tsx
- Add type assertions to wsUrl.test.ts test cases for cliSessionConfig parameter
- Resolve TypeScript linting issues in test files
* feat(terminal): 实现 Terminal 心跳保活与断连重连机制
- 新建 WebSocketPingScheduler 共享 Ping 调度器,为 ACP 和 Terminal Handler 提供定时 ping
- 集成 Ping 调度器到 HiCodingWebSocketHandler 和 TerminalWebSocketHandler 的连接生命周期方法
- RemoteTerminalBackend 添加心跳保活,定时发送协议级 ping 维持后端连接活跃
- RemoteTerminalBackend 实现断连自动重连,采用指数退避策略,最多重连 5 次后放弃
- 修改 WebSocketConfig 配置,设置最大空闲超时时间为 120 秒,提高连接稳定性
- 确保 ping 和重连任务使用守护线程,防止阻止 JVM 退出
- 增加异常捕获和日志,保证 ping 发送失败时不影响整体连接
- 完善单元测试和属性基测试,覆盖心跳和重连功能的正确性与健壮性
* feat(coding-session): 新增编码会话管理接口及远程文件上传支持
- 新增 coding_session 数据库表及对应实体 CodingSession,实现会话持久化
- 实现 CodingSession REST API 支持会话的增删改查操作
- 支持通过 WebSocket 拦截 session/new 和 session/load 请求,实现 cwd 路径绝对化
- 远程沙箱新增文件上传接口,限制单文件最大 5MB,支持 Base64 编码传输
- 远程文件路径自动关联用户工作空间,防止路径穿越问题
- 新增 CodingSessionServiceImpl 服务实现会话业务逻辑,支持用户最大会话数量限制
- 修正部分文档中“新建会话”按钮命名为“新会话”以保持一致
- 新增 HiCoding 全流程集成测试覆盖会话和 WebSocket 交互场景
* feat(runtime): 支持 Sidecar 会话 detach 和重连功能
- 数据库添加 coding_session 表的 model_product_id 和 model_name 字段
- CodingSession 实体及相关 DTO 新增 modelProductId 和 modelName 字段
- RemoteRuntimeAdapter 支持通过控制消息获取 sidecarSessionId
- 增加 detach() 方法进入 DETACHED 状态,关闭 WebSocket 但保留输出流以供重连
- 实现 reconnect() 方法支持基于 sidecarSessionId 重新连接 sidecar
- 新增 RuntimeStatus.DETACHED 表示 WebSocket 已断开但会话仍存活
- SandboxInfo 增加支持生成带 sessionId 的 attach 模式 WebSocket URI
- HiCodingConnectionManager 管理已 detach 的会话,支持查询、重用和销毁
- WebSocket 关闭时,如果是 RemoteRuntimeAdapter 且有 sidecarSessionId,改为 detach 保存会话
- HiCodingWebSocketHandler 优先尝试从已 detach 会话中恢复连接,跳过完整初始化
- 前端 Coding 相关增加 reattach 事件监听,支持恢复已有会话
- SessionSidebar 显示 providerKey 和 modelName 信息
- 调整 loadSession 流程,支持 load 返回 null 表示成功恢复会话,避免重复新建
- 会话加载时处理 providerKey,保证切换历史会话自动完成正确连接和重连逻辑
- 修复无 token 接口返回状态由 401 改为 403,统一访问控制响应状态
* feat(editor): 重构编辑器视图,添加代码高亮和文件操作按钮
- 使用 highlight.js 实现基于语言的代码高亮展示,替代 Monaco Editor 只读模式
- 新增代码头部操作栏,支持文件刷新、复制、自动换行切换和下载功能
- 支持 PDF、图片和二进制文件的分别预览与下载
- 优化文件树组件,根据文件扩展名展示更丰富的图标分类
- 允许通过回调刷新编辑区文件内容,实现文件同步更新
- 删除旧的 Monaco Editor 相关依赖和代码,明确组件渲染逻辑
- 在 Coding 页面中添加刷新文件内容的回调处理,更新打开文件状态
chore(sidecar-server): 提取并模块化服务器主入口和配置文件
- 将原有冗长的 index.js 文件拆分成 server.js 和 config.js 两部分
- config.js 负责读取环境变量及默认配置,导出配置常量
- index.js 精简为仅导入并启动服务器,实现职责分离
- 保留旧版核心逻辑注释在提交记录供代码对比参考
* feat(workspace): 增加工作空间路径安全校验和持久化支持
- 将 sandbox 工作空间卷挂载改为本地持久化路径
- Helm 模板新增 sandbox 工作空间持久化 PVC 配置及相关值
- RemoteWorkspaceService 中路径校验方法改为基于用户目录校验,防止跨用户访问
- RemoteSandboxProvider 和 SkillDownloadPhase 增加路径越界安全检查
- 解除 SkillController 下载接口 AdminOrDeveloperAuth 注解限制
- RemoteRuntimeAdapter 处理多条 WebSocket 消息支持逐行解析控制信息
- HiCodingConnectionManager 增加定时清理过期分离的 detached 会话功能
- HiCodingWebSocketHandler 优化连接重连逻辑,确保重连存活
- WebSocketPingScheduler 线程池升级为双线程调度器
- CodingSessionServiceImpl 优化清理用户超额会话逻辑,支持分页删除
- 前端 CodingSessionContext 修复并优化历史消息回放中 user_message_chunk 处理
- 前端 useCodingSession 增强日志输出,方便调试 session 更新流程
- Coding 页面改进会话重置和恢复逻辑,避免自动恢复旧会话引发的问题
- sandbox 容器允许更多命令,包含 opencode 和 claude-agent-acp
- sidecar-server 优化会话关闭时输出缓存清理,修复重复清理问题
- sidecar-server 终端模块增加输出环形缓冲区,增强会话状态与活动时间跟踪
- 终端会话关闭和错误时触发专用销毁函数,保证状态一致性
- 其他若干日志和异常处理的细节修正和提升
* chore: 将 .kiro 目录添加到 gitignore
忽略 AWS Kiro AI coding agent 的配置目录
🤖 Generated with [Qoder][https://qoder.com]
* chore: 从版本控制中移除 .kiro 目录
该目录包含 Kiro AI coding agent 的本地配置,不应提交到仓库
🤖 Generated with [Qoder][https://qoder.com]
* fix: 添加 JetBrains 仓库解决 pty4j 依赖下载问题
pty4j 的传递依赖 purejavacomm 不在 Maven Central,需要从 JetBrains 仓库下载
🤖 Generated with [Qoder][https://qoder.com]
* fix: 更正 JetBrains 仓库地址解决 purejavacomm 依赖问题
purejavacomm 是 pty4j 的传递依赖,需要从 JetBrains intellij-dependencies 仓库下载
🤖 Generated with [Qoder][https://qoder.com]
* fix(ci): test-reporter 在 fork PR 中添加 continue-on-error
dorny/test-reporter 在 fork PR 中缺少 checks:write 权限导致报告生成失败,
该步骤仅用于生成测试报告,不应阻塞 CI 流程
🤖 Generated with [Qoder][https://qoder.com]
…rience (higress-group#180) * chore(deploy): 添加 Helm 部署示例环境变量配置文件 - 新增 deploy/helm/.env.example 文件,包含 Himarket Helm 部署相关的配置示例 - 提供部署模式、命名空间、镜像版本、数据库密码和服务凭证等基础配置示例 - 详细列出存储配置和 Higress IngressClass 的默认值 - 为用户快速复制配置文件并调整提供方便模板 * refactor(deploy): 规范部署文件目录结构 - 将多个 deploy/docker/scripts/data 下的配置文件迁移至 deploy/data - 将 deploy/helm/data/skills/docx 及子目录中的技能相关文件移动到 deploy/data/skills/docx - 更新 .gitignore,新增 deploy/docker/data 和 deploy/docker/standalone-logs 路径忽略规则 - 优化项目结构,使部署数据与脚本分离,提高结构清晰度和维护性 * docs(deploy): 更新部署文档及指南,增强部署体验 - 新增详细的 HiMarket 部署指南文档,涵盖 Docker Compose 和 Helm 部署方式 - 完善交互式安装脚本说明,简化部署配置流程 - 新增卸载与升级操作说明,支持非交互式自动化部署 - 增加服务端口说明和日志查看等常见问题解答 - 更新 README 与 README_zh,补充平台核心能力模块表格 - 丰富系统架构与快速开始章节,增加开发者体验介绍(HiChat、HiCoding) - 统一部署脚本调用流程,推荐使用交互式 install.sh 脚本 - 删除过时的 Docker 脚本部署文档,实现文档和脚本同步更新
…igress-group#181) The "开始对话测试" button was clickable even without an active subscription, allowing users to enter the chat page without proper access. Now the button shows "订阅并开始对话" when unsubscribed and opens the subscription management modal on click, guiding users to subscribe first. 🤖 Generated with [Qoder][https://qoder.com]
…i-arch build support (higress-group#183) * fix(deploy): 修正Nacos启动配置及API响应处理 - 删除Nacos镜像的多余入口脚本配置,使用默认启动方式 - 修改Helm部署Nacos模板,去除多余的启动命令部分 - 优化post_ready脚本中查询消费者ID和产品ID的JSON解析逻辑,改为使用jq稳定提取 - 新增判断产品是否未关联网关的逻辑,避免订阅时因错误导致失败 - 修正artifactDetector中未识别扩展名时返回null的行为 - 在模型详情页面中动态替换cURL示例中的模型名称,避免使用占位符 - 增加模型名称缺失时的提示信息显示 - 更新产品接口中的IProductDetail,补充model字段类型声明 - 扩展artifact类型支持,添加Excel格式文件扩展名判断 * fix(scripts): 更新镜像版本并支持多架构构建 - 修改 push.sh 和 push-podman.sh 中的镜像版本为 latest - 在 push.sh 中启用多架构平台 linux/amd64 和 linux/arm64 - 在 push-podman.sh 中增加清理残留镜像操作,避免冲突 - 保持多架构镜像构建流程的稳定性与兼容性
…regionId header (higress-group#185) - Add @JsonProperty annotations to xAcs* fields in ApsaraGatewayConfig to ensure correct JSON serialization/deserialization - Add x-acs-regionId header in ApsaraGatewayClient when regionId is configured
…on and code consistency (higress-group#184) * feat(security): 实现匿名访问支持并改造安全配置 - 新增 @publicaccess 注解,用于标记公开访问接口 - 实现 PublicAccessPathScanner,启动时扫描带注解接口路径 - 在 SecurityConfig 中集成扫描器,将公开路径加入 permitAll 白名单 - 为产品浏览和 Skill 接口添加 @publicaccess 注解,支持匿名访问 - 前端新增 useAuth Hook,判断登录状态及跳转登录页方法 - 改造请求拦截器,公开页面 401/403 静默处理,非公开页面跳转登录 - 实现 LoginPrompt 登录引导弹窗,支持上下文说明和返回原页 - 增加 WelcomeView 匿名欢迎视图,HiChat 和 HiCoding 页面展示 - 添加 EmptyState 组件,产品广场空状态时展示友好提示 - 改造 UserInfo 组件,未登录状态静默处理错误,显示登录按钮 * refactor(security): enhance anonymous access with HTTP method precision and code consistency - Add Javadoc to @publicaccess annotation explaining class/method-level semantics - Add PublicAccessEndpoint record with HTTP method awareness to prevent unintended method exposure - Add class-level auth annotation check in hasAuthAnnotation for defense-in-depth - Replace path-only matching with method+path precision in SecurityConfig - Extract isPublicPage() function with strict path matching in request.ts - Unify authentication state check using useAuth hook across components - Add destroyOnClose to LoginPrompt modal for proper cleanup 🤖 Generated with [Qoder][https://qoder.com] * docs(nacos): 移除 HiMarket 对接 Nacos Skill 管理开发规格文档 - 删除了完整的 HiMarket Skill 管理对接 Nacos 的开发规格 - 包含 SDK 依赖与初始化说明、数据模型定义、SDK 方法列表 - 涵盖 HiMarket 服务层设计、本地发布状态表定义和关键业务流程 - 移除了详细的 REST API 接口定义与请求响应示例 - 删除了 SKILL.md 拼装、文件树构建、ZIP 打包下载等工具逻辑说明 - 包括 HiMarket 开发任务拆解和预估工作量 - 移除了注意事项和多项开发细节说明
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
… valid: max_tokens and max_completion_tokens cannot be set at the same time;Refactor maxTokens assignment in AbstractLlmService
原因:在依赖的agentscope中OpenAIChatFormatter.java第107-110行,代码同时将maxTokens设置到了OpenAIRequest的maxCompletionTokens和maxTokens两个字段中,这导致了API返回400错误,因为这两个参数是互斥的。根据OpenAI API文档,max_completion_tokens是较新的参数,用于替代max_tokens,所以应该只设置其中一个。
解决方案:在这里取消默认值等待agentscope官方修复,避免调用豆包或者强校验模型的时候出现验证异常的情况
📝 Description
🔗 Related Issues
✅ Type of Change
🧪 Testing
📋 Checklist
mvn spotless:applyfor backend,npm run lint:fixfor frontend)📊 Test Coverage
📚 Additional Notes