@justyork/repo-mind 0.7.0 → 0.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 (68) hide show
  1. package/dist/ui/draft-api.js +33 -1
  2. package/dist/ui/fs-operations.d.ts +13 -0
  3. package/dist/ui/fs-operations.js +139 -0
  4. package/dist/ui/fs-tree.d.ts +6 -1
  5. package/dist/ui/fs-tree.js +62 -36
  6. package/package.json +3 -1
  7. package/ui/dist/assets/{arc-DufwQU06.js → arc-C1R_fyW-.js} +1 -1
  8. package/ui/dist/assets/{architectureDiagram-3BPJPVTR-CI2fjjSo.js → architectureDiagram-3BPJPVTR-CcuF3FYc.js} +1 -1
  9. package/ui/dist/assets/{blockDiagram-GPEHLZMM-DVBIs-Z6.js → blockDiagram-GPEHLZMM-BZJKe3Ei.js} +1 -1
  10. package/ui/dist/assets/{c4Diagram-AAUBKEIU-rhAX_HrB.js → c4Diagram-AAUBKEIU-D_0fRNGS.js} +1 -1
  11. package/ui/dist/assets/channel-BlWnHbuq.js +1 -0
  12. package/ui/dist/assets/{chunk-2J33WTMH-CxWSQi5S.js → chunk-2J33WTMH-0LcH4vIA.js} +1 -1
  13. package/ui/dist/assets/{chunk-4BX2VUAB-BEM-vVbU.js → chunk-4BX2VUAB-DU1h67AD.js} +1 -1
  14. package/ui/dist/assets/{chunk-55IACEB6-TcrLDHYx.js → chunk-55IACEB6-BCx7dyYV.js} +1 -1
  15. package/ui/dist/assets/{chunk-727SXJPM-D8g4OcIW.js → chunk-727SXJPM-CRO5yOrB.js} +1 -1
  16. package/ui/dist/assets/{chunk-AQP2D5EJ-CSvrR8rQ.js → chunk-AQP2D5EJ-BayHdr67.js} +1 -1
  17. package/ui/dist/assets/{chunk-FMBD7UC4-C14JNc29.js → chunk-FMBD7UC4-CJemLien.js} +1 -1
  18. package/ui/dist/assets/{chunk-ND2GUHAM-Cnb0VFKm.js → chunk-ND2GUHAM-B_z-tw44.js} +1 -1
  19. package/ui/dist/assets/{chunk-QZHKN3VN-D2pqmAXN.js → chunk-QZHKN3VN-D40rAh_S.js} +1 -1
  20. package/ui/dist/assets/classDiagram-4FO5ZUOK-D3OdfPqd.js +1 -0
  21. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-D3OdfPqd.js +1 -0
  22. package/ui/dist/assets/{cose-bilkent-S5V4N54A-Cli2Sbvt.js → cose-bilkent-S5V4N54A-Cqthtrrq.js} +1 -1
  23. package/ui/dist/assets/{dagre-BM42HDAG-gUsVuy4s.js → dagre-BM42HDAG-CrxsyXEa.js} +1 -1
  24. package/ui/dist/assets/{diagram-2AECGRRQ-DTKi_1b6.js → diagram-2AECGRRQ-DTYA7Rrn.js} +1 -1
  25. package/ui/dist/assets/{diagram-5GNKFQAL-8Bj0k_-k.js → diagram-5GNKFQAL-CXs7RV13.js} +1 -1
  26. package/ui/dist/assets/{diagram-KO2AKTUF-CKOX2fpv.js → diagram-KO2AKTUF-Bf8EeV_S.js} +1 -1
  27. package/ui/dist/assets/{diagram-LMA3HP47-B12JvpF3.js → diagram-LMA3HP47-C2XWB0cI.js} +1 -1
  28. package/ui/dist/assets/{diagram-OG6HWLK6-DKeTI9IH.js → diagram-OG6HWLK6-BNMXob9h.js} +1 -1
  29. package/ui/dist/assets/editor-CTtDusro.js +211 -0
  30. package/ui/dist/assets/{erDiagram-TEJ5UH35-oDb31edH.js → erDiagram-TEJ5UH35-CnSczOvb.js} +1 -1
  31. package/ui/dist/assets/{flowDiagram-I6XJVG4X-SPf3KLS-.js → flowDiagram-I6XJVG4X-DwZBJ2fr.js} +1 -1
  32. package/ui/dist/assets/{ganttDiagram-6RSMTGT7-D8oPEcrt.js → ganttDiagram-6RSMTGT7-rxwvD8xn.js} +1 -1
  33. package/ui/dist/assets/{gitGraphDiagram-PVQCEYII-eI9Yp7d7.js → gitGraphDiagram-PVQCEYII-DjJPiQ2K.js} +1 -1
  34. package/ui/dist/assets/{graph-DqCH9VKs.js → graph-D_tIaE_I.js} +1 -1
  35. package/ui/dist/assets/{infoDiagram-5YYISTIA-CQ6dtyj3.js → infoDiagram-5YYISTIA-BHgtQpBK.js} +1 -1
  36. package/ui/dist/assets/{ishikawaDiagram-YF4QCWOH-BHnOZ8-9.js → ishikawaDiagram-YF4QCWOH-BZ38ndde.js} +1 -1
  37. package/ui/dist/assets/{journeyDiagram-JHISSGLW-0t985reH.js → journeyDiagram-JHISSGLW-CNaZf5VN.js} +1 -1
  38. package/ui/dist/assets/{kanban-definition-UN3LZRKU-vPlhgwPS.js → kanban-definition-UN3LZRKU-4h1Jmt_X.js} +1 -1
  39. package/ui/dist/assets/main-BeHrzLrS.js +273 -0
  40. package/ui/dist/assets/{mermaid.core-C2wn2wM5.js → mermaid.core-BZZdRyuR.js} +4 -4
  41. package/ui/dist/assets/{mindmap-definition-RKZ34NQL-COKv8bQN.js → mindmap-definition-RKZ34NQL-DG_NciLX.js} +1 -1
  42. package/ui/dist/assets/{pieDiagram-4H26LBE5-CgVeawD6.js → pieDiagram-4H26LBE5-B9FyPCLY.js} +1 -1
  43. package/ui/dist/assets/{quadrantDiagram-W4KKPZXB-Bwpr8PxN.js → quadrantDiagram-W4KKPZXB-B89WFfQu.js} +1 -1
  44. package/ui/dist/assets/{requirementDiagram-4Y6WPE33-Cc8HFBxl.js → requirementDiagram-4Y6WPE33-BYHKePgB.js} +1 -1
  45. package/ui/dist/assets/{sankeyDiagram-5OEKKPKP-B_1nSAK5.js → sankeyDiagram-5OEKKPKP-BW6YuBQM.js} +1 -1
  46. package/ui/dist/assets/{sequenceDiagram-3UESZ5HK-hsYrUJza.js → sequenceDiagram-3UESZ5HK-BnojqKwf.js} +1 -1
  47. package/ui/dist/assets/{stateDiagram-AJRCARHV-BMf4FL5O.js → stateDiagram-AJRCARHV-C_x9t2o6.js} +1 -1
  48. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-CBZx8gKT.js +1 -0
  49. package/ui/dist/assets/theme-CFHWfrn1.css +1 -0
  50. package/ui/dist/assets/theme-DS1fBM5L.js +1 -0
  51. package/ui/dist/assets/{timeline-definition-PNZ67QCA-Cf3u1h2_.js → timeline-definition-PNZ67QCA-CI8Ngfzv.js} +1 -1
  52. package/ui/dist/assets/{vennDiagram-CIIHVFJN-2uKO3x22.js → vennDiagram-CIIHVFJN-CPRKGc2P.js} +1 -1
  53. package/ui/dist/assets/visual-editor-DUVPRlY3.js +220 -0
  54. package/ui/dist/assets/{wardley-L42UT6IY-BjLaoVtm.js → wardley-L42UT6IY-CZY42jFT.js} +1 -1
  55. package/ui/dist/assets/{wardleyDiagram-YWT4CUSO-DlrUKeJk.js → wardleyDiagram-YWT4CUSO-CGKyWKnw.js} +1 -1
  56. package/ui/dist/assets/{xychartDiagram-2RQKCTM6-Bzbb3cqD.js → xychartDiagram-2RQKCTM6-Cq-onAc3.js} +1 -1
  57. package/ui/dist/favicon.svg +8 -0
  58. package/ui/dist/graph.html +4 -3
  59. package/ui/dist/index.html +5 -4
  60. package/ui/dist/assets/channel-Q_-BqwUT.js +0 -1
  61. package/ui/dist/assets/classDiagram-4FO5ZUOK-CPrZx4R4.js +0 -1
  62. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-CPrZx4R4.js +0 -1
  63. package/ui/dist/assets/editor-DZbRkvnr.js +0 -211
  64. package/ui/dist/assets/main-Io6jccwi.js +0 -232
  65. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-BpaPdu-O.js +0 -1
  66. package/ui/dist/assets/theme-Dl8H1UuW.js +0 -1
  67. package/ui/dist/assets/theme-PE9lQ4bz.css +0 -1
  68. package/ui/dist/assets/visual-editor-D1uYYGOW.js +0 -47
