@ai-group/chat-sdk 3.7.1-alpha4 → 3.7.1-alpha5

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 (32) hide show
  1. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.d.ts +2 -0
  2. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js +27 -7
  3. package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js.map +2 -2
  4. package/dist/cjs/components/XAdkChatbot/index.js +8 -1
  5. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  6. package/dist/cjs/presets/xgroup/preset.js +2 -1
  7. package/dist/cjs/presets/xgroup/preset.js.map +2 -2
  8. package/dist/cjs/presets/xgroup/strategies.d.ts +5 -1
  9. package/dist/cjs/presets/xgroup/strategies.js +16 -1
  10. package/dist/cjs/presets/xgroup/strategies.js.map +3 -3
  11. package/dist/cjs/types/ChatStrategies.d.ts +5 -0
  12. package/dist/cjs/types/ChatStrategies.js.map +1 -1
  13. package/dist/cjs/utils/markdownResource.d.ts +8 -4
  14. package/dist/cjs/utils/markdownResource.js +20 -14
  15. package/dist/cjs/utils/markdownResource.js.map +2 -2
  16. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.d.ts +2 -0
  17. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js +11 -4
  18. package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js.map +1 -1
  19. package/dist/esm/components/XAdkChatbot/index.js +7 -2
  20. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  21. package/dist/esm/presets/xgroup/preset.js +3 -2
  22. package/dist/esm/presets/xgroup/preset.js.map +1 -1
  23. package/dist/esm/presets/xgroup/strategies.d.ts +5 -1
  24. package/dist/esm/presets/xgroup/strategies.js +12 -1
  25. package/dist/esm/presets/xgroup/strategies.js.map +1 -1
  26. package/dist/esm/types/ChatStrategies.d.ts +5 -0
  27. package/dist/esm/types/ChatStrategies.js.map +1 -1
  28. package/dist/esm/utils/markdownResource.d.ts +8 -4
  29. package/dist/esm/utils/markdownResource.js +10 -7
  30. package/dist/esm/utils/markdownResource.js.map +1 -1
  31. package/dist/umd/chat-sdk.min.js +1 -1
  32. package/package.json +1 -1
@@ -1,4 +1,14 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
1
3
  import { parseAgentMessage } from "../../utils";
4
+ import { MARKDOWN_RESOURCE_LINK_SCHEMES } from "../../utils/markdownResource";
5
+ import { formatMarkdownResourceLinksAsText } from "../../utils/markdownResource";
6
+ export var xGroupMarkdownResourceLinkSchemes = [].concat(_toConsumableArray(MARKDOWN_RESOURCE_LINK_SCHEMES), ["kb"]);
7
+ export var formatXGroupMarkdownResourceLinksAsText = function formatXGroupMarkdownResourceLinksAsText(text, options) {
8
+ return formatMarkdownResourceLinksAsText(text, _objectSpread(_objectSpread({}, options), {}, {
9
+ schemes: xGroupMarkdownResourceLinkSchemes
10
+ }));
11
+ };
2
12
  export var baseToolKindResolver = function baseToolKindResolver() {
3
13
  return "default";
4
14
  };
@@ -25,6 +35,7 @@ export var baseChatStrategies = {
25
35
  }
26
36
  };
27
37
  },
28
- parseProcessMessage: parseAgentMessage
38
+ parseProcessMessage: parseAgentMessage,
39
+ markdownResourceLinkSchemes: MARKDOWN_RESOURCE_LINK_SCHEMES
29
40
  };
