@langgraph-js/ui 5.7.1 → 5.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/assets/{arc-BN7eXDsr.js → arc-DsgW0fW0.js} +1 -1
  2. package/dist/assets/{architectureDiagram-VXUJARFQ-BlClJNg_.js → architectureDiagram-VXUJARFQ-x6jPEiVb.js} +1 -1
  3. package/dist/assets/{blockDiagram-VD42YOAC-B1yxKMBm.js → blockDiagram-VD42YOAC-CtC7rOkz.js} +1 -1
  4. package/dist/assets/{c4Diagram-YG6GDRKO-DYnk7yK1.js → c4Diagram-YG6GDRKO-B0Bhovp6.js} +1 -1
  5. package/dist/assets/channel-CYykpNsh.js +1 -0
  6. package/dist/assets/{chunk-4BX2VUAB-OBKPWQYL.js → chunk-4BX2VUAB-7nlfvZIs.js} +1 -1
  7. package/dist/assets/{chunk-55IACEB6-gYWv8Zf5.js → chunk-55IACEB6-CEUhaTkt.js} +1 -1
  8. package/dist/assets/{chunk-B4BG7PRW-C53GIfTN.js → chunk-B4BG7PRW-3Je1T-6D.js} +1 -1
  9. package/dist/assets/{chunk-DI55MBZ5-VE97R82T.js → chunk-DI55MBZ5-CibwD6Tg.js} +1 -1
  10. package/dist/assets/{chunk-FMBD7UC4-1vi-TjGz.js → chunk-FMBD7UC4-DkqBqoF9.js} +1 -1
  11. package/dist/assets/{chunk-QN33PNHL-BIwuKx1J.js → chunk-QN33PNHL-DSoehSAx.js} +1 -1
  12. package/dist/assets/{chunk-QZHKN3VN-voU2PjMs.js → chunk-QZHKN3VN-CAcu9F3O.js} +1 -1
  13. package/dist/assets/{chunk-TZMSLE5B-DqFqeo6j.js → chunk-TZMSLE5B-CS59_8HR.js} +1 -1
  14. package/dist/assets/classDiagram-2ON5EDUG-DEA6c_Xf.js +1 -0
  15. package/dist/assets/classDiagram-v2-WZHVMYZB-DEA6c_Xf.js +1 -0
  16. package/dist/assets/clone-Du_gs0pm.js +1 -0
  17. package/dist/assets/{cose-bilkent-S5V4N54A-BG8aPbwR.js → cose-bilkent-S5V4N54A-CcvTmZ3l.js} +1 -1
  18. package/dist/assets/{dagre-6UL2VRFP-B2SQQldX.js → dagre-6UL2VRFP-Du0L8eIB.js} +1 -1
  19. package/dist/assets/{diagram-PSM6KHXK-DPT_FKfu.js → diagram-PSM6KHXK-QCoayD06.js} +1 -1
  20. package/dist/assets/{diagram-QEK2KX5R-BSIuCy1e.js → diagram-QEK2KX5R-DOyrrhCz.js} +1 -1
  21. package/dist/assets/{diagram-S2PKOQOG-DAQpMvAq.js → diagram-S2PKOQOG-KjypfMN6.js} +1 -1
  22. package/dist/assets/{erDiagram-Q2GNP2WA-gKwnjOTf.js → erDiagram-Q2GNP2WA-BN-9XTVy.js} +1 -1
  23. package/dist/assets/{flowDiagram-NV44I4VS-DYhT5qks.js → flowDiagram-NV44I4VS-BeFTT0TJ.js} +1 -1
  24. package/dist/assets/{ganttDiagram-LVOFAZNH-WboqEMaA.js → ganttDiagram-LVOFAZNH-1AE61yJv.js} +1 -1
  25. package/dist/assets/{gitGraphDiagram-NY62KEGX-BRtqtCxN.js → gitGraphDiagram-NY62KEGX-aTUWjzWl.js} +1 -1
  26. package/dist/assets/{graph-BaHCYR4Y.js → graph-uuboXTUX.js} +1 -1
  27. package/dist/assets/index-CKXVIUJM.css +1 -0
  28. package/dist/assets/{index-yx5a2qjD.js → index-DuV4Cs93.js} +139 -134
  29. package/dist/assets/{infoDiagram-F6ZHWCRC-DyYvFs8H.js → infoDiagram-F6ZHWCRC-CQen-ygj.js} +1 -1
  30. package/dist/assets/{isUndefined-CuNi_bm9.js → isUndefined-B1VZkTi-.js} +1 -1
  31. package/dist/assets/{journeyDiagram-XKPGCS4Q-BqtfhCdd.js → journeyDiagram-XKPGCS4Q-_d3Y3lJU.js} +1 -1
  32. package/dist/assets/{kanban-definition-3W4ZIXB7-CyDmlWOW.js → kanban-definition-3W4ZIXB7-Dxarq9GE.js} +1 -1
  33. package/dist/assets/{layout-higHf58s.js → layout-Cjc7wP1L.js} +1 -1
  34. package/dist/assets/{mermaid.core-3MG272Pv.js → mermaid.core-BpzyNF0N.js} +5 -5
  35. package/dist/assets/{min-BoUtT0GV.js → min-iWVu4DkI.js} +1 -1
  36. package/dist/assets/{mindmap-definition-VGOIOE7T-Y0yyOiIO.js → mindmap-definition-VGOIOE7T-CnAMXH16.js} +1 -1
  37. package/dist/assets/{pieDiagram-ADFJNKIX-D_nzBY3u.js → pieDiagram-ADFJNKIX-jQmVw15z.js} +1 -1
  38. package/dist/assets/{quadrantDiagram-AYHSOK5B-CUBZfINn.js → quadrantDiagram-AYHSOK5B-CdR8ErX6.js} +1 -1
  39. package/dist/assets/{requirementDiagram-UZGBJVZJ-kfnK1mwU.js → requirementDiagram-UZGBJVZJ-DRe2cRaP.js} +1 -1
  40. package/dist/assets/{sankeyDiagram-TZEHDZUN-DALezZLf.js → sankeyDiagram-TZEHDZUN-CCxPdCL6.js} +1 -1
  41. package/dist/assets/{sequenceDiagram-WL72ISMW-Ph3PSHlU.js → sequenceDiagram-WL72ISMW-DEqPM-5z.js} +1 -1
  42. package/dist/assets/{stateDiagram-FKZM4ZOC-BjIg4oDx.js → stateDiagram-FKZM4ZOC-BJqbxGAU.js} +1 -1
  43. package/dist/assets/stateDiagram-v2-4FDKWEC3-CILBmBJc.js +1 -0
  44. package/dist/assets/{timeline-definition-IT6M3QCI-Cra1vVbB.js → timeline-definition-IT6M3QCI-C3oBdaQs.js} +1 -1
  45. package/dist/assets/{treemap-KMMF4GRG-DihM0GUo.js → treemap-KMMF4GRG-Cg2H1ebp.js} +1 -1
  46. package/dist/assets/{xychartDiagram-PRI3JC2R-PhzqQQLa.js → xychartDiagram-PRI3JC2R-C0KJkN_M.js} +1 -1
  47. package/dist/index.html +2 -2
  48. package/package.json +4 -4
  49. package/server/graph/debugAgent.ts +10 -7
  50. package/src/artifacts/ArtifactViewer.tsx +42 -11
  51. package/src/chat/Chat.tsx +2 -2
  52. package/src/chat/components/MessageTool.tsx +1 -1
  53. package/src/chat/tools/create_artifacts.tsx +69 -11
  54. package/src/settings/ArtifactsSettings.tsx +47 -0
  55. package/src/settings/SettingPanel.tsx +6 -0
  56. package/dist/assets/channel-W05vnIRi.js +0 -1
  57. package/dist/assets/classDiagram-2ON5EDUG-BAA0T-HR.js +0 -1
  58. package/dist/assets/classDiagram-v2-WZHVMYZB-BAA0T-HR.js +0 -1
  59. package/dist/assets/clone-BnfE7gLV.js +0 -1
  60. package/dist/assets/index-JVKUnJL6.css +0 -1
  61. package/dist/assets/stateDiagram-v2-4FDKWEC3-nRC6pSc8.js +0 -1
