@tencent-ai/cloud-agent-sdk 0.2.15-next.2d2b062.20260324 → 0.2.15-next.2da9fcd.20260325

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -20786,6 +20786,31 @@ var LocalAgentProvider = class LocalAgentProvider {
20786
20786
  }
20787
20787
  }
20788
20788
  /**
20789
+ * 检查路径是否存在
20790
+ * 通过 __backend__ 路由到 BackendService → Main Process → fs.existsSync
20791
+ *
20792
+ * @param path 要检查的路径
20793
+ * @returns 路径是否存在
20794
+ */
20795
+ async checkPathExists(path) {
20796
+ this.log("Checking path exists:", path);
20797
+ try {
20798
+ const response = await this.channel.callMethod("__backend__", {
20799
+ type: "backend",
20800
+ requestId: `req-${Date.now()}-${Math.random().toString(36).slice(2)}`,
20801
+ params: {
20802
+ type: "backend:check-path-exists",
20803
+ params: { path }
20804
+ }
20805
+ }, 1e4);
20806
+ this.log("checkPathExists() response:", response.data);
20807
+ return response.data;
20808
+ } catch (error) {
20809
+ this.log("checkPathExists() failed:", error);
20810
+ return false;
20811
+ }
20812
+ }
20813
+ /**
20789
20814
  * 获取支持的场景列表(从后端 API)
20790
20815
  * 通过 shared ACP client 发送请求到 Extension Host
20791
20816
  * 用于 Welcome 页面的 QuickActions 快捷操作
@@ -23176,6 +23201,24 @@ var AgentClient = class {
23176
23201
  throw error;
23177
23202
  }
23178
23203
  },
23204
+ checkPathExists: async (path) => {
23205
+ try {
23206
+ if (this.provider && "checkPathExists" in this.provider && typeof this.provider.checkPathExists === "function") {
23207
+ const result = await this.provider.checkPathExists(path);
23208
+ this.logger?.info("Checked path exists", {
23209
+ path,
23210
+ exists: result
23211
+ });
23212
+ return result;
23213
+ } else {
23214
+ this.logger?.warn("Provider does not support checkPathExists");
23215
+ return true;
23216
+ }
23217
+ } catch (error) {
23218
+ this.logger?.error("Failed to check path exists", error);
23219
+ return true;
23220
+ }
23221
+ },
23179
23222
  getSupportScenes: async (locale) => {
23180
23223
  try {
23181
23224
  if (this.provider && "getSupportScenes" in this.provider && typeof this.provider.getSupportScenes === "function") return await this.provider.getSupportScenes(locale);
@@ -24266,6 +24309,39 @@ var BackendProvider = class BackendProvider {
24266
24309
  throw new Error(result?.msg || "Checkin failed");
24267
24310
  }
24268
24311
  /**
24312
+ * 上传分享文件到服务端获取分享链接
24313
+ * API 端点: POST /v2/backgroundagent/localProxy/upload
24314
+ *
24315
+ * 请求参数(multipart/form-data):
24316
+ * - file: File(必填)上传的文件
24317
+ * - fileName: string(必填)文件名(含扩展名)
24318
+ * - fileSize: string(可选)文件大小(字节)
24319
+ * - mimeType: string(可选)MIME 类型,不提供时自动检测
24320
+ * - generateShareLink: string(可选)是否生成分享链接,传 "true" 生成
24321
+ *
24322
+ * @param params 上传参数
24323
+ * @returns Promise<ShareFileUploadResult> 上传结果
24324
+ */
24325
+ async uploadShareFile(params) {
24326
+ try {
24327
+ const { file, fileName, fileSize, mimeType, generateShareLink } = params;
24328
+ const formData = new FormData();
24329
+ formData.append("file", file, fileName);
24330
+ formData.append("fileName", fileName);
24331
+ if (fileSize) formData.append("fileSize", fileSize);
24332
+ if (mimeType) formData.append("mimeType", mimeType);
24333
+ if (generateShareLink) formData.append("generateShareLink", generateShareLink);
24334
+ return await httpService.post("/v2/backgroundagent/localProxy/upload", formData, { headers: { "Content-Type": "multipart/form-data" } });
24335
+ } catch (error) {
24336
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
24337
+ console.error("[BackendProvider] uploadShareFile failed:", params.fileName, error);
24338
+ return {
24339
+ data: null,
24340
+ error: errorMessage
24341
+ };
24342
+ }
24343
+ }
24344
+ /**
24269
24345
  * 获取专家排行榜数据
24270
24346
  * API 端点: GET /console/expert/ranking
24271
24347
  * 完全对齐 getCheckinStatus 的调用方式
@@ -24415,6 +24491,7 @@ const BACKEND_REQUEST_TYPES = {
24415
24491
  GET_ACCOUNT_USAGE: "backend:get-account-usage",
24416
24492
  GET_CHECKIN_STATUS: "backend:get-checkin-status",
24417
24493
  CLAIM_DAILY_CHECKIN: "backend:claim-daily-checkin",
24494
+ UPLOAD_SHARE_FILE: "backend:upload-share-file",
24418
24495
  GET_ACTIVITY_BANNER: "backend:get-activity-banner",
24419
24496
  GET_EXPERT_RANKING: "backend:get-expert-ranking",
24420
24497
  SKILLHUB_LIST: "backend:skillhub-list",
@@ -24423,7 +24500,8 @@ const BACKEND_REQUEST_TYPES = {
24423
24500
  SKILLHUB_DETAIL: "backend:skillhub-detail",
24424
24501
  SKILLHUB_DOWNLOAD_URL: "backend:skillhub-download-url",
24425
24502
  SKILLHUB_EXISTS: "backend:skillhub-exists",
24426
- SKILLHUB_REPORT_STATS: "backend:skillhub-report-stats"
24503
+ SKILLHUB_REPORT_STATS: "backend:skillhub-report-stats",
24504
+ SUBMIT_USER_FEEDBACK: "backend:submit-user-feedback"
24427
24505
  };
24428
24506
  /**
24429
24507
  * 生成唯一请求 ID
@@ -24797,21 +24875,21 @@ var IPCBackendProvider = class {
24797
24875
  */
