@fangyb/ahchat-bridge 0.1.35 → 0.1.37
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/cli.cjs +968 -184
- package/dist/feedbackWorkerCli.cjs +165 -8
- package/dist/index.js +963 -184
- package/dist/seedanceMcpCli.cjs +53 -7
- package/dist/seedreamMcpCli.cjs +53 -7
- package/package.json +3 -2
|
@@ -4385,9 +4385,14 @@ ${entry.error.stack}` : ""}`
|
|
|
4385
4385
|
return `${ts} ${level} ${scope} ${entry.msg}${data}${trace}${errPart}`;
|
|
4386
4386
|
};
|
|
4387
4387
|
|
|
4388
|
+
// ../logger/src/fallback.ts
|
|
4389
|
+
init_cjs_shims();
|
|
4390
|
+
|
|
4388
4391
|
// ../logger/src/transports/console.ts
|
|
4389
4392
|
init_cjs_shims();
|
|
4390
4393
|
var protectedStreams = /* @__PURE__ */ new WeakSet();
|
|
4394
|
+
function ignoreWriteError(_error) {
|
|
4395
|
+
}
|
|
4391
4396
|
function defaultStream(kind) {
|
|
4392
4397
|
const maybeGlobal = globalThis;
|
|
4393
4398
|
return maybeGlobal.process?.[kind];
|
|
@@ -4400,12 +4405,13 @@ function safeWriteLine(stream, line, fallback) {
|
|
|
4400
4405
|
if (stream.destroyed || stream.writableEnded) return;
|
|
4401
4406
|
if (typeof stream === "object" && typeof stream.on === "function" && !protectedStreams.has(stream)) {
|
|
4402
4407
|
protectedStreams.add(stream);
|
|
4403
|
-
stream.on("error",
|
|
4408
|
+
stream.on("error", ignoreWriteError);
|
|
4404
4409
|
}
|
|
4405
4410
|
try {
|
|
4406
4411
|
stream.write(`${line}
|
|
4407
|
-
`,
|
|
4408
|
-
} catch {
|
|
4412
|
+
`, ignoreWriteError);
|
|
4413
|
+
} catch (e) {
|
|
4414
|
+
ignoreWriteError(e);
|
|
4409
4415
|
}
|
|
4410
4416
|
}
|
|
4411
4417
|
function consoleTransport(opts) {
|
|
@@ -5040,8 +5046,31 @@ function parseSize(maxSize) {
|
|
|
5040
5046
|
return trimmed;
|
|
5041
5047
|
}
|
|
5042
5048
|
var streamCache = /* @__PURE__ */ new Map();
|
|
5049
|
+
var droppedEntryCount = 0;
|
|
5050
|
+
var lastReportedDroppedTotal = 0;
|
|
5051
|
+
function buildLogDroppedSentinel(fmt, source, droppedTotal) {
|
|
5052
|
+
const entry = {
|
|
5053
|
+
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5054
|
+
level: "WARN",
|
|
5055
|
+
source,
|
|
5056
|
+
module: "logger.file",
|
|
5057
|
+
msg: "log_dropped",
|
|
5058
|
+
data: { droppedTotal }
|
|
5059
|
+
};
|
|
5060
|
+
return fmt(entry);
|
|
5061
|
+
}
|
|
5062
|
+
function writeWithDroppedSentinel(stream, fmt, line, source) {
|
|
5063
|
+
stream.write(`${line}
|
|
5064
|
+
`);
|
|
5065
|
+
if (droppedEntryCount > lastReportedDroppedTotal) {
|
|
5066
|
+
lastReportedDroppedTotal = droppedEntryCount;
|
|
5067
|
+
stream.write(`${buildLogDroppedSentinel(fmt, source, droppedEntryCount)}
|
|
5068
|
+
`);
|
|
5069
|
+
}
|
|
5070
|
+
}
|
|
5043
5071
|
function fileTransport(opts) {
|
|
5044
5072
|
const fmt = opts.formatter ?? jsonFormatter;
|
|
5073
|
+
const logSource = opts.source ?? "server";
|
|
5045
5074
|
const resolved = import_node_path.default.resolve(opts.path);
|
|
5046
5075
|
let cached = streamCache.get(resolved);
|
|
5047
5076
|
if (!cached) {
|
|
@@ -5056,11 +5085,14 @@ function fileTransport(opts) {
|
|
|
5056
5085
|
streamCache.set(resolved, cached);
|
|
5057
5086
|
}
|
|
5058
5087
|
return (entry) => {
|
|
5059
|
-
if (cached.closed || cached.stream.destroyed || cached.stream.writableEnded)
|
|
5088
|
+
if (cached.closed || cached.stream.destroyed || cached.stream.writableEnded) {
|
|
5089
|
+
droppedEntryCount += 1;
|
|
5090
|
+
return;
|
|
5091
|
+
}
|
|
5060
5092
|
try {
|
|
5061
|
-
cached.stream
|
|
5062
|
-
`);
|
|
5093
|
+
writeWithDroppedSentinel(cached.stream, fmt, fmt(entry), logSource);
|
|
5063
5094
|
} catch {
|
|
5095
|
+
droppedEntryCount += 1;
|
|
5064
5096
|
}
|
|
5065
5097
|
};
|
|
5066
5098
|
}
|
|
@@ -5116,6 +5148,8 @@ var DEFAULT_QUERY_CONFIG = {
|
|
|
5116
5148
|
maxActive: 5040,
|
|
5117
5149
|
idleTimeoutMs: 6e5,
|
|
5118
5150
|
workingSilenceTimeoutMs: 12e5,
|
|
5151
|
+
replyStallTimeoutMs: 3e5,
|
|
5152
|
+
busySilenceTimeoutMs: 18e5,
|
|
5119
5153
|
evictionIntervalMs: 6e4,
|
|
5120
5154
|
statusReportIntervalMs: 6e4,
|
|
5121
5155
|
allowBuiltinWebSearch: false,
|
|
@@ -5173,6 +5207,14 @@ function mergeQueryConfig(file) {
|
|
|
5173
5207
|
"AHCHAT_BRIDGE_WORKING_SILENCE_TIMEOUT_MS",
|
|
5174
5208
|
q?.workingSilenceTimeoutMs ?? DEFAULT_QUERY_CONFIG.workingSilenceTimeoutMs
|
|
5175
5209
|
),
|
|
5210
|
+
replyStallTimeoutMs: readEnvInt(
|
|
5211
|
+
"AHCHAT_BRIDGE_REPLY_STALL_TIMEOUT_MS",
|
|
5212
|
+
q?.replyStallTimeoutMs ?? DEFAULT_QUERY_CONFIG.replyStallTimeoutMs
|
|
5213
|
+
),
|
|
5214
|
+
busySilenceTimeoutMs: readEnvInt(
|
|
5215
|
+
"AHCHAT_BRIDGE_BUSY_SILENCE_TIMEOUT_MS",
|
|
5216
|
+
q?.busySilenceTimeoutMs ?? DEFAULT_QUERY_CONFIG.busySilenceTimeoutMs ?? 18e5
|
|
5217
|
+
),
|
|
5176
5218
|
evictionIntervalMs: readEnvInt(
|
|
5177
5219
|
"AHCHAT_BRIDGE_EVICTION_INTERVAL_MS",
|
|
5178
5220
|
q?.evictionIntervalMs ?? DEFAULT_QUERY_CONFIG.evictionIntervalMs
|
|
@@ -5253,7 +5295,11 @@ function loadBridgeConfig(opts) {
|
|
|
5253
5295
|
) || null,
|
|
5254
5296
|
logUploadIntervalMs: readEnvInt(
|
|
5255
5297
|
"AHCHAT_LOG_UPLOAD_INTERVAL_MS",
|
|
5256
|
-
|
|
5298
|
+
// Flush every 60s instead of once a day. Daily flushing let logs pile up for hours,
|
|
5299
|
+
// then dumped tens of thousands of entries in one cycle on the next process start,
|
|
5300
|
+
// blowing past the server's per-minute upload quota (3000 entries / 3MB) and getting
|
|
5301
|
+
// 429'd. Small frequent batches stay well under that ceiling.
|
|
5302
|
+
fileConfig.logUploadIntervalMs ?? 6e4
|
|
5257
5303
|
),
|
|
5258
5304
|
queryConfig: mergeQueryConfig(fileConfig)
|
|
5259
5305
|
};
|
|
@@ -5874,6 +5920,10 @@ function assertStringPayloadOneOf(type, payload, field, allowed) {
|
|
|
5874
5920
|
throw invalidWsMessage(type, field);
|
|
5875
5921
|
}
|
|
5876
5922
|
}
|
|
5923
|
+
function assertOptionalStringPayloadOneOf(type, payload, field, allowed) {
|
|
5924
|
+
if (payload[field] === void 0) return;
|
|
5925
|
+
assertStringPayloadOneOf(type, payload, field, allowed);
|
|
5926
|
+
}
|
|
5877
5927
|
function assertArrayPayloadField(type, payload, field) {
|
|
5878
5928
|
if (!Array.isArray(payload[field])) {
|
|
5879
5929
|
throw invalidWsMessage(type, field);
|
|
@@ -5954,6 +6004,7 @@ function validateWSMessageShape(msg) {
|
|
|
5954
6004
|
case "agent:error": {
|
|
5955
6005
|
assertPayloadRecord(type, payload);
|
|
5956
6006
|
validateRequiredStrings(type, payload, ["ackId", "agentId", "conversationId", "error", "traceId"]);
|
|
6007
|
+
assertOptionalStringPayloadOneOf(type, payload, "reason", ["user_quota_exceeded", "company_quota_exceeded"]);
|
|
5957
6008
|
return;
|
|
5958
6009
|
}
|
|
5959
6010
|
case "directory:register": {
|
|
@@ -6836,6 +6887,9 @@ init_cjs_shims();
|
|
|
6836
6887
|
// ../shared/src/utils/serverUrl.ts
|
|
6837
6888
|
init_cjs_shims();
|
|
6838
6889
|
|
|
6890
|
+
// ../shared/src/utils/phone.ts
|
|
6891
|
+
init_cjs_shims();
|
|
6892
|
+
|
|
6839
6893
|
// ../shared/src/utils/mediaPreviewHtml.ts
|
|
6840
6894
|
init_cjs_shims();
|
|
6841
6895
|
|
|
@@ -6888,6 +6942,60 @@ var readpageScrapeTool = {
|
|
|
6888
6942
|
enabled: true,
|
|
6889
6943
|
permissionPolicy: "always_allow"
|
|
6890
6944
|
};
|
|
6945
|
+
var seedreamGenerateImageTool = {
|
|
6946
|
+
name: "generate_image",
|
|
6947
|
+
displayName: "Seedream \u751F\u56FE",
|
|
6948
|
+
description: "\u4F7F\u7528\u706B\u5C71\u65B9\u821F Seedream \u751F\u6210\u5355\u5F20\u56FE\u7247\uFF0C\u652F\u6301\u6587\u672C\u751F\u56FE\u4E0E\u53C2\u8003\u56FE\u751F\u56FE\uFF0C\u4F1A\u4EA7\u751F\u516C\u53F8 Ark \u8D26\u53F7\u7528\u91CF\u3002",
|
|
6949
|
+
category: "media",
|
|
6950
|
+
riskLevel: "medium",
|
|
6951
|
+
enabled: true,
|
|
6952
|
+
permissionPolicy: "always_ask"
|
|
6953
|
+
};
|
|
6954
|
+
var seedreamEditImageTool = {
|
|
6955
|
+
name: "edit_image",
|
|
6956
|
+
displayName: "Seedream \u6539\u56FE",
|
|
6957
|
+
description: "\u4F7F\u7528\u706B\u5C71\u65B9\u821F Seedream \u6839\u636E\u53C2\u8003\u56FE\u548C\u63D0\u793A\u8BCD\u7F16\u8F91\u6216\u91CD\u7ED8\u5355\u5F20\u56FE\u7247\uFF0C\u4F1A\u4EA7\u751F\u516C\u53F8 Ark \u8D26\u53F7\u7528\u91CF\u3002",
|
|
6958
|
+
category: "media",
|
|
6959
|
+
riskLevel: "medium",
|
|
6960
|
+
enabled: true,
|
|
6961
|
+
permissionPolicy: "always_ask"
|
|
6962
|
+
};
|
|
6963
|
+
var seedreamGenerateImageGroupTool = {
|
|
6964
|
+
name: "generate_image_group",
|
|
6965
|
+
displayName: "Seedream \u5355\u56FE",
|
|
6966
|
+
description: "\u517C\u5BB9\u65E7\u540D\u79F0\u7684 Seedream \u5355\u56FE\u751F\u6210\u5DE5\u5177\uFF0C\u4F1A\u4EA7\u751F\u516C\u53F8 Ark \u8D26\u53F7\u7528\u91CF\u3002\u5F53\u524D\u6BCF\u6B21\u8BF7\u6C42\u53EA\u751F\u6210 1 \u5F20\u56FE\u7247\u3002",
|
|
6967
|
+
category: "media",
|
|
6968
|
+
riskLevel: "medium",
|
|
6969
|
+
enabled: true,
|
|
6970
|
+
permissionPolicy: "always_ask"
|
|
6971
|
+
};
|
|
6972
|
+
var seedanceUsageGuideTool = {
|
|
6973
|
+
name: "seedance_usage_guide",
|
|
6974
|
+
displayName: "Seedance \u4F7F\u7528\u8BF4\u660E",
|
|
6975
|
+
description: "\u67E5\u770B Seedance \u89C6\u9891\u751F\u6210\u6D41\u7A0B\u4E0E\u53C2\u6570\u8BF4\u660E\uFF0C\u4E0D\u521B\u5EFA\u65B0\u7684\u751F\u6210\u4EFB\u52A1\u3002",
|
|
6976
|
+
category: "media",
|
|
6977
|
+
riskLevel: "low",
|
|
6978
|
+
enabled: true,
|
|
6979
|
+
permissionPolicy: "always_allow"
|
|
6980
|
+
};
|
|
6981
|
+
var seedanceCreateTaskTool = {
|
|
6982
|
+
name: "seedance_create_task",
|
|
6983
|
+
displayName: "Seedance \u751F\u89C6\u9891",
|
|
6984
|
+
description: "\u4F7F\u7528\u706B\u5C71\u65B9\u821F Seedance \u521B\u5EFA\u5355\u4E2A\u89C6\u9891\u751F\u6210\u4EFB\u52A1\uFF0C\u4F1A\u4EA7\u751F\u516C\u53F8 Ark \u8D26\u53F7\u7528\u91CF\u3002\u5F53\u524D\u6BCF\u6B21\u8BF7\u6C42\u53EA\u751F\u6210 1 \u4E2A\u89C6\u9891\u3002",
|
|
6985
|
+
category: "media",
|
|
6986
|
+
riskLevel: "high",
|
|
6987
|
+
enabled: true,
|
|
6988
|
+
permissionPolicy: "always_ask"
|
|
6989
|
+
};
|
|
6990
|
+
var seedanceCheckTaskTool = {
|
|
6991
|
+
name: "seedance_check_task",
|
|
6992
|
+
displayName: "Seedance \u67E5\u7ED3\u679C",
|
|
6993
|
+
description: "\u67E5\u8BE2 Seedance \u89C6\u9891\u751F\u6210\u4EFB\u52A1\u72B6\u6001\u4E0E\u89C6\u9891 URL\uFF0C\u4E0D\u521B\u5EFA\u65B0\u7684\u751F\u6210\u4EFB\u52A1\u3002",
|
|
6994
|
+
category: "media",
|
|
6995
|
+
riskLevel: "low",
|
|
6996
|
+
enabled: true,
|
|
6997
|
+
permissionPolicy: "always_allow"
|
|
6998
|
+
};
|
|
6891
6999
|
var context7ResolveLibraryTool = {
|
|
6892
7000
|
name: "resolve-library-id",
|
|
6893
7001
|
displayName: "\u89E3\u6790\u6587\u6863\u5E93",
|
|
@@ -7194,8 +7302,56 @@ var ALIYUN_IQS_MCP_PROVIDERS = [
|
|
|
7194
7302
|
tools: [readpageBasicTool, readpageScrapeTool]
|
|
7195
7303
|
}
|
|
7196
7304
|
];
|
|
7305
|
+
var VOLCENGINE_SEEDREAM_MCP_PROVIDER = {
|
|
7306
|
+
providerId: "volcengine_seedream",
|
|
7307
|
+
name: "Volcengine Seedream",
|
|
7308
|
+
summary: "\u706B\u5C71\u65B9\u821F Seedream \u56FE\u7247\u751F\u6210/\u7F16\u8F91 MCP\uFF0C\u4F7F\u7528\u516C\u53F8\u7EDF\u4E00 Ark Key\uFF0C\u5E76\u8FDB\u5165 AHChat \u8C03\u7528\u5BA1\u8BA1\u3002",
|
|
7309
|
+
serverName: "seedream",
|
|
7310
|
+
transport: "stdio",
|
|
7311
|
+
url: null,
|
|
7312
|
+
command: "ahchat-builtin",
|
|
7313
|
+
args: ["seedream-mcp"],
|
|
7314
|
+
env: {
|
|
7315
|
+
ARK_API_KEY: "",
|
|
7316
|
+
ARK_BASE_URL: "https://ark.cn-beijing.volces.com/api/v3"
|
|
7317
|
+
},
|
|
7318
|
+
authType: "x_api_key",
|
|
7319
|
+
customHeaders: [],
|
|
7320
|
+
enabled: true,
|
|
7321
|
+
alwaysLoad: true,
|
|
7322
|
+
tools: [
|
|
7323
|
+
seedreamGenerateImageTool,
|
|
7324
|
+
seedreamEditImageTool,
|
|
7325
|
+
seedreamGenerateImageGroupTool
|
|
7326
|
+
]
|
|
7327
|
+
};
|
|
7328
|
+
var VOLCENGINE_SEEDANCE_MCP_PROVIDER = {
|
|
7329
|
+
providerId: "volcengine_seedance",
|
|
7330
|
+
name: "Volcengine Seedance",
|
|
7331
|
+
summary: "\u706B\u5C71\u65B9\u821F Seedance \u89C6\u9891\u751F\u6210 MCP\uFF0C\u4F7F\u7528\u516C\u53F8\u7EDF\u4E00 Ark Key\uFF0C\u5E76\u8FDB\u5165 AHChat \u8C03\u7528\u5BA1\u8BA1\u3002",
|
|
7332
|
+
serverName: "seedance",
|
|
7333
|
+
transport: "stdio",
|
|
7334
|
+
url: null,
|
|
7335
|
+
command: "ahchat-builtin",
|
|
7336
|
+
args: ["seedance-mcp"],
|
|
7337
|
+
env: {
|
|
7338
|
+
ARK_API_KEY: "",
|
|
7339
|
+
ARK_BASE_URL: "https://ark.cn-beijing.volces.com/api/v3"
|
|
7340
|
+
},
|
|
7341
|
+
authType: "x_api_key",
|
|
7342
|
+
customHeaders: [],
|
|
7343
|
+
enabled: true,
|
|
7344
|
+
alwaysLoad: true,
|
|
7345
|
+
tools: [
|
|
7346
|
+
seedanceUsageGuideTool,
|
|
7347
|
+
seedanceCreateTaskTool,
|
|
7348
|
+
seedanceCheckTaskTool
|
|
7349
|
+
]
|
|
7350
|
+
};
|
|
7197
7351
|
var OFFICIAL_MCP_PROVIDERS = [
|
|
7198
|
-
...ALIYUN_IQS_MCP_PROVIDERS
|
|
7352
|
+
...ALIYUN_IQS_MCP_PROVIDERS,
|
|
7353
|
+
VOLCENGINE_SEEDREAM_MCP_PROVIDER,
|
|
7354
|
+
VOLCENGINE_SEEDANCE_MCP_PROVIDER
|
|
7199
7355
|
];
|
|
7200
7356
|
var MCP_STORE_PROVIDERS = [
|
|
7201
7357
|
{
|
|
@@ -7687,6 +7843,7 @@ var ServerConnector = class {
|
|
|
7687
7843
|
case "agent:terminate":
|
|
7688
7844
|
case "agent:runtime_reload":
|
|
7689
7845
|
case "agent:terminate_scope":
|
|
7846
|
+
case "spectate:set":
|
|
7690
7847
|
case "agent:created":
|
|
7691
7848
|
case "agent:updated":
|
|
7692
7849
|
case "agent:workdir-updated":
|