@cloudbase/cli 2.8.0-beta.4 → 2.8.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.augment-guidelines +119 -0
  2. package/.claude/settings.local.json +6 -0
  3. package/.clinerules/cloudbase-rules.mdc +119 -0
  4. package/.cursor/rules/cloudbase-rules.mdc +119 -0
  5. package/.env.local +5 -0
  6. package/.mcp.json +11 -0
  7. package/CLAUDE.md +119 -0
  8. package/README.md +13 -1
  9. package/bin/cloudbase-mcp.js +24 -0
  10. package/bin/tcb.js +0 -2
  11. package/cloudbaserc.json +3 -0
  12. package/lib/commands/ai/index.js +172 -0
  13. package/lib/commands/cloudrun/base.js +2 -2
  14. package/lib/commands/index.js +1 -0
  15. package/lib/commands/utils.js +10 -4
  16. package/lib/utils/ai/banner.js +88 -0
  17. package/lib/utils/ai/config.js +254 -0
  18. package/lib/utils/ai/const.js +156 -0
  19. package/lib/utils/ai/ensureFiles.js +26 -0
  20. package/lib/utils/ai/envLocalManager.js +144 -0
  21. package/lib/utils/ai/router.js +1089 -0
  22. package/lib/utils/ai/setup.js +550 -0
  23. package/package.json +11 -3
  24. package/rules/cloudbase-platform.mdc +44 -0
  25. package/rules/database.mdc +25 -0
  26. package/rules/miniprogram-development.mdc +61 -0
  27. package/rules/ui-design.mdc +24 -0
  28. package/rules/web-development.mdc +44 -0
  29. package/rules/workflows.mdc +30 -0
  30. package/specs/mcp-global-bin/design.md +57 -0
  31. package/specs/mcp-global-bin/requirements.md +43 -0
  32. package/specs/mcp-global-bin/tasks.md +54 -0
  33. package/types/commands/ai/index.d.ts +23 -0
  34. package/types/commands/index.d.ts +1 -0
  35. package/types/commands/utils.d.ts +6 -0
  36. package/types/utils/ai/banner.d.ts +2 -0
  37. package/types/utils/ai/config.d.ts +79 -0
  38. package/types/utils/ai/const.d.ts +328 -0
  39. package/types/utils/ai/ensureFiles.d.ts +1 -0
  40. package/types/utils/ai/envLocalManager.d.ts +23 -0
  41. package/types/utils/ai/router.d.ts +45 -0
  42. package/types/utils/ai/setup.d.ts +23 -0
  43. package/types/utils/config.d.ts +1 -0
