linkque-cli-v2 1.1.1 → 1.1.2

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/linkquejs.js CHANGED
@@ -19639,6 +19639,8 @@ var LINKQUE_BASE_URL = `${LINKQUE_ENDPOINT_PROD}/api/anthropic`;
19639
19639
  var LINKQUE_BASE_URL_PRE = `${LINKQUE_ENDPOINT_PRE}/api/anthropic`;
19640
19640
  var LINKQUEGW_KNOWLEDGE_BASE_URL = LINKQUE_ENDPOINT_PROD;
19641
19641
  var LINKQUEGW_KNOWLEDGE_BASE_URL_PRE = LINKQUE_ENDPOINT_PRE;
19642
+ var LINKQUEGW_EVENT_BASE_URL = LINKQUE_ENDPOINT_PROD;
19643
+ var LINKQUEGW_EVENT_BASE_URL_PRE = LINKQUE_ENDPOINT_PRE;
19642
19644
  var LINKQUEGW_MCP_SIGN_ENDPOINT = `${LINKQUE_ENDPOINT_PROD}/api/mcp/signature`;
19643
19645
  var LINKQUEGW_MCP_SIGN_ENDPOINT_PRE = `${LINKQUE_ENDPOINT_PRE}/api/mcp/signature`;
19644
19646
  var RUN_TABLE_COLUMNS = [
@@ -20154,6 +20156,7 @@ var FUNCTION_DEFS = [
20154
20156
  key: "LINKQUEGW_KNOWLEDGE_BASE_URL",
20155
20157
  value: LINKQUEGW_KNOWLEDGE_BASE_URL
20156
20158
  },
20159
+ { key: "LINKQUEGW_EVENT_BASE_URL", value: LINKQUEGW_EVENT_BASE_URL },
20157
20160
  {
20158
20161
  key: "LINKQUEGW_MCP_SIGN_ENDPOINT",
20159
20162
  value: LINKQUEGW_MCP_SIGN_ENDPOINT
@@ -20164,6 +20167,10 @@ var FUNCTION_DEFS = [
20164
20167
  key: "LINKQUEGW_KNOWLEDGE_BASE_URL_PRE",
20165
20168
  value: LINKQUEGW_KNOWLEDGE_BASE_URL_PRE
20166
20169
  },
20170
+ {
20171
+ key: "LINKQUEGW_EVENT_BASE_URL_PRE",
20172
+ value: LINKQUEGW_EVENT_BASE_URL_PRE
20173
+ },
20167
20174
  {
20168
20175
  key: "LINKQUEGW_MCP_SIGN_ENDPOINT_PRE",
20169
20176
  value: LINKQUEGW_MCP_SIGN_ENDPOINT_PRE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linkque-cli-v2",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Public Linkque CLI bundle for sandbox debugging",
5
5
  "bin": {
6
6
  "linkquejs": "linkquejs.js"
@@ -11811,6 +11811,8 @@ function describeRuntimeEnv(env, hasRequestKey = false) {
11811
11811
  lines.push(envLine("LINKQUE_BASE_URL_PRE", maskEndpoint(env.LINKQUE_BASE_URL_PRE)));
11812
11812
  lines.push(envLine("LINKQUEGW_KNOWLEDGE_BASE_URL", maskEndpoint(env.LINKQUEGW_KNOWLEDGE_BASE_URL)));
11813
11813
  lines.push(envLine("LINKQUEGW_KNOWLEDGE_BASE_URL_PRE", maskEndpoint(env.LINKQUEGW_KNOWLEDGE_BASE_URL_PRE)));
11814
+ lines.push(envLine("LINKQUEGW_EVENT_BASE_URL", maskEndpoint(env.LINKQUEGW_EVENT_BASE_URL)));
11815
+ lines.push(envLine("LINKQUEGW_EVENT_BASE_URL_PRE", maskEndpoint(env.LINKQUEGW_EVENT_BASE_URL_PRE)));
11814
11816
  lines.push(envLine("LINKQUEGW_MCP_SIGN_ENDPOINT", maskEndpoint(env.LINKQUEGW_MCP_SIGN_ENDPOINT)));
11815
11817
  lines.push(envLine("LINKQUEGW_MCP_SIGN_ENDPOINT_PRE", maskEndpoint(env.LINKQUEGW_MCP_SIGN_ENDPOINT_PRE)));
11816
11818
  lines.push(envLine("RUN_DATABASE_ID", envValue(env, "RUN_DATABASE_ID")));
@@ -18342,11 +18342,7 @@ function injectResolvedViewModel(protocol, viewModel) {
18342
18342
  {
18343
18343
  version: "0.9",
18344
18344
  datas: surfaceIds.map((surfaceId) => ({
18345
- updateDataModel: {
18346
- surfaceId,
18347
- path: "/",
18348
- value: viewModel
18349
- }
18345
+ updateDataModel: { surfaceId, path: "/", value: viewModel }
18350
18346
  }))
18351
18347
  }
18352
18348
  ];
@@ -19793,6 +19789,17 @@ var REDACTED_HEADER_NAMES = /* @__PURE__ */ new Set([
19793
19789
  "anthropic-api-key"
19794
19790
  ]);
19795
19791
  var REDACTED_VALUE = "ak***";
19792
+ var RESPONSE_CORRELATION_HEADER_NAMES = [
19793
+ "alipay-trace-id",
19794
+ "x-trace-id",
19795
+ "x-traceid",
19796
+ "trace-id",
19797
+ "traceid",
19798
+ "eagleeye-traceid",
19799
+ "eagleeye-trace-id",
19800
+ "sofa-traceid",
19801
+ "sofa-trace-id"
19802
+ ];
19796
19803
  function redactHeader(name, value) {
19797
19804
  return REDACTED_HEADER_NAMES.has(name.toLowerCase()) ? REDACTED_VALUE : value;
19798
19805
  }
@@ -19849,10 +19856,37 @@ function createHttpLoggingFetch(debugLog, tag, baseFetch = globalThis.fetch) {
19849
19856
  len = cl;
19850
19857
  } catch {
19851
19858
  }
19852
- safeLog(debugLog, formatHttpLogLine(tag, "resp", `${method} ${targetUrl} ${resp.status} in ${elapsed}ms len=${len}`));
19859
+ const correlation = readResponseCorrelationId(resp.headers);
19860
+ const correlationField = correlation ? ` traceId=${correlation.value} traceHeader=${correlation.name}` : "";
19861
+ safeLog(debugLog, formatHttpLogLine(tag, "resp", `${method} ${targetUrl} ${resp.status} in ${elapsed}ms len=${len}${correlationField}`));
19853
19862
  return resp;
19854
19863
  };
19855
19864
  }
19865
+ function readResponseCorrelationId(headers) {
19866
+ try {
19867
+ for (const name of RESPONSE_CORRELATION_HEADER_NAMES) {
19868
+ const value = headers.get(name)?.trim();
19869
+ if (value) {
19870
+ return { name, value: value.replace(/\s+/gu, " ").slice(0, 200) };
19871
+ }
19872
+ }
19873
+ let matched;
19874
+ headers.forEach((rawValue, rawName) => {
19875
+ if (matched || !/(?:^|[-_])trace[-_]?id$/iu.test(rawName))
19876
+ return;
19877
+ const value = rawValue.trim();
19878
+ if (!value)
19879
+ return;
19880
+ matched = {
19881
+ name: rawName,
19882
+ value: value.replace(/\s+/gu, " ").slice(0, 200)
19883
+ };
19884
+ });
19885
+ return matched;
19886
+ } catch {
19887
+ }
19888
+ return void 0;
19889
+ }
19856
19890
  function safeLog(debugLog, line) {
19857
19891
  try {
19858
19892
  debugLog(line, EDebugLogScope.HTTP);
@@ -19870,7 +19904,11 @@ function errorMsg(error) {
19870
19904
  // ../linkque-agent-runtime/dist/esm/core/hook/linkquegwEventHookExecutor.js
19871
19905
  var DEFAULT_LINKQUEGW_EVENT_BASE_URL = "https://linkquegw.alipay.com";
19872
19906
  var LINKQUEGW_AGENT_EVENT_TRIGGER_PATH = "/api/agent/event/trigger";
19873
- var LINKQUEGW_EVENT_TYPE_BY_STAGE = { [EHookStage.RUN_STARTED]: "AGENT_DIALOG_ROUND_STARTED" };
19907
+ var LINKQUEGW_EVENT_TYPE_BY_STAGE = {
19908
+ [EHookStage.RUN_STARTED]: "RUN_STARTED",
19909
+ [EHookStage.RUN_COMPLETED]: "RUN_ENDED",
19910
+ [EHookStage.RUN_FAILED]: "RUN_ENDED"
19911
+ };
19874
19912
  function buildLinkquegwEventBody(context) {
19875
19913
  const eventType = LINKQUEGW_EVENT_TYPE_BY_STAGE[context.stage];
19876
19914
  if (eventType === void 0)
@@ -19881,13 +19919,14 @@ function buildLinkquegwEventBody(context) {
19881
19919
  eventType,
19882
19920
  eventId: context.eventId,
19883
19921
  eventTime: context.timestamp,
19884
- conversationId: commonParams.conversationId,
19922
+ ...commonParams.conversationId !== void 0 && {
19923
+ conversationId: commonParams.conversationId
19924
+ },
19885
19925
  ...commonParams.sessionId !== void 0 && {
19886
19926
  sessionId: commonParams.sessionId
19887
19927
  },
19888
19928
  runId: commonParams.runId,
19889
- runIndex: commonParams.runIndex,
19890
- traceId: commonParams.traceId ?? commonParams.runId
19929
+ runIndex: commonParams.runIndex
19891
19930
  };
19892
19931
  }
19893
19932
  var LinkquegwEventHookExecutor = class {
@@ -19927,7 +19966,7 @@ var LinkquegwEventHookExecutor = class {
19927
19966
  const startedAt = this.now();
19928
19967
  let result = "ok";
19929
19968
  try {
19930
- const traceId = body.traceId;
19969
+ const traceId = context.commonParams.traceId ?? context.commonParams.runId;
19931
19970
  const resp = await this.fetchImpl(`${this.baseUrl}${LINKQUEGW_AGENT_EVENT_TRIGGER_PATH}`, {
19932
19971
  method: "POST",
19933
19972
  headers: {
@@ -17,7 +17,7 @@ import {
17
17
  resolveLinkqueGatewayAuth,
18
18
  resolveRunStorage,
19
19
  toAgentRunMessages
20
- } from "../../chunk-IAT272TH.js";
20
+ } from "../../chunk-B56A2RV5.js";
21
21
  import "../../chunk-MKS245OU.js";
22
22
  import "../../chunk-YDKZZ6EH.js";
23
23
  import "../../chunk-2NGJGNYB.js";
@@ -51,7 +51,7 @@ import {
51
51
  parseConversationRunRequest,
52
52
  parseSkillFile,
53
53
  streamToConversationEvents
54
- } from "../../chunk-TM6MTGSL.js";
54
+ } from "../../chunk-XGIMLCNP.js";
55
55
  import "../../chunk-XUFLSZM4.js";
56
56
  import "../../chunk-I64V3ICJ.js";
57
57
  import "../../chunk-6MHDOBWO.js";
@@ -68,23 +68,39 @@ import { randomUUID as randomUUID3 } from "node:crypto";
68
68
  // ../linkque-agent-runtime/dist/esm/impl/plugin/linkquegwEventPlugin.js
69
69
  var LINKQUEGW_EVENT_PLUGIN_NAME = "linkquegw-event-plugin";
70
70
  var LINKQUEGW_EVENT_HOOK_RESOURCE_ID = "linkquegw-event-run-started";
71
- var createLinkquegwEventHookResource = () => ({
72
- resourceId: LINKQUEGW_EVENT_HOOK_RESOURCE_ID,
71
+ var LINKQUEGW_RUN_COMPLETED_HOOK_RESOURCE_ID = "linkquegw-event-run-completed";
72
+ var LINKQUEGW_RUN_FAILED_HOOK_RESOURCE_ID = "linkquegw-event-run-failed";
73
+ var DEFAULT_LINKQUEGW_EVENT_HOOKS = [
74
+ {
75
+ resourceId: LINKQUEGW_EVENT_HOOK_RESOURCE_ID,
76
+ stage: EHookStage.RUN_STARTED
77
+ },
78
+ {
79
+ resourceId: LINKQUEGW_RUN_COMPLETED_HOOK_RESOURCE_ID,
80
+ stage: EHookStage.RUN_COMPLETED
81
+ },
82
+ {
83
+ resourceId: LINKQUEGW_RUN_FAILED_HOOK_RESOURCE_ID,
84
+ stage: EHookStage.RUN_FAILED
85
+ }
86
+ ];
87
+ var createLinkquegwEventHookResource = (resourceId, stage) => ({
88
+ resourceId,
73
89
  resourceType: EResourceType.HOOK,
74
90
  providerType: EResourceProviderType.LINK_QUE,
75
91
  config: {
76
92
  name: "LinkqueGW \u751F\u547D\u5468\u671F\u4E8B\u4EF6\u4E0A\u62A5",
77
93
  executorName: EHookExecutorName.LinkquegwEventHookExecutor,
78
- stage: EHookStage.RUN_STARTED,
94
+ stage,
79
95
  hasSideEffects: true
80
96
  }
81
97
  });
82
98
  var isUserTokenAuthorization = (value) => /^Bearer[\t ]+[^\s,]+$/u.test(value);
83
- var isLinkquegwRunStartedHook = (resource) => {
99
+ var isLinkquegwEventHook = (resource, stage) => {
84
100
  if (resource.resourceType !== EResourceType.HOOK)
85
101
  return false;
86
102
  const hookResource = resource;
87
- return hookResource.config.executorName === EHookExecutorName.LinkquegwEventHookExecutor && hookResource.config.stage === EHookStage.RUN_STARTED;
103
+ return hookResource.config.executorName === EHookExecutorName.LinkquegwEventHookExecutor && hookResource.config.stage === stage;
88
104
  };
89
105
  var LinkquegwEventPlugin = class {
90
106
  name = LINKQUEGW_EVENT_PLUGIN_NAME;
@@ -113,10 +129,12 @@ var LinkquegwEventPlugin = class {
113
129
  }
114
130
  /** 自动补入 event trigger 所需 HookResource;已有同 executorName + stage 时保持原配置。 */
115
131
  modifyAgentConfig(agentConfig) {
116
- const exists = agentConfig.agent.resources.some(isLinkquegwRunStartedHook);
117
- if (exists)
118
- return;
119
- agentConfig.agent.resources.push(createLinkquegwEventHookResource());
132
+ for (const hook of DEFAULT_LINKQUEGW_EVENT_HOOKS) {
133
+ const exists = agentConfig.agent.resources.some((resource) => isLinkquegwEventHook(resource, hook.stage));
134
+ if (!exists) {
135
+ agentConfig.agent.resources.push(createLinkquegwEventHookResource(hook.resourceId, hook.stage));
136
+ }
137
+ }
120
138
  }
121
139
  };
122
140
 
@@ -298,6 +316,7 @@ function resolveLinkqueEndpoints(env, envSelector) {
298
316
  return {
299
317
  linkqueBaseUrl: trimEnvVar(isPre ? env.LINKQUE_BASE_URL_PRE : env.LINKQUE_BASE_URL),
300
318
  knowledgeBaseUrl: trimEnvVar(isPre ? env.LINKQUEGW_KNOWLEDGE_BASE_URL_PRE : env.LINKQUEGW_KNOWLEDGE_BASE_URL),
319
+ eventBaseUrl: trimEnvVar(isPre ? env.LINKQUEGW_EVENT_BASE_URL_PRE : env.LINKQUEGW_EVENT_BASE_URL),
301
320
  mcpSignEndpoint: trimEnvVar(isPre ? env.LINKQUEGW_MCP_SIGN_ENDPOINT_PRE : env.LINKQUEGW_MCP_SIGN_ENDPOINT)
302
321
  };
303
322
  }
@@ -353,10 +372,11 @@ function createAppBaseRuntime(protocol, env = process.env, ports = {}, logCtx) {
353
372
  }
354
373
  const plugins = [...ports.plugins ?? []];
355
374
  const hasLinkquegwEventPlugin = plugins.some((plugin) => plugin.name === LINKQUEGW_EVENT_PLUGIN_NAME);
375
+ const eventBaseUrl = ports.eventBaseUrl ?? ports.knowledgeBaseUrl;
356
376
  if (ports.gatewayAuthMode === "user-token" && mcpAuthHeader && !hasLinkquegwEventPlugin) {
357
377
  plugins.push(new LinkquegwEventPlugin({
358
378
  getUserTokenAuthorizationHeader: mcpAuthHeader,
359
- ...ports.knowledgeBaseUrl ? { baseUrl: ports.knowledgeBaseUrl } : {},
379
+ ...eventBaseUrl ? { baseUrl: eventBaseUrl } : {},
360
380
  ...ports.gatewayAgentId ? { agentId: ports.gatewayAgentId } : {},
361
381
  ...debugLog ? { debugLog } : {}
362
382
  }));
@@ -1745,7 +1765,7 @@ function resolveChatDeps(env, deps, logCtx, historyOwnerId, appwriteApiKey, envS
1745
1765
  chunkSize = storage.chunkSize;
1746
1766
  }
1747
1767
  const mcpAuthorizationHeaderProvider = async () => resolved.authorizationHeader;
1748
- const { linkqueBaseUrl, knowledgeBaseUrl, mcpSignEndpoint } = resolveLinkqueEndpoints(env, envSelector);
1768
+ const { linkqueBaseUrl, knowledgeBaseUrl, eventBaseUrl, mcpSignEndpoint } = resolveLinkqueEndpoints(env, envSelector);
1749
1769
  const mcpConfigResolver = createAppbaseMcpConfigResolver({
1750
1770
  agentId: protocol.agentId,
1751
1771
  ...mcpSignEndpoint ? { signEndpoint: mcpSignEndpoint } : {}
@@ -1757,7 +1777,8 @@ function resolveChatDeps(env, deps, logCtx, historyOwnerId, appwriteApiKey, envS
1757
1777
  gatewayAuthMode: resolved.mode,
1758
1778
  gatewayAgentId: protocol.agentId,
1759
1779
  ...linkqueBaseUrl ? { linkqueBaseUrl } : {},
1760
- ...knowledgeBaseUrl ? { knowledgeBaseUrl } : {}
1780
+ ...knowledgeBaseUrl ? { knowledgeBaseUrl } : {},
1781
+ ...eventBaseUrl ? { eventBaseUrl } : {}
1761
1782
  }, logCtx);
1762
1783
  return {
1763
1784
  auth: resolved.auth,
@@ -3,7 +3,7 @@ import {
3
3
  runClientCapability,
4
4
  runClientCapabilityCleanup,
5
5
  runClientCapabilityResult
6
- } from "../../chunk-IAT272TH.js";
6
+ } from "../../chunk-B56A2RV5.js";
7
7
  import "../../chunk-MKS245OU.js";
8
8
  import "../../chunk-YDKZZ6EH.js";
9
9
  import "../../chunk-2NGJGNYB.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getBakedProtocol,
3
3
  setBakedProtocol
4
- } from "../chunk-TM6MTGSL.js";
4
+ } from "../chunk-XGIMLCNP.js";
5
5
  import "../chunk-XUFLSZM4.js";
6
6
  import "../chunk-I64V3ICJ.js";
7
7
  import "../chunk-6MHDOBWO.js";
package/worker.js CHANGED
@@ -15270,11 +15270,7 @@ function injectResolvedViewModel(protocol, viewModel) {
15270
15270
  {
15271
15271
  version: "0.9",
15272
15272
  datas: surfaceIds.map((surfaceId) => ({
15273
- updateDataModel: {
15274
- surfaceId,
15275
- path: "/",
15276
- value: viewModel
15277
- }
15273
+ updateDataModel: { surfaceId, path: "/", value: viewModel }
15278
15274
  }))
15279
15275
  }
15280
15276
  ];
@@ -16884,10 +16880,37 @@ function createHttpLoggingFetch(debugLog, tag, baseFetch = globalThis.fetch) {
16884
16880
  len = cl;
16885
16881
  } catch {
16886
16882
  }
16887
- safeLog(debugLog, formatHttpLogLine(tag, "resp", `${method} ${targetUrl} ${resp.status} in ${elapsed}ms len=${len}`));
16883
+ const correlation = readResponseCorrelationId(resp.headers);
16884
+ const correlationField = correlation ? ` traceId=${correlation.value} traceHeader=${correlation.name}` : "";
16885
+ safeLog(debugLog, formatHttpLogLine(tag, "resp", `${method} ${targetUrl} ${resp.status} in ${elapsed}ms len=${len}${correlationField}`));
16888
16886
  return resp;
16889
16887
  };
16890
16888
  }
16889
+ function readResponseCorrelationId(headers) {
16890
+ try {
16891
+ for (const name of RESPONSE_CORRELATION_HEADER_NAMES) {
16892
+ const value = headers.get(name)?.trim();
16893
+ if (value) {
16894
+ return { name, value: value.replace(/\s+/gu, " ").slice(0, 200) };
16895
+ }
16896
+ }
16897
+ let matched;
16898
+ headers.forEach((rawValue, rawName) => {
16899
+ if (matched || !/(?:^|[-_])trace[-_]?id$/iu.test(rawName))
16900
+ return;
16901
+ const value = rawValue.trim();
16902
+ if (!value)
16903
+ return;
16904
+ matched = {
16905
+ name: rawName,
16906
+ value: value.replace(/\s+/gu, " ").slice(0, 200)
16907
+ };
16908
+ });
16909
+ return matched;
16910
+ } catch {
16911
+ }
16912
+ return void 0;
16913
+ }
16891
16914
  function safeLog(debugLog, line) {
16892
16915
  try {
16893
16916
  debugLog(line, EDebugLogScope.HTTP);
@@ -16901,7 +16924,7 @@ function errorMsg(error40) {
16901
16924
  const msg = error40 instanceof Error ? error40.message : String(error40);
16902
16925
  return msg.replace(/\s+/g, " ").slice(0, 500);
16903
16926
  }
16904
- var MAX_BODY_SUMMARY_LEN, REDACTED_HEADER_NAMES, REDACTED_VALUE;
16927
+ var MAX_BODY_SUMMARY_LEN, REDACTED_HEADER_NAMES, REDACTED_VALUE, RESPONSE_CORRELATION_HEADER_NAMES;
16905
16928
  var init_httpLoggingFetch = __esm({
16906
16929
  "../linkque-agent-runtime/dist/esm/impl/httpLoggingFetch.js"() {
16907
16930
  "use strict";
@@ -16915,6 +16938,17 @@ var init_httpLoggingFetch = __esm({
16915
16938
  "anthropic-api-key"
16916
16939
  ]);
16917
16940
  REDACTED_VALUE = "ak***";
16941
+ RESPONSE_CORRELATION_HEADER_NAMES = [
16942
+ "alipay-trace-id",
16943
+ "x-trace-id",
16944
+ "x-traceid",
16945
+ "trace-id",
16946
+ "traceid",
16947
+ "eagleeye-traceid",
16948
+ "eagleeye-trace-id",
16949
+ "sofa-traceid",
16950
+ "sofa-trace-id"
16951
+ ];
16918
16952
  }
16919
16953
  });
16920
16954
 
@@ -16929,13 +16963,14 @@ function buildLinkquegwEventBody(context2) {
16929
16963
  eventType,
16930
16964
  eventId: context2.eventId,
16931
16965
  eventTime: context2.timestamp,
16932
- conversationId: commonParams.conversationId,
16966
+ ...commonParams.conversationId !== void 0 && {
16967
+ conversationId: commonParams.conversationId
16968
+ },
16933
16969
  ...commonParams.sessionId !== void 0 && {
16934
16970
  sessionId: commonParams.sessionId
16935
16971
  },
16936
16972
  runId: commonParams.runId,
16937
- runIndex: commonParams.runIndex,
16938
- traceId: commonParams.traceId ?? commonParams.runId
16973
+ runIndex: commonParams.runIndex
16939
16974
  };
16940
16975
  }
16941
16976
  var DEFAULT_LINKQUEGW_EVENT_BASE_URL, LINKQUEGW_AGENT_EVENT_TRIGGER_PATH, LINKQUEGW_EVENT_TYPE_BY_STAGE, LinkquegwEventHookExecutor;
@@ -16947,7 +16982,11 @@ var init_linkquegwEventHookExecutor = __esm({
16947
16982
  init_hookMetrics();
16948
16983
  DEFAULT_LINKQUEGW_EVENT_BASE_URL = "https://linkquegw.alipay.com";
16949
16984
  LINKQUEGW_AGENT_EVENT_TRIGGER_PATH = "/api/agent/event/trigger";
16950
- LINKQUEGW_EVENT_TYPE_BY_STAGE = { [EHookStage.RUN_STARTED]: "AGENT_DIALOG_ROUND_STARTED" };
16985
+ LINKQUEGW_EVENT_TYPE_BY_STAGE = {
16986
+ [EHookStage.RUN_STARTED]: "RUN_STARTED",
16987
+ [EHookStage.RUN_COMPLETED]: "RUN_ENDED",
16988
+ [EHookStage.RUN_FAILED]: "RUN_ENDED"
16989
+ };
16951
16990
  LinkquegwEventHookExecutor = class {
16952
16991
  name = EHookExecutorName.LinkquegwEventHookExecutor;
16953
16992
  baseUrl;
@@ -16985,7 +17024,7 @@ var init_linkquegwEventHookExecutor = __esm({
16985
17024
  const startedAt = this.now();
16986
17025
  let result = "ok";
16987
17026
  try {
16988
- const traceId = body.traceId;
17027
+ const traceId = context2.commonParams.traceId ?? context2.commonParams.runId;
16989
17028
  const resp = await this.fetchImpl(`${this.baseUrl}${LINKQUEGW_AGENT_EVENT_TRIGGER_PATH}`, {
16990
17029
  method: "POST",
16991
17030
  headers: {
@@ -196985,7 +197024,7 @@ var init_examplePlugin = __esm({
196985
197024
  });
196986
197025
 
196987
197026
  // ../linkque-agent-runtime/dist/esm/impl/plugin/linkquegwEventPlugin.js
196988
- var LINKQUEGW_EVENT_PLUGIN_NAME, LINKQUEGW_EVENT_HOOK_RESOURCE_ID, createLinkquegwEventHookResource, isUserTokenAuthorization, isLinkquegwRunStartedHook, LinkquegwEventPlugin;
197027
+ var LINKQUEGW_EVENT_PLUGIN_NAME, LINKQUEGW_EVENT_HOOK_RESOURCE_ID, LINKQUEGW_RUN_COMPLETED_HOOK_RESOURCE_ID, LINKQUEGW_RUN_FAILED_HOOK_RESOURCE_ID, DEFAULT_LINKQUEGW_EVENT_HOOKS, createLinkquegwEventHookResource, isUserTokenAuthorization, isLinkquegwEventHook, LinkquegwEventPlugin;
196989
197028
  var init_linkquegwEventPlugin = __esm({
196990
197029
  "../linkque-agent-runtime/dist/esm/impl/plugin/linkquegwEventPlugin.js"() {
196991
197030
  "use strict";
@@ -196993,23 +197032,39 @@ var init_linkquegwEventPlugin = __esm({
196993
197032
  init_linkquegwEventHookExecutor();
196994
197033
  LINKQUEGW_EVENT_PLUGIN_NAME = "linkquegw-event-plugin";
196995
197034
  LINKQUEGW_EVENT_HOOK_RESOURCE_ID = "linkquegw-event-run-started";
196996
- createLinkquegwEventHookResource = () => ({
196997
- resourceId: LINKQUEGW_EVENT_HOOK_RESOURCE_ID,
197035
+ LINKQUEGW_RUN_COMPLETED_HOOK_RESOURCE_ID = "linkquegw-event-run-completed";
197036
+ LINKQUEGW_RUN_FAILED_HOOK_RESOURCE_ID = "linkquegw-event-run-failed";
197037
+ DEFAULT_LINKQUEGW_EVENT_HOOKS = [
197038
+ {
197039
+ resourceId: LINKQUEGW_EVENT_HOOK_RESOURCE_ID,
197040
+ stage: EHookStage.RUN_STARTED
197041
+ },
197042
+ {
197043
+ resourceId: LINKQUEGW_RUN_COMPLETED_HOOK_RESOURCE_ID,
197044
+ stage: EHookStage.RUN_COMPLETED
197045
+ },
197046
+ {
197047
+ resourceId: LINKQUEGW_RUN_FAILED_HOOK_RESOURCE_ID,
197048
+ stage: EHookStage.RUN_FAILED
197049
+ }
197050
+ ];
197051
+ createLinkquegwEventHookResource = (resourceId, stage) => ({
197052
+ resourceId,
196998
197053
  resourceType: EResourceType.HOOK,
196999
197054
  providerType: EResourceProviderType.LINK_QUE,
197000
197055
  config: {
197001
197056
  name: "LinkqueGW \u751F\u547D\u5468\u671F\u4E8B\u4EF6\u4E0A\u62A5",
197002
197057
  executorName: EHookExecutorName.LinkquegwEventHookExecutor,
197003
- stage: EHookStage.RUN_STARTED,
197058
+ stage,
197004
197059
  hasSideEffects: true
197005
197060
  }
197006
197061
  });
197007
197062
  isUserTokenAuthorization = (value) => /^Bearer[\t ]+[^\s,]+$/u.test(value);
197008
- isLinkquegwRunStartedHook = (resource) => {
197063
+ isLinkquegwEventHook = (resource, stage) => {
197009
197064
  if (resource.resourceType !== EResourceType.HOOK)
197010
197065
  return false;
197011
197066
  const hookResource = resource;
197012
- return hookResource.config.executorName === EHookExecutorName.LinkquegwEventHookExecutor && hookResource.config.stage === EHookStage.RUN_STARTED;
197067
+ return hookResource.config.executorName === EHookExecutorName.LinkquegwEventHookExecutor && hookResource.config.stage === stage;
197013
197068
  };
197014
197069
  LinkquegwEventPlugin = class {
197015
197070
  name = LINKQUEGW_EVENT_PLUGIN_NAME;
@@ -197038,10 +197093,12 @@ var init_linkquegwEventPlugin = __esm({
197038
197093
  }
197039
197094
  /** 自动补入 event trigger 所需 HookResource;已有同 executorName + stage 时保持原配置。 */
197040
197095
  modifyAgentConfig(agentConfig) {
197041
- const exists = agentConfig.agent.resources.some(isLinkquegwRunStartedHook);
197042
- if (exists)
197043
- return;
197044
- agentConfig.agent.resources.push(createLinkquegwEventHookResource());
197096
+ for (const hook of DEFAULT_LINKQUEGW_EVENT_HOOKS) {
197097
+ const exists = agentConfig.agent.resources.some((resource) => isLinkquegwEventHook(resource, hook.stage));
197098
+ if (!exists) {
197099
+ agentConfig.agent.resources.push(createLinkquegwEventHookResource(hook.resourceId, hook.stage));
197100
+ }
197101
+ }
197045
197102
  }
197046
197103
  };
197047
197104
  }
@@ -197053,6 +197110,8 @@ __export(plugin_exports, {
197053
197110
  ExamplePlugin: () => ExamplePlugin,
197054
197111
  LINKQUEGW_EVENT_HOOK_RESOURCE_ID: () => LINKQUEGW_EVENT_HOOK_RESOURCE_ID,
197055
197112
  LINKQUEGW_EVENT_PLUGIN_NAME: () => LINKQUEGW_EVENT_PLUGIN_NAME,
197113
+ LINKQUEGW_RUN_COMPLETED_HOOK_RESOURCE_ID: () => LINKQUEGW_RUN_COMPLETED_HOOK_RESOURCE_ID,
197114
+ LINKQUEGW_RUN_FAILED_HOOK_RESOURCE_ID: () => LINKQUEGW_RUN_FAILED_HOOK_RESOURCE_ID,
197056
197115
  LinkquegwEventPlugin: () => LinkquegwEventPlugin
197057
197116
  });
197058
197117
  var init_plugin = __esm({