@xopcai/xopc 0.0.361 → 0.0.362
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/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-tpFInIoh.js → activity-store-_2aJ4ozN.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DUhFW_Go.js → agent-avatar-dicebear-CSIn4ghK.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-BNILmgey.js → agent-defaults-settings-panel-DBNFaHYa.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-CnWci4JJ.js → agent-plugin-dialog-DJkGbMVg.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-CKS5LUUs.js → agents-CuQayYYr.js} +3 -3
- package/dist/gateway/static/root/assets/{agents-admin-api-CiAjB2iQ.js → agents-admin-api-Dl0V7UQq.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DEig00YU.js → app-management-settings-panel-CSczq9QV.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CccnRRrL.js → appearance-settings-W0vc1J1Q.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-CkT6UNZW.js → apps-page-esnvb3hh.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-CIlmZBe5.js → archive-plugin-CBR91gHK.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-8kZugDcf.js → automations-page-B9RdzKUS.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-3V54ShL0.js → automations-workspace-U9TEZd_t.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-BuQiee_b.js → binary-plugins-C9KIjPph.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-BFFRbsKX.js → block-editor-C0bammwh.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-CWujpdCx.js → browser-automation-inputs-D2E0co_S.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-HVXiBKXE.js → browser-automations-page-8kqdhAOz.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-DpxAXNvM.js → browser-settings-page-Dl4idi13.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-CngwB2JU.js → capabilities-Bfktn_7E.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-RMlKKfGF.js → capabilities-BmMMlNmY.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-BBi4ef3u.js → capabilities-page-3ImhKPBx.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-IxszGl-Q.js → capabilities-settings-panel-4VDEB_ob.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-header-actions-BLOIJvIZ.js → capability-header-actions-D1gxCGi8.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-Ced5nFBc.js → channels-Drbr2JR-.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BskUzDCS.js → chat-terminal-dock-CSkksCaa.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-De-pjlvn.js → computer-settings-page-BIXpOJAk.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-Qc1mVfp9.js → connector-service-page-CTnlVEE1.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-CPqeY1x5.js → connectors-page-BluT2l4d.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-7ppMIGfQ.js → date-picker-Bw-CydDe.js} +1 -1
- package/dist/gateway/static/root/assets/dependency-picker-CgHzhtAc.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-GKEfqHDF.js → desktop-pet-YahEnyfd.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-qoFZBKe9.js → desktop-pet-settings-47Z4bqJr.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-D8sTDd5s.js → device-pairing-wizard-C3aPEEaM.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BC87CZa2.js → directory-picker-path-field-DH_ok92y.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-VxCq29jC.js → extension-debug-page-t1TiLQrR.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DypBVBTt.js → extension-page-BeV-7G1h.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-wlvxPese.js → extension-provider-CFCxzqna.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DzzkBN9y.js → extension-settings-page-DCODJHOu.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-s4qTRcPJ.js → fallback-models-CJzvASNV.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-ZM72jovc.js → gateway-config-swr-B3LfyXpc.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-B-hrykag.js → gateway-realtime-CWxXXAe_.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-DS4WzQyF.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-settings--M7ZH_37.js → gateway-settings-Q5NFzAJ_.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DjWuTj8B.js → gateway-startup-retry-BzQP02wp.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-KFs5suD1.js → home-page-DndTkAw8.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-C9cwrqCr.js → image-generation-api-BO-Xs__S.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-BKy0ImXk.js → imports-page-Bb6Gm30L.js} +1 -1
- package/dist/gateway/static/root/assets/index-Byk2QKIS.css +1 -0
- package/dist/gateway/static/root/assets/{index-C0JT9Ja4.js → index-qOHWhsEK.js} +6 -6
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CexiL-Ey.js → keyboard-shortcuts-settings-D2u6sk5l.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-CcU1OLWQ.js → local-app-workbench-page-CHeMfXrB.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-BcLijQx4.js → local-apps-page-BanU1SLr.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-C7QjBMNp.js → local-session-drafts-DLZQBcZY.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-5sV3dDRG.js → locale-store-BbwWB0ra.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-48nrZNQe.js → logs-page-CQdHKCL0.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-B_gzl_Vh.js → management-settings-D0V5kCx0.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-V0f5NW7D.js → markdown-view-DIBLXsPm.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-_obxSZmT.js → media-plugins-XPzvDZPz.js} +1 -1
- package/dist/gateway/static/root/assets/{messages-CaURu8bb.js → messages-B4AhAW4B.js} +2 -2
- package/dist/gateway/static/root/assets/models-hub-cache-DN5MnhL8.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-B9AeX98W.js → note-detail-panel-CodeKI_W.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-api-CBnMq6Nc.js → notes-api-CLn4r03Z.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-CKTTfxw-.js → notes-page-liRQoHbF.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-api-Bu2RoLF2.js → oauth-api-D9zkd42J.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-BsxBAWD_.js → page-context-capture-button-DO6DB9pi.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-Cfl1FR3i.js → personal-page-DdfdwOv5.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-D1ARqS3r.js → product-open-page-C9a3sm6Z.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-Cro1OE8P.js → project-detail-page-BVe5R-Nj.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-CdEmmBCz.js → projects-page-D_rCwi7w.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-j1rNFkP2.js → registry-api-BFxQTbXQ.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-C9_ea_4p.js → remote-access-hub-B3imt2du.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DtmQbC72.js → runtime-tools-settings-panel-C9WC8hJM.js} +1 -1
- package/dist/gateway/static/root/assets/{scenes-page-DeFdMf2q.js → scenes-page-DL95V1UP.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-ByEHHW6n.js → schema-form-CDgGmgrq.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-CO_vUCb8.js → send-session-input-tkAQXGBG.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-CYPGi01d.js → session-api-9X7qep91.js} +1 -1
- package/dist/gateway/static/root/assets/{session-manager-BdJThQQ6.js → session-manager-Dy22bbJT.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-CV0JlaXS.js → sessions-page-CeeKIVsM.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DuvJrDU2.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-CHKsZFAN.js → settings-page-xmUGYSOG.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-CC58OVOe.js → setup-status-panel-CmjT9Q4P.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-ZOdnHkmb.js → share-link-dialog-DeOe9qfQ.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-BPDWUuH_.js → share-preview-page-Ck27gozJ.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-T5gR8yqz.js → shares-api-D-GuMkPu.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-DaXvdH8c.js → shares-settings-DpvM2OyO.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-CHCLMcfO.js → skill-api-BpD02td8.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-C-RoiUJi.js → skill-reload-api-CezAwYxM.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-a9UQQnqn.js → skills-page-BCgbVI-P.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-Dho_dlBS.js → system-settings-panel-UODcpzsP.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-BbqQnNes.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-CEl74p7l.js → theme-store-6IK2Ik2J.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-BDqCyf8G.js → tunnel-api-Eey2aZIz.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-DKwKfszc.js → usage-page-BrWj5mk3.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-D09eZTLp.js → use-autosave-B-3BJbnn.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-CkvJM8Km.js → use-composer-attachments-ByAHuR8v.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-J3HnG8OH.js → use-file-preview-expanded-CXVwWJeP.js} +2 -2
- package/dist/gateway/static/root/assets/{user-model-page-BsgADrGL.js → user-model-page-Cg-oM8nY.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-DH-to9Rd.js → voice-api-key-field-BtffIKZD.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-CmCfVy3H.js → voice-config-api-BMm9dSKX.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-x1vZDBhu.js → work-discovery-overlay-ByHhF_4r.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DGatvmK1.js → workflow-run-setup-panel-DfNn5VTy.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-DgNy6mBQ.js → workflows-page-B67D-7Wt.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-api-DzPw92Kx.js → workspace-api-TAD7LYsc.js} +2 -2
- package/dist/gateway/static/root/connector-icons/README.md +5 -2
- package/dist/gateway/static/root/connector-icons/SOURCES.md +15 -1
- package/dist/gateway/static/root/connector-icons/amap.ico +0 -0
- package/dist/gateway/static/root/connector-icons/antv-chart.png +0 -0
- package/dist/gateway/static/root/connector-icons/bailian.png +0 -0
- package/dist/gateway/static/root/connector-icons/dida365.png +0 -0
- package/dist/gateway/static/root/connector-icons/flomo.png +0 -0
- package/dist/gateway/static/root/connector-icons/gmail.svg +1 -3
- package/dist/gateway/static/root/connector-icons/jira.svg +3 -14
- package/dist/gateway/static/root/connector-icons/railway-12306.jpg +0 -0
- package/dist/gateway/static/root/connector-icons/railway-query.svg +1 -0
- package/dist/gateway/static/root/connector-icons/tencent-docs.ico +0 -0
- package/dist/gateway/static/root/connector-icons/yuque.png +0 -0
- package/dist/gateway/static/root/index.html +28 -28
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/task-result-delivery.js +2 -2
- package/dist/src/agent/tasks/task-judge-service.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/connectors/china-catalog.js +572 -0
- package/dist/src/connectors/cli/authorization.js +3 -2
- package/dist/src/connectors/cli/installer.js +3 -1
- package/dist/src/gateway/hono/routes/connectors.js +1 -1
- package/dist/src/gateway/side-chat/manager.js +3 -2
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/tasks/task-result-delivery-repository.js +4 -5
- package/package.json +2 -2
- package/dist/gateway/static/root/assets/dependency-picker-DfYC22si.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-B6B1fw_K.js +0 -1
- package/dist/gateway/static/root/assets/index-B7AHDHSO.css +0 -1
- package/dist/gateway/static/root/assets/models-hub-cache-Cs3E5pEA.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-D9sW0hKa.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-B5JyH4z7.js +0 -1
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
//#region src/connectors/china-catalog.ts
|
|
2
2
|
const DINGTALK_MCP_VERSION = "1.1.21";
|
|
3
|
+
const AMAP_MCP_VERSION = "0.0.8";
|
|
4
|
+
const YUQUE_MCP_VERSION = "1.0.0";
|
|
5
|
+
const RAILWAY_MCP_VERSION = "0.3.10";
|
|
6
|
+
const ANTV_CHART_MCP_VERSION = "0.9.10";
|
|
3
7
|
const CHINA_CONNECTORS = [
|
|
4
8
|
{
|
|
5
9
|
id: "feishu-workspace",
|
|
@@ -295,6 +299,574 @@ const CHINA_CONNECTORS = [
|
|
|
295
299
|
workload: "core",
|
|
296
300
|
preferred: true
|
|
297
301
|
}
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
id: "tencent-docs",
|
|
305
|
+
version: "1.0.0",
|
|
306
|
+
displayName: "腾讯文档",
|
|
307
|
+
description: "通过腾讯文档官方 MCP 搜索和读取文档、创建智能文档,用于工作资料、家庭清单和计划整理。可用工具受账号权限及会员权益限制。",
|
|
308
|
+
category: "docs",
|
|
309
|
+
kind: "mcp",
|
|
310
|
+
source: "builtin",
|
|
311
|
+
capabilities: [
|
|
312
|
+
"tools",
|
|
313
|
+
"runtime.mcp.streamableHttp",
|
|
314
|
+
"auth.apiKey"
|
|
315
|
+
],
|
|
316
|
+
benefits: ["understand", "act"],
|
|
317
|
+
tags: [
|
|
318
|
+
"中国",
|
|
319
|
+
"工作",
|
|
320
|
+
"生活",
|
|
321
|
+
"规划",
|
|
322
|
+
"腾讯文档",
|
|
323
|
+
"Tencent Docs",
|
|
324
|
+
"文档",
|
|
325
|
+
"清单"
|
|
326
|
+
],
|
|
327
|
+
branding: {
|
|
328
|
+
logoUrl: "/connector-icons/tencent-docs.ico",
|
|
329
|
+
source: "builtin"
|
|
330
|
+
},
|
|
331
|
+
verificationLevel: "beta",
|
|
332
|
+
auth: { mode: "apiKey" },
|
|
333
|
+
setup: {
|
|
334
|
+
links: [{
|
|
335
|
+
label: "获取腾讯文档 MCP Token",
|
|
336
|
+
href: "https://docs.qq.com/open/auth/mcp.html",
|
|
337
|
+
external: true
|
|
338
|
+
}, {
|
|
339
|
+
label: "官方 MCP 接入与工具说明",
|
|
340
|
+
href: "https://developer.cloud.tencent.com/mcp/server/11803",
|
|
341
|
+
external: true
|
|
342
|
+
}],
|
|
343
|
+
secrets: [{
|
|
344
|
+
key: "token",
|
|
345
|
+
label: "腾讯文档 MCP Token",
|
|
346
|
+
description: "在腾讯文档授权页获取,直接粘贴 Token,不要添加 Bearer 前缀。",
|
|
347
|
+
required: true
|
|
348
|
+
}]
|
|
349
|
+
},
|
|
350
|
+
runtime: {
|
|
351
|
+
type: "mcp",
|
|
352
|
+
serverId: "tencent_docs",
|
|
353
|
+
serverTemplate: {
|
|
354
|
+
url: "https://docs.qq.com/openapi/mcp",
|
|
355
|
+
transport: "streamable-http",
|
|
356
|
+
headers: { Authorization: "{{secrets.token}}" }
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
permissions: {
|
|
360
|
+
data: ["documents"],
|
|
361
|
+
networkDomains: ["docs.qq.com"],
|
|
362
|
+
localExec: false,
|
|
363
|
+
filesystem: []
|
|
364
|
+
},
|
|
365
|
+
integrationStrategy: {
|
|
366
|
+
lane: "mcp",
|
|
367
|
+
workload: "core",
|
|
368
|
+
preferred: true
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
id: "yuque",
|
|
373
|
+
version: YUQUE_MCP_VERSION,
|
|
374
|
+
displayName: "语雀",
|
|
375
|
+
description: "连接语雀知识库,搜索和读取笔记、创建和更新文档,用于工作知识、学习笔记及长期计划。",
|
|
376
|
+
category: "docs",
|
|
377
|
+
kind: "mcp",
|
|
378
|
+
source: "builtin",
|
|
379
|
+
capabilities: [
|
|
380
|
+
"tools",
|
|
381
|
+
"runtime.mcp.stdio",
|
|
382
|
+
"auth.apiKey"
|
|
383
|
+
],
|
|
384
|
+
benefits: ["understand", "act"],
|
|
385
|
+
tags: [
|
|
386
|
+
"中国",
|
|
387
|
+
"工作",
|
|
388
|
+
"生活",
|
|
389
|
+
"规划",
|
|
390
|
+
"语雀",
|
|
391
|
+
"Yuque",
|
|
392
|
+
"知识库",
|
|
393
|
+
"笔记",
|
|
394
|
+
"学习"
|
|
395
|
+
],
|
|
396
|
+
branding: {
|
|
397
|
+
logoUrl: "/connector-icons/yuque.png",
|
|
398
|
+
source: "builtin"
|
|
399
|
+
},
|
|
400
|
+
verificationLevel: "beta",
|
|
401
|
+
auth: { mode: "apiKey" },
|
|
402
|
+
setup: {
|
|
403
|
+
links: [{
|
|
404
|
+
label: "获取语雀个人 Token",
|
|
405
|
+
href: "https://www.yuque.com/settings/tokens",
|
|
406
|
+
external: true
|
|
407
|
+
}, {
|
|
408
|
+
label: "语雀官方 MCP 项目",
|
|
409
|
+
href: "https://github.com/yuque/yuque-mcp-server",
|
|
410
|
+
external: true
|
|
411
|
+
}],
|
|
412
|
+
secrets: [{
|
|
413
|
+
key: "token",
|
|
414
|
+
label: "语雀个人 Token",
|
|
415
|
+
description: "在语雀账号设置中创建,勾选需要访问的知识库和文档权限;Token 获取资格以账号权益为准。",
|
|
416
|
+
required: true
|
|
417
|
+
}]
|
|
418
|
+
},
|
|
419
|
+
runtime: {
|
|
420
|
+
type: "mcp",
|
|
421
|
+
serverId: "yuque",
|
|
422
|
+
localPackage: {
|
|
423
|
+
registry: "npm",
|
|
424
|
+
name: "yuque-mcp",
|
|
425
|
+
version: YUQUE_MCP_VERSION
|
|
426
|
+
},
|
|
427
|
+
serverTemplate: {
|
|
428
|
+
command: "npx",
|
|
429
|
+
args: ["-y", `yuque-mcp@${YUQUE_MCP_VERSION}`],
|
|
430
|
+
env: { YUQUE_PERSONAL_TOKEN: "{{secrets.token}}" }
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
permissions: {
|
|
434
|
+
data: ["documents", "knowledge_bases"],
|
|
435
|
+
networkDomains: ["www.yuque.com"],
|
|
436
|
+
localExec: true,
|
|
437
|
+
filesystem: []
|
|
438
|
+
},
|
|
439
|
+
integrationStrategy: {
|
|
440
|
+
lane: "mcp",
|
|
441
|
+
workload: "core",
|
|
442
|
+
preferred: true
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
id: "amap-maps",
|
|
447
|
+
version: AMAP_MCP_VERSION,
|
|
448
|
+
displayName: "高德地图",
|
|
449
|
+
description: "查询国内地点、周边设施和天气,规划驾车、步行、骑行及公交路线,用于日常生活、通勤和旅行安排。",
|
|
450
|
+
category: "data",
|
|
451
|
+
kind: "mcp",
|
|
452
|
+
source: "builtin",
|
|
453
|
+
capabilities: [
|
|
454
|
+
"tools",
|
|
455
|
+
"runtime.mcp.stdio",
|
|
456
|
+
"auth.apiKey"
|
|
457
|
+
],
|
|
458
|
+
benefits: ["understand"],
|
|
459
|
+
tags: [
|
|
460
|
+
"中国",
|
|
461
|
+
"生活",
|
|
462
|
+
"出行",
|
|
463
|
+
"规划",
|
|
464
|
+
"高德",
|
|
465
|
+
"Amap",
|
|
466
|
+
"地图",
|
|
467
|
+
"路线",
|
|
468
|
+
"公交",
|
|
469
|
+
"天气",
|
|
470
|
+
"周边"
|
|
471
|
+
],
|
|
472
|
+
branding: {
|
|
473
|
+
logoUrl: "/connector-icons/amap.ico",
|
|
474
|
+
source: "builtin"
|
|
475
|
+
},
|
|
476
|
+
verificationLevel: "beta",
|
|
477
|
+
auth: { mode: "apiKey" },
|
|
478
|
+
setup: {
|
|
479
|
+
links: [{
|
|
480
|
+
label: "在高德控制台创建 Web 服务 Key",
|
|
481
|
+
href: "https://console.amap.com/dev/key/app",
|
|
482
|
+
external: true
|
|
483
|
+
}, {
|
|
484
|
+
label: "高德官方 MCP 接入说明",
|
|
485
|
+
href: "https://developer.amap.com/api/mcp-server/gettingstarted",
|
|
486
|
+
external: true
|
|
487
|
+
}],
|
|
488
|
+
secrets: [{
|
|
489
|
+
key: "apiKey",
|
|
490
|
+
label: "高德 Web 服务 Key",
|
|
491
|
+
description: "创建应用并添加 Key,服务平台选择 Web 服务。调用配额和商业使用条件以高德账号及服务条款为准。",
|
|
492
|
+
required: true
|
|
493
|
+
}]
|
|
494
|
+
},
|
|
495
|
+
runtime: {
|
|
496
|
+
type: "mcp",
|
|
497
|
+
serverId: "amap_maps",
|
|
498
|
+
localPackage: {
|
|
499
|
+
registry: "npm",
|
|
500
|
+
name: "@amap/amap-maps-mcp-server",
|
|
501
|
+
version: AMAP_MCP_VERSION
|
|
502
|
+
},
|
|
503
|
+
serverTemplate: {
|
|
504
|
+
command: "npx",
|
|
505
|
+
args: ["-y", `@amap/amap-maps-mcp-server@${AMAP_MCP_VERSION}`],
|
|
506
|
+
env: { AMAP_MAPS_API_KEY: "{{secrets.apiKey}}" }
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
permissions: {
|
|
510
|
+
data: [
|
|
511
|
+
"locations",
|
|
512
|
+
"routes",
|
|
513
|
+
"weather"
|
|
514
|
+
],
|
|
515
|
+
networkDomains: ["restapi.amap.com"],
|
|
516
|
+
localExec: true,
|
|
517
|
+
filesystem: []
|
|
518
|
+
},
|
|
519
|
+
integrationStrategy: {
|
|
520
|
+
lane: "mcp",
|
|
521
|
+
workload: "core",
|
|
522
|
+
preferred: true
|
|
523
|
+
}
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
id: "bailian-web-search",
|
|
527
|
+
version: "1.0.0",
|
|
528
|
+
displayName: "百炼联网搜索",
|
|
529
|
+
description: "通过阿里云百炼官方 MCP 检索实时网页,为工作调研、生活信息、出行攻略和计划比较提供来源。",
|
|
530
|
+
category: "data",
|
|
531
|
+
kind: "mcp",
|
|
532
|
+
source: "builtin",
|
|
533
|
+
capabilities: [
|
|
534
|
+
"tools",
|
|
535
|
+
"runtime.mcp.streamableHttp",
|
|
536
|
+
"auth.apiKey"
|
|
537
|
+
],
|
|
538
|
+
benefits: ["understand"],
|
|
539
|
+
tags: [
|
|
540
|
+
"中国",
|
|
541
|
+
"工作",
|
|
542
|
+
"生活",
|
|
543
|
+
"出行",
|
|
544
|
+
"规划",
|
|
545
|
+
"百炼",
|
|
546
|
+
"阿里云",
|
|
547
|
+
"DashScope",
|
|
548
|
+
"联网搜索",
|
|
549
|
+
"调研"
|
|
550
|
+
],
|
|
551
|
+
branding: {
|
|
552
|
+
logoUrl: "/connector-icons/bailian.png",
|
|
553
|
+
source: "builtin"
|
|
554
|
+
},
|
|
555
|
+
verificationLevel: "beta",
|
|
556
|
+
auth: { mode: "apiKey" },
|
|
557
|
+
setup: {
|
|
558
|
+
links: [{
|
|
559
|
+
label: "前往百炼控制台开通联网搜索 MCP 并获取 API Key",
|
|
560
|
+
href: "https://bailian.console.aliyun.com/",
|
|
561
|
+
external: true
|
|
562
|
+
}, {
|
|
563
|
+
label: "百炼 MCP 外部调用说明",
|
|
564
|
+
href: "https://docs.agent.bailian.aliyun.com/zh/mcp/external-invocation",
|
|
565
|
+
external: true
|
|
566
|
+
}],
|
|
567
|
+
secrets: [{
|
|
568
|
+
key: "apiKey",
|
|
569
|
+
label: "DashScope API Key",
|
|
570
|
+
description: "先在百炼 MCP 广场开通联网搜索,再填入对应的百炼平台 API Key。服务配额以控制台为准;直接粘贴 Key,不要添加 Bearer 前缀。",
|
|
571
|
+
required: true
|
|
572
|
+
}]
|
|
573
|
+
},
|
|
574
|
+
runtime: {
|
|
575
|
+
type: "mcp",
|
|
576
|
+
serverId: "bailian_web_search",
|
|
577
|
+
serverTemplate: {
|
|
578
|
+
url: "https://dashscope.aliyuncs.com/api/v1/mcps/WebSearch/mcp",
|
|
579
|
+
transport: "streamable-http",
|
|
580
|
+
headers: { Authorization: "Bearer {{secrets.apiKey}}" }
|
|
581
|
+
}
|
|
582
|
+
},
|
|
583
|
+
permissions: {
|
|
584
|
+
data: ["search_queries"],
|
|
585
|
+
networkDomains: ["dashscope.aliyuncs.com"],
|
|
586
|
+
localExec: false,
|
|
587
|
+
filesystem: []
|
|
588
|
+
},
|
|
589
|
+
integrationStrategy: {
|
|
590
|
+
lane: "mcp",
|
|
591
|
+
workload: "core",
|
|
592
|
+
preferred: true
|
|
593
|
+
}
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
id: "dida365",
|
|
597
|
+
version: "1.0.0",
|
|
598
|
+
displayName: "滴答清单",
|
|
599
|
+
description: "连接你的个人滴答清单账号,查询和管理任务、清单、习惯及专注记录,用于工作安排、家庭事项和学习计划。",
|
|
600
|
+
category: "automation",
|
|
601
|
+
kind: "mcp",
|
|
602
|
+
source: "builtin",
|
|
603
|
+
capabilities: [
|
|
604
|
+
"tools",
|
|
605
|
+
"runtime.mcp.streamableHttp",
|
|
606
|
+
"auth.apiKey"
|
|
607
|
+
],
|
|
608
|
+
benefits: ["understand", "act"],
|
|
609
|
+
tags: [
|
|
610
|
+
"中国",
|
|
611
|
+
"个人账号",
|
|
612
|
+
"工作",
|
|
613
|
+
"生活",
|
|
614
|
+
"规划",
|
|
615
|
+
"滴答清单",
|
|
616
|
+
"Dida365",
|
|
617
|
+
"待办",
|
|
618
|
+
"任务",
|
|
619
|
+
"习惯",
|
|
620
|
+
"专注"
|
|
621
|
+
],
|
|
622
|
+
branding: {
|
|
623
|
+
logoUrl: "/connector-icons/dida365.png",
|
|
624
|
+
source: "builtin"
|
|
625
|
+
},
|
|
626
|
+
verificationLevel: "beta",
|
|
627
|
+
auth: { mode: "apiKey" },
|
|
628
|
+
setup: {
|
|
629
|
+
links: [{
|
|
630
|
+
label: "打开滴答清单网页版获取 API 口令",
|
|
631
|
+
href: "https://dida365.com/",
|
|
632
|
+
external: true
|
|
633
|
+
}, {
|
|
634
|
+
label: "滴答清单官方 MCP 配置说明",
|
|
635
|
+
href: "https://help.dida365.com/articles/7438132116019216384",
|
|
636
|
+
external: true
|
|
637
|
+
}],
|
|
638
|
+
secrets: [{
|
|
639
|
+
key: "token",
|
|
640
|
+
label: "滴答清单 API 口令",
|
|
641
|
+
description: "登录个人账号,在「设置 → 账户与安全 → API 口令」中创建并复制。直接粘贴口令,不要添加 Bearer 前缀;无需创建开发者应用。",
|
|
642
|
+
required: true
|
|
643
|
+
}]
|
|
644
|
+
},
|
|
645
|
+
runtime: {
|
|
646
|
+
type: "mcp",
|
|
647
|
+
serverId: "dida365",
|
|
648
|
+
serverTemplate: {
|
|
649
|
+
url: "https://mcp.dida365.com",
|
|
650
|
+
transport: "streamable-http",
|
|
651
|
+
headers: { Authorization: "Bearer {{secrets.token}}" }
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
permissions: {
|
|
655
|
+
data: [
|
|
656
|
+
"tasks",
|
|
657
|
+
"habits",
|
|
658
|
+
"focus_records"
|
|
659
|
+
],
|
|
660
|
+
networkDomains: ["mcp.dida365.com"],
|
|
661
|
+
localExec: false,
|
|
662
|
+
filesystem: []
|
|
663
|
+
},
|
|
664
|
+
integrationStrategy: {
|
|
665
|
+
lane: "mcp",
|
|
666
|
+
workload: "core",
|
|
667
|
+
preferred: true
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
id: "flomo",
|
|
672
|
+
version: "1.0.0",
|
|
673
|
+
displayName: "flomo 浮墨笔记",
|
|
674
|
+
description: "连接你的个人 flomo 账号,搜索和读取旧笔记、保存新想法、整理标签,用于工作思考、生活记录和长期复盘。需要 flomo Max 会员。",
|
|
675
|
+
category: "docs",
|
|
676
|
+
kind: "mcp",
|
|
677
|
+
source: "builtin",
|
|
678
|
+
capabilities: [
|
|
679
|
+
"tools",
|
|
680
|
+
"runtime.mcp.streamableHttp",
|
|
681
|
+
"auth.apiKey"
|
|
682
|
+
],
|
|
683
|
+
benefits: ["understand", "act"],
|
|
684
|
+
tags: [
|
|
685
|
+
"中国",
|
|
686
|
+
"个人账号",
|
|
687
|
+
"工作",
|
|
688
|
+
"生活",
|
|
689
|
+
"规划",
|
|
690
|
+
"flomo",
|
|
691
|
+
"浮墨",
|
|
692
|
+
"笔记",
|
|
693
|
+
"标签",
|
|
694
|
+
"复盘"
|
|
695
|
+
],
|
|
696
|
+
branding: {
|
|
697
|
+
logoUrl: "/connector-icons/flomo.png",
|
|
698
|
+
source: "builtin"
|
|
699
|
+
},
|
|
700
|
+
verificationLevel: "beta",
|
|
701
|
+
auth: { mode: "apiKey" },
|
|
702
|
+
setup: {
|
|
703
|
+
links: [{
|
|
704
|
+
label: "登录 flomo 创建个人 MCP Token",
|
|
705
|
+
href: "https://flomoapp.com/",
|
|
706
|
+
external: true
|
|
707
|
+
}, {
|
|
708
|
+
label: "flomo 官方个人 Token 接入说明",
|
|
709
|
+
href: "https://help.flomoapp.com/advance/mcp/connect-maxclaw.html",
|
|
710
|
+
external: true
|
|
711
|
+
}],
|
|
712
|
+
secrets: [{
|
|
713
|
+
key: "token",
|
|
714
|
+
label: "flomo 个人 MCP Token",
|
|
715
|
+
description: "需要 Max 会员。在 flomo「设置 → MCP 连接 → 个人 Token」中创建并复制完整 Token;只显示一次,可在同一页面注销。不要添加 Bearer 前缀。",
|
|
716
|
+
required: true
|
|
717
|
+
}]
|
|
718
|
+
},
|
|
719
|
+
runtime: {
|
|
720
|
+
type: "mcp",
|
|
721
|
+
serverId: "flomo",
|
|
722
|
+
serverTemplate: {
|
|
723
|
+
url: "https://flomoapp.com/mcp",
|
|
724
|
+
transport: "streamable-http",
|
|
725
|
+
headers: { Authorization: "Bearer {{secrets.token}}" }
|
|
726
|
+
}
|
|
727
|
+
},
|
|
728
|
+
permissions: {
|
|
729
|
+
data: [
|
|
730
|
+
"notes",
|
|
731
|
+
"tags",
|
|
732
|
+
"memory_profiles"
|
|
733
|
+
],
|
|
734
|
+
networkDomains: ["flomoapp.com"],
|
|
735
|
+
localExec: false,
|
|
736
|
+
filesystem: []
|
|
737
|
+
},
|
|
738
|
+
integrationStrategy: {
|
|
739
|
+
lane: "mcp",
|
|
740
|
+
workload: "core",
|
|
741
|
+
preferred: true
|
|
742
|
+
}
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
id: "railway-12306",
|
|
746
|
+
version: RAILWAY_MCP_VERSION,
|
|
747
|
+
displayName: "12306 车次查询(社区)",
|
|
748
|
+
description: "查询国内火车车次、余票、经停和中转方案,用于个人差旅与旅行规划。社区维护的查询工具,非铁路官方 MCP;不登录账号、不读取订单、不购票。",
|
|
749
|
+
category: "data",
|
|
750
|
+
kind: "mcp",
|
|
751
|
+
source: "builtin",
|
|
752
|
+
capabilities: ["tools", "runtime.mcp.stdio"],
|
|
753
|
+
benefits: ["understand"],
|
|
754
|
+
tags: [
|
|
755
|
+
"中国",
|
|
756
|
+
"个人自助",
|
|
757
|
+
"社区",
|
|
758
|
+
"生活",
|
|
759
|
+
"出行",
|
|
760
|
+
"规划",
|
|
761
|
+
"12306",
|
|
762
|
+
"火车",
|
|
763
|
+
"高铁",
|
|
764
|
+
"余票",
|
|
765
|
+
"中转"
|
|
766
|
+
],
|
|
767
|
+
branding: {
|
|
768
|
+
logoUrl: "/connector-icons/railway-12306.jpg",
|
|
769
|
+
source: "builtin"
|
|
770
|
+
},
|
|
771
|
+
verificationLevel: "experimental",
|
|
772
|
+
auth: { mode: "none" },
|
|
773
|
+
setup: { links: [{
|
|
774
|
+
label: "社区项目及查询范围",
|
|
775
|
+
href: "https://github.com/Joooook/12306-mcp",
|
|
776
|
+
external: true
|
|
777
|
+
}] },
|
|
778
|
+
runtime: {
|
|
779
|
+
type: "mcp",
|
|
780
|
+
serverId: "railway_12306",
|
|
781
|
+
localPackage: {
|
|
782
|
+
registry: "npm",
|
|
783
|
+
name: "12306-mcp",
|
|
784
|
+
version: RAILWAY_MCP_VERSION
|
|
785
|
+
},
|
|
786
|
+
serverTemplate: {
|
|
787
|
+
command: "npx",
|
|
788
|
+
args: ["-y", `12306-mcp@${RAILWAY_MCP_VERSION}`]
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
permissions: {
|
|
792
|
+
data: ["travel_queries"],
|
|
793
|
+
networkDomains: [
|
|
794
|
+
"kyfw.12306.cn",
|
|
795
|
+
"search.12306.cn",
|
|
796
|
+
"www.12306.cn"
|
|
797
|
+
],
|
|
798
|
+
localExec: true,
|
|
799
|
+
filesystem: []
|
|
800
|
+
},
|
|
801
|
+
integrationStrategy: {
|
|
802
|
+
lane: "mcp",
|
|
803
|
+
workload: "core",
|
|
804
|
+
preferred: true
|
|
805
|
+
}
|
|
806
|
+
},
|
|
807
|
+
{
|
|
808
|
+
id: "antv-chart",
|
|
809
|
+
version: ANTV_CHART_MCP_VERSION,
|
|
810
|
+
displayName: "AntV 图表",
|
|
811
|
+
description: "将工作数据、家庭预算和规划资料生成统计图表、思维导图或路书。无需账号凭据;默认把图表数据发送到 AntV 远程出图服务。",
|
|
812
|
+
category: "data",
|
|
813
|
+
kind: "mcp",
|
|
814
|
+
source: "builtin",
|
|
815
|
+
capabilities: ["tools", "runtime.mcp.stdio"],
|
|
816
|
+
benefits: ["act"],
|
|
817
|
+
tags: [
|
|
818
|
+
"中国",
|
|
819
|
+
"个人自助",
|
|
820
|
+
"工作",
|
|
821
|
+
"生活",
|
|
822
|
+
"出行",
|
|
823
|
+
"规划",
|
|
824
|
+
"AntV",
|
|
825
|
+
"图表",
|
|
826
|
+
"可视化",
|
|
827
|
+
"预算",
|
|
828
|
+
"思维导图",
|
|
829
|
+
"路书"
|
|
830
|
+
],
|
|
831
|
+
branding: {
|
|
832
|
+
logoUrl: "/connector-icons/antv-chart.png",
|
|
833
|
+
source: "builtin"
|
|
834
|
+
},
|
|
835
|
+
verificationLevel: "beta",
|
|
836
|
+
auth: { mode: "none" },
|
|
837
|
+
setup: { links: [{
|
|
838
|
+
label: "AntV 官方 MCP 及出图服务说明",
|
|
839
|
+
href: "https://github.com/antvis/mcp-server-chart",
|
|
840
|
+
external: true
|
|
841
|
+
}, {
|
|
842
|
+
label: "魔搭国内服务页",
|
|
843
|
+
href: "https://modelscope.cn/mcp/servers/@antvis/mcp-server-chart",
|
|
844
|
+
external: true
|
|
845
|
+
}] },
|
|
846
|
+
runtime: {
|
|
847
|
+
type: "mcp",
|
|
848
|
+
serverId: "antv_chart",
|
|
849
|
+
localPackage: {
|
|
850
|
+
registry: "npm",
|
|
851
|
+
name: "@antv/mcp-server-chart",
|
|
852
|
+
version: ANTV_CHART_MCP_VERSION
|
|
853
|
+
},
|
|
854
|
+
serverTemplate: {
|
|
855
|
+
command: "npx",
|
|
856
|
+
args: ["-y", `@antv/mcp-server-chart@${ANTV_CHART_MCP_VERSION}`]
|
|
857
|
+
}
|
|
858
|
+
},
|
|
859
|
+
permissions: {
|
|
860
|
+
data: ["chart_data"],
|
|
861
|
+
networkDomains: ["antv-studio.alipay.com"],
|
|
862
|
+
localExec: true,
|
|
863
|
+
filesystem: []
|
|
864
|
+
},
|
|
865
|
+
integrationStrategy: {
|
|
866
|
+
lane: "mcp",
|
|
867
|
+
workload: "core",
|
|
868
|
+
preferred: true
|
|
869
|
+
}
|
|
298
870
|
}
|
|
299
871
|
];
|
|
300
872
|
//#endregion
|
|
@@ -5,7 +5,7 @@ import { getConnectorConnection, getConnectorInstallation, init_connector_reposi
|
|
|
5
5
|
import { cliContextPath, startCliProcess } from "./process.js";
|
|
6
6
|
import { getCliAdapter } from "./adapterRegistry.js";
|
|
7
7
|
import { getConnectorInstance, getInstalledConnectorDefinition } from "../instances.js";
|
|
8
|
-
import {
|
|
8
|
+
import { installCli } from "./installer.js";
|
|
9
9
|
import { cliAuthorizationView, commitCliIdentity, createCliAuthorization, readCliAuthorization, updateCliAuthorization } from "./store.js";
|
|
10
10
|
import { join, relative } from "node:path";
|
|
11
11
|
import { cp, rm, stat } from "node:fs/promises";
|
|
@@ -38,7 +38,8 @@ function extractAuthorizationUrl(text, allowedHosts, field) {
|
|
|
38
38
|
async function authorize(adapter, attempt, signal) {
|
|
39
39
|
let committed = false;
|
|
40
40
|
try {
|
|
41
|
-
const executable = await
|
|
41
|
+
const executable = await installCli(adapter);
|
|
42
|
+
signal.throwIfAborted();
|
|
42
43
|
const previous = attempt.expected_account_id ? getConnectorAccount(attempt.expected_account_id) : void 0;
|
|
43
44
|
const previousConnection = previous?.currentConnectionId ? getConnectorConnection(previous.currentConnectionId) : void 0;
|
|
44
45
|
if (previousConnection) {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { runProcess } from "../../process/run-process.js";
|
|
2
2
|
import { cliRoot } from "./process.js";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import { constants } from "node:fs";
|
|
4
5
|
import { createHash, randomUUID } from "node:crypto";
|
|
5
|
-
import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
6
|
+
import { access, chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
6
7
|
//#region src/connectors/cli/installer.ts
|
|
7
8
|
const MAX_ARCHIVE_BYTES = 100 * 1024 * 1024;
|
|
8
9
|
const installs = /* @__PURE__ */ new Map();
|
|
@@ -19,6 +20,7 @@ async function verifyInstalledCli(adapter) {
|
|
|
19
20
|
const path = cliExecutablePath(adapter);
|
|
20
21
|
const [binary, digest] = await Promise.all([readFile(path), readFile(`${path}.sha256`, "utf8")]);
|
|
21
22
|
verifyIntegrity(binary, `sha256-${digest.trim()}`);
|
|
23
|
+
await access(path, constants.X_OK);
|
|
22
24
|
return path;
|
|
23
25
|
}
|
|
24
26
|
async function install(adapter) {
|
|
@@ -20,7 +20,6 @@ import { createConnectorSetupSecretRequest, submitConnectorSetupSecret } from ".
|
|
|
20
20
|
import { recordConnectorHealthUsage } from "../../../connectors/usage.js";
|
|
21
21
|
import { getConnectorInstance, getInstalledConnectorDefinition, listConnectorInstances } from "../../../connectors/instances.js";
|
|
22
22
|
import { installConnector, installConnectorDefinition, uninstallConnector, updateConnectorConfig } from "../../../connectors/install.js";
|
|
23
|
-
import { ConfigPersistenceError, persistConfigMutation } from "../../../config/config-mutation.js";
|
|
24
23
|
import { resumeApprovedConnectorAction } from "../../../connectors/approval-resume.js";
|
|
25
24
|
import { getMcpOAuthManager } from "../../../agent/mcp/oauth/mcp-oauth-manager.js";
|
|
26
25
|
import { startConnectorAuthorization } from "../../../connectors/auth-provider-registry.js";
|
|
@@ -29,6 +28,7 @@ import { inspectManagedComposioStatus } from "../../../connectors/composio-manag
|
|
|
29
28
|
import { appendComposioTriggerEvent, listComposioTriggerEvents } from "../../../connectors/composio-triggers.js";
|
|
30
29
|
import { ingestLocalFolderSource } from "../../../connectors/connected-source-ingestion.js";
|
|
31
30
|
import { listUnderstandingSourceGrants, revokeUnderstandingSourceGrant } from "../../../user-context/sources/repository.js";
|
|
31
|
+
import { ConfigPersistenceError, persistConfigMutation } from "../../../config/config-mutation.js";
|
|
32
32
|
import { previewConnectorDefinition, testConnectorInstance } from "../../../connectors/health.js";
|
|
33
33
|
import { setConnectorEnabled } from "../../../connectors/lifecycle.js";
|
|
34
34
|
import { projectComposioConnectionStatus } from "../../../connectors/runtime-status.js";
|
|
@@ -6,7 +6,8 @@ import { createSideChatContextSnapshot, formatSideChatSelections, validateSideCh
|
|
|
6
6
|
import { randomUUID } from "node:crypto";
|
|
7
7
|
//#region src/gateway/side-chat/manager.ts
|
|
8
8
|
init_logger();
|
|
9
|
-
const DEFAULT_IDLE_TTL_MS =
|
|
9
|
+
const DEFAULT_IDLE_TTL_MS = 360 * 60 * 1e3;
|
|
10
|
+
const EXPIRED_RECORD_RETENTION_MS = 1800 * 1e3;
|
|
10
11
|
const DEFAULT_MAX_PER_CLIENT = 5;
|
|
11
12
|
const DEFAULT_MAX_TOTAL = 50;
|
|
12
13
|
const MAX_EXPIRED_RECORDS = 500;
|
|
@@ -260,7 +261,7 @@ var EphemeralSideChatManager = class {
|
|
|
260
261
|
this.expired.set(entry.id, {
|
|
261
262
|
clientInstanceId: entry.clientInstanceId,
|
|
262
263
|
reason,
|
|
263
|
-
removeAt: this.now() +
|
|
264
|
+
removeAt: this.now() + EXPIRED_RECORD_RETENTION_MS
|
|
264
265
|
});
|
|
265
266
|
this.pruneExpiredRecords(this.now());
|
|
266
267
|
const cleanup = this.disposeEntry(entry.id, entry.clientInstanceId);
|
|
@@ -2,8 +2,8 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { init_paths, resolveConfigPath } from "../config/paths.js";
|
|
4
4
|
import { loadConfig } from "../config/loader.js";
|
|
5
|
-
import { isRestartEnabled } from "../config/commands.flags.js";
|
|
6
5
|
import { resolveGatewayService } from "../daemon/service.js";
|
|
6
|
+
import { isRestartEnabled } from "../config/commands.flags.js";
|
|
7
7
|
import { authorizeGatewaySigusr1Restart, writeGatewayRestartIntentSync } from "./restart.js";
|
|
8
8
|
import { findVerifiedGatewayListenerPidsOnPortSync, signalVerifiedGatewayPidSync } from "./gateway-processes.js";
|
|
9
9
|
import { refreshGatewayServiceAfterUpdate } from "./update-service-refresh.js";
|
|
@@ -28,8 +28,7 @@ var TaskResultDeliveryRepository = class {
|
|
|
28
28
|
const outcome = TurnOutcomeSchema.parse({
|
|
29
29
|
...value,
|
|
30
30
|
evidence: [],
|
|
31
|
-
changeSet: void 0
|
|
32
|
-
summary: value.summary?.slice(0, 2e3)
|
|
31
|
+
changeSet: void 0
|
|
33
32
|
});
|
|
34
33
|
if (outcome.deliverables.length > 50 || JSON.stringify(outcome).length > 256e3) throw new Error("Task outcome exceeds delivery limits");
|
|
35
34
|
const run = new TaskRunRepository().get(runId);
|
|
@@ -62,7 +61,7 @@ var TaskResultDeliveryRepository = class {
|
|
|
62
61
|
const artifacts = /* @__PURE__ */ new Map();
|
|
63
62
|
for (const outcome of outcomes) for (const item of outcome.deliverables) artifacts.set(item.sourceFileId ?? item.artifactId, item);
|
|
64
63
|
const deliverables = [...artifacts.values()].slice(-50);
|
|
65
|
-
const text = resultText?.trim() && resultText.trim() !== "NO_REPLY" ? resultText.trim()
|
|
64
|
+
const text = resultText?.trim() && resultText.trim() !== "NO_REPLY" ? resultText.trim() : void 0;
|
|
66
65
|
if (!deliverables.length && (!text || status !== "succeeded")) return false;
|
|
67
66
|
if (!deliverables.length && personalRequestForTask(run.taskId)) return false;
|
|
68
67
|
const outcome = {
|
|
@@ -70,7 +69,7 @@ var TaskResultDeliveryRepository = class {
|
|
|
70
69
|
deliverables,
|
|
71
70
|
evidence: [],
|
|
72
71
|
changeSet: void 0,
|
|
73
|
-
summary
|
|
72
|
+
summary,
|
|
74
73
|
status: status === "failed" || deliverables.some((item) => item.availability !== "available") ? "partial" : "succeeded"
|
|
75
74
|
};
|
|
76
75
|
const now = Date.now();
|
|
@@ -79,7 +78,7 @@ var TaskResultDeliveryRepository = class {
|
|
|
79
78
|
deliveryId: randomUUID(),
|
|
80
79
|
taskId: run.taskId,
|
|
81
80
|
taskRunId: runId,
|
|
82
|
-
taskTitle: origin.title
|
|
81
|
+
taskTitle: origin.title,
|
|
83
82
|
conversationId: origin.conversation_id,
|
|
84
83
|
originTranscriptId: origin.origin_transcript_id,
|
|
85
84
|
...origin.request_input_id ? { requestInputId: origin.request_input_id } : {},
|