30
41
  //# sourceMappingURL=strategies.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["parseAgentMessage","baseToolKindResolver","xGroupToolKindResolver","_ref","name","baseChatStrategies","resolveToolKind","createFunctionResponse","fnCall","confirmed","id","response","parseProcessMessage"],"sources":["../../../../src/presets/xgroup/strategies.ts"],"sourcesContent":["import { parseAgentMessage } from \"@/utils\";\nimport type {\n ChatStrategies,\n FunctionCall,\n FunctionResponse,\n ToolRenderKind,\n} from \"@/types\";\n\nexport const baseToolKindResolver = (): ToolRenderKind => \"default\";\n\n/** 众安信科预设的工具类型映射,集中处理当前后端约定的 tool name。 */\nexport const xGroupToolKindResolver = ({\n name,\n}: {\n name?: string;\n}): ToolRenderKind => {\n if (name === \"adk_request_confirmation\") return \"approval\";\n if (name === \"transferToAgent\") return \"handoff\";\n return \"default\";\n};\n\n/** SDK 基础策略:不带业务协议偏好的最小行为集合。 */\nexport const baseChatStrategies: Required<\n Pick<\n ChatStrategies,\n \"resolveToolKind\" | \"createFunctionResponse\" | \"parseProcessMessage\"\n >\n> = {\n resolveToolKind: () => \"default\",\n createFunctionResponse: (\n fnCall: FunctionCall,\n confirmed: boolean,\n ): FunctionResponse => ({\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n }),\n parseProcessMessage: parseAgentMessage,\n};\n"],"mappings":"AAAA,SAASA,iBAAiB;AAQ1B,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA;EAAA,OAAyB,SAAS;AAAA;;AAEnE;AACA,OAAO,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAAC,IAAA,EAIb;EAAA,IAHpBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAIJ,IAAIA,IAAI,KAAK,0BAA0B,EAAE,OAAO,UAAU;EAC1D,IAAIA,IAAI,KAAK,iBAAiB,EAAE,OAAO,SAAS;EAChD,OAAO,SAAS;AAClB,CAAC;;AAED;AACA,OAAO,IAAMC,kBAKZ,GAAG;EACFC,eAAe,EAAE,SAAAA,gBAAA;IAAA,OAAM,SAAS;EAAA;EAChCC,sBAAsB,EAAE,SAAAA,uBACtBC,MAAoB,EACpBC,SAAkB;IAAA,OACI;MACtBC,EAAE,EAAEF,MAAM,CAACE,EAAE;MACbN,IAAI,EAAEI,MAAM,CAACJ,IAAI;MACjBO,QAAQ,EAAE;QAAEF,SAAS,EAATA;MAAU;IACxB,CAAC;EAAA,CAAC;EACFG,mBAAmB,EAAEZ;AACvB,CAAC"}
