@axiom-lattice/gateway 7.0.0 → 8.0.0

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 (92) hide show
  1. package/dist/{WechatChannelAdapter-7WHE5UGY.mjs → WechatChannelAdapter-QLPJJD6S.mjs} +55 -4
  2. package/dist/WechatChannelAdapter-QLPJJD6S.mjs.map +1 -0
  3. package/dist/{a2a-standard-DP53K7RC.mjs → a2a-standard-VL5I7B4W.mjs} +831 -59
  4. package/dist/a2a-standard-VL5I7B4W.mjs.map +1 -0
  5. package/dist/{chunk-FGSFOXIX.mjs → chunk-L6MBEEII.mjs} +2 -2
  6. package/dist/{chunk-J6B2VFJ7.mjs → chunk-W3YH4S6G.mjs} +2 -1
  7. package/dist/{chunk-MWWLJMYN.mjs → chunk-XUWD4VKY.mjs} +4 -2
  8. package/dist/chunk-XUWD4VKY.mjs.map +1 -0
  9. package/dist/embed/embed-page-AgentDetailSideApp-NK6VQBXS.js +1 -0
  10. package/dist/embed/embed-page-AgentGovernanceWorkbench-TKVV2GA6.js +1 -0
  11. package/dist/embed/embed-page-LangfuseDashboard-EYK2T2VK.js +1 -0
  12. package/dist/embed/embed-page-MessageGraph-P73B52OR.js +6 -0
  13. package/dist/embed/embed-page-ReactChart-LK6DUA4R.js +1 -0
  14. package/dist/embed/embed-page-SkillFlow-54RIT6M2.js +1 -0
  15. package/dist/embed/{embed-page-TasksSideApp-D7FFG2OC.js → embed-page-TasksSideApp-RK64OPAA.js} +1 -1
  16. package/dist/embed/embed-page-ThreadMaintenancePanel-PI3U76W3.js +1 -0
  17. package/dist/embed/{embed-page-TopologyRuntimeView-IS6HEO4F.js → embed-page-TopologyRuntimeView-X6QPRQE2.js} +1 -1
  18. package/dist/embed/{embed-page-WorkflowAutomationView-IDVSQTJB.js → embed-page-WorkflowAutomationView-3PE6YCRK.js} +1 -1
  19. package/dist/embed/{embed-page-chunk-NFMLKSPM.js → embed-page-chunk-3VNL5M2Q.js} +1 -1
  20. package/dist/embed/embed-page-chunk-767LVAGR.js +7 -0
  21. package/dist/embed/embed-page-chunk-A5GIM22E.js +117 -0
  22. package/dist/embed/{embed-page-chunk-SRMYHWL3.js → embed-page-chunk-AICFKU43.js} +1 -1
  23. package/dist/embed/{embed-page-chunk-XFV3N2LD.js → embed-page-chunk-BD7DUF2M.js} +1 -1
  24. package/dist/embed/embed-page-chunk-D7YTSCUO.js +1 -0
  25. package/dist/embed/{embed-page-chunk-N66H4DNH.js → embed-page-chunk-EB43T3BJ.js} +283 -194
  26. package/dist/embed/{embed-page-chunk-JFMBLJXY.js → embed-page-chunk-GYO2ELMI.js} +1 -1
  27. package/dist/embed/{embed-page-chunk-EYYKNTX7.js → embed-page-chunk-KF3HZ4TX.js} +1 -1
  28. package/dist/embed/embed-page-chunk-MEY3NEJZ.js +211 -0
  29. package/dist/embed/{embed-page-chunk-TVVAPR7I.js → embed-page-chunk-OIML5DX4.js} +1 -1
  30. package/dist/embed/{embed-page-chunk-FEMHLB6I.js → embed-page-chunk-OKZPPZMF.js} +1 -1
  31. package/dist/embed/embed-page-chunk-T2HKN7ZS.js +459 -0
  32. package/dist/embed/{embed-page-chunk-S2KVN3RB.js → embed-page-chunk-TSZQWEXD.js} +1 -1
  33. package/dist/embed/embed-page-chunk-US46Q3B7.js +15 -0
  34. package/dist/embed/{embed-page-chunk-BOEX26H7.js → embed-page-chunk-UV6IYDW5.js} +8 -8
  35. package/dist/embed/embed-page-chunk-WXMPVIXV.js +59 -0
  36. package/dist/embed/embed-page-chunk-YWJQVBZV.js +1 -0
  37. package/dist/embed/embed-page-code-highlighter-DD23LJY3.js +1 -0
  38. package/dist/embed/{embed-page-en-ETUCVCSC.js → embed-page-en-E35GE7TA.js} +1 -1
  39. package/dist/embed/embed-page-en-EKHHBS6L.js +1 -0
  40. package/dist/embed/embed-page-en-KAXIJJ4X.js +1 -0
  41. package/dist/embed/embed-page-en-OIICQSPX.js +3 -0
  42. package/dist/embed/embed-page-en-PQOH5CU4.js +1 -0
  43. package/dist/embed/embed-page-en-TMGUHZ6Y.js +1 -0
  44. package/dist/embed/embed-page-en-XJYWUJEL.js +1 -0
  45. package/dist/embed/{embed-page-en-2SWQHPAC.js → embed-page-en-ZCNNAMUD.js} +1 -1
  46. package/dist/embed/{embed-page-mermaid-KEBBKHQH.js → embed-page-mermaid-IN3A3YH2.js} +1 -1
  47. package/dist/embed/embed-page-zh-2UVQB4RP.js +3 -0
  48. package/dist/embed/embed-page-zh-6EBUEFKP.js +1 -0
  49. package/dist/embed/embed-page-zh-B3WBWQAV.js +1 -0
  50. package/dist/embed/embed-page-zh-KEMYJJLT.js +1 -0
  51. package/dist/embed/embed-page-zh-XO36BV2R.js +1 -0
  52. package/dist/embed/{embed-page-zh-PRMID3YQ.js → embed-page-zh-Z3URTIHW.js} +1 -1
  53. package/dist/embed/{embed-page-zh-D3IC6BGA.js → embed-page-zh-ZLK3GLM3.js} +1 -1
  54. package/dist/embed/embed-page.js +1 -1
  55. package/dist/index.d.mts +118 -3
  56. package/dist/index.d.ts +118 -3
  57. package/dist/index.js +3862 -1525
  58. package/dist/index.js.map +1 -1
  59. package/dist/index.mjs +2105 -598
  60. package/dist/index.mjs.map +1 -1
  61. package/dist/{open-NTH7AGD3.mjs → open-7ED27I5B.mjs} +3 -3
  62. package/dist/{open-exposure-AGNG4MC3.mjs → open-exposure-I3DN2X4E.mjs} +6 -4
  63. package/dist/{open-exposure-AGNG4MC3.mjs.map → open-exposure-I3DN2X4E.mjs.map} +1 -1
  64. package/package.json +13 -7
  65. package/dist/WechatChannelAdapter-7WHE5UGY.mjs.map +0 -1
  66. package/dist/a2a-standard-DP53K7RC.mjs.map +0 -1
  67. package/dist/chunk-MWWLJMYN.mjs.map +0 -1
  68. package/dist/embed/embed-page-AgentDetailSideApp-KNVDO3FZ.js +0 -1
  69. package/dist/embed/embed-page-AgentGovernanceWorkbench-QSKWVADP.js +0 -1
  70. package/dist/embed/embed-page-MessageGraph-VGXX4OWU.js +0 -6
  71. package/dist/embed/embed-page-ReactChart-PIISVBLU.js +0 -1
  72. package/dist/embed/embed-page-SkillFlow-JLI5MEZE.js +0 -1
  73. package/dist/embed/embed-page-ThreadMaintenancePanel-FSQVVIIG.js +0 -1
  74. package/dist/embed/embed-page-chunk-37LGEEJU.js +0 -21
  75. package/dist/embed/embed-page-chunk-436REIWY.js +0 -1
  76. package/dist/embed/embed-page-chunk-4W34QOXT.js +0 -517
  77. package/dist/embed/embed-page-chunk-BANVRQT7.js +0 -322
  78. package/dist/embed/embed-page-code-highlighter-66CSPTFK.js +0 -1
  79. package/dist/embed/embed-page-en-7IHJFS63.js +0 -1
  80. package/dist/embed/embed-page-en-7NF4GCC2.js +0 -1
  81. package/dist/embed/embed-page-en-FP6DWSG3.js +0 -1
  82. package/dist/embed/embed-page-en-GHTROC4H.js +0 -1
  83. package/dist/embed/embed-page-en-WUFULCUS.js +0 -1
  84. package/dist/embed/embed-page-en-XUMHP5CL.js +0 -1
  85. package/dist/embed/embed-page-zh-G75LDQU4.js +0 -1
  86. package/dist/embed/embed-page-zh-KJXKOUIY.js +0 -1
  87. package/dist/embed/embed-page-zh-RMSS6PXD.js +0 -1
  88. package/dist/embed/embed-page-zh-VH6J7XZO.js +0 -1
  89. package/dist/embed/embed-page-zh-Y5X5Y2DF.js +0 -1
  90. /package/dist/{chunk-FGSFOXIX.mjs.map → chunk-L6MBEEII.mjs.map} +0 -0
  91. /package/dist/{chunk-J6B2VFJ7.mjs.map → chunk-W3YH4S6G.mjs.map} +0 -0
  92. /package/dist/{open-NTH7AGD3.mjs.map → open-7ED27I5B.mjs.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/services/plugins/pluginToolExecution.ts"],"sourcesContent":["/**\n * Shared sandbox plugin tool execution helper.\n *\n * Membership resolution and executor invocation must have exactly one\n * constructor in the gateway: producing the `runConfig`/`context`/handler\n * envelope in two places would let the MCP App UI path and the Open MCP path\n * drift. Both `routes/mcp-apps.ts` (`callPluginTool`) and\n * `services/open/tenantOpenPlugins.ts` delegate here.\n *\n * `SandboxPluginInvokeArgs` is imported from core (the executor's own argument\n * contract) so this seam cannot silently diverge from {@link SandboxPluginExecutor}.\n */\n\nimport type { SandboxPluginManifest } from \"@axiom-lattice/protocols\";\nimport { handlerResultText, type SandboxPluginInvokeArgs } from \"@axiom-lattice/core\";\n\n/**\n * Thrown when a requested tool is not owned by the addressed plugin's validated\n * manifest. Callers map it to a client error (the MCP App route maps it to 403).\n */\nexport class PluginToolScopeError extends Error {\n /** Stable machine-readable code for callers that translate the error. */\n readonly code = \"PLUGIN_TOOL_SCOPE\";\n\n /**\n * @param name - Rejected tool name.\n * @param pluginType - Plugin the request addressed.\n */\n constructor(name: string, pluginType: string) {\n super(`tool \"${name}\" is not owned by plugin \"${pluginType}\"`);\n this.name = \"PluginToolScopeError\";\n }\n}\n\n/** Minimal executor outcome the invocation seam depends on. */\nexport interface PluginToolInvokeResult {\n ok: boolean;\n result?: unknown;\n error?: string;\n /** Raw handler stdout, used as a fallback when `result` is omitted. */\n stdout?: string;\n}\n\n/** The catalog surface required to execute a plugin tool. */\nexport interface PluginToolCatalog {\n /**\n * Validated (normalized) manifest for the plugin.\n *\n * This is the authoritative source for handler paths and tool caps: it is the\n * output of the manifest validator, not a fresh parse of the raw\n * `plugin.json`, so execution cannot diverge from what validation accepted.\n */\n getValidatedManifest(tenantId: string, type: string): Promise<SandboxPluginManifest | undefined>;\n getExecutor(): {\n invoke(args: SandboxPluginInvokeArgs): Promise<PluginToolInvokeResult>;\n };\n}\n\n/** Dependencies injected into {@link invokePluginTool}. */\nexport interface PluginToolExecutionDeps {\n catalog: PluginToolCatalog;\n}\n\n/** Optional run identity and credential payload for a plugin tool invocation. */\nexport interface PluginToolRunContext {\n workspaceId?: string;\n projectId?: string;\n connection?: Record<string, unknown>;\n connections?: Array<{ key: string; config: Record<string, unknown> }>;\n}\n\n/**\n * Execute one of a plugin's own tools through the injected sandbox executor.\n *\n * A tool the plugin does not own is a scope violation\n * ({@link PluginToolScopeError}); a missing plugin, validated manifest, or\n * failed execution is a backend failure.\n *\n * @param deps - Catalog seam exposing the validated manifest and executor.\n * @param tenantId - Tenant scope.\n * @param pluginType - Plugin type addressed by the request.\n * @param name - Tool name requested by the caller.\n * @param args - Tool arguments.\n * @param runContext - Optional run identity (workspace/project) selecting the\n * project-isolated sandbox, plus any connection payload. Undefined identity\n * fields are omitted so the executor falls back to the tenant-level sandbox.\n * @returns The handler result.\n * @throws PluginToolScopeError when the validated manifest does not own the tool.\n * @throws Error when the manifest is missing or execution fails.\n */\nexport async function invokePluginTool(\n deps: PluginToolExecutionDeps,\n tenantId: string,\n pluginType: string,\n name: string,\n args: Record<string, unknown>,\n runContext?: PluginToolRunContext,\n): Promise<unknown> {\n const manifest = await deps.catalog.getValidatedManifest(tenantId, pluginType);\n if (!manifest) throw new Error(`plugin \"${pluginType}\" has no validated manifest`);\n const tool = (manifest.tools ?? []).find((t) => t.name === name);\n if (!tool) throw new PluginToolScopeError(name, pluginType);\n // Spread/omit undefined so the executor sees only the identity it was given:\n // a call with workspace/project resolves the project-isolated sandbox, while a\n // context-less call falls back to the tenant-level sandbox.\n const runConfig = {\n tenantId,\n ...(runContext?.workspaceId === undefined ? {} : { workspaceId: runContext.workspaceId }),\n ...(runContext?.projectId === undefined ? {} : { projectId: runContext.projectId }),\n };\n const result = await deps.catalog.getExecutor().invoke({\n manifest,\n handler: tool.handler,\n input: args,\n ...(runContext?.connection === undefined ? {} : { connection: runContext.connection }),\n ...(runContext?.connections === undefined ? {} : { connections: runContext.connections }),\n context: { tenantId, pluginType, tool: name },\n runConfig,\n timeoutMs: tool.timeoutMs,\n maxResultBytes: tool.maxResultBytes,\n });\n if (!result.ok) throw new Error(result.error ?? \"sandbox plugin execution failed\");\n return result.result === undefined ? handlerResultText(result) : result.result;\n}\n"],"mappings":";AAcA,SAAS,yBAAuD;AAMzD,IAAM,uBAAN,cAAmC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9C,YAAY,MAAc,YAAoB;AAC5C,UAAM,SAAS,IAAI,6BAA6B,UAAU,GAAG;AAP/D;AAAA,SAAS,OAAO;AAQd,SAAK,OAAO;AAAA,EACd;AACF;AA0DA,eAAsB,iBACpB,MACA,UACA,YACA,MACA,MACA,YACkB;AAClB,QAAM,WAAW,MAAM,KAAK,QAAQ,qBAAqB,UAAU,UAAU;AAC7E,MAAI,CAAC,SAAU,OAAM,IAAI,MAAM,WAAW,UAAU,6BAA6B;AACjF,QAAM,QAAQ,SAAS,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAC/D,MAAI,CAAC,KAAM,OAAM,IAAI,qBAAqB,MAAM,UAAU;AAI1D,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,GAAI,YAAY,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,WAAW,YAAY;AAAA,IACvF,GAAI,YAAY,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,WAAW,UAAU;AAAA,EACnF;AACA,QAAM,SAAS,MAAM,KAAK,QAAQ,YAAY,EAAE,OAAO;AAAA,IACrD;AAAA,IACA,SAAS,KAAK;AAAA,IACd,OAAO;AAAA,IACP,GAAI,YAAY,eAAe,SAAY,CAAC,IAAI,EAAE,YAAY,WAAW,WAAW;AAAA,IACpF,GAAI,YAAY,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,WAAW,YAAY;AAAA,IACvF,SAAS,EAAE,UAAU,YAAY,MAAM,KAAK;AAAA,IAC5C;AAAA,IACA,WAAW,KAAK;AAAA,IAChB,gBAAgB,KAAK;AAAA,EACvB,CAAC;AACD,MAAI,CAAC,OAAO,GAAI,OAAM,IAAI,MAAM,OAAO,SAAS,iCAAiC;AACjF,SAAO,OAAO,WAAW,SAAY,kBAAkB,MAAM,IAAI,OAAO;AAC1E;","names":[]}