@@ -1,4 +1,4 @@
1
- var Sc=Object.defineProperty;var Ic=(n,e,t)=>e in n?Sc(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Ze=(n,e,t)=>Ic(n,typeof e!="symbol"?e+"":e,t);import{aN as Cc,aO as Nc,O as xl,aP as wc,x as Jt,ao as _c,E as Bs,G as Zn,H as ae,P as Vs,aQ as Sl,an as Lc,aj as Oc,aR as he,aS as Il,aT as bc,aU as Pc,al as Mc,aV as ya,F as Dc,aW as Fc,aX as Gc,aY as Me,y as C,aZ as Ks,ap as Ne,ar as N,v as kt,A as le,B as D,a_ as pi,S as Ta,a$ as Y,at as Qt,b0 as Uc,ay as ht}from"./index-yx5a2qjD.js";import{m as x,f as Zt,e as Ws,d as Bc}from"./min-BoUtT0GV.js";import{v as z,b as Vc,i as Ye,f as $e}from"./isUndefined-CuNi_bm9.js";import{c as ne}from"./clone-BnfE7gLV.js";var Kc=Object.prototype,Wc=Kc.hasOwnProperty,ke=Cc(function(n,e){if(Nc(e)||xl(e)){wc(e,Jt(e),n);return}for(var t in e)Wc.call(e,t)&&_c(n,t,e[t])});function er(n){for(var e=-1,t=n==null?0:n.length,r=0,i=[];++e<t;){var s=n[e];s&&(i[r++]=s)}return i}function jc(n,e,t,r){for(var i=-1,s=n==null?0:n.length;++i<s;){var a=n[i];e(r,a,t(a),n)}return r}function Hc(n,e,t,r){return Bs(n,function(i,s,a){e(r,i,t(i),a)}),r}function zc(n,e){return function(t,r){var i=ae(t)?jc:Hc,s=e?e():{};return i(t,n,Zn(r),s)}}function Q(n,e,t){var r=n==null?0:n.length;return r?(e=e===void 0?1:Vs(e),Sl(n,e<0?0:e,r)):[]}function Yn(n,e,t){var r=n==null?0:n.length;return r?(e=e===void 0?1:Vs(e),e=r-e,Sl(n,0,e<0?0:e)):[]}function qc(n,e){for(var t=-1,r=n==null?0:n.length;++t<r;)if(!e(n[t],t,n))return!1;return!0}function Yc(n,e){var t=!0;return Bs(n,function(r,i,s){return t=!!e(r,i,s),t}),t}function be(n,e,t){var r=ae(n)?qc:Yc;return r(n,Zn(e))}function Pe(n){return n&&n.length?n[0]:void 0}function Ee(n,e){return Lc(x(n,e),1)}var Xc=Object.prototype,Jc=Xc.hasOwnProperty,Qc=zc(function(n,e,t){Jc.call(n,t)?n[t].push(e):Oc(n,t,[e])}),Zc=Math.max;function de(n,e,t,r){n=xl(n)?n:z(n),t=t?Vs(t):0;var i=n.length;return t<0&&(t=Zc(i+t,0)),he(n)?t<=i&&n.indexOf(e,t)>-1:!!i&&Il(n,e,t)>-1}function Ra(n,e,t){var r=n==null?0:n.length;if(!r)return-1;var i=0;return Il(n,e,i)}var ed="[object RegExp]";function td(n){return bc(n)&&Pc(n)==ed}var va=ya&&ya.isRegExp,Xe=va?Mc(va):td,nd="Expected a function";function rd(n){if(typeof n!="function")throw new TypeError(nd);return function(){var e=arguments;switch(e.length){case 0:return!n.call(this);case 1:return!n.call(this,e[0]);case 2:return!n.call(this,e[0],e[1]);case 3:return!n.call(this,e[0],e[1],e[2])}return!n.apply(this,e)}}function mi(n,e){var t=ae(n)?Dc:Vc;return t(n,rd(Zn(e)))}function id(n,e){var t;return Bs(n,function(r,i,s){return t=e(r,i,s),!t}),!!t}function Cl(n,e,t){var r=ae(n)?Fc:id;return r(n,Zn(e))}function sd(n,e){return n&&n.length?Gc(n,Zn(e)):[]}function se(n){return typeof n=="object"&&n!==null&&typeof n.$type=="string"}function Ue(n){return typeof n=="object"&&n!==null&&typeof n.$refText=="string"}function ad(n){return typeof n=="object"&&n!==null&&typeof n.name=="string"&&typeof n.type=="string"&&typeof n.path=="string"}function wr(n){return typeof n=="object"&&n!==null&&se(n.container)&&Ue(n.reference)&&typeof n.message=="string"}class Nl{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return se(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});const i=r[t];if(i!==void 0)return i;{const s=this.computeIsSubtype(e,t);return r[t]=s,s}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const r=this.getAllTypes(),i=[];for(const s of r)this.isSubtype(s,e)&&i.push(s);return this.allSubtypes[e]=i,i}}}function Xn(n){return typeof n=="object"&&n!==null&&Array.isArray(n.content)}function wl(n){return typeof n=="object"&&n!==null&&typeof n.tokenType=="object"}function _l(n){return Xn(n)&&typeof n.fullText=="string"}class Z{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){const e=this.iterator();let t=0,r=e.next();for(;!r.done;)t++,r=e.next();return t}toArray(){const e=[],t=this.iterator();let r;do r=t.next(),r.value!==void 0&&e.push(r.value);while(!r.done);return e}toSet(){return new Set(this)}toMap(e,t){const r=this.map(i=>[e?e(i):i,t?t(i):i]);return new Map(r)}toString(){return this.join()}concat(e){return new Z(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),t=>{let r;if(!t.firstDone){do if(r=this.nextFn(t.first),!r.done)return r;while(!r.done);t.firstDone=!0}do if(r=t.iterator.next(),!r.done)return r;while(!r.done);return ve})}join(e=","){const t=this.iterator();let r="",i,s=!1;do i=t.next(),i.done||(s&&(r+=e),r+=od(i.value)),s=!0;while(!i.done);return r}indexOf(e,t=0){const r=this.iterator();let i=0,s=r.next();for(;!s.done;){if(i>=t&&s.value===e)return i;s=r.next(),i++}return-1}every(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(!e(r.value))return!1;r=t.next()}return!0}some(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return!0;r=t.next()}return!1}forEach(e){const t=this.iterator();let r=0,i=t.next();for(;!i.done;)e(i.value,r),i=t.next(),r++}map(e){return new Z(this.startFn,t=>{const{done:r,value:i}=this.nextFn(t);return r?ve:{done:!1,value:e(i)}})}filter(e){return new Z(this.startFn,t=>{let r;do if(r=this.nextFn(t),!r.done&&e(r.value))return r;while(!r.done);return ve})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){const r=this.iterator();let i=t,s=r.next();for(;!s.done;)i===void 0?i=s.value:i=e(i,s.value),s=r.next();return i}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,r){const i=e.next();if(i.done)return r;const s=this.recursiveReduce(e,t,r);return s===void 0?i.value:t(s,i.value)}find(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return r.value;r=t.next()}}findIndex(e){const t=this.iterator();let r=0,i=t.next();for(;!i.done;){if(e(i.value))return r;i=t.next(),r++}return-1}includes(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(r.value===e)return!0;r=t.next()}return!1}flatMap(e){return new Z(()=>({this:this.startFn()}),t=>{do{if(t.iterator){const s=t.iterator.next();if(s.done)t.iterator=void 0;else return s}const{done:r,value:i}=this.nextFn(t.this);if(!r){const s=e(i);if(jr(s))t.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}}while(t.iterator);return ve})}flat(e){if(e===void 0&&(e=1),e<=0)return this;const t=e>1?this.flat(e-1):this;return new Z(()=>({this:t.startFn()}),r=>{do{if(r.iterator){const a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}const{done:i,value:s}=t.nextFn(r.this);if(!i)if(jr(s))r.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}while(r.iterator);return ve})}head(){const t=this.iterator().next();if(!t.done)return t.value}tail(e=1){return new Z(()=>{const t=this.startFn();for(let r=0;r<e;r++)if(this.nextFn(t).done)return t;return t},this.nextFn)}limit(e){return new Z(()=>({size:0,state:this.startFn()}),t=>(t.size++,t.size>e?ve:this.nextFn(t.state)))}distinct(e){return new Z(()=>({set:new Set,internalState:this.startFn()}),t=>{let r;do if(r=this.nextFn(t.internalState),!r.done){const i=e?e(r.value):r.value;if(!t.set.has(i))return t.set.add(i),r}while(!r.done);return ve})}exclude(e,t){const r=new Set;for(const i of e){const s=t?t(i):i;r.add(s)}return this.filter(i=>{const s=t?t(i):i;return!r.has(s)})}}function od(n){return typeof n=="string"?n:typeof n>"u"?"undefined":typeof n.toString=="function"?n.toString():Object.prototype.toString.call(n)}function jr(n){return!!n&&typeof n[Symbol.iterator]=="function"}const ld=new Z(()=>{},()=>ve),ve=Object.freeze({done:!0,value:void 0});function ee(...n){if(n.length===1){const e=n[0];if(e instanceof Z)return e;if(jr(e))return new Z(()=>e[Symbol.iterator](),t=>t.next());if(typeof e.length=="number")return new Z(()=>({index:0}),t=>t.index<e.length?{done:!1,value:e[t.index++]}:ve)}return n.length>1?new Z(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}if(e.array){if(e.arrIndex<e.array.length)return{done:!1,value:e.array[e.arrIndex++]};e.array=void 0,e.arrIndex=0}if(e.collIndex<n.length){const t=n[e.collIndex++];jr(t)?e.iterator=t[Symbol.iterator]():t&&typeof t.length=="number"&&(e.array=t)}}while(e.iterator||e.array||e.collIndex<n.length);return ve}):ld}class js extends Z{constructor(e,t,r){super(()=>({iterators:r!=null&&r.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){const a=i.iterators[i.iterators.length-1].next();if(a.done)i.iterators.pop();else return i.iterators.push(t(a.value)[Symbol.iterator]()),a}return ve})}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}}var ss;(function(n){function e(s){return s.reduce((a,o)=>a+o,0)}n.sum=e;function t(s){return s.reduce((a,o)=>a*o,0)}n.product=t;function r(s){return s.reduce((a,o)=>Math.min(a,o))}n.min=r;function i(s){return s.reduce((a,o)=>Math.max(a,o))}n.max=i})(ss||(ss={}));function as(n){return new js(n,e=>Xn(e)?e.content:[],{includeRoot:!0})}function ud(n,e){for(;n.container;)if(n=n.container,n===e)return!0;return!1}function os(n){return{start:{character:n.startColumn-1,line:n.startLine-1},end:{character:n.endColumn,line:n.endLine-1}}}function Hr(n){if(!n)return;const{offset:e,end:t,range:r}=n;return{range:r,offset:e,end:t,length:t-e}}var He;(function(n){n[n.Before=0]="Before",n[n.After=1]="After",n[n.OverlapFront=2]="OverlapFront",n[n.OverlapBack=3]="OverlapBack",n[n.Inside=4]="Inside",n[n.Outside=5]="Outside"})(He||(He={}));function cd(n,e){if(n.end.line<e.start.line||n.end.line===e.start.line&&n.end.character<=e.start.character)return He.Before;if(n.start.line>e.end.line||n.start.line===e.end.line&&n.start.character>=e.end.character)return He.After;const t=n.start.line>e.start.line||n.start.line===e.start.line&&n.start.character>=e.start.character,r=n.end.line<e.end.line||n.end.line===e.end.line&&n.end.character<=e.end.character;return t&&r?He.Inside:t?He.OverlapBack:r?He.OverlapFront:He.Outside}function dd(n,e){return cd(n,e)>He.After}const fd=/^[\w\p{L}]$/u;function hd(n,e){if(n){const t=pd(n,!0);if(t&&Aa(t,e))return t;if(_l(n)){const r=n.content.findIndex(i=>!i.hidden);for(let i=r-1;i>=0;i--){const s=n.content[i];if(Aa(s,e))return s}}}}function Aa(n,e){return wl(n)&&e.includes(n.tokenType.name)}function pd(n,e=!0){for(;n.container;){const t=n.container;let r=t.content.indexOf(n);for(;r>0;){r--;const i=t.content[r];if(e||!i.hidden)return i}n=t}}class Ll extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}}function tr(n){throw new Error("Error! The input value was not handled.")}const lr="AbstractRule",ur="AbstractType",_i="Condition",Ea="TypeDefinition",Li="ValueLiteral",fn="AbstractElement";function md(n){return M.isInstance(n,fn)}const cr="ArrayLiteral",dr="ArrayType",hn="BooleanLiteral";function gd(n){return M.isInstance(n,hn)}const pn="Conjunction";function yd(n){return M.isInstance(n,pn)}const mn="Disjunction";function Td(n){return M.isInstance(n,mn)}const fr="Grammar",Oi="GrammarImport",gn="InferredType";function Ol(n){return M.isInstance(n,gn)}const yn="Interface";function bl(n){return M.isInstance(n,yn)}const bi="NamedArgument",Tn="Negation";function Rd(n){return M.isInstance(n,Tn)}const hr="NumberLiteral",pr="Parameter",Rn="ParameterReference";function vd(n){return M.isInstance(n,Rn)}const vn="ParserRule";function we(n){return M.isInstance(n,vn)}const mr="ReferenceType",_r="ReturnType";function Ad(n){return M.isInstance(n,_r)}const An="SimpleType";function Ed(n){return M.isInstance(n,An)}const gr="StringLiteral",wt="TerminalRule";function $t(n){return M.isInstance(n,wt)}const En="Type";function Pl(n){return M.isInstance(n,En)}const Pi="TypeAttribute",yr="UnionType",kn="Action";function gi(n){return M.isInstance(n,kn)}const $n="Alternatives";function Ml(n){return M.isInstance(n,$n)}const xn="Assignment";function yt(n){return M.isInstance(n,xn)}const Sn="CharacterRange";function kd(n){return M.isInstance(n,Sn)}const In="CrossReference";function Hs(n){return M.isInstance(n,In)}const Cn="EndOfFile";function $d(n){return M.isInstance(n,Cn)}const Nn="Group";function zs(n){return M.isInstance(n,Nn)}const wn="Keyword";function Tt(n){return M.isInstance(n,wn)}const _n="NegatedToken";function xd(n){return M.isInstance(n,_n)}const Ln="RegexToken";function Sd(n){return M.isInstance(n,Ln)}const On="RuleCall";function Rt(n){return M.isInstance(n,On)}const bn="TerminalAlternatives";function Id(n){return M.isInstance(n,bn)}const Pn="TerminalGroup";function Cd(n){return M.isInstance(n,Pn)}const Mn="TerminalRuleCall";function Nd(n){return M.isInstance(n,Mn)}const Dn="UnorderedGroup";function Dl(n){return M.isInstance(n,Dn)}const Fn="UntilToken";function wd(n){return M.isInstance(n,Fn)}const Gn="Wildcard";function _d(n){return M.isInstance(n,Gn)}class Fl extends Nl{getAllTypes(){return[fn,lr,ur,kn,$n,cr,dr,xn,hn,Sn,_i,pn,In,mn,Cn,fr,Oi,Nn,gn,yn,wn,bi,_n,Tn,hr,pr,Rn,vn,mr,Ln,_r,On,An,gr,bn,Pn,wt,Mn,En,Pi,Ea,yr,Dn,Fn,Li,Gn]}computeIsSubtype(e,t){switch(e){case kn:case $n:case xn:case Sn:case In:case Cn:case Nn:case wn:case _n:case Ln:case On:case bn:case Pn:case Mn:case Dn:case Fn:case Gn:return this.isSubtype(fn,t);case cr:case hr:case gr:return this.isSubtype(Li,t);case dr:case mr:case An:case yr:return this.isSubtype(Ea,t);case hn:return this.isSubtype(_i,t)||this.isSubtype(Li,t);case pn:case mn:case Tn:case Rn:return this.isSubtype(_i,t);case gn:case yn:case En:return this.isSubtype(ur,t);case vn:return this.isSubtype(lr,t)||this.isSubtype(ur,t);case wt:return this.isSubtype(lr,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;switch(t){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return ur;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return lr;case"Grammar:usedGrammars":return fr;case"NamedArgument:parameter":case"ParameterReference:parameter":return pr;case"TerminalRuleCall:rule":return wt;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case fn:return{name:fn,properties:[{name:"cardinality"},{name:"lookahead"}]};case cr:return{name:cr,properties:[{name:"elements",defaultValue:[]}]};case dr:return{name:dr,properties:[{name:"elementType"}]};case hn:return{name:hn,properties:[{name:"true",defaultValue:!1}]};case pn:return{name:pn,properties:[{name:"left"},{name:"right"}]};case mn:return{name:mn,properties:[{name:"left"},{name:"right"}]};case fr:return{name:fr,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case Oi:return{name:Oi,properties:[{name:"path"}]};case gn:return{name:gn,properties:[{name:"name"}]};case yn:return{name:yn,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case bi:return{name:bi,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Tn:return{name:Tn,properties:[{name:"value"}]};case hr:return{name:hr,properties:[{name:"value"}]};case pr:return{name:pr,properties:[{name:"name"}]};case Rn:return{name:Rn,properties:[{name:"parameter"}]};case vn:return{name:vn,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case mr:return{name:mr,properties:[{name:"referenceType"}]};case _r:return{name:_r,properties:[{name:"name"}]};case An:return{name:An,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case gr:return{name:gr,properties:[{name:"value"}]};case wt:return{name:wt,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case En:return{name:En,properties:[{name:"name"},{name:"type"}]};case Pi:return{name:Pi,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case yr:return{name:yr,properties:[{name:"types",defaultValue:[]}]};case kn:return{name:kn,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case $n:return{name:$n,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case xn:return{name:xn,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Sn:return{name:Sn,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case In:return{name:In,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case Cn:return{name:Cn,properties:[{name:"cardinality"},{name:"lookahead"}]};case Nn:return{name:Nn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case wn:return{name:wn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case _n:return{name:_n,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Ln:return{name:Ln,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case On:return{name:On,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case bn:return{name:bn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Pn:return{name:Pn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Mn:return{name:Mn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case Dn:return{name:Dn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Fn:return{name:Fn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Gn:return{name:Gn,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}}const M=new Fl;function Ld(n){for(const[e,t]of Object.entries(n))e.startsWith("$")||(Array.isArray(t)?t.forEach((r,i)=>{se(r)&&(r.$container=n,r.$containerProperty=e,r.$containerIndex=i)}):se(t)&&(t.$container=n,t.$containerProperty=e))}function yi(n,e){let t=n;for(;t;){if(e(t))return t;t=t.$container}}function et(n){const t=ls(n).$document;if(!t)throw new Error("AST node has no document.");return t}function ls(n){for(;n.$container;)n=n.$container;return n}function qs(n,e){if(!n)throw new Error("Node must be an AstNode.");const t=e==null?void 0:e.range;return new Z(()=>({keys:Object.keys(n),keyIndex:0,arrayIndex:0}),r=>{for(;r.keyIndex<r.keys.length;){const i=r.keys[r.keyIndex];if(!i.startsWith("$")){const s=n[i];if(se(s)){if(r.keyIndex++,ka(s,t))return{done:!1,value:s}}else if(Array.isArray(s)){for(;r.arrayIndex<s.length;){const a=r.arrayIndex++,o=s[a];if(se(o)&&ka(o,t))return{done:!1,value:o}}r.arrayIndex=0}}r.keyIndex++}return ve})}function nr(n,e){if(!n)throw new Error("Root node must be an AstNode.");return new js(n,t=>qs(t,e))}function Lt(n,e){if(!n)throw new Error("Root node must be an AstNode.");return new js(n,t=>qs(t,e),{includeRoot:!0})}function ka(n,e){var t;if(!e)return!0;const r=(t=n.$cstNode)===null||t===void 0?void 0:t.range;return r?dd(r,e):!1}function Gl(n){return new Z(()=>({keys:Object.keys(n),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex<e.keys.length;){const t=e.keys[e.keyIndex];if(!t.startsWith("$")){const r=n[t];if(Ue(r))return e.keyIndex++,{done:!1,value:{reference:r,container:n,property:t}};if(Array.isArray(r)){for(;e.arrayIndex<r.length;){const i=e.arrayIndex++,s=r[i];if(Ue(s))return{done:!1,value:{reference:s,container:n,property:t,index:i}}}e.arrayIndex=0}}e.keyIndex++}return ve})}function Od(n,e){const t=n.getTypeMetaData(e.$type),r=e;for(const i of t.properties)i.defaultValue!==void 0&&r[i.name]===void 0&&(r[i.name]=Ul(i.defaultValue))}function Ul(n){return Array.isArray(n)?[...n.map(Ul)]:n}function w(n){return n.charCodeAt(0)}function Mi(n,e){Array.isArray(n)?n.forEach(function(t){e.push(t)}):e.push(n)}function un(n,e){if(n[e]===!0)throw"duplicate flag "+e;n[e],n[e]=!0}function Nt(n){if(n===void 0)throw Error("Internal Error - Should never get here!");return!0}function bd(){throw Error("Internal Error - Should never get here!")}function $a(n){return n.type==="Character"}const zr=[];for(let n=w("0");n<=w("9");n++)zr.push(n);const qr=[w("_")].concat(zr);for(let n=w("a");n<=w("z");n++)qr.push(n);for(let n=w("A");n<=w("Z");n++)qr.push(n);const xa=[w(" "),w("\f"),w(`
1
+ var Sc=Object.defineProperty;var Ic=(n,e,t)=>e in n?Sc(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Ze=(n,e,t)=>Ic(n,typeof e!="symbol"?e+"":e,t);import{aN as Cc,aO as Nc,O as xl,aP as wc,x as Jt,ao as _c,E as Bs,G as Zn,H as ae,P as Vs,aQ as Sl,an as Lc,aj as Oc,aR as he,aS as Il,aT as bc,aU as Pc,al as Mc,aV as ya,F as Dc,aW as Fc,aX as Gc,aY as Me,y as C,aZ as Ks,ap as Ne,ar as N,v as kt,A as le,B as D,a_ as pi,S as Ta,a$ as Y,at as Qt,b0 as Uc,ay as ht}from"./index-DuV4Cs93.js";import{m as x,f as Zt,e as Ws,d as Bc}from"./min-iWVu4DkI.js";import{v as z,b as Vc,i as Ye,f as $e}from"./isUndefined-B1VZkTi-.js";import{c as ne}from"./clone-Du_gs0pm.js";var Kc=Object.prototype,Wc=Kc.hasOwnProperty,ke=Cc(function(n,e){if(Nc(e)||xl(e)){wc(e,Jt(e),n);return}for(var t in e)Wc.call(e,t)&&_c(n,t,e[t])});function er(n){for(var e=-1,t=n==null?0:n.length,r=0,i=[];++e<t;){var s=n[e];s&&(i[r++]=s)}return i}function jc(n,e,t,r){for(var i=-1,s=n==null?0:n.length;++i<s;){var a=n[i];e(r,a,t(a),n)}return r}function Hc(n,e,t,r){return Bs(n,function(i,s,a){e(r,i,t(i),a)}),r}function zc(n,e){return function(t,r){var i=ae(t)?jc:Hc,s=e?e():{};return i(t,n,Zn(r),s)}}function Q(n,e,t){var r=n==null?0:n.length;return r?(e=e===void 0?1:Vs(e),Sl(n,e<0?0:e,r)):[]}function Yn(n,e,t){var r=n==null?0:n.length;return r?(e=e===void 0?1:Vs(e),e=r-e,Sl(n,0,e<0?0:e)):[]}function qc(n,e){for(var t=-1,r=n==null?0:n.length;++t<r;)if(!e(n[t],t,n))return!1;return!0}function Yc(n,e){var t=!0;return Bs(n,function(r,i,s){return t=!!e(r,i,s),t}),t}function be(n,e,t){var r=ae(n)?qc:Yc;return r(n,Zn(e))}function Pe(n){return n&&n.length?n[0]:void 0}function Ee(n,e){return Lc(x(n,e),1)}var Xc=Object.prototype,Jc=Xc.hasOwnProperty,Qc=zc(function(n,e,t){Jc.call(n,t)?n[t].push(e):Oc(n,t,[e])}),Zc=Math.max;function de(n,e,t,r){n=xl(n)?n:z(n),t=t?Vs(t):0;var i=n.length;return t<0&&(t=Zc(i+t,0)),he(n)?t<=i&&n.indexOf(e,t)>-1:!!i&&Il(n,e,t)>-1}function Ra(n,e,t){var r=n==null?0:n.length;if(!r)return-1;var i=0;return Il(n,e,i)}var ed="[object RegExp]";function td(n){return bc(n)&&Pc(n)==ed}var va=ya&&ya.isRegExp,Xe=va?Mc(va):td,nd="Expected a function";function rd(n){if(typeof n!="function")throw new TypeError(nd);return function(){var e=arguments;switch(e.length){case 0:return!n.call(this);case 1:return!n.call(this,e[0]);case 2:return!n.call(this,e[0],e[1]);case 3:return!n.call(this,e[0],e[1],e[2])}return!n.apply(this,e)}}function mi(n,e){var t=ae(n)?Dc:Vc;return t(n,rd(Zn(e)))}function id(n,e){var t;return Bs(n,function(r,i,s){return t=e(r,i,s),!t}),!!t}function Cl(n,e,t){var r=ae(n)?Fc:id;return r(n,Zn(e))}function sd(n,e){return n&&n.length?Gc(n,Zn(e)):[]}function se(n){return typeof n=="object"&&n!==null&&typeof n.$type=="string"}function Ue(n){return typeof n=="object"&&n!==null&&typeof n.$refText=="string"}function ad(n){return typeof n=="object"&&n!==null&&typeof n.name=="string"&&typeof n.type=="string"&&typeof n.path=="string"}function wr(n){return typeof n=="object"&&n!==null&&se(n.container)&&Ue(n.reference)&&typeof n.message=="string"}class Nl{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return se(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});const i=r[t];if(i!==void 0)return i;{const s=this.computeIsSubtype(e,t);return r[t]=s,s}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const r=this.getAllTypes(),i=[];for(const s of r)this.isSubtype(s,e)&&i.push(s);return this.allSubtypes[e]=i,i}}}function Xn(n){return typeof n=="object"&&n!==null&&Array.isArray(n.content)}function wl(n){return typeof n=="object"&&n!==null&&typeof n.tokenType=="object"}function _l(n){return Xn(n)&&typeof n.fullText=="string"}class Z{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){const e=this.iterator();let t=0,r=e.next();for(;!r.done;)t++,r=e.next();return t}toArray(){const e=[],t=this.iterator();let r;do r=t.next(),r.value!==void 0&&e.push(r.value);while(!r.done);return e}toSet(){return new Set(this)}toMap(e,t){const r=this.map(i=>[e?e(i):i,t?t(i):i]);return new Map(r)}toString(){return this.join()}concat(e){return new Z(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),t=>{let r;if(!t.firstDone){do if(r=this.nextFn(t.first),!r.done)return r;while(!r.done);t.firstDone=!0}do if(r=t.iterator.next(),!r.done)return r;while(!r.done);return ve})}join(e=","){const t=this.iterator();let r="",i,s=!1;do i=t.next(),i.done||(s&&(r+=e),r+=od(i.value)),s=!0;while(!i.done);return r}indexOf(e,t=0){const r=this.iterator();let i=0,s=r.next();for(;!s.done;){if(i>=t&&s.value===e)return i;s=r.next(),i++}return-1}every(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(!e(r.value))return!1;r=t.next()}return!0}some(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return!0;r=t.next()}return!1}forEach(e){const t=this.iterator();let r=0,i=t.next();for(;!i.done;)e(i.value,r),i=t.next(),r++}map(e){return new Z(this.startFn,t=>{const{done:r,value:i}=this.nextFn(t);return r?ve:{done:!1,value:e(i)}})}filter(e){return new Z(this.startFn,t=>{let r;do if(r=this.nextFn(t),!r.done&&e(r.value))return r;while(!r.done);return ve})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){const r=this.iterator();let i=t,s=r.next();for(;!s.done;)i===void 0?i=s.value:i=e(i,s.value),s=r.next();return i}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,r){const i=e.next();if(i.done)return r;const s=this.recursiveReduce(e,t,r);return s===void 0?i.value:t(s,i.value)}find(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return r.value;r=t.next()}}findIndex(e){const t=this.iterator();let r=0,i=t.next();for(;!i.done;){if(e(i.value))return r;i=t.next(),r++}return-1}includes(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(r.value===e)return!0;r=t.next()}return!1}flatMap(e){return new Z(()=>({this:this.startFn()}),t=>{do{if(t.iterator){const s=t.iterator.next();if(s.done)t.iterator=void 0;else return s}const{done:r,value:i}=this.nextFn(t.this);if(!r){const s=e(i);if(jr(s))t.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}}while(t.iterator);return ve})}flat(e){if(e===void 0&&(e=1),e<=0)return this;const t=e>1?this.flat(e-1):this;return new Z(()=>({this:t.startFn()}),r=>{do{if(r.iterator){const a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}const{done:i,value:s}=t.nextFn(r.this);if(!i)if(jr(s))r.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}while(r.iterator);return ve})}head(){const t=this.iterator().next();if(!t.done)return t.value}tail(e=1){return new Z(()=>{const t=this.startFn();for(let r=0;r<e;r++)if(this.nextFn(t).done)return t;return t},this.nextFn)}limit(e){return new Z(()=>({size:0,state:this.startFn()}),t=>(t.size++,t.size>e?ve:this.nextFn(t.state)))}distinct(e){return new Z(()=>({set:new Set,internalState:this.startFn()}),t=>{let r;do if(r=this.nextFn(t.internalState),!r.done){const i=e?e(r.value):r.value;if(!t.set.has(i))return t.set.add(i),r}while(!r.done);return ve})}exclude(e,t){const r=new Set;for(const i of e){const s=t?t(i):i;r.add(s)}return this.filter(i=>{const s=t?t(i):i;return!r.has(s)})}}function od(n){return typeof n=="string"?n:typeof n>"u"?"undefined":typeof n.toString=="function"?n.toString():Object.prototype.toString.call(n)}function jr(n){return!!n&&typeof n[Symbol.iterator]=="function"}const ld=new Z(()=>{},()=>ve),ve=Object.freeze({done:!0,value:void 0});function ee(...n){if(n.length===1){const e=n[0];if(e instanceof Z)return e;if(jr(e))return new Z(()=>e[Symbol.iterator](),t=>t.next());if(typeof e.length=="number")return new Z(()=>({index:0}),t=>t.index<e.length?{done:!1,value:e[t.index++]}:ve)}return n.length>1?new Z(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}if(e.array){if(e.arrIndex<e.array.length)return{done:!1,value:e.array[e.arrIndex++]};e.array=void 0,e.arrIndex=0}if(e.collIndex<n.length){const t=n[e.collIndex++];jr(t)?e.iterator=t[Symbol.iterator]():t&&typeof t.length=="number"&&(e.array=t)}}while(e.iterator||e.array||e.collIndex<n.length);return ve}):ld}class js extends Z{constructor(e,t,r){super(()=>({iterators:r!=null&&r.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){const a=i.iterators[i.iterators.length-1].next();if(a.done)i.iterators.pop();else return i.iterators.push(t(a.value)[Symbol.iterator]()),a}return ve})}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}}var ss;(function(n){function e(s){return s.reduce((a,o)=>a+o,0)}n.sum=e;function t(s){return s.reduce((a,o)=>a*o,0)}n.product=t;function r(s){return s.reduce((a,o)=>Math.min(a,o))}n.min=r;function i(s){return s.reduce((a,o)=>Math.max(a,o))}n.max=i})(ss||(ss={}));function as(n){return new js(n,e=>Xn(e)?e.content:[],{includeRoot:!0})}function ud(n,e){for(;n.container;)if(n=n.container,n===e)return!0;return!1}function os(n){return{start:{character:n.startColumn-1,line:n.startLine-1},end:{character:n.endColumn,line:n.endLine-1}}}function Hr(n){if(!n)return;const{offset:e,end:t,range:r}=n;return{range:r,offset:e,end:t,length:t-e}}var He;(function(n){n[n.Before=0]="Before",n[n.After=1]="After",n[n.OverlapFront=2]="OverlapFront",n[n.OverlapBack=3]="OverlapBack",n[n.Inside=4]="Inside",n[n.Outside=5]="Outside"})(He||(He={}));function cd(n,e){if(n.end.line<e.start.line||n.end.line===e.start.line&&n.end.character<=e.start.character)return He.Before;if(n.start.line>e.end.line||n.start.line===e.end.line&&n.start.character>=e.end.character)return He.After;const t=n.start.line>e.start.line||n.start.line===e.start.line&&n.start.character>=e.start.character,r=n.end.line<e.end.line||n.end.line===e.end.line&&n.end.character<=e.end.character;return t&&r?He.Inside:t?He.OverlapBack:r?He.OverlapFront:He.Outside}function dd(n,e){return cd(n,e)>He.After}const fd=/^[\w\p{L}]$/u;function hd(n,e){if(n){const t=pd(n,!0);if(t&&Aa(t,e))return t;if(_l(n)){const r=n.content.findIndex(i=>!i.hidden);for(let i=r-1;i>=0;i--){const s=n.content[i];if(Aa(s,e))return s}}}}function Aa(n,e){return wl(n)&&e.includes(n.tokenType.name)}function pd(n,e=!0){for(;n.container;){const t=n.container;let r=t.content.indexOf(n);for(;r>0;){r--;const i=t.content[r];if(e||!i.hidden)return i}n=t}}class Ll extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}}function tr(n){throw new Error("Error! The input value was not handled.")}const lr="AbstractRule",ur="AbstractType",_i="Condition",Ea="TypeDefinition",Li="ValueLiteral",fn="AbstractElement";function md(n){return M.isInstance(n,fn)}const cr="ArrayLiteral",dr="ArrayType",hn="BooleanLiteral";function gd(n){return M.isInstance(n,hn)}const pn="Conjunction";function yd(n){return M.isInstance(n,pn)}const mn="Disjunction";function Td(n){return M.isInstance(n,mn)}const fr="Grammar",Oi="GrammarImport",gn="InferredType";function Ol(n){return M.isInstance(n,gn)}const yn="Interface";function bl(n){return M.isInstance(n,yn)}const bi="NamedArgument",Tn="Negation";function Rd(n){return M.isInstance(n,Tn)}const hr="NumberLiteral",pr="Parameter",Rn="ParameterReference";function vd(n){return M.isInstance(n,Rn)}const vn="ParserRule";function we(n){return M.isInstance(n,vn)}const mr="ReferenceType",_r="ReturnType";function Ad(n){return M.isInstance(n,_r)}const An="SimpleType";function Ed(n){return M.isInstance(n,An)}const gr="StringLiteral",wt="TerminalRule";function $t(n){return M.isInstance(n,wt)}const En="Type";function Pl(n){return M.isInstance(n,En)}const Pi="TypeAttribute",yr="UnionType",kn="Action";function gi(n){return M.isInstance(n,kn)}const $n="Alternatives";function Ml(n){return M.isInstance(n,$n)}const xn="Assignment";function yt(n){return M.isInstance(n,xn)}const Sn="CharacterRange";function kd(n){return M.isInstance(n,Sn)}const In="CrossReference";function Hs(n){return M.isInstance(n,In)}const Cn="EndOfFile";function $d(n){return M.isInstance(n,Cn)}const Nn="Group";function zs(n){return M.isInstance(n,Nn)}const wn="Keyword";function Tt(n){return M.isInstance(n,wn)}const _n="NegatedToken";function xd(n){return M.isInstance(n,_n)}const Ln="RegexToken";function Sd(n){return M.isInstance(n,Ln)}const On="RuleCall";function Rt(n){return M.isInstance(n,On)}const bn="TerminalAlternatives";function Id(n){return M.isInstance(n,bn)}const Pn="TerminalGroup";function Cd(n){return M.isInstance(n,Pn)}const Mn="TerminalRuleCall";function Nd(n){return M.isInstance(n,Mn)}const Dn="UnorderedGroup";function Dl(n){return M.isInstance(n,Dn)}const Fn="UntilToken";function wd(n){return M.isInstance(n,Fn)}const Gn="Wildcard";function _d(n){return M.isInstance(n,Gn)}class Fl extends Nl{getAllTypes(){return[fn,lr,ur,kn,$n,cr,dr,xn,hn,Sn,_i,pn,In,mn,Cn,fr,Oi,Nn,gn,yn,wn,bi,_n,Tn,hr,pr,Rn,vn,mr,Ln,_r,On,An,gr,bn,Pn,wt,Mn,En,Pi,Ea,yr,Dn,Fn,Li,Gn]}computeIsSubtype(e,t){switch(e){case kn:case $n:case xn:case Sn:case In:case Cn:case Nn:case wn:case _n:case Ln:case On:case bn:case Pn:case Mn:case Dn:case Fn:case Gn:return this.isSubtype(fn,t);case cr:case hr:case gr:return this.isSubtype(Li,t);case dr:case mr:case An:case yr:return this.isSubtype(Ea,t);case hn:return this.isSubtype(_i,t)||this.isSubtype(Li,t);case pn:case mn:case Tn:case Rn:return this.isSubtype(_i,t);case gn:case yn:case En:return this.isSubtype(ur,t);case vn:return this.isSubtype(lr,t)||this.isSubtype(ur,t);case wt:return this.isSubtype(lr,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;switch(t){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return ur;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return lr;case"Grammar:usedGrammars":return fr;case"NamedArgument:parameter":case"ParameterReference:parameter":return pr;case"TerminalRuleCall:rule":return wt;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case fn:return{name:fn,properties:[{name:"cardinality"},{name:"lookahead"}]};case cr:return{name:cr,properties:[{name:"elements",defaultValue:[]}]};case dr:return{name:dr,properties:[{name:"elementType"}]};case hn:return{name:hn,properties:[{name:"true",defaultValue:!1}]};case pn:return{name:pn,properties:[{name:"left"},{name:"right"}]};case mn:return{name:mn,properties:[{name:"left"},{name:"right"}]};case fr:return{name:fr,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case Oi:return{name:Oi,properties:[{name:"path"}]};case gn:return{name:gn,properties:[{name:"name"}]};case yn:return{name:yn,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case bi:return{name:bi,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Tn:return{name:Tn,properties:[{name:"value"}]};case hr:return{name:hr,properties:[{name:"value"}]};case pr:return{name:pr,properties:[{name:"name"}]};case Rn:return{name:Rn,properties:[{name:"parameter"}]};case vn:return{name:vn,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case mr:return{name:mr,properties:[{name:"referenceType"}]};case _r:return{name:_r,properties:[{name:"name"}]};case An:return{name:An,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case gr:return{name:gr,properties:[{name:"value"}]};case wt:return{name:wt,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case En:return{name:En,properties:[{name:"name"},{name:"type"}]};case Pi:return{name:Pi,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case yr:return{name:yr,properties:[{name:"types",defaultValue:[]}]};case kn:return{name:kn,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case $n:return{name:$n,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case xn:return{name:xn,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Sn:return{name:Sn,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case In:return{name:In,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case Cn:return{name:Cn,properties:[{name:"cardinality"},{name:"lookahead"}]};case Nn:return{name:Nn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case wn:return{name:wn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case _n:return{name:_n,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Ln:return{name:Ln,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case On:return{name:On,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case bn:return{name:bn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Pn:return{name:Pn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Mn:return{name:Mn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case Dn:return{name:Dn,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Fn:return{name:Fn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Gn:return{name:Gn,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}}const M=new Fl;function Ld(n){for(const[e,t]of Object.entries(n))e.startsWith("$")||(Array.isArray(t)?t.forEach((r,i)=>{se(r)&&(r.$container=n,r.$containerProperty=e,r.$containerIndex=i)}):se(t)&&(t.$container=n,t.$containerProperty=e))}function yi(n,e){let t=n;for(;t;){if(e(t))return t;t=t.$container}}function et(n){const t=ls(n).$document;if(!t)throw new Error("AST node has no document.");return t}function ls(n){for(;n.$container;)n=n.$container;return n}function qs(n,e){if(!n)throw new Error("Node must be an AstNode.");const t=e==null?void 0:e.range;return new Z(()=>({keys:Object.keys(n),keyIndex:0,arrayIndex:0}),r=>{for(;r.keyIndex<r.keys.length;){const i=r.keys[r.keyIndex];if(!i.startsWith("$")){const s=n[i];if(se(s)){if(r.keyIndex++,ka(s,t))return{done:!1,value:s}}else if(Array.isArray(s)){for(;r.arrayIndex<s.length;){const a=r.arrayIndex++,o=s[a];if(se(o)&&ka(o,t))return{done:!1,value:o}}r.arrayIndex=0}}r.keyIndex++}return ve})}function nr(n,e){if(!n)throw new Error("Root node must be an AstNode.");return new js(n,t=>qs(t,e))}function Lt(n,e){if(!n)throw new Error("Root node must be an AstNode.");return new js(n,t=>qs(t,e),{includeRoot:!0})}function ka(n,e){var t;if(!e)return!0;const r=(t=n.$cstNode)===null||t===void 0?void 0:t.range;return r?dd(r,e):!1}function Gl(n){return new Z(()=>({keys:Object.keys(n),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex<e.keys.length;){const t=e.keys[e.keyIndex];if(!t.startsWith("$")){const r=n[t];if(Ue(r))return e.keyIndex++,{done:!1,value:{reference:r,container:n,property:t}};if(Array.isArray(r)){for(;e.arrayIndex<r.length;){const i=e.arrayIndex++,s=r[i];if(Ue(s))return{done:!1,value:{reference:s,container:n,property:t,index:i}}}e.arrayIndex=0}}e.keyIndex++}return ve})}function Od(n,e){const t=n.getTypeMetaData(e.$type),r=e;for(const i of t.properties)i.defaultValue!==void 0&&r[i.name]===void 0&&(r[i.name]=Ul(i.defaultValue))}function Ul(n){return Array.isArray(n)?[...n.map(Ul)]:n}function w(n){return n.charCodeAt(0)}function Mi(n,e){Array.isArray(n)?n.forEach(function(t){e.push(t)}):e.push(n)}function un(n,e){if(n[e]===!0)throw"duplicate flag "+e;n[e],n[e]=!0}function Nt(n){if(n===void 0)throw Error("Internal Error - Should never get here!");return!0}function bd(){throw Error("Internal Error - Should never get here!")}function $a(n){return n.type==="Character"}const zr=[];for(let n=w("0");n<=w("9");n++)zr.push(n);const qr=[w("_")].concat(zr);for(let n=w("a");n<=w("z");n++)qr.push(n);for(let n=w("A");n<=w("Z");n++)qr.push(n);const xa=[w(" "),w("\f"),w(`
2
2
  `),w("\r"),w(" "),w("\v"),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w(" "),w("\u2028"),w("\u2029"),w(" "),w(" "),w(" "),w("\uFEFF")],Pd=/[0-9a-fA-F]/,Tr=/[0-9]/,Md=/[1-9]/;class Bl{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");const t=this.disjunction();this.consumeChar("/");const r={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":un(r,"global");break;case"i":un(r,"ignoreCase");break;case"m":un(r,"multiLine");break;case"u":un(r,"unicode");break;case"y":un(r,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:t,loc:this.loc(0)}}disjunction(){const e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){const e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break}Nt(t);const r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return bd()}quantifier(e=!1){let t;const r=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":const i=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:i,atMost:i};break;case",":let s;this.isDigit()?(s=this.integerIncludingZero(),t={atLeast:i,atMost:s}):t={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&t===void 0)return;Nt(t);break}if(!(e===!0&&t===void 0)&&Nt(t))return this.peekChar(0)==="?"?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(r),t}atom(){let e;const t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}if(e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Nt(e))return e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[w(`
3
3
  `),w("\r"),w("\u2028"),w("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=zr;break;case"D":e=zr,t=!0;break;case"s":e=xa;break;case"S":e=xa,t=!0;break;case"w":e=qr;break;case"W":e=qr,t=!0;break}if(Nt(e))return{type:"Set",value:e,complement:t}}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=w("\f");break;case"n":e=w(`
4
4
  `);break;case"r":e=w("\r");break;case"t":e=w(" ");break;case"v":e=w("\v");break}if(Nt(e))return{type:"Character",value:e}}controlLetterEscapeAtom(){this.consumeChar("c");const e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:w("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){const e=this.popChar();return{type:"Character",value:w(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case`
@@ -1,4 +1,4 @@
1
- import{_ as n,s as gi,g as xi,q as Xt,p as di,a as pi,b as fi,l as Nt,I as yi,d as mi,y as bi,F as Ct,E as Yt,G as Ai,L as wi,h as Ci,M as Si}from"./mermaid.core-3MG272Pv.js";import{o as Bt,n as Wt,q as zt}from"./index-yx5a2qjD.js";var mt=function(){var s=n(function(W,r,u,g){for(u=u||{},g=W.length;g--;u[W[g]]=r);return u},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],e=[1,3],a=[1,5],c=[1,6],d=[1,7],m=[1,5,10,12,14,16,18,19,21,23,34,35,36],b=[1,25],P=[1,26],I=[1,28],R=[1,29],L=[1,30],z=[1,31],F=[1,32],D=[1,33],V=[1,34],f=[1,35],C=[1,36],l=[1,37],M=[1,43],B=[1,42],U=[1,47],X=[1,50],h=[1,10,12,14,16,18,19,21,23,34,35,36],k=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],w=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],S=[1,64],$={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(r,u,g,x,A,o,nt){var p=o.length-1;switch(A){case 5:x.setOrientation(o[p]);break;case 9:x.setDiagramTitle(o[p].text.trim());break;case 12:x.setLineData({text:"",type:"text"},o[p]);break;case 13:x.setLineData(o[p-1],o[p]);break;case 14:x.setBarData({text:"",type:"text"},o[p]);break;case 15:x.setBarData(o[p-1],o[p]);break;case 16:this.$=o[p].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=o[p].trim(),x.setAccDescription(this.$);break;case 19:this.$=o[p-1];break;case 20:this.$=[Number(o[p-2]),...o[p]];break;case 21:this.$=[Number(o[p])];break;case 22:x.setXAxisTitle(o[p]);break;case 23:x.setXAxisTitle(o[p-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(o[p]);break;case 26:x.setXAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 27:this.$=o[p-1];break;case 28:this.$=[o[p-2],...o[p]];break;case 29:this.$=[o[p]];break;case 30:x.setYAxisTitle(o[p]);break;case 31:x.setYAxisTitle(o[p-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 37:this.$={text:o[p],type:"text"};break;case 38:this.$={text:o[p],type:"text"};break;case 39:this.$={text:o[p],type:"markdown"};break;case 40:this.$=o[p];break;case 41:this.$=o[p-1]+""+o[p];break}},"anonymous"),table:[s(t,i,{3:1,4:2,7:4,5:e,34:a,35:c,36:d}),{1:[3]},s(t,i,{4:2,7:4,3:8,5:e,34:a,35:c,36:d}),s(t,i,{4:2,7:4,6:9,3:10,5:e,8:[1,11],34:a,35:c,36:d}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},s(m,[2,34]),s(m,[2,35]),s(m,[2,36]),{1:[2,1]},s(t,i,{4:2,7:4,3:21,5:e,34:a,35:c,36:d}),{1:[2,3]},s(m,[2,5]),s(t,[2,7],{4:22,34:a,35:c,36:d}),{11:23,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:39,13:38,24:M,27:B,29:40,30:41,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:45,15:44,27:U,33:46,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:49,17:48,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:52,17:51,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{20:[1,53]},{22:[1,54]},s(h,[2,18]),{1:[2,2]},s(h,[2,8]),s(h,[2,9]),s(k,[2,37],{40:55,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l}),s(k,[2,38]),s(k,[2,39]),s(w,[2,40]),s(w,[2,42]),s(w,[2,43]),s(w,[2,44]),s(w,[2,45]),s(w,[2,46]),s(w,[2,47]),s(w,[2,48]),s(w,[2,49]),s(w,[2,50]),s(w,[2,51]),s(h,[2,10]),s(h,[2,22],{30:41,29:56,24:M,27:B}),s(h,[2,24]),s(h,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,11]),s(h,[2,30],{33:60,27:U}),s(h,[2,32]),{31:[1,61]},s(h,[2,12]),{17:62,24:X},{25:63,27:S},s(h,[2,14]),{17:65,24:X},s(h,[2,16]),s(h,[2,17]),s(w,[2,41]),s(h,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},s(h,[2,31]),{27:[1,69]},s(h,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},s(h,[2,15]),s(h,[2,26]),s(h,[2,27]),{11:59,32:72,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,33]),s(h,[2,19]),{25:73,27:S},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(r,u){if(u.recoverable)this.trace(r);else{var g=new Error(r);throw g.hash=u,g}},"parseError"),parse:n(function(r){var u=this,g=[0],x=[],A=[null],o=[],nt=this.table,p="",lt=0,Et=0,hi=2,It=1,li=o.slice.call(arguments,1),_=Object.create(this.lexer),Y={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Y.yy[dt]=this.yy[dt]);_.setInput(r,Y.yy),Y.yy.lexer=_,Y.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var pt=_.yylloc;o.push(pt);var ci=_.options&&_.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(v){g.length=g.length-2*v,A.length=A.length-v,o.length=o.length-v}n(ui,"popStack");function Vt(){var v;return v=x.pop()||_.lex()||It,typeof v!="number"&&(v instanceof Array&&(x=v,v=x.pop()),v=u.symbols_[v]||v),v}n(Vt,"lex");for(var T,H,E,ft,q={},ct,O,Mt,ut;;){if(H=g[g.length-1],this.defaultActions[H]?E=this.defaultActions[H]:((T===null||typeof T>"u")&&(T=Vt()),E=nt[H]&&nt[H][T]),typeof E>"u"||!E.length||!E[0]){var yt="";ut=[];for(ct in nt[H])this.terminals_[ct]&&ct>hi&&ut.push("'"+this.terminals_[ct]+"'");_.showPosition?yt="Parse error on line "+(lt+1)+`:
1
+ import{_ as n,s as gi,g as xi,q as Xt,p as di,a as pi,b as fi,l as Nt,I as yi,d as mi,y as bi,F as Ct,E as Yt,G as Ai,L as wi,h as Ci,M as Si}from"./mermaid.core-BpzyNF0N.js";import{o as Bt,n as Wt,q as zt}from"./index-DuV4Cs93.js";var mt=function(){var s=n(function(W,r,u,g){for(u=u||{},g=W.length;g--;u[W[g]]=r);return u},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],e=[1,3],a=[1,5],c=[1,6],d=[1,7],m=[1,5,10,12,14,16,18,19,21,23,34,35,36],b=[1,25],P=[1,26],I=[1,28],R=[1,29],L=[1,30],z=[1,31],F=[1,32],D=[1,33],V=[1,34],f=[1,35],C=[1,36],l=[1,37],M=[1,43],B=[1,42],U=[1,47],X=[1,50],h=[1,10,12,14,16,18,19,21,23,34,35,36],k=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],w=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],S=[1,64],$={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(r,u,g,x,A,o,nt){var p=o.length-1;switch(A){case 5:x.setOrientation(o[p]);break;case 9:x.setDiagramTitle(o[p].text.trim());break;case 12:x.setLineData({text:"",type:"text"},o[p]);break;case 13:x.setLineData(o[p-1],o[p]);break;case 14:x.setBarData({text:"",type:"text"},o[p]);break;case 15:x.setBarData(o[p-1],o[p]);break;case 16:this.$=o[p].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=o[p].trim(),x.setAccDescription(this.$);break;case 19:this.$=o[p-1];break;case 20:this.$=[Number(o[p-2]),...o[p]];break;case 21:this.$=[Number(o[p])];break;case 22:x.setXAxisTitle(o[p]);break;case 23:x.setXAxisTitle(o[p-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(o[p]);break;case 26:x.setXAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 27:this.$=o[p-1];break;case 28:this.$=[o[p-2],...o[p]];break;case 29:this.$=[o[p]];break;case 30:x.setYAxisTitle(o[p]);break;case 31:x.setYAxisTitle(o[p-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 37:this.$={text:o[p],type:"text"};break;case 38:this.$={text:o[p],type:"text"};break;case 39:this.$={text:o[p],type:"markdown"};break;case 40:this.$=o[p];break;case 41:this.$=o[p-1]+""+o[p];break}},"anonymous"),table:[s(t,i,{3:1,4:2,7:4,5:e,34:a,35:c,36:d}),{1:[3]},s(t,i,{4:2,7:4,3:8,5:e,34:a,35:c,36:d}),s(t,i,{4:2,7:4,6:9,3:10,5:e,8:[1,11],34:a,35:c,36:d}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},s(m,[2,34]),s(m,[2,35]),s(m,[2,36]),{1:[2,1]},s(t,i,{4:2,7:4,3:21,5:e,34:a,35:c,36:d}),{1:[2,3]},s(m,[2,5]),s(t,[2,7],{4:22,34:a,35:c,36:d}),{11:23,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:39,13:38,24:M,27:B,29:40,30:41,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:45,15:44,27:U,33:46,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:49,17:48,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:52,17:51,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{20:[1,53]},{22:[1,54]},s(h,[2,18]),{1:[2,2]},s(h,[2,8]),s(h,[2,9]),s(k,[2,37],{40:55,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l}),s(k,[2,38]),s(k,[2,39]),s(w,[2,40]),s(w,[2,42]),s(w,[2,43]),s(w,[2,44]),s(w,[2,45]),s(w,[2,46]),s(w,[2,47]),s(w,[2,48]),s(w,[2,49]),s(w,[2,50]),s(w,[2,51]),s(h,[2,10]),s(h,[2,22],{30:41,29:56,24:M,27:B}),s(h,[2,24]),s(h,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,11]),s(h,[2,30],{33:60,27:U}),s(h,[2,32]),{31:[1,61]},s(h,[2,12]),{17:62,24:X},{25:63,27:S},s(h,[2,14]),{17:65,24:X},s(h,[2,16]),s(h,[2,17]),s(w,[2,41]),s(h,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},s(h,[2,31]),{27:[1,69]},s(h,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},s(h,[2,15]),s(h,[2,26]),s(h,[2,27]),{11:59,32:72,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,33]),s(h,[2,19]),{25:73,27:S},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(r,u){if(u.recoverable)this.trace(r);else{var g=new Error(r);throw g.hash=u,g}},"parseError"),parse:n(function(r){var u=this,g=[0],x=[],A=[null],o=[],nt=this.table,p="",lt=0,Et=0,hi=2,It=1,li=o.slice.call(arguments,1),_=Object.create(this.lexer),Y={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Y.yy[dt]=this.yy[dt]);_.setInput(r,Y.yy),Y.yy.lexer=_,Y.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var pt=_.yylloc;o.push(pt);var ci=_.options&&_.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(v){g.length=g.length-2*v,A.length=A.length-v,o.length=o.length-v}n(ui,"popStack");function Vt(){var v;return v=x.pop()||_.lex()||It,typeof v!="number"&&(v instanceof Array&&(x=v,v=x.pop()),v=u.symbols_[v]||v),v}n(Vt,"lex");for(var T,H,E,ft,q={},ct,O,Mt,ut;;){if(H=g[g.length-1],this.defaultActions[H]?E=this.defaultActions[H]:((T===null||typeof T>"u")&&(T=Vt()),E=nt[H]&&nt[H][T]),typeof E>"u"||!E.length||!E[0]){var yt="";ut=[];for(ct in nt[H])this.terminals_[ct]&&ct>hi&&ut.push("'"+this.terminals_[ct]+"'");_.showPosition?yt="Parse error on line "+(lt+1)+`:
2
2
  `+_.showPosition()+`
3
3
  Expecting `+ut.join(", ")+", got '"+(this.terminals_[T]||T)+"'":yt="Parse error on line "+(lt+1)+": Unexpected "+(T==It?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(yt,{text:_.match,token:this.terminals_[T]||T,line:_.yylineno,loc:pt,expected:ut})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+T);switch(E[0]){case 1:g.push(T),A.push(_.yytext),o.push(_.yylloc),g.push(E[1]),T=null,Et=_.yyleng,p=_.yytext,lt=_.yylineno,pt=_.yylloc;break;case 2:if(O=this.productions_[E[1]][1],q.$=A[A.length-O],q._$={first_line:o[o.length-(O||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(O||1)].first_column,last_column:o[o.length-1].last_column},ci&&(q._$.range=[o[o.length-(O||1)].range[0],o[o.length-1].range[1]]),ft=this.performAction.apply(q,[p,Et,lt,Y.yy,E[1],A,o].concat(li)),typeof ft<"u")return ft;O&&(g=g.slice(0,-1*O*2),A=A.slice(0,-1*O),o=o.slice(0,-1*O)),g.push(this.productions_[E[1]][0]),A.push(q.$),o.push(q._$),Mt=nt[g[g.length-2]][g[g.length-1]],g.push(Mt);break;case 3:return!0}}return!0},"parse")},Lt=function(){var W={EOF:1,parseError:n(function(u,g){if(this.yy.parser)this.yy.parser.parseError(u,g);else throw new Error(u)},"parseError"),setInput:n(function(r,u){return this.yy=u||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var u=r.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:n(function(r){var u=r.length,g=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var A=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(r){this.unput(this.match.slice(r))},"less"),pastInput:n(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var r=this.pastInput(),u=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
package/dist/index.html CHANGED
@@ -12,8 +12,8 @@
12
12
  padding: 0;
13
13
  }
14
14
  </style>
15
- <script type="module" crossorigin src="/assets/index-yx5a2qjD.js"></script>
16
- <link rel="stylesheet" crossorigin href="/assets/index-JVKUnJL6.css">
15
+ <script type="module" crossorigin src="/assets/index-DuV4Cs93.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index-CKXVIUJM.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="root" class="h-screen w-screen flex"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langgraph-js/ui",
3
- "version": "5.7.1",
3
+ "version": "5.7.2",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/",
@@ -17,7 +17,7 @@
17
17
  "@langchain/openai": "^1.0.0",
18
18
  "@langgraph-js/open-smith": "^2.3.0",
19
19
  "@langgraph-js/pro": "^2.0.1",
20
- "@langgraph-js/pure-graph": "^2.5.1",
20
+ "@langgraph-js/pure-graph": "^2.10.0",
21
21
  "@radix-ui/react-collapsible": "^1.1.12",
22
22
  "@radix-ui/react-use-controllable-state": "^1.2.2",
23
23
  "@tailwindcss/vite": "^4.1.14",
@@ -26,7 +26,7 @@
26
26
  "ai-artifacts": "^1.3.1",
27
27
  "copy-to-clipboard": "^3.3.3",
28
28
  "hono": "^4.10.4",
29
- "langchain": "^1.1.1",
29
+ "langchain": "1.1.1",
30
30
  "next-themes": "^0.4.6",
31
31
  "recharts": "^3.2.1",
32
32
  "sonner": "^2.0.7",
@@ -62,7 +62,7 @@
62
62
  "tailwindcss": "^4.1.14",
63
63
  "tw-animate-css": "^1.4.0",
64
64
  "zod": "^4",
65
- "@langgraph-js/sdk": "4.1.1"
65
+ "@langgraph-js/sdk": "4.3.6"
66
66
  },
67
67
  "scripts": {
68
68
  "dev": "vite",
@@ -1,6 +1,6 @@
1
1
  import { entrypoint } from "@langchain/langgraph";
2
2
  import { z } from "zod";
3
- import { createEntrypointGraph } from "@langgraph-js/pure-graph";
3
+ import { createStateEntrypoint } from "@langgraph-js/pure-graph";
4
4
  import { ChatOpenAI } from "@langchain/openai";
5
5
  import { createAgent, humanInTheLoopMiddleware } from "langchain";
6
6
  import { AgentState } from "@langgraph-js/pro";
@@ -13,7 +13,7 @@ const State = AgentState.merge(
13
13
  })
14
14
  );
15
15
 
16
- const workflow = entrypoint({ name: "debug-agent" }, async (state: z.infer<typeof State>) => {
16
+ const workflow = async (state: z.infer<typeof State>) => {
17
17
  const model = new ChatOpenAI({
18
18
  model: state.model_name,
19
19
  useResponsesApi: false,
@@ -34,9 +34,12 @@ const workflow = entrypoint({ name: "debug-agent" }, async (state: z.infer<typeo
34
34
  stateSchema: State,
35
35
  });
36
36
  return agent.invoke(state);
37
- });
37
+ };
38
38
 
39
- export const graph = createEntrypointGraph({
40
- stateSchema: State,
41
- graph: workflow,
42
- });
39
+ export const graph = createStateEntrypoint(
40
+ {
41
+ name: "debug-agent",
42
+ stateSchema: State,
43
+ },
44
+ workflow
45
+ );
@@ -2,24 +2,29 @@
2
2
  import { useEffect, useRef } from "react";
3
3
  import { setArtifactStore, eventCenter, ArtifactType } from "ai-artifacts";
4
4
  import { useChat } from "@langgraph-js/sdk/react";
5
+ import useLocalStorage from "../hooks/useLocalStorage";
6
+ import { X } from "lucide-react";
5
7
 
6
8
  export interface ArtifactViewerProps {
7
9
  onSendBackToAI: (data: { storeId: string; groupId: string; versionId: string; file: string; error: string }) => void;
8
10
  }
9
11
 
10
12
  export const ArtifactViewer: React.FC<ArtifactViewerProps> = ({ onSendBackToAI }) => {
11
- const { artifacts, currentArtifactId } = useChat();
13
+ const { loading, artifacts, currentArtifactId, setShowArtifact } = useChat();
14
+
15
+ // 从设置中读取 artifactsUrl,如果没有设置则使用默认值
16
+ const [artifactsSettings] = useLocalStorage("artifactsUrl", { artifactsUrl: "https://langgraph-artifacts.netlify.app/" });
17
+ const artifactsUrl = artifactsSettings.artifactsUrl || "https://langgraph-artifacts.netlify.app/";
18
+
12
19
  const artifactsRef = useRef(artifacts);
13
20
 
14
21
  useEffect(() => {
22
+ if (loading) return;
15
23
  artifactsRef.current = artifacts;
16
- }, [artifacts]);
17
-
18
- useEffect(() => {
19
24
  setArtifactStore({
20
25
  artifacts: { default: artifacts as ArtifactType[] },
21
26
  });
22
- }, [artifacts]);
27
+ }, [artifacts, loading]);
23
28
 
24
29
  useEffect(() => {
25
30
  const handleSendBackToAI = (data: any) => {
@@ -31,12 +36,37 @@ export const ArtifactViewer: React.FC<ArtifactViewerProps> = ({ onSendBackToAI }
31
36
  };
32
37
  }, []);
33
38
  return (
34
- <ai-artifacts
35
- src="https://bafybeifi2u3a56o6t46fi5dsti3ikrmv42yywvzxbxi3akeu73zpwuu45q.pinme.dev"
36
- store-id="default"
37
- group-id={currentArtifactId?.[0] || ""}
38
- version-id={currentArtifactId?.[1] || ""}
39
- ></ai-artifacts>
39
+ <div className="relative bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 flex flex-col h-full">
40
+ {/* 头部工具栏 */}
41
+ <div className="flex items-center justify-between p-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900">
42
+ <div className="flex items-center space-x-3">
43
+ <h3 className="text-lg font-semibold text-gray-900 dark:text-white">Artifacts</h3>
44
+ {currentArtifactId && (
45
+ <span className="text-sm text-gray-500 dark:text-gray-400">
46
+ Group: {currentArtifactId[0]} • Version: {currentArtifactId[1]}
47
+ </span>
48
+ )}
49
+ </div>
50
+ <button
51
+ onClick={() => setShowArtifact(false)}
52
+ className="text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 rounded-md transition-colors"
53
+ aria-label="关闭 artifacts 查看器"
54
+ >
55
+ <X></X>
56
+ </button>
57
+ </div>
58
+
59
+ {/* Artifacts 内容区域 */}
60
+ <div className="relative flex-1">
61
+ <ai-artifacts
62
+ src={artifactsUrl || undefined}
63
+ store-id="default"
64
+ group-id={currentArtifactId?.[0] || ""}
65
+ version-id={currentArtifactId?.[1] || ""}
66
+ className="w-full min-h-[400px]"
67
+ ></ai-artifacts>
68
+ </div>
69
+ </div>
40
70
  );
41
71
  };
42
72
 
@@ -44,6 +74,7 @@ declare module "react" {
44
74
  namespace JSX {
45
75
  interface IntrinsicElements {
46
76
  "ai-artifacts": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
77
+ src?: string;
47
78
  "store-id"?: string;
48
79
  "group-id"?: string;
49
80
  "version-id"?: string;
package/src/chat/Chat.tsx CHANGED
@@ -230,7 +230,7 @@ const ChatInput: React.FC = () => {
230
230
  const Chat: React.FC = () => {
231
231
  const [isPopupOpen, setIsPopupOpen] = useState(false);
232
232
  const [isSettingsOpen, setIsSettingsOpen] = useState(false);
233
- const { showHistory, toggleHistoryVisible, showGraph, toggleGraphVisible, renderMessages, setTools, client } = useChat();
233
+ const { showHistory, toggleHistoryVisible, showGraph, toHistoryChat, renderMessages, setTools, client } = useChat();
234
234
  const { extraParams, setExtraParams } = useExtraParams();
235
235
  const { showArtifact, sendMessage } = useChat();
236
236
  const monitor = useMonitor();
@@ -279,7 +279,7 @@ const Chat: React.FC = () => {
279
279
  className="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-200 cursor-pointer rounded-xl hover:bg-gray-100 focus:outline-none transition-colors flex items-center gap-2"
280
280
  onClick={() => {
281
281
  toast.info("数据已打印到控制台,请 F12 查看");
282
- console.log(client?.graphState);
282
+ console.log(client?.graphState, renderMessages);
283
283
  }}
284
284
  >
285
285
  <Printer className="w-4 h-4" />
@@ -61,7 +61,7 @@ const MessageTool: React.FC<MessageToolProps> = ({ message }) => {
61
61
  return (
62
62
  <div className="flex flex-col w-full">
63
63
  {render ? (
64
- (render(message) as JSX.Element)
64
+ <>{render(message) as JSX.Element}</>
65
65
  ) : (
66
66
  <div className={`flex flex-col w-full ${bgColorClass} rounded-2xl overflow-hidden`}>
67
67
  <div className="flex items-center justify-between px-5 py-3 cursor-pointer hover:bg-gray-100 transition-colors" onClick={() => setIsCollapsed(!isCollapsed)}>
@@ -1,6 +1,7 @@
1
- import { ArtifactCommand, createUITool, ToolRenderData } from "@langgraph-js/sdk";
2
- import { FileIcon } from "lucide-react";
1
+ import { ArtifactCommand, createUITool } from "@langgraph-js/sdk";
2
+ import { FileIcon, Code2, Eye, Sparkles, Terminal } from "lucide-react";
3
3
  import { useChat } from "@langgraph-js/sdk/react";
4
+ import { motion } from "motion/react";
4
5
 
5
6
  export const create_artifacts = createUITool({
6
7
  name: "create_artifacts",
@@ -8,26 +9,83 @@ export const create_artifacts = createUITool({
8
9
  parameters: {},
9
10
  onlyRender: true,
10
11
  render(tool: any) {
11
- const data: ArtifactCommand = tool.getInputRepaired();
12
+ const data: Partial<ArtifactCommand> = tool.getInputRepaired();
12
13
  const { setCurrentArtifactById, setShowArtifact } = useChat();
13
14
 
14
15
  const toggleExpand = () => {
16
+ if (!data.id) return;
15
17
  setCurrentArtifactById(data.id, tool.message.id!);
16
18
  setShowArtifact(true);
17
19
  };
18
20
 
21
+ // 根据文件扩展名获取合适的图标
22
+ const getFileIcon = (filename: string = "") => {
23
+ const ext = filename.split(".").pop()?.toLowerCase();
24
+ switch (ext) {
25
+ case "tsx":
26
+ case "jsx":
27
+ case "ts":
28
+ case "js":
29
+ return <Code2 className="w-5 h-5 text-blue-500" />;
30
+ case "py":
31
+ return <Terminal className="w-5 h-5 text-green-500" />;
32
+ case "html":
33
+ case "css":
34
+ return <Code2 className="w-5 h-5 text-orange-500" />;
35
+ default:
36
+ return <FileIcon className="w-5 h-5 text-gray-500" />;
37
+ }
38
+ };
39
+
19
40
  return (
20
- <div className="p-4 space-y-4">
21
- <div className="text-sm text-gray-500">创建文件: {data.title}</div>
22
- <div className="border rounded-lg p-2 hover:bg-gray-50">
23
- <div className="flex items-center justify-between select-none cursor-pointer" onClick={toggleExpand}>
24
- <div className="flex items-center gap-2">
25
- <FileIcon className="w-4 h-4" />
26
- <span className="font-xs">{data.title}</span> version: {data.id}
41
+ <motion.div initial={{ opacity: 0, y: 10 }} animate={{ opacity: 1, y: 0 }} className="p-2 max-w-md">
42
+ {/* Artifact 卡片 */}
43
+ <div
44
+ className="group relative overflow-hidden bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 rounded-2xl cursor-pointer transition-all duration-300 hover:shadow-2xl hover:shadow-indigo-500/10 dark:hover:shadow-indigo-500/20 hover:border-indigo-300 dark:hover:border-indigo-700/50"
45
+ onClick={toggleExpand}
46
+ >
47
+ {/* 背景光晕效果 */}
48
+ <div className="absolute -top-24 -right-24 w-48 h-48 bg-indigo-500/5 dark:bg-indigo-500/10 rounded-full blur-3xl group-hover:bg-indigo-500/10 dark:group-hover:bg-indigo-500/20 transition-colors duration-500" />
49
+
50
+ <div className="p-4 relative flex items-center gap-4">
51
+ {/* 图标容器 */}
52
+ <div className="relative shrink-0">
53
+ <div className="p-3 rounded-xl bg-gray-50 dark:bg-gray-800 group-hover:bg-white dark:group-hover:bg-gray-700 shadow-sm group-hover:shadow-md transition-all duration-300">
54
+ {getFileIcon(data.title)}
55
+ </div>
56
+ <div className="absolute -top-1 -right-1 p-1 rounded-full bg-indigo-500 shadow-lg shadow-indigo-500/50">
57
+ <Sparkles className="w-2 h-2 text-white" />
58
+ </div>
59
+ </div>
60
+
61
+ {/* 文字内容 */}
62
+ <div className="flex-1 min-w-0 space-y-1.5">
63
+ <h5 className="text-sm font-bold text-gray-900 dark:text-gray-100 truncate group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors">{data.title}</h5>
64
+ <div className="flex flex-wrap items-center gap-2">
65
+ <span className="inline-block max-w-[150px] truncate text-[10px] uppercase tracking-wider font-bold px-1.5 py-0.5 rounded-md bg-indigo-50 dark:bg-indigo-500/10 text-indigo-600 dark:text-indigo-400 border border-indigo-100/50 dark:border-indigo-500/20 whitespace-nowrap">
66
+ ID: {data.id}
67
+ </span>
68
+ <span className="flex items-center gap-1 text-[11px] text-gray-400 dark:text-gray-500 font-medium whitespace-nowrap shrink-0">
69
+ <span className="w-1.5 h-1.5 rounded-full bg-green-500 animate-pulse" />
70
+ 可交互
71
+ </span>
72
+ </div>
27
73
  </div>
74
+
75
+ {/* 操作按钮 */}
76
+ <div className="shrink-0">
77
+ <div className="p-2.5 rounded-xl bg-gray-50 dark:bg-gray-800 group-hover:bg-indigo-500 group-hover:text-white group-hover:shadow-lg group-hover:shadow-indigo-500/30 transition-all duration-300">
78
+ <Eye className="w-4 h-4 group-hover:scale-110 transition-transform" />
79
+ </div>
80
+ </div>
81
+ </div>
82
+
83
+ {/* 悬停时的底部进度条式装饰 */}
84
+ <div className="h-0.5 w-full bg-transparent overflow-hidden">
85
+ <motion.div initial={{ x: "-100%" }} whileHover={{ x: "0%" }} className="h-full bg-gradient-to-r from-indigo-500 via-purple-500 to-pink-500" transition={{ duration: 0.4 }} />
28
86
  </div>
29
87
  </div>
30
- </div>
88
+ </motion.div>
31
89
  );
32
90
  },
33
91
  });
@@ -0,0 +1,47 @@
1
+ import React from "react";
2
+ import SettingFormBase from "./SettingFormBase";
3
+
4
+ interface ArtifactsSettingsData {
5
+ artifactsUrl: string;
6
+ }
7
+
8
+ const initialArtifactsSettings: ArtifactsSettingsData = {
9
+ artifactsUrl: "https://langgraph-artifacts.netlify.app/",
10
+ };
11
+
12
+ const ArtifactsSettings: React.FC = () => {
13
+ return (
14
+ <SettingFormBase settingKey="artifactsUrl" initialData={initialArtifactsSettings}>
15
+ {(formData, handleChange) => (
16
+ <form className="space-y-6">
17
+ <div className="bg-blue-50 dark:bg-blue-900/20 p-4 rounded-lg border border-blue-200 dark:border-blue-800">
18
+ <h4 className="text-sm font-medium text-blue-900 dark:text-blue-100 mb-2">Artifacts 设置</h4>
19
+ <p className="text-sm text-blue-800 dark:text-blue-200 leading-relaxed">
20
+ 配置 artifacts 查看器的 URL。这个 URL 指向用于显示 artifacts 的 Web 组件。
21
+ </p>
22
+ </div>
23
+
24
+ <div>
25
+ <label htmlFor="artifactsUrl" className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
26
+ Artifacts URL
27
+ </label>
28
+ <input
29
+ type="url"
30
+ id="artifactsUrl"
31
+ name="artifactsUrl"
32
+ value={formData.artifactsUrl}
33
+ onChange={handleChange}
34
+ className="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:text-white"
35
+ placeholder="https://langgraph-artifacts.netlify.app/"
36
+ />
37
+ <p className="mt-1 text-sm text-gray-500 dark:text-gray-400">
38
+ 输入有效的 URL 地址,用于加载 artifacts 查看器组件。
39
+ </p>
40
+ </div>
41
+ </form>
42
+ )}
43
+ </SettingFormBase>
44
+ );
45
+ };
46
+
47
+ export default ArtifactsSettings;
@@ -1,6 +1,7 @@
1
1
  import React, { useState, useEffect, ReactNode } from "react";
2
2
  import LoginSettings from "./LoginSettings"; // 导入新的 LoginSettings 组件
3
3
  import ConsoleSettings from "./ConsoleSettings"; // 导入控制台设置组件
4
+ import ArtifactsSettings from "./ArtifactsSettings"; // 导入 artifacts 设置组件
4
5
 
5
6
  interface SettingPanelProps {
6
7
  isOpen: boolean;
@@ -27,6 +28,11 @@ const SettingPanel: React.FC<SettingPanelProps> = ({ isOpen, onClose, tabs: exte
27
28
  title: "控制台",
28
29
  component: <ConsoleSettings />,
29
30
  },
31
+ {
32
+ id: "artifacts",
33
+ title: "Artifacts",
34
+ component: <ArtifactsSettings />,
35
+ },
30
36
  // 更多设置页面将在这里添加
31
37
  ];
32
38
 
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./mermaid.core-3MG272Pv.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-C53GIfTN.js";import{_ as i}from"./mermaid.core-3MG272Pv.js";import"./index-yx5a2qjD.js";import"./chunk-FMBD7UC4-1vi-TjGz.js";import"./chunk-55IACEB6-gYWv8Zf5.js";import"./chunk-QN33PNHL-BIwuKx1J.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-C53GIfTN.js";import{_ as i}from"./mermaid.core-3MG272Pv.js";import"./index-yx5a2qjD.js";import"./chunk-FMBD7UC4-1vi-TjGz.js";import"./chunk-55IACEB6-gYWv8Zf5.js";import"./chunk-QN33PNHL-BIwuKx1J.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./index-yx5a2qjD.js";var e=4;function a(o){return r(o,e)}export{a as c};