1
+ {"version":3,"names":["parseAgentMessage","MARKDOWN_RESOURCE_LINK_SCHEMES","formatMarkdownResourceLinksAsText","xGroupMarkdownResourceLinkSchemes","concat","_toConsumableArray","formatXGroupMarkdownResourceLinksAsText","text","options","_objectSpread","schemes","baseToolKindResolver","xGroupToolKindResolver","_ref","name","baseChatStrategies","resolveToolKind","createFunctionResponse","fnCall","confirmed","id","response","parseProcessMessage","markdownResourceLinkSchemes"],"sources":["../../../../src/presets/xgroup/strategies.ts"],"sourcesContent":["import { parseAgentMessage } from \"@/utils\";\nimport type {\n ChatStrategies,\n FunctionCall,\n FunctionResponse,\n ToolRenderKind,\n} from \"@/types\";\nimport { MARKDOWN_RESOURCE_LINK_SCHEMES } from \"@/utils/markdownResource\";\nimport { formatMarkdownResourceLinksAsText } from \"@/utils/markdownResource\";\n\nexport const xGroupMarkdownResourceLinkSchemes = [\n ...MARKDOWN_RESOURCE_LINK_SCHEMES,\n \"kb\",\n] as const;\n\nexport const formatXGroupMarkdownResourceLinksAsText = (\n text: string,\n options?: { stripTrigger?: boolean },\n) =>\n formatMarkdownResourceLinksAsText(text, {\n ...options,\n schemes: xGroupMarkdownResourceLinkSchemes,\n });\n\nexport const baseToolKindResolver = (): ToolRenderKind => \"default\";\n\n/** 众安信科预设的工具类型映射,集中处理当前后端约定的 tool name。 */\nexport const xGroupToolKindResolver = ({\n name,\n}: {\n name?: string;\n}): ToolRenderKind => {\n if (name === \"adk_request_confirmation\") return \"approval\";\n if (name === \"transferToAgent\") return \"handoff\";\n return \"default\";\n};\n\n/** SDK 基础策略:不带业务协议偏好的最小行为集合。 */\nexport const baseChatStrategies: Required<\n Pick<\n ChatStrategies,\n | \"resolveToolKind\"\n | \"createFunctionResponse\"\n | \"parseProcessMessage\"\n | \"markdownResourceLinkSchemes\"\n >\n> = {\n resolveToolKind: () => \"default\",\n createFunctionResponse: (\n fnCall: FunctionCall,\n confirmed: boolean,\n ): FunctionResponse => ({\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n }),\n parseProcessMessage: parseAgentMessage,\n markdownResourceLinkSchemes: MARKDOWN_RESOURCE_LINK_SCHEMES,\n};\n"],"mappings":";;AAAA,SAASA,iBAAiB;AAO1B,SAASC,8BAA8B;AACvC,SAASC,iCAAiC;AAE1C,OAAO,IAAMC,iCAAiC,MAAAC,MAAA,CAAAC,kBAAA,CACzCJ,8BAA8B,IACjC,IAAI,EACI;AAEV,OAAO,IAAMK,uCAAuC,GAAG,SAA1CA,uCAAuCA,CAClDC,IAAY,EACZC,OAAoC;EAAA,OAEpCN,iCAAiC,CAACK,IAAI,EAAAE,aAAA,CAAAA,aAAA,KACjCD,OAAO;IACVE,OAAO,EAAEP;EAAiC,EAC3C,CAAC;AAAA;AAEJ,OAAO,IAAMQ,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA;EAAA,OAAyB,SAAS;AAAA;;AAEnE;AACA,OAAO,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAAC,IAAA,EAIb;EAAA,IAHpBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAIJ,IAAIA,IAAI,KAAK,0BAA0B,EAAE,OAAO,UAAU;EAC1D,IAAIA,IAAI,KAAK,iBAAiB,EAAE,OAAO,SAAS;EAChD,OAAO,SAAS;AAClB,CAAC;;AAED;AACA,OAAO,IAAMC,kBAQZ,GAAG;EACFC,eAAe,EAAE,SAAAA,gBAAA;IAAA,OAAM,SAAS;EAAA;EAChCC,sBAAsB,EAAE,SAAAA,uBACtBC,MAAoB,EACpBC,SAAkB;IAAA,OACI;MACtBC,EAAE,EAAEF,MAAM,CAACE,EAAE;MACbN,IAAI,EAAEI,MAAM,CAACJ,IAAI;MACjBO,QAAQ,EAAE;QAAEF,SAAS,EAATA;MAAU;IACxB,CAAC;EAAA,CAAC;EACFG,mBAAmB,EAAEtB,iBAAiB;EACtCuB,2BAA2B,EAAEtB;AAC/B,CAAC"}
@@ -20,6 +20,11 @@ export interface ChatStrategies {
20
20
  * 将模型文本拆分为过程节点和最终答案。
21
21
  */
22
22
  parseProcessMessage?: (text: string, options?: ParseAgentMessageOptions) => ParsedPart[];
23
+ /**
24
+ * Markdown 资源链接协议白名单,如 skill://、plugin://。
25
+ * 业务预设可在这里追加私有协议,例如 xgroup-adk 的 kb://。
26
+ */
27
+ markdownResourceLinkSchemes?: readonly string[];
23
28
  /**
24
29
  * 自定义 approval 场景渲染,返回 null 则使用默认渲染。
25
30
  */
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/ChatStrategies.ts"],"sourcesContent":["import type React from \"react\";\nimport type { ParseAgentMessageOptions, ParsedPart } from \"@/utils\";\nimport type { IMessage, FunctionCall, FunctionResponse } from \"./XAdkChatbot\";\nimport type { ToolRenderKind } from \"./FunctionCallRender\";\nimport type { UploadRequestFn } from \"./XAdkSender\";\n\nexport interface ToolKindResolveContext {\n name?: string;\n msg?: IMessage;\n}\n\nexport interface ChatStrategies {\n /**\n * 工具名/消息 -> 渲染类型解析策略。\n */\n resolveToolKind?: (ctx: ToolKindResolveContext) => ToolRenderKind;\n /**\n * 函数调用确认场景中,基于工具调用和用户选择生成 functionResponse。\n */\n createFunctionResponse?: (\n fnCall: FunctionCall,\n confirmed: boolean,\n ) => FunctionResponse;\n /**\n * 将模型文本拆分为过程节点和最终答案。\n */\n parseProcessMessage?: (\n text: string,\n options?: ParseAgentMessageOptions,\n ) => ParsedPart[];\n /**\n * 自定义 approval 场景渲染,返回 null 则使用默认渲染。\n */\n renderApproval?: (\n msg: IMessage,\n onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void,\n ) => React.ReactNode | null;\n /**\n * 自定义 handoff 场景渲染,返回 null 则使用默认渲染。\n */\n renderHandoff?: (msg: IMessage) => React.ReactNode | null;\n}\n\nexport interface ChatPreset {\n name: string;\n strategies?: ChatStrategies;\n /**\n * 基于当前协议预设创建默认文件上传函数。\n * 用户显式传入 config.uploadRequest 时优先使用用户配置。\n */\n createUploadRequest?: (context: {\n url: string;\n token?: string;\n appNo?: string;\n }) => UploadRequestFn | undefined;\n}\n\nexport type ChatPresetInput = \"base\" | \"xgroup-adk\" | ChatPreset;\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../../src/types/ChatStrategies.ts"],"sourcesContent":["import type React from \"react\";\nimport type { ParseAgentMessageOptions, ParsedPart } from \"@/utils\";\nimport type { IMessage, FunctionCall, FunctionResponse } from \"./XAdkChatbot\";\nimport type { ToolRenderKind } from \"./FunctionCallRender\";\nimport type { UploadRequestFn } from \"./XAdkSender\";\n\nexport interface ToolKindResolveContext {\n name?: string;\n msg?: IMessage;\n}\n\nexport interface ChatStrategies {\n /**\n * 工具名/消息 -> 渲染类型解析策略。\n */\n resolveToolKind?: (ctx: ToolKindResolveContext) => ToolRenderKind;\n /**\n * 函数调用确认场景中,基于工具调用和用户选择生成 functionResponse。\n */\n createFunctionResponse?: (\n fnCall: FunctionCall,\n confirmed: boolean,\n ) => FunctionResponse;\n /**\n * 将模型文本拆分为过程节点和最终答案。\n */\n parseProcessMessage?: (\n text: string,\n options?: ParseAgentMessageOptions,\n ) => ParsedPart[];\n /**\n * Markdown 资源链接协议白名单,如 skill://、plugin://。\n * 业务预设可在这里追加私有协议,例如 xgroup-adk 的 kb://。\n */\n markdownResourceLinkSchemes?: readonly string[];\n /**\n * 自定义 approval 场景渲染,返回 null 则使用默认渲染。\n */\n renderApproval?: (\n msg: IMessage,\n onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void,\n ) => React.ReactNode | null;\n /**\n * 自定义 handoff 场景渲染,返回 null 则使用默认渲染。\n */\n renderHandoff?: (msg: IMessage) => React.ReactNode | null;\n}\n\nexport interface ChatPreset {\n name: string;\n strategies?: ChatStrategies;\n /**\n * 基于当前协议预设创建默认文件上传函数。\n * 用户显式传入 config.uploadRequest 时优先使用用户配置。\n */\n createUploadRequest?: (context: {\n url: string;\n token?: string;\n appNo?: string;\n }) => UploadRequestFn | undefined;\n}\n\nexport type ChatPresetInput = \"base\" | \"xgroup-adk\" | ChatPreset;\n"],"mappings":""}
@@ -1,7 +1,11 @@
1
1
  import type { MarkdownResourceLink } from "../types";