@@ -0,0 +1,25 @@
1
+ ---
2
+ description: 数据库操作规则和注意事项
3
+ globs: ["**/db/**/*", "**/database/**/*"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # 数据库操作规则
8
+
9
+ ## CloudBase 数据库注意事项
10
+ 1. CloudBase数据库doc(id).get()返回的data是数组,需用data[0]获取文档内容
11
+ 2. 更新文档时,避免直接存储复杂对象,应提取和保存简单值
12
+ 3. 错误处理应返回error.message而非整个error对象,避免循环引用
13
+ 4. 使用new Date()替代db.serverDate()创建时间戳
14
+ 5. 对于有数据库归属的情况,检查和更新应通过云函数处理,避免数据库权限问题
15
+ 6. 云开发的云数据或者 mongodb不能在null值上创建新的嵌套字段,必要时可以用set()替代update()并删除_id
16
+
17
+ ## 数据库权限管理
18
+ 1. 云开发的数据库访问是有权限的,默认的基础权限有:
19
+ - 仅创建者可写,所有人可读
20
+ - 仅创建者可读写
21
+ - 仅管理端可写,所有人可读
22
+ - 仅管理端可读写
23
+ 2. 如果直接从 web 端或者小程序端请求数据库,需要考虑配置合适的数据库权限
24
+ 3. 在云函数中,默认没有权限控制
25
+ 4. 跨数据库集合的操作必须通过云函数实现
@@ -0,0 +1,61 @@
1
+ ---
2
+ description: 微信小程序开发规则
3
+ globs: ["**/*.wxml", "**/*.wxss", "**/*.js", "**/*.ts", "**/*.json", "miniprogram/**/*"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # 微信小程序开发规则
8
+
9
+ ## 项目结构
10
+ 1. 如果用户需要开发小程序,你会使用微信云开发的各种能力来开发项目,小程序的基础库直接用 latest 即可
11
+ 2. 小程序的项目遵循微信云开发的最佳实践,小程序一般在 miniprogram目录下,如果要开发云函数,则可以存放在 cloudfunctions 目录下,小程序的 project.config.json 需要指定miniprogramRoot这些
12
+ 3. 生成小程序页面的时候,必须包含页面的配置文件例如index.json等,要符合规范,避免编译出错
13
+
14
+ ## 云开发集成
15
+ 1. 小程序 wx.cloud 的时候,需要指定环境 Id,环境 id 可以通过 envQuery 工具来查询
16
+ 2. 生成小程序代码的时候,如果需要用到素材图片,比如 tabbar 的 iconPath 等地方,可以从 unsplash 通过 url 来下载,可以参考工作流程中的下载远程资源流程,在生成小程序代码的时候,如果用到了iconPath 这些,必须同时帮用户下载图标,避免构建报错
17
+
18
+ ## AI 大模型调用
19
+ 小程序中基础库 3.7.1版本以上已经支持直接调用大模型
20
+
21
+ ```js
22
+ // 创建模型实例,这里我们使用 DeepSeek 大模型
23
+ const model = wx.cloud.extend.AI.createModel("deepseek");
24
+
25
+ // 我们先设定好 AI 的系统提示词,这里以七言绝句生成为例
26
+ const systemPrompt =
27
+ "请严格按照七言绝句或七言律诗的格律要求创作,平仄需符合规则,押韵要和谐自然,韵脚字需在同一韵部。创作内容围绕用户给定的主题,七言绝句共四句,每句七个字;七言律诗共八句,每句七个字,颔联和颈联需对仗工整。同时,要融入生动的意象、丰富的情感与优美的意境,展现出古诗词的韵味与美感。";
28
+
29
+ // 用户的自然语言输入,如'帮我写一首赞美玉龙雪山的诗'
30
+ const userInput = "帮我写一首赞美玉龙雪山的诗";
31
+
32
+ // 将系统提示词和用户输入,传入大模型
33
+ const res = await model.streamText({
34
+ data: {
35
+ model: "deepseek-v3", // 指定具体的模型
36
+ messages: [
37
+ { role: "system", content: systemPrompt },
38
+ { role: "user", content: userInput },
39
+ ],
40
+ },
41
+ });
42
+
43
+ // 接收大模型的响应
44
+ // 由于大模型的返回结果是流式的,所以我们这里需要循环接收完整的响应文本。
45
+ for await (let str of res.textStream) {
46
+ console.log(str);
47
+ }
48
+ ```
49
+
50
+ ## 微信步数获取
51
+ **微信步数获取必须使用CloudID方式(基础库2.7.0+)**:
52
+ - 前端:`wx.getWeRunData()` 获取cloudID,使用 `wx.cloud.CloudID(cloudID)` 传递给云函数
53
+ - 云函数:直接使用 `weRunData.data` 获取解密后的步数数据,检查 `weRunData.errCode` 处理错误
54
+ - 禁止使用session_key手动解密方式,CloudID更安全简单
55
+ - 必须实现降级机制(模拟数据)处理cloudID获取失败的情况
56
+
57
+ ## 云函数部署和权限注意事项
58
+ - AI自动部署云函数后,可能缺少云调用等特殊权限
59
+ - 建议用户在微信开发者工具中右键选择云函数,选择"云端安装依赖"
60
+ - 对于需要云调用权限的函数(如微信步数解密),建议通过开发者工具手动部署一次以获取完整权限
61
+ - 如遇到权限问题,提示用户检查云函数的服务授权和API权限配置
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: 页面设计和UI规范
3
+ globs: ["**/*.css", "**/*.scss", "**/*.less", "**/*.wxml", "**/*.html", "**/*.vue", "**/*.jsx", "**/*.tsx"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # 页面设计规则
8
+
9
+ 你是专业的前端开发工程师,专长于创建高保真原型设计。你的主要工作是将用户需求转化为可直接用于开发的界面原型。请通过以下方式完所有界面的原型设计,并确保这些原型界面可以直接用于开发。
10
+
11
+ ## 设计流程
12
+ 1. **用户体验分析**:先分析这个 App 的主要功能和用户需求,确定核心交互逻辑。
13
+
14
+ 2. **产品界面规划**:作为产品经理,定义关键界面,确保信息架构合理。
15
+
16
+ 3. **高保真 UI 设计**:作为 UI 设计师,设计贴近真实 iOS/Android 设计规范的界面,使用现代化的 UI 元素,使其具有良好的视觉体验。
17
+
18
+ 4. **前端原型实现**:使用 Tailwind CSS 来处理样式,可以使用 FontAwesome 让界面更加精美、接近真实的 App 设计。拆分代码文件,保持结构清晰。
19
+
20
+ 5. **真实感增强**:
21
+ - 使用真实的 UI 图片,而非占位符图片(可从 Unsplash、Pexels、Apple 官方 UI 资源中选择)
22
+
23
+ ## 设计限制
24
+ 如无特别要求,给出至多4个页面即可。无需考虑生成长度与复杂度,保证应用的丰富。
@@ -0,0 +1,44 @@
1
+ ---
2
+ description: Web 前端项目开发规则
3
+ globs: ["**/*.html", "**/*.js", "**/*.ts", "**/*.jsx", "**/*.tsx", "**/*.vue"]
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Web 前端开发规则
8
+
9
+ ## 项目结构
10
+ 1. web 项目一般前端源代码存放在 src 目录下,构建后的产物放在 dist 目录下,云函数放在 cloudfunctions 目录下
11
+ 2. 项目尽量使用 vite 等现代前端工程化体系,通过 npm 安装依赖
12
+ 3. 前端项目如何涉及到路由,可以默认用 hash 路由,可以解决路由刷新404的问题,更适合部署到静态网站托管
13
+
14
+ ## 部署和预览
15
+ 1. 如果是一个前端项目,你可以在构建完毕后使用云开发静态托管,先本地启动预览,然后可以跟用户确认是否需要部署到云开发静态托管,部署的时候,如果用户没有特殊要求,一般不要直接部署到根目录,并返回部署后的地址,需要是一个markdown 的链接格式
16
+ 2. 本地启动预览静态网页可以进到指定的产物目录后,可以用 `npx live-server`
17
+ 3. web 项目部署到静态托管 cdn 上时,由于无法提前预知路径,publicPath 之类的配置应该采用用相对路径而不是绝对路径。这会解决资源加载的问题
18
+
19
+ ## CloudBase Web SDK 使用
20
+ 1. 如果用户项目中需要用到数据库,云函数等功能,需要在 web 应用引入 @cloudbase/js-sdk@latest
21
+
22
+ ```js
23
+ const app = cloudbase.init({
24
+ env: 'xxxx-yyy'; // 可以通过 envQuery 工具来查询环境 id
25
+ });
26
+ const auth = app.auth();
27
+
28
+ // 检查当前登录状态
29
+ let loginState = await auth.getLoginState();
30
+
31
+ if (loginState && loginState.isLoggedIn) {
32
+ // 已登录
33
+ } else {
34
+ // 未登录
35
+ // 如果是游客类型,需要用下方的方式
36
+ // 重要 2.x的 jssdk 匿名登录必须采用下方的方式
37
+ // await auth.signInAnonymously();
38
+ // 如果需要登录,可以用下方的方式
39
+ // await auth.toDefaultLoginPage()
40
+ }
41
+ ```
42
+
43
+ ## 构建流程
44
+ web 构建项目流程:确保首先执行过 npm install 命令,然后参考项目说明进行构建
@@ -0,0 +1,30 @@
1
+ ---
2
+ description: 开发工作流程和部署流程
3
+ globs: []
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # 开发工作流程
8
+
9
+ ## 部署流程
10
+ 1. 部署云函数流程:可以通过 getFunctionList MCP 工具来查询是否有云函数,然后直接调用 createFunction 或者 updateFunctionCode 更新云函数代码,只需要将functionRootPath 指向云函数目录的父目录(例如 cloudfuncitons 这个目录的绝对路径),不需要压缩代码等操作,上述工具会自动读取云函数父目录下的云函数同名目录的文件,并自动进行部署
11
+
12
+ 2. 部署静态托管流程:通过使用 uploadFiles 工具部署,部署完毕后提醒用户 CDN 有几分钟缓存,可以生成一个带有随机 queryString 的markdown 格式 访问链接
13
+
14
+ 3. 下载远程素材链接:使用 downloadRemoteFile 工具下载文件到本地,如果需要远程链接,可以继续调用 uploadFile 上传后获得临时访问链接和云存储的 cloudId
15
+
16
+ 4. 从知识库查询专业知识:可以使用 searchKnowledgeBase 工具智能检索云开发知识库(支持云开发与云函数、小程序前端知识等),通过向量搜索快速获取专业文档与答案
17
+
18
+ 5. 下载云开发 AI 规则或者其他模板:可以使用downloadTemplate 来下载,如果无法下载到当前目录,可以使用脚本来进行复制,注意隐藏文件也需要复制
19
+
20
+ ## 文档生成规则
21
+ 1. 你会在生成项目后生成一个 README.md 文件,里面包含项目的基本信息,例如项目名称、项目描述, 最关键的是要把项目的架构和涉及到的云开发资源说清楚,让维护者可以参考来进行修改和维护
22
+ 2. 部署完毕后,如果是 web 可以把正式部署的访问地址也写到文档中
23
+
24
+ ## 配置文件规则
25
+ 1. 为了方便其他不使用 AI 的人了解有哪些资源,可以在生成之后,同时生成一个 cloudbaserc.json,并支持使用 @cloudbase/cli来部署,提供 AI 调用 MCP 部署之外的另外一个选项
26
+
27
+ ## MCP 接口调用规则
28
+ 你调用mcp服务的时候,需要充分理解所有要调用接口的数据类型,以及返回值的类型,如果你不确定需要调用什么接口,请先查看文档和tools的描述,然后根据文档和tools的描述,确定你需要调用什么接口和参数,不要出现调用的方法参数,或者参数类型错误的情况。
29
+
30
+ 例如,很多接口都需要传confirm参数,这个参数是boolean类型,如果你不提供这个参数,或者提供错误的数据类型错误,那么接口会返回错误。
@@ -0,0 +1,57 @@
1
+ # 技术方案设计
2
+
3
+ ## 架构概述
4
+
5
+ 本方案通过在 CLI 中暴露一个全局的 `cloudbase-mcp` bin 命令,直接调用内置的 `@cloudbase/cloudbase-mcp` 包,并修改模板下载逻辑,使所有 MCP 配置都指向这个全局命令,从而避免用户需要额外安装 MCP 包。
6
+
7
+ ## 技术栈
8
+
9
+ - Node.js CLI 工具
10
+ - `@cloudbase/cloudbase-mcp` 内置依赖
11
+ - 文件系统操作 (fs-extra)
12
+ - 模板下载和解压
13
+
14
+ ## 技术选型
15
+
16
+ ### 1. Bin 文件创建
17
+ - 在 `bin/` 目录下创建 `cloudbase-mcp.js` 文件
18
+ - 在 `package.json` 的 `bin` 字段中注册 `cloudbase-mcp` 命令
19
+ - 直接调用内置的 `@cloudbase/cloudbase-mcp` 包
20
+
21
+ ### 2. 模板配置生成
22
+ - 修改 `router.ts` 中的模板下载逻辑
23
+ - 根据 IDE 类型生成对应的 MCP 配置文件
24
+ - 所有配置都指向 `cloudbase-mcp` 命令
25
+
26
+ ### 3. IDE 配置映射和格式支持
27
+ - 参考 CloudBase-AI-ToolKit 的 IDE 到文件映射关系
28
+ - 支持 Cursor、VSCode、Claude Code、OpenAI Codex、OpenCode、aider 等多种 IDE
29
+ - 支持 JSON 和 TOML 两种配置文件格式
30
+ - 实现 TOML 解析和修改功能
31
+
32
+ ## 数据库/接口设计
33
+
34
+ 无需数据库设计,主要涉及文件系统操作和命令行接口。
35
+
36
+ ## 测试策略
37
+
38
+ 1. **单元测试**:测试 bin 文件是否正确调用内置包
39
+ 2. **集成测试**:测试模板下载和配置生成功能
40
+ 3. **端到端测试**:测试完整的 MCP 配置流程
41
+
42
+ ## 安全性
43
+
44
+ - 确保 bin 文件有正确的执行权限
45
+ - 验证模板下载源的安全性
46
+ - 防止路径遍历攻击
47
+
48
+ ## 实施计划
49
+
50
+ ```mermaid
51
+ graph TD
52
+ A[创建 cloudbase-mcp.js bin 文件] --> B[在 package.json 中注册命令]
53
+ B --> C[修改 router.ts 模板下载逻辑]
54
+ C --> D[实现 IDE 配置映射]
55
+ D --> E[测试验证]
56
+ E --> F[文档更新]
57
+ ```
@@ -0,0 +1,43 @@
1
+ # 需求文档
2
+
3
+ ## 介绍
4
+
5
+ 当前下载的模板中的 MCP 配置使用 `npx npm-global-exec@latest @cloudbase/cloudbase-mcp@latest` 命令,这会导致用户需要安装 MCP,降低了成功率。CLI 已经内置了 `@cloudbase/cloudbase-mcp@latest` 依赖,需要在 CLI 中直接暴露一个额外的 bin 文件指向到这个依赖,然后修改下载模板的 MCP 配置都指向这个全局命令。
6
+
7
+ ## 需求
8
+
9
+ ### 需求 1 - 创建全局 MCP bin 命令
10
+
11
+ **用户故事:** 作为开发者,我希望 CLI 提供一个全局的 MCP 命令,这样我就不需要额外安装 MCP 包,提高配置成功率。
12
+
13
+ #### 验收标准
14
+
15
+ 1. When CLI 安装后,the 系统 shall 提供一个全局的 `cloudbase-mcp` 命令
16
+ 2. When 执行 `cloudbase-mcp` 命令时,the 系统 shall 直接调用内置的 `@cloudbase/cloudbase-mcp` 包
17
+ 3. When 验证 MCP 配置时,the 配置文件中的命令 shall 指向 `cloudbase-mcp` 而不是 `npx npm-global-exec@latest @cloudbase/cloudbase-mcp@latest`
18
+
19
+ ### 需求 2 - 自动修改模板 MCP 配置
20
+
21
+ **用户故事:** 作为开发者,我希望下载模板后系统自动修改 MCP 配置,将 npx 命令替换为 CLI 提供的全局命令,避免额外的依赖安装。
22
+
23
+ #### 验收标准
24
+
25
+ 1. When 下载模板完成后,the 系统 shall 自动检测并修改所有 MCP 配置文件
26
+ 2. When 发现 `.cursor/mcp.json` 等配置文件时,the 系统 shall 将 `npx npm-global-exec@latest @cloudbase/cloudbase-mcp@latest` 替换为 `cloudbase-mcp`
27
+ 3. When 修改完成后,the 系统 shall 验证配置文件的正确性
28
+ 4. When 用户使用模板时,the MCP 功能 shall 无需额外安装即可正常工作
29
+
30
+ ### 需求 3 - 支持多种 IDE 配置和格式
31
+
32
+ **用户故事:** 作为开发者,我希望模板支持多种 IDE 的 MCP 配置,包括不同格式(JSON、TOML)和各种工具。
33
+
34
+ #### 验收标准
35
+
36
+ 1. When 下载模板时,the 系统 shall 根据 IDE 类型生成对应的配置文件
37
+ 2. When 配置 Cursor 时,the 系统 shall 生成 `.cursor/mcp.json` 和 `.cursor/rules/cloudbase-rules.mdc`
38
+ 3. When 配置 VSCode 时,the 系统 shall 生成 `.vscode/mcp.json` 和 `.vscode/settings.json`
39
+ 4. When 配置 Claude Code 时,the 系统 shall 生成 `CLAUDE.md` 和 `.mcp.json`
40
+ 5. When 配置 OpenAI Codex 时,the 系统 shall 处理 `.codex/config.toml` 文件
41
+ 6. When 配置 OpenCode 时,the 系统 shall 处理 `.opencode.json` 文件
42
+ 7. When 配置 aider 时,the 系统 shall 处理 `mcp.json` 文件
43
+ 8. When 处理 TOML 格式时,the 系统 shall 正确解析和修改配置
@@ -0,0 +1,54 @@
1
+ # 实施计划
2
+
3
+ - [x] 1. 创建 cloudbase-mcp bin 文件
4
+ - 在 `bin/` 目录下创建 `cloudbase-mcp.js` 文件
5
+ - 实现直接调用内置 `@cloudbase/cloudbase-mcp` 包的逻辑
6
+ - 确保文件有正确的执行权限
7
+ - _需求: 需求 1
8
+
9
+ - [x] 2. 在 package.json 中注册新命令
10
+ - 在 `bin` 字段中添加 `cloudbase-mcp` 命令映射
11
+ - 确保命令指向正确的 bin 文件
12
+ - _需求: 需求 1
13
+
14
+ - [x] 3. 实现 IDE 配置映射常量
15
+ - 在 `router.ts` 中添加 IDE 到文件的映射关系常量
16
+ - 参考 CloudBase-AI-ToolKit 的映射配置
17
+ - 支持 Cursor、VSCode、Claude Code 等多种 IDE
18
+ - _需求: 需求 3
19
+
20
+ - [x] 3.1. 扩展支持更多 IDE 和格式
21
+ - 添加 OpenAI Codex (.codex/config.toml) 支持
22
+ - 添加 OpenCode (.opencode.json) 支持
23
+ - 添加 aider (mcp.json) 支持
24
+ - 实现 TOML 格式解析和修改功能
25
+ - _需求: 需求 3
26
+
27
+ - [x] 4. 修改模板下载后的处理逻辑
28
+ - 在 `downloadAndExtractTemplate` 方法中添加 MCP 配置修改逻辑
29
+ - 实现自动检测 MCP 配置文件的功能
30
+ - 实现将 npx 命令替换为 cloudbase-mcp 命令的功能
31
+ - _需求: 需求 2
32
+
33
+ - [x] 5. 实现 MCP 配置文件修改函数
34
+ - 创建 `modifyMCPConfigs` 函数
35
+ - 遍历所有 IDE 配置文件并修改命令
36
+ - 验证修改后的配置文件正确性
37
+ - _需求: 需求 2
38
+
39
+ - [x] 6. 添加配置验证功能
40
+ - 实现验证 MCP 配置文件格式的功能
41
+ - 确保修改后的配置仍然有效
42
+ - 添加错误处理和回滚机制
43
+ - _需求: 需求 2
44
+
45
+ - [x] 7. 测试验证
46
+ - 测试 cloudbase-mcp 命令是否正常工作
47
+ - 测试模板下载和配置修改功能
48
+ - 测试不同 IDE 配置文件的生成
49
+ - _需求: 需求 1, 需求 2, 需求 3
50
+
51
+ - [x] 8. 文档更新
52
+ - 更新 README.md 说明新的 cloudbase-mcp 命令
53
+ - 更新模板下载相关的文档
54
+ - _需求: 需求 1, 需求 2
@@ -0,0 +1,23 @@
1
+ import { Command } from '../common';
2
+ import { ICommandContext } from '../../types';
3
+ import { Logger } from '../../utils/log';
4
+ export declare class AICommand extends Command {
5
+ get options(): {
6
+ cmd: string;
7
+ options: {
8
+ flags: string;
9
+ desc: string;
10
+ }[];
11
+ desc: string;
12
+ requiredEnvId: boolean;
13
+ withoutAuth: boolean;
14
+ allowUnknownOption: boolean;
15
+ };
16
+ execute(options: any, ctx: ICommandContext, log: Logger): Promise<void | {
17
+ defaultAgent: string;
18
+ }>;
19
+ private resetConfig;
20
+ private showConfig;
21
+ private parseArgs;
22
+ private getSubCommand;
23
+ }
@@ -16,3 +16,4 @@ export * from './fun';
16
16
  export * from './runf';
17
17
  export * from './cloudfunction';
18
18
  export * from './cloudrun';
19
+ export * from './ai';
@@ -15,6 +15,12 @@ export declare function fetchAccessToken(params: {
15
15
  secretKey: string;
16
16
  token?: string;
17
17
  }): Promise<any>;
18
+ export declare function rawFetchAccessToken(params: {
19
+ envId: string;
20
+ secretId: string;
21
+ secretKey: string;
22
+ token?: string;
23
+ }): Promise<any>;
18
24
  export declare function upsertCloudbaserc(projectPath: string, inputData: {
19
25
  envId?: string;
20
26
  [key: string]: any;
@@ -0,0 +1,2 @@
1
+ import { Logger } from '../log';
2
+ export declare function showBanner(log: Logger): Promise<void>;
@@ -0,0 +1,79 @@
1
+ import { ConfigParser } from '@cloudbase/toolbox';
2
+ import { CLAUDE, QWEN, CODEX, AIDER } from './const';
3
+ import z from 'zod/v3';
4
+ export declare const CONFIG_NOT_FOUND = "CONFIG_NOT_FOUND";
5
+ export declare function isValidAgent(agent: unknown): agent is keyof AIConfig['agents'];
6
+ export interface AIConfig {
7
+ defaultAgent: string;
8
+ agents: {
9
+ claude?: z.infer<(typeof CLAUDE)['configSchema']>;
10
+ qwen?: z.infer<(typeof QWEN)['configSchema']>;
11
+ codex?: z.infer<(typeof CODEX)['configSchema']>;
12
+ aider?: z.infer<(typeof AIDER)['configSchema']>;
13
+ };
14
+ }
15
+ export interface AgentConfig {
16
+ enabled: boolean;
17
+ command: string;
18
+ apiKey?: string;
19
+ baseUrl?: string;
20
+ model?: string;
21
+ maxTokens?: number;
22
+ }
23
+ export declare const TOOLKIT_CONFIGS: {
24
+ [x: string]: {
25
+ mcp: string;
26
+ rules: string;
27
+ config?: undefined;
28
+ } | {
29
+ config: string;
30
+ rules: string;
31
+ mcp?: undefined;
32
+ } | {
33
+ config: string;
34
+ mcp?: undefined;
35
+ rules?: undefined;
36
+ };
37
+ };
38
+ export declare function createConfigParser(): ConfigParser;
39
+ export declare class AIConfigManager {
40
+ private envLocalManager;
41
+ loadConfig(): Promise<AIConfig>;
42
+ isConfigured(): Promise<boolean>;
43
+ getAgentConfig(agent: string): Promise<AgentConfig | null>;
44
+ resetConfig(): Promise<void>;
45
+ checkToolkitConfig(agent: string): Promise<{
46
+ hasConfig: boolean;
47
+ hasMcp: boolean;
48
+ hasRules: boolean;
49
+ missingFiles: string[];
50
+ }>;
51
+ updateEnvId(envId: string): Promise<void>;
52
+ updateDefaultAgent(agent: string): Promise<void>;
53
+ updateClaudeConfig(type: 'custom' | 'cloudbase', config: {
54
+ baseUrl?: string;
55
+ apiKey?: string;
56
+ provider?: string;
57
+ model?: string;
58
+ transformer?: string;
59
+ }): Promise<void>;
60
+ updateQwenConfig(type: 'custom' | 'cloudbase', config: {
61
+ baseUrl?: string;
62
+ apiKey?: string;
63
+ provider?: string;
64
+ model?: string;
65
+ }): Promise<void>;
66
+ updateCodexConfig(type: 'custom' | 'cloudbase', config: {
67
+ baseUrl?: string;
68
+ apiKey?: string;
69
+ provider?: string;
70
+ model?: string;
71
+ }): Promise<void>;
72
+ updateAiderConfig(type: 'custom' | 'cloudbase', config: {
73
+ apiKey?: string;
74
+ baseUrl?: string;
75
+ model?: string;
76
+ provider?: string;
77
+ }): Promise<void>;
78
+ private updateConfig;
79
+ }