@@ -1 +0,0 @@
1
- import{k as L}from"./embed-page-chunk-BOEX26H7.js";import"./embed-page-chunk-XFV3N2LD.js";import"./embed-page-chunk-FEMHLB6I.js";import"./embed-page-chunk-JFMBLJXY.js";import"./embed-page-chunk-NFMLKSPM.js";import"./embed-page-chunk-S2KVN3RB.js";import"./embed-page-chunk-S4XZPBRM.js";import"./embed-page-chunk-EYYKNTX7.js";import{T as E,h as P}from"./embed-page-chunk-N66H4DNH.js";import"./embed-page-chunk-BANVRQT7.js";import{a as F}from"./embed-page-chunk-436REIWY.js";import{s as T}from"./embed-page-chunk-37LGEEJU.js";import{a as C}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-SRMYHWL3.js";import{U as p,W as m,oa as b,ua as I,wa as c}from"./embed-page-chunk-4W34QOXT.js";import{a as N}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as u}from"./embed-page-chunk-QBTAJ2YI.js";var n=u(N());var t=u(C()),O={component_key:"workspace_assistants",data:{}},$=d=>{let i=d;if(typeof d=="string")try{i=JSON.parse(d)}catch{return{}}return i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{}},W=({data:d})=>{let{assistantId:i,initialTab:R}=d??{},{get:f,put:y,del:A}=F(),e=T(),v=P(),[g,w]=(0,n.useState)(null),[B,h]=(0,n.useState)([]),[_,S]=(0,n.useState)(!1),[j,k]=(0,n.useState)(null),l=(0,n.useCallback)(()=>{v({...O,message:e("governance.detail.listCardMessage")})},[v,e]),o=(0,n.useCallback)(async()=>{S(!0),k(null);try{let s=(await f("/api/assistants")).data?.records??[];h(s),w(s.find(r=>r.id===i)??null)}catch{k(e("governance.detail.loadFailed"))}finally{S(!1)}},[f,i,e]);(0,n.useEffect)(()=>{i&&o()},[o,i]);let x=(0,n.useCallback)(async(a,s)=>{let r=$(a.graphDefinition),D;try{D=await y(`/api/assistants/${a.id}`,{name:s.name!==void 0?s.name:a.name,description:s.description!==void 0?s.description:a.description,graphDefinition:{...r,...s}})}catch(G){throw c.error(e("governance.detail.saveFailed")),G}if(!D.success)throw c.error(e("governance.detail.saveFailed")),new Error("Failed to save agent");c.success(e("common.saved")),await o()},[y,o,e]),z=(0,n.useCallback)(a=>{w(s=>s&&s.id===a.id?a:s),h(s=>s.map(r=>r.id===a.id?a:r))},[]),U=(0,n.useCallback)(async a=>{if(!(await A(`/api/assistants/${a}`)).success)throw new Error("Failed to delete agent");c.success(e("governance.detail.deleted")),l()},[A,l,e]);return i?g?(0,t.jsx)("div",{style:{height:"100%",overflow:"auto"},children:(0,t.jsx)(E,{children:(0,t.jsx)(L,{assistant:g,allAssistants:B,onBack:l,onDeleted:U,onSave:x,onAssistantUpdated:z,onAgentListInvalidated:()=>void o(),initialTab:R})},g.id)}):_?(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,t.jsx)(I,{})}):j?(0,t.jsx)("div",{style:{padding:24},children:(0,t.jsx)(p,{type:"error",showIcon:!0,message:e("governance.detail.loadFailed"),"data-testid":"detail-error",action:(0,t.jsxs)(b,{children:[(0,t.jsx)(m,{size:"small",onClick:()=>void o(),children:e("common.retry")}),(0,t.jsx)(m,{size:"small",type:"primary",onClick:l,children:e("governance.detail.backToList")})]})})}):(0,t.jsx)("div",{style:{padding:24},children:(0,t.jsx)(p,{type:"warning",showIcon:!0,message:e("governance.detail.notFound"),"data-testid":"detail-not-found",action:(0,t.jsx)(m,{size:"small",type:"primary",onClick:l,children:e("governance.detail.backToList")})})}):(0,t.jsx)("div",{style:{padding:24},children:(0,t.jsx)(p,{type:"warning",showIcon:!0,message:e("governance.detail.missingId"),"data-testid":"detail-missing-id"})})};export{W as AgentDetailSideApp};
@@ -1 +0,0 @@
1
- import{a as Ie,b as De,c as kt,d as xt,e as wt,f as Tt,g as It,h as St,i as Ft,j as Rt,k as Dt}from"./embed-page-chunk-BOEX26H7.js";import{a as Ve}from"./embed-page-chunk-XFV3N2LD.js";import"./embed-page-chunk-FEMHLB6I.js";import"./embed-page-chunk-JFMBLJXY.js";import"./embed-page-chunk-NFMLKSPM.js";import{b as Oe,e as _e,f as ft,g as yt,h as ht,i as Ct,l as At,m as bt}from"./embed-page-chunk-S2KVN3RB.js";import{a as ct,b as dt,c as gt,d as pt,e as mt}from"./embed-page-chunk-SV2BM3WO.js";import"./embed-page-chunk-S4XZPBRM.js";import"./embed-page-chunk-EYYKNTX7.js";import{T as vt,e as lt,h as ut,r as Ne}from"./embed-page-chunk-N66H4DNH.js";import{B as et,Ia as st,N as tt,R as nt,Xa as rt,_ as at,la as ot,m as Te,ra as it}from"./embed-page-chunk-BANVRQT7.js";import{a as me}from"./embed-page-chunk-436REIWY.js";import{s as z,z as Ze}from"./embed-page-chunk-37LGEEJU.js";import{a as E}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-SRMYHWL3.js";import{Da as $e,Ga as we,Ha as We,Ia as X,Ra as Ye,W,Yb as Re,_ as xe,aa as je,ea as Fe,ic as Qe,ka as Be,la as Ue,ma as qe,oa as He,ra as D,ta as _,tc as Xe,va as Le,wa as w,xa as pe,zb as Je}from"./embed-page-chunk-4W34QOXT.js";import{a as ge}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as I}from"./embed-page-chunk-QBTAJ2YI.js";var h=I(ge());var te=I(ge());var Z=I(ge());var Pt=I(ge());var se=I(E()),Mt=60,Et=72,Ge=(0,Pt.memo)(({data:i})=>{let l=Ie(i.type),f=Math.min(12+Math.sqrt(i.subAgentCount)*10,48);return(0,se.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,se.jsx)(_e,{type:"target",position:Oe.Top,style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",background:"transparent",border:"none",width:0,height:0},isConnectable:!1}),(0,se.jsx)("div",{title:i.label,style:{width:f,height:f,borderRadius:"50%",background:De(l.color),display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:Math.max(10,f*.4),fontWeight:600,cursor:"pointer",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"},children:i.label.charAt(0).toUpperCase()}),(0,se.jsx)("div",{style:{fontSize:11,maxWidth:120,textAlign:"center",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:4},children:i.label}),(0,se.jsx)(_e,{type:"source",position:Oe.Top,style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",background:"transparent",border:"none",width:0,height:0},isConnectable:!1})]})});Ge.displayName="AgentGraphNode";var ee=I(E()),en=({assistants:i,onNodeClick:l})=>{let[f,c,u]=ht([]),[o,t,C]=Ct([]),[r,m]=(0,Z.useState)(null),S=(0,Z.useMemo)(()=>({agent:Ge}),[]),M=(0,Z.useMemo)(()=>wt(i),[i]);(0,Z.useEffect)(()=>{let k=M.nodes.map(g=>({id:g.id})),R=M.edges.map(g=>({source:g.source,target:g.target})),P=new Map(M.nodes.map(g=>[g.id,g])),$=pt(k).force("link",gt(R).id(g=>g.id).distance(80)).force("charge",mt().strength(-220)).force("center",ct(0,0)).force("collide",dt(45)).stop();for(let g=0;g<300;g++)$.tick();let j=k.map(g=>({id:g.id,type:"agent",data:P.get(g.id),position:{x:g.x-Mt/2,y:g.y-Et/2}})),a=M.edges.map(g=>({id:`e${g.source}-${g.target}`,source:g.source,target:g.target,style:{stroke:"#1677ff",strokeWidth:2},type:"straight"}));c(j),t(a)},[M,c,t]);let H=(0,Z.useMemo)(()=>r===null?f:f.map(k=>{let R=k.id===r||o.some(P=>P.source===r&&P.target===k.id||P.target===r&&P.source===k.id);return{...k,style:{opacity:R?1:.2,transition:"opacity 0.2s ease"}}}),[f,o,r]),d=(0,Z.useMemo)(()=>r===null?o.map(k=>({...k,style:{stroke:"#1677ff",strokeWidth:1.5,opacity:.25,transition:"opacity 0.2s ease"}})):o.map(k=>{let R=k.source===r||k.target===r;return{...k,style:{stroke:"#1677ff",strokeWidth:R?2.5:1,opacity:R?1:.04,transition:"opacity 0.2s ease"}}}),[o,r]);return(0,ee.jsx)("div",{style:{width:"100%",height:"100%",background:"#fafafa",position:"relative"},children:(0,ee.jsxs)(yt,{nodes:H,edges:d,onNodesChange:u,onEdgesChange:C,onNodeMouseEnter:(k,R)=>m(R.id),onNodeMouseLeave:()=>m(null),onNodeClick:(k,R)=>l?.(String(R.id)),nodeTypes:S,fitView:!0,fitViewOptions:{padding:.25},children:[(0,ee.jsx)(At,{color:"#eee",gap:20}),(0,ee.jsx)(bt,{})]})})},Kt=i=>(0,ee.jsx)(ft,{children:(0,ee.jsx)(en,{...i})});var T=I(E()),tn=[{key:"all",labelKey:"governance.list.tab.all"},{key:"capability",labelKey:"governance.list.tab.capability"},{key:"orchestrator",labelKey:"governance.list.tab.orchestrator"},{key:"workflow",labelKey:"governance.list.tab.workflow"}],Bt=({items:i,assistants:l=[],loading:f,onItemClick:c,onOpenPlayground:u,onOpenEval:o,onCreate:t,onDelete:C})=>{let r=z(),[m,S]=(0,te.useState)("all"),[M,H]=(0,te.useState)(null),[d,k]=(0,te.useState)(null),R=(0,te.useMemo)(()=>{let a=new Set;return i.forEach(g=>g.tags.forEach(U=>a.add(U))),Array.from(a).map(g=>({value:g,label:g}))},[i]),P=(0,te.useMemo)(()=>i.filter(a=>!(m!=="all"&&a.type!==m||M&&!a.tags.includes(M)||d&&a.status!==d)),[i,m,M,d]),$=[{key:"edit",icon:it,label:r("common.edit"),onClick:a=>c(a.id)},{key:"playground",icon:et,label:r("governance.list.action.playground"),onClick:a=>u(a.id)},{key:"eval",icon:nt,label:r("governance.list.action.eval"),onClick:a=>o(a.id)}];C&&$.push({key:"delete",icon:st,label:r("common.delete"),danger:!0,onClick:a=>C(a.id)});let j=(0,te.useMemo)(()=>[{mode:"graph",icon:ot,label:r("governance.list.viewMode.graph"),render:()=>(0,T.jsx)(Kt,{assistants:l,onNodeClick:c})}],[l,c,r]);return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("span",{"data-testid":"agent-list-state","data-loading":String(f),"data-count":P.length,hidden:!0,"aria-hidden":"true"}),(0,T.jsx)(lt,{title:r("governance.list.title"),itemName:"common.item.agent",items:P,loading:f,keyExtractor:a=>a.id,tabs:tn.map(a=>({key:a.key,label:r(a.labelKey)})),activeTab:m,onTabChange:a=>S(a),headerLeft:(0,T.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,T.jsx)(Ne,{value:M,onChange:H,options:R,placeholder:r("governance.list.filter.domain"),allLabel:r("governance.list.filter.allDomains")}),(0,T.jsx)(Ne,{value:d,onChange:k,options:[{value:"enabled",label:r("governance.list.status.enabled")},{value:"draft",label:r("governance.list.status.draft")},{value:"disabled",label:r("governance.list.status.disabled")}],placeholder:r("governance.list.filter.status"),allLabel:r("governance.list.filter.allStatuses")})]}),renderIcon:a=>{let g=De(Ie(a.type).color);return(0,T.jsx)("div",{title:r("governance.list.typeIconTitle",{type:a.type}),style:{width:32,height:32,borderRadius:8,background:`${g}1A`,color:g,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,T.jsx)(Te,{size:18})})},renderPrimary:a=>(0,T.jsx)("span",{"data-testid":"agent-name","data-agent-id":a.id,children:a.name}),renderSecondary:a=>a.description||void 0,renderDetails:a=>(0,T.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:8,flexWrap:"wrap"},children:[(0,T.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap",alignItems:"center"},children:[a.tags.map(g=>(0,T.jsx)(we,{color:"magenta",style:{margin:0,borderRadius:10,border:"none"},children:g},g)),(0,T.jsx)(we,{color:Ie(a.type).color,style:{margin:0,borderRadius:10,border:"none"},children:a.type})]}),(0,T.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexShrink:0},children:[(0,T.jsx)(je,{title:r("governance.list.statusTooltip",{status:a.status}),children:(0,T.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:kt(a.status),display:"inline-block",cursor:"help"}})}),(0,T.jsx)("span",{style:{fontSize:12,color:"#8c8c8c"},children:a.version})]})]}),itemActions:$,actionsStyle:"icon",actionsPosition:"hover",onItemClick:a=>c(a.id),createLabel:r("governance.list.create"),onCreateClick:t,viewModeExtensions:j,emptyIcon:(0,T.jsx)(Te,{size:48,style:{opacity:.5}}),emptyTitle:r("governance.list.emptyTitle"),emptyDescription:r("governance.list.emptyDescription")})]})};var A=I(ge());var re=I(ge());var ue=I(E()),{Text:nn}=X,Lt=({onSelect:i,value:l,placeholder:f})=>{let c=z(),u=f??c("chatConfig.parentAgent.selectPlaceholder"),[o,t]=(0,re.useState)([]),[C,r]=(0,re.useState)(!1),{get:m}=me(),S=(0,re.useCallback)(async()=>{r(!0);try{let d=await m("/api/assistants");d.success&&t(d.data?.records||[])}catch(d){console.error("Failed to fetch assistants:",d)}finally{r(!1)}},[m]);return(0,re.useEffect)(()=>{S()},[S]),(0,ue.jsx)(xe,{showSearch:!0,allowClear:!0,value:l,placeholder:u,loading:C,onChange:d=>{if(!d){i(null);return}let k=o.find(R=>R.id===d);i(k||null)},onDropdownVisibleChange:d=>{d&&S()},optionFilterProp:"label",style:{width:"100%"},options:o.map(d=>({value:d.id,label:d.name||d.id,description:d.description})),optionRender:d=>(0,ue.jsxs)("div",{children:[(0,ue.jsx)("div",{children:d.label}),d.data.description&&(0,ue.jsx)(nn,{type:"secondary",style:{fontSize:12},children:d.data.description})]})})};var L=I(E()),{Text:Nt}=X,Ot=({subAgentKeys:i,decisions:l,onChange:f})=>{let{token:c}=We.useToken(),u=z(),o=(C,r)=>{let m=l.map(S=>S.originalKey===C?{...S,clone:r,cloneKey:r?`${C}_clone`:void 0}:S);f(m)},t=(C,r)=>{let m=l.map(S=>S.originalKey===C?{...S,cloneKey:r}:S);f(m)};return i.length===0?null:(0,L.jsxs)("div",{children:[(0,L.jsx)(Nt,{type:"secondary",style:{display:"block",marginBottom:8},children:u("chatConfig.subAgentInherit.hint")}),(0,L.jsx)(Le,{size:"small",bordered:!0,dataSource:l,style:{borderRadius:c.borderRadius},renderItem:C=>(0,L.jsxs)(Le.Item,{style:{display:"flex",flexDirection:"column",alignItems:"stretch",gap:8,padding:"8px 16px"},children:[(0,L.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,L.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[C.clone?(0,L.jsx)(Re,{style:{color:c.colorPrimary}}):(0,L.jsx)(Qe,{style:{color:c.colorTextSecondary}}),(0,L.jsx)(Nt,{style:{fontFamily:"monospace"},children:C.originalKey})]}),(0,L.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,L.jsx)(we,{color:C.clone?"blue":"default",children:C.clone?u("chatConfig.subAgentInherit.clone"):u("chatConfig.subAgentInherit.reuse")}),(0,L.jsx)($e,{size:"small",checked:C.clone,onChange:r=>o(C.originalKey,r)})]})]}),C.clone&&(0,L.jsx)(_,{size:"small",placeholder:u("chatConfig.subAgentInherit.cloneKeyPlaceholder"),value:C.cloneKey,onChange:r=>t(C.originalKey,r.target.value),style:{fontFamily:"monospace",fontSize:12},addonBefore:u("chatConfig.keyValue.key")})]})})]})};function _t(i,l){return i.mode!=="local"||i.templateKey||typeof i.executable=="string"&&i.executable.trim().length>0?null:l?l("chat.config.executableRequired"):"Choose a template or enter a custom executable"}var n=I(E()),{TextArea:Vt}=_,{Text:ne}=X,Gt="/.well-known/agent-card.json",an=[{value:"http://",label:"http://"},{value:"https://",label:"https://"}],on={react:"chatConfig.createAssistant.typeDesc.react",deep_agent:"chatConfig.createAssistant.typeDesc.deepAgent",processing:"chatConfig.createAssistant.typeDesc.processing",a2a_remote:"chatConfig.createAssistant.typeDesc.a2aRemote"};function zt(i,l,f="https://"){let c=String(i??"").trim();if(!c)return"";let u=l==="http://"||l==="https://"?l:f,t=(/^https?:\/\//i.test(c)?c:`${u}${c.replace(/^\/+/,"")}`).replace(/\/+$/,"");return t.endsWith(Gt)?t:`${t}${Gt}`}function sn(i){try{return new URL(i).port||void 0}catch{return}}function rn(i){return i.some(l=>l==="--port"||l==="-p"||/^--port=/.test(l)||/^-p=/.test(l))}function jt(i,l){let f=[...i.args],c=sn(l);return c&&!rn(f)&&f.push("--port",c),{...i,args:f,...i.env?{env:{...i.env}}:{}}}var Ut=({open:i,onCancel:l,onSuccess:f,initialMode:c,initialValues:u})=>{let[o]=D.useForm(),t=z(),[C,r]=(0,A.useState)(!1),[m,S]=(0,A.useState)("learn"),[M,H]=(0,A.useState)(""),[d,k]=(0,A.useState)(null),[R,P]=(0,A.useState)([]),$=D.useWatch("type",o)||"react",j=$==="a2a_remote",[a,g]=(0,A.useState)("remote"),[U,fe]=(0,A.useState)(void 0),[le,ye]=(0,A.useState)([]),[Se,ce]=(0,A.useState)(!1),ae=(0,A.useRef)(0),[oe,ie]=(0,A.useState)(!1),[Pe,Y]=(0,A.useState)(!1),{get:N,post:J,put:he}=me(),Me=Ze("agent-architect"),{workspaceId:Ce,trainingProjects:Q,loading:de}=rt(),[Ee,Ae]=(0,A.useState)(null),Ke=JSON.stringify(u??null),K=Q.find(e=>e.id===Ee)??Q[0]??null,[be,ve]=(0,A.useState)([]),p=(0,A.useCallback)(()=>{k(null),P([])},[]),b=(0,A.useCallback)(()=>{o.resetFields(),p(),S("learn"),H(""),ve([]),Ae(null),g("remote"),fe(void 0),ye([]),Y(!1),ie(!1)},[o,p]);(0,A.useEffect)(()=>{if(i){b(),S(c??"learn");let e=u?.a2aMode;(e==="remote"||e==="local")&&g(e),o.setFieldsValue({type:"react",agentCardProtocol:"https://",a2aMode:"remote",timeout:3e5,...u})}},[i,o,c,Ke,b]),(0,A.useEffect)(()=>{let e=++ae.current,s=!0;return i&&j?(o.setFieldValue("prompt",""),a==="local"?(ce(!0),N("/api/local-a2a/templates").then(v=>{s&&e===ae.current&&v?.data?.records&&ye(v.data.records)}).catch(()=>{s&&e===ae.current&&ye([])}).finally(()=>{s&&e===ae.current&&ce(!1)})):ce(!1)):ce(!1),()=>{s=!1,ae.current+=1}},[o,j,a,N,i]);let x=le.find(e=>e.key===U),q=(0,A.useCallback)(()=>{let e=_t({mode:a,templateKey:U,executable:o.getFieldValue("commandExecutable")},t);return e?(Y(!0),o.setFields([{name:"commandExecutable",errors:[e]}]),w.warning(e),!1):!0},[a,U,o,t]);(0,A.useEffect)(()=>{x&&o.setFieldsValue({agentCardProtocol:"http://"})},[o,x]);let ke=(0,A.useCallback)(async()=>{if(!q())return;let e=zt(o.getFieldValue("agentCardUrl"),o.getFieldValue("agentCardProtocol"),a==="local"?"http://":"https://");if(!e){w.warning(t("chatConfig.createAssistant.a2aUrlWarning"));return}ie(!0);try{let s={agentCardUrl:e,apiKey:o.getFieldValue("apiKey")};if(a==="local"){let y=x;if(y)s.localRuntime={label:o.getFieldValue("name")||void 0,agentCardUrl:e,command:jt(y.command,e)};else{let B=o.getFieldValue("commandArgs")||"",G=B?B.split(/\s+/).filter(Boolean):[],F=String(o.getFieldValue(["command","cwd"])||"").trim();s.localRuntime={label:o.getFieldValue("name")||void 0,agentCardUrl:e,command:{executable:String(o.getFieldValue("commandExecutable")||"").trim(),args:G,...F?{cwd:F}:{}}}}}let v=await J("/api/a2a/test-connection",s);if(v.data?.reachable){let y=v.data.agentCard;w.success(t("chatConfig.createAssistant.connectedTo",{name:v.data.agentName||e}))}else w.error(v.data?.error||t("chatConfig.createAssistant.connectionFailed"))}catch{w.error(t("chatConfig.createAssistant.connectionTestFailed"))}finally{ie(!1)}},[o,J,a,x,q,t]),$t=(0,A.useCallback)(e=>{if(k(e),!e){o.resetFields(["key","name","description","type","prompt"]),P([]);return}let s=typeof e.graphDefinition=="object"&&e.graphDefinition!==null?e.graphDefinition:{},v=s.key||e.id,y=e.name||s.name||"";o.setFieldsValue({key:`${v}_ext`,name:y?`${y} (Extended)`:"",description:e.description||s.description||"",type:s.type||"react",prompt:s.prompt||""});let B=s.subAgents||[];P(B.map(G=>({originalKey:G,clone:!1})))},[o]),Wt=async(e,s)=>{let v=await N(`/api/assistants/${e}`);if(!v.success)throw new Error(t("chatConfig.createAssistant.cloneFetchFailed",{key:e}));let y=v.data,B=typeof y.graphDefinition=="object"?y.graphDefinition:{},G={id:s,name:`${y.name} (Clone)`,description:y.description||"",graphDefinition:{...B,key:s,name:`${y.name} (Clone)`}},F=await J("/api/assistants",G);if(!F.success)throw new Error(F.message||t("chatConfig.createAssistant.cloneFailed",{key:e}));return F.data},Zt=e=>{let s={id:e.key,name:e.name,description:e.description||"",graphDefinition:{key:e.key,name:e.name,description:e.description||"",type:e.type,prompt:e.prompt||"",tools:[],skills:[],subAgents:e.type==="deep_agent"||e.type==="processing"?[]:void 0,middleware:[]}};if(e.type==="a2a_remote"&&(s.graphDefinition.agentCardUrl=zt(e.agentCardUrl,e.agentCardProtocol,(e.a2aMode||a)==="local"?"http://":"https://"),e.apiKey&&(s.graphDefinition.apiKey=e.apiKey),e.timeout&&(s.graphDefinition.timeout=e.timeout),(e.a2aMode||a)==="local")){let v=x;if(v)s.graphDefinition.localRuntime={label:e.name||void 0,agentCardUrl:s.graphDefinition.agentCardUrl,command:jt(v.command,s.graphDefinition.agentCardUrl)};else{let y=e.commandArgs||"",B=y?y.split(/\s+/).filter(Boolean):[],G=String(e.command?.cwd||"").trim();s.graphDefinition.localRuntime={label:e.name||void 0,agentCardUrl:s.graphDefinition.agentCardUrl,command:{executable:String(e.commandExecutable||"").trim(),args:B,...G?{cwd:G}:{}}}}}return s},Yt=async(e,s)=>{if(!d)throw new Error(t("chatConfig.createAssistant.noParentAgent"));let v=R.filter(F=>F.clone);for(let F of v){if(!F.cloneKey||!F.cloneKey.trim())throw new Error(t("chatConfig.createAssistant.cloneKeyRequired",{key:F.originalKey}));if(!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(F.cloneKey))throw new Error(t("chatConfig.createAssistant.cloneKeyInvalid",{key:F.cloneKey,originalKey:F.originalKey}))}let y=[];for(let F of R)if(F.clone){let Xt=await Wt(F.originalKey,F.cloneKey);s.push(Xt),y.push(F.cloneKey)}else y.push(F.originalKey);let B=typeof d.graphDefinition=="object"?d.graphDefinition:{},G={key:e.key,name:e.name,description:e.description||"",extendsAgent:d.id,type:e.type||B.type};return e.prompt&&e.prompt!==B.prompt&&(G.prompt=e.prompt),(y.length>0||B.subAgents&&B.subAgents.length>0)&&(G.subAgents=y),{id:e.key,name:e.name,description:e.description||"",graphDefinition:G}},Jt=async()=>{if(m==="learn"){let e=M.trim();if(!e){w.error(t("chatConfig.createAssistant.trainingGoalRequired"));return}if(!K){w.error(t("chatConfig.createAssistant.noTrainingProject"));return}r(!0);try{let s=`agent-${It(e+Date.now())}`,v=await J("/api/assistants",{id:s,name:s,graphDefinition:{key:s,name:s,description:"",type:"react",prompt:"To be trained",metadata:{trainingProjectId:K.id,learningPlaceholder:"true",architectureStatus:"undecided"}}});if(!v.data)throw new Error(t("chatConfig.createAssistant.agentCreateFailed"));let{roundTaskId:y}=await Ft({goal:e,targetAgentId:s,workspaceId:Ce??void 0,projectId:K.id,existingThreadId:St(Me.tenantId,s),files:be,post:J,put:he});w.success(t("chatConfig.createAssistant.agentCreated")),H(""),ve([]),S("learn"),f?.(v.data,{initialMessage:Rt({goal:e,roundTaskId:y,targetAgentId:s,targetMode:"placeholder",files:be,projectId:K.id,workspaceId:K.workspaceId??Ce??void 0}),projectId:K.id,initialMessageCustomRunConfig:{execution:{taskId:y}}}),l()}catch(s){w.error(s instanceof Error?s.message:t("chatConfig.createAssistant.agentCreateFailed"))}finally{r(!1)}return}try{if(m==="scratch"&&j&&!q())return;let e=await o.validateFields();r(!0);let s=[],v=m==="scratch"?Zt(e):await Yt(e,s),y=await J("/api/assistants",v);if(y.success){w.success(m==="extend"?t("chatConfig.createAssistant.createdByExtending",{name:d?.name??""}):t("chatConfig.createAssistant.created")),b();for(let B of s)f?.(B);f?.(y.data),l()}else w.error(y.message||t("chatConfig.createAssistant.createFailed"))}catch(e){if(e?.errorFields){let s={key:t("chatConfig.createAssistant.field.key"),name:t("chatConfig.createAssistant.field.name"),description:t("chatConfig.createAssistant.field.description"),prompt:t("chatConfig.createAssistant.field.systemPrompt")},v=e.errorFields.map(y=>s[String((y.name??[])[0])]??String((y.name??[])[0])).filter(Boolean);w.warning(v.length>0?t("chatConfig.createAssistant.requiredFields",{fields:[...new Set(v)].join(", ")}):t("chatConfig.createAssistant.requiredFieldsGeneric"));return}w.error(e.message||t("chatConfig.createAssistant.createError"))}finally{r(!1)}},ze=d?.graphDefinition?.subAgents||[],Qt=m==="extend"&&d&&ze.length>0;return(0,n.jsxs)(pe,{title:t("chatConfig.createAssistant.title"),open:i,onCancel:()=>{b(),l()},footer:[(0,n.jsx)(W,{onClick:()=>{b(),l()},children:t("common.cancel")},"cancel"),(0,n.jsx)(W,{type:"primary",icon:m==="extend"?(0,n.jsx)(Re,{}):m==="learn"?(0,n.jsx)(Je,{}):(0,n.jsx)(Xe,{}),loading:C,disabled:m==="learn"&&(de||!K),onClick:Jt,children:t(m==="extend"?"chatConfig.createAssistant.createExtend":m==="learn"?"chatConfig.createAssistant.startLearning":"common.create")},"submit")],width:760,children:[m==="extend"&&(0,n.jsxs)("div",{style:{marginBottom:20},children:[(0,n.jsx)(ne,{type:"secondary",style:{display:"block",marginBottom:8},children:t("chatConfig.createAssistant.parentAgent")}),(0,n.jsx)(Lt,{value:d?.id,onSelect:$t}),d&&(0,n.jsx)(ne,{type:"secondary",style:{display:"block",marginTop:4,fontSize:12},children:t("chatConfig.createAssistant.inheritHint")})]}),m==="extend"&&d&&(0,n.jsx)(Be,{style:{margin:"12px 0"}}),m==="learn"&&(0,n.jsxs)("div",{children:[(0,n.jsx)(ne,{style:{display:"block",marginBottom:8},children:t("chatConfig.createAssistant.learnHint")}),(0,n.jsx)(_.TextArea,{rows:3,value:M,onChange:e=>H(e.target.value),placeholder:"e.g. Handle price disputes using the price protection policy"}),K&&(0,n.jsxs)("div",{style:{marginTop:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:8},children:[(0,n.jsx)(ne,{type:"secondary",children:t("chatConfig.createAssistant.referenceFiles")}),(0,n.jsx)(Ve,{project:K,projects:Q,value:K?.id??null,onChange:Ae,loading:de})]}),(0,n.jsx)(Tt,{projectId:K.id,value:be,onChange:ve}),(0,n.jsx)(ne,{type:"secondary",style:{display:"block",marginTop:6,fontSize:12},children:t("chatConfig.createAssistant.referenceFilesHint")})]}),!K&&!de&&(0,n.jsx)("div",{style:{marginTop:12},children:(0,n.jsx)(Ve,{project:K,projects:Q,value:null,onChange:Ae,loading:de})})]}),m!=="learn"&&(0,n.jsxs)(D,{form:o,layout:"vertical",autoComplete:"off",initialValues:{type:"react",agentCardProtocol:"https://",a2aMode:"remote"},children:[(0,n.jsx)(D.Item,{name:"key",label:t("chatConfig.createAssistant.field.key"),rules:[{required:!0,message:t("chatConfig.createAssistant.validation.keyRequired")},{pattern:/^[a-zA-Z][a-zA-Z0-9_-]*$/,message:t("chatConfig.createAssistant.validation.keyPattern")}],style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g., my_assistant"})}),(0,n.jsx)(D.Item,{name:"name",label:t("chatConfig.createAssistant.field.name"),rules:[{required:!0,message:t("chatConfig.createAssistant.validation.nameRequired")}],style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g., My Assistant"})}),(0,n.jsx)(D.Item,{name:"description",label:t("chatConfig.createAssistant.field.description"),rules:[{required:!0,message:t("chatConfig.createAssistant.validation.descriptionRequired")}],style:{marginBottom:16},children:(0,n.jsx)(Vt,{placeholder:t("chatConfig.createAssistant.descriptionPlaceholder"),autoSize:{minRows:2,maxRows:4}})}),(0,n.jsx)(D.Item,{name:"type",label:t("chatConfig.createAssistant.field.agentType"),rules:[{required:!0}],style:{marginBottom:16},children:(0,n.jsx)(Ue,{options:[{value:"react",label:t("chatConfig.agentType.executor")},{value:"deep_agent",label:t("chatConfig.agentType.orchestrator")},{value:"processing",label:t("chatConfig.agentType.workflow")},{value:"a2a_remote",label:t("chatConfig.agentType.a2aRemote")}],block:!0})}),(0,n.jsx)(ne,{type:"secondary",style:{fontSize:12,display:"block",marginTop:-12,marginBottom:16,lineHeight:1.5},children:t(on[$]??"chatConfig.createAssistant.typeDesc.react")}),j&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D.Item,{label:t("chatConfig.createAssistant.field.connectionMode"),style:{marginBottom:16},children:(0,n.jsxs)(Fe.Group,{value:a,onChange:e=>{let s=e.target.value;g(s),o.setFieldValue("a2aMode",s),s==="local"&&o.setFieldValue("agentCardProtocol","http://"),fe(void 0)},optionType:"button",buttonStyle:"solid",children:[(0,n.jsx)(Fe.Button,{value:"remote",children:t("chatConfig.createAssistant.mode.remoteUrl")}),(0,n.jsx)(Fe.Button,{value:"local",children:t("chatConfig.createAssistant.mode.localManaged")})]})}),(0,n.jsx)(D.Item,{name:"a2aMode",noStyle:!0,hidden:!0,children:(0,n.jsx)(_,{})}),a==="local"&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D.Item,{label:t("chatConfig.createAssistant.field.template"),style:{marginBottom:16},children:(0,n.jsx)(xe,{placeholder:t("chatConfig.createAssistant.templatePlaceholder"),allowClear:!0,loading:Se,value:U,onChange:e=>{fe(e),e&&Y(!1)},options:le.map(e=>({value:e.key,label:e.name||e.key})),notFoundContent:Se?void 0:(0,n.jsx)(ne,{type:"secondary",style:{padding:8,display:"block"},children:t("chatConfig.createAssistant.noTemplates")})})}),!U&&(0,n.jsx)(n.Fragment,{children:Pe?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D.Item,{name:"commandExecutable",label:t("chatConfig.createAssistant.field.executable"),rules:[{required:!0,whitespace:!0,message:t("chatConfig.createAssistant.validation.executableRequired")}],style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g. node, opencode, /usr/local/bin/my-server"})}),(0,n.jsx)(D.Item,{name:"commandArgs",label:t("chatConfig.createAssistant.field.arguments"),style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g. --serve --port 4301"})}),(0,n.jsx)(D.Item,{name:["command","cwd"],label:t("chatConfig.createAssistant.field.workingDirectory"),style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g. /Users/me/project"})}),(0,n.jsx)(W,{type:"link",onClick:()=>{Y(!1),o.setFieldsValue({commandExecutable:"",commandArgs:"",command:{cwd:void 0}})},style:{padding:0,marginBottom:16,display:"block"},children:t("chatConfig.createAssistant.hideCustomCommand")})]}):(0,n.jsx)(W,{type:"link",onClick:()=>Y(!0),style:{padding:0,marginBottom:16,display:"block"},children:t("chatConfig.createAssistant.customCommand")})})]}),(0,n.jsx)(D.Item,{label:t("chatConfig.createAssistant.field.agentCardUrl"),required:!0,style:{marginBottom:16},children:(0,n.jsxs)(He.Compact,{style:{width:"100%"},children:[(0,n.jsx)(D.Item,{name:"agentCardProtocol",noStyle:!0,children:(0,n.jsx)(xe,{style:{width:100},options:an})}),(0,n.jsx)(D.Item,{name:"agentCardUrl",noStyle:!0,rules:[{required:!0,message:t("chatConfig.createAssistant.validation.urlRequired")}],children:(0,n.jsx)(_,{placeholder:a==="local"?"localhost:4301":"host:port or full URL"})}),(0,n.jsx)(W,{icon:(0,n.jsx)(Ye,{}),onClick:ke,loading:oe,children:t("chatConfig.connection.action.test")})]})}),a==="remote"&&(0,n.jsx)(D.Item,{name:"apiKey",label:t("chatConfig.createAssistant.field.apiKeyOptional"),style:{marginBottom:16},children:(0,n.jsx)(_.Password,{placeholder:t("chatConfig.createAssistant.apiKeyPlaceholder")})}),(0,n.jsx)(D.Item,{name:"timeout",label:t("chatConfig.createAssistant.field.timeout"),style:{marginBottom:16},initialValue:3e5,children:(0,n.jsx)(qe,{min:1e3,max:36e5,style:{width:"100%"},placeholder:"300000"})})]}),!j&&(0,n.jsx)(D.Item,{name:"prompt",label:t(m==="extend"&&d?"chatConfig.createAssistant.field.systemPromptInherit":"chatConfig.createAssistant.field.systemPrompt"),rules:m==="scratch"?[{required:!0,message:t("chatConfig.createAssistant.validation.systemPromptRequired")}]:[],children:(0,n.jsx)(Vt,{placeholder:t(m==="extend"&&d?"chatConfig.createAssistant.systemPromptInheritPlaceholder":"chatConfig.createAssistant.systemPromptPlaceholder"),autoSize:{minRows:4,maxRows:8},style:{fontFamily:"monospace",fontSize:13,lineHeight:1.6}})})]}),Qt&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(Be,{style:{margin:"12px 0"}}),(0,n.jsx)(ne,{strong:!0,style:{display:"block",marginBottom:8},children:t("chatConfig.createAssistant.subAgents")}),(0,n.jsx)(Ot,{subAgentKeys:ze,decisions:R,onChange:P})]})]})};var O=I(E()),{Paragraph:ln,Text:qt}=X,cn=[{key:"manual",icon:Te,titleKey:"governance.creation.manual.title",descriptionKey:"governance.creation.manual.description"},{key:"external",icon:tt,titleKey:"governance.creation.external.title",descriptionKey:"governance.creation.external.description"},{key:"learn",icon:at,titleKey:"governance.creation.learn.title",descriptionKey:"governance.creation.learn.description"}],Ht=({open:i,onCancel:l,onSelectMethod:f,focusTriggerAfterClose:c=!0})=>{let u=z();return(0,O.jsx)(pe,{title:u("governance.creation.title"),open:i,onCancel:l,footer:null,width:560,centered:!0,destroyOnHidden:!0,focusTriggerAfterClose:c,children:(0,O.jsxs)("div",{style:{padding:"8px 4px 4px"},children:[(0,O.jsx)(ln,{style:{color:"#595959",fontSize:15,margin:"8px 0 24px"},children:u("governance.creation.subtitle")}),(0,O.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:cn.map(o=>{let t=o.icon,C=u(o.titleKey);return(0,O.jsxs)(W,{type:"default",onClick:()=>f(o.key),"aria-label":C,style:{display:"flex",flexDirection:"row",alignItems:"center",gap:16,width:"100%",minHeight:88,height:"auto",padding:16,borderRadius:16,textAlign:"left",whiteSpace:"normal"},children:[(0,O.jsx)("div",{style:{width:40,height:40,borderRadius:12,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,color:"#6366f1",background:"#eeeeff"},children:(0,O.jsx)(t,{size:19})}),(0,O.jsxs)("div",{style:{minWidth:0},children:[(0,O.jsx)(qt,{strong:!0,style:{display:"block",fontSize:15,marginBottom:3},children:C}),(0,O.jsx)(qt,{style:{color:"#737373",lineHeight:1.5},children:u(o.descriptionKey)})]})]},o.key)})}),(0,O.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,flexWrap:"wrap",marginTop:24},children:(0,O.jsx)(W,{onClick:l,children:u("governance.creation.notNow")})})]})})};var V=I(E()),dn=i=>{let l=i;if(typeof i=="string")try{l=JSON.parse(i)}catch{return{}}return l!==null&&typeof l=="object"&&!Array.isArray(l)?l:{}},va=()=>{let{get:i,del:l,put:f}=me(),c=z(),[u,o]=(0,h.useState)([]),[t,C]=(0,h.useState)(!1),[r,m]=(0,h.useState)(null),[S,M]=(0,h.useState)("graph"),[H,d]=(0,h.useState)(null),[k,R]=(0,h.useState)(null),[P,$]=(0,h.useState)(null),[j,a]=(0,h.useState)(!1),[g,U]=(0,h.useState)(!0),[fe,le]=(0,h.useState)(!1),[ye,Se]=(0,h.useState)("learn"),[ce,ae]=(0,h.useState)({}),[oe,ie]=(0,h.useState)(null),[Pe,Y]=(0,h.useState)(!1),N=(0,h.useCallback)(async()=>{C(!0);try{let p=await i("/api/assistants");p.success&&p.data?.records&&o(p.data.records)}catch{w.error(c("governance.workbench.loadFailed"))}finally{C(!1)}},[i,c]);(0,h.useEffect)(()=>{N()},[N]);let J=h.default.useMemo(()=>xt(u),[u]),he=u.find(p=>p.id===r)??null,Me=(0,h.useCallback)((p,b="graph")=>{m(p),M(b),d(null),$(null)},[]),Ce=ut(),Q=(0,h.useCallback)((p,b)=>{let x=u.find(q=>q.id===p)?.name??c("governance.workbench.agentFallback");Ce({component_key:"agent_detail_side_app",data:{assistantId:p,initialTab:b},message:x})},[u,Ce,c]),de=(0,h.useCallback)(()=>{U(!0),a(!0)},[]),Ee=(0,h.useCallback)(p=>{let x={manual:{mode:"scratch",values:{}},external:{mode:"scratch",values:{type:"a2a_remote"}},learn:{mode:"learn",values:{}}}[p];Se(x.mode),ae(x.values),U(!1),a(!1),le(!0)},[]),Ae=(0,h.useCallback)(async(p,b)=>{let x=dn(p.graphDefinition),q;try{q=await f(`/api/assistants/${p.id}`,{name:b.name!==void 0?b.name:p.name,description:b.description!==void 0?b.description:p.description,graphDefinition:{...x,...b}})}catch(ke){throw w.error(c("governance.detail.saveFailed")),ke}if(!q.success)throw w.error(c("governance.detail.saveFailed")),new Error("Failed to save agent");w.success(c("common.saved")),N()},[f,N,c]),Ke=(0,h.useCallback)(p=>{o(b=>b.map(x=>x.id===p.id?p:x))},[]),K=(0,h.useCallback)(p=>{ie(p)},[]),be=(0,h.useCallback)(async()=>{if(oe){Y(!0);try{(await l(`/api/assistants/${oe}`)).success?(w.success(c("governance.detail.deleted")),o(b=>b.filter(x=>x.id!==oe)),N(),ie(null)):w.error(c("governance.detail.deleteFailed"))}catch{w.error(c("governance.detail.deleteFailed"))}finally{Y(!1)}}},[oe,l,N,c]),ve=(0,h.useCallback)(async p=>{if(!(await l(`/api/assistants/${p}`)).success)throw new Error("Failed to delete agent");w.success(c("governance.detail.deleted")),o(x=>x.filter(q=>q.id!==p)),N()},[l,N,c]);return(0,V.jsxs)("div",{style:{height:"100%",background:"#fafafa",overflow:"hidden"},children:[he?(0,V.jsx)(vt,{defaultProjectId:P??void 0,children:(0,V.jsx)(Dt,{assistant:he,allAssistants:u,onBack:()=>m(null),onDeleted:ve,onSave:Ae,onAssistantUpdated:Ke,onAgentListInvalidated:N,initialTab:S,initialMessage:H,initialMessageCustomRunConfig:k,initialProjectId:P})},he.id):(0,V.jsx)(V.Fragment,{children:(0,V.jsx)(Bt,{items:J,assistants:u,loading:t,onItemClick:p=>Q(p,"graph"),onOpenPlayground:p=>Q(p,"playground"),onOpenEval:p=>Q(p,"eval"),onCreate:de,onDelete:K})}),(0,V.jsx)(Ht,{open:j,onCancel:()=>{U(!0),a(!1)},onSelectMethod:Ee,focusTriggerAfterClose:g}),(0,V.jsx)(Ut,{open:fe,initialMode:ye,initialValues:ce,onCancel:()=>le(!1),onSuccess:(p,b)=>{le(!1),o(x=>x.some(ke=>ke.id===p.id)?x:[p,...x]),Me(p.id,"graph"),d(b?.initialMessage??null),R(b?.initialMessageCustomRunConfig??null),$(b?.projectId??null),N()}}),(0,V.jsx)(pe,{title:c("governance.deleteAgent"),open:oe!==null,onCancel:()=>ie(null),onOk:be,okText:c("common.delete"),okButtonProps:{danger:!0,loading:Pe},cancelText:c("common.cancel"),children:(0,V.jsx)("p",{children:c("governance.delete.irreversible")})})]})};export{va as AgentGovernanceWorkbench};
@@ -1,6 +0,0 @@
1
- import{c as $,d as J}from"./embed-page-chunk-NFMLKSPM.js";import{b as R,d as V,e as S}from"./embed-page-chunk-S2KVN3RB.js";import"./embed-page-chunk-S4XZPBRM.js";import{j as N,k as H,l as L,m as U,n as W,x as A,y as K,z as Y}from"./embed-page-chunk-N66H4DNH.js";import"./embed-page-chunk-BANVRQT7.js";import"./embed-page-chunk-436REIWY.js";import{s as w}from"./embed-page-chunk-37LGEEJU.js";import{a as g}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-SRMYHWL3.js";import{Ga as P,Mc as z,Nc as k,Qc as F,W as T,aa as B,cb as E,hb as D,jc as G,yc as _}from"./embed-page-chunk-4W34QOXT.js";import{a as b}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as u}from"./embed-page-chunk-QBTAJ2YI.js";var n=u(b());var I=u(b());var o=u(g());var ae="tracePulse 1.4s ease-in-out infinite",le={running:(0,o.jsx)(G,{style:{color:"#1890ff"}}),success:(0,o.jsx)(E,{style:{color:"#52c41a"}}),error:(0,o.jsx)(D,{style:{color:"#ff4d4f"}})};function de({kind:e}){switch(e){case"human":return(0,o.jsx)(F,{});case"agent":return(0,o.jsx)(z,{});case"tool":return(0,o.jsx)(k,{});case"ai":return(0,o.jsx)(_,{});default:return(0,o.jsx)(k,{})}}var M=I.default.createContext({}),ce=()=>I.default.useContext(M),pe=({data:e,selected:i})=>{let l=w(),{onJumpToMessage:t}=ce(),s=e.isAnswer===!0,a=e.status==="running",p=(e.parallelCount??1)>1,m=!!(t&&e.messageId&&!e.messageId.startsWith("summary:")),v=e.toolCall?L(e.toolCall.name):e.label,y=()=>{if((e.kind==="tool"||e.kind==="agent")&&e.toolCall){let h=U(e.toolCall.response);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(H,{data:{name:e.toolCall.name,parameters:e.toolCall.args,type:"tool_call"},component_key:`${e.toolCall.id}-params`,interactive:!1}),h&&(0,o.jsx)("div",{style:{marginTop:8},children:(0,o.jsx)(N,{content:h})}),(0,o.jsx)(W,{ui:e.toolCall.ui})]})}return e.content?(0,o.jsx)(N,{content:e.content}):(0,o.jsx)("span",{style:{color:"#8c8c8c"},children:e.label})};return(0,o.jsxs)("div",{"data-testid":"trace-card",style:{height:"100%",display:"flex",flexDirection:"column",border:`1px solid ${s||i?"#6366f1":a?"#91caff":"#e5e7eb"}`,borderRadius:12,background:s?"#eef2ff":"#fff",boxShadow:a?"0 0 0 2px rgba(24,144,255,0.18)":i?"0 0 0 2px rgba(99,102,241,0.2)":"none",animation:a?ae:void 0,overflow:"hidden",fontSize:13},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid #f0f0f0",background:"rgba(0,0,0,0.02)"},children:[(0,o.jsx)(de,{kind:e.kind}),(0,o.jsx)("span",{style:{fontWeight:s?700:600,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:v}),p&&(0,o.jsx)(P,{color:"purple",style:{marginInlineEnd:0,fontSize:10},children:l("chat.trace.parallelBadge",{count:e.parallelCount??1})}),le[e.status],m&&(0,o.jsx)(T,{type:"text",size:"small",onClick:()=>t?.(e.messageId),children:l("chat.trace.jumpToChat")})]}),(0,o.jsx)("div",{style:{flex:1,minHeight:0,overflow:"auto",padding:12},children:y()})]})},ue=({data:e,selected:i})=>(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(S,{type:"target",position:R.Top}),(0,o.jsx)(pe,{data:e,selected:i}),(0,o.jsx)(S,{type:"source",position:R.Bottom})]}),j={trace:ue};var Z=u(b());var f=u(g()),fe={running:"#1890ff",success:"#52c41a",error:"#ff4d4f"},q=({graph:e,activeNodeId:i,onSelectNode:l})=>{let t=Z.default.useMemo(()=>new Map(e.nodes.map(s=>[s.id,s])),[e.nodes]);return(0,f.jsx)("div",{"data-testid":"trace-overview-rail",style:{display:"flex",flexDirection:"column",gap:10,width:160,padding:8,overflowY:"auto",borderRight:"1px solid #f0f0f0"},children:e.phases.map(s=>(0,f.jsxs)("div",{"data-testid":"trace-rail-phase",children:[(0,f.jsx)("div",{style:{fontSize:12,color:"#8c8c8c",marginBottom:4},children:s.title}),(0,f.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:s.nodeIds.map(a=>{let p=t.get(a);if(!p)return null;let m=a===i;return(0,f.jsx)(B,{title:p.data.label,children:(0,f.jsx)("button",{type:"button","data-testid":"trace-rail-tick",onClick:()=>l?.(a),style:{width:m?12:8,height:m?12:8,borderRadius:"50%",border:"none",padding:0,cursor:"pointer",background:fe[p.data.status],outline:m?"2px solid #6366f1":"none"}})},a)})})]},s.id))})};var d=u(g()),Q=3,X=()=>{},me=`
2
- @keyframes tracePulse {
3
- 0%, 100% { box-shadow: 0 0 0 2px rgba(24,144,255,0.18); }
4
- 50% { box-shadow: 0 0 0 6px rgba(24,144,255,0.05); }
5
- }
6
- `;function ge(e){let i=e.nodes.map(t=>({id:t.id,...A[t.data.kind]})),l=e.edges.map(t=>({from:t.from,to:t.to}));return $(i,l,{nodesep:48,ranksep:80,rankdir:"TB"})}function ye({focusNodeId:e,follow:i}){let l=V();return(0,n.useEffect)(()=>{if(!i||!e)return;let t=l.getNode(e);if(!t)return;let s=t.style?.width??0,a=t.style?.height??0;l.setCenter(t.position.x+s/2,t.position.y+a/2,{zoom:1,duration:300})},[e,i,l]),null}var _e=({messages:e,isLoading:i,onJumpToMessage:l})=>{let t=w(),[s,a]=(0,n.useState)(),[p,m]=(0,n.useState)(!1),[v,y]=(0,n.useState)(!0),h=(0,n.useDeferredValue)(e),x=(0,n.useMemo)(()=>K(h,{isLoading:i,t}),[h,i,t]),c=(0,n.useMemo)(()=>p?x:Y(x,Q,t),[x,p,t]),ee=(0,n.useMemo)(()=>`${c.nodes.map(r=>r.id).join(",")}|${c.edges.map(r=>r.id).join(",")}`,[c]),O=(0,n.useMemo)(()=>ge(c),[ee]),oe=(0,n.useMemo)(()=>c.nodes.map(r=>{let C=A[r.data.kind];return{id:r.id,type:"trace",position:O.get(r.id)??{x:0,y:0},data:r.data,draggable:!1,style:{width:C.width,height:C.height}}}),[c,O]),te=(0,n.useMemo)(()=>c.edges.map(r=>({id:r.id,source:r.from,target:r.to,animated:r.kind==="invoke",style:{stroke:r.kind==="invoke"?"#6366f1":r.kind==="result"?"#a5b4fc":"#d9d9d9"}})),[c]),re=c.nodes[c.nodes.length-1]?.id,ne=s??re,se=x.phases.length>Q,ie=(0,n.useMemo)(()=>({onJumpToMessage:l}),[l]);return(0,d.jsxs)(M.Provider,{value:ie,children:[(0,d.jsx)("style",{children:me}),(0,d.jsxs)("div",{style:{display:"flex",height:"100%",minHeight:0,width:"100%"},children:[(0,d.jsx)(q,{graph:c,activeNodeId:s,onSelectNode:a}),(0,d.jsxs)("div",{style:{flex:1,minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:4,padding:"4px 8px"},children:[!v&&(0,d.jsx)(T,{size:"small",type:"text",onClick:()=>{a(void 0),y(!0)},children:t("chat.trace.backToCurrent")}),se&&(0,d.jsx)(T,{size:"small",type:"text",onClick:()=>m(r=>!r),children:t(p?"chat.trace.collapseOlder":"chat.trace.expandAll")})]}),(0,d.jsx)("div",{style:{flex:1,minHeight:0},children:(0,d.jsx)(J,{nodes:oe,edges:te,nodeTypes:j,onNodesChange:X,onEdgesChange:X,nodesDraggable:!1,nodesConnectable:!1,fitView:!0,miniMap:{pannable:!0,zoomable:!0},onMoveStart:()=>y(!1),onNodeClick:(r,C)=>{a(C.id),y(!0)},children:(0,d.jsx)(ye,{focusNodeId:ne,follow:v})})})]})]})]})};export{_e as MessageGraph};
@@ -1 +0,0 @@
1
- import{s as D}from"./embed-page-chunk-UDSGGVJH.js";import{i as E}from"./embed-page-chunk-N66H4DNH.js";import"./embed-page-chunk-BANVRQT7.js";import"./embed-page-chunk-436REIWY.js";import{i as T,s as v}from"./embed-page-chunk-37LGEEJU.js";import{a as C}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-SRMYHWL3.js";import{ga as x}from"./embed-page-chunk-4W34QOXT.js";import{a as w}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as p}from"./embed-page-chunk-QBTAJ2YI.js";var u=p(w());var R=p(T());var y=p(C());function g(l,i){if(!l||l.length===0)return{title:{text:i("genui.chart.title"),left:"left"},tooltip:{trigger:"axis"},legend:{right:0,orient:"vertical"},xAxis:{type:"category",data:[]},yAxis:{type:"value"},series:[{type:"line",name:i("genui.chart.seriesDefault",{n:1}),data:[]}],grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0}};let s=l[0],t=Object.keys(s);if(t.length===0)return g([],i);let r=t.filter(e=>{let n=s[e];return typeof n=="number"||!isNaN(Number(n))});if(r.length>0){let e=r[0],n=t.find(a=>!r.includes(a))||t[0],o=l.map((a,c)=>a[n]!==void 0?String(a[n]):i("genui.chart.itemDefault",{n:c+1})),f=l.map(a=>{let c=a[e];return typeof c=="number"?c:Number(c)||0});return{title:{text:i("genui.chart.title"),left:"left"},tooltip:{trigger:"axis"},legend:{right:0,orient:"vertical",data:[e]},xAxis:{type:"category",data:o},yAxis:{type:"value"},series:[{type:"line",name:e,data:f}],grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0}}}return{title:{text:i("genui.chart.title"),left:"left"},tooltip:{trigger:"axis"},legend:{right:0,orient:"vertical"},xAxis:{type:"category",data:l.map((e,n)=>i("genui.chart.itemDefault",{n:n+1}))},yAxis:{type:"value"},series:[{type:"bar",name:i("genui.chart.countSeries"),data:l.map(()=>1)}],grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0}}}function j(l,i){if(!l||typeof l!="object"||!l.series||!Array.isArray(l.series)||l.series.length===0)return null;let s=l.series.map((e,n)=>{if(!e||typeof e!="object"||!e.type||!e.data||!Array.isArray(e.data)||e.data.length===0)return null;let o={...e,name:e.name||i("genui.chart.seriesDefault",{n:n+1})};if(e.type==="pie"){let f=e.data.map((a,c)=>typeof a=="object"&&a!==null&&"value"in a?{value:a.value,name:a.name||i("genui.chart.itemDefault",{n:c+1})}:typeof a=="number"?{value:a,name:i("genui.chart.itemDefault",{n:c+1})}:null).filter(a=>a!==null);return f.length===0?null:{...o,data:f}}return o}).filter(e=>e!==null);if(s.length===0)return null;let t={...l,series:s},r=s[0].type;if(r!=="pie"){if(!t.xAxis)t.xAxis={type:"category",data:[]};else if(typeof t.xAxis=="object"&&!Array.isArray(t.xAxis)){let e=t.xAxis;if(e.type||(e.type="category"),e.type==="category"&&!e.data){let n=s[0].data;Array.isArray(n)&&n.length>0?Array.isArray(n[0])?e.data=n.map(o=>o[0]):e.data=n.map((o,f)=>i("genui.chart.itemDefault",{n:f+1})):e.data=[]}t.xAxis=e}t.yAxis?typeof t.yAxis=="object"&&!Array.isArray(t.yAxis)&&(t.yAxis.type||(t.yAxis.type="value")):t.yAxis={type:"value"}}if(!t.title)t.title={text:i("genui.chart.title"),left:"left"};else if(typeof t.title=="object"){let e=t.title;e.left||(e.left="left"),e.text||(e.text=i("genui.chart.title")),t.title=e}if(t.tooltip||(t.tooltip={trigger:r==="pie"?"item":"axis"}),!t.legend)s.length>1&&(t.legend={right:0,orient:"vertical"});else if(typeof t.legend=="object"){let e=t.legend;t.legend=e}return r!=="pie"&&!t.grid&&(t.grid={left:"3%",right:"4%",bottom:"3%",containLabel:!0}),t}function O(l,i){let s=null;try{let n=typeof l=="string"?l:l.join("");s=(0,R.parse)(n)}catch(n){return{data:null,error:`Failed to parse JSON: ${n instanceof Error?n.message:String(n)}`}}if(!s||typeof s!="object")return{data:null,error:"Parsed data is not an object"};let t=s.series&&Array.isArray(s.series)&&s.series.length>0,r={table:Array.isArray(s.table)?s.table:void 0},e=null;if(s.echarts?e=s.echarts:t&&(e=s),e){let n=j(e,i);if(n)r.echarts=n;else if(r.table&&r.table.length>0)r.echarts=g(r.table,i);else return{data:null,error:"ECharts configuration is invalid or incomplete. Required: series array with at least one series containing type and data."}}else r.table&&r.table.length>0?r.echarts=g(r.table,i):r.echarts=g([],i);return{data:r,error:null}}var K=l=>{let{children:i}=l,s=v(),t=(0,u.useRef)(null),r=(0,u.useRef)(null),e=(0,u.useRef)(null),[n,o]=(0,u.useState)(null);(0,u.useEffect)(()=>{if(!t.current)return;r.current||(r.current=D(t.current));let a=null;if((typeof i=="string"||Array.isArray(i))&&(a=i),!a){r.current&&r.current.clear(),o(null);return}let{data:c,error:m}=O(a,s);if(m||!c){console.warn("ReactChart failed to parse chart data:",m||"Unknown parse error"),r.current&&r.current.clear(),o(null);return}if(c.table&&Array.isArray(c.table)&&o(c.table),c.echarts)try{r.current.setOption(c.echarts,!0)}catch(d){let A=d instanceof Error?d.message:"Failed to render chart";console.error("Failed to set ECharts option:",d),r.current&&r.current.clear(),o(null)}let h=()=>{r.current&&r.current.resize()};return e.current&&(e.current.disconnect(),e.current=null),t.current&&typeof ResizeObserver<"u"&&(e.current=new ResizeObserver(d=>{requestAnimationFrame(()=>{h()})}),e.current.observe(t.current)),window.addEventListener("resize",h),()=>{e.current&&(e.current.disconnect(),e.current=null),window.removeEventListener("resize",h)}},[i,s]),(0,u.useEffect)(()=>()=>{e.current&&(e.current.disconnect(),e.current=null),r.current&&(r.current.dispose(),r.current=null)},[]);let f=a=>{if(!a||a.length===0)return[];if(Array.isArray(a[0])){let c=a[0];return a.slice(1).map((h,d)=>{let A={};return h.forEach((S,b)=>{A[c[b]||`col_${b}`]=S}),A})}return a};return(0,y.jsxs)(x,{children:[(0,y.jsx)("div",{ref:t,style:{width:"100%",height:"400px",minHeight:"300px"}}),n&&n.length>0&&(0,y.jsx)("div",{style:{marginTop:16},children:(0,y.jsx)(E,{component_key:"chart_table_data",data:{dataSource:f(n),message:s("genui.chart.dataDetails")},interactive:!0,default_open_in_side_app:!0})})]})};export{K as ReactChart};
@@ -1 +0,0 @@
1
- import{b as Z,c as he,e as ee,f as Se,g as xe,h as ve,i as be,l as Te,m as Ce}from"./embed-page-chunk-S2KVN3RB.js";import{a as fe,b as ge,c as me,d as ue,e as ke}from"./embed-page-chunk-SV2BM3WO.js";import"./embed-page-chunk-S4XZPBRM.js";import{a as V,b as we}from"./embed-page-chunk-436REIWY.js";import{E as ne,s as q,z as se}from"./embed-page-chunk-37LGEEJU.js";import{a as K}from"./embed-page-chunk-QV7QAJ4N.js";import{Ga as E,Ha as _,Ia as ae,Pb as pe,W as v,Za as re,bc as ye,ka as ie,mb as ce,nb as de,oa as B,ta as R,tc as U,wa as C,xa as le}from"./embed-page-chunk-4W34QOXT.js";import{a as oe}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-EUOOO2LS.js";import{f as W}from"./embed-page-chunk-QBTAJ2YI.js";var h=W(oe());var k=W(oe());var e=W(K()),{Text:d}=ae,{TextArea:Ne}=R,Ee=({data:b})=>{let s=q(),{token:o}=_.useToken(),{config:w}=ne(),{put:Y}=V(),I=he(t=>t.transform[2])>.6,G=se("__GLOBAL__");if(!b)return null;let{skill:g,onClick:D,onDelete:S}=b;if(!g)return null;let[i,A]=(0,k.useState)(g),O=i.subSkills&&i.subSkills.length>0,m=i.subSkills?.length||0,F=(0,k.useMemo)(()=>Math.min(12+Math.sqrt(m)*10,48),[m]),X=i.metadata&&i.metadata.category||"global",T=(0,k.useMemo)(()=>i.metadata?Object.entries(i.metadata).filter(([t,a])=>t&&a):[],[i.metadata]),P=t=>{if(!t)return"";let a=t instanceof Date?t:new Date(t);return Number.isNaN(a.getTime())?"":a.toLocaleString()},J=t=>{navigator.clipboard.writeText(t)},[z,x]=(0,k.useState)(!1),[p,n]=(0,k.useState)({...g,id:g.name}),[c,u]=(0,k.useState)(T.map(([t,a])=>({key:t,value:a}))),[$,M]=(0,k.useState)(!1),[Q,L]=(0,k.useState)(!1);(0,k.useEffect)(()=>{x(!1),A(g),n({...g,id:g.name}),u(Object.entries(g.metadata||{}).map(([t,a])=>({key:t,value:a})))},[g]);let l=(t,a)=>{if(t==="name"){n(r=>({...r,name:a,id:a}));return}n(r=>({...r,[t]:a}))},H=async t=>{t?.stopPropagation(),t?.preventDefault();try{let a=i.id||i.name;if(!a){C.error(s("chatWorkspace.skillNode.idMissing"));return}await G.skills.delete(a),C.success(s("chatWorkspace.skillNode.deleted")),M(!1),S&&await S()}catch(a){C.error(a?.message||s("chatWorkspace.skillNode.deleteFailed"))}},j=t=>{u(t);let a=t.reduce((r,y)=>(y.key&&(r[y.key]=y.value),r),{});n(r=>({...r,metadata:a}))},te=(t,a,r)=>{let y=[...c];y[t]={...y[t],[a]:r},j(y)},We=()=>{j([...c,{key:"",value:""}])},Be=async()=>{try{L(!0);let t={"Content-Type":"application/json"};w.apiKey&&(t.Authorization=`Bearer ${w.apiKey}`);let a={name:p.name,description:p.description,license:p.license||void 0,compatibility:p.compatibility||void 0,metadata:p.metadata||void 0,content:p.content||void 0,subSkills:p.subSkills||void 0},r=await Y(`/api/skills/${i.id}`,a);if(r.success){C.success(s("chatWorkspace.skillNode.updated"));let y=r.data||p;A(y),n({...y,id:y.name}),u(Object.entries(y.metadata||{}).map(([Fe,Me])=>({key:Fe,value:Me}))),x(!1),D?.(y)}else C.error(r.message||s("chatWorkspace.skillNode.updateFailed"))}catch(t){C.error(t.message||s("chatWorkspace.skillNode.updateError"))}finally{L(!1)}},Re=(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"row",gap:24},children:[(0,e.jsxs)("div",{style:{flex:"0 0 320px",display:"flex",flexDirection:"column",gap:12},children:[(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,e.jsx)(d,{style:{fontSize:12,color:o.colorTextSecondary},children:s("chatWorkspace.skills.field.description")}),(0,e.jsx)(Ne,{value:p.description,onChange:t=>l("description",t.target.value),placeholder:s("chatWorkspace.skills.field.description"),rows:3})]}),(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,e.jsx)(d,{style:{fontSize:12,color:o.colorTextSecondary},children:s("chatWorkspace.skills.field.license")}),(0,e.jsx)(R,{value:p.license,onChange:t=>l("license",t.target.value),placeholder:s("chatWorkspace.skills.field.license")})]}),(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,e.jsx)(d,{style:{fontSize:12,color:o.colorTextSecondary},children:s("chatWorkspace.skills.field.compatibility")}),(0,e.jsx)(R,{value:p.compatibility,onChange:t=>l("compatibility",t.target.value),placeholder:s("chatWorkspace.skills.field.compatibility")})]}),(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,e.jsx)(d,{style:{fontSize:12,color:o.colorTextSecondary,fontWeight:500},children:s("chatWorkspace.skills.field.metadata")}),(0,e.jsx)(v,{size:"small",icon:(0,e.jsx)(U,{}),onClick:We,children:s("chatWorkspace.skillNode.add")})]}),(0,e.jsxs)(B,{direction:"vertical",size:8,style:{width:"100%"},children:[c.length===0&&(0,e.jsx)(d,{style:{fontSize:11,color:o.colorTextTertiary},children:s("chatWorkspace.skillNode.noMetadata")}),c.map((t,a)=>(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4,width:"100%"},children:[(0,e.jsx)(d,{style:{fontSize:11,color:o.colorTextSecondary},children:s("chatWorkspace.skillNode.meta",{index:a+1})}),(0,e.jsxs)(B,{style:{width:"100%"},size:8,wrap:!0,children:[(0,e.jsx)(R,{value:t.key,placeholder:s("chatWorkspace.skillNode.keyPlaceholder"),style:{width:120},onChange:r=>te(a,"key",r.target.value)}),(0,e.jsx)(R,{value:t.value,placeholder:s("chatWorkspace.skillNode.valuePlaceholder"),style:{flex:1,minWidth:160},onChange:r=>te(a,"value",r.target.value)})]})]},a))]})]}),(0,e.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:6,minWidth:400},children:[(0,e.jsx)(d,{style:{fontSize:12,color:o.colorTextSecondary},children:s("chatWorkspace.skills.field.content")}),(0,e.jsx)(Ne,{value:p.content,onChange:t=>l("content",t.target.value),placeholder:s("chatWorkspace.skillNode.contentPlaceholder"),rows:30,style:{fontFamily:"monospace",fontSize:13,flex:1,minHeight:600}})]})]}),Ie=(0,e.jsxs)("div",{style:{width:z?960:720,maxHeight:"95vh",overflowY:"auto",padding:24},children:[(0,e.jsx)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",marginBottom:16},children:(0,e.jsxs)("div",{style:{flex:1},children:[(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,e.jsx)(d,{strong:!0,style:{fontSize:18,fontWeight:600,color:o.colorText},children:i.name}),(0,e.jsx)(E,{style:{margin:0,fontSize:10,padding:"2px 8px",fontWeight:600},color:"geekblue",children:X.toUpperCase()})]}),(0,e.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6},children:(0,e.jsx)(d,{style:{fontSize:11,color:o.colorTextTertiary,fontFamily:"monospace"},children:`>_ ${i.id}`})})]})}),z?Re:(0,e.jsxs)(e.Fragment,{children:[i.description&&(0,e.jsx)("div",{style:{marginBottom:16},children:(0,e.jsxs)(d,{style:{fontSize:12,color:o.colorText,lineHeight:1.6,fontStyle:"italic"},children:['"',i.description,'"']})}),T.length>0&&(0,e.jsxs)("div",{style:{marginBottom:16},children:[(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,e.jsx)(ye,{style:{fontSize:14,color:o.colorTextSecondary}}),(0,e.jsx)(d,{style:{fontSize:12,color:o.colorTextSecondary,fontWeight:500},children:s("chatWorkspace.skillNode.metadataCount",{count:T.length})})]}),(0,e.jsx)("div",{style:{border:`1px solid ${o.colorBorderSecondary}`,borderRadius:6,overflow:"hidden"},children:T.map(([t,a],r)=>(0,e.jsxs)("div",{style:{display:"flex",alignItems:"stretch",borderBottom:r===T.length-1?"none":`1px solid ${o.colorBorderSecondary}`},children:[(0,e.jsx)("div",{style:{width:140,padding:"8px 10px",background:o.colorFillTertiary,borderRight:`1px solid ${o.colorBorderSecondary}`,fontSize:11,color:o.colorTextSecondary,fontWeight:600,textTransform:"capitalize"},children:t}),(0,e.jsx)("div",{style:{flex:1,padding:"8px 10px",fontSize:11,color:o.colorText,wordBreak:"break-word"},children:a})]},t))})]}),O&&(0,e.jsxs)("div",{style:{marginBottom:16},children:[(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,e.jsx)(re,{style:{fontSize:14,color:o.colorTextSecondary}}),(0,e.jsxs)(d,{style:{fontSize:12,color:o.colorTextSecondary,fontWeight:500},children:["Sub-Skills (",i.subSkills.length,")"]})]}),(0,e.jsx)(B,{size:[8,8],wrap:!0,children:i.subSkills.map((t,a)=>(0,e.jsx)(E,{style:{fontSize:11,padding:"4px 12px",backgroundColor:o.colorFillTertiary,color:o.colorText,border:`1px solid ${o.colorBorderSecondary}`},children:t},a))})]}),(i.license||i.compatibility)&&(0,e.jsx)("div",{style:{marginBottom:16},children:(0,e.jsxs)(B,{size:[8,8],wrap:!0,children:[i.license&&(0,e.jsx)(E,{icon:(0,e.jsx)(de,{}),style:{margin:0,fontSize:11,padding:"4px 12px",borderRadius:6,backgroundColor:o.colorInfoBg,color:o.colorInfo,border:`1px solid ${o.colorInfoBorder}`,fontWeight:500,lineHeight:"16px"},children:i.license}),i.compatibility&&(0,e.jsx)(E,{style:{margin:0,fontSize:11,padding:"4px 12px",borderRadius:6,backgroundColor:o.colorSuccessBg,color:o.colorSuccess,border:`1px solid ${o.colorSuccessBorder}`,fontWeight:500,lineHeight:"16px",display:"inline-flex",alignItems:"center",gap:4},children:i.compatibility})]})}),(i.createdAt||i.updatedAt)&&(0,e.jsx)("div",{style:{marginBottom:16},children:(0,e.jsxs)(B,{direction:"vertical",size:4,children:[i.createdAt&&(0,e.jsxs)(d,{style:{fontSize:11,color:o.colorTextTertiary,fontFamily:"monospace"},children:["Created: ",P(i.createdAt)]}),i.updatedAt&&(0,e.jsxs)(d,{style:{fontSize:11,color:o.colorTextTertiary,fontFamily:"monospace"},children:["Updated: ",P(i.updatedAt)]})]})}),i.content&&(0,e.jsxs)("div",{style:{marginBottom:0},children:[(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,e.jsx)(pe,{style:{fontSize:14,color:o.colorTextSecondary}}),(0,e.jsx)(d,{style:{fontSize:12,color:o.colorTextSecondary,fontWeight:600,letterSpacing:.5},children:s("chatWorkspace.skillNode.contentSection")})]}),(0,e.jsx)("div",{style:{padding:16,background:o.colorFillTertiary,border:`1px solid ${o.colorBorderSecondary}`,borderRadius:6,maxHeight:400,overflowY:"auto"},children:(0,e.jsx)(d,{style:{fontSize:12,color:o.colorText,lineHeight:1.7,whiteSpace:"pre-wrap",fontFamily:"monospace"},children:i.content})})]})]}),(0,e.jsx)(ie,{style:{margin:"16px 0"}}),(0,e.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:z?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(v,{block:!0,onClick:()=>{x(!1),n(g)},style:{flex:1},children:s("common.cancel")}),(0,e.jsx)(v,{type:"primary",block:!0,onClick:Be,loading:Q,style:{flex:1},children:s("common.save")})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(v,{type:"primary",block:!0,onClick:()=>x(!0),style:{flex:1},children:s("chatWorkspace.skillNode.edit")}),(0,e.jsx)(v,{danger:!0,onClick:t=>{t.stopPropagation(),H(t)},children:s("common.delete")}),(0,e.jsx)(v,{icon:(0,e.jsx)(ce,{}),onClick:()=>J(i.id),title:s("chatWorkspace.skillNode.copyId")})]})})]});return(0,e.jsxs)("div",{style:{position:"relative",padding:4,overflow:"visible"},children:[(0,e.jsx)(ee,{type:"source",position:Z.Top,style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",background:"transparent",border:"none",width:1,height:1,borderRadius:"50%",pointerEvents:"none"},isConnectable:!1}),(0,e.jsx)(ee,{type:"target",position:Z.Top,style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",background:"transparent",border:"none",width:1,height:1,borderRadius:"50%",pointerEvents:"none"},isConnectable:!1}),(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,cursor:"pointer",position:"relative"},onClick:()=>M(!0),children:[(0,e.jsx)("div",{style:{width:F,height:F,borderRadius:"50%",background:"#999",flexShrink:0,boxShadow:"0 1px 4px rgba(0,0,0,0.15)",transition:"transform 0.15s ease"},onMouseEnter:t=>{t.currentTarget.style.transform="scale(1.15)"},onMouseLeave:t=>{t.currentTarget.style.transform="scale(1)"}}),I&&(0,e.jsx)(d,{style:{position:"absolute",top:"100%",left:"50%",transform:"translateX(-50%)",marginTop:4,fontSize:10,color:o.colorTextSecondary,opacity:.45,whiteSpace:"nowrap",pointerEvents:"none",userSelect:"none"},children:i.name})]}),(0,e.jsx)(le,{open:$,onCancel:()=>{M(!1),x(!1),n({...i,id:i.name})},footer:null,width:z?1e3:760,destroyOnClose:!0,title:null,styles:{body:{padding:0}},children:Ie})]})},ze=Ee;var f=W(K()),De=({onNodeClick:b})=>{let s=q(),[o,w,Y]=ve([]),[N,I,G]=be([]),[g,D]=(0,h.useState)(!1),[S,i]=(0,h.useState)([]),[A,O]=(0,h.useState)(!1),[m,F]=(0,h.useState)(null),{token:X}=_.useToken(),{get:T}=V(),P=(0,h.useMemo)(()=>({skill:ze}),[]),J=(0,h.useMemo)(()=>m===null?o:o.map(n=>{let c=n.id===m||N.some(u=>u.source===m&&u.target===n.id||u.target===m&&u.source===n.id);return{...n,style:{opacity:c?1:.2,transition:"opacity 0.2s ease"}}}),[o,N,m]),z=(0,h.useMemo)(()=>m===null?N.map(n=>({...n,style:{stroke:"#1677ff",strokeWidth:1.5,opacity:.25,transition:"opacity 0.2s ease"}})):N.map(n=>{let c=n.source===m||n.target===m;return{...n,style:{stroke:"#1677ff",strokeWidth:c?2.5:1,opacity:c?1:.04,transition:"opacity 0.2s ease"}}}),[N,m]),x=async()=>{O(!0);try{let n=await T("/api/skills");n.success&&n.data&&Array.isArray(n.data.records)&&i(n.data.records)}catch(n){console.error("Failed to fetch skills:",n),i([])}finally{O(!1)}};(0,h.useEffect)(()=>{x()},[]),(0,h.useEffect)(()=>{if(!S||S.length===0){w([]),I([]);return}let n=[],c=new Map,u=[];S.forEach(l=>{c.set(l.name,l),l.subSkills&&l.subSkills.length>0&&l.subSkills.forEach(H=>{S.find(j=>j.name===H)&&u.push({source:l.name,target:H})})});let $=S.map(l=>({id:l.name})),M=u.map(l=>({source:l.source,target:l.target})),Q=ue($).force("link",me(M).id(l=>l.id).distance(80)).force("charge",ke().strength(-300)).force("center",fe(0,0)).force("collide",ge(30)).stop();for(let l=0;l<300;l++)Q.tick();let L=$.map(l=>({id:l.id,type:"skill",data:{skill:c.get(l.id),onClick:()=>b?.(c.get(l.id)),onDelete:x},position:{x:l.x,y:l.y}}));u.forEach(l=>{c.has(l.source)&&c.has(l.target)&&n.push({id:`e${l.source}-${l.target}`,source:l.source,target:l.target,style:{stroke:"#1677ff",strokeWidth:2},type:"straight"})}),w(L),I(n)},[S,w,I,b]);let p=async()=>{await x()};return A?(0,f.jsx)("div",{style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",background:"#fafafa"},children:s("chat.skills.loading")}):(0,f.jsxs)("div",{style:{width:"100%",height:"100%",background:"#fafafa",position:"relative"},children:[(0,f.jsxs)(xe,{nodes:J,edges:z,onNodesChange:Y,onEdgesChange:G,onNodeMouseEnter:(n,c)=>F(c.id),onNodeMouseLeave:()=>F(null),nodeTypes:P,fitView:!0,children:[(0,f.jsx)(Te,{color:"#eee",gap:20}),(0,f.jsx)(Ce,{})]}),(0,f.jsx)("div",{style:{position:"absolute",top:20,right:20,zIndex:10},children:(0,f.jsx)(v,{type:"primary",size:"large",icon:(0,f.jsx)(U,{}),onClick:()=>D(!0),style:{height:48,width:48,borderRadius:"50%",boxShadow:X.boxShadowTertiary,display:"flex",alignItems:"center",justifyContent:"center",padding:0}})}),(0,f.jsx)(we,{open:g,onCancel:()=>D(!1),onSuccess:p})]})},Ae=b=>(0,f.jsx)(Se,{children:(0,f.jsx)(De,{...b})}),nt=Ae;export{nt as default};
@@ -1 +0,0 @@
1
- import{Ia as de,J as ce,M as se,Za as ue,db as he,eb as Ae,xa as le}from"./embed-page-chunk-BANVRQT7.js";import{s as re,z as oe}from"./embed-page-chunk-37LGEEJU.js";import{a as ie}from"./embed-page-chunk-QV7QAJ4N.js";import{Fa as L,Ga as S,Ia as c,U as d,W as u,Z as F,ga as te,ma as ne,oa as h,xa as ae,za as C}from"./embed-page-chunk-4W34QOXT.js";import{a as Pe}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-EUOOO2LS.js";import{f as I}from"./embed-page-chunk-QBTAJ2YI.js";var a=I(Pe());var _=I(Ae());var t=I(ie());function f(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function Ee(r){if(!f(r))return;let e=r.checkpoint;if(f(e)&&typeof e.checkpoint_id=="string")return e.checkpoint_id;let o=r.config;if(f(o)&&f(o.configurable)){let s=o.configurable.checkpoint_id;if(typeof s=="string")return s}}function ze(r){if(!f(r))return;if(typeof r.createdAt=="string")return r.createdAt;let e=r.checkpoint;if(f(e)&&typeof e.ts=="string")return e.ts}function He(r){switch(r){case"pending":return"blue";case"running":return"processing";case"success":return"green";case"error":case"failed":case"timeout":return"red";case"interrupted":return"orange";default:return}}function Fe(r){return r==="pending"||r==="running"}function Le(r){return r<1024?`${r} B`:r<1024*1024?`${(r/1024).toFixed(1)} KB`:`${(r/(1024*1024)).toFixed(2)} MB`}var We=({data:r})=>{let e=re(),o=r?.threadId,s=r?.assistantId,l=oe(s||"__no_assistant__"),D=(0,a.useContext)(ue),{closeSideApp:pe}=he(),[m,ge]=(0,a.useState)(null),[T,ye]=(0,a.useState)(null),[fe,me]=(0,a.useState)([]),[Te,Me]=(0,a.useState)([]),[v,R]=(0,a.useState)(!0),[K,M]=(0,a.useState)(null),[Y,O]=(0,a.useState)(null),[p,J]=(0,a.useState)({}),[b,N]=(0,a.useState)(null),[xe,W]=(0,a.useState)(!1),[ke,B]=(0,a.useState)(""),[we,$]=(0,a.useState)(!1),[Ce,G]=(0,a.useState)(!1),[P,Ie]=(0,a.useState)(null),[U,V]=(0,a.useState)(!1),[A,j]=(0,a.useState)(5),E=(0,a.useRef)(0),x=(0,a.useRef)(0),g=(0,a.useCallback)(async()=>{if(!o||!s){R(!1);return}let n=++E.current;R(!0),J({});let[i,k,X,Z]=await Promise.allSettled([l.getThreadStatus(o),l.getThreadStorage(o),l.getThreadHistory(o,{limit:10}),l.runs.list(o,s)]);if(n!==E.current)return;let w={};i.status==="fulfilled"?ge(i.value):w.status=e("chat.threadMaintenance.statusLoadFailed"),k.status==="fulfilled"?ye(k.value):w.storage=e("chat.threadMaintenance.storageLoadFailed"),X.status==="fulfilled"?me(X.value.flatMap(H=>{let ee=Ee(H);return ee===void 0?[]:[{id:ee,createdAt:ze(H),raw:H}]})):w.history=e("chat.threadMaintenance.historyLoadFailed"),Z.status==="fulfilled"?Me(Z.value):w.runs=e("chat.threadMaintenance.runsLoadFailed"),J(w),R(!1)},[s,l,e,o]);(0,a.useEffect)(()=>(g(),()=>{E.current+=1}),[g]);let Se=async n=>{if(!o)return;let i=++x.current;W(!0),$(!0),B("");try{let k=await l.getThreadStateAtCheckpoint(o,n.id);i===x.current&&B(JSON.stringify(k,null,2))}catch{i===x.current&&B(e("chat.threadMaintenance.stateFailed"))}finally{i===x.current&&$(!1)}},ve=()=>{x.current+=1,W(!1)},Re=async()=>{if(o){G(!0),M(null);try{let n=await l.copyThread(o);Ie(n.id)}catch{M(e("chat.threadMaintenance.copyFailed"))}finally{G(!1)}}},q=async n=>{if(!o)return;V(!0),M(null);let i=Math.min(100,Math.max(1,Math.trunc(A)));j(i);try{if(!(await l.pruneThread(o,n==="delete"?{strategy:n}:{strategy:n,keep:i})).pruned){M(e("chat.threadMaintenance.pruneFailed"));return}if(n==="delete"){pe();return}await g()}catch{M(e("chat.threadMaintenance.pruneFailed"))}finally{V(!1)}},z=(0,a.useCallback)(async(n,i)=>{if(!(!o||!s)){N(n),O(null);try{await l.runs.cancel(o,n,{action:i},s),await g()}catch{O(e("chat.threadMaintenance.runCancelFailed"))}finally{N(null)}}},[s,l,g,e,o]),Q=m?.interrupts??[],be=(0,a.useMemo)(()=>[{title:e("chat.threadMaintenance.runStatus"),dataIndex:"status",render:n=>(0,t.jsx)(S,{color:He(n),children:n})},{title:e("chat.threadMaintenance.runId"),dataIndex:"runId",render:n=>(0,t.jsx)(c.Text,{code:!0,ellipsis:{tooltip:n},style:{maxWidth:180},children:n})},{title:e("chat.threadMaintenance.runCreated"),dataIndex:"createdAt",render:n=>(0,_.default)(n).format("YYYY-MM-DD HH:mm:ss")},{title:e("chat.threadMaintenance.runOwner"),key:"owner",render:(n,i)=>(0,t.jsxs)(h,{size:4,children:[(0,t.jsx)(c.Text,{children:i.owner??"\u2014"}),(0,t.jsx)(c.Text,{type:"secondary",children:"/"}),(0,t.jsx)(c.Text,{type:"secondary",children:i.attempts})]})},{key:"actions",render:(n,i)=>Fe(i.status)?(0,t.jsxs)(h,{size:4,children:[(0,t.jsx)(C,{title:e("chat.threadMaintenance.interruptRunConfirm"),okText:e("chat.threadMaintenance.interruptRun"),cancelText:e("common.cancel"),onConfirm:()=>void z(i.runId,"interrupt"),children:(0,t.jsx)(u,{size:"small",type:"link",loading:b===i.runId,children:e("chat.threadMaintenance.interruptRun")})}),(0,t.jsx)(C,{title:e("chat.threadMaintenance.rollbackRunConfirm"),okText:e("chat.threadMaintenance.rollbackRun"),cancelText:e("common.cancel"),onConfirm:()=>void z(i.runId,"rollback"),children:(0,t.jsx)(u,{size:"small",type:"link",danger:!0,loading:b===i.runId,children:e("chat.threadMaintenance.rollbackRun")})})]}):null}],[z,b,e]),Be=(0,a.useMemo)(()=>[{title:e("chat.threadMaintenance.checkpointId"),dataIndex:"id",render:n=>(0,t.jsx)(c.Text,{code:!0,children:n})},{title:e("chat.threadMaintenance.checkpointTime"),dataIndex:"createdAt",render:n=>n?(0,_.default)(n).format("YYYY-MM-DD HH:mm:ss"):e("chat.threadMaintenance.unknown")},{key:"actions",render:(n,i)=>(0,t.jsx)(u,{size:"small",type:"link",onClick:()=>void Se(i),children:e("chat.threadMaintenance.viewState")})}],[e]);return!o||!s?(0,t.jsx)(d,{type:"warning",showIcon:!0,message:e("chat.threadMaintenance.missingContext")}):(0,t.jsxs)(te,{title:(0,t.jsxs)(h,{children:[(0,t.jsx)(se,{size:16}),e("chat.threadMaintenance.title")]}),extra:(0,t.jsxs)(h,{wrap:!0,children:[(0,t.jsx)(u,{icon:(0,t.jsx)(le,{size:14}),onClick:()=>void g(),loading:v,children:e("common.refresh")}),(0,t.jsx)(u,{icon:(0,t.jsx)(ce,{size:14}),loading:Ce,onClick:()=>void Re(),children:e("chat.threadMaintenance.copy")})]}),children:[(0,t.jsxs)(h,{direction:"vertical",size:14,style:{width:"100%"},children:[K?(0,t.jsx)(d,{type:"error",showIcon:!0,message:K}):null,p.status?(0,t.jsx)(d,{type:"error",showIcon:!0,message:p.status}):null,p.storage?(0,t.jsx)(d,{type:"warning",showIcon:!0,message:p.storage}):null,p.history?(0,t.jsx)(d,{type:"warning",showIcon:!0,message:p.history}):null,p.runs?(0,t.jsx)(d,{type:"warning",showIcon:!0,message:p.runs}):null,P?(0,t.jsx)(d,{type:"success",showIcon:!0,message:e("chat.threadMaintenance.copySuccess",{id:P}),action:D?.selectThread?(0,t.jsx)(u,{size:"small",onClick:()=>D.selectThread(P),children:e("chat.threadMaintenance.switchToCopy")}):null}):null,(0,t.jsxs)(h,{wrap:!0,size:16,children:[(0,t.jsx)(y,{label:e("chat.threadMaintenance.status"),children:(0,t.jsx)(S,{color:m?.status==="idle"?"green":m?.status==="error"?"red":"blue",children:m?.status??e("chat.threadMaintenance.unknown")})}),(0,t.jsx)(y,{label:e("chat.threadMaintenance.pendingMessages"),children:m?.pendingMessages??0}),(0,t.jsx)(y,{label:e("chat.threadMaintenance.storage"),children:T?Le(T.totalBytes):e("chat.threadMaintenance.unknown")}),(0,t.jsx)(y,{label:e("chat.threadMaintenance.checkpoints"),children:T?.checkpoints.count??0}),(0,t.jsx)(y,{label:e("chat.threadMaintenance.channelValues"),children:T?.channelValues.count??0}),(0,t.jsx)(y,{label:e("chat.threadMaintenance.pendingWrites"),children:T?.pendingWrites.count??0})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(c.Text,{strong:!0,children:e("chat.threadMaintenance.interrupts")}),(0,t.jsx)("div",{style:{marginTop:6},children:Q.length===0?(0,t.jsx)(c.Text,{type:"secondary",children:e("chat.threadMaintenance.noInterrupts")}):(0,t.jsx)(h,{wrap:!0,children:Q.map(n=>(0,t.jsxs)(S,{color:"orange",children:[n.type,": ",n.interruptId]},n.interruptId))})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(c.Text,{strong:!0,children:e("chat.threadMaintenance.runs")}),Y?(0,t.jsx)(d,{type:"error",showIcon:!0,message:Y,style:{marginTop:6}}):null,(0,t.jsx)(L,{rowKey:"runId",size:"small",columns:be,dataSource:Te,pagination:!1,loading:v,locale:{emptyText:(0,t.jsx)(F,{description:e("chat.threadMaintenance.noRuns")})}})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(c.Text,{strong:!0,children:e("chat.threadMaintenance.history")}),(0,t.jsx)(L,{rowKey:"id",size:"small",columns:Be,dataSource:fe,pagination:!1,loading:v,locale:{emptyText:(0,t.jsx)(F,{description:e("chat.threadMaintenance.noHistory")})}})]}),(0,t.jsxs)(h,{wrap:!0,children:[(0,t.jsx)(C,{title:e("chat.threadMaintenance.pruneDeleteTitle"),description:e("chat.threadMaintenance.pruneDeleteConfirm"),okText:e("common.delete"),cancelText:e("common.cancel"),okButtonProps:{danger:!0},onConfirm:()=>void q("delete"),children:(0,t.jsx)(u,{danger:!0,icon:(0,t.jsx)(de,{size:14}),loading:U,children:e("chat.threadMaintenance.pruneDelete")})}),(0,t.jsx)(ne,{"aria-label":e("chat.threadMaintenance.keepLabel"),min:1,max:100,precision:0,step:1,value:A,onChange:n=>{j(typeof n=="number"?Math.min(100,Math.max(1,Math.trunc(n))):1)}}),(0,t.jsx)(C,{title:e("chat.threadMaintenance.pruneKeepTitle"),description:e("chat.threadMaintenance.pruneKeepConfirm",{count:A}),okText:e("chat.threadMaintenance.pruneKeepLatest"),cancelText:e("common.cancel"),onConfirm:()=>void q("keep_latest"),children:(0,t.jsx)(u,{loading:U,children:e("chat.threadMaintenance.pruneKeepLatest")})})]})]}),(0,t.jsx)(ae,{open:xe,title:e("chat.threadMaintenance.stateTitle"),footer:null,onCancel:ve,width:720,children:we?(0,t.jsx)(c.Text,{children:e("chat.threadMaintenance.loadingState")}):(0,t.jsx)("pre",{style:{maxHeight:"60vh",overflow:"auto",margin:0},children:ke})})]})},y=({label:r,children:e})=>(0,t.jsxs)("div",{children:[(0,t.jsx)(c.Text,{type:"secondary",style:{display:"block",fontSize:12},children:r}),(0,t.jsx)(c.Text,{strong:!0,children:e})]});export{We as ThreadMaintenancePanel};