2
- export declare const MARKDOWN_RESOURCE_LINK_SCHEMES: readonly ["skill", "plugin", "tool", "knowledge", "kb", "agent", "model"];
3
- export declare const parseMarkdownResourceHref: (href: string, label?: string) => MarkdownResourceLink | null;
4
- export declare const replaceMarkdownResourceLinks: (text: string, replacer: (link: MarkdownResourceLink) => string) => string;
5
- export declare const formatMarkdownResourceLinksAsText: (text: string, options?: {
2
+ export declare const MARKDOWN_RESOURCE_LINK_SCHEMES: readonly ["skill", "plugin", "tool", "knowledge", "agent", "model"];
3
+ export type MarkdownResourceLinkScheme = (typeof MARKDOWN_RESOURCE_LINK_SCHEMES)[number] | (string & {});
4
+ export interface MarkdownResourceLinkOptions {
5
+ schemes?: readonly MarkdownResourceLinkScheme[];
6
+ }
7
+ export declare const parseMarkdownResourceHref: (href: string, label?: string, options?: MarkdownResourceLinkOptions) => MarkdownResourceLink | null;
8
+ export declare const replaceMarkdownResourceLinks: (text: string, replacer: (link: MarkdownResourceLink) => string, options?: MarkdownResourceLinkOptions) => string;
9
+ export declare const formatMarkdownResourceLinksAsText: (text: string, options?: MarkdownResourceLinkOptions & {
6
10
  stripTrigger?: boolean;
7
11
  }) => string;
@@ -1,15 +1,18 @@
1
- export var MARKDOWN_RESOURCE_LINK_SCHEMES = ["skill", "plugin", "tool", "knowledge", "kb", "agent", "model"];
2
- var RESOURCE_LINK_SCHEME_SET = new Set(MARKDOWN_RESOURCE_LINK_SCHEMES);
3
- var RESOURCE_LINK_REGEX = /\[([^\]\n]+)\]\(((?:skill|plugin|tool|knowledge|kb|agent|model):\/{2,3}[^)\s]+)\)/gi;
1
+ export var MARKDOWN_RESOURCE_LINK_SCHEMES = ["skill", "plugin", "tool", "knowledge", "agent", "model"];
2
+ var getResourceLinkSchemeSet = function getResourceLinkSchemeSet(options) {
3
+ return new Set((options === null || options === void 0 ? void 0 : options.schemes) || MARKDOWN_RESOURCE_LINK_SCHEMES);
4
+ };
5
+ var RESOURCE_LINK_REGEX = /\[([^\]\n]+)\]\(([a-z][a-z0-9+.-]*:\/{2,3}[^)\s]+)\)/gi;
4
6
  var stripTriggerPrefix = function stripTriggerPrefix(label) {
5
7
  return label.replace(/^[@/#$]+/, "");
6
8
  };
7
9
  export var parseMarkdownResourceHref = function parseMarkdownResourceHref(href) {
8
10
  var label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
11
+ var options = arguments.length > 2 ? arguments[2] : undefined;
9
12
  var match = href.match(/^([a-z][a-z0-9+.-]*):\/{2,3}(.+)$/i);
10
13
  if (!match) return null;
11
14
  var type = match[1].toLowerCase();
12
- if (!RESOURCE_LINK_SCHEME_SET.has(type)) return null;
15
+ if (!getResourceLinkSchemeSet(options).has(type)) return null;
13
16
  return {
14
17
  href: href,
15
18
  label: label || href,
@@ -17,10 +20,10 @@ export var parseMarkdownResourceHref = function parseMarkdownResourceHref(href)
17
20
  value: decodeURIComponent(match[2])
18
21
  };
19
22
  };
20
- export var replaceMarkdownResourceLinks = function replaceMarkdownResourceLinks(text, replacer) {
23
+ export var replaceMarkdownResourceLinks = function replaceMarkdownResourceLinks(text, replacer, options) {
21
24
  if (!text) return "";
22
25
  return text.replace(RESOURCE_LINK_REGEX, function (source, label, href) {
23
- var link = parseMarkdownResourceHref(href, label);
26
+ var link = parseMarkdownResourceHref(href, label, options);
24
27
  return link ? replacer(link) : source;
25
28
  });
26
29
  };
@@ -28,6 +31,6 @@ export var formatMarkdownResourceLinksAsText = function formatMarkdownResourceLi
28
31
  return replaceMarkdownResourceLinks(text, function (link) {
29
32
  var label = link.label || link.value;
30
33
  return (options === null || options === void 0 ? void 0 : options.stripTrigger) === false ? label : stripTriggerPrefix(label);
31
- });
34
+ }, options);
32
35
  };