24798
24876
  async getLocalCustomModels() {
24799
24877
  this.log("Getting local custom models via IPC");
24800
- return await this.sendBackendRequest(BACKEND_REQUEST_TYPES.GET_LOCAL_CUSTOM_MODELS);
24878
+ return this.sendBackendRequest(BACKEND_REQUEST_TYPES.GET_LOCAL_CUSTOM_MODELS);
24801
24879
  }
24802
24880
  /**
24803
24881
  * 保存用户级本地自定义模型
24804
24882
  */
24805
24883
  async saveLocalCustomModel(request) {
24806
24884
  this.log("Saving local custom model via IPC:", request);
24807
- return await this.sendBackendRequest(BACKEND_REQUEST_TYPES.SAVE_LOCAL_CUSTOM_MODEL, request);
24885
+ return this.sendBackendRequest(BACKEND_REQUEST_TYPES.SAVE_LOCAL_CUSTOM_MODEL, request);
24808
24886
  }
24809
24887
  /**
24810
24888
  * 删除用户级本地自定义模型
24811
24889
  */
24812
24890
  async deleteLocalCustomModel(id) {
24813
24891
  this.log("Deleting local custom model via IPC:", id);
24814
- return await this.sendBackendRequest(BACKEND_REQUEST_TYPES.DELETE_LOCAL_CUSTOM_MODEL, { id });
24892
+ return this.sendBackendRequest(BACKEND_REQUEST_TYPES.DELETE_LOCAL_CUSTOM_MODEL, { id });
24815
24893
  }
24816
24894
  /**
24817
24895
  * 批量切换插件状态
@@ -24892,6 +24970,31 @@ var IPCBackendProvider = class {
24892
24970
  }
24893
24971
  }
24894
24972
  /**
24973
+ * 上传分享文件到服务端获取分享链接
24974
+ * IDE 环境: 通过 IPC 将文件路径转发给 Electron 主进程
24975
+ *
24976
+ * 优化:直接传递文件路径,由主进程通过 fs 读取文件二进制流,
24977
+ * 避免 Blob → base64 编码的 33% 体积膨胀和 IPC 大数据传输开销
24978
+ *
24979
+ * @param params 上传参数,包含文件 Blob、文件名等信息
24980
+ * @returns Promise<ShareFileUploadResult> 上传结果
24981
+ */
24982
+ async uploadShareFile(params) {
24983
+ this.log("Uploading share file via IPC:", params.fileName);
24984
+ try {
24985
+ return await this.sendBackendRequest(BACKEND_REQUEST_TYPES.UPLOAD_SHARE_FILE, {
24986
+ filePath: params.filePath,
24987
+ fileName: params.fileName,
24988
+ fileSize: params.fileSize,
24989
+ mimeType: params.mimeType,
24990
+ generateShareLink: params.generateShareLink
24991
+ });
24992
+ } catch (error) {
24993
+ this.log("Upload share file failed:", error);
24994
+ throw error;
24995
+ }
24996
+ }
24997
+ /**
24895
24998
  * 获取活动 Banner
24896
24999
  * IDE 环境: 通过 IPC 获取活动 Banner
24897
25000
  */
@@ -25041,6 +25144,28 @@ var IPCBackendProvider = class {
25041
25144
  }
25042
25145
  }
25043
25146
  /**
25147
+ * 提交用户意见反馈
25148
+ * IDE 环境: 通过 IPC 将反馈数据发送到 Extension Host
25149
+ *
25150
+ * 调用链:
25151
+ * 1. agent-ui: FeedbackModal -> submitFeedback() -> adapter.submitUserFeedback()
25152
+ * 2. adapter: backendProvider.submitUserFeedback()
25153
+ * 3. IPCBackendProvider: sendBackendRequest('backend:submit-user-feedback', params)
25154
+ * 4. Extension Host: BackendBridgeService -> POST /v2/feedback
25155
+ */
25156
+ async submitUserFeedback(params) {
25157
+ this.log("Submitting user feedback via IPC");
25158
+ try {
25159
+ return await this.sendBackendRequest(BACKEND_REQUEST_TYPES.SUBMIT_USER_FEEDBACK, params);
25160
+ } catch (error) {
25161
+ this.log("Submit user feedback failed:", error);
25162
+ return {
25163
+ success: false,
25164
+ error: error instanceof Error ? error.message : "Unknown error"
25165
+ };
25166
+ }
25167
+ }
25168
+ /**
25044
25169
  * 调试日志
25045
25170
  */
25046
25171
  log(...args) {