llmxray 0.4.1 → 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.
- package/README.md +11 -0
- package/dist/assets/{AITrainingPage-VU-Nu5i0.js → AITrainingPage-DEU4UAR7.js} +1 -1
- package/dist/assets/AnalyticsPage-C7mNUAil.js +1 -0
- package/dist/assets/{BenchmarkPage-CQUTAU0c.js → BenchmarkPage-jiUqdHmg.js} +2 -2
- package/dist/assets/{ComparisonPage-DSO_-JZF.js → ComparisonPage-BoBWSObY.js} +3 -3
- package/dist/assets/CostDashboardPage-BKQDsZhx.js +1 -0
- package/dist/assets/{DashboardPage-lqAFJvOo.js → DashboardPage-CV8Ejgxv.js} +43 -43
- package/dist/assets/{EmbeddingsPage-DDBfFe8z.js → EmbeddingsPage-DXjVT4eU.js} +1 -1
- package/dist/assets/{GoogleCallbackPage-H8X6YDz9.js → GoogleCallbackPage-BUIkYpZv.js} +1 -1
- package/dist/assets/{JsonTreeNode-DQ_R5Euc.js → JsonTreeNode-C0UNUwZm.js} +1 -1
- package/dist/assets/{ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-CV939MUZ.js → ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-vQNvYFzV.js} +1 -1
- package/dist/assets/{RAGPage-DbZxWHmi.js → RAGPage-Dv4UDEyz.js} +1 -1
- package/dist/assets/SessionPage-B0fMQGSB.js +15 -0
- package/dist/assets/{SettingsPage-fmgr8zF9.js → SettingsPage-DTJP-4xU.js} +1 -1
- package/dist/assets/{StatusBadge.vue_vue_type_script_setup_true_lang-BbHpA7hy.js → StatusBadge.vue_vue_type_script_setup_true_lang-BiB0M6lv.js} +1 -1
- package/dist/assets/{StorageGauge.vue_vue_type_style_index_0_lang-Dd3BsCg6.js → StorageGauge.vue_vue_type_style_index_0_lang-DToi3R0q.js} +1 -1
- package/dist/assets/{SystemPage-Bd3SBsWI.js → SystemPage-BPK15qwe.js} +2 -2
- package/dist/assets/{TabBar.vue_vue_type_script_setup_true_lang-DlSEPHs6.js → TabBar.vue_vue_type_script_setup_true_lang-BtGCdMZK.js} +1 -1
- package/dist/assets/{TokenStreamDisplay.vue_vue_type_script_setup_true_lang-P-I0kJTd.js → TokenStreamDisplay.vue_vue_type_script_setup_true_lang-B6juPZsY.js} +1 -1
- package/dist/assets/{ToolWorkshopPage-D9doB8PF.js → ToolWorkshopPage-DmpoHHaD.js} +3 -3
- package/dist/assets/{agent-store-CuCtjbhV.js → agent-store-C6w1zV86.js} +1 -1
- package/dist/assets/{canvas-ai-db-DBUT-nyD.js → canvas-ai-db-BpqhUp6k.js} +1 -1
- package/dist/assets/{download-C3s6K1NW.js → download-pCIjWOn5.js} +1 -1
- package/dist/assets/{generate-service-DrRYe_-5.js → generate-service-DmtXqq_h.js} +1 -1
- package/dist/assets/{google-auth-store-B0WvuFWG.js → google-auth-store-Dgv2FihL.js} +1 -1
- package/dist/assets/index-534TcCbY.js +8 -0
- package/dist/assets/index-B72Sw9uL.css +1 -0
- package/dist/assets/{index-CUNpOQX9.js → index-ClITfJ3t.js} +1 -1
- package/dist/assets/{index-DoMyvAkM.js → index-DHuj6tKB.js} +1 -1
- package/dist/assets/{info-D-oZIv7P.js → info-Eg1tUw1x.js} +1 -1
- package/dist/assets/{metrics-store-DRErjO4D.js → metrics-store-7m97Sb7w.js} +1 -1
- package/dist/assets/{papaparse.min-DJzuA_ek.js → papaparse.min-3FeAYh4d.js} +1 -1
- package/dist/assets/{pencil-MO2uWQbW.js → pencil-CZp68oBU.js} +1 -1
- package/dist/assets/{rag-store-CBWvD3Va.js → rag-store-Bm0nxdec.js} +3 -3
- package/dist/assets/session-store-BQ0TF24S.js +1 -0
- package/dist/assets/{share-2-CnM5sBDm.js → share-2-CJJGZsZO.js} +1 -1
- package/dist/assets/{storage-store-cx_2Hb_J.js → storage-store-6qFwk_C5.js} +1 -1
- package/dist/assets/stream-handler-BM5egg14.js +4 -0
- package/dist/assets/{tool-workshop-store-Cb4eb3e4.js → tool-workshop-store-9_FKfdnT.js} +1 -1
- package/dist/assets/toolcall-store-C4Trr01T.js +1 -0
- package/dist/assets/{trash-2-Cj-NOsVZ.js → trash-2-DjfJXqVK.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CostDashboardPage-BLzCE-bT.js +0 -1
- package/dist/assets/SessionPage-DvtFE4GS.js +0 -15
- package/dist/assets/index-Bawj8X2v.css +0 -1
- package/dist/assets/index-DYHBy1xj.js +0 -8
- package/dist/assets/stream-handler-CXdBM2li.js +0 -4
- package/dist/assets/toolcall-store-xQEQUq5f.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-
|
|
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{
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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};
|