33
36
  //# sourceMappingURL=markdownResource.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MARKDOWN_RESOURCE_LINK_SCHEMES","RESOURCE_LINK_SCHEME_SET","Set","RESOURCE_LINK_REGEX","stripTriggerPrefix","label","replace","parseMarkdownResourceHref","href","arguments","length","undefined","match","type","toLowerCase","has","value","decodeURIComponent","replaceMarkdownResourceLinks","text","replacer","source","link","formatMarkdownResourceLinksAsText","options","stripTrigger"],"sources":["../../../src/utils/markdownResource.ts"],"sourcesContent":["import type { MarkdownResourceLink } from \"@/types\";\n\nexport const MARKDOWN_RESOURCE_LINK_SCHEMES = [\n \"skill\",\n \"plugin\",\n \"tool\",\n \"knowledge\",\n \"kb\",\n \"agent\",\n \"model\",\n] as const;\n\nconst RESOURCE_LINK_SCHEME_SET = new Set<string>(MARKDOWN_RESOURCE_LINK_SCHEMES);\nconst RESOURCE_LINK_REGEX =\n /\\[([^\\]\\n]+)\\]\\(((?:skill|plugin|tool|knowledge|kb|agent|model):\\/{2,3}[^)\\s]+)\\)/gi;\n\nconst stripTriggerPrefix = (label: string) => label.replace(/^[@/#$]+/, \"\");\n\nexport const parseMarkdownResourceHref = (\n href: string,\n label = \"\",\n): MarkdownResourceLink | null => {\n const match = href.match(/^([a-z][a-z0-9+.-]*):\\/{2,3}(.+)$/i);\n if (!match) return null;\n\n const type = match[1].toLowerCase();\n if (!RESOURCE_LINK_SCHEME_SET.has(type)) return null;\n\n return {\n href,\n label: label || href,\n type,\n value: decodeURIComponent(match[2]),\n };\n};\n\nexport const replaceMarkdownResourceLinks = (\n text: string,\n replacer: (link: MarkdownResourceLink) => string,\n) => {\n if (!text) return \"\";\n return text.replace(RESOURCE_LINK_REGEX, (source, label: string, href: string) => {\n const link = parseMarkdownResourceHref(href, label);\n return link ? replacer(link) : source;\n });\n};\n\nexport const formatMarkdownResourceLinksAsText = (\n text: string,\n options?: { stripTrigger?: boolean },\n) =>\n replaceMarkdownResourceLinks(text, (link) => {\n const label = link.label || link.value;\n return options?.stripTrigger === false ? label : stripTriggerPrefix(label);\n });\n"],"mappings":"AAEA,OAAO,IAAMA,8BAA8B,GAAG,CAC5C,OAAO,EACP,QAAQ,EACR,MAAM,EACN,WAAW,EACX,IAAI,EACJ,OAAO,EACP,OAAO,CACC;AAEV,IAAMC,wBAAwB,GAAG,IAAIC,GAAG,CAASF,8BAA8B,CAAC;AAChF,IAAMG,mBAAmB,GACvB,qFAAqF;AAEvF,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,KAAa;EAAA,OAAKA,KAAK,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAAA;AAE3E,OAAO,IAAMC,yBAAyB,GAAG,SAA5BA,yBAAyBA,CACpCC,IAAY,EAEoB;EAAA,IADhCH,KAAK,GAAAI,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEV,IAAMG,KAAK,GAAGJ,IAAI,CAACI,KAAK,CAAC,oCAAoC,CAAC;EAC9D,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;EAEvB,IAAMC,IAAI,GAAGD,KAAK,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,IAAI,CAACb,wBAAwB,CAACc,GAAG,CAACF,IAAI,CAAC,EAAE,OAAO,IAAI;EAEpD,OAAO;IACLL,IAAI,EAAJA,IAAI;IACJH,KAAK,EAAEA,KAAK,IAAIG,IAAI;IACpBK,IAAI,EAAJA,IAAI;IACJG,KAAK,EAAEC,kBAAkB,CAACL,KAAK,CAAC,CAAC,CAAC;EACpC,CAAC;AACH,CAAC;AAED,OAAO,IAAMM,4BAA4B,GAAG,SAA/BA,4BAA4BA,CACvCC,IAAY,EACZC,QAAgD,EAC7C;EACH,IAAI,CAACD,IAAI,EAAE,OAAO,EAAE;EACpB,OAAOA,IAAI,CAACb,OAAO,CAACH,mBAAmB,EAAE,UAACkB,MAAM,EAAEhB,KAAa,EAAEG,IAAY,EAAK;IAChF,IAAMc,IAAI,GAAGf,yBAAyB,CAACC,IAAI,EAAEH,KAAK,CAAC;IACnD,OAAOiB,IAAI,GAAGF,QAAQ,CAACE,IAAI,CAAC,GAAGD,MAAM;EACvC,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,IAAME,iCAAiC,GAAG,SAApCA,iCAAiCA,CAC5CJ,IAAY,EACZK,OAAoC;EAAA,OAEpCN,4BAA4B,CAACC,IAAI,EAAE,UAACG,IAAI,EAAK;IAC3C,IAAMjB,KAAK,GAAGiB,IAAI,CAACjB,KAAK,IAAIiB,IAAI,CAACN,KAAK;IACtC,OAAO,CAAAQ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,YAAY,MAAK,KAAK,GAAGpB,KAAK,GAAGD,kBAAkB,CAACC,KAAK,CAAC;EAC5E,CAAC,CAAC;AAAA"}
