llmxray 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +276 -244
  2. package/dist/assets/{AITrainingPage-Ck1bDWWB.js → AITrainingPage-DEU4UAR7.js} +1 -1
  3. package/dist/assets/AnalyticsPage-C7mNUAil.js +1 -0
  4. package/dist/assets/{BenchmarkPage-VzMNGUEy.js → BenchmarkPage-jiUqdHmg.js} +2 -2
  5. package/dist/assets/{ComparisonPage-BBliPm7K.js → ComparisonPage-BoBWSObY.js} +3 -3
  6. package/dist/assets/CostDashboardPage-BKQDsZhx.js +1 -0
  7. package/dist/assets/DashboardPage-CV8Ejgxv.js +116 -0
  8. package/dist/assets/{EmbeddingsPage-BIHHeJq6.js → EmbeddingsPage-DXjVT4eU.js} +1 -1
  9. package/dist/assets/{GoogleCallbackPage-2gGq0Swg.js → GoogleCallbackPage-BUIkYpZv.js} +1 -1
  10. package/dist/assets/{JsonTreeNode-CDR0az7J.js → JsonTreeNode-C0UNUwZm.js} +1 -1
  11. package/dist/assets/{ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-DkuvrY_5.js → ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-vQNvYFzV.js} +1 -1
  12. package/dist/assets/{RAGPage-BdXerRDW.js → RAGPage-Dv4UDEyz.js} +1 -1
  13. package/dist/assets/SessionPage-B0fMQGSB.js +15 -0
  14. package/dist/assets/{SettingsPage-B1wm-L6T.js → SettingsPage-DTJP-4xU.js} +1 -1
  15. package/dist/assets/{StatusBadge.vue_vue_type_script_setup_true_lang-J8rYaobd.js → StatusBadge.vue_vue_type_script_setup_true_lang-BiB0M6lv.js} +1 -1
  16. package/dist/assets/{StorageGauge.vue_vue_type_style_index_0_lang-Begwajgo.js → StorageGauge.vue_vue_type_style_index_0_lang-DToi3R0q.js} +1 -1
  17. package/dist/assets/{SystemPage-DDZrsYds.js → SystemPage-BPK15qwe.js} +2 -2
  18. package/dist/assets/{TabBar.vue_vue_type_script_setup_true_lang-DVCeD1qL.js → TabBar.vue_vue_type_script_setup_true_lang-BtGCdMZK.js} +1 -1
  19. package/dist/assets/{TokenStreamDisplay.vue_vue_type_script_setup_true_lang-rJpx5sU7.js → TokenStreamDisplay.vue_vue_type_script_setup_true_lang-B6juPZsY.js} +1 -1
  20. package/dist/assets/{ToolWorkshopPage-DnHp32vX.js → ToolWorkshopPage-DmpoHHaD.js} +3 -3
  21. package/dist/assets/{agent-store-BWO6HamI.js → agent-store-C6w1zV86.js} +1 -1
  22. package/dist/assets/{canvas-ai-db-anWOo2F0.js → canvas-ai-db-BpqhUp6k.js} +1 -1
  23. package/dist/assets/{download-BqPPd3_X.js → download-pCIjWOn5.js} +1 -1
  24. package/dist/assets/{generate-service-C3Z8NZaT.js → generate-service-DmtXqq_h.js} +1 -1
  25. package/dist/assets/{google-auth-store-CgUWvtRU.js → google-auth-store-Dgv2FihL.js} +1 -1
  26. package/dist/assets/index-534TcCbY.js +8 -0
  27. package/dist/assets/index-B72Sw9uL.css +1 -0
  28. package/dist/assets/{index-KhnkHbiC.js → index-ClITfJ3t.js} +1 -1
  29. package/dist/assets/{index-B7GdQF1S.js → index-DHuj6tKB.js} +1 -1
  30. package/dist/assets/info-Eg1tUw1x.js +1 -0
  31. package/dist/assets/{metrics-store-BMhkZ9B4.js → metrics-store-7m97Sb7w.js} +1 -1
  32. package/dist/assets/{papaparse.min-z5sNvmdo.js → papaparse.min-3FeAYh4d.js} +1 -1
  33. package/dist/assets/{pencil-Csf0-tn3.js → pencil-CZp68oBU.js} +1 -1
  34. package/dist/assets/{rag-store-Ch0N5LTe.js → rag-store-Bm0nxdec.js} +3 -3
  35. package/dist/assets/session-store-BQ0TF24S.js +1 -0
  36. package/dist/assets/{share-2-DIi3V2dc.js → share-2-CJJGZsZO.js} +1 -1
  37. package/dist/assets/{storage-store-uPTARmbg.js → storage-store-6qFwk_C5.js} +1 -1
  38. package/dist/assets/stream-handler-BM5egg14.js +4 -0
  39. package/dist/assets/{tool-workshop-store-koPpdoxb.js → tool-workshop-store-9_FKfdnT.js} +1 -1
  40. package/dist/assets/toolcall-store-C4Trr01T.js +1 -0
  41. package/dist/assets/{trash-2-aeVGvgIz.js → trash-2-DjfJXqVK.js} +1 -1
  42. package/dist/index.html +2 -2
  43. package/package.json +1 -1
  44. package/dist/assets/DashboardPage-CH15t_MS.js +0 -116
  45. package/dist/assets/SessionPage-B39x2A8D.js +0 -15
  46. package/dist/assets/index-ClE7gpZb.js +0 -8
  47. package/dist/assets/index-Dr1ztyT3.css +0 -1
  48. package/dist/assets/stream-handler-BuwD741F.js +0 -4
  49. package/dist/assets/toolcall-store-JKmpIFj3.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a1 as SO,w as Ge,b as ot,a2 as wO,W as JP,e as be,p as ht,s as Ki,a3 as wt,u as Se,B as fn,j as ye,g as bt,a4 as KP,m as lt,r as ze,a as Fe,a5 as Fs,a6 as PO,a7 as cr,a8 as pu,a9 as eT,f as he,F as gt,k as Jt,l as hi,y as vi,aa as jd,ab as tT,q as Ct,i as Qe,a0 as Mi,t as Te,ac as iT,ad as Zd,ae as nT,af as rT,ag as Xr,ah as ut,ai as nt,aj as io,ak as sT,al as TO,am as Vd,an as Mu,K as wr,h as CO,ao as aT,ap as oT,aq as kO,d as lT,A as EO,o as Tc,n as uT,$ as cT,v as Yi,C as Vn,D as ia,G as hT,Y as fT,U as ig,z as dT,T as pT}from"./index-ClE7gpZb.js";import{u as Ud}from"./tool-workshop-store-koPpdoxb.js";import{d as ng}from"./download-WPaeALA4.js";import{a as mT,u as gT}from"./toolcall-store-JKmpIFj3.js";import{canvasAiDB as qd}from"./canvas-ai-db-anWOo2F0.js";import{J as rg,a as yT,g as vT,b as OT}from"./JsonTreeNode-CDR0az7J.js";import{D as xT}from"./base-CrPFMexR.js";import{_ as AO}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{D as sg}from"./download-BqPPd3_X.js";import{T as bT}from"./trash-2-aeVGvgIz.js";class ST extends xT{constructor(){super(...arguments),this.tokenize=TT}equals(e,i,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
1
+ import{a1 as SO,w as Ge,b as ot,a2 as wO,W as JP,e as be,p as ht,s as Ki,a3 as wt,u as Se,B as fn,j as ye,g as bt,a4 as KP,m as lt,r as ze,a as Fe,a5 as Fs,a6 as PO,a7 as cr,a8 as pu,a9 as eT,f as he,F as gt,k as Jt,l as hi,y as vi,aa as jd,ab as tT,q as Ct,i as Qe,a0 as Mi,t as Te,ac as iT,ad as Zd,ae as nT,af as rT,ag as Xr,ah as ut,ai as nt,aj as io,ak as sT,al as TO,am as Vd,an as Mu,K as wr,h as CO,ao as aT,ap as oT,aq as kO,d as lT,A as EO,o as Tc,n as uT,$ as cT,v as Yi,C as Vn,D as ia,G as hT,Y as fT,U as ig,z as dT,T as pT}from"./index-534TcCbY.js";import{u as Ud}from"./tool-workshop-store-9_FKfdnT.js";import{d as ng}from"./download-WPaeALA4.js";import{u as mT}from"./toolcall-store-C4Trr01T.js";import{u as gT}from"./session-store-BQ0TF24S.js";import{canvasAiDB as qd}from"./canvas-ai-db-BpqhUp6k.js";import{J as rg,a as yT,g as vT,b as OT}from"./JsonTreeNode-C0UNUwZm.js";import{D as xT}from"./base-CrPFMexR.js";import{_ as AO}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{D as sg}from"./download-pCIjWOn5.js";import{T as bT}from"./trash-2-DjfJXqVK.js";class ST extends xT{constructor(){super(...arguments),this.tokenize=TT}equals(e,i,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
2
2
  `))&&(e=e.trim()),(!n.newlineIsToken||!i.includes(`
3
3
  `))&&(i=i.trim())):n.ignoreNewlineAtEof&&!n.newlineIsToken&&(e.endsWith(`
4
4
  `)&&(e=e.slice(0,-1)),i.endsWith(`
@@ -212,7 +212,7 @@ Respond with JSON: {"fixedCode": "<corrected function body>", "explanation": "<w
212
212
  constructor(\${params}) {
213
213
  \${}
214
214
  }
215
- }`,{label:"class",detail:"definition",type:"keyword"}),ii('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),ii('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],O8=oP.concat([ii("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),ii("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),ii("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),pO=new CB,lP=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function va(t){return(e,i)=>{let n=e.node.getChild("VariableDefinition");return n&&i(n,t),!0}}const x8=["FunctionDeclaration"],b8={FunctionDeclaration:va("function"),ClassDeclaration:va("class"),ClassExpression:()=>!0,EnumDeclaration:va("constant"),TypeAliasDeclaration:va("type"),NamespaceDeclaration:va("namespace"),VariableDefinition(t,e){t.matchContext(x8)||e(t,"variable")},TypeDefinition(t,e){e(t,"type")},__proto__:null};function uP(t,e){let i=pO.get(e);if(i)return i;let n=[],r=!0;function s(a,l){let u=t.sliceString(a.from,a.to);n.push({label:u,type:l})}return e.cursor(Pt.IncludeAnonymous).iterate(a=>{if(r)r=!1;else if(a.name){let l=b8[a.name];if(l&&l(a,s)||lP.has(a.name))return!1}else if(a.to-a.from>8192){for(let l of uP(t,a.node))n.push(l);return!1}}),pO.set(e,n),n}const mO=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,cP=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function S8(t){let e=Qt(t.state).resolveInner(t.pos,-1);if(cP.indexOf(e.name)>-1)return null;let i=e.name=="VariableName"||e.to-e.from<20&&mO.test(t.state.sliceDoc(e.from,e.to));if(!i&&!t.explicit)return null;let n=[];for(let r=e;r;r=r.parent)lP.has(r.name)&&(n=n.concat(uP(t.state.doc,r)));return{options:n,from:i?e.from:t.pos,validFor:mO}}const zr=zo.define({name:"javascript",parser:v8.configure({props:[Zp.add({IfStatement:mo({except:/^\s*({|else\b)/}),TryStatement:mo({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:UB,SwitchBody:t=>{let e=t.textAfter,i=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return t.baseIndent+(i?0:n?1:2)*t.unit},Block:VB({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"TemplateString BlockComment":()=>null,"Statement Property":mo({except:/^\s*{/}),JSXElement(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},JSXEscape(t){let e=/\s*\}/.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"JSXOpenTag JSXSelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),Up.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":XS,BlockComment(t){return{from:t.from+2,to:t.to-2}},JSXElement(t){let e=t.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let i=t.lastChild;return{from:e.to,to:i.type.isError?t.to:i.from}},"JSXSelfClosingTag JSXOpenTag"(t){var e;let i=(e=t.firstChild)===null||e===void 0?void 0:e.nextSibling,n=t.lastChild;return!i||i.type.isError?null:{from:i.to,to:n.type.isError?t.to:n.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),hP={test:t=>/^JSX/.test(t.name),facet:BS({commentTokens:{block:{open:"{/*",close:"*/}"}}})},w8=zr.configure({dialect:"ts"},"typescript"),P8=zr.configure({dialect:"jsx",props:[Xp.add(t=>t.isTop?[hP]:void 0)]}),T8=zr.configure({dialect:"jsx ts",props:[Xp.add(t=>t.isTop?[hP]:void 0)]},"typescript");let fP=t=>({label:t,type:"keyword"});const dP="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(fP),C8=dP.concat(["declare","implements","private","protected","public"].map(fP));function k8(t={}){let e=t.jsx?t.typescript?T8:P8:t.typescript?w8:zr,i=t.typescript?O8.concat(C8):oP.concat(dP);return new FS(e,[zr.data.of({autocomplete:p4(cP,Zw(i))}),zr.data.of({autocomplete:S8}),t.jsx?D8:[]])}function E8(t){for(;;){if(t.name=="JSXOpenTag"||t.name=="JSXSelfClosingTag"||t.name=="JSXFragmentTag")return t;if(t.name=="JSXEscape"||!t.parent)return null;t=t.parent}}function gO(t,e,i=t.length){for(let n=e?.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return t.sliceString(n.from,Math.min(n.to,i));return""}const A8=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),D8=_e.inputHandler.of((t,e,i,n,r)=>{if((A8?t.composing:t.compositionStarted)||t.state.readOnly||e!=i||n!=">"&&n!="/"||!zr.isActiveAt(t.state,e,-1))return!1;let s=r(),{state:a}=s,l=a.changeByRange(u=>{var h;let{head:c}=u,p=Qt(a).resolveInner(c-1,-1),v;if(p.name=="JSXStartTag"&&(p=p.parent),!(a.doc.sliceString(c-1,c)!=n||p.name=="JSXAttributeValue"&&p.to>c)){if(n==">"&&p.name=="JSXFragmentTag")return{range:u,changes:{from:c,insert:"</>"}};if(n=="/"&&p.name=="JSXStartCloseTag"){let g=p.parent,b=g.parent;if(b&&g.from==c-2&&((v=gO(a.doc,b.firstChild,c))||((h=b.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let m=`${v}>`;return{range:Oe.cursor(c+m.length,-1),changes:{from:c,insert:m}}}}else if(n==">"){let g=E8(p);if(g&&g.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(a.doc.sliceString(c,c+2))&&(v=gO(a.doc,g,c)))return{range:u,changes:{from:c,insert:`</${v}>`}}}}return{range:u}});return l.changes.empty?!1:(t.dispatch([s,a.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),_8=zp({String:ne.string,Number:ne.number,"True False":ne.bool,PropertyName:ne.propertyName,Null:ne.null,", :":ne.separator,"[ ]":ne.squareBracket,"{ }":ne.brace}),I8=Yo.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[_8],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),N8=zo.define({name:"json",parser:I8.configure({props:[Zp.add({Object:mo({except:/^\s*\}/}),Array:mo({except:/^\s*\]/})}),Up.add({"Object Array":XS})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function M8(){return new FS(N8)}const $8="#e5c07b",yO="#e06c75",L8="#56b6c2",B8="#ffffff",Nu="#abb2bf",Xd="#7d8799",Q8="#61afef",F8="#98c379",vO="#d19a66",R8="#c678dd",z8="#21252b",OO="#2c313a",xO="#282c34",Of="#353a42",X8="#3E4451",bO="#528bff",j8=_e.theme({"&":{color:Nu,backgroundColor:xO},".cm-content":{caretColor:bO},".cm-cursor, .cm-dropCursor":{borderLeftColor:bO},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:X8},".cm-panels":{backgroundColor:z8,color:Nu},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:xO,color:Xd,border:"none"},".cm-activeLineGutter":{backgroundColor:OO},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Of},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Of,borderBottomColor:Of},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:OO,color:Nu}}},{dark:!0}),Z8=cl.define([{tag:ne.keyword,color:R8},{tag:[ne.name,ne.deleted,ne.character,ne.propertyName,ne.macroName],color:yO},{tag:[ne.function(ne.variableName),ne.labelName],color:Q8},{tag:[ne.color,ne.constant(ne.name),ne.standard(ne.name)],color:vO},{tag:[ne.definition(ne.name),ne.separator],color:Nu},{tag:[ne.typeName,ne.className,ne.number,ne.changed,ne.annotation,ne.modifier,ne.self,ne.namespace],color:$8},{tag:[ne.operator,ne.operatorKeyword,ne.url,ne.escape,ne.regexp,ne.link,ne.special(ne.string)],color:L8},{tag:[ne.meta,ne.comment],color:Xd},{tag:ne.strong,fontWeight:"bold"},{tag:ne.emphasis,fontStyle:"italic"},{tag:ne.strikethrough,textDecoration:"line-through"},{tag:ne.link,color:Xd,textDecoration:"underline"},{tag:ne.heading,fontWeight:"bold",color:yO},{tag:[ne.atom,ne.bool,ne.special(ne.variableName)],color:vO},{tag:[ne.processingInstruction,ne.string,ne.inserted],color:F8},{tag:ne.invalid,color:B8}]),V8=[j8,HS(Z8)],go=ot({__name:"CodeEditor",props:{modelValue:{},language:{default:"typescript"},readonly:{type:Boolean,default:!1},placeholder:{default:""},minHeight:{default:"100px"}},emits:["update:modelValue"],setup(t,{emit:e}){const i=t,n=e,r=Fe(()=>{const a=[i.language==="json"?M8():k8({typescript:!0}),V8,_e.theme({"&":{backgroundColor:"var(--color-surface-base, #0f172a)",minHeight:i.minHeight},".cm-gutters":{backgroundColor:"var(--color-surface-base, #0f172a)",borderRight:"1px solid var(--color-border-default)",color:"var(--color-text-muted)"},".cm-activeLineGutter":{backgroundColor:"color-mix(in srgb, var(--color-accent) 10%, transparent)"},".cm-activeLine":{backgroundColor:"color-mix(in srgb, var(--color-accent) 5%, transparent)"},"&.cm-focused":{outline:"none"},".cm-cursor":{borderLeftColor:"var(--color-accent)"},".cm-selectionBackground":{backgroundColor:"color-mix(in srgb, var(--color-accent) 20%, transparent) !important"},".cm-content":{caretColor:"var(--color-accent)"}}),_e.lineWrapping];return i.readonly&&a.push(_e.editable.of(!1)),a});function s(a){n("update:modelValue",a)}return(a,l)=>(ye(),Ct(Se(IR),{"model-value":t.modelValue,extensions:r.value,placeholder:t.placeholder,style:hi({minHeight:t.minHeight,fontSize:"12px",borderRadius:"6px",overflow:"hidden",border:"1px solid var(--color-border-default)"}),"onUpdate:modelValue":s},null,8,["model-value","extensions","placeholder","style"]))}}),U8={class:"ai-diff"},q8={key:0,class:"diff-explanation"},W8={class:"diff-code"},Y8={class:"diff-actions"},G8=ot({__name:"AiDiffView",props:{oldCode:{},newCode:{},explanation:{}},emits:["accept","dismiss"],setup(t){const e=t,i=Fe(()=>PT(e.oldCode,e.newCode));return(n,r)=>(ye(),be("div",U8,[t.explanation?(ye(),be("div",q8,Te(t.explanation),1)):Qe("",!0),he("div",W8,[(ye(!0),be(gt,null,Jt(i.value,(s,a)=>(ye(),be("div",{key:a,class:bt(["diff-line",{added:s.added,removed:s.removed}])},Te(s.value),3))),128))]),he("div",Y8,[he("button",{class:"diff-accept",onClick:r[0]||(r[0]=s=>n.$emit("accept"))},Te(n.$t("tools.aiDiff.accept")),1),he("button",{class:"diff-dismiss",onClick:r[1]||(r[1]=s=>n.$emit("dismiss"))},Te(n.$t("tools.aiDiff.dismiss")),1)])]))}}),H8=AO(G8,[["__scopeId","data-v-01c9471b"]]),J8={class:"block-header"},K8={class:"block-badge"},e6=["value","placeholder"],t6=["disabled","title"],i6=["disabled","title"],n6={key:0,class:"thinking-bar nodrag"},r6={class:"thinking-text"},s6={key:1,class:"insights-row"},a6={key:2,class:"insights-row"},o6=["onClick"],l6={key:3,class:"insight-detail nodrag nowheel"},u6={class:"insight-desc"},c6={class:"insight-suggestion-label"},h6={key:4,class:"exec-badge-row"},f6={key:0,class:"exec-badge exec-executing"},d6={key:2,class:"exec-badge exec-failed"},p6=["disabled"],m6={key:5,class:"exec-result-panel nodrag nowheel"},g6={class:"block-section"},y6=["value","placeholder"],v6={key:6,class:"block-section nodrag nowheel"},O6=["placeholder"],x6={class:"intent-actions"},b6=["disabled"],S6={key:0,class:"intent-error"},w6={class:"block-section"},P6={class:"param-header"},T6=["value","onChange","placeholder"],C6=["value","onChange","placeholder"],k6=["onClick"],E6={key:0,class:"param-empty"},A6={class:"block-section probe-section"},D6={class:"probe-badge"},_6={key:0,class:"probe-panel nodrag nowheel"},I6={class:"probe-url-row"},N6=["placeholder"],M6=["disabled"],$6={class:"diag-row"},L6={key:0,class:"diag-tag"},B6={key:1,class:"diag-tag"},Q6={key:2,class:"diag-tag diag-openapi"},F6={key:0,class:"diag-auth"},R6={class:"config-section"},z6={class:"config-header"},X6={class:"config-label"},j6=["onUpdate:modelValue","placeholder"],Z6=["onUpdate:modelValue","placeholder"],V6=["onClick","title"],U6=["onClick"],q6={key:1,class:"config-section"},W6={class:"config-label"},Y6={key:2,class:"ep-section"},G6={class:"config-label"},H6=["placeholder"],J6={class:"ep-list"},K6=["onClick"],e7={class:"ep-path"},t7={key:0,class:"ep-summary"},i7={key:0,class:"param-empty"},n7={class:"probe-ai-row"},r7=["disabled"],s7={key:0,class:"auto-map-reasoning"},a7={class:"probe-tree"},o7={key:1,class:"probe-footer"},l7={class:"probe-count"},u7={key:4,class:"probe-error"},c7={key:5,class:"probe-raw"},h7={key:7,class:"block-section mappings-section"},f7={class:"mappings-header"},d7={key:0,class:"stale-badge",title:"Some mapped fields are missing from the function body"},p7={class:"mappings-list"},m7=["title"],g7={class:"block-section nodrag nowheel"},y7=ot({__name:"ToolFunctionNode",props:{data:{}},setup(t){const e=n1(),i=t;function n(K,ue){i.data.onUpdate?.(K,ue)}function r(K,ue,me){const Pe=i.data.parameters.map((Ve,He)=>He===K?{...Ve,[ue]:me}:{...Ve});n("parameters",Pe)}function s(){n("parameters",[...i.data.parameters,{name:"arg",type:"string"}])}function a(K){n("parameters",i.data.parameters.filter((ue,me)=>me!==K))}const l=Fe(()=>{const K=i.data.mappings;if(!K||K.length===0)return[];const ue=i.data.body;return K.filter(me=>!ue.includes(me.returnKey))}),u=Fe(()=>l.value.length>0),h=ze(!1),c=ze(!1),p=ze(e.getIntent(i.data.uid)??""),v=Fe(()=>e.drafts.get(i.data.uid)),g=Fe(()=>v.value?.loading??!1);async function b(){if(!p.value.trim()||!e.effectiveModel)return;e.setIntent(i.data.uid,p.value),e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"draft",code:"",explanation:"",loading:!0,intentText:p.value});const K=await Y$({model:e.effectiveModel,toolName:i.data.name,description:i.data.description,parameters:i.data.parameters,probeResponseSample:Q.value??void 0,intent:p.value});K.error?e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"draft",code:"",explanation:"",loading:!1,error:K.error,intentText:p.value}):e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"draft",code:K.code,explanation:K.explanation,loading:!1,trainingPairId:K.trainingPairId,intentText:p.value})}function m(){const K=v.value;!K||!K.code||(n("body",K.code),K.trainingPairId&&qd.updateAccepted(K.trainingPairId),e.clearDraft(i.data.uid))}function x(){e.clearDraft(i.data.uid)}const O=Fe(()=>e.insights.get(i.data.uid)),P=ze(null),S=ze(!1);Ge(()=>i.data.body,()=>{e.insights.get(i.data.uid)&&(e.clearInsights(i.data.uid),P.value=null)});const w=ze(null),C=["Thinking","Cogitating","Analyzing","Flexing","Scrutinizing","Neuroticizing","Polarizing","Rasterizing","Criticizing","Parameterizing","Inspecting","Evaluating","Dissecting","Probing","Examining","Parsing","Reviewing","Synthesizing"],E=ze(0);let k=null;const A=Fe(()=>C[E.value%C.length]);function $(){E.value=0,k=setInterval(()=>{E.value++},1500)}function F(){k&&(clearInterval(k),k=null)}function I(){if(!P.value?.suggestedCode){console.warn("[Insight] No suggestedCode to apply");return}const K=P.value.suggestedCode;console.log("[Insight] Applying fix, code length:",K.length),n("body",K),P.value=null}async function B(){if(!e.effectiveModel){w.value="No AI model selected. Choose one in the Canvas AI model selector.";return}S.value=!0,w.value=null,P.value=null,$();const K=await G$({model:e.effectiveModel,toolName:i.data.name,code:i.data.body,parameters:i.data.parameters});S.value=!1,F(),K.error?w.value=K.error:e.setInsights(i.data.uid,{toolId:i.data.uid,insights:K.insights,codeHash:i.data.body})}const j=ze(!1),M=ze("");async function q(){if(!e.effectiveModel||!Q.value)return;j.value=!0,M.value="";const K=await H$({model:e.effectiveModel,toolName:i.data.name,description:i.data.description,probeResponseSample:Q.value});j.value=!1,!K.error&&K.paths.length>0&&(M.value=K.reasoning,xe.value=new Set(K.paths))}const X=ze(!1);async function Y(){if(!e.effectiveModel)return;X.value=!0;const K=e.getIntent(i.data.uid),ue=await J$({model:e.effectiveModel,toolName:i.data.name,code:i.data.body,parameters:i.data.parameters,error:i.data.lastCallError??"Unknown error",arguments:i.data.lastCallArguments??{},originalIntent:K});X.value=!1,!ue.error&&ue.fixedCode&&e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"fix",code:ue.fixedCode,explanation:ue.explanation,loading:!1,trainingPairId:ue.trainingPairId})}const V=ze(!1),oe=ze("idle"),ae=ze(i.data.probeConfig?.url??""),fe=ze(i.data.probeConfig?.method??"GET"),D=ze(null),Z=ze(null),L=ze(null),se=ze(i.data.probeConfig?.headers?Object.entries(i.data.probeConfig.headers).map(([K,ue])=>({key:K,value:ue})):[]),de=ze(new Set(i.data.probeConfig?.secretHeaders??[]));function ie(K){const ue=se.value[K].key.trim();if(!ue)return;const me=new Set(de.value);me.has(ue)?me.delete(ue):me.add(ue),de.value=me}const R=ze(""),Q=ze(null),xe=ze(new Set),Re=ze(""),ke=ze(null),$e=Fe(()=>{if(!L.value)return[];const K=Re.value.toLowerCase();return K?L.value.endpoints.filter(ue=>ue.path.toLowerCase().includes(K)||ue.summary?.toLowerCase().includes(K)||ue.operationId?.toLowerCase().includes(K)):L.value.endpoints});function te(K){return K>=200&&K<300?"var(--color-success)":K>=300&&K<400?"var(--color-warning, #f9e2af)":"var(--color-error)"}function H(K){switch(K){case"GET":return"var(--color-accent)";case"POST":return"var(--color-success)";case"PUT":return"var(--color-warning, #f9e2af)";case"DELETE":return"var(--color-error)";case"PATCH":return"#cba6f7";default:return"var(--color-text-muted)"}}async function re(){const K=ae.value.trim();if(!K)return;oe.value="discovering",D.value=null,Z.value=null,L.value=null,Q.value=null,xe.value=new Set,ke.value=null;const ue={};for(const Ve of se.value)Ve.key.trim()&&(ue[Ve.key.trim()]=Ve.value);const[me,Pe]=await Promise.allSettled([s3(K,{method:fe.value,headers:Object.keys(ue).length>0?ue:void 0,body:(fe.value==="POST"||fe.value==="PUT")&&R.value||void 0}),l3(K)]);me.status==="fulfilled"&&(D.value=me.value,me.value.data&&(Q.value=me.value.data),me.value.authHint&&se.value.length===0&&(me.value.authHint.type==="bearer"?se.value=[{key:"Authorization",value:"Bearer "}]:me.value.authHint.type==="apikey"?se.value=[{key:"X-API-Key",value:""}]:me.value.authHint.type==="basic"&&(se.value=[{key:"Authorization",value:"Basic "}]))),Pe.status==="fulfilled"&&Pe.value.spec&&(Z.value=Pe.value,L.value=t3(Pe.value.spec)),oe.value="diagnosed"}function G(K){ke.value=K;const ue=L.value?.info.baseUrl??"",me=ue?`${ue.replace(/\/$/,"")}${K.path}`:K.path;ae.value=me,fe.value=K.method;const Pe=K.operationId??K.path.replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_|_$/g,"");n("name",Pe),(K.summary||K.description)&&n("description",K.summary??K.description??"");const Ve=K.parameters.filter(He=>He.in==="query"||He.in==="path").map(He=>({name:He.name,type:He.type}));Ve.length>0&&n("parameters",Ve)}function J(){se.value=[...se.value,{key:"",value:""}]}function le(K){se.value=se.value.filter((ue,me)=>me!==K)}function ve(K){const ue=new Set(xe.value);ue.has(K)?ue.delete(K):ue.add(K),xe.value=ue}function we(){const K=Array.from(xe.value);if(K.length===0)return;const ue={};for(const Je of se.value)Je.key.trim()&&(ue[Je.key.trim()]=Je.value);const me=Array.from(de.value),{body:Pe,addedParams:Ve}=yT(ae.value.trim(),K,{method:fe.value!=="GET"?fe.value:void 0,headers:Object.keys(ue).length>0?ue:void 0,body:(fe.value==="POST"||fe.value==="PUT")&&R.value||void 0,secretHeaders:me.length>0?me:void 0});n("body",Pe);const He=vT(K);if(n("mappings",He),Q.value){const Je=OT(He,Q.value);n("returnSchema",Je)}const Tt={url:ae.value.trim(),method:fe.value,headers:ue,...me.length>0?{secretHeaders:me}:{}};if(n("probeConfig",Tt),Ve.length>0){const Je=i.data.parameters.map(qt=>qt.name),ei=Ve.filter(qt=>!Je.includes(qt.name));ei.length>0&&n("parameters",[...i.data.parameters,...ei])}oe.value="picked"}return(K,ue)=>(ye(),be("div",{class:bt(["tool-block",{executing:t.data.executionStatus==="executing",completed:t.data.executionStatus==="completed",failed:t.data.executionStatus==="failed"}])},[ht(Se(Es),{type:"target",position:Se(Xe).Top},null,8,["position"]),he("div",J8,[he("span",K8,Te(K.$t("tools.node.badge")),1),he("input",{class:"block-name-input",value:t.data.name,onChange:ue[0]||(ue[0]=me=>n("name",me.target.value)),placeholder:K.$t("tools.node.functionNamePlaceholder")},null,40,e6),he("button",{class:bt(["ai-header-btn",{active:c.value}]),disabled:g.value,title:K.$t("tools.node.draftWithAi"),onClick:ue[1]||(ue[1]=Yi(me=>c.value=!c.value,["stop"]))},Te(g.value?"...":"✨"),11,t6),he("button",{class:"ai-header-btn ai-analyze",disabled:S.value||!t.data.body.trim(),title:K.$t("tools.node.aiInsights"),onClick:Yi(B,["stop"])},Te(S.value?"...":"🔍"),9,i6)]),S.value?(ye(),be("div",n6,[ue[14]||(ue[14]=he("span",{class:"thinking-dot"},null,-1)),he("span",r6,Te(A.value)+"...",1)])):Qe("",!0),w.value?(ye(),be("div",s6,[he("span",{class:"insight-badge error",onClick:ue[2]||(ue[2]=Yi(me=>w.value=null,["stop"]))},Te(w.value),1)])):Qe("",!0),O.value?.insights.length?(ye(),be("div",a6,[(ye(!0),be(gt,null,Jt(O.value.insights,(me,Pe)=>(ye(),be("span",{key:Pe,class:bt(["insight-badge",me.severity]),onClick:Yi(Ve=>P.value=P.value===me?null:me,["stop"])},Te(me.title),11,o6))),128))])):Qe("",!0),P.value?(ye(),be("div",l6,[he("p",u6,Te(P.value.description),1),P.value.suggestedCode?(ye(),be(gt,{key:0},[he("p",c6,Te(K.$t("tools.node.insightSuggestionLabel")),1),ht(go,{"model-value":P.value.suggestedCode,language:"typescript",readonly:!0,"min-height":"60px"},null,8,["model-value"])],64)):Qe("",!0),he("div",{class:"insight-actions",onMousedown:ue[4]||(ue[4]=Yi(()=>{},["stop"]))},[P.value.suggestedCode?(ye(),be("button",{key:0,class:"insight-apply",onClick:Yi(I,["stop","prevent"])},Te(K.$t("tools.node.applyFix")),1)):Qe("",!0),he("button",{class:"insight-close",onClick:ue[3]||(ue[3]=Yi(me=>P.value=null,["stop"]))},"× "+Te(K.$t("tools.node.closeInsight")),1)],32)])):Qe("",!0),t.data.executionStatus&&t.data.executionStatus!=="idle"?(ye(),be("div",h6,[t.data.executionStatus==="executing"?(ye(),be("span",f6,Te(K.$t("tools.node.running")),1)):t.data.executionStatus==="completed"?(ye(),be("button",{key:1,class:"exec-badge exec-completed",onClick:ue[5]||(ue[5]=Yi(me=>h.value=!h.value,["stop"]))}," ✓ "+Te(t.data.lastDurationMs!=null?`${t.data.lastDurationMs}ms`:K.$t("tools.node.done")),1)):t.data.executionStatus==="failed"?(ye(),be("span",d6," ✗ "+Te(K.$t("tools.node.failed")),1)):Qe("",!0),t.data.executionStatus==="failed"?(ye(),be("button",{key:3,class:"ai-fix-btn",disabled:X.value,onClick:Yi(Y,["stop"])},Te(X.value?"...":K.$t("tools.node.aiFix")),9,p6)):Qe("",!0)])):Qe("",!0),h.value&&t.data.lastResult!==void 0?(ye(),be("div",m6,[ht(rg,{label:"result",value:t.data.lastResult,path:"","selected-paths":new Set,depth:0,onTogglePath:()=>{}},null,8,["value","selected-paths"])])):Qe("",!0),he("div",g6,[he("label",null,Te(K.$t("tools.node.description")),1),he("input",{class:"block-input",value:t.data.description,onChange:ue[6]||(ue[6]=me=>n("description",me.target.value)),placeholder:K.$t("tools.node.descriptionPlaceholder")},null,40,y6)]),c.value?(ye(),be("div",v6,[he("label",null,Te(K.$t("tools.node.intent")),1),Vn(he("textarea",{"onUpdate:modelValue":ue[7]||(ue[7]=me=>p.value=me),class:"intent-textarea",placeholder:K.$t("tools.node.intentPlaceholder"),rows:"2"},null,8,O6),[[ia,p.value]]),he("div",x6,[he("button",{class:"intent-generate-btn",disabled:g.value||!p.value.trim(),onClick:b},Te(g.value?K.$t("tools.node.generating"):K.$t("tools.node.generate")),9,b6)]),v.value?.error?(ye(),be("div",S6,Te(v.value.error),1)):Qe("",!0)])):Qe("",!0),he("div",w6,[he("div",P6,[he("label",null,Te(K.$t("tools.node.parameters")),1),he("button",{class:"param-add-btn",onClick:s},Te(K.$t("tools.node.addParam")),1)]),(ye(!0),be(gt,null,Jt(t.data.parameters,(me,Pe)=>(ye(),be("div",{key:Pe,class:"param-row"},[he("input",{class:"param-name",value:me.name,onChange:Ve=>r(Pe,"name",Ve.target.value),placeholder:K.$t("tools.node.paramNamePlaceholder")},null,40,T6),he("input",{class:"param-type",value:me.type,onChange:Ve=>r(Pe,"type",Ve.target.value),placeholder:K.$t("tools.node.paramTypePlaceholder")},null,40,C6),he("button",{class:"param-remove-btn",onClick:Ve=>a(Pe)},"×",8,k6)]))),128)),t.data.parameters.length===0?(ye(),be("div",E6,Te(K.$t("tools.node.noParameters")),1)):Qe("",!0)]),he("div",A6,[he("div",{class:"probe-toggle",onClick:ue[8]||(ue[8]=me=>V.value=!V.value)},[he("span",{class:bt(["toggle-arrow",{open:V.value}])},"▶",2),he("label",null,Te(K.$t("tools.node.probeAndPick")),1),he("span",D6,Te(K.$t("tools.node.apiBadge")),1)]),V.value?(ye(),be("div",_6,[he("div",I6,[Vn(he("select",{"onUpdate:modelValue":ue[9]||(ue[9]=me=>fe.value=me),class:"method-select"},[...ue[15]||(ue[15]=[he("option",null,"GET",-1),he("option",null,"POST",-1),he("option",null,"PUT",-1),he("option",null,"DELETE",-1)])],512),[[hT,fe.value]]),Vn(he("input",{"onUpdate:modelValue":ue[10]||(ue[10]=me=>ae.value=me),class:"block-input probe-url",placeholder:K.$t("tools.node.urlPlaceholder"),onKeydown:fT(re,["enter"])},null,40,N6),[[ia,ae.value]]),he("button",{class:"probe-btn",disabled:oe.value==="discovering"||!ae.value.trim(),onClick:re},Te(oe.value==="discovering"?"...":K.$t("tools.node.probe")),9,M6)]),D.value&&oe.value!=="idle"?(ye(),be(gt,{key:0},[he("div",$6,[he("span",{class:"diag-status",style:hi({background:te(D.value.status)})},Te(D.value.status),5),D.value.headers["content-type"]?(ye(),be("span",L6,Te(D.value.headers["content-type"].split(";")[0]),1)):Qe("",!0),D.value.headers.server?(ye(),be("span",B6,Te(D.value.headers.server),1)):Qe("",!0),L.value?(ye(),be("span",Q6," OpenAPI · "+Te(L.value.endpoints.length)+" endpoints ",1)):Qe("",!0)]),D.value.authHint?(ye(),be("div",F6,[ue[16]||(ue[16]=he("span",{class:"diag-auth-icon"},"🔒",-1)),he("span",null,Te(D.value.authHint.message),1)])):Qe("",!0)],64)):Qe("",!0),he("div",R6,[he("div",z6,[he("span",X6,Te(K.$t("tools.node.headers")),1),he("button",{class:"param-add-btn",onClick:J},Te(K.$t("tools.node.addHeader")),1)]),(ye(!0),be(gt,null,Jt(se.value,(me,Pe)=>(ye(),be("div",{key:Pe,class:"param-row"},[Vn(he("input",{class:"param-name","onUpdate:modelValue":Ve=>se.value[Pe].key=Ve,placeholder:K.$t("tools.node.headerNamePlaceholder")},null,8,j6),[[ia,se.value[Pe].key]]),Vn(he("input",{class:bt(["param-type",{"secret-masked":de.value.has(se.value[Pe].key.trim())}]),"onUpdate:modelValue":Ve=>se.value[Pe].value=Ve,placeholder:K.$t("tools.node.headerValuePlaceholder")},null,10,Z6),[[ia,se.value[Pe].value]]),he("button",{class:bt(["secret-toggle-btn",{active:de.value.has(se.value[Pe].key.trim())}]),onClick:Ve=>ie(Pe),title:K.$t("tools.node.markAsSecret")}," 🔒 ",10,V6),he("button",{class:"param-remove-btn",onClick:Ve=>le(Pe)},"×",8,U6)]))),128))]),fe.value==="POST"||fe.value==="PUT"?(ye(),be("div",q6,[he("span",W6,Te(K.$t("tools.node.requestBody")),1),ht(go,{modelValue:R.value,"onUpdate:modelValue":ue[11]||(ue[11]=me=>R.value=me),language:"json","min-height":"60px",placeholder:'{"key": "value"}'},null,8,["modelValue"])])):Qe("",!0),L.value&&L.value.endpoints.length>0?(ye(),be("div",Y6,[he("span",G6,Te(K.$t("tools.node.endpoints")),1),Vn(he("input",{"onUpdate:modelValue":ue[12]||(ue[12]=me=>Re.value=me),class:"block-input ep-search",placeholder:K.$t("tools.node.searchEndpoints")},null,8,H6),[[ia,Re.value]]),he("div",J6,[(ye(!0),be(gt,null,Jt($e.value,me=>(ye(),be("div",{key:me.method+me.path,class:bt(["ep-row",{selected:ke.value===me}]),onClick:Pe=>G(me)},[he("span",{class:"ep-method",style:hi({background:H(me.method)})},Te(me.method),5),he("span",e7,Te(me.path),1),me.summary?(ye(),be("span",t7,Te(me.summary),1)):Qe("",!0)],10,K6))),128)),$e.value.length===0?(ye(),be("div",i7,Te(K.$t("tools.node.noMatchingEndpoints")),1)):Qe("",!0)])])):Qe("",!0),Q.value&&D.value&&D.value.ok?(ye(),be(gt,{key:3},[he("div",n7,[he("button",{class:"ai-suggest-btn",disabled:j.value,onClick:q},Te(j.value?K.$t("tools.node.thinking"):K.$t("tools.node.aiSuggest")),9,r7)]),M.value?(ye(),be("div",s7,Te(M.value),1)):Qe("",!0),he("div",a7,[ht(rg,{label:"response",value:Q.value,path:"","selected-paths":xe.value,depth:0,onTogglePath:ve},null,8,["value","selected-paths"])]),xe.value.size>0?(ye(),be("div",o7,[he("span",l7,Te(xe.value.size)+" "+Te(xe.value.size!==1?K.$t("tools.node.fields"):K.$t("tools.node.field")),1),he("button",{class:"probe-apply-btn",onClick:we},Te(K.$t("tools.node.apply")),1)])):Qe("",!0)],64)):Qe("",!0),D.value&&D.value.error&&!D.value.data?(ye(),be("div",u7,Te(D.value.error),1)):Qe("",!0),D.value?.rawText?(ye(),be("pre",c7,Te(D.value.rawText),1)):Qe("",!0)])):Qe("",!0)]),t.data.mappings&&t.data.mappings.length>0?(ye(),be("div",h7,[he("div",f7,[he("label",null,Te(K.$t("tools.node.mappings")),1),u.value?(ye(),be("span",d7,Te(K.$t("tools.node.outOfSync")),1)):Qe("",!0)]),he("div",p7,[(ye(!0),be(gt,null,Jt(t.data.mappings,me=>(ye(),be("span",{key:me.jsonPath,class:bt(["mapping-tag",{stale:l.value.some(Pe=>Pe.jsonPath===me.jsonPath)}]),title:me.jsonPath},Te(me.returnKey),11,m7))),128))])])):Qe("",!0),he("div",g7,[he("label",null,Te(K.$t("tools.node.bodyLabel")),1),v.value&&!v.value.loading&&v.value.code?(ye(),Ct(H8,{key:0,"old-code":t.data.body,"new-code":v.value.code,explanation:v.value.explanation,onAccept:m,onDismiss:x},null,8,["old-code","new-code","explanation"])):(ye(),Ct(go,{key:1,"model-value":t.data.body,language:"typescript","min-height":"100px",placeholder:K.$t("tools.node.bodyPlaceholder"),"onUpdate:modelValue":ue[13]||(ue[13]=me=>n("body",me))},null,8,["model-value","placeholder"]))]),ht(Se(Es),{type:"source",position:Se(Xe).Bottom},null,8,["position"])],2))}}),v7=AO(y7,[["__scopeId","data-v-655b6640"]]),O7={class:"flex h-full w-full relative"},x7={key:0,class:"w-[440px] flex flex-col border-e border-border-default bg-surface-base shrink-0"},b7={class:"p-3 border-b border-border-default flex items-center justify-between"},S7={class:"flex items-center gap-2"},w7={class:"text-sm font-semibold text-text-primary"},P7={class:"flex border-b border-border-default"},T7={class:"flex-1 flex flex-col p-3 gap-2 min-h-0 overflow-auto"},C7={class:"flex-1 flex flex-col p-3 gap-2 min-h-0"},k7={class:"flex items-center justify-between"},E7={class:"text-xs text-text-muted"},A7={class:"flex-1 overflow-auto"},D7={key:0,class:"p-3 border-t border-border-default"},_7={class:"text-xs text-warning uppercase tracking-wider"},I7={class:"mt-1 text-xs text-warning/80 list-disc ps-4 space-y-0.5"},N7={class:"p-3 border-t border-border-default text-xs text-text-muted"},M7={class:"flex-1 relative min-h-0 overflow-hidden"},$7={key:0,class:"absolute inset-0 flex flex-col items-center justify-center pointer-events-none"},L7={class:"text-center pointer-events-auto"},B7={class:"text-text-muted text-sm mb-4"},Q7={class:"flex items-center gap-3"},F7={class:"absolute top-3 right-3 z-10 flex items-center gap-2"},R7=["value"],z7={value:""},X7=["value"],j7={class:"relative"},Z7={key:1,class:"absolute end-0 top-full z-20 mt-1 w-56 rounded-lg border border-border-default bg-surface-raised shadow-lg py-1"},V7=["title"],U7={key:1,class:"absolute inset-0 z-50 flex items-center justify-center bg-black/40"},q7={class:"rounded-xl bg-surface-raised border border-border-default p-6 shadow-2xl max-w-xs text-center"},W7={class:"text-sm text-text-primary mb-1 font-semibold"},Y7={class:"text-xs text-text-muted mb-4"},G7={class:"flex items-center justify-center gap-3"},H7={key:1,class:"w-[280px] flex flex-col border-s border-border-default bg-surface-base shrink-0"},J7={class:"p-3 border-b border-border-default flex items-center justify-between"},K7={class:"text-sm font-semibold text-text-primary"},e9={class:"flex-1 overflow-y-auto p-2 space-y-1"},t9=["title","onClick"],i9={class:"min-w-0 flex-1"},n9={class:"truncate text-[10px] text-text-muted"},r9=["title","onClick"],s9=["title","onClick"],a9={key:0,class:"px-3 py-4 text-xs text-text-muted text-center"},o9={class:"p-3 border-t border-border-default text-xs text-text-muted"},l9=ot({__name:"ToolCanvasView",emits:["add-template"],setup(t,{emit:e}){const i=e,n={"tool-function":io(v7)},r=Ud(),s=n1(),a=EO(),{flowNodes:l,flowEdges:u,combinedCode:h,codeWarnings:c,codeSyncStatus:p,schemas:v,onNodeDragStop:g,onNodesDelete:b,onCodeEdit:m,addNewTool:x}=j$(),{fitView:O}=vt();fn(()=>{a.models.length===0&&a.fetchModels()});const P=ze(!1),S=ze("code");Ge(P,()=>{l.value.length>0&&setTimeout(()=>{O({padding:.3,duration:300})},50)});const w=ze(!1);Ge(w,()=>{l.value.length>0&&setTimeout(()=>{O({padding:.3,duration:300})},50)});function C(X){r.removeTool(X)}const E=ze(!1);function k(){r.clearAll(),E.value=!1}const A=Fe(()=>JSON.stringify(v.value,null,2));function $(X){g({node:X.node})}function F(X){for(const Y of X)Y.type==="remove"&&b([{id:Y.id}])}function I(){const X=x();vi(()=>{O({nodes:[X],padding:.5,duration:300})})}async function B(){try{await navigator.clipboard.writeText(A.value)}catch{}}const j=ze(!1);function M(){const X=r.allTools.map(Y=>Y.definition);ng(X,"llmxray-tools.json"),j.value=!1}function q(X){const Y=r.allTools.find(V=>V.id===X);Y&&ng(Y.definition,`tool-${Y.definition.function.name}.json`)}return(X,Y)=>(ye(),be("div",O7,[P.value?(ye(),be("div",x7,[he("div",b7,[he("div",S7,[he("span",w7,Te(X.$t("tools.canvas.codePanel")),1),he("span",{class:bt(["sync-dot",Se(p)])},null,2)]),he("button",{class:"text-xs text-text-muted hover:text-text-primary transition-colors bg-transparent border-none cursor-pointer",onClick:Y[0]||(Y[0]=V=>P.value=!1)},Te(X.$t("tools.canvas.close")),1)]),he("div",P7,[he("button",{onClick:Y[1]||(Y[1]=V=>S.value="code"),class:bt(["flex-1 px-3 py-2 text-xs uppercase tracking-wider border-none cursor-pointer transition-colors",S.value==="code"?"bg-surface-raised text-accent font-bold":"bg-transparent text-text-muted"])},Te(X.$t("tools.canvas.source")),3),he("button",{onClick:Y[2]||(Y[2]=V=>S.value="schema"),class:bt(["flex-1 px-3 py-2 text-xs uppercase tracking-wider border-none cursor-pointer transition-colors",S.value==="schema"?"bg-surface-raised text-success font-bold":"bg-transparent text-text-muted"])},Te(X.$t("tools.canvas.schema")),3)]),Vn(he("div",T7,[ht(go,{"model-value":Se(h),language:"typescript",placeholder:"Combined tool source...","min-height":"200px","onUpdate:modelValue":Se(m)},null,8,["model-value","onUpdate:modelValue"])],512),[[ig,S.value==="code"]]),Vn(he("div",C7,[he("div",k7,[he("span",E7,Te(X.$t("tools.canvas.schemaManifest")),1),he("button",{onClick:B,class:"px-2 py-1 text-xs rounded bg-surface-overlay text-text-secondary hover:bg-surface-raised transition-colors cursor-pointer border-none"},Te(X.$t("tools.canvas.copy")),1)]),he("div",A7,[ht(go,{"model-value":A.value,language:"json",readonly:!0,"min-height":"200px"},null,8,["model-value"])])],512),[[ig,S.value==="schema"]]),Se(c).length>0?(ye(),be("div",D7,[he("label",_7,Te(X.$t("tools.canvas.warnings")),1),he("ul",I7,[(ye(!0),be(gt,null,Jt(Se(c),(V,oe)=>(ye(),be("li",{key:oe},Te(V),1))),128))])])):Qe("",!0),he("div",N7,Te(Se(l).length)+" tool"+Te(Se(l).length!==1?"s":"")+" · "+Te(Se(v).length)+" schema"+Te(Se(v).length!==1?"s":""),1)])):Qe("",!0),he("div",M7,[ht(Se(_D),{nodes:Se(l),edges:Se(u),"node-types":n,"default-viewport":{x:40,y:40,zoom:1},"min-zoom":.3,"max-zoom":2,"fit-view-on-init":Se(l).length>0,"fit-view-on-init-options":{padding:.3,minZoom:.6,maxZoom:1.2},class:"canvas-flow",onNodeDragStop:$,onNodesChange:F},{default:Ki(()=>[ht(Se(FD),{gap:24,size:1,"pattern-color":"var(--color-border-default)"}),ht(Se(g_)),ht(Se(JM))]),_:1},8,["nodes","edges","fit-view-on-init"]),Se(l).length===0?(ye(),be("div",$7,[he("div",L7,[he("div",B7,Te(X.$t("tools.canvas.emptyState")),1),he("div",Q7,[he("button",{onClick:I,class:"px-4 py-2 rounded-lg bg-accent text-surface-base font-semibold text-sm hover:opacity-90 transition-opacity cursor-pointer border-none"},Te(X.$t("tools.canvas.newTool")),1),he("button",{onClick:Y[3]||(Y[3]=V=>i("add-template")),class:"px-4 py-2 rounded-lg border border-dashed border-border-default text-text-muted text-sm font-medium hover:border-accent hover:text-text-primary transition-colors cursor-pointer bg-transparent"},Te(X.$t("tools.canvas.fromTemplate")),1)])])])):Qe("",!0),he("div",F7,[Se(a).chatModelNames.length>0?(ye(),be("select",{key:0,value:Se(s).canvasAiModel??"",onChange:Y[4]||(Y[4]=V=>Se(s).setCanvasAiModel(V.target.value||null)),class:"canvas-ai-model-select px-2 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs border border-border-default shadow-lg cursor-pointer"},[he("option",z7,"AI: "+Te(Se(a).chatModelNames[0]??"none"),1),(ye(!0),be(gt,null,Jt(Se(a).chatModelNames,V=>(ye(),be("option",{key:V,value:V}," AI: "+Te(V)+" "+Te(Se(a).capabilityIcons(V)),9,X7))),128))],40,R7)):Qe("",!0),he("div",j7,[he("button",{class:"flex items-center gap-1 px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-border-default shadow-lg",onClick:Y[5]||(Y[5]=V=>j.value=!j.value)},[ht(Se(sg),{class:"h-3.5 w-3.5"}),CO(" "+Te(X.$t("tools.canvas.export")),1)]),j.value?(ye(),be("div",{key:0,class:"fixed inset-0 z-10",onClick:Y[6]||(Y[6]=V=>j.value=!1)})):Qe("",!0),j.value?(ye(),be("div",Z7,[he("button",{class:"w-full px-3 py-2 text-start text-xs text-text-secondary hover:bg-surface-overlay",onClick:Y[7]||(Y[7]=V=>{Se(K$)(),j.value=!1})},Te(X.$t("tools.canvas.exportTitle")),1),he("button",{class:"w-full px-3 py-2 text-start text-xs text-text-secondary hover:bg-surface-overlay",onClick:M},Te(X.$t("tools.canvas.exportAllJson")),1)])):Qe("",!0)]),P.value?Qe("",!0):(ye(),be("button",{key:1,onClick:Y[8]||(Y[8]=V=>P.value=!0),class:"px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-border-default shadow-lg"},Te(X.$t("tools.canvas.codePanel")),1)),he("button",{onClick:Y[9]||(Y[9]=V=>w.value=!w.value),class:bt(["px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-border-default shadow-lg",w.value?"text-accent":"text-text-secondary"])},Te(X.$t("tools.canvas.toolLibrary")),3),Se(l).length>0?(ye(),be("button",{key:2,onClick:Y[10]||(Y[10]=V=>E.value=!0),class:"px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay hover:text-error transition-colors cursor-pointer border border-border-default shadow-lg",title:X.$t("tools.canvas.clearAllTitle")},Te(X.$t("tools.canvas.clearAll")),9,V7)):Qe("",!0),he("button",{onClick:Y[11]||(Y[11]=V=>i("add-template")),class:"px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-dashed border-border-default shadow-lg"},Te(X.$t("tools.canvas.fromTemplate")),1),Se(l).length>0?(ye(),be("button",{key:3,onClick:I,class:"px-3 py-1.5 rounded-lg bg-accent/90 text-surface-base font-semibold text-xs hover:bg-accent transition-colors cursor-pointer border-none shadow-lg"},Te(X.$t("tools.canvas.newTool")),1)):Qe("",!0)]),E.value?(ye(),be("div",U7,[he("div",q7,[he("p",W7,Te(X.$t("tools.canvas.clearAllConfirm")),1),he("p",Y7,Te(X.$t("tools.canvas.clearAllWarning",{count:Se(l).length})),1),he("div",G7,[he("button",{onClick:Y[12]||(Y[12]=V=>E.value=!1),class:"px-4 py-1.5 rounded-lg text-xs text-text-secondary bg-surface-overlay hover:bg-surface-raised transition-colors cursor-pointer border border-border-default"},Te(X.$t("tools.canvas.cancel")),1),he("button",{onClick:k,class:"px-4 py-1.5 rounded-lg text-xs text-white bg-error hover:opacity-90 transition-opacity cursor-pointer border-none"},Te(X.$t("tools.canvas.deleteAll")),1)])])])):Qe("",!0)]),w.value?(ye(),be("div",H7,[he("div",J7,[he("span",K7,Te(X.$t("tools.canvas.toolLibrary")),1),he("button",{class:"text-xs text-text-muted hover:text-text-primary transition-colors bg-transparent border-none cursor-pointer",onClick:Y[13]||(Y[13]=V=>w.value=!1)},Te(X.$t("tools.canvas.close")),1)]),he("div",e9,[(ye(!0),be(gt,null,Jt(Se(r).allTools,V=>(ye(),be("div",{key:V.id,class:"flex items-center gap-2 rounded-lg px-3 py-2 text-xs hover:bg-surface-overlay transition-colors"},[he("button",{class:bt(["h-4 w-7 shrink-0 rounded-full transition-colors",V.enabled?"bg-accent":"bg-surface-overlay"]),title:V.enabled?X.$t("tools.canvas.disableForChat"):X.$t("tools.canvas.enableForChat"),onClick:oe=>Se(r).toggleEnabled(V.id)},[he("span",{class:bt(["block h-3 w-3 rounded-full bg-white transition-transform",V.enabled?"translate-x-3.5":"translate-x-0.5"])},null,2)],10,t9),he("div",i9,[he("span",{class:bt(["font-mono block",V.enabled?"text-text-primary":"text-text-muted"])},Te(V.definition.function.name),3),he("p",n9,Te(V.definition.function.description),1)]),he("button",{class:"shrink-0 text-text-muted hover:text-accent transition-colors bg-transparent border-none cursor-pointer",title:X.$t("tools.canvas.exportToolJson"),onClick:oe=>q(V.id)},[ht(Se(sg),{class:"h-3.5 w-3.5"})],8,r9),he("button",{class:"shrink-0 text-text-muted hover:text-error transition-colors bg-transparent border-none cursor-pointer",title:X.$t("tools.canvas.deleteToolTitle"),onClick:oe=>C(V.id)},[ht(Se(bT),{class:"h-3.5 w-3.5"})],8,s9)]))),128)),Se(r).allTools.length===0?(ye(),be("p",a9,Te(X.$t("tools.canvas.noToolsYet")),1)):Qe("",!0)]),he("div",o9,Te(Se(r).enabledTools.length)+"/"+Te(Se(r).allTools.length)+" "+Te(X.$t("tools.canvas.enabledForChat")),1)])):Qe("",!0)]))}}),u9={class:"flex h-full overflow-hidden flex-col"},c9={class:"bg-surface-raised rounded-xl border border-border-default shadow-xl w-[480px] max-h-[70vh] overflow-hidden"},h9={class:"p-4 border-b border-border-default"},f9={class:"text-sm font-medium text-text-primary"},d9={class:"text-[10px] text-text-muted mt-0.5"},p9={class:"p-3 space-y-4 overflow-y-auto max-h-[50vh]"},m9={class:"text-[10px] font-semibold text-text-muted uppercase tracking-wider mb-2 px-1"},g9={class:"space-y-1.5"},y9=["onClick"],v9={class:"flex items-center justify-between"},O9={class:"text-xs font-medium text-text-primary"},x9={class:"text-[10px] text-text-muted mt-1"},b9={class:"p-3 border-t border-border-default"},R9=ot({__name:"ToolWorkshopPage",setup(t){const e=Ud(),{t:i}=dT(),n=ze(!1),r=[{name:"Current Time",description:"Returns the current date and time",category:"utility",definition:{type:"function",function:{name:"get_current_time",description:"Get the current date and time in ISO format",parameters:{type:"object",properties:{},required:[]}}},code:"return new Date().toISOString()"},{name:"Web Fetch",description:"Fetch readable text or JSON from a URL",category:"api",definition:{type:"function",function:{name:"fetch_url",description:"Fetch the content of a web page or API endpoint. Returns extracted text for HTML pages, or raw JSON for API responses.",parameters:{type:"object",properties:{url:{type:"string",description:"The URL to fetch"}},required:["url"]}}},code:`const res = await fetch(args.url)
215
+ }`,{label:"class",detail:"definition",type:"keyword"}),ii('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),ii('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],O8=oP.concat([ii("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),ii("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),ii("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),pO=new CB,lP=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function va(t){return(e,i)=>{let n=e.node.getChild("VariableDefinition");return n&&i(n,t),!0}}const x8=["FunctionDeclaration"],b8={FunctionDeclaration:va("function"),ClassDeclaration:va("class"),ClassExpression:()=>!0,EnumDeclaration:va("constant"),TypeAliasDeclaration:va("type"),NamespaceDeclaration:va("namespace"),VariableDefinition(t,e){t.matchContext(x8)||e(t,"variable")},TypeDefinition(t,e){e(t,"type")},__proto__:null};function uP(t,e){let i=pO.get(e);if(i)return i;let n=[],r=!0;function s(a,l){let u=t.sliceString(a.from,a.to);n.push({label:u,type:l})}return e.cursor(Pt.IncludeAnonymous).iterate(a=>{if(r)r=!1;else if(a.name){let l=b8[a.name];if(l&&l(a,s)||lP.has(a.name))return!1}else if(a.to-a.from>8192){for(let l of uP(t,a.node))n.push(l);return!1}}),pO.set(e,n),n}const mO=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,cP=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function S8(t){let e=Qt(t.state).resolveInner(t.pos,-1);if(cP.indexOf(e.name)>-1)return null;let i=e.name=="VariableName"||e.to-e.from<20&&mO.test(t.state.sliceDoc(e.from,e.to));if(!i&&!t.explicit)return null;let n=[];for(let r=e;r;r=r.parent)lP.has(r.name)&&(n=n.concat(uP(t.state.doc,r)));return{options:n,from:i?e.from:t.pos,validFor:mO}}const zr=zo.define({name:"javascript",parser:v8.configure({props:[Zp.add({IfStatement:mo({except:/^\s*({|else\b)/}),TryStatement:mo({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:UB,SwitchBody:t=>{let e=t.textAfter,i=/^\s*\}/.test(e),n=/^\s*(case|default)\b/.test(e);return t.baseIndent+(i?0:n?1:2)*t.unit},Block:VB({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"TemplateString BlockComment":()=>null,"Statement Property":mo({except:/^\s*{/}),JSXElement(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},JSXEscape(t){let e=/\s*\}/.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"JSXOpenTag JSXSelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),Up.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":XS,BlockComment(t){return{from:t.from+2,to:t.to-2}},JSXElement(t){let e=t.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let i=t.lastChild;return{from:e.to,to:i.type.isError?t.to:i.from}},"JSXSelfClosingTag JSXOpenTag"(t){var e;let i=(e=t.firstChild)===null||e===void 0?void 0:e.nextSibling,n=t.lastChild;return!i||i.type.isError?null:{from:i.to,to:n.type.isError?t.to:n.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),hP={test:t=>/^JSX/.test(t.name),facet:BS({commentTokens:{block:{open:"{/*",close:"*/}"}}})},w8=zr.configure({dialect:"ts"},"typescript"),P8=zr.configure({dialect:"jsx",props:[Xp.add(t=>t.isTop?[hP]:void 0)]}),T8=zr.configure({dialect:"jsx ts",props:[Xp.add(t=>t.isTop?[hP]:void 0)]},"typescript");let fP=t=>({label:t,type:"keyword"});const dP="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(fP),C8=dP.concat(["declare","implements","private","protected","public"].map(fP));function k8(t={}){let e=t.jsx?t.typescript?T8:P8:t.typescript?w8:zr,i=t.typescript?O8.concat(C8):oP.concat(dP);return new FS(e,[zr.data.of({autocomplete:p4(cP,Zw(i))}),zr.data.of({autocomplete:S8}),t.jsx?D8:[]])}function E8(t){for(;;){if(t.name=="JSXOpenTag"||t.name=="JSXSelfClosingTag"||t.name=="JSXFragmentTag")return t;if(t.name=="JSXEscape"||!t.parent)return null;t=t.parent}}function gO(t,e,i=t.length){for(let n=e?.firstChild;n;n=n.nextSibling)if(n.name=="JSXIdentifier"||n.name=="JSXBuiltin"||n.name=="JSXNamespacedName"||n.name=="JSXMemberExpression")return t.sliceString(n.from,Math.min(n.to,i));return""}const A8=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),D8=_e.inputHandler.of((t,e,i,n,r)=>{if((A8?t.composing:t.compositionStarted)||t.state.readOnly||e!=i||n!=">"&&n!="/"||!zr.isActiveAt(t.state,e,-1))return!1;let s=r(),{state:a}=s,l=a.changeByRange(u=>{var h;let{head:c}=u,p=Qt(a).resolveInner(c-1,-1),v;if(p.name=="JSXStartTag"&&(p=p.parent),!(a.doc.sliceString(c-1,c)!=n||p.name=="JSXAttributeValue"&&p.to>c)){if(n==">"&&p.name=="JSXFragmentTag")return{range:u,changes:{from:c,insert:"</>"}};if(n=="/"&&p.name=="JSXStartCloseTag"){let g=p.parent,b=g.parent;if(b&&g.from==c-2&&((v=gO(a.doc,b.firstChild,c))||((h=b.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let m=`${v}>`;return{range:Oe.cursor(c+m.length,-1),changes:{from:c,insert:m}}}}else if(n==">"){let g=E8(p);if(g&&g.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(a.doc.sliceString(c,c+2))&&(v=gO(a.doc,g,c)))return{range:u,changes:{from:c,insert:`</${v}>`}}}}return{range:u}});return l.changes.empty?!1:(t.dispatch([s,a.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),_8=zp({String:ne.string,Number:ne.number,"True False":ne.bool,PropertyName:ne.propertyName,Null:ne.null,", :":ne.separator,"[ ]":ne.squareBracket,"{ }":ne.brace}),I8=Yo.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[_8],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),N8=zo.define({name:"json",parser:I8.configure({props:[Zp.add({Object:mo({except:/^\s*\}/}),Array:mo({except:/^\s*\]/})}),Up.add({"Object Array":XS})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function M8(){return new FS(N8)}const $8="#e5c07b",yO="#e06c75",L8="#56b6c2",B8="#ffffff",Nu="#abb2bf",Xd="#7d8799",Q8="#61afef",F8="#98c379",vO="#d19a66",R8="#c678dd",z8="#21252b",OO="#2c313a",xO="#282c34",Of="#353a42",X8="#3E4451",bO="#528bff",j8=_e.theme({"&":{color:Nu,backgroundColor:xO},".cm-content":{caretColor:bO},".cm-cursor, .cm-dropCursor":{borderLeftColor:bO},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:X8},".cm-panels":{backgroundColor:z8,color:Nu},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:xO,color:Xd,border:"none"},".cm-activeLineGutter":{backgroundColor:OO},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Of},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Of,borderBottomColor:Of},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:OO,color:Nu}}},{dark:!0}),Z8=cl.define([{tag:ne.keyword,color:R8},{tag:[ne.name,ne.deleted,ne.character,ne.propertyName,ne.macroName],color:yO},{tag:[ne.function(ne.variableName),ne.labelName],color:Q8},{tag:[ne.color,ne.constant(ne.name),ne.standard(ne.name)],color:vO},{tag:[ne.definition(ne.name),ne.separator],color:Nu},{tag:[ne.typeName,ne.className,ne.number,ne.changed,ne.annotation,ne.modifier,ne.self,ne.namespace],color:$8},{tag:[ne.operator,ne.operatorKeyword,ne.url,ne.escape,ne.regexp,ne.link,ne.special(ne.string)],color:L8},{tag:[ne.meta,ne.comment],color:Xd},{tag:ne.strong,fontWeight:"bold"},{tag:ne.emphasis,fontStyle:"italic"},{tag:ne.strikethrough,textDecoration:"line-through"},{tag:ne.link,color:Xd,textDecoration:"underline"},{tag:ne.heading,fontWeight:"bold",color:yO},{tag:[ne.atom,ne.bool,ne.special(ne.variableName)],color:vO},{tag:[ne.processingInstruction,ne.string,ne.inserted],color:F8},{tag:ne.invalid,color:B8}]),V8=[j8,HS(Z8)],go=ot({__name:"CodeEditor",props:{modelValue:{},language:{default:"typescript"},readonly:{type:Boolean,default:!1},placeholder:{default:""},minHeight:{default:"100px"}},emits:["update:modelValue"],setup(t,{emit:e}){const i=t,n=e,r=Fe(()=>{const a=[i.language==="json"?M8():k8({typescript:!0}),V8,_e.theme({"&":{backgroundColor:"var(--color-surface-base, #0f172a)",minHeight:i.minHeight},".cm-gutters":{backgroundColor:"var(--color-surface-base, #0f172a)",borderRight:"1px solid var(--color-border-default)",color:"var(--color-text-muted)"},".cm-activeLineGutter":{backgroundColor:"color-mix(in srgb, var(--color-accent) 10%, transparent)"},".cm-activeLine":{backgroundColor:"color-mix(in srgb, var(--color-accent) 5%, transparent)"},"&.cm-focused":{outline:"none"},".cm-cursor":{borderLeftColor:"var(--color-accent)"},".cm-selectionBackground":{backgroundColor:"color-mix(in srgb, var(--color-accent) 20%, transparent) !important"},".cm-content":{caretColor:"var(--color-accent)"}}),_e.lineWrapping];return i.readonly&&a.push(_e.editable.of(!1)),a});function s(a){n("update:modelValue",a)}return(a,l)=>(ye(),Ct(Se(IR),{"model-value":t.modelValue,extensions:r.value,placeholder:t.placeholder,style:hi({minHeight:t.minHeight,fontSize:"12px",borderRadius:"6px",overflow:"hidden",border:"1px solid var(--color-border-default)"}),"onUpdate:modelValue":s},null,8,["model-value","extensions","placeholder","style"]))}}),U8={class:"ai-diff"},q8={key:0,class:"diff-explanation"},W8={class:"diff-code"},Y8={class:"diff-actions"},G8=ot({__name:"AiDiffView",props:{oldCode:{},newCode:{},explanation:{}},emits:["accept","dismiss"],setup(t){const e=t,i=Fe(()=>PT(e.oldCode,e.newCode));return(n,r)=>(ye(),be("div",U8,[t.explanation?(ye(),be("div",q8,Te(t.explanation),1)):Qe("",!0),he("div",W8,[(ye(!0),be(gt,null,Jt(i.value,(s,a)=>(ye(),be("div",{key:a,class:bt(["diff-line",{added:s.added,removed:s.removed}])},Te(s.value),3))),128))]),he("div",Y8,[he("button",{class:"diff-accept",onClick:r[0]||(r[0]=s=>n.$emit("accept"))},Te(n.$t("tools.aiDiff.accept")),1),he("button",{class:"diff-dismiss",onClick:r[1]||(r[1]=s=>n.$emit("dismiss"))},Te(n.$t("tools.aiDiff.dismiss")),1)])]))}}),H8=AO(G8,[["__scopeId","data-v-01c9471b"]]),J8={class:"block-header"},K8={class:"block-badge"},e6=["value","placeholder"],t6=["disabled","title"],i6=["disabled","title"],n6={key:0,class:"thinking-bar nodrag"},r6={class:"thinking-text"},s6={key:1,class:"insights-row"},a6={key:2,class:"insights-row"},o6=["onClick"],l6={key:3,class:"insight-detail nodrag nowheel"},u6={class:"insight-desc"},c6={class:"insight-suggestion-label"},h6={key:4,class:"exec-badge-row"},f6={key:0,class:"exec-badge exec-executing"},d6={key:2,class:"exec-badge exec-failed"},p6=["disabled"],m6={key:5,class:"exec-result-panel nodrag nowheel"},g6={class:"block-section"},y6=["value","placeholder"],v6={key:6,class:"block-section nodrag nowheel"},O6=["placeholder"],x6={class:"intent-actions"},b6=["disabled"],S6={key:0,class:"intent-error"},w6={class:"block-section"},P6={class:"param-header"},T6=["value","onChange","placeholder"],C6=["value","onChange","placeholder"],k6=["onClick"],E6={key:0,class:"param-empty"},A6={class:"block-section probe-section"},D6={class:"probe-badge"},_6={key:0,class:"probe-panel nodrag nowheel"},I6={class:"probe-url-row"},N6=["placeholder"],M6=["disabled"],$6={class:"diag-row"},L6={key:0,class:"diag-tag"},B6={key:1,class:"diag-tag"},Q6={key:2,class:"diag-tag diag-openapi"},F6={key:0,class:"diag-auth"},R6={class:"config-section"},z6={class:"config-header"},X6={class:"config-label"},j6=["onUpdate:modelValue","placeholder"],Z6=["onUpdate:modelValue","placeholder"],V6=["onClick","title"],U6=["onClick"],q6={key:1,class:"config-section"},W6={class:"config-label"},Y6={key:2,class:"ep-section"},G6={class:"config-label"},H6=["placeholder"],J6={class:"ep-list"},K6=["onClick"],e7={class:"ep-path"},t7={key:0,class:"ep-summary"},i7={key:0,class:"param-empty"},n7={class:"probe-ai-row"},r7=["disabled"],s7={key:0,class:"auto-map-reasoning"},a7={class:"probe-tree"},o7={key:1,class:"probe-footer"},l7={class:"probe-count"},u7={key:4,class:"probe-error"},c7={key:5,class:"probe-raw"},h7={key:7,class:"block-section mappings-section"},f7={class:"mappings-header"},d7={key:0,class:"stale-badge",title:"Some mapped fields are missing from the function body"},p7={class:"mappings-list"},m7=["title"],g7={class:"block-section nodrag nowheel"},y7=ot({__name:"ToolFunctionNode",props:{data:{}},setup(t){const e=n1(),i=t;function n(K,ue){i.data.onUpdate?.(K,ue)}function r(K,ue,me){const Pe=i.data.parameters.map((Ve,He)=>He===K?{...Ve,[ue]:me}:{...Ve});n("parameters",Pe)}function s(){n("parameters",[...i.data.parameters,{name:"arg",type:"string"}])}function a(K){n("parameters",i.data.parameters.filter((ue,me)=>me!==K))}const l=Fe(()=>{const K=i.data.mappings;if(!K||K.length===0)return[];const ue=i.data.body;return K.filter(me=>!ue.includes(me.returnKey))}),u=Fe(()=>l.value.length>0),h=ze(!1),c=ze(!1),p=ze(e.getIntent(i.data.uid)??""),v=Fe(()=>e.drafts.get(i.data.uid)),g=Fe(()=>v.value?.loading??!1);async function b(){if(!p.value.trim()||!e.effectiveModel)return;e.setIntent(i.data.uid,p.value),e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"draft",code:"",explanation:"",loading:!0,intentText:p.value});const K=await Y$({model:e.effectiveModel,toolName:i.data.name,description:i.data.description,parameters:i.data.parameters,probeResponseSample:Q.value??void 0,intent:p.value});K.error?e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"draft",code:"",explanation:"",loading:!1,error:K.error,intentText:p.value}):e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"draft",code:K.code,explanation:K.explanation,loading:!1,trainingPairId:K.trainingPairId,intentText:p.value})}function m(){const K=v.value;!K||!K.code||(n("body",K.code),K.trainingPairId&&qd.updateAccepted(K.trainingPairId),e.clearDraft(i.data.uid))}function x(){e.clearDraft(i.data.uid)}const O=Fe(()=>e.insights.get(i.data.uid)),P=ze(null),S=ze(!1);Ge(()=>i.data.body,()=>{e.insights.get(i.data.uid)&&(e.clearInsights(i.data.uid),P.value=null)});const w=ze(null),C=["Thinking","Cogitating","Analyzing","Flexing","Scrutinizing","Neuroticizing","Polarizing","Rasterizing","Criticizing","Parameterizing","Inspecting","Evaluating","Dissecting","Probing","Examining","Parsing","Reviewing","Synthesizing"],E=ze(0);let k=null;const A=Fe(()=>C[E.value%C.length]);function $(){E.value=0,k=setInterval(()=>{E.value++},1500)}function F(){k&&(clearInterval(k),k=null)}function I(){if(!P.value?.suggestedCode){console.warn("[Insight] No suggestedCode to apply");return}const K=P.value.suggestedCode;console.log("[Insight] Applying fix, code length:",K.length),n("body",K),P.value=null}async function B(){if(!e.effectiveModel){w.value="No AI model selected. Choose one in the Canvas AI model selector.";return}S.value=!0,w.value=null,P.value=null,$();const K=await G$({model:e.effectiveModel,toolName:i.data.name,code:i.data.body,parameters:i.data.parameters});S.value=!1,F(),K.error?w.value=K.error:e.setInsights(i.data.uid,{toolId:i.data.uid,insights:K.insights,codeHash:i.data.body})}const j=ze(!1),M=ze("");async function q(){if(!e.effectiveModel||!Q.value)return;j.value=!0,M.value="";const K=await H$({model:e.effectiveModel,toolName:i.data.name,description:i.data.description,probeResponseSample:Q.value});j.value=!1,!K.error&&K.paths.length>0&&(M.value=K.reasoning,xe.value=new Set(K.paths))}const X=ze(!1);async function Y(){if(!e.effectiveModel)return;X.value=!0;const K=e.getIntent(i.data.uid),ue=await J$({model:e.effectiveModel,toolName:i.data.name,code:i.data.body,parameters:i.data.parameters,error:i.data.lastCallError??"Unknown error",arguments:i.data.lastCallArguments??{},originalIntent:K});X.value=!1,!ue.error&&ue.fixedCode&&e.setDraft(i.data.uid,{toolId:i.data.uid,phase:"fix",code:ue.fixedCode,explanation:ue.explanation,loading:!1,trainingPairId:ue.trainingPairId})}const V=ze(!1),oe=ze("idle"),ae=ze(i.data.probeConfig?.url??""),fe=ze(i.data.probeConfig?.method??"GET"),D=ze(null),Z=ze(null),L=ze(null),se=ze(i.data.probeConfig?.headers?Object.entries(i.data.probeConfig.headers).map(([K,ue])=>({key:K,value:ue})):[]),de=ze(new Set(i.data.probeConfig?.secretHeaders??[]));function ie(K){const ue=se.value[K].key.trim();if(!ue)return;const me=new Set(de.value);me.has(ue)?me.delete(ue):me.add(ue),de.value=me}const R=ze(""),Q=ze(null),xe=ze(new Set),Re=ze(""),ke=ze(null),$e=Fe(()=>{if(!L.value)return[];const K=Re.value.toLowerCase();return K?L.value.endpoints.filter(ue=>ue.path.toLowerCase().includes(K)||ue.summary?.toLowerCase().includes(K)||ue.operationId?.toLowerCase().includes(K)):L.value.endpoints});function te(K){return K>=200&&K<300?"var(--color-success)":K>=300&&K<400?"var(--color-warning, #f9e2af)":"var(--color-error)"}function H(K){switch(K){case"GET":return"var(--color-accent)";case"POST":return"var(--color-success)";case"PUT":return"var(--color-warning, #f9e2af)";case"DELETE":return"var(--color-error)";case"PATCH":return"#cba6f7";default:return"var(--color-text-muted)"}}async function re(){const K=ae.value.trim();if(!K)return;oe.value="discovering",D.value=null,Z.value=null,L.value=null,Q.value=null,xe.value=new Set,ke.value=null;const ue={};for(const Ve of se.value)Ve.key.trim()&&(ue[Ve.key.trim()]=Ve.value);const[me,Pe]=await Promise.allSettled([s3(K,{method:fe.value,headers:Object.keys(ue).length>0?ue:void 0,body:(fe.value==="POST"||fe.value==="PUT")&&R.value||void 0}),l3(K)]);me.status==="fulfilled"&&(D.value=me.value,me.value.data&&(Q.value=me.value.data),me.value.authHint&&se.value.length===0&&(me.value.authHint.type==="bearer"?se.value=[{key:"Authorization",value:"Bearer "}]:me.value.authHint.type==="apikey"?se.value=[{key:"X-API-Key",value:""}]:me.value.authHint.type==="basic"&&(se.value=[{key:"Authorization",value:"Basic "}]))),Pe.status==="fulfilled"&&Pe.value.spec&&(Z.value=Pe.value,L.value=t3(Pe.value.spec)),oe.value="diagnosed"}function G(K){ke.value=K;const ue=L.value?.info.baseUrl??"",me=ue?`${ue.replace(/\/$/,"")}${K.path}`:K.path;ae.value=me,fe.value=K.method;const Pe=K.operationId??K.path.replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_|_$/g,"");n("name",Pe),(K.summary||K.description)&&n("description",K.summary??K.description??"");const Ve=K.parameters.filter(He=>He.in==="query"||He.in==="path").map(He=>({name:He.name,type:He.type}));Ve.length>0&&n("parameters",Ve)}function J(){se.value=[...se.value,{key:"",value:""}]}function le(K){se.value=se.value.filter((ue,me)=>me!==K)}function ve(K){const ue=new Set(xe.value);ue.has(K)?ue.delete(K):ue.add(K),xe.value=ue}function we(){const K=Array.from(xe.value);if(K.length===0)return;const ue={};for(const Je of se.value)Je.key.trim()&&(ue[Je.key.trim()]=Je.value);const me=Array.from(de.value),{body:Pe,addedParams:Ve}=yT(ae.value.trim(),K,{method:fe.value!=="GET"?fe.value:void 0,headers:Object.keys(ue).length>0?ue:void 0,body:(fe.value==="POST"||fe.value==="PUT")&&R.value||void 0,secretHeaders:me.length>0?me:void 0});n("body",Pe);const He=vT(K);if(n("mappings",He),Q.value){const Je=OT(He,Q.value);n("returnSchema",Je)}const Tt={url:ae.value.trim(),method:fe.value,headers:ue,...me.length>0?{secretHeaders:me}:{}};if(n("probeConfig",Tt),Ve.length>0){const Je=i.data.parameters.map(qt=>qt.name),ei=Ve.filter(qt=>!Je.includes(qt.name));ei.length>0&&n("parameters",[...i.data.parameters,...ei])}oe.value="picked"}return(K,ue)=>(ye(),be("div",{class:bt(["tool-block",{executing:t.data.executionStatus==="executing",completed:t.data.executionStatus==="completed",failed:t.data.executionStatus==="failed"}])},[ht(Se(Es),{type:"target",position:Se(Xe).Top},null,8,["position"]),he("div",J8,[he("span",K8,Te(K.$t("tools.node.badge")),1),he("input",{class:"block-name-input",value:t.data.name,onChange:ue[0]||(ue[0]=me=>n("name",me.target.value)),placeholder:K.$t("tools.node.functionNamePlaceholder")},null,40,e6),he("button",{class:bt(["ai-header-btn",{active:c.value}]),disabled:g.value,title:K.$t("tools.node.draftWithAi"),onClick:ue[1]||(ue[1]=Yi(me=>c.value=!c.value,["stop"]))},Te(g.value?"...":"✨"),11,t6),he("button",{class:"ai-header-btn ai-analyze",disabled:S.value||!t.data.body.trim(),title:K.$t("tools.node.aiInsights"),onClick:Yi(B,["stop"])},Te(S.value?"...":"🔍"),9,i6)]),S.value?(ye(),be("div",n6,[ue[14]||(ue[14]=he("span",{class:"thinking-dot"},null,-1)),he("span",r6,Te(A.value)+"...",1)])):Qe("",!0),w.value?(ye(),be("div",s6,[he("span",{class:"insight-badge error",onClick:ue[2]||(ue[2]=Yi(me=>w.value=null,["stop"]))},Te(w.value),1)])):Qe("",!0),O.value?.insights.length?(ye(),be("div",a6,[(ye(!0),be(gt,null,Jt(O.value.insights,(me,Pe)=>(ye(),be("span",{key:Pe,class:bt(["insight-badge",me.severity]),onClick:Yi(Ve=>P.value=P.value===me?null:me,["stop"])},Te(me.title),11,o6))),128))])):Qe("",!0),P.value?(ye(),be("div",l6,[he("p",u6,Te(P.value.description),1),P.value.suggestedCode?(ye(),be(gt,{key:0},[he("p",c6,Te(K.$t("tools.node.insightSuggestionLabel")),1),ht(go,{"model-value":P.value.suggestedCode,language:"typescript",readonly:!0,"min-height":"60px"},null,8,["model-value"])],64)):Qe("",!0),he("div",{class:"insight-actions",onMousedown:ue[4]||(ue[4]=Yi(()=>{},["stop"]))},[P.value.suggestedCode?(ye(),be("button",{key:0,class:"insight-apply",onClick:Yi(I,["stop","prevent"])},Te(K.$t("tools.node.applyFix")),1)):Qe("",!0),he("button",{class:"insight-close",onClick:ue[3]||(ue[3]=Yi(me=>P.value=null,["stop"]))},"× "+Te(K.$t("tools.node.closeInsight")),1)],32)])):Qe("",!0),t.data.executionStatus&&t.data.executionStatus!=="idle"?(ye(),be("div",h6,[t.data.executionStatus==="executing"?(ye(),be("span",f6,Te(K.$t("tools.node.running")),1)):t.data.executionStatus==="completed"?(ye(),be("button",{key:1,class:"exec-badge exec-completed",onClick:ue[5]||(ue[5]=Yi(me=>h.value=!h.value,["stop"]))}," ✓ "+Te(t.data.lastDurationMs!=null?`${t.data.lastDurationMs}ms`:K.$t("tools.node.done")),1)):t.data.executionStatus==="failed"?(ye(),be("span",d6," ✗ "+Te(K.$t("tools.node.failed")),1)):Qe("",!0),t.data.executionStatus==="failed"?(ye(),be("button",{key:3,class:"ai-fix-btn",disabled:X.value,onClick:Yi(Y,["stop"])},Te(X.value?"...":K.$t("tools.node.aiFix")),9,p6)):Qe("",!0)])):Qe("",!0),h.value&&t.data.lastResult!==void 0?(ye(),be("div",m6,[ht(rg,{label:"result",value:t.data.lastResult,path:"","selected-paths":new Set,depth:0,onTogglePath:()=>{}},null,8,["value","selected-paths"])])):Qe("",!0),he("div",g6,[he("label",null,Te(K.$t("tools.node.description")),1),he("input",{class:"block-input",value:t.data.description,onChange:ue[6]||(ue[6]=me=>n("description",me.target.value)),placeholder:K.$t("tools.node.descriptionPlaceholder")},null,40,y6)]),c.value?(ye(),be("div",v6,[he("label",null,Te(K.$t("tools.node.intent")),1),Vn(he("textarea",{"onUpdate:modelValue":ue[7]||(ue[7]=me=>p.value=me),class:"intent-textarea",placeholder:K.$t("tools.node.intentPlaceholder"),rows:"2"},null,8,O6),[[ia,p.value]]),he("div",x6,[he("button",{class:"intent-generate-btn",disabled:g.value||!p.value.trim(),onClick:b},Te(g.value?K.$t("tools.node.generating"):K.$t("tools.node.generate")),9,b6)]),v.value?.error?(ye(),be("div",S6,Te(v.value.error),1)):Qe("",!0)])):Qe("",!0),he("div",w6,[he("div",P6,[he("label",null,Te(K.$t("tools.node.parameters")),1),he("button",{class:"param-add-btn",onClick:s},Te(K.$t("tools.node.addParam")),1)]),(ye(!0),be(gt,null,Jt(t.data.parameters,(me,Pe)=>(ye(),be("div",{key:Pe,class:"param-row"},[he("input",{class:"param-name",value:me.name,onChange:Ve=>r(Pe,"name",Ve.target.value),placeholder:K.$t("tools.node.paramNamePlaceholder")},null,40,T6),he("input",{class:"param-type",value:me.type,onChange:Ve=>r(Pe,"type",Ve.target.value),placeholder:K.$t("tools.node.paramTypePlaceholder")},null,40,C6),he("button",{class:"param-remove-btn",onClick:Ve=>a(Pe)},"×",8,k6)]))),128)),t.data.parameters.length===0?(ye(),be("div",E6,Te(K.$t("tools.node.noParameters")),1)):Qe("",!0)]),he("div",A6,[he("div",{class:"probe-toggle",onClick:ue[8]||(ue[8]=me=>V.value=!V.value)},[he("span",{class:bt(["toggle-arrow",{open:V.value}])},"▶",2),he("label",null,Te(K.$t("tools.node.probeAndPick")),1),he("span",D6,Te(K.$t("tools.node.apiBadge")),1)]),V.value?(ye(),be("div",_6,[he("div",I6,[Vn(he("select",{"onUpdate:modelValue":ue[9]||(ue[9]=me=>fe.value=me),class:"method-select"},[...ue[15]||(ue[15]=[he("option",null,"GET",-1),he("option",null,"POST",-1),he("option",null,"PUT",-1),he("option",null,"DELETE",-1)])],512),[[hT,fe.value]]),Vn(he("input",{"onUpdate:modelValue":ue[10]||(ue[10]=me=>ae.value=me),class:"block-input probe-url",placeholder:K.$t("tools.node.urlPlaceholder"),onKeydown:fT(re,["enter"])},null,40,N6),[[ia,ae.value]]),he("button",{class:"probe-btn",disabled:oe.value==="discovering"||!ae.value.trim(),onClick:re},Te(oe.value==="discovering"?"...":K.$t("tools.node.probe")),9,M6)]),D.value&&oe.value!=="idle"?(ye(),be(gt,{key:0},[he("div",$6,[he("span",{class:"diag-status",style:hi({background:te(D.value.status)})},Te(D.value.status),5),D.value.headers["content-type"]?(ye(),be("span",L6,Te(D.value.headers["content-type"].split(";")[0]),1)):Qe("",!0),D.value.headers.server?(ye(),be("span",B6,Te(D.value.headers.server),1)):Qe("",!0),L.value?(ye(),be("span",Q6," OpenAPI · "+Te(L.value.endpoints.length)+" endpoints ",1)):Qe("",!0)]),D.value.authHint?(ye(),be("div",F6,[ue[16]||(ue[16]=he("span",{class:"diag-auth-icon"},"🔒",-1)),he("span",null,Te(D.value.authHint.message),1)])):Qe("",!0)],64)):Qe("",!0),he("div",R6,[he("div",z6,[he("span",X6,Te(K.$t("tools.node.headers")),1),he("button",{class:"param-add-btn",onClick:J},Te(K.$t("tools.node.addHeader")),1)]),(ye(!0),be(gt,null,Jt(se.value,(me,Pe)=>(ye(),be("div",{key:Pe,class:"param-row"},[Vn(he("input",{class:"param-name","onUpdate:modelValue":Ve=>se.value[Pe].key=Ve,placeholder:K.$t("tools.node.headerNamePlaceholder")},null,8,j6),[[ia,se.value[Pe].key]]),Vn(he("input",{class:bt(["param-type",{"secret-masked":de.value.has(se.value[Pe].key.trim())}]),"onUpdate:modelValue":Ve=>se.value[Pe].value=Ve,placeholder:K.$t("tools.node.headerValuePlaceholder")},null,10,Z6),[[ia,se.value[Pe].value]]),he("button",{class:bt(["secret-toggle-btn",{active:de.value.has(se.value[Pe].key.trim())}]),onClick:Ve=>ie(Pe),title:K.$t("tools.node.markAsSecret")}," 🔒 ",10,V6),he("button",{class:"param-remove-btn",onClick:Ve=>le(Pe)},"×",8,U6)]))),128))]),fe.value==="POST"||fe.value==="PUT"?(ye(),be("div",q6,[he("span",W6,Te(K.$t("tools.node.requestBody")),1),ht(go,{modelValue:R.value,"onUpdate:modelValue":ue[11]||(ue[11]=me=>R.value=me),language:"json","min-height":"60px",placeholder:'{"key": "value"}'},null,8,["modelValue"])])):Qe("",!0),L.value&&L.value.endpoints.length>0?(ye(),be("div",Y6,[he("span",G6,Te(K.$t("tools.node.endpoints")),1),Vn(he("input",{"onUpdate:modelValue":ue[12]||(ue[12]=me=>Re.value=me),class:"block-input ep-search",placeholder:K.$t("tools.node.searchEndpoints")},null,8,H6),[[ia,Re.value]]),he("div",J6,[(ye(!0),be(gt,null,Jt($e.value,me=>(ye(),be("div",{key:me.method+me.path,class:bt(["ep-row",{selected:ke.value===me}]),onClick:Pe=>G(me)},[he("span",{class:"ep-method",style:hi({background:H(me.method)})},Te(me.method),5),he("span",e7,Te(me.path),1),me.summary?(ye(),be("span",t7,Te(me.summary),1)):Qe("",!0)],10,K6))),128)),$e.value.length===0?(ye(),be("div",i7,Te(K.$t("tools.node.noMatchingEndpoints")),1)):Qe("",!0)])])):Qe("",!0),Q.value&&D.value&&D.value.ok?(ye(),be(gt,{key:3},[he("div",n7,[he("button",{class:"ai-suggest-btn",disabled:j.value,onClick:q},Te(j.value?K.$t("tools.node.thinking"):K.$t("tools.node.aiSuggest")),9,r7)]),M.value?(ye(),be("div",s7,Te(M.value),1)):Qe("",!0),he("div",a7,[ht(rg,{label:"response",value:Q.value,path:"","selected-paths":xe.value,depth:0,onTogglePath:ve},null,8,["value","selected-paths"])]),xe.value.size>0?(ye(),be("div",o7,[he("span",l7,Te(xe.value.size)+" "+Te(xe.value.size!==1?K.$t("tools.node.fields"):K.$t("tools.node.field")),1),he("button",{class:"probe-apply-btn",onClick:we},Te(K.$t("tools.node.apply")),1)])):Qe("",!0)],64)):Qe("",!0),D.value&&D.value.error&&!D.value.data?(ye(),be("div",u7,Te(D.value.error),1)):Qe("",!0),D.value?.rawText?(ye(),be("pre",c7,Te(D.value.rawText),1)):Qe("",!0)])):Qe("",!0)]),t.data.mappings&&t.data.mappings.length>0?(ye(),be("div",h7,[he("div",f7,[he("label",null,Te(K.$t("tools.node.mappings")),1),u.value?(ye(),be("span",d7,Te(K.$t("tools.node.outOfSync")),1)):Qe("",!0)]),he("div",p7,[(ye(!0),be(gt,null,Jt(t.data.mappings,me=>(ye(),be("span",{key:me.jsonPath,class:bt(["mapping-tag",{stale:l.value.some(Pe=>Pe.jsonPath===me.jsonPath)}]),title:me.jsonPath},Te(me.returnKey),11,m7))),128))])])):Qe("",!0),he("div",g7,[he("label",null,Te(K.$t("tools.node.bodyLabel")),1),v.value&&!v.value.loading&&v.value.code?(ye(),Ct(H8,{key:0,"old-code":t.data.body,"new-code":v.value.code,explanation:v.value.explanation,onAccept:m,onDismiss:x},null,8,["old-code","new-code","explanation"])):(ye(),Ct(go,{key:1,"model-value":t.data.body,language:"typescript","min-height":"100px",placeholder:K.$t("tools.node.bodyPlaceholder"),"onUpdate:modelValue":ue[13]||(ue[13]=me=>n("body",me))},null,8,["model-value","placeholder"]))]),ht(Se(Es),{type:"source",position:Se(Xe).Bottom},null,8,["position"])],2))}}),v7=AO(y7,[["__scopeId","data-v-655b6640"]]),O7={class:"flex h-full w-full relative"},x7={key:0,class:"w-[440px] flex flex-col border-e border-border-default bg-surface-base shrink-0"},b7={class:"p-3 border-b border-border-default flex items-center justify-between"},S7={class:"flex items-center gap-2"},w7={class:"text-sm font-semibold text-text-primary"},P7={class:"flex border-b border-border-default"},T7={class:"flex-1 flex flex-col p-3 gap-2 min-h-0 overflow-auto"},C7={class:"flex-1 flex flex-col p-3 gap-2 min-h-0"},k7={class:"flex items-center justify-between"},E7={class:"text-xs text-text-muted"},A7={class:"flex-1 overflow-auto"},D7={key:0,class:"p-3 border-t border-border-default"},_7={class:"text-xs text-warning uppercase tracking-wider"},I7={class:"mt-1 text-xs text-warning/80 list-disc ps-4 space-y-0.5"},N7={class:"p-3 border-t border-border-default text-xs text-text-muted"},M7={class:"flex-1 relative min-h-0 overflow-hidden"},$7={key:0,class:"absolute inset-0 flex flex-col items-center justify-center pointer-events-none"},L7={class:"text-center pointer-events-auto"},B7={class:"text-text-muted text-sm mb-4"},Q7={class:"flex items-center gap-3"},F7={class:"absolute top-3 right-3 z-10 flex items-center gap-2"},R7=["value"],z7={value:""},X7=["value"],j7={class:"relative"},Z7={key:1,class:"absolute end-0 top-full z-20 mt-1 w-56 rounded-lg border border-border-default bg-surface-raised shadow-lg py-1"},V7=["title"],U7={key:1,class:"absolute inset-0 z-50 flex items-center justify-center bg-black/40"},q7={class:"rounded-xl bg-surface-raised border border-border-default p-6 shadow-2xl max-w-xs text-center"},W7={class:"text-sm text-text-primary mb-1 font-semibold"},Y7={class:"text-xs text-text-muted mb-4"},G7={class:"flex items-center justify-center gap-3"},H7={key:1,class:"w-[280px] flex flex-col border-s border-border-default bg-surface-base shrink-0"},J7={class:"p-3 border-b border-border-default flex items-center justify-between"},K7={class:"text-sm font-semibold text-text-primary"},e9={class:"flex-1 overflow-y-auto p-2 space-y-1"},t9=["title","onClick"],i9={class:"min-w-0 flex-1"},n9={class:"truncate text-[10px] text-text-muted"},r9=["title","onClick"],s9=["title","onClick"],a9={key:0,class:"px-3 py-4 text-xs text-text-muted text-center"},o9={class:"p-3 border-t border-border-default text-xs text-text-muted"},l9=ot({__name:"ToolCanvasView",emits:["add-template"],setup(t,{emit:e}){const i=e,n={"tool-function":io(v7)},r=Ud(),s=n1(),a=EO(),{flowNodes:l,flowEdges:u,combinedCode:h,codeWarnings:c,codeSyncStatus:p,schemas:v,onNodeDragStop:g,onNodesDelete:b,onCodeEdit:m,addNewTool:x}=j$(),{fitView:O}=vt();fn(()=>{a.models.length===0&&a.fetchModels()});const P=ze(!1),S=ze("code");Ge(P,()=>{l.value.length>0&&setTimeout(()=>{O({padding:.3,duration:300})},50)});const w=ze(!1);Ge(w,()=>{l.value.length>0&&setTimeout(()=>{O({padding:.3,duration:300})},50)});function C(X){r.removeTool(X)}const E=ze(!1);function k(){r.clearAll(),E.value=!1}const A=Fe(()=>JSON.stringify(v.value,null,2));function $(X){g({node:X.node})}function F(X){for(const Y of X)Y.type==="remove"&&b([{id:Y.id}])}function I(){const X=x();vi(()=>{O({nodes:[X],padding:.5,duration:300})})}async function B(){try{await navigator.clipboard.writeText(A.value)}catch{}}const j=ze(!1);function M(){const X=r.allTools.map(Y=>Y.definition);ng(X,"llmxray-tools.json"),j.value=!1}function q(X){const Y=r.allTools.find(V=>V.id===X);Y&&ng(Y.definition,`tool-${Y.definition.function.name}.json`)}return(X,Y)=>(ye(),be("div",O7,[P.value?(ye(),be("div",x7,[he("div",b7,[he("div",S7,[he("span",w7,Te(X.$t("tools.canvas.codePanel")),1),he("span",{class:bt(["sync-dot",Se(p)])},null,2)]),he("button",{class:"text-xs text-text-muted hover:text-text-primary transition-colors bg-transparent border-none cursor-pointer",onClick:Y[0]||(Y[0]=V=>P.value=!1)},Te(X.$t("tools.canvas.close")),1)]),he("div",P7,[he("button",{onClick:Y[1]||(Y[1]=V=>S.value="code"),class:bt(["flex-1 px-3 py-2 text-xs uppercase tracking-wider border-none cursor-pointer transition-colors",S.value==="code"?"bg-surface-raised text-accent font-bold":"bg-transparent text-text-muted"])},Te(X.$t("tools.canvas.source")),3),he("button",{onClick:Y[2]||(Y[2]=V=>S.value="schema"),class:bt(["flex-1 px-3 py-2 text-xs uppercase tracking-wider border-none cursor-pointer transition-colors",S.value==="schema"?"bg-surface-raised text-success font-bold":"bg-transparent text-text-muted"])},Te(X.$t("tools.canvas.schema")),3)]),Vn(he("div",T7,[ht(go,{"model-value":Se(h),language:"typescript",placeholder:"Combined tool source...","min-height":"200px","onUpdate:modelValue":Se(m)},null,8,["model-value","onUpdate:modelValue"])],512),[[ig,S.value==="code"]]),Vn(he("div",C7,[he("div",k7,[he("span",E7,Te(X.$t("tools.canvas.schemaManifest")),1),he("button",{onClick:B,class:"px-2 py-1 text-xs rounded bg-surface-overlay text-text-secondary hover:bg-surface-raised transition-colors cursor-pointer border-none"},Te(X.$t("tools.canvas.copy")),1)]),he("div",A7,[ht(go,{"model-value":A.value,language:"json",readonly:!0,"min-height":"200px"},null,8,["model-value"])])],512),[[ig,S.value==="schema"]]),Se(c).length>0?(ye(),be("div",D7,[he("label",_7,Te(X.$t("tools.canvas.warnings")),1),he("ul",I7,[(ye(!0),be(gt,null,Jt(Se(c),(V,oe)=>(ye(),be("li",{key:oe},Te(V),1))),128))])])):Qe("",!0),he("div",N7,Te(Se(l).length)+" tool"+Te(Se(l).length!==1?"s":"")+" · "+Te(Se(v).length)+" schema"+Te(Se(v).length!==1?"s":""),1)])):Qe("",!0),he("div",M7,[ht(Se(_D),{nodes:Se(l),edges:Se(u),"node-types":n,"default-viewport":{x:40,y:40,zoom:1},"min-zoom":.3,"max-zoom":2,"fit-view-on-init":Se(l).length>0,"fit-view-on-init-options":{padding:.3,minZoom:.6,maxZoom:1.2},class:"canvas-flow",onNodeDragStop:$,onNodesChange:F},{default:Ki(()=>[ht(Se(FD),{gap:24,size:1,"pattern-color":"var(--color-border-default)"}),ht(Se(g_)),ht(Se(JM))]),_:1},8,["nodes","edges","fit-view-on-init"]),Se(l).length===0?(ye(),be("div",$7,[he("div",L7,[he("div",B7,Te(X.$t("tools.canvas.emptyState")),1),he("div",Q7,[he("button",{onClick:I,class:"px-4 py-2 rounded-lg bg-accent text-surface-base font-semibold text-sm hover:opacity-90 transition-opacity cursor-pointer border-none"},Te(X.$t("tools.canvas.newTool")),1),he("button",{onClick:Y[3]||(Y[3]=V=>i("add-template")),class:"px-4 py-2 rounded-lg border border-dashed border-border-default text-text-muted text-sm font-medium hover:border-accent hover:text-text-primary transition-colors cursor-pointer bg-transparent"},Te(X.$t("tools.canvas.fromTemplate")),1)])])])):Qe("",!0),he("div",F7,[Se(a).chatModelNames.length>0?(ye(),be("select",{key:0,value:Se(s).canvasAiModel??"",onChange:Y[4]||(Y[4]=V=>Se(s).setCanvasAiModel(V.target.value||null)),class:"canvas-ai-model-select px-2 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs border border-border-default shadow-lg cursor-pointer"},[he("option",z7,"AI: "+Te(Se(a).chatModelNames[0]??"none"),1),(ye(!0),be(gt,null,Jt(Se(a).chatModelNames,V=>(ye(),be("option",{key:V,value:V}," AI: "+Te(V)+" "+Te(Se(a).capabilityIcons(V)),9,X7))),128))],40,R7)):Qe("",!0),he("div",j7,[he("button",{class:"flex items-center gap-1 px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-border-default shadow-lg",onClick:Y[5]||(Y[5]=V=>j.value=!j.value)},[ht(Se(sg),{class:"h-3.5 w-3.5"}),CO(" "+Te(X.$t("tools.canvas.export")),1)]),j.value?(ye(),be("div",{key:0,class:"fixed inset-0 z-10",onClick:Y[6]||(Y[6]=V=>j.value=!1)})):Qe("",!0),j.value?(ye(),be("div",Z7,[he("button",{class:"w-full px-3 py-2 text-start text-xs text-text-secondary hover:bg-surface-overlay",onClick:Y[7]||(Y[7]=V=>{Se(K$)(),j.value=!1})},Te(X.$t("tools.canvas.exportTitle")),1),he("button",{class:"w-full px-3 py-2 text-start text-xs text-text-secondary hover:bg-surface-overlay",onClick:M},Te(X.$t("tools.canvas.exportAllJson")),1)])):Qe("",!0)]),P.value?Qe("",!0):(ye(),be("button",{key:1,onClick:Y[8]||(Y[8]=V=>P.value=!0),class:"px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-border-default shadow-lg"},Te(X.$t("tools.canvas.codePanel")),1)),he("button",{onClick:Y[9]||(Y[9]=V=>w.value=!w.value),class:bt(["px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-border-default shadow-lg",w.value?"text-accent":"text-text-secondary"])},Te(X.$t("tools.canvas.toolLibrary")),3),Se(l).length>0?(ye(),be("button",{key:2,onClick:Y[10]||(Y[10]=V=>E.value=!0),class:"px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay hover:text-error transition-colors cursor-pointer border border-border-default shadow-lg",title:X.$t("tools.canvas.clearAllTitle")},Te(X.$t("tools.canvas.clearAll")),9,V7)):Qe("",!0),he("button",{onClick:Y[11]||(Y[11]=V=>i("add-template")),class:"px-3 py-1.5 rounded-lg bg-surface-overlay/90 text-text-secondary text-xs font-medium hover:bg-surface-overlay transition-colors cursor-pointer border border-dashed border-border-default shadow-lg"},Te(X.$t("tools.canvas.fromTemplate")),1),Se(l).length>0?(ye(),be("button",{key:3,onClick:I,class:"px-3 py-1.5 rounded-lg bg-accent/90 text-surface-base font-semibold text-xs hover:bg-accent transition-colors cursor-pointer border-none shadow-lg"},Te(X.$t("tools.canvas.newTool")),1)):Qe("",!0)]),E.value?(ye(),be("div",U7,[he("div",q7,[he("p",W7,Te(X.$t("tools.canvas.clearAllConfirm")),1),he("p",Y7,Te(X.$t("tools.canvas.clearAllWarning",{count:Se(l).length})),1),he("div",G7,[he("button",{onClick:Y[12]||(Y[12]=V=>E.value=!1),class:"px-4 py-1.5 rounded-lg text-xs text-text-secondary bg-surface-overlay hover:bg-surface-raised transition-colors cursor-pointer border border-border-default"},Te(X.$t("tools.canvas.cancel")),1),he("button",{onClick:k,class:"px-4 py-1.5 rounded-lg text-xs text-white bg-error hover:opacity-90 transition-opacity cursor-pointer border-none"},Te(X.$t("tools.canvas.deleteAll")),1)])])])):Qe("",!0)]),w.value?(ye(),be("div",H7,[he("div",J7,[he("span",K7,Te(X.$t("tools.canvas.toolLibrary")),1),he("button",{class:"text-xs text-text-muted hover:text-text-primary transition-colors bg-transparent border-none cursor-pointer",onClick:Y[13]||(Y[13]=V=>w.value=!1)},Te(X.$t("tools.canvas.close")),1)]),he("div",e9,[(ye(!0),be(gt,null,Jt(Se(r).allTools,V=>(ye(),be("div",{key:V.id,class:"flex items-center gap-2 rounded-lg px-3 py-2 text-xs hover:bg-surface-overlay transition-colors"},[he("button",{class:bt(["h-4 w-7 shrink-0 rounded-full transition-colors",V.enabled?"bg-accent":"bg-surface-overlay"]),title:V.enabled?X.$t("tools.canvas.disableForChat"):X.$t("tools.canvas.enableForChat"),onClick:oe=>Se(r).toggleEnabled(V.id)},[he("span",{class:bt(["block h-3 w-3 rounded-full bg-white transition-transform",V.enabled?"translate-x-3.5":"translate-x-0.5"])},null,2)],10,t9),he("div",i9,[he("span",{class:bt(["font-mono block",V.enabled?"text-text-primary":"text-text-muted"])},Te(V.definition.function.name),3),he("p",n9,Te(V.definition.function.description),1)]),he("button",{class:"shrink-0 text-text-muted hover:text-accent transition-colors bg-transparent border-none cursor-pointer",title:X.$t("tools.canvas.exportToolJson"),onClick:oe=>q(V.id)},[ht(Se(sg),{class:"h-3.5 w-3.5"})],8,r9),he("button",{class:"shrink-0 text-text-muted hover:text-error transition-colors bg-transparent border-none cursor-pointer",title:X.$t("tools.canvas.deleteToolTitle"),onClick:oe=>C(V.id)},[ht(Se(bT),{class:"h-3.5 w-3.5"})],8,s9)]))),128)),Se(r).allTools.length===0?(ye(),be("p",a9,Te(X.$t("tools.canvas.noToolsYet")),1)):Qe("",!0)]),he("div",o9,Te(Se(r).enabledTools.length)+"/"+Te(Se(r).allTools.length)+" "+Te(X.$t("tools.canvas.enabledForChat")),1)])):Qe("",!0)]))}}),u9={class:"flex h-full overflow-hidden flex-col"},c9={class:"bg-surface-raised rounded-xl border border-border-default shadow-xl w-[480px] max-h-[70vh] overflow-hidden"},h9={class:"p-4 border-b border-border-default"},f9={class:"text-sm font-medium text-text-primary"},d9={class:"text-[10px] text-text-muted mt-0.5"},p9={class:"p-3 space-y-4 overflow-y-auto max-h-[50vh]"},m9={class:"text-[10px] font-semibold text-text-muted uppercase tracking-wider mb-2 px-1"},g9={class:"space-y-1.5"},y9=["onClick"],v9={class:"flex items-center justify-between"},O9={class:"text-xs font-medium text-text-primary"},x9={class:"text-[10px] text-text-muted mt-1"},b9={class:"p-3 border-t border-border-default"},z9=ot({__name:"ToolWorkshopPage",setup(t){const e=Ud(),{t:i}=dT(),n=ze(!1),r=[{name:"Current Time",description:"Returns the current date and time",category:"utility",definition:{type:"function",function:{name:"get_current_time",description:"Get the current date and time in ISO format",parameters:{type:"object",properties:{},required:[]}}},code:"return new Date().toISOString()"},{name:"Web Fetch",description:"Fetch readable text or JSON from a URL",category:"api",definition:{type:"function",function:{name:"fetch_url",description:"Fetch the content of a web page or API endpoint. Returns extracted text for HTML pages, or raw JSON for API responses.",parameters:{type:"object",properties:{url:{type:"string",description:"The URL to fetch"}},required:["url"]}}},code:`const res = await fetch(args.url)
216
216
  const contentType = res.headers.get('content-type') || ''
217
217
  if (contentType.includes('application/json')) {
218
218
  return await res.json()
@@ -373,4 +373,4 @@ const res = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/messages
373
373
  headers: { Authorization: 'Bearer ' + token },
374
374
  })
375
375
  if (!res.ok) throw new Error('Failed to trash email: ' + res.status)
376
- return { success: true, trashed_message_id: args.message_id }`}],s=["utility","api","data","google","custom"],a=Fe(()=>{const u=[],h=new Map;for(const c of r){const p=c.category;h.has(p)||h.set(p,[]),h.get(p).push(c)}for(const c of s){const p=h.get(c);p&&p.length>0&&u.push({category:c,label:i(`tools.templates.categories.${c}`),items:p})}return u});function l(u){const h=e.addTool({definition:structuredClone(u.definition),implementation:{mode:"code",blocks:[],code:u.code},category:u.category});e.selectTool(h),n.value=!1}return(u,h)=>(ye(),be("div",u9,[ht(l9,{class:"flex-1",onAddTemplate:h[0]||(h[0]=c=>n.value=!0)}),(ye(),Ct(pT,{to:"body"},[n.value?(ye(),be("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:h[2]||(h[2]=Yi(c=>n.value=!1,["self"]))},[he("div",c9,[he("div",h9,[he("h3",f9,Te(u.$t("tools.templates.title")),1),he("p",d9,Te(u.$t("tools.templates.subtitle")),1)]),he("div",p9,[(ye(!0),be(gt,null,Jt(a.value,c=>(ye(),be("div",{key:c.category},[he("h4",m9,Te(c.label),1),he("div",g9,[(ye(!0),be(gt,null,Jt(c.items,p=>(ye(),be("button",{key:p.name,class:"w-full text-left rounded-lg border border-border-default hover:border-accent/50 p-3 transition-colors",onClick:v=>l(p)},[he("div",v9,[he("span",O9,Te(p.name),1)]),he("p",x9,Te(p.description),1)],8,y9))),128))])]))),128))]),he("div",b9,[he("button",{class:"w-full rounded-lg border border-border-default px-3 py-1.5 text-xs text-text-muted hover:text-text-primary transition-colors",onClick:h[1]||(h[1]=c=>n.value=!1)},Te(u.$t("common.actions.cancel")),1)])])])):Qe("",!0)]))]))}});export{R9 as default};
376
+ return { success: true, trashed_message_id: args.message_id }`}],s=["utility","api","data","google","custom"],a=Fe(()=>{const u=[],h=new Map;for(const c of r){const p=c.category;h.has(p)||h.set(p,[]),h.get(p).push(c)}for(const c of s){const p=h.get(c);p&&p.length>0&&u.push({category:c,label:i(`tools.templates.categories.${c}`),items:p})}return u});function l(u){const h=e.addTool({definition:structuredClone(u.definition),implementation:{mode:"code",blocks:[],code:u.code},category:u.category});e.selectTool(h),n.value=!1}return(u,h)=>(ye(),be("div",u9,[ht(l9,{class:"flex-1",onAddTemplate:h[0]||(h[0]=c=>n.value=!0)}),(ye(),Ct(pT,{to:"body"},[n.value?(ye(),be("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:h[2]||(h[2]=Yi(c=>n.value=!1,["self"]))},[he("div",c9,[he("div",h9,[he("h3",f9,Te(u.$t("tools.templates.title")),1),he("p",d9,Te(u.$t("tools.templates.subtitle")),1)]),he("div",p9,[(ye(!0),be(gt,null,Jt(a.value,c=>(ye(),be("div",{key:c.category},[he("h4",m9,Te(c.label),1),he("div",g9,[(ye(!0),be(gt,null,Jt(c.items,p=>(ye(),be("button",{key:p.name,class:"w-full text-left rounded-lg border border-border-default hover:border-accent/50 p-3 transition-colors",onClick:v=>l(p)},[he("div",v9,[he("span",O9,Te(p.name),1)]),he("p",x9,Te(p.description),1)],8,y9))),128))])]))),128))]),he("div",b9,[he("button",{class:"w-full rounded-lg border border-border-default px-3 py-1.5 text-xs text-text-muted hover:text-text-primary transition-colors",onClick:h[1]||(h[1]=c=>n.value=!1)},Te(u.$t("common.actions.cancel")),1)])])])):Qe("",!0)]))]))}});export{z9 as default};
@@ -1 +1 @@
1
- import{d as p,a0 as f,J as h,r as g,n as v}from"./index-ClE7gpZb.js";const k=p("tokens",()=>{const t=f(new Map);function r(e,n){const o=new Map(t.value),s=o.get(e)??[];o.set(e,[...s,n]),t.value=o}function i(e){return t.value.get(e)??[]}function l(e){return(t.value.get(e)??[]).length}function c(e){const n=new Map(t.value);n.delete(e),t.value=n}function a(e){const n=t.value.get(e);n&&n.length>0&&h.saveTokens(e,n).catch(console.error)}async function u(e){if(t.value.has(e))return;const n=await h.getTokens(e);if(n.length>0){const o=new Map(t.value);o.set(e,n),t.value=o}}return{tokensBySession:t,pushToken:r,getTokens:i,getTokenCount:l,clearTokens:c,persistTokens:a,loadTokens:u}}),S=p("reasoning",()=>{const t=g(new Map),r=g(new Map);function i(n){return t.value.get(n)??null}function l(n){return t.value.get(n)?.steps??[]}function c(n,o){let s=t.value.get(n);s||(s={sessionId:n,steps:[],totalSteps:0,currentDepth:0},t.value.set(n,s)),s.steps.push(o),s.totalSteps=s.steps.length}function a(n){t.value.delete(n)}function u(n,o,s){r.value.set(n,{isThinking:o,content:s})}function e(n){return r.value.get(n)??{isThinking:!1,content:""}}return{chainsBySession:t,thinkingBySession:r,getChain:i,getSteps:l,addStep:c,clearChain:a,setThinking:u,getThinking:e}}),T=p("agent",()=>{const t=g(new Map);function r(a){return t.value.get(a)??null}function i(a){t.value.has(a)||t.value.set(a,{sessionId:a,nodes:[],edges:[]})}function l(a,u){const e=t.value.get(a);if(e&&(e.nodes.push(u),e.nodes.length>1)){const n=e.nodes[e.nodes.length-2];e.edges.push({id:v(),source:n.id,target:u.id,label:`Step ${e.nodes.length-1}`})}}function c(a,u){const e=t.value.get(a);e&&e.edges.push(u)}return{graphsBySession:t,getGraph:r,initGraph:i,addNode:l,addEdge:c}});export{k as a,S as b,T as u};
1
+ import{d as p,a0 as f,J as h,r as g,n as v}from"./index-534TcCbY.js";const k=p("tokens",()=>{const t=f(new Map);function r(e,n){const o=new Map(t.value),s=o.get(e)??[];o.set(e,[...s,n]),t.value=o}function i(e){return t.value.get(e)??[]}function l(e){return(t.value.get(e)??[]).length}function c(e){const n=new Map(t.value);n.delete(e),t.value=n}function a(e){const n=t.value.get(e);n&&n.length>0&&h.saveTokens(e,n).catch(console.error)}async function u(e){if(t.value.has(e))return;const n=await h.getTokens(e);if(n.length>0){const o=new Map(t.value);o.set(e,n),t.value=o}}return{tokensBySession:t,pushToken:r,getTokens:i,getTokenCount:l,clearTokens:c,persistTokens:a,loadTokens:u}}),S=p("reasoning",()=>{const t=g(new Map),r=g(new Map);function i(n){return t.value.get(n)??null}function l(n){return t.value.get(n)?.steps??[]}function c(n,o){let s=t.value.get(n);s||(s={sessionId:n,steps:[],totalSteps:0,currentDepth:0},t.value.set(n,s)),s.steps.push(o),s.totalSteps=s.steps.length}function a(n){t.value.delete(n)}function u(n,o,s){r.value.set(n,{isThinking:o,content:s})}function e(n){return r.value.get(n)??{isThinking:!1,content:""}}return{chainsBySession:t,thinkingBySession:r,getChain:i,getSteps:l,addStep:c,clearChain:a,setThinking:u,getThinking:e}}),T=p("agent",()=>{const t=g(new Map);function r(a){return t.value.get(a)??null}function i(a){t.value.has(a)||t.value.set(a,{sessionId:a,nodes:[],edges:[]})}function l(a,u){const e=t.value.get(a);if(e&&(e.nodes.push(u),e.nodes.length>1)){const n=e.nodes[e.nodes.length-2];e.edges.push({id:v(),source:n.id,target:u.id,label:`Step ${e.nodes.length-1}`})}}function c(a,u){const e=t.value.get(a);e&&e.edges.push(u)}return{graphsBySession:t,getGraph:r,initGraph:i,addNode:l,addEdge:c}});export{k as a,S as b,T as u};
@@ -1,2 +1,2 @@
1
- import{ay as u}from"./index-ClE7gpZb.js";const w="llmxray-canvas-ai",m=2,r="training-pairs";function i(){return new Promise((e,o)=>{const t=indexedDB.open(w,m);t.onupgradeneeded=a=>{const s=t.result,n=a.oldVersion;if(n<1){const c=s.createObjectStore(r,{keyPath:"id"});c.createIndex("byPhase","phase",{unique:!1}),c.createIndex("byToolName","toolName",{unique:!1}),c.createIndex("byTimestamp","timestamp",{unique:!1})}if(n>=1&&n<2){const c=t.transaction.objectStore(r);c.indexNames.contains("byTimestamp")||c.createIndex("byTimestamp","timestamp",{unique:!1})}},t.onsuccess=()=>e(t.result),t.onerror=()=>o(t.error)})}function l(e,o){return new Promise((t,a)=>{e.oncomplete=()=>t(o?.result),e.onerror=()=>a(e.error)})}function d(e,o,t){return new Promise((a,s)=>{const n=e.get(o);n.onsuccess=()=>{const c=n.result;c&&(t(c),e.put(c)),a()},n.onerror=()=>s(n.error)})}const p={async savePair(e){const o=await i(),t=o.transaction(r,"readwrite");t.objectStore(r).put(e),await l(t),o.close(),u(e.id,e.model,e.phase,e.toolName,e.accepted)},async updateAccepted(e,o=!0){const t=await i(),a=t.transaction(r,"readwrite");await d(a.objectStore(r),e,s=>{s.accepted=o}),await l(a),t.close()},async updatePairResponse(e,o){const t=await i(),a=t.transaction(r,"readwrite");await d(a.objectStore(r),e,s=>{s.response=o}),await l(a),t.close()},async updatePairTags(e,o){const t=await i(),a=t.transaction(r,"readwrite");await d(a.objectStore(r),e,s=>{s.tags=o}),await l(a),t.close()},async deletePair(e){const o=await i(),t=o.transaction(r,"readwrite");t.objectStore(r).delete(e),await l(t),o.close()},async deletePairs(e){if(e.length===0)return;const o=await i(),t=o.transaction(r,"readwrite"),a=t.objectStore(r);for(const s of e)a.delete(s);await l(t),o.close()},async getAllPairs(){const e=await i();return new Promise((o,t)=>{const s=e.transaction(r,"readonly").objectStore(r).getAll();s.onsuccess=()=>{o(s.result),e.close()},s.onerror=()=>{t(s.error),e.close()}})},async exportAsJsonl(e=!0){const o=await this.getAllPairs(),t=e?o.filter(a=>a.accepted):o;this.downloadJsonl(t)},async exportSelectedAsJsonl(e){const o=await this.getAllPairs(),t=new Set(e),a=o.filter(s=>t.has(s.id));this.downloadJsonl(a)},downloadJsonl(e){const o=e.map(n=>JSON.stringify({system:n.systemPrompt,user:n.userPrompt,assistant:n.response,accepted:n.accepted,phase:n.phase,model:n.model,tool:n.toolName,tags:n.tags??[],reasoning:n.reasoning??""})),t=new Blob([o.join(`
1
+ import{ay as u}from"./index-534TcCbY.js";const w="llmxray-canvas-ai",m=2,r="training-pairs";function i(){return new Promise((e,o)=>{const t=indexedDB.open(w,m);t.onupgradeneeded=a=>{const s=t.result,n=a.oldVersion;if(n<1){const c=s.createObjectStore(r,{keyPath:"id"});c.createIndex("byPhase","phase",{unique:!1}),c.createIndex("byToolName","toolName",{unique:!1}),c.createIndex("byTimestamp","timestamp",{unique:!1})}if(n>=1&&n<2){const c=t.transaction.objectStore(r);c.indexNames.contains("byTimestamp")||c.createIndex("byTimestamp","timestamp",{unique:!1})}},t.onsuccess=()=>e(t.result),t.onerror=()=>o(t.error)})}function l(e,o){return new Promise((t,a)=>{e.oncomplete=()=>t(o?.result),e.onerror=()=>a(e.error)})}function d(e,o,t){return new Promise((a,s)=>{const n=e.get(o);n.onsuccess=()=>{const c=n.result;c&&(t(c),e.put(c)),a()},n.onerror=()=>s(n.error)})}const p={async savePair(e){const o=await i(),t=o.transaction(r,"readwrite");t.objectStore(r).put(e),await l(t),o.close(),u(e.id,e.model,e.phase,e.toolName,e.accepted)},async updateAccepted(e,o=!0){const t=await i(),a=t.transaction(r,"readwrite");await d(a.objectStore(r),e,s=>{s.accepted=o}),await l(a),t.close()},async updatePairResponse(e,o){const t=await i(),a=t.transaction(r,"readwrite");await d(a.objectStore(r),e,s=>{s.response=o}),await l(a),t.close()},async updatePairTags(e,o){const t=await i(),a=t.transaction(r,"readwrite");await d(a.objectStore(r),e,s=>{s.tags=o}),await l(a),t.close()},async deletePair(e){const o=await i(),t=o.transaction(r,"readwrite");t.objectStore(r).delete(e),await l(t),o.close()},async deletePairs(e){if(e.length===0)return;const o=await i(),t=o.transaction(r,"readwrite"),a=t.objectStore(r);for(const s of e)a.delete(s);await l(t),o.close()},async getAllPairs(){const e=await i();return new Promise((o,t)=>{const s=e.transaction(r,"readonly").objectStore(r).getAll();s.onsuccess=()=>{o(s.result),e.close()},s.onerror=()=>{t(s.error),e.close()}})},async exportAsJsonl(e=!0){const o=await this.getAllPairs(),t=e?o.filter(a=>a.accepted):o;this.downloadJsonl(t)},async exportSelectedAsJsonl(e){const o=await this.getAllPairs(),t=new Set(e),a=o.filter(s=>t.has(s.id));this.downloadJsonl(a)},downloadJsonl(e){const o=e.map(n=>JSON.stringify({system:n.systemPrompt,user:n.userPrompt,assistant:n.response,accepted:n.accepted,phase:n.phase,model:n.model,tool:n.toolName,tags:n.tags??[],reasoning:n.reasoning??""})),t=new Blob([o.join(`
2
2
  `)],{type:"application/jsonl"}),a=URL.createObjectURL(t),s=document.createElement("a");s.href=a,s.download=`llmxray-training-${Date.now()}.jsonl`,s.click(),URL.revokeObjectURL(a)},async clear(){const e=await i(),o=e.transaction(r,"readwrite");o.objectStore(r).clear(),await l(o),e.close()}};export{p as canvasAiDB};
@@ -1 +1 @@
1
- import{c as a}from"./index-ClE7gpZb.js";const d=a("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);export{d as D};
1
+ import{c as a}from"./index-534TcCbY.js";const d=a("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);export{d as D};
@@ -1,3 +1,3 @@
1
- import{c as f,n as a,o as m}from"./index-ClE7gpZb.js";import{u as d}from"./toolcall-store-JKmpIFj3.js";import{u as y}from"./StatusBadge.vue_vue_type_script_setup_true_lang-J8rYaobd.js";import{a as g}from"./stream-handler-BuwD741F.js";const O=f("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);function u(t,o="en"){if(!t)return 0;if(["zh","ja","ko"].includes(o))return t.replace(/\s/g,"").length||1;const i=t.split(/\s+/).filter(Boolean).length;return Math.ceil(i*1.3)}function b(t,o){const i=h(o),n=u(o);for(const r of i)r.tokenCount=u(r.content),r.percentage=n>0?r.tokenCount/n*100:0;return{sessionId:t,rawPrompt:o,totalTokenCount:n,sections:i}}function w(t,o){const i=[];let n=0;for(const e of o){const c={system:"system",user:"user",assistant:"context",tool:"tools"},l={id:a(),type:c[e.role]??"unknown",label:`${e.role} message`,content:e.content,startOffset:n,endOffset:n+e.content.length,tokenCount:u(e.content),percentage:0};i.push(l),n+=e.content.length+1}const r=i.reduce((e,c)=>e+c.tokenCount,0);for(const e of i)e.percentage=r>0?e.tokenCount/r*100:0;const s=o.map(e=>`[${e.role}] ${e.content}`).join(`
1
+ import{c as f,n as a,o as m}from"./index-534TcCbY.js";import{u as d}from"./session-store-BQ0TF24S.js";import{u as y}from"./StatusBadge.vue_vue_type_script_setup_true_lang-BiB0M6lv.js";import{a as g}from"./stream-handler-BM5egg14.js";const O=f("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);function u(t,o="en"){if(!t)return 0;if(["zh","ja","ko"].includes(o))return t.replace(/\s/g,"").length||1;const i=t.split(/\s+/).filter(Boolean).length;return Math.ceil(i*1.3)}function b(t,o){const i=h(o),n=u(o);for(const r of i)r.tokenCount=u(r.content),r.percentage=n>0?r.tokenCount/n*100:0;return{sessionId:t,rawPrompt:o,totalTokenCount:n,sections:i}}function w(t,o){const i=[];let n=0;for(const e of o){const c={system:"system",user:"user",assistant:"context",tool:"tools"},l={id:a(),type:c[e.role]??"unknown",label:`${e.role} message`,content:e.content,startOffset:n,endOffset:n+e.content.length,tokenCount:u(e.content),percentage:0};i.push(l),n+=e.content.length+1}const r=i.reduce((e,c)=>e+c.tokenCount,0);for(const e of i)e.percentage=r>0?e.tokenCount/r*100:0;const s=o.map(e=>`[${e.role}] ${e.content}`).join(`
2
2
 
3
3
  `);return{sessionId:t,rawPrompt:s,totalTokenCount:r,sections:i,messages:o.map(e=>({role:e.role,content:e.content,tokenCount:u(e.content)}))}}function h(t){const o=[],i=[{regex:/^#{1,3}\s*system\b/im,type:"system",label:"System Instructions"},{regex:/^#{1,3}\s*(?:user|query|question)\b/im,type:"user",label:"User Query"},{regex:/^#{1,3}\s*(?:context|background)\b/im,type:"context",label:"Context"},{regex:/^#{1,3}\s*(?:tools?|functions?)\b/im,type:"tools",label:"Tool Definitions"},{regex:/^#{1,3}\s*(?:memory|history|conversation)\b/im,type:"memory",label:"Memory / History"},{regex:/^#{1,3}\s*(?:examples?|few[- ]shot)\b/im,type:"examples",label:"Examples"},{regex:/^#{1,3}\s*(?:instructions?|rules?|guidelines?)\b/im,type:"instructions",label:"Instructions"}],n=[];for(const{regex:s,type:e,label:c}of i){const l=t.match(s);l?.index!==void 0&&n.push({index:l.index,type:e,label:c})}if(n.length===0)return o.push({id:a(),type:"user",label:"Prompt",content:t,startOffset:0,endOffset:t.length,tokenCount:0,percentage:100}),o;n.sort((s,e)=>s.index-e.index);for(let s=0;s<n.length;s++){const e=n[s],c=n[s+1],l=c?c.index:t.length,p=t.slice(e.index,l).trim();o.push({id:a(),type:e.type,label:e.label,content:p,startOffset:e.index,endOffset:l,tokenCount:0,percentage:0})}const r=n[0];if(r&&r.index>0){const s=t.slice(0,r.index).trim();s&&o.unshift({id:a(),type:"unknown",label:"Preamble",content:s,startOffset:0,endOffset:r.index,tokenCount:0,percentage:0})}return o}async function v(t){const o=d(),i=y(),n=o.createSession({mode:"generate",model:t.model,prompt:t.prompt,options:t.options});o.setActiveSession(n);const r=b(n,t.prompt);i.setAnatomy(n,r);const s=new AbortController;return m.streamGenerate({model:t.model,prompt:t.prompt,system:t.system,options:t.options},s.signal).then(e=>g(n,e,s.signal)).catch(e=>{s.signal.aborted||o.setSessionError(n,e instanceof Error?e.message:"Generation failed")}),{sessionId:n,abort:()=>{s.abort(),o.cancelSession(n)}}}export{O as C,w as a,v as s};
@@ -1 +1 @@
1
- import{d as m,r as n}from"./index-ClE7gpZb.js";import{getClientId as p,isConnected as C,getCachedEmail as y,getStoredTokens as c,setClientId as A,startGoogleAuth as w,handleCallback as x,getUserEmail as E,clearTokens as I,getAccessToken as S}from"./google-auth-CfEcVMA7.js";const _=m("google-auth",()=>{const a=n(!1),o=n(null),u=n(null),r=n(!1),s=n(""),l=n(null);function i(){s.value=p()??"",a.value=C(),o.value=y();const e=c();u.value=e?.expires_at??null}i();function v(e){A(e),s.value=e.trim()}async function f(){if(!s.value){l.value="Please enter a Google Client ID first.";return}l.value=null,await w()}async function d(e){r.value=!0,l.value=null;try{const t=await x(e);u.value=t.expires_at,a.value=!0;const k=await E();o.value=k}catch(t){l.value=t instanceof Error?t.message:String(t),a.value=!1}finally{r.value=!1}}function g(){I(),a.value=!1,o.value=null,u.value=null,l.value=null}async function h(){try{const e=await S();a.value=!0;const t=c();return t&&(u.value=t.expires_at),e}catch(e){throw a.value=!1,e}}return{connected:a,userEmail:o,tokenExpiresAt:u,isAuthenticating:r,clientId:s,error:l,updateClientId:v,connect:f,handleOAuthCallback:d,disconnect:g,getToken:h}});export{_ as u};
1
+ import{d as m,r as n}from"./index-534TcCbY.js";import{getClientId as p,isConnected as C,getCachedEmail as y,getStoredTokens as c,setClientId as A,startGoogleAuth as w,handleCallback as x,getUserEmail as E,clearTokens as I,getAccessToken as S}from"./google-auth-CfEcVMA7.js";const _=m("google-auth",()=>{const a=n(!1),o=n(null),u=n(null),r=n(!1),s=n(""),l=n(null);function i(){s.value=p()??"",a.value=C(),o.value=y();const e=c();u.value=e?.expires_at??null}i();function v(e){A(e),s.value=e.trim()}async function f(){if(!s.value){l.value="Please enter a Google Client ID first.";return}l.value=null,await w()}async function d(e){r.value=!0,l.value=null;try{const t=await x(e);u.value=t.expires_at,a.value=!0;const k=await E();o.value=k}catch(t){l.value=t instanceof Error?t.message:String(t),a.value=!1}finally{r.value=!1}}function g(){I(),a.value=!1,o.value=null,u.value=null,l.value=null}async function h(){try{const e=await S();a.value=!0;const t=c();return t&&(u.value=t.expires_at),e}catch(e){throw a.value=!1,e}}return{connected:a,userEmail:o,tokenExpiresAt:u,isAuthenticating:r,clientId:s,error:l,updateClientId:v,connect:f,handleOAuthCallback:d,disconnect:g,getToken:h}});export{_ as u};