@@ -1,4 +1,4 @@
1
- import{g as gt}from"./chunk-FMBD7UC4-C14JNc29.js";import{a as mt,g as lt,h as xt,d as kt}from"./chunk-ND2GUHAM-Cnb0VFKm.js";import{g as _t,s as vt,a as bt,b as wt,p as Tt,o as St,_ as s,c as R,d as $t,y as Mt}from"./mermaid.core-C2wn2wM5.js";import{s as X}from"./transform-BwXaE9hv.js";import{d as it}from"./arc-DufwQU06.js";import"./main-Io6jccwi.js";import"./theme-Dl8H1UuW.js";import"./editor-DZbRkvnr.js";var U=(function(){var t=s(function(h,r,n,l){for(n=n||{},l=h.length;l--;n[h[l]]=r);return n},"o"),e=[6,8,10,11,12,14,16,17,18],a=[1,9],f=[1,10],i=[1,11],u=[1,12],p=[1,13],o=[1,14],g={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:s(function(r,n,l,y,d,c,v){var k=c.length-1;switch(d){case 1:return c[k-1];case 2:this.$=[];break;case 3:c[k-1].push(c[k]),this.$=c[k-1];break;case 4:case 5:this.$=c[k];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(c[k].substr(6)),this.$=c[k].substr(6);break;case 9:this.$=c[k].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=c[k].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(c[k].substr(8)),this.$=c[k].substr(8);break;case 13:y.addTask(c[k-1],c[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:s(function(r,n){if(n.recoverable)this.trace(r);else{var l=new Error(r);throw l.hash=n,l}},"parseError"),parse:s(function(r){var n=this,l=[0],y=[],d=[null],c=[],v=this.table,k="",C=0,Q=0,yt=2,D=1,dt=c.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(r,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;c.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,d.length=d.length-w,c.length=c.length-w}s(pt,"popStack");function tt(){var w;return w=y.pop()||_.lex()||D,typeof w!="number"&&(w instanceof Array&&(y=w,w=y.pop()),w=n.symbols_[w]||w),w}s(tt,"lex");for(var b,A,T,q,F={},N,M,et,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((b===null||typeof b>"u")&&(b=tt()),T=v[A]&&v[A][b]),typeof T>"u"||!T.length||!T[0]){var H="";z=[];for(N in v[A])this.terminals_[N]&&N>yt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?H="Parse error on line "+(C+1)+`:
1
+ import{g as gt}from"./chunk-FMBD7UC4-CJemLien.js";import{a as mt,g as lt,h as xt,d as kt}from"./chunk-ND2GUHAM-B_z-tw44.js";import{g as _t,s as vt,a as bt,b as wt,p as Tt,o as St,_ as s,c as R,d as $t,y as Mt}from"./mermaid.core-BZZdRyuR.js";import{s as X}from"./transform-BwXaE9hv.js";import{d as it}from"./arc-C1R_fyW-.js";import"./main-BeHrzLrS.js";import"./theme-DS1fBM5L.js";import"./editor-CTtDusro.js";var U=(function(){var t=s(function(h,r,n,l){for(n=n||{},l=h.length;l--;n[h[l]]=r);return n},"o"),e=[6,8,10,11,12,14,16,17,18],a=[1,9],f=[1,10],i=[1,11],u=[1,12],p=[1,13],o=[1,14],g={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:s(function(r,n,l,y,d,c,v){var k=c.length-1;switch(d){case 1:return c[k-1];case 2:this.$=[];break;case 3:c[k-1].push(c[k]),this.$=c[k-1];break;case 4:case 5:this.$=c[k];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(c[k].substr(6)),this.$=c[k].substr(6);break;case 9:this.$=c[k].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=c[k].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(c[k].substr(8)),this.$=c[k].substr(8);break;case 13:y.addTask(c[k-1],c[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:s(function(r,n){if(n.recoverable)this.trace(r);else{var l=new Error(r);throw l.hash=n,l}},"parseError"),parse:s(function(r){var n=this,l=[0],y=[],d=[null],c=[],v=this.table,k="",C=0,Q=0,yt=2,D=1,dt=c.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(r,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;c.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,d.length=d.length-w,c.length=c.length-w}s(pt,"popStack");function tt(){var w;return w=y.pop()||_.lex()||D,typeof w!="number"&&(w instanceof Array&&(y=w,w=y.pop()),w=n.symbols_[w]||w),w}s(tt,"lex");for(var b,A,T,q,F={},N,M,et,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((b===null||typeof b>"u")&&(b=tt()),T=v[A]&&v[A][b]),typeof T>"u"||!T.length||!T[0]){var H="";z=[];for(N in v[A])this.terminals_[N]&&N>yt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?H="Parse error on line "+(C+1)+`:
2
2
  `+_.showPosition()+`
3
3
  Expecting `+z.join(", ")+", got '"+(this.terminals_[b]||b)+"'":H="Parse error on line "+(C+1)+": Unexpected "+(b==D?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(H,{text:_.match,token:this.terminals_[b]||b,line:_.yylineno,loc:Y,expected:z})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+b);switch(T[0]){case 1:l.push(b),d.push(_.yytext),c.push(_.yylloc),l.push(T[1]),b=null,Q=_.yyleng,k=_.yytext,C=_.yylineno,Y=_.yylloc;break;case 2:if(M=this.productions_[T[1]][1],F.$=d[d.length-M],F._$={first_line:c[c.length-(M||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(M||1)].first_column,last_column:c[c.length-1].last_column},ft&&(F._$.range=[c[c.length-(M||1)].range[0],c[c.length-1].range[1]]),q=this.performAction.apply(F,[k,Q,C,I.yy,T[1],d,c].concat(dt)),typeof q<"u")return q;M&&(l=l.slice(0,-1*M*2),d=d.slice(0,-1*M),c=c.slice(0,-1*M)),l.push(this.productions_[T[1]][0]),d.push(F.$),c.push(F._$),et=v[l[l.length-2]][l[l.length-1]],l.push(et);break;case 3:return!0}}return!0},"parse")},m=(function(){var h={EOF:1,parseError:s(function(n,l){if(this.yy.parser)this.yy.parser.parseError(n,l);else throw new Error(n)},"parseError"),setInput:s(function(r,n){return this.yy=n||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:s(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var n=r.match(/(?:\r\n?|\n).*/g);return n?(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:s(function(r){var n=r.length,l=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var y=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),l.length-1&&(this.yylineno-=l.length-1);var d=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:l?(l.length===y.length?this.yylloc.first_column:0)+y[y.length-l.length].length-l[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(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:s(function(r){this.unput(this.match.slice(r))},"less"),pastInput:s(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:s(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:s(function(){var r=this.pastInput(),n=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{_ as c,l as te,c as W,H as fe,ae as ye,af as be,ag as me,X as _e,F as Y,h as G,q as ke,J as Ee,U as Se,V as le,W as ce}from"./mermaid.core-C2wn2wM5.js";import{g as Ne}from"./chunk-FMBD7UC4-C14JNc29.js";import"./main-Io6jccwi.js";import"./theme-Dl8H1UuW.js";import"./editor-DZbRkvnr.js";import"./transform-BwXaE9hv.js";var $=(function(){var t=c(function(_,s,n,a){for(n=n||{},a=_.length;a--;n[_[a]]=s);return n},"o"),g=[1,4],d=[1,13],r=[1,12],p=[1,15],k=[1,16],f=[1,20],h=[1,19],L=[6,7,8],C=[1,26],w=[1,24],N=[1,25],i=[6,7,11],U=[1,31],x=[6,7,11,24],P=[1,6,13,16,17,20,23],H=[1,35],M=[1,36],A=[1,6,7,11,13,16,17,20,23],j=[1,38],V={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:c(function(s,n,a,o,u,e,B){var l=e.length-1;switch(u){case 6:case 7:return o;case 8:o.getLogger().trace("Stop NL ");break;case 9:o.getLogger().trace("Stop EOF ");break;case 11:o.getLogger().trace("Stop NL2 ");break;case 12:o.getLogger().trace("Stop EOF2 ");break;case 15:o.getLogger().info("Node: ",e[l-1].id),o.addNode(e[l-2].length,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 16:o.getLogger().info("Node: ",e[l].id),o.addNode(e[l-1].length,e[l].id,e[l].descr,e[l].type);break;case 17:o.getLogger().trace("Icon: ",e[l]),o.decorateNode({icon:e[l]});break;case 18:case 23:o.decorateNode({class:e[l]});break;case 19:o.getLogger().trace("SPACELIST");break;case 20:o.getLogger().trace("Node: ",e[l-1].id),o.addNode(0,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 21:o.getLogger().trace("Node: ",e[l].id),o.addNode(0,e[l].id,e[l].descr,e[l].type);break;case 22:o.decorateNode({icon:e[l]});break;case 27:o.getLogger().trace("node found ..",e[l-2]),this.$={id:e[l-1],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 28:this.$={id:e[l],descr:e[l],type:0};break;case 29:o.getLogger().trace("node found ..",e[l-3]),this.$={id:e[l-3],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 30:this.$=e[l-1]+e[l];break;case 31:this.$=e[l];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:g},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:g},{6:d,7:[1,10],9:9,12:11,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},t(L,[2,3]),{1:[2,2]},t(L,[2,4]),t(L,[2,5]),{1:[2,6],6:d,12:21,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},{6:d,9:22,12:11,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},{6:C,7:w,10:23,11:N},t(i,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:f,23:h}),t(i,[2,19]),t(i,[2,21],{15:30,24:U}),t(i,[2,22]),t(i,[2,23]),t(x,[2,25]),t(x,[2,26]),t(x,[2,28],{20:[1,32]}),{21:[1,33]},{6:C,7:w,10:34,11:N},{1:[2,7],6:d,12:21,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},t(P,[2,14],{7:H,11:M}),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(i,[2,16],{15:37,24:U}),t(i,[2,17]),t(i,[2,18]),t(i,[2,20],{24:j}),t(x,[2,31]),{21:[1,39]},{22:[1,40]},t(P,[2,13],{7:H,11:M}),t(A,[2,11]),t(A,[2,12]),t(i,[2,15],{24:j}),t(x,[2,30]),{22:[1,41]},t(x,[2,27]),t(x,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:c(function(s,n){if(n.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=n,a}},"parseError"),parse:c(function(s){var n=this,a=[0],o=[],u=[null],e=[],B=this.table,l="",z=0,ie=0,ue=2,re=1,ge=e.slice.call(arguments,1),m=Object.create(this.lexer),T={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(T.yy[J]=this.yy[J]);m.setInput(s,T.yy),T.yy.lexer=m,T.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var q=m.yylloc;e.push(q);var de=m.options&&m.options.ranges;typeof T.yy.parseError=="function"?this.parseError=T.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(S){a.length=a.length-2*S,u.length=u.length-S,e.length=e.length-S}c(pe,"popStack");function ae(){var S;return S=o.pop()||m.lex()||re,typeof S!="number"&&(S instanceof Array&&(o=S,S=o.pop()),S=n.symbols_[S]||S),S}c(ae,"lex");for(var E,R,v,Q,F={},X,I,oe,K;;){if(R=a[a.length-1],this.defaultActions[R]?v=this.defaultActions[R]:((E===null||typeof E>"u")&&(E=ae()),v=B[R]&&B[R][E]),typeof v>"u"||!v.length||!v[0]){var Z="";K=[];for(X in B[R])this.terminals_[X]&&X>ue&&K.push("'"+this.terminals_[X]+"'");m.showPosition?Z="Parse error on line "+(z+1)+`:
1
+ import{_ as c,l as te,c as W,H as fe,ae as ye,af as be,ag as me,X as _e,F as Y,h as G,q as ke,J as Ee,U as Se,V as le,W as ce}from"./mermaid.core-BZZdRyuR.js";import{g as Ne}from"./chunk-FMBD7UC4-CJemLien.js";import"./main-BeHrzLrS.js";import"./theme-DS1fBM5L.js";import"./editor-CTtDusro.js";import"./transform-BwXaE9hv.js";var $=(function(){var t=c(function(_,s,n,a){for(n=n||{},a=_.length;a--;n[_[a]]=s);return n},"o"),g=[1,4],d=[1,13],r=[1,12],p=[1,15],k=[1,16],f=[1,20],h=[1,19],L=[6,7,8],C=[1,26],w=[1,24],N=[1,25],i=[6,7,11],U=[1,31],x=[6,7,11,24],P=[1,6,13,16,17,20,23],H=[1,35],M=[1,36],A=[1,6,7,11,13,16,17,20,23],j=[1,38],V={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:c(function(s,n,a,o,u,e,B){var l=e.length-1;switch(u){case 6:case 7:return o;case 8:o.getLogger().trace("Stop NL ");break;case 9:o.getLogger().trace("Stop EOF ");break;case 11:o.getLogger().trace("Stop NL2 ");break;case 12:o.getLogger().trace("Stop EOF2 ");break;case 15:o.getLogger().info("Node: ",e[l-1].id),o.addNode(e[l-2].length,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 16:o.getLogger().info("Node: ",e[l].id),o.addNode(e[l-1].length,e[l].id,e[l].descr,e[l].type);break;case 17:o.getLogger().trace("Icon: ",e[l]),o.decorateNode({icon:e[l]});break;case 18:case 23:o.decorateNode({class:e[l]});break;case 19:o.getLogger().trace("SPACELIST");break;case 20:o.getLogger().trace("Node: ",e[l-1].id),o.addNode(0,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 21:o.getLogger().trace("Node: ",e[l].id),o.addNode(0,e[l].id,e[l].descr,e[l].type);break;case 22:o.decorateNode({icon:e[l]});break;case 27:o.getLogger().trace("node found ..",e[l-2]),this.$={id:e[l-1],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 28:this.$={id:e[l],descr:e[l],type:0};break;case 29:o.getLogger().trace("node found ..",e[l-3]),this.$={id:e[l-3],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 30:this.$=e[l-1]+e[l];break;case 31:this.$=e[l];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:g},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:g},{6:d,7:[1,10],9:9,12:11,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},t(L,[2,3]),{1:[2,2]},t(L,[2,4]),t(L,[2,5]),{1:[2,6],6:d,12:21,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},{6:d,9:22,12:11,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},{6:C,7:w,10:23,11:N},t(i,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:f,23:h}),t(i,[2,19]),t(i,[2,21],{15:30,24:U}),t(i,[2,22]),t(i,[2,23]),t(x,[2,25]),t(x,[2,26]),t(x,[2,28],{20:[1,32]}),{21:[1,33]},{6:C,7:w,10:34,11:N},{1:[2,7],6:d,12:21,13:r,14:14,16:p,17:k,18:17,19:18,20:f,23:h},t(P,[2,14],{7:H,11:M}),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(i,[2,16],{15:37,24:U}),t(i,[2,17]),t(i,[2,18]),t(i,[2,20],{24:j}),t(x,[2,31]),{21:[1,39]},{22:[1,40]},t(P,[2,13],{7:H,11:M}),t(A,[2,11]),t(A,[2,12]),t(i,[2,15],{24:j}),t(x,[2,30]),{22:[1,41]},t(x,[2,27]),t(x,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:c(function(s,n){if(n.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=n,a}},"parseError"),parse:c(function(s){var n=this,a=[0],o=[],u=[null],e=[],B=this.table,l="",z=0,ie=0,ue=2,re=1,ge=e.slice.call(arguments,1),m=Object.create(this.lexer),T={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(T.yy[J]=this.yy[J]);m.setInput(s,T.yy),T.yy.lexer=m,T.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var q=m.yylloc;e.push(q);var de=m.options&&m.options.ranges;typeof T.yy.parseError=="function"?this.parseError=T.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(S){a.length=a.length-2*S,u.length=u.length-S,e.length=e.length-S}c(pe,"popStack");function ae(){var S;return S=o.pop()||m.lex()||re,typeof S!="number"&&(S instanceof Array&&(o=S,S=o.pop()),S=n.symbols_[S]||S),S}c(ae,"lex");for(var E,R,v,Q,F={},X,I,oe,K;;){if(R=a[a.length-1],this.defaultActions[R]?v=this.defaultActions[R]:((E===null||typeof E>"u")&&(E=ae()),v=B[R]&&B[R][E]),typeof v>"u"||!v.length||!v[0]){var Z="";K=[];for(X in B[R])this.terminals_[X]&&X>ue&&K.push("'"+this.terminals_[X]+"'");m.showPosition?Z="Parse error on line "+(z+1)+`:
2
2
  `+m.showPosition()+`
3
3
  Expecting `+K.join(", ")+", got '"+(this.terminals_[E]||E)+"'":Z="Parse error on line "+(z+1)+": Unexpected "+(E==re?"end of input":"'"+(this.terminals_[E]||E)+"'"),this.parseError(Z,{text:m.match,token:this.terminals_[E]||E,line:m.yylineno,loc:q,expected:K})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+R+", token: "+E);switch(v[0]){case 1:a.push(E),u.push(m.yytext),e.push(m.yylloc),a.push(v[1]),E=null,ie=m.yyleng,l=m.yytext,z=m.yylineno,q=m.yylloc;break;case 2:if(I=this.productions_[v[1]][1],F.$=u[u.length-I],F._$={first_line:e[e.length-(I||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(I||1)].first_column,last_column:e[e.length-1].last_column},de&&(F._$.range=[e[e.length-(I||1)].range[0],e[e.length-1].range[1]]),Q=this.performAction.apply(F,[l,ie,z,T.yy,v[1],u,e].concat(ge)),typeof Q<"u")return Q;I&&(a=a.slice(0,-1*I*2),u=u.slice(0,-1*I),e=e.slice(0,-1*I)),a.push(this.productions_[v[1]][0]),u.push(F.$),e.push(F._$),oe=B[a[a.length-2]][a[a.length-1]],a.push(oe);break;case 3:return!0}}return!0},"parse")},y=(function(){var _={EOF:1,parseError:c(function(n,a){if(this.yy.parser)this.yy.parser.parseError(n,a);else throw new Error(n)},"parseError"),setInput:c(function(s,n){return this.yy=n||this.yy||{},this._input=s,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:c(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var n=s.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:c(function(s){var n=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var o=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),a.length-1&&(this.yylineno-=a.length-1);var u=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:a?(a.length===o.length?this.yylloc.first_column:0)+o[o.length-a.length].length-a[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(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:c(function(s){this.unput(this.match.slice(s))},"less"),pastInput:c(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var s=this.pastInput(),n=new Array(s.length+1).join("-");return s+this.upcomingInput()+`
@@ -0,0 +1,273 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visual-editor-DUVPRlY3.js","assets/editor-CTtDusro.js","assets/theme-DS1fBM5L.js","assets/theme-CFHWfrn1.css","assets/mermaid.core-BZZdRyuR.js","assets/transform-BwXaE9hv.js"])))=>i.map(i=>d[i]);
2
+ import{p as Pt,s as Ct,e as Tt,g as qt,a as Dt,l as G,b as Mt,c as xt,d as de,f as At,u as Rt,h as Ht,i as Nt,o as Ze,j as Ft,m as It,k as Wt,n as _t,q as Ut,r as Ae,t as Ot,v as Bt,w as jt,x as Kt,y as U,z as Re,A as J,B as zt}from"./theme-DS1fBM5L.js";import{m as et}from"./editor-CTtDusro.js";const Vt={"wiki-page":"Wiki",adr:"ADR","feature-spec":"Feature specs","glossary-term":"Glossary","open-question":"Open questions","agent-instruction":"Agent instructions"},He="folder:";function ue(e){if(e.startsWith(He)){const t=e.slice(He.length);return t==="__root__"?"General":t.split(/[-_/]/).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}return Vt[e]??e}function Gt(e,t){var L,v,T,k;e.className="workspace-main workspace-dashboard",e.innerHTML=`
3
+ <div class="dashboard-header">
4
+ <h1 class="doc-title">Health &amp; publish</h1>
5
+ <div class="workspace-actions">
6
+ <button type="button" id="dash-export" class="btn-ghost">Export agents.md</button>
7
+ <button type="button" id="dash-refresh" class="btn-ghost">Refresh</button>
8
+ </div>
9
+ </div>
10
+ <div id="dash-check" class="dashboard-section"></div>
11
+ <div id="dash-links" class="dashboard-section"></div>
12
+ <div class="dashboard-section">
13
+ <h2>Prepare docs</h2>
14
+ <p class="dashboard-hint">Markdown files without RepoMind frontmatter. Add frontmatter to index them for MCP and the catalog.</p>
15
+ <div class="dashboard-actions">
16
+ <button type="button" id="dash-prepare-all" class="btn-primary btn-sm">Prepare all</button>
17
+ <button type="button" id="dash-sync-links" class="btn-ghost btn-sm">Sync all links</button>
18
+ </div>
19
+ <ul id="dash-unprepared" class="queue-list"></ul>
20
+ </div>
21
+ <div class="dashboard-section">
22
+ <h2>Publish queue</h2>
23
+ <ul id="dash-queue" class="queue-list"></ul>
24
+ </div>
25
+ `;const n=e.querySelector("#dash-check"),r=e.querySelector("#dash-links"),i=e.querySelector("#dash-unprepared"),l=e.querySelector("#dash-queue");function d(o){const p=o.ok?"check-ok":"check-fail",s=o.ok?"All checks passed":`${o.violations.length} issue(s)`;let a=`
26
+ <h2>Schema check</h2>
27
+ <p class="check-status ${p}">${s}</p>
28
+ `;if(o.violations.length>0){a+='<ul class="violation-list">';for(const u of o.violations)a+=`<li><code>${R(u.path)}</code> — ${R(u.message)}</li>`;a+="</ul>"}if(o.warnings.length>0){a+='<h3 class="warnings-title">Warnings</h3><ul class="warning-list">';for(const u of o.warnings)a+=`<li>${R(u)}</li>`;a+="</ul>"}n.innerHTML=a}function c(o){let p=`
29
+ <h2>Link health</h2>
30
+ <div class="link-health-stats">
31
+ <div class="link-health-stat"><span class="link-health-value">${o.orphanCount}</span> orphans</div>
32
+ <div class="link-health-stat"><span class="link-health-value">${o.brokenCount}</span> broken</div>
33
+ <div class="link-health-stat"><span class="link-health-value">${o.oneWayCount}</span> one-way</div>
34
+ </div>
35
+ `;if(o.brokenTargets.length>0){p+='<h3 class="warnings-title">Broken targets</h3><ul class="warning-list">';for(const s of o.brokenTargets)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}if(o.orphanSlugs.length>0){p+='<h3 class="warnings-title">Orphan pages</h3><ul class="warning-list">';for(const s of o.orphanSlugs)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}r.innerHTML=p}function y(o){var p;if(i.innerHTML="",o.length===0){i.innerHTML='<li class="placeholder">All docs have frontmatter</li>';return}for(const s of o){const a=document.createElement("li");a.className="queue-item",a.innerHTML=`
36
+ <div class="queue-main">
37
+ <div class="queue-title">${R(s.relativePath)}</div>
38
+ <div class="meta">${R(s.suggestedType)} · slug: ${R(s.suggestedSlug)}</div>
39
+ </div>
40
+ <div class="queue-actions">
41
+ <button type="button" class="btn-primary btn-sm" data-action="prepare">Add frontmatter</button>
42
+ </div>
43
+ `,(p=a.querySelector('[data-action="prepare"]'))==null||p.addEventListener("click",()=>{xt(s.relativePath,s.suggestedType).then(({result:u})=>{t.onNotify(`Prepared: ${u.slug}`),h()}).catch(u=>{t.onNotify(u instanceof Error?u.message:"Prepare failed",!0)})}),i.appendChild(a)}}function b(o){var p,s;if(l.innerHTML="",o.length===0){l.innerHTML='<li class="placeholder">No drafts in queue</li>';return}for(const a of o){const u=document.createElement("li");u.className="queue-item",u.innerHTML=`
44
+ <div class="queue-main">
45
+ <div class="queue-title">${R(a.title||a.slug)}</div>
46
+ <div class="meta">${R(a.slug)} · ${R(a.type)}</div>
47
+ </div>
48
+ <div class="queue-actions">
49
+ <button type="button" class="btn-ghost btn-sm" data-action="edit">Edit</button>
50
+ <button type="button" class="btn-primary btn-sm" data-action="publish">Publish</button>
51
+ </div>
52
+ `,(p=u.querySelector('[data-action="edit"]'))==null||p.addEventListener("click",()=>{t.onOpenDraft(a)}),(s=u.querySelector('[data-action="publish"]'))==null||s.addEventListener("click",()=>{de(a.id).then(({result:w})=>{t.onPublished(w.path),h()}).catch(w=>{t.onNotify(w instanceof Error?w.message:"Publish failed",!0)})}),l.appendChild(u)}}async function h(){try{const[o,p,{drafts:s},{files:a}]=await Promise.all([qt(),Dt(),G(),Mt()]);d(o),c(p),y(a),b(s)}catch(o){n.innerHTML=`<p class="check-status check-fail">${R(o instanceof Error?o.message:"Failed to load")}</p>`}}return(L=e.querySelector("#dash-refresh"))==null||L.addEventListener("click",()=>{h()}),(v=e.querySelector("#dash-prepare-all"))==null||v.addEventListener("click",()=>{Pt().then(({result:o})=>{t.onNotify(`Prepared ${o.prepared.length} file(s)`),h()}).catch(o=>{t.onNotify(o instanceof Error?o.message:"Prepare all failed",!0)})}),(T=e.querySelector("#dash-sync-links"))==null||T.addEventListener("click",()=>{Ct().then(({result:o})=>{const p=o.files.filter(s=>s.changed).length;t.onNotify(`Synced links in ${p} file(s)`),h()}).catch(o=>{t.onNotify(o instanceof Error?o.message:"Sync links failed",!0)})}),(k=e.querySelector("#dash-export"))==null||k.addEventListener("click",()=>{Tt().then(({path:o})=>{t.onNotify(`Exported ${o}`)}).catch(o=>{t.onNotify(o instanceof Error?o.message:"Export failed",!0)})}),h(),{refresh:h}}function R(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}const tt="repomind-page-info-hidden";function D(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ne(){try{const e=localStorage.getItem(tt);return e===null?!0:e==="true"}catch{return!0}}function nt(e){try{localStorage.setItem(tt,e?"true":"false")}catch{}}function Jt(e){return e.map((t,n)=>{const r=n>0?'<span class="crumb-sep">›</span>':"";return t.current?`${r}<span class="crumb current">${D(t.label)}</span>`:t.crumbId?`${r}<button type="button" class="crumb" data-crumb="${D(t.crumbId)}">${D(t.label)}</button>`:`${r}<span class="crumb">${D(t.label)}</span>`}).join("")}function pe(e,t){const n=t.focusMode??ne();e.className=t.rootClass??"workspace-main",e.innerHTML=`
53
+ <nav class="breadcrumb" aria-label="Breadcrumb">
54
+ ${Jt(t.breadcrumbs)}
55
+ </nav>
56
+ <div class="page-layout${n?" page-layout--focus":""}">
57
+ <article class="page-content">
58
+ <header class="page-header">
59
+ <div class="page-title-slot">${t.titleHtml}</div>
60
+ <div class="workspace-actions">${t.actionsHtml}</div>
61
+ </header>
62
+ <div class="page-body-slot">${t.mainHtml}</div>
63
+ </article>
64
+ <aside class="page-info">${t.railHtml}</aside>
65
+ </div>
66
+ `;const r=e.querySelector(".page-layout");return{pageLayout:r,bodySlot:e.querySelector(".page-body-slot"),railSlot:e.querySelector(".page-info"),setFocusMode(i){r.classList.toggle("page-layout--focus",i),nt(i)}}}function fe(e,t,n){const r=e.querySelector("#toggle-focus"),i=e.querySelector(".page-layout");!r||!i||(i.classList.toggle("page-layout--focus",t),r.setAttribute("aria-pressed",String(t)),r.textContent=t?"Show info":"Hide info",r.addEventListener("click",()=>{const l=!i.classList.contains("page-layout--focus");i.classList.toggle("page-layout--focus",l),nt(l),r.setAttribute("aria-pressed",String(l)),r.textContent=l?"Show info":"Hide info"}))}function Xt(e,t){e.querySelectorAll(".breadcrumb [data-crumb]").forEach(n=>{n.addEventListener("click",()=>{const r=n.dataset.crumb;r&&t[r]&&t[r]()})})}const rt=/\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/g;function st(e,t){const n=e.trim(),r=((t==null?void 0:t.trim())||n).trim();return{display:n,slug:r}}function nr(e,t){const n=e.trim(),r=(t??n).trim();return r===n?`[[${n}]]`:`[[${n}|${r}]]`}function Yt(e){const t=[];for(const n of e.matchAll(rt)){const{slug:r}=st(n[1]??"",n[2]);r&&t.push(r)}return t}function Qt(e){return Yt(e)}function Zt(e,t){const n=t.find(l=>l.slug===e);if(n)return n.slug;const r=e.toLowerCase(),i=t.find(l=>l.title.toLowerCase()===r);return(i==null?void 0:i.slug)??null}function en(e,t,n){const r=new Set(t),i=[];for(const l of Qt(e)){const d=Zt(l,n);!d||r.has(d)||i.includes(d)||i.push(d)}return i}function tn(e,t,n){const r=e.toLowerCase();if(!r)return 1;const i=t.toLowerCase(),l=n.toLowerCase();return i.startsWith(r)||l.startsWith(r)?3:i.includes(r)||l.includes(r)?2:0}function nn(e,t,n=12){return t.map(r=>({doc:r,score:tn(e,r.slug,r.title)})).filter(r=>r.score>0).sort((r,i)=>i.score-r.score||r.doc.slug.localeCompare(i.doc.slug)).slice(0,n).map(r=>r.doc)}const rn=["adr","feature-spec","glossary-term","open-question","agent-instruction","wiki-page"],sn=["draft","proposed","accepted","superseded"];function at(e){return`
67
+ <h2 class="page-info-title">Page properties</h2>
68
+ <div class="workspace-badges editor-badges">
69
+ <span class="badge badge-draft">draft</span>
70
+ ${e.forkedFrom?`<span class="badge">fork: ${D(e.forkedFrom)}</span>`:""}
71
+ </div>
72
+ <div class="props-section">
73
+ <div class="props-label">Status</div>
74
+ <div class="props-chip-row">
75
+ <button type="button" id="ed-status-chip" class="status-chip props-chip-trigger" aria-haspopup="listbox"></button>
76
+ <div id="ed-status-menu" class="props-dropdown hidden" role="listbox"></div>
77
+ </div>
78
+ </div>
79
+ <div class="props-section">
80
+ <div class="props-label">Type</div>
81
+ <div class="props-chip-row">
82
+ <button type="button" id="ed-type-chip" class="props-chip props-chip-trigger" aria-haspopup="listbox"></button>
83
+ <div id="ed-type-menu" class="props-dropdown hidden" role="listbox"></div>
84
+ </div>
85
+ <div class="props-hint" id="ed-catalog-hint"></div>
86
+ </div>
87
+ <div class="props-section">
88
+ <div class="props-label">Slug</div>
89
+ <input id="ed-slug" class="props-slug-input" spellcheck="false" />
90
+ <div class="props-hint props-hint-slug hidden" id="ed-slug-hint"></div>
91
+ </div>
92
+ <div class="props-section">
93
+ <div class="props-label">Tags</div>
94
+ <div id="ed-tags-chips" class="props-chip-list"></div>
95
+ <input id="ed-tags-input" class="props-add-input" placeholder="Add tag…" />
96
+ </div>
97
+ <div class="props-section">
98
+ <div class="props-label">Related</div>
99
+ <div id="ed-related-chips" class="props-chip-list"></div>
100
+ <input id="ed-related-input" class="props-add-input" placeholder="Add related slug…" autocomplete="off" />
101
+ <div id="ed-related-menu" class="props-dropdown hidden" role="listbox"></div>
102
+ </div>
103
+ `}function an(e,t,n,r){const i=e.querySelector("#ed-slug"),l=e.querySelector("#ed-slug-hint"),d=e.querySelector("#ed-status-chip"),c=e.querySelector("#ed-status-menu"),y=e.querySelector("#ed-type-chip"),b=e.querySelector("#ed-type-menu"),h=e.querySelector("#ed-catalog-hint"),L=e.querySelector("#ed-tags-chips"),v=e.querySelector("#ed-tags-input"),T=e.querySelector("#ed-related-chips"),k=e.querySelector("#ed-related-input"),o=e.querySelector("#ed-related-menu");let p=[...t.tags],s=[...t.related],a=t.status,u=t.type;i.value=t.slug,t.forkedFrom&&(i.readOnly=!0,i.title="Slug is fixed for edits of an existing published page",l.textContent=`Locked while editing published page (${t.forkedFrom})`,l.classList.remove("hidden")),P(),M(),f(),E();function w(){r()}function P(){d.textContent=a,d.className=`status-chip props-chip-trigger status-${a}`,c.innerHTML=sn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function M(){y.textContent=u,h.textContent=ue(u),b.innerHTML=rn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function f(){L.innerHTML=p.map(S=>`<span class="tag-chip props-removable-chip">${D(S)}<button type="button" class="chip-remove" data-tag="${D(S)}" aria-label="Remove tag">×</button></span>`).join(""),L.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.tag;p=p.filter(q=>q!==g),f(),w()})})}function E(){T.innerHTML=s.map(S=>`<span class="related-chip props-removable-chip">${D(S)}<button type="button" class="chip-remove" data-slug="${D(S)}" aria-label="Remove related">×</button></span>`).join(""),T.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.slug;s=s.filter(q=>q!==g),E(),w()})})}function $(){c.classList.add("hidden"),b.classList.add("hidden"),o.classList.add("hidden")}d.addEventListener("click",()=>{c.classList.toggle("hidden")||(b.classList.add("hidden"),o.classList.add("hidden"))}),c.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(a=g.dataset.value??a,P(),c.classList.add("hidden"),w())}),y.addEventListener("click",()=>{b.classList.toggle("hidden")||(c.classList.add("hidden"),o.classList.add("hidden"))}),b.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(u=g.dataset.value??u,M(),b.classList.add("hidden"),w())}),i.addEventListener("input",w),v.addEventListener("keydown",S=>{if(S.key!=="Enter"&&S.key!==",")return;S.preventDefault();const g=v.value.trim().replace(/,$/,"");if(!g||p.includes(g)){v.value="";return}p.push(g),v.value="",f(),w()});function C(S){const g=nn(S,n).filter(q=>!s.includes(q.slug));if(g.length===0){o.classList.add("hidden");return}o.innerHTML=g.map(q=>`<button type="button" class="props-dropdown-item" data-slug="${D(q.slug)}" role="option">
104
+ <span class="wikilink-option-slug">${D(q.slug)}</span>
105
+ <span class="wikilink-option-title">${D(q.title)}</span>
106
+ </button>`).join(""),o.classList.remove("hidden")}return k.addEventListener("input",()=>{C(k.value.trim())}),k.addEventListener("keydown",S=>{if(S.key==="Enter"){S.preventDefault();const g=k.value.trim();g&&!s.includes(g)&&(s.push(g),k.value="",E(),o.classList.add("hidden"),w())}}),o.addEventListener("mousedown",S=>{S.preventDefault();const g=S.target.closest("[data-slug]");if(!g)return;const q=g.dataset.slug??"";q&&!s.includes(q)&&(s.push(q),k.value="",E(),o.classList.add("hidden"),w())}),document.addEventListener("click",S=>{const g=S.target;!d.contains(g)&&!c.contains(g)&&!y.contains(g)&&!b.contains(g)&&!k.contains(g)&&!o.contains(g)&&$()}),{getState:()=>({slug:i.value.trim(),type:u,status:a,tags:[...p],related:[...s]}),setRelated(S){s=[...new Set(S)],E(),w()}}}const on="modulepreload",ln=function(e){return"/"+e},Ne={},it=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){let d=function(b){return Promise.all(b.map(h=>Promise.resolve(h).then(L=>({status:"fulfilled",value:L}),L=>({status:"rejected",reason:L}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),y=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));i=d(n.map(b=>{if(b=ln(b),b in Ne)return;Ne[b]=!0;const h=b.endsWith(".css"),L=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${b}"]${L}`))return;const v=document.createElement("link");if(v.rel=h?"stylesheet":on,h||(v.as="script"),v.crossOrigin="",v.href=b,y&&v.setAttribute("nonce",y),document.head.appendChild(v),h)return new Promise((T,k)=>{v.addEventListener("load",T),v.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${b}`)))})}))}function l(d){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=d,window.dispatchEvent(c),!c.defaultPrevented)throw d}return i.then(d=>{for(const c of d||[])c.status==="rejected"&&l(c.reason);return t().catch(l)})};let I=null,K=null;function ot(e,t,n,r,i=[]){var we,Se,Ee,Le,ke,$e,Pe,Ce,Te,qe,De,Me;const l=i.map(m=>({slug:m.slug,title:m.title}));let d=null,c=n.body;const y=e.querySelector("#ed-title"),b=e.querySelector("#ed-save-status"),h=t.bodySlot.querySelector("#ed-visual-canvas"),L=document.createElement("div");L.id="publish-modal",L.className="modal hidden",L.innerHTML=`
107
+ <div class="modal-card modal-card-wide">
108
+ <p>Publish to git as markdown?</p>
109
+ <code id="publish-target"></code>
110
+ <pre id="publish-diff" class="diff-preview"></pre>
111
+ <div id="publish-related" class="publish-related hidden">
112
+ <p id="publish-related-prompt"></p>
113
+ <ul id="publish-related-list" class="publish-related-list"></ul>
114
+ <div class="editor-actions">
115
+ <button type="button" id="publish-related-apply" class="btn-primary">Add to related</button>
116
+ <button type="button" id="publish-related-skip" class="btn-ghost">Skip</button>
117
+ </div>
118
+ </div>
119
+ <div class="editor-actions">
120
+ <button type="button" id="publish-confirm" class="btn-primary">Confirm</button>
121
+ <button type="button" id="publish-cancel" class="btn-ghost">Cancel</button>
122
+ </div>
123
+ </div>
124
+ `,e.appendChild(L);const v=document.createElement("div");v.id="view-md-modal",v.className="modal hidden",v.innerHTML=`
125
+ <div class="modal-card modal-card-wide">
126
+ <h3 class="modal-title">Markdown source</h3>
127
+ <pre id="view-md-content" class="md-source"></pre>
128
+ <div class="editor-actions">
129
+ <button type="button" id="view-md-copy" class="btn-primary">Copy</button>
130
+ <button type="button" id="view-md-close" class="btn-ghost">Close</button>
131
+ </div>
132
+ </div>
133
+ `,e.appendChild(v);const T=e.querySelector("#ed-publish-menu");y.value=n.title;const k=an(t.railSlot,{slug:n.slug,type:n.type,status:n.status,tags:n.tags,related:n.related},l,()=>w());it(async()=>{const{mountVisualEditor:m}=await import("./visual-editor-DUVPRlY3.js");return{mountVisualEditor:m}},__vite__mapDeps([0,1,2,3])).then(({mountVisualEditor:m})=>{d=m(h,{initialMarkdown:n.body,docCandidates:l,onBodyChange:()=>w(),onError:r.onError})});let o=[];function p(){return(d==null?void 0:d.getMarkdownBody())??c}function s(){const m=k.getState();return{title:y.value,slug:m.slug,type:m.type,status:m.status,tags:m.tags,related:m.related,body:p()}}function a(m){b.textContent=m}async function u(){a("Saving…");const m=s();c=m.body,await Rt(n.id,m),a("Saved")}function w(){I&&clearTimeout(I),I=setTimeout(()=>{I=null,K=u().catch(m=>{a(""),r.onError(m instanceof Error?m.message:"Autosave failed")})},800)}async function P(){I&&(clearTimeout(I),I=null,K=u().catch(m=>{throw a(""),r.onError(m instanceof Error?m.message:"Autosave failed"),m})),K&&(await K,K=null)}y.addEventListener("input",()=>w()),y.addEventListener("change",()=>w());function M(){const m=e.querySelector("#publish-related"),x=e.querySelector("#publish-related-prompt"),_=e.querySelector("#publish-related-list"),H=k.getState();if(o=en(p(),H.related,l),o.length===0){m.classList.add("hidden");return}x.textContent=`Add ${o.length} body link(s) to related?`,_.innerHTML=o.map(ae=>{var xe;const kt=((xe=l.find($t=>$t.slug===ae))==null?void 0:xe.title)??ae;return`<li><code>${D(ae)}</code> — ${D(kt)}</li>`}).join(""),m.classList.remove("hidden")}function f(){var x;if(o.length===0)return;const m=k.getState();k.setRelated([...new Set([...m.related,...o])]),o=[],(x=e.querySelector("#publish-related"))==null||x.classList.add("hidden")}(we=e.querySelector("#publish-related-apply"))==null||we.addEventListener("click",()=>{f()}),(Se=e.querySelector("#publish-related-skip"))==null||Se.addEventListener("click",()=>{var m;o=[],(m=e.querySelector("#publish-related"))==null||m.classList.add("hidden")});let E=null,$=null;function C(){L.classList.add("hidden"),E&&(document.removeEventListener("keydown",E),E=null)}function S(){L.classList.remove("hidden"),E||(E=m=>{m.key==="Escape"&&C()},document.addEventListener("keydown",E))}function g(){v.classList.add("hidden")}function q(){const m=v.querySelector("#view-md-content");m.textContent=p(),v.classList.remove("hidden")}async function se(){await P(),S(),M();const m=e.querySelector("#publish-target"),x=e.querySelector("#publish-diff"),_=k.getState();m.textContent=`docs/.../${_.slug}.md`,x.textContent="Loading diff…";try{const H=await Ht(n.id);H.targetPath&&(m.textContent=H.targetPath),x.textContent=H.diff}catch(H){x.textContent=H instanceof Error?H.message:"Diff unavailable"}}async function Lt(){const m=e.querySelector("#ed-publish");m.setAttribute("aria-busy","true"),m.disabled=!0;try{await P();const{result:x}=await de(n.id);r.onPublished(x.path)}finally{m.removeAttribute("aria-busy"),m.disabled=!1}}(Ee=e.querySelector("#ed-publish"))==null||Ee.addEventListener("click",()=>{Lt().catch(m=>{r.onError(m instanceof Error?m.message:"Publish failed")})}),(Le=e.querySelector("#ed-publish-review"))==null||Le.addEventListener("click",()=>{T.classList.add("hidden"),se().catch(m=>{r.onError(m instanceof Error?m.message:"Failed to prepare publish")})}),(ke=e.querySelector("#ed-publish-menu-btn"))==null||ke.addEventListener("click",()=>{var x;const m=T.classList.toggle("hidden");(x=e.querySelector("#ed-publish-menu-btn"))==null||x.setAttribute("aria-expanded",m?"false":"true")});const ye=m=>{var _,H;const x=m.target;!T.contains(x)&&!((_=e.querySelector("#ed-publish-menu-btn"))!=null&&_.contains(x))&&(T.classList.add("hidden"),(H=e.querySelector("#ed-publish-menu-btn"))==null||H.setAttribute("aria-expanded","false"))};document.addEventListener("click",ye),($e=e.querySelector("#ed-view-md"))==null||$e.addEventListener("click",()=>{q()}),(Pe=v.querySelector("#view-md-close"))==null||Pe.addEventListener("click",()=>{g()}),v.addEventListener("click",m=>{m.target===v&&g()}),(Ce=v.querySelector("#view-md-copy"))==null||Ce.addEventListener("click",()=>{navigator.clipboard.writeText(p()).catch(m=>{r.onError(m instanceof Error?m.message:"Copy failed")})}),(Te=e.querySelector("#publish-cancel"))==null||Te.addEventListener("click",()=>{C()}),L.addEventListener("click",m=>{m.target===L&&C()}),(qe=e.querySelector("#publish-confirm"))==null||qe.addEventListener("click",()=>{(async()=>{await P();const{result:m}=await de(n.id);C(),r.onPublished(m.path)})().catch(m=>{r.onError(m instanceof Error?m.message:"Publish failed")})});const be=()=>{d==null||d.destroy(),r.onClosed()};return(De=e.querySelector("#ed-close"))==null||De.addEventListener("click",be),(Me=e.querySelector("#ed-discard"))==null||Me.addEventListener("click",()=>{confirm("Discard this draft?")&&(d==null||d.destroy(),At(n.id).then(()=>r.onDeleted()).catch(m=>{r.onError(m instanceof Error?m.message:"Delete failed")}))}),$=m=>{m.key==="Escape"&&L.classList.contains("hidden")&&v.classList.contains("hidden")&&be()},document.addEventListener("keydown",$),{destroy:()=>{d==null||d.destroy(),document.removeEventListener("click",ye),$&&document.removeEventListener("keydown",$),C(),g(),L.remove(),v.remove()}}}function lt(e,t){const n=(t==null?void 0:t.showDiscard)??!0;return`
134
+ <div class="editor-action-bar">
135
+ <span class="editing-badge" aria-hidden="true">Editing</span>
136
+ <span id="ed-save-status" class="save-status" aria-live="polite"></span>
137
+ <div class="editor-action-spacer" aria-hidden="true"></div>
138
+ <div class="editor-action-primary">
139
+ <div class="publish-split">
140
+ <button type="button" id="ed-publish" class="btn-primary publish-main">Publish</button>
141
+ <button type="button" id="ed-publish-menu-btn" class="btn-primary publish-menu-trigger" aria-haspopup="true" aria-expanded="false" title="More publish options">▾</button>
142
+ <div id="ed-publish-menu" class="publish-menu hidden" role="menu">
143
+ <button type="button" id="ed-publish-review" role="menuitem">Review changes</button>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ <div class="editor-action-secondary">
148
+ <button type="button" id="ed-view-md" class="btn-ghost btn-sm">Markdown</button>
149
+ <button type="button" id="toggle-focus" class="btn-ghost btn-sm" aria-pressed="${e}">
150
+ ${e?"Show info":"Hide info"}
151
+ </button>
152
+ <button type="button" id="ed-close" class="btn-ghost btn-sm">Close</button>
153
+ ${n?'<button type="button" id="ed-discard" class="btn-ghost btn-sm btn-danger-text">Discard</button>':""}
154
+ </div>
155
+ </div>
156
+ `}function Fe(e,t,n,r=[]){const i=ne(),l=pe(e,{rootClass:"workspace-main workspace-editor",breadcrumbs:[{label:"Knowledge"},{label:"Drafts"},{label:t.title||t.slug,current:!0}],titleHtml:'<input id="ed-title" class="title-input doc-title" type="text" placeholder="Document title" />',actionsHtml:lt(i),mainHtml:'<div id="ed-visual-canvas"></div>',railHtml:at({forkedFrom:t.forked_from}),focusMode:i});return fe(e,i),ot(e,l,t,n,r)}function dn(e){if(!e)return null;if(e.startsWith("?slug=")||e.startsWith("/?slug=")){const t=e.includes("?")?e.slice(e.indexOf("?")):e,n=new URLSearchParams(t).get("slug");return(n==null?void 0:n.trim())||null}try{const n=new URL(e,"http://local").searchParams.get("slug");return(n==null?void 0:n.trim())||null}catch{return null}}function ge(e){var t,n;return((n=(t=e.split("#")[0])==null?void 0:t.split("?")[0])==null?void 0:n.trim())??""}function dt(e){const t=e.replace(/\\/g,"/").replace(/^\/+/,"");return t?t.toLowerCase().endsWith(".md")?t:`${t}.md`:""}function cn(e,t){const n=ge(t);if(!n||n.startsWith("http://")||n.startsWith("https://")||n.startsWith("mailto:")||n.startsWith("#"))return null;const r=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",i=n.replace(/\\/g,"/").split("/"),l=r?r.split("/"):[];for(const d of i)if(!(!d||d===".")){if(d===".."){if(l.length===0)return null;l.pop();continue}l.push(d)}return dt(l.join("/"))}function un(e){let t=ge(e).replace(/\\/g,"/");return!t||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("mailto:")||t.startsWith("#")||(t.startsWith("/")&&(t=t.slice(1)),t.startsWith("docs/")&&(t=t.slice(5)),!t)?null:dt(t)}function pn(e,t){const n=t.get(e);if(n)return n;const r=e.toLowerCase();for(const[i,l]of t.entries())if(i.toLowerCase()===r)return l;return null}function fn(e,t,n){const r=dn(t);if(r){for(const l of n.values())if(l===r)return r;return null}const i=[cn(e,t),un(t)].filter(l=>!!l);for(const l of i){const d=pn(l,n);if(d)return d}return null}const gn=[".png",".jpg",".jpeg",".gif",".webp",".svg"];function Ie(e){const t=e.toLowerCase();return gn.some(n=>t.endsWith(n))}function hn(e,t){const n=ge(t);if(!n||n.startsWith("http://")||n.startsWith("https://")||n.startsWith("mailto:")||n.startsWith("#")||n.startsWith("data:"))return null;let r=n.replace(/\\/g,"/");if(r.startsWith("/")&&(r=r.slice(1)),r.startsWith("docs/")?r=r.slice(5):r="",r&&!r.split("/").includes("..")&&Ie(r))return r;const i=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",l=n.replace(/\\/g,"/").split("/"),d=i?i.split("/"):[];for(const y of l)if(!(!y||y===".")){if(y===".."){if(d.length===0)return null;d.pop();continue}d.push(y)}const c=d.join("/");return c&&Ie(c)?c:null}function mn(e,t){const n=hn(e,t);return n?`/api/assets/${n.split("/").map(encodeURIComponent).join("/")}`:null}let We=null;async function vn(e){const t=e.querySelectorAll("pre.mermaid");if(t.length===0)return;const n=document.documentElement.dataset.theme==="dark"?"dark":"default",r=await it(()=>import("./mermaid.core-BZZdRyuR.js").then(i=>i.ba),__vite__mapDeps([4,5,1]));We!==n&&(r.default.initialize({startOnLoad:!1,theme:n,securityLevel:"loose"}),We=n);try{await r.default.run({nodes:[...t]})}catch{for(const i of t)if(!i.closest(".mermaid-error")){const l=i.parentElement;l==null||l.classList.add("mermaid-error")}}}let _e=!1,W=null;function O(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function yn(e){return e.replace(rt,(t,n,r)=>{const{display:i,slug:l}=st(n,r),d=encodeURIComponent(l);return`[${i}](#wikilink:${d})`})}function bn(){_e||(et.use({gfm:!0,renderer:{code({text:e,lang:t}){return t==="mermaid"?`<div class="mermaid-wrapper"><pre class="mermaid">${O(e.trim())}</pre></div>
157
+ `:!1},list(e){if(!e.items.some(l=>l.task))return!1;const n=e.ordered?"ol":"ul",r=e.ordered&&e.start!==1&&e.start!=null?` start="${e.start}"`:"";let i="";for(const l of e.items)i+=this.listitem(l);return`<${n} class="contains-task-list"${r}>
158
+ ${i}</${n}>
159
+ `},listitem(e){if(!e.task)return!1;const t=`<input type="checkbox" class="task-list-item-checkbox"${e.checked?" checked":""} disabled>`,n=this.parser.parse(e.tokens,!!e.loose).trim();return`<li class="task-list-item"><label class="task-list-item-label">${t}<span class="task-list-item-content">${n}</span></label></li>
160
+ `},image({href:e,text:t,title:n}){if(!e||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("data:"))return!1;if(W){const r=mn(W.docRelativePath,e);if(r){const i=O(t||n||"");return`<img src="${O(r)}" alt="${i}" loading="lazy" class="markdown-image">`}}return!1},link({href:e,text:t}){if(e!=null&&e.startsWith("#wikilink:")){const n=decodeURIComponent(e.slice(10));return`<a href="#" class="wikilink" data-slug="${O(n)}">${t}</a>`}if(W&&e){const n=fn(W.docRelativePath,e,W.slugByRelative);if(n)return`<a href="#" class="wikilink" data-slug="${O(n)}">${t}</a>`}return e!=null&&e.startsWith("http://")||e!=null&&e.startsWith("https://")?`<a href="${O(e)}" target="_blank" rel="noopener noreferrer">${t}</a>`:e!=null&&e.startsWith("mailto:")||e!=null&&e.startsWith("#")?!1:e?`<a href="#" class="md-link-unresolved" title="Link not in docs index">${t}</a>`:!1}}}),_e=!0)}function wn(e,t){bn(),W=t??null;try{return et.parse(yn(e),{async:!1})}finally{W=null}}const he="slug",ct="path",Sn="draft";function me(){const e=new URLSearchParams(window.location.search).get(he);return e!=null&&e.trim()?e.trim():null}function En(){const e=new URLSearchParams(window.location.search).get(ct);return e!=null&&e.trim()?e.trim().replace(/\\/g,"/"):null}function Ln(){const e=new URLSearchParams(window.location.search).get(Sn);return e!=null&&e.trim()?e.trim():null}function kn(){const e=new URL(window.location.href),t=e.pathname;if(t==="/"||t==="/index.html")return;const n=me();e.pathname="/",history.replaceState(n?{slug:n}:{},"",e)}function ut(){const e=new URL(window.location.href);return e.pathname="/",e}function $n(e){const t=ut();return t.search="",t.searchParams.set(he,e),t.toString()}function Pn(e,t="push"){const n=ut();n.searchParams.delete(ct),n.searchParams.set(he,e);const r={slug:e};t==="replace"?history.replaceState(r,"",n):history.pushState(r,"",n)}function Cn(e){const t=()=>{e(me())};return window.addEventListener("popstate",t),()=>window.removeEventListener("popstate",t)}function Tn(e,t){if(t==="json")try{const n=JSON.parse(e);return JSON.stringify(n,null,2)}catch{return e}return e}function qn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Dn(e,t){const n=Tn(e,t);return`<pre class="structured-preview ${t==="json"?"structured-preview--json":"structured-preview--yaml"}"><code>${qn(n)}</code></pre>`}let V=null;function re(){V==null||V.destroy(),V=null}function Mn(e,t){const n=typeof t.status=="string"?t.status:"",r=typeof t.type=="string"?t.type:"",i=typeof t.domain=="string"?t.domain:"",l=Array.isArray(t.tags)?t.tags.filter(y=>typeof y=="string"):[],d=Array.isArray(t.related)?t.related.filter(y=>typeof y=="string"):[],c=e.contentKind??"markdown";return`
161
+ <h2 class="page-info-title">Page info</h2>
162
+ <dl class="info-list">
163
+ <dt>Status</dt><dd><span class="status-chip status-${D(n)}">${D(n)}</span></dd>
164
+ <dt>Type</dt><dd>${D(r)}</dd>
165
+ ${i?`<dt>Domain</dt><dd>${D(i)}</dd>`:""}
166
+ <dt>Format</dt><dd>${D(c)}</dd>
167
+ ${l.length>0?`<dt>Tags</dt><dd>${l.map(y=>`<span class="tag-chip">${D(y)}</span>`).join(" ")}</dd>`:""}
168
+ </dl>
169
+ ${d.length>0?`<div class="info-block"><div class="info-block-label">Related</div>${d.map(y=>`<button type="button" class="related-chip" data-slug="${D(y)}">${D(y)}</button>`).join("")}</div>`:""}
170
+ <div class="info-tabs tabs">
171
+ <button class="tab active" data-tab="frontmatter">Frontmatter</button>
172
+ <button class="tab" data-tab="agent">Agent JSON</button>
173
+ </div>
174
+ <div id="tab-frontmatter" class="tab-panel active"></div>
175
+ <div id="tab-agent" class="tab-panel"></div>
176
+ <footer class="page-info-footer">
177
+ <code id="doc-path">${D(e.path??"")}</code>
178
+ </footer>
179
+ `}function xn(e){e.querySelectorAll(".info-tabs .tab").forEach(t=>{t.addEventListener("click",()=>{var r;const n=t.dataset.tab;e.querySelectorAll(".info-tabs .tab").forEach(i=>i.classList.remove("active")),e.querySelectorAll(".page-info .tab-panel").forEach(i=>i.classList.remove("active")),t.classList.add("active"),(r=e.querySelector(`#tab-${n}`))==null||r.classList.add("active")})})}function Ue(e){e.querySelectorAll(".related-chip").forEach(t=>{t.addEventListener("click",()=>{const n=t.dataset.slug;n&&e.dispatchEvent(new CustomEvent("navigate-slug",{detail:{slug:n}}))})})}function pt(e,t,n){return[{label:"Knowledge",crumbId:"root"},{label:ue(n),crumbId:"catalog"},{label:t,current:!0}]}function ft(e,t,n,r){re();const i=t.frontmatter??{},l=typeof i.title=="string"?i.title:t.slug??"",d=typeof i.type=="string"?i.type:"",c=ne(),y=pe(e,{rootClass:"workspace-main workspace-editor workspace-page",breadcrumbs:pt(t,l,d),titleHtml:'<input id="ed-title" class="title-input doc-title" type="text" placeholder="Document title" />',actionsHtml:lt(c,{showDiscard:!0}),mainHtml:'<div id="ed-visual-canvas"></div>',railHtml:at({forkedFrom:n.forked_from}),focusMode:c});fe(e,c),V=ot(e,y,n,{onPublished:b=>{(async()=>{var h;if(await r.onPublished(b),(h=r.onDraftsChanged)==null||h.call(r),t.slug){const L=await r.onReloadDoc(t.slug);B(e,L,r)}})()},onClosed:()=>{(async()=>{var b;if((b=r.onDraftsChanged)==null||b.call(r),t.slug)try{const h=await r.onReloadDoc(t.slug);B(e,h,r)}catch(h){r.onError(h instanceof Error?h.message:"Failed to reload page")}})()},onDeleted:()=>{var b;(b=r.onDraftsChanged)==null||b.call(r),t.slug&&r.onReloadDoc(t.slug).then(h=>B(e,h,r),()=>B(e,t,r))},onError:r.onError},r.docIndex)}function B(e,t,n){var k,o,p;re();const r=t.frontmatter??{},i=typeof r.title=="string"?r.title:t.slug??"",l=typeof r.type=="string"?r.type:"",d=ne(),c=t.contentKind??"markdown",y=c==="json"||c==="yaml",b=pe(e,{rootClass:"workspace-main workspace-page",breadcrumbs:pt(t,i,l),titleHtml:`<h1 class="doc-title reader-title">${D(i)}</h1>`,actionsHtml:`
180
+ <button type="button" id="toggle-focus" class="btn-ghost" aria-pressed="${d}">
181
+ ${d?"Show info":"Hide info"}
182
+ </button>
183
+ ${y?"":'<button type="button" id="edit-page" class="btn-primary">Edit</button>'}
184
+ <button type="button" id="copy-link" class="btn-ghost">Copy link</button>
185
+ <button type="button" id="copy-path" class="btn-ghost">Copy path</button>
186
+ `,mainHtml:`
187
+ <div class="reader-body">
188
+ <div id="tab-preview" class="markdown-preview reader-preview"></div>
189
+ <section id="reader-backlinks" class="reader-backlinks hidden" aria-label="Backlinks"></section>
190
+ </div>
191
+ `,railHtml:Mn(t,r),focusMode:d});fe(e,d),Xt(e,{root:()=>{var s;return(s=n.onNavigateRoot)==null?void 0:s.call(n)},catalog:()=>{var s;return(s=n.onNavigateCatalog)==null?void 0:s.call(n)}});const h=b.bodySlot.querySelector("#tab-preview");if(y)h.innerHTML=Dn(t.body??"",c);else{const s=n.docRelativePath&&n.slugByRelative?{docRelativePath:n.docRelativePath,slugByRelative:n.slugByRelative}:void 0;h.innerHTML=wn(t.body??"",s),vn(h),h.querySelectorAll("a.wikilink").forEach(a=>{a.addEventListener("click",u=>{u.preventDefault();const w=a.dataset.slug;w&&e.dispatchEvent(new CustomEvent("navigate-slug",{detail:{slug:w}}))})}),h.querySelectorAll("a.md-link-unresolved").forEach(a=>{a.addEventListener("click",u=>{u.preventDefault()})})}const L=b.railSlot.querySelector("#tab-frontmatter");L.innerHTML='<pre class="frontmatter-yaml"></pre>',L.querySelector("pre").textContent=JSON.stringify(r,null,2);const v=b.railSlot.querySelector("#tab-agent");v.innerHTML='<pre class="agent-json"></pre>',v.querySelector("pre").textContent=JSON.stringify(t.agentShape,null,2),xn(e),Ue(e),(k=e.querySelector("#copy-path"))==null||k.addEventListener("click",()=>{t.path&&navigator.clipboard.writeText(t.path)}),(o=e.querySelector("#copy-link"))==null||o.addEventListener("click",()=>{var s;t.slug&&(navigator.clipboard.writeText($n(t.slug)),(s=n.onCopyLink)==null||s.call(n))});const T=()=>{if(!t.slug||y)return;const s=b.bodySlot;s.innerHTML='<p class="reader-loading">Opening editor…</p>',Ze(t.slug).then(({draft:a})=>{var u;(u=n.onDraftsChanged)==null||u.call(n),ft(e,t,a,n)}).catch(a=>{n.onError(a instanceof Error?a.message:"Edit failed"),B(e,t,n)})};(p=e.querySelector("#edit-page"))==null||p.addEventListener("click",T),t.slug&&!y&&Nt(t.slug).then(({backlinks:s})=>{const a=b.bodySlot.querySelector("#reader-backlinks");!a||s.length===0||(a.classList.remove("hidden"),a.innerHTML=`
192
+ <h2 class="reader-backlinks-title">Backlinks</h2>
193
+ <div class="reader-backlinks-list">
194
+ ${s.map(u=>`<button type="button" class="related-chip" data-slug="${D(u.slug)}">${D(u.title)} <span class="backlink-kind">${D(u.kind)}</span></button>`).join("")}
195
+ </div>
196
+ `,Ue(e))}).catch(()=>{})}function N(e,t,n){if(re(),!t||!t.found){e.className="workspace-main",e.innerHTML=`
197
+ <div class="workspace-empty">
198
+ <h1>Knowledge</h1>
199
+ <p class="placeholder">Select a page from the tree or use the ⋯ menu to create one.</p>
200
+ </div>
201
+ `;return}B(e,t,n)}function Oe(e,t,n,r){ft(e,t,n,r)}function Be(e){const t=[];function n(r){for(const i of r.children)i.kind==="page"?t.push(i.slug):n(i)}return n(e),t}function An(e){if(!(e instanceof HTMLElement))return!1;const t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"?!0:e.isContentEditable}function Rn(e){const t=n=>{if(n.metaKey||n.ctrlKey||n.altKey)return;const r=An(n.target);if(n.key==="/"&&!r){n.preventDefault(),e.onFocusSearch();return}if(!r)switch(n.key){case"j":n.preventDefault(),e.onNext();break;case"k":n.preventDefault(),e.onPrev();break;case"e":e.onEdit();break}};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}const gt="http://www.w3.org/2000/svg",te={folder:"M1.75 5.25A1 1 0 0 1 2.75 4.25h3.85L8 5.65h5.25A1 1 0 0 1 14.25 6.65v5.7a1 1 0 0 1-1 1H2.75a1 1 0 0 1-1-1V5.25z",page:"M4.75 2.25A1 1 0 0 0 3.75 3.25v9.5a1 1 0 0 0 1 1h6.5a1 1 0 0 0 1-1V5.35a1 1 0 0 0-.29-.71L9.11 2.54A1 1 0 0 0 8.46 2.25H4.75zm4.35 1.79L11.75 5.5H9.1V4.04z",json:"M5.1 4.5c-.55 0-1 .45-1 1v1.2c0 .45-.2.85-.5 1.15.3.3.5.7.5 1.15v1.2c0 .55.45 1 1 1M10.9 4.5c.55 0 1 .45 1 1v1.2c0 .45.2.85.5 1.15-.3.3-.5.7-.5 1.15v1.2c0 .55-.45 1-1 1",yaml:"M3.75 5h8.5M3.75 8h8.5M3.75 11h5.5"};function Hn(e){if(e.startsWith("folder:"))return"tree-icon--type-folder-catalog";const t=e.replace(/[^a-z0-9-]/gi,"");return t?`tree-icon--type-${t}`:"tree-icon--type-default"}function Q(e,t){return`<span class="tree-icon ${e}" aria-hidden="true">${t}</span>`}function ce(e,t){const n=(t==null?void 0:t.fill)!==!1?"currentColor":"none",r=t!=null&&t.stroke?"currentColor":"none",i=t!=null&&t.stroke?"1.15":"0",l=t!=null&&t.stroke?"round":"butt";return`<svg viewBox="0 0 16 16" xmlns="${gt}" fill="none" aria-hidden="true"><path d="${e}" fill="${n}" stroke="${r}" stroke-width="${i}" stroke-linecap="${l}" stroke-linejoin="round"/></svg>`}function Nn(){return`<svg viewBox="0 0 16 16" xmlns="${gt}" fill="none" aria-hidden="true"><path d="${te.yaml}" stroke="currentColor" stroke-width="1.15" stroke-linecap="round"/></svg>`}function Fn(){return Q("tree-icon--folder",ce(te.folder))}function je(e,t="markdown"){return t==="json"?Q("tree-icon--page tree-icon--structured",ce(te.json,{fill:!1,stroke:!0})):t==="yaml"?Q("tree-icon--page tree-icon--structured",Nn()):Q(`tree-icon--page ${Hn(e)}`,ce(te.page))}function In(e){return Fn()}function ve(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Wn(e){return ve(e)}function ht(e,t){var d;const n=document.createElement("div");n.className="modal",n.innerHTML=`
202
+ <div class="modal-card tree-page-modal" role="dialog" aria-modal="true">
203
+ <h2 class="modal-title">${ve(e)}</h2>
204
+ ${t}
205
+ <div class="modal-actions">
206
+ <button type="button" class="btn-ghost" data-action="cancel">Отмена</button>
207
+ <button type="button" class="btn-primary" data-action="create">Создать</button>
208
+ </div>
209
+ </div>
210
+ `;const r=()=>{n.remove()};n.querySelector(".modal-card").addEventListener("click",c=>{c.stopPropagation()}),(d=n.querySelector('[data-action="cancel"]'))==null||d.addEventListener("click",r),n.addEventListener("click",c=>{c.target===n&&r()});const l=n.querySelector("#tree-page-name");return l.focus(),document.body.appendChild(n),{backdrop:n,nameInput:l,close:r}}function mt(e,t,n,r,i){var d;const l=()=>{const c=t.value.trim();if(!c){t.focus();return}i&&!i()||(n(),r(c))};(d=e.querySelector('[data-action="create"]'))==null||d.addEventListener("click",l),t.addEventListener("keydown",c=>{c.key==="Enter"&&(c.preventDefault(),l()),c.key==="Escape"&&n()})}function _n(e){const t=`
211
+ <label class="modal-field">
212
+ <span class="modal-label">Имя (без .md)</span>
213
+ <input type="text" class="modal-input" id="tree-page-name" autocomplete="off" />
214
+ </label>
215
+ `,{backdrop:n,nameInput:r,close:i}=ht("Новый файл",t);mt(n,r,i,e)}function Un(e,t){var y;const n=`
216
+ <label class="modal-field">
217
+ <span class="modal-label">Имя (без .md)</span>
218
+ <input type="text" class="modal-input" id="tree-page-name" autocomplete="off" />
219
+ </label>
220
+ <div class="modal-field">
221
+ <span class="modal-label" id="tree-template-label">Шаблон</span>
222
+ <div class="tree-template-list" role="listbox" aria-labelledby="tree-template-label">
223
+ ${e.map((b,h)=>`
224
+ <button
225
+ type="button"
226
+ class="tree-template-item${h===0?" is-selected":""}"
227
+ role="option"
228
+ aria-selected="${h===0?"true":"false"}"
229
+ data-template-id="${Wn(b.id)}"
230
+ >${ve(b.label)}</button>`).join("")}
231
+ </div>
232
+ </div>
233
+ `,{backdrop:r,nameInput:i,close:l}=ht("Новый файл из шаблона",n),d=r.querySelector(".tree-template-list");let c=((y=e[0])==null?void 0:y.id)??"";d.addEventListener("click",b=>{const h=b.target.closest(".tree-template-item");h!=null&&h.dataset.templateId&&(c=h.dataset.templateId,d.querySelectorAll(".tree-template-item").forEach(L=>{const v=L===h;L.classList.toggle("is-selected",v),L.setAttribute("aria-selected",String(v))}))}),mt(r,i,l,b=>{c&&t(b,c)},()=>!!c)}function On(e){if(e.childFolderPath)return e.childFolderPath;const t=e.relativePath.replace(/\\/g,"/");if(t==="README.md")return"";const n=t.lastIndexOf("/"),r=n===-1?t:t.slice(n+1),i=n===-1?"":t.slice(0,n);if(r.toLowerCase()==="readme.md")return i;const l=r.replace(/\.(md|ya?ml|json)$/i,"");return i?`${i}/${l}`:l}function Bn(e){if(e.childFolderPath)return!1;const t=e.relativePath.replace(/\\/g,"/");return t==="README.md"?!1:(t.includes("/")?t.slice(t.lastIndexOf("/")+1):t).toLowerCase()!=="readme.md"}async function jn(e,t){var n,r,i;if(!Bn(e))return On(e);try{const{result:l}=await Ft(e.relativePath);return(n=t.onTreeChanged)==null||n.call(t),(r=t.onExpandFolder)==null||r.call(t,l.folderPath),l.folderPath}catch(l){return(i=t.onError)==null||i.call(t,l instanceof Error?l.message:"Promote page failed"),null}}const vt="application/x-repomind-tree-node";function F(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}function yt(e){const t=F(e),n=t.lastIndexOf("/");return n===-1?"":t.slice(0,n)}function bt(e,t){const n=F(e),r=F(t);return n?r===n||r.startsWith(`${n}/`):!0}function Ke(e){var n;const t=(n=e.dataTransfer)==null?void 0:n.getData(vt);if(!t)return null;try{const r=JSON.parse(t);return r.kind!=="page"&&r.kind!=="folder"||typeof r.path!="string"?null:{kind:r.kind,path:F(r.path)}}catch{return null}}function ze(e,t){const n=F(e.path),r=F(t);return!(yt(n)===r||bt(n.replace(/\.md$/i,""),r))}function Ve(e,t){const n=F(e.path),r=F(t);return!(n===r||yt(n)===r||bt(n,r))}function Kn(e,t){let n=null,r=null;function i(o){return o.target.closest("[data-drop-dir]")}function l(){n&&(n.classList.remove("tree-drop-target","tree-drop-invalid"),n=null)}function d(o,p){n&&n!==o&&n.classList.remove("tree-drop-target","tree-drop-invalid"),n=o,o.classList.toggle("tree-drop-target",p),o.classList.toggle("tree-drop-invalid",!p)}function c(o){const p=o.dataset.dropDir;return p===void 0?null:p}async function y(o,p){var s,a,u,w,P,M;try{if(o.kind==="page"){const{result:E}=await It(o.path,p);(s=t.onTreeChanged)==null||s.call(t),E.cascadeUpdated.length>0?(a=t.onNotify)==null||a.call(t,`Moved page; updated links in ${E.cascadeUpdated.length} file(s).`):E.inboundWarnings.length>0&&((u=t.onError)==null||u.call(t,`${E.inboundWarnings.length} page(s) still reference old slug "${E.previousSlug}".`));return}const{result:f}=await Wt(o.path,p);(w=t.onTreeChanged)==null||w.call(t),f.cascadeUpdated.length>0&&((P=t.onNotify)==null||P.call(t,`Moved folder; updated links in ${f.cascadeUpdated.length} file(s).`))}catch(f){(M=t.onError)==null||M.call(t,f instanceof Error?f.message:"Move failed")}}const b=o=>{const p=o.target.closest(".tree-row[data-drag-kind]");if(!p||!o.dataTransfer)return;if(o.target.closest(".tree-menu, .tree-toggle")){o.preventDefault();return}const s=p.dataset.dragKind,a=p.dataset.dragPath;if(!s||!a){o.preventDefault();return}const u={kind:s,path:a};r=u,o.dataTransfer.setData(vt,JSON.stringify(u)),o.dataTransfer.setData("text/plain",a),o.dataTransfer.effectAllowed="move",p.classList.add("is-dragging")},h=o=>{r=null;const p=o.target.closest(".tree-row");p==null||p.classList.remove("is-dragging"),l()},L=o=>{!r||!i(o)||o.preventDefault()},v=o=>{const p=r??Ke(o),s=i(o);if(!p||!s)return;const a=c(s);if(a===null)return;const u=p.kind==="page"?ze(p,a):Ve(p,a);o.preventDefault(),o.dataTransfer.dropEffect=u?"move":"none";const w=s.classList.contains("tree-row")?s:s.closest(".tree-row");w&&d(w,u)},T=o=>{const p=i(o);if(!p||p.contains(o.relatedTarget))return;const s=p.classList.contains("tree-row")?p:p.closest(".tree-row");s&&n===s&&l()},k=o=>{o.preventDefault(),o.stopPropagation();const p=r??Ke(o),s=i(o),a=s?c(s):null;l(),r=null,!(!p||a===null||!(p.kind==="page"?ze(p,a):Ve(p,a)))&&y(p,a)};return e.addEventListener("dragstart",b),e.addEventListener("dragend",h),e.addEventListener("dragenter",L),e.addEventListener("dragover",v),e.addEventListener("dragleave",T),e.addEventListener("drop",k),()=>{r=null,e.removeEventListener("dragstart",b),e.removeEventListener("dragend",h),e.removeEventListener("dragenter",L),e.removeEventListener("dragover",v),e.removeEventListener("dragleave",T),e.removeEventListener("drop",k),l()}}function Ge(e,t,n){e.draggable=!0,e.dataset.dragKind=t,e.dataset.dragPath=n}function Je(e,t){e.dataset.dropDir=t}function Xe(e,t){e.dataset.dropDir=t}const wt="repomind-tree-expanded";function zn(){try{const e=localStorage.getItem(wt);return e?new Set(JSON.parse(e)):new Set([""])}catch{return new Set([""])}}function z(e){localStorage.setItem(wt,JSON.stringify([...e]))}function Vn(){document.querySelectorAll(".tree-context-menu").forEach(e=>e.remove())}function Ye(e,t,n,r){Ot(e,t,void 0,n).then(({draft:i})=>{var l,d;(l=r.onTreeChanged)==null||l.call(r),(d=r.onSelectDraft)==null||d.call(r,i)}).catch(i=>{var l;(l=r.onError)==null||l.call(r,i instanceof Error?i.message:"Create page failed")})}function Gn(e,t,n){var k,o,p,s;Vn();const{kind:r,folderPath:i,page:l,templates:d,resolveCreateParent:c}=t,y=r==="page"||r==="folder"&&!!i,b=d.length>0,h=document.createElement("div");h.className="tree-create-menu tree-context-menu",h.innerHTML=`
234
+ <button type="button" data-action="folder">Добавить директорию</button>
235
+ <button type="button" data-action="page">Создать файл</button>
236
+ ${b?'<button type="button" data-action="template">Создать из шаблона</button>':""}
237
+ ${y?'<button type="button" data-action="delete" class="tree-menu-danger">Удалить</button>':""}
238
+ `;const L=e.getBoundingClientRect();h.style.top=`${L.bottom+4}px`,h.style.left=`${Math.max(8,L.right-200)}px`,document.body.appendChild(h);const v=()=>h.remove(),T=a=>{h.contains(a.target)||(v(),document.removeEventListener("click",T))};setTimeout(()=>document.addEventListener("click",T),0),(k=h.querySelector('[data-action="page"]'))==null||k.addEventListener("click",()=>{v(),(async()=>{const a=await c();a!==null&&_n(u=>{Ye(a,u,void 0,n)})})()}),(o=h.querySelector('[data-action="template"]'))==null||o.addEventListener("click",()=>{v(),(async()=>{const a=await c();a!==null&&Un(d,(u,w)=>{Ye(a,u,w,n)})})()}),(p=h.querySelector('[data-action="folder"]'))==null||p.addEventListener("click",()=>{v();const a=window.prompt("Имя директории:");a!=null&&a.trim()&&(async()=>{const u=await c();u!==null&&Ut(u,a.trim()).then(()=>{var w;return(w=n.onTreeChanged)==null?void 0:w.call(n)}).catch(w=>{var P;(P=n.onError)==null||P.call(n,w instanceof Error?w.message:"Create folder failed")})})()}),(s=h.querySelector('[data-action="delete"]'))==null||s.addEventListener("click",()=>{if(v(),r==="page"&&l){if(!window.confirm(`Удалить «${l.title}»?`))return;Ae(l.relativePath,"page").then(({result:a})=>{var u,w,P,M;(u=n.onFsDeleted)==null||u.call(n,[a.slug]),(w=n.onTreeChanged)==null||w.call(n),a.cascadeUpdated.length>0?(P=n.onNotify)==null||P.call(n,`Deleted ${a.slug}; cleaned links in ${a.cascadeUpdated.length} file(s).`):a.inboundWarnings.length>0&&((M=n.onError)==null||M.call(n,`${a.inboundWarnings.length} page(s) still reference deleted slug "${a.slug}".`))}).catch(a=>{var u;(u=n.onError)==null||u.call(n,a instanceof Error?a.message:"Delete failed")});return}if(r==="folder"&&i){if(!window.confirm(`Удалить «${i}» и всё содержимое?`))return;Ae(i,"folder").then(({result:a})=>{var u,w,P,M;(u=n.onFsDeleted)==null||u.call(n,a.deletedSlugs),(w=n.onTreeChanged)==null||w.call(n),a.cascadeUpdated.length>0?(P=n.onNotify)==null||P.call(n,`Deleted folder; cleaned links in ${a.cascadeUpdated.length} file(s).`):a.inboundWarnings.length>0&&((M=n.onError)==null||M.call(n,`${a.inboundWarnings.length} page(s) still reference deleted page(s).`))}).catch(a=>{var u;(u=n.onError)==null||u.call(n,a instanceof Error?a.message:"Delete folder failed")})}})}function Jn(e,t,n,r){var p;e.innerHTML=`
239
+ <nav id="docs-tree" class="docs-tree" aria-label="Documentation tree"></nav>
240
+ <section class="catalog-section catalog-drafts">
241
+ <button type="button" class="catalog-header" data-catalog="__drafts__" aria-expanded="true">
242
+ <span class="catalog-chevron" aria-hidden="true">▾</span>
243
+ <span class="catalog-icon catalog-icon--draft" aria-hidden="true">✎</span>
244
+ <span class="catalog-label">Drafts</span>
245
+ <span class="catalog-count">${n.length}</span>
246
+ </button>
247
+ <ul id="draft-list" class="catalog-pages"></ul>
248
+ </section>
249
+ `;const i=e.querySelector("#docs-tree"),l=e.querySelector("#draft-list"),d=zn();let c=null,y=null,b=null;function h(s){d.add("");let a="";for(const u of s.split("/").filter(Boolean))a=a?`${a}/${u}`:u,d.add(a);z(d)}async function L(s,a){var u;try{c||(c=(await _t()).templates),Gn(s,{...a,templates:c},r)}catch(w){(u=r.onError)==null||u.call(r,w instanceof Error?w.message:"Failed to open menu")}}function v(s,a){var $,C,S;const u=!!s.childFolderPath,w=s.childFolderPath??"",P=u&&d.has(w),M=document.createElement("div");M.className=u?"tree-folder tree-page-folder":"tree-page";const f=document.createElement("div");f.className="tree-row",f.style.paddingLeft=`${a*12+8}px`,s.slug===y&&f.classList.add("active"),f.innerHTML=u?`
250
+ <button type="button" class="tree-toggle" aria-expanded="${P}">${P?"▾":"▸"}</button>
251
+ <button type="button" class="tree-label">
252
+ ${je(s.type,s.contentKind)}
253
+ <span class="tree-title">${X(s.title)}</span>
254
+ </button>
255
+ <button type="button" class="tree-menu" title="Actions">⋯</button>
256
+ `:`
257
+ <span class="tree-spacer" aria-hidden="true"></span>
258
+ <button type="button" class="tree-label">
259
+ ${je(s.type,s.contentKind)}
260
+ <span class="tree-title">${X(s.title)}</span>
261
+ </button>
262
+ <button type="button" class="tree-menu" title="Actions">⋯</button>
263
+ `;const E=s.relativePath.includes("/")?s.relativePath.slice(0,s.relativePath.lastIndexOf("/")):"";if(u&&(($=f.querySelector(".tree-toggle"))==null||$.addEventListener("click",g=>{g.stopPropagation(),d.has(w)?d.delete(w):d.add(w),z(d),k()})),(C=f.querySelector(".tree-menu"))==null||C.addEventListener("click",g=>{g.stopPropagation(),L(g.currentTarget,{kind:"page",parentPath:E,folderPath:s.childFolderPath??E,page:s,resolveCreateParent:()=>jn(s,{onTreeChanged:r.onTreeChanged,onError:r.onError,onExpandFolder:h})})}),(S=f.querySelector(".tree-label"))==null||S.addEventListener("click",()=>{y=s.slug,b=null,k(),o(),r.onSelectSlug(s.slug)}),Ge(f,"page",s.relativePath),s.childFolderPath&&Je(f,s.childFolderPath),M.appendChild(f),u&&P&&s.children){const g=document.createElement("div");g.className="tree-children",s.childFolderPath&&Xe(g,s.childFolderPath);for(const q of s.children)q.kind==="folder"?g.appendChild(T(q,a+1)):g.appendChild(v(q,a+1));M.appendChild(g)}return M}function T(s,a){var M,f,E;const u=document.createElement("div");u.className="tree-folder";const w=d.has(s.relativePath),P=document.createElement("div");if(P.className="tree-row",P.style.paddingLeft=`${a*12+8}px`,P.innerHTML=`
264
+ <button type="button" class="tree-toggle" aria-expanded="${w}">${w?"▾":"▸"}</button>
265
+ <button type="button" class="tree-label">
266
+ ${In()}
267
+ <span class="tree-title">${X(s.name)}</span>
268
+ </button>
269
+ <button type="button" class="tree-menu" title="Actions">⋯</button>
270
+ `,(M=P.querySelector(".tree-toggle"))==null||M.addEventListener("click",$=>{$.stopPropagation(),d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(f=P.querySelector(".tree-label"))==null||f.addEventListener("click",()=>{d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(E=P.querySelector(".tree-menu"))==null||E.addEventListener("click",$=>{$.stopPropagation(),L($.currentTarget,{kind:"folder",parentPath:s.relativePath,folderPath:s.relativePath,resolveCreateParent:async()=>s.relativePath})}),Ge(P,"folder",s.relativePath),Je(P,s.relativePath),u.appendChild(P),w){const $=document.createElement("div");$.className="tree-children",Xe($,s.relativePath);for(const C of s.children??[])C.kind==="folder"?$.appendChild(T(C,a+1)):$.appendChild(v(C,a+1));u.appendChild($)}return u}function k(){i.innerHTML="",i.appendChild(T(t,0))}function o(){if(l.innerHTML="",n.length===0){l.innerHTML='<li class="placeholder page-item">No drafts</li>';return}for(const s of n){const a=document.createElement("li");a.className="page-item",s.id===b&&a.classList.add("active"),a.innerHTML=`<span class="page-title">${X(s.title||s.slug)}</span><span class="status-chip status-draft">draft</span>`,a.addEventListener("click",()=>{var u;b=s.id,y=null,k(),o(),(u=r.onSelectDraft)==null||u.call(r,s)}),l.appendChild(a)}}k(),o(),Kn(i,{onTreeChanged:r.onTreeChanged,onError:r.onError,onNotify:r.onNotify}),(p=e.querySelector('[data-catalog="__drafts__"]'))==null||p.addEventListener("click",()=>{const s=e.querySelector("#draft-list"),a=e.querySelector('[data-catalog="__drafts__"]'),u=(s==null?void 0:s.classList.toggle("hidden"))===!1;a==null||a.setAttribute("aria-expanded",String(u));const w=a==null?void 0:a.querySelector(".catalog-chevron");w&&(w.textContent=u?"▾":"▸")}),e.setActiveSlug=s=>{y=s,b=null,d.add(""),z(d),k(),o()},e.setActiveDraft=s=>{b=s,y=null,k(),o()},e.refreshDrafts=s=>{n.length=0,n.push(...s),o();const a=e.querySelector(".catalog-drafts .catalog-count");a&&(a.textContent=String(n.length))},e.refreshTree=(s,a)=>{t.children=s.children??[],t.emoji=s.emoji,t.indexPageSlug=s.indexPageSlug,t.indexPageType=s.indexPageType,t.indexPageContentKind=s.indexPageContentKind,t.name=s.name,n.length=0,n.push(...a??[]),k(),o()}}function X(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}const Z="repomind-sidebar-width",St=220,Et=420,j=280;function ee(e){return Math.min(Et,Math.max(St,e))}function Xn(){try{const e=localStorage.getItem(Z);if(!e)return j;const t=Number.parseInt(e,10);return Number.isFinite(t)?ee(t):j}catch{return j}}function Y(e,t){e.style.setProperty("--sidebar-width",`${t}px`)}function Yn(e){const t=Xn();Y(e,t);const n=document.createElement("div");n.className="sidebar-resize-handle",n.setAttribute("role","separator"),n.setAttribute("aria-orientation","vertical"),n.setAttribute("aria-label","Resize sidebar"),n.tabIndex=0;const r=e.querySelector("#sidebar");r!=null&&r.nextSibling?e.insertBefore(n,r.nextSibling):e.appendChild(n);let i=!1,l=0,d=t;const c=v=>{if(!i)return;const T=v.clientX-l;Y(e,ee(d+T))},y=()=>{if(!i)return;i=!1,n.classList.remove("is-dragging"),document.body.style.cursor="",document.body.style.userSelect="";const v=ie(e);localStorage.setItem(Z,String(v)),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",y)},b=v=>{v.button===0&&(i=!0,l=v.clientX,d=ie(e),n.classList.add("is-dragging"),document.body.style.cursor="col-resize",document.body.style.userSelect="none",n.setPointerCapture(v.pointerId),window.addEventListener("pointermove",c),window.addEventListener("pointerup",y))},h=v=>{const T=v.shiftKey?40:16;let k=ie(e);if(v.key==="ArrowLeft")k=ee(k-T);else if(v.key==="ArrowRight")k=ee(k+T);else if(v.key==="Home")k=St;else if(v.key==="End")k=Et;else return;v.preventDefault(),Y(e,k),localStorage.setItem(Z,String(k))},L=()=>{Y(e,j),localStorage.setItem(Z,String(j))};return n.addEventListener("pointerdown",b),n.addEventListener("keydown",h),n.addEventListener("dblclick",L),()=>{n.removeEventListener("pointerdown",b),n.removeEventListener("keydown",h),n.removeEventListener("dblclick",L),n.remove()}}function ie(e){const t=getComputedStyle(e).getPropertyValue("--sidebar-width").trim(),n=Number.parseInt(t,10);return Number.isFinite(n)?n:j}function Qn(e){const t=new EventSource("/api/events");return t.onmessage=()=>{e()},()=>{t.close()}}kn();Bt();function oe(e){return new Map(e.map(t=>[t.relativePath,t.slug]))}function le(e,t){var n;return(n=e.find(r=>r.slug===t))==null?void 0:n.relativePath}function A(e,t=!1){const n=document.querySelector("#banner");n&&(n.textContent=e,n.classList.toggle("error",t),n.classList.remove("hidden"),setTimeout(()=>n.classList.add("hidden"),5e3))}async function Qe(e){var n;const{drafts:t}=await G();return(n=e.refreshDrafts)==null||n.call(e,t),t}async function Zn(){var M;jt(document.querySelector("#theme-toggle"));const e=document.querySelector(".layout");e&&Yn(e);const t=document.querySelector("#sidebar"),n=document.querySelector("#workspace"),r=document.querySelector("#health-toggle"),i=document.querySelector("#stats"),l=document.querySelector("#global-search"),d=document.querySelector("#search-dropdown");let c=[],y=null,b=[],h="workspace",L=null,v=null;async function T(f){var C;const[{tree:E},{drafts:$}]=await Promise.all([Re(),G()]);return(C=f.refreshTree)==null||C.call(f,E,$),b=Be(E),E}function k(f){if(h=f,r.setAttribute("aria-pressed",String(f==="dashboard")),f==="dashboard"){L=Gt(n,{onOpenDraft:$=>{k("workspace"),a($)},onPublished:$=>{(async()=>(await T(t),await o(),A(`Published: ${$}`)))()},onNotify:($,C)=>A($,C)}).refresh;return}L=null,re(),N(n,null,p())}r.addEventListener("click",()=>{k(h==="dashboard"?"workspace":"dashboard")}),Rn({onNext:()=>{if(h!=="workspace"||!y)return;const f=b.indexOf(y);f>=0&&f<b.length-1&&P(b[f+1])},onPrev:()=>{if(h!=="workspace"||!y)return;const f=b.indexOf(y);f>0&&P(b[f-1])},onFocusSearch:()=>{l.focus(),l.select()},onEdit:()=>{h==="workspace"&&y&&w(y)}});async function o(){const f=await zt(),$=await(await fetch("/api/stats")).json(),{drafts:C}=await G(),S=$.brokenRelatedCount>0?` · ${$.brokenRelatedCount} broken links`:"";i.textContent=`v${f.version} · ${f.docCount} pages · ${C.length} drafts${S}`}function p(){return{docIndex:c,onPublished:async f=>{c=(await U()).docs,await T(t),await o(),L==null||L(),A(`Published: ${f}`)},onError:f=>A(f,!0),onReloadDoc:f=>J(f),onDraftsChanged:()=>{Qe(t)},onCopyLink:()=>A("Link copied")}}function s(f){if(f.length===0){d.innerHTML='<p class="search-empty">No matches</p>',d.classList.remove("hidden");return}const E=document.createElement("ul");E.className="search-results";for(const $ of f){const C=c.find(g=>g.slug===$.slug),S=document.createElement("li");S.innerHTML=`
271
+ <div class="search-result-title">${$.title}</div>
272
+ <div class="search-result-meta">${ue((C==null?void 0:C.type)??"")} · ${$.snippet}</div>
273
+ `,S.addEventListener("click",()=>{d.classList.add("hidden"),l.value="",P($.slug)}),E.appendChild(S)}d.innerHTML="",d.appendChild(E),d.classList.remove("hidden")}l.addEventListener("input",()=>{const f=l.value.trim();if(v&&clearTimeout(v),!f){d.classList.add("hidden"),d.innerHTML="";return}v=setTimeout(()=>{Kt(f).then(({results:E})=>s(E)).catch(E=>A(E instanceof Error?E.message:"Search failed",!0))},300)}),document.addEventListener("click",f=>{!d.contains(f.target)&&f.target!==l&&d.classList.add("hidden")});function a(f){var $;k("workspace"),($=t.setActiveDraft)==null||$.call(t,f.id);const E=f.forked_from??(c.some(C=>C.slug===f.slug)?f.slug:null);if(E){J(E).then(C=>{Oe(n,C,f,{...p(),docRelativePath:le(c,E),slugByRelative:oe(c),onPublished:async S=>{await p().onPublished(S),await P(f.slug)}})}).catch(()=>{Fe(n,f,u(),c)});return}Fe(n,f,u(),c)}function u(){return{onPublished:f=>{(async()=>{c=(await U()).docs,await T(t),await o(),L==null||L(),A(`Published: ${f}`);const $=c.find(C=>C.slug===draft.slug);$&&await P($.slug)})()},onClosed:()=>{N(n,null,p())},onDeleted:()=>{(async()=>(await T(t),N(n,null,p())))()},onError:f=>A(f,!0)}}async function w(f){if(h==="workspace")try{const E=await J(f),{draft:$}=await Ze(f);await Qe(t),Oe(n,E,$,{...p(),docRelativePath:le(c,f),slugByRelative:oe(c)})}catch(E){A(E instanceof Error?E.message:"Edit failed",!0)}}async function P(f,E={}){var S;const $=E.updateUrl??!0,C=E.urlMode??"push";h==="dashboard"&&k("workspace"),y=f,(S=t.setActiveSlug)==null||S.call(t,f);try{const g=await J(f),q=le(c,f);N(n,g,{...p(),docRelativePath:q,slugByRelative:oe(c)}),$&&Pn(f,C)}catch(g){A(g instanceof Error?g.message:"Failed to load doc",!0)}}n.addEventListener("navigate-slug",(f=>{P(f.detail.slug)}));try{await o();const[f,{tree:E},{drafts:$}]=await Promise.all([U(),Re(),G()]);c=f.docs,b=Be(E),Jn(t,E,$,{onSelectSlug:g=>{P(g)},onSelectDraft:g=>a(g),onTreeChanged:()=>{(async()=>(c=(await U()).docs,await T(t),await o()))()},onFsDeleted:g=>{(async()=>(c=(await U()).docs,y&&g.includes(y)&&(y=null,N(n,null,p())),await T(t),await o()))()},onError:g=>A(g,!0),onNotify:g=>A(g)}),Qn(()=>{(async()=>{try{c=(await U()).docs,await T(t),await o(),y&&!c.some(q=>q.slug===y)&&(y=null,N(n,null,p()))}catch{}})()}),Cn(g=>{if(!g){y=null,N(n,null,p());return}c.some(q=>q.slug===g)&&P(g,{updateUrl:!1})}),N(n,null,p());const C=me(),S=Ln();if(S){const g=$.find(q=>q.id===S);g?a(g):A(`Unknown draft: ${S}`,!0)}else if(C)c.some(g=>g.slug===C)?await P(C,{updateUrl:!1}):A(`Unknown page: ${C}`,!0);else{const g=En(),q=g?(M=c.find(se=>se.relativePath===g))==null?void 0:M.slug:void 0;g&&q?await P(q,{updateUrl:!1}):g?A(`Unknown path: ${g}`,!0):E.indexPageSlug?await P(E.indexPageSlug,{urlMode:"replace"}):c.length>0&&c[0]&&await P(c[0].slug,{urlMode:"replace"})}}catch(f){A(f instanceof Error?f.message:"Failed to load workspace",!0)}}Zn();export{it as _,nn as a,vn as e,nr as f,st as p};