1
+ {"version":3,"names":["MARKDOWN_RESOURCE_LINK_SCHEMES","getResourceLinkSchemeSet","options","Set","schemes","RESOURCE_LINK_REGEX","stripTriggerPrefix","label","replace","parseMarkdownResourceHref","href","arguments","length","undefined","match","type","toLowerCase","has","value","decodeURIComponent","replaceMarkdownResourceLinks","text","replacer","source","link","formatMarkdownResourceLinksAsText","stripTrigger"],"sources":["../../../src/utils/markdownResource.ts"],"sourcesContent":["import type { MarkdownResourceLink } from \"@/types\";\n\nexport const MARKDOWN_RESOURCE_LINK_SCHEMES = [\n \"skill\",\n \"plugin\",\n \"tool\",\n \"knowledge\",\n \"agent\",\n \"model\",\n] as const;\n\nexport type MarkdownResourceLinkScheme =\n | (typeof MARKDOWN_RESOURCE_LINK_SCHEMES)[number]\n | (string & {});\n\nexport interface MarkdownResourceLinkOptions {\n schemes?: readonly MarkdownResourceLinkScheme[];\n}\n\nconst getResourceLinkSchemeSet = (options?: MarkdownResourceLinkOptions) =>\n new Set<string>(options?.schemes || MARKDOWN_RESOURCE_LINK_SCHEMES);\n\nconst RESOURCE_LINK_REGEX =\n /\\[([^\\]\\n]+)\\]\\(([a-z][a-z0-9+.-]*:\\/{2,3}[^)\\s]+)\\)/gi;\n\nconst stripTriggerPrefix = (label: string) => label.replace(/^[@/#$]+/, \"\");\n\nexport const parseMarkdownResourceHref = (\n href: string,\n label = \"\",\n options?: MarkdownResourceLinkOptions,\n): MarkdownResourceLink | null => {\n const match = href.match(/^([a-z][a-z0-9+.-]*):\\/{2,3}(.+)$/i);\n if (!match) return null;\n\n const type = match[1].toLowerCase();\n if (!getResourceLinkSchemeSet(options).has(type)) return null;\n\n return {\n href,\n label: label || href,\n type,\n value: decodeURIComponent(match[2]),\n };\n};\n\nexport const replaceMarkdownResourceLinks = (\n text: string,\n replacer: (link: MarkdownResourceLink) => string,\n options?: MarkdownResourceLinkOptions,\n) => {\n if (!text) return \"\";\n return text.replace(\n RESOURCE_LINK_REGEX,\n (source, label: string, href: string) => {\n const link = parseMarkdownResourceHref(href, label, options);\n return link ? replacer(link) : source;\n },\n );\n};\n\nexport const formatMarkdownResourceLinksAsText = (\n text: string,\n options?: MarkdownResourceLinkOptions & { stripTrigger?: boolean },\n) =>\n replaceMarkdownResourceLinks(\n text,\n (link) => {\n const label = link.label || link.value;\n return options?.stripTrigger === false\n ? label\n : stripTriggerPrefix(label);\n },\n options,\n );\n"],"mappings":"AAEA,OAAO,IAAMA,8BAA8B,GAAG,CAC5C,OAAO,EACP,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,OAAO,CACC;AAUV,IAAMC,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAIC,OAAqC;EAAA,OACrE,IAAIC,GAAG,CAAS,CAAAD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,OAAO,KAAIJ,8BAA8B,CAAC;AAAA;AAErE,IAAMK,mBAAmB,GACvB,wDAAwD;AAE1D,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,KAAa;EAAA,OAAKA,KAAK,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAAA;AAE3E,OAAO,IAAMC,yBAAyB,GAAG,SAA5BA,yBAAyBA,CACpCC,IAAY,EAGoB;EAAA,IAFhCH,KAAK,GAAAI,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IACVT,OAAqC,GAAAS,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAErC,IAAMC,KAAK,GAAGJ,IAAI,CAACI,KAAK,CAAC,oCAAoC,CAAC;EAC9D,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;EAEvB,IAAMC,IAAI,GAAGD,KAAK,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC;EACnC,IAAI,CAACf,wBAAwB,CAACC,OAAO,CAAC,CAACe,GAAG,CAACF,IAAI,CAAC,EAAE,OAAO,IAAI;EAE7D,OAAO;IACLL,IAAI,EAAJA,IAAI;IACJH,KAAK,EAAEA,KAAK,IAAIG,IAAI;IACpBK,IAAI,EAAJA,IAAI;IACJG,KAAK,EAAEC,kBAAkB,CAACL,KAAK,CAAC,CAAC,CAAC;EACpC,CAAC;AACH,CAAC;AAED,OAAO,IAAMM,4BAA4B,GAAG,SAA/BA,4BAA4BA,CACvCC,IAAY,EACZC,QAAgD,EAChDpB,OAAqC,EAClC;EACH,IAAI,CAACmB,IAAI,EAAE,OAAO,EAAE;EACpB,OAAOA,IAAI,CAACb,OAAO,CACjBH,mBAAmB,EACnB,UAACkB,MAAM,EAAEhB,KAAa,EAAEG,IAAY,EAAK;IACvC,IAAMc,IAAI,GAAGf,yBAAyB,CAACC,IAAI,EAAEH,KAAK,EAAEL,OAAO,CAAC;IAC5D,OAAOsB,IAAI,GAAGF,QAAQ,CAACE,IAAI,CAAC,GAAGD,MAAM;EACvC,CACF,CAAC;AACH,CAAC;AAED,OAAO,IAAME,iCAAiC,GAAG,SAApCA,iCAAiCA,CAC5CJ,IAAY,EACZnB,OAAkE;EAAA,OAElEkB,4BAA4B,CAC1BC,IAAI,EACJ,UAACG,IAAI,EAAK;IACR,IAAMjB,KAAK,GAAGiB,IAAI,CAACjB,KAAK,IAAIiB,IAAI,CAACN,KAAK;IACtC,OAAO,CAAAhB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEwB,YAAY,MAAK,KAAK,GAClCnB,KAAK,GACLD,kBAAkB,CAACC,KAAK,CAAC;EAC/B,CAAC,EACDL,OACF,CAAC;AAAA"}