@justyork/repo-mind 0.7.0 → 0.7.1

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 (67) 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-B9D1Pvqi.js} +1 -1
  8. package/ui/dist/assets/{architectureDiagram-3BPJPVTR-CI2fjjSo.js → architectureDiagram-3BPJPVTR-Bvug0Ca5.js} +1 -1
  9. package/ui/dist/assets/{blockDiagram-GPEHLZMM-DVBIs-Z6.js → blockDiagram-GPEHLZMM-Ckmilsu4.js} +1 -1
  10. package/ui/dist/assets/{c4Diagram-AAUBKEIU-rhAX_HrB.js → c4Diagram-AAUBKEIU-BT9pbmn0.js} +1 -1
  11. package/ui/dist/assets/channel-TAOLyHdK.js +1 -0
  12. package/ui/dist/assets/{chunk-2J33WTMH-CxWSQi5S.js → chunk-2J33WTMH-dgxq-Xfu.js} +1 -1
  13. package/ui/dist/assets/{chunk-4BX2VUAB-BEM-vVbU.js → chunk-4BX2VUAB-DmM9cIh_.js} +1 -1
  14. package/ui/dist/assets/{chunk-55IACEB6-TcrLDHYx.js → chunk-55IACEB6-DsB88bPS.js} +1 -1
  15. package/ui/dist/assets/{chunk-727SXJPM-D8g4OcIW.js → chunk-727SXJPM-BYuDClxC.js} +1 -1
  16. package/ui/dist/assets/{chunk-AQP2D5EJ-CSvrR8rQ.js → chunk-AQP2D5EJ-RO0Jvaof.js} +1 -1
  17. package/ui/dist/assets/{chunk-FMBD7UC4-C14JNc29.js → chunk-FMBD7UC4-DqY1unJF.js} +1 -1
  18. package/ui/dist/assets/{chunk-ND2GUHAM-Cnb0VFKm.js → chunk-ND2GUHAM-BAURH6-3.js} +1 -1
  19. package/ui/dist/assets/{chunk-QZHKN3VN-D2pqmAXN.js → chunk-QZHKN3VN-BiCWufLo.js} +1 -1
  20. package/ui/dist/assets/classDiagram-4FO5ZUOK-0RJZpoIN.js +1 -0
  21. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-0RJZpoIN.js +1 -0
  22. package/ui/dist/assets/{cose-bilkent-S5V4N54A-Cli2Sbvt.js → cose-bilkent-S5V4N54A-Bol8tJZ0.js} +1 -1
  23. package/ui/dist/assets/{dagre-BM42HDAG-gUsVuy4s.js → dagre-BM42HDAG-ziNCIqra.js} +1 -1
  24. package/ui/dist/assets/{diagram-2AECGRRQ-DTKi_1b6.js → diagram-2AECGRRQ-Dh2G8IOg.js} +1 -1
  25. package/ui/dist/assets/{diagram-5GNKFQAL-8Bj0k_-k.js → diagram-5GNKFQAL-C_26Fq9O.js} +1 -1
  26. package/ui/dist/assets/{diagram-KO2AKTUF-CKOX2fpv.js → diagram-KO2AKTUF-CPS1B4bk.js} +1 -1
  27. package/ui/dist/assets/{diagram-LMA3HP47-B12JvpF3.js → diagram-LMA3HP47-DoL5Nx28.js} +1 -1
  28. package/ui/dist/assets/{diagram-OG6HWLK6-DKeTI9IH.js → diagram-OG6HWLK6-DOy-TY5D.js} +1 -1
  29. package/ui/dist/assets/editor-CTtDusro.js +211 -0
  30. package/ui/dist/assets/{erDiagram-TEJ5UH35-oDb31edH.js → erDiagram-TEJ5UH35-C2whsoWw.js} +1 -1
  31. package/ui/dist/assets/{flowDiagram-I6XJVG4X-SPf3KLS-.js → flowDiagram-I6XJVG4X-D7-1XdVh.js} +1 -1
  32. package/ui/dist/assets/{ganttDiagram-6RSMTGT7-D8oPEcrt.js → ganttDiagram-6RSMTGT7-Dduumk4v.js} +1 -1
  33. package/ui/dist/assets/{gitGraphDiagram-PVQCEYII-eI9Yp7d7.js → gitGraphDiagram-PVQCEYII-CJfZihUe.js} +1 -1
  34. package/ui/dist/assets/{graph-DqCH9VKs.js → graph-CFkZObJQ.js} +1 -1
  35. package/ui/dist/assets/{infoDiagram-5YYISTIA-CQ6dtyj3.js → infoDiagram-5YYISTIA-B8IsGW31.js} +1 -1
  36. package/ui/dist/assets/{ishikawaDiagram-YF4QCWOH-BHnOZ8-9.js → ishikawaDiagram-YF4QCWOH-CwaI1VjO.js} +1 -1
  37. package/ui/dist/assets/{journeyDiagram-JHISSGLW-0t985reH.js → journeyDiagram-JHISSGLW-jo8e3Vri.js} +1 -1
  38. package/ui/dist/assets/{kanban-definition-UN3LZRKU-vPlhgwPS.js → kanban-definition-UN3LZRKU-DsFcvv5g.js} +1 -1
  39. package/ui/dist/assets/main-DEdNYNxf.js +274 -0
  40. package/ui/dist/assets/{mermaid.core-C2wn2wM5.js → mermaid.core-CIyMeT5H.js} +4 -4
  41. package/ui/dist/assets/{mindmap-definition-RKZ34NQL-COKv8bQN.js → mindmap-definition-RKZ34NQL-Bl3ML0fg.js} +1 -1
  42. package/ui/dist/assets/{pieDiagram-4H26LBE5-CgVeawD6.js → pieDiagram-4H26LBE5-rCj5-rCc.js} +1 -1
  43. package/ui/dist/assets/{quadrantDiagram-W4KKPZXB-Bwpr8PxN.js → quadrantDiagram-W4KKPZXB-tF5l8Pj1.js} +1 -1
  44. package/ui/dist/assets/{requirementDiagram-4Y6WPE33-Cc8HFBxl.js → requirementDiagram-4Y6WPE33-CtAsbYzh.js} +1 -1
  45. package/ui/dist/assets/{sankeyDiagram-5OEKKPKP-B_1nSAK5.js → sankeyDiagram-5OEKKPKP-CYgylTyv.js} +1 -1
  46. package/ui/dist/assets/{sequenceDiagram-3UESZ5HK-hsYrUJza.js → sequenceDiagram-3UESZ5HK-D2FeAk8O.js} +1 -1
  47. package/ui/dist/assets/{stateDiagram-AJRCARHV-BMf4FL5O.js → stateDiagram-AJRCARHV-BhNt372S.js} +1 -1
  48. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-hesflu-P.js +1 -0
  49. package/ui/dist/assets/theme-CgUWrIXo.css +1 -0
  50. package/ui/dist/assets/theme-DBoBdw62.js +1 -0
  51. package/ui/dist/assets/{timeline-definition-PNZ67QCA-Cf3u1h2_.js → timeline-definition-PNZ67QCA-DYrj-JqE.js} +1 -1
  52. package/ui/dist/assets/{vennDiagram-CIIHVFJN-2uKO3x22.js → vennDiagram-CIIHVFJN-DAdImqHv.js} +1 -1
  53. package/ui/dist/assets/visual-editor-BHZk1CI4.js +220 -0
  54. package/ui/dist/assets/{wardley-L42UT6IY-BjLaoVtm.js → wardley-L42UT6IY-BfiflBRy.js} +1 -1
  55. package/ui/dist/assets/{wardleyDiagram-YWT4CUSO-DlrUKeJk.js → wardleyDiagram-YWT4CUSO-5HZM-go9.js} +1 -1
  56. package/ui/dist/assets/{xychartDiagram-2RQKCTM6-Bzbb3cqD.js → xychartDiagram-2RQKCTM6-ozNCw5n2.js} +1 -1
  57. package/ui/dist/graph.html +3 -3
  58. package/ui/dist/index.html +4 -4
  59. package/ui/dist/assets/channel-Q_-BqwUT.js +0 -1
  60. package/ui/dist/assets/classDiagram-4FO5ZUOK-CPrZx4R4.js +0 -1
  61. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-CPrZx4R4.js +0 -1
  62. package/ui/dist/assets/editor-DZbRkvnr.js +0 -211
  63. package/ui/dist/assets/main-Io6jccwi.js +0 -232
  64. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-BpaPdu-O.js +0 -1
  65. package/ui/dist/assets/theme-Dl8H1UuW.js +0 -1
  66. package/ui/dist/assets/theme-PE9lQ4bz.css +0 -1
  67. 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-DqY1unJF.js";import{a as mt,g as lt,h as xt,d as kt}from"./chunk-ND2GUHAM-BAURH6-3.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-CIyMeT5H.js";import{s as X}from"./transform-BwXaE9hv.js";import{d as it}from"./arc-B9D1Pvqi.js";import"./main-DEdNYNxf.js";import"./theme-DBoBdw62.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-CIyMeT5H.js";import{g as Ne}from"./chunk-FMBD7UC4-DqY1unJF.js";import"./main-DEdNYNxf.js";import"./theme-DBoBdw62.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,274 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visual-editor-BHZk1CI4.js","assets/editor-CTtDusro.js","assets/theme-DBoBdw62.js","assets/theme-CgUWrIXo.css","assets/mermaid.core-CIyMeT5H.js","assets/transform-BwXaE9hv.js"])))=>i.map(i=>d[i]);
2
+ import{p as Pt,s as Ct,e as qt,g as Tt,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 Re,t as Ot,v as Bt,w as jt,x as Kt,y as U,z as He,A as J,B as zt}from"./theme-DBoBdw62.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"},Ne="folder:";function pe(e){if(e.startsWith(Ne)){const t=e.slice(Ne.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 $,b,C,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(a){const p=a.ok?"check-ok":"check-fail",s=a.ok?"All checks passed":`${a.violations.length} issue(s)`;let o=`
26
+ <h2>Schema check</h2>
27
+ <p class="check-status ${p}">${s}</p>
28
+ `;if(a.violations.length>0){o+='<ul class="violation-list">';for(const c of a.violations)o+=`<li><code>${R(c.path)}</code> — ${R(c.message)}</li>`;o+="</ul>"}if(a.warnings.length>0){o+='<h3 class="warnings-title">Warnings</h3><ul class="warning-list">';for(const c of a.warnings)o+=`<li>${R(c)}</li>`;o+="</ul>"}n.innerHTML=o}function u(a){let p=`
29
+ <h2>Link health</h2>
30
+ <div class="link-health-stats">
31
+ <div class="link-health-stat"><span class="link-health-value">${a.orphanCount}</span> orphans</div>
32
+ <div class="link-health-stat"><span class="link-health-value">${a.brokenCount}</span> broken</div>
33
+ <div class="link-health-stat"><span class="link-health-value">${a.oneWayCount}</span> one-way</div>
34
+ </div>
35
+ `;if(a.brokenTargets.length>0){p+='<h3 class="warnings-title">Broken targets</h3><ul class="warning-list">';for(const s of a.brokenTargets)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}if(a.orphanSlugs.length>0){p+='<h3 class="warnings-title">Orphan pages</h3><ul class="warning-list">';for(const s of a.orphanSlugs)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}r.innerHTML=p}function y(a){var p;if(i.innerHTML="",a.length===0){i.innerHTML='<li class="placeholder">All docs have frontmatter</li>';return}for(const s of a){const o=document.createElement("li");o.className="queue-item",o.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=o.querySelector('[data-action="prepare"]'))==null||p.addEventListener("click",()=>{xt(s.relativePath,s.suggestedType).then(({result:c})=>{t.onNotify(`Prepared: ${c.slug}`),h()}).catch(c=>{t.onNotify(c instanceof Error?c.message:"Prepare failed",!0)})}),i.appendChild(o)}}function w(a){var p,s;if(l.innerHTML="",a.length===0){l.innerHTML='<li class="placeholder">No drafts in queue</li>';return}for(const o of a){const c=document.createElement("li");c.className="queue-item",c.innerHTML=`
44
+ <div class="queue-main">
45
+ <div class="queue-title">${R(o.title||o.slug)}</div>
46
+ <div class="meta">${R(o.slug)} · ${R(o.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=c.querySelector('[data-action="edit"]'))==null||p.addEventListener("click",()=>{t.onOpenDraft(o)}),(s=c.querySelector('[data-action="publish"]'))==null||s.addEventListener("click",()=>{de(o.id).then(({result:m})=>{t.onPublished(m.path),h()}).catch(m=>{t.onNotify(m instanceof Error?m.message:"Publish failed",!0)})}),l.appendChild(c)}}async function h(){try{const[a,p,{drafts:s},{files:o}]=await Promise.all([Tt(),Dt(),G(),Mt()]);d(a),u(p),y(o),w(s)}catch(a){n.innerHTML=`<p class="check-status check-fail">${R(a instanceof Error?a.message:"Failed to load")}</p>`}}return($=e.querySelector("#dash-refresh"))==null||$.addEventListener("click",()=>{h()}),(b=e.querySelector("#dash-prepare-all"))==null||b.addEventListener("click",()=>{Pt().then(({result:a})=>{t.onNotify(`Prepared ${a.prepared.length} file(s)`),h()}).catch(a=>{t.onNotify(a instanceof Error?a.message:"Prepare all failed",!0)})}),(C=e.querySelector("#dash-sync-links"))==null||C.addEventListener("click",()=>{Ct().then(({result:a})=>{const p=a.files.filter(s=>s.changed).length;t.onNotify(`Synced links in ${p} file(s)`),h()}).catch(a=>{t.onNotify(a instanceof Error?a.message:"Sync links failed",!0)})}),(k=e.querySelector("#dash-export"))==null||k.addEventListener("click",()=>{qt().then(({path:a})=>{t.onNotify(`Exported ${a}`)}).catch(a=>{t.onNotify(a instanceof Error?a.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 M(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">${M(t.label)}</span>`:t.crumbId?`${r}<button type="button" class="crumb" data-crumb="${M(t.crumbId)}">${M(t.label)}</button>`:`${r}<span class="crumb">${M(t.label)}</span>`}).join("")}function fe(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 ge(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: ${M(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"),u=e.querySelector("#ed-status-menu"),y=e.querySelector("#ed-type-chip"),w=e.querySelector("#ed-type-menu"),h=e.querySelector("#ed-catalog-hint"),$=e.querySelector("#ed-tags-chips"),b=e.querySelector("#ed-tags-input"),C=e.querySelector("#ed-related-chips"),k=e.querySelector("#ed-related-input"),a=e.querySelector("#ed-related-menu");let p=[...t.tags],s=[...t.related],o=t.status,c=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")),L(),D(),f(),E();function m(){r()}function L(){d.textContent=o,d.className=`status-chip props-chip-trigger status-${o}`,u.innerHTML=sn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function D(){y.textContent=c,h.textContent=pe(c),w.innerHTML=rn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function f(){$.innerHTML=p.map(S=>`<span class="tag-chip props-removable-chip">${M(S)}<button type="button" class="chip-remove" data-tag="${M(S)}" aria-label="Remove tag">×</button></span>`).join(""),$.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.tag;p=p.filter(T=>T!==g),f(),m()})})}function E(){C.innerHTML=s.map(S=>`<span class="related-chip props-removable-chip">${M(S)}<button type="button" class="chip-remove" data-slug="${M(S)}" aria-label="Remove related">×</button></span>`).join(""),C.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.slug;s=s.filter(T=>T!==g),E(),m()})})}function P(){u.classList.add("hidden"),w.classList.add("hidden"),a.classList.add("hidden")}d.addEventListener("click",()=>{u.classList.toggle("hidden")||(w.classList.add("hidden"),a.classList.add("hidden"))}),u.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(o=g.dataset.value??o,L(),u.classList.add("hidden"),m())}),y.addEventListener("click",()=>{w.classList.toggle("hidden")||(u.classList.add("hidden"),a.classList.add("hidden"))}),w.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(c=g.dataset.value??c,D(),w.classList.add("hidden"),m())}),i.addEventListener("input",m),b.addEventListener("keydown",S=>{if(S.key!=="Enter"&&S.key!==",")return;S.preventDefault();const g=b.value.trim().replace(/,$/,"");if(!g||p.includes(g)){b.value="";return}p.push(g),b.value="",f(),m()});function q(S){const g=nn(S,n).filter(T=>!s.includes(T.slug));if(g.length===0){a.classList.add("hidden");return}a.innerHTML=g.map(T=>`<button type="button" class="props-dropdown-item" data-slug="${M(T.slug)}" role="option">
104
+ <span class="wikilink-option-slug">${M(T.slug)}</span>
105
+ <span class="wikilink-option-title">${M(T.title)}</span>
106
+ </button>`).join(""),a.classList.remove("hidden")}return k.addEventListener("input",()=>{q(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(),a.classList.add("hidden"),m())}}),a.addEventListener("mousedown",S=>{S.preventDefault();const g=S.target.closest("[data-slug]");if(!g)return;const T=g.dataset.slug??"";T&&!s.includes(T)&&(s.push(T),k.value="",E(),a.classList.add("hidden"),m())}),document.addEventListener("click",S=>{const g=S.target;!d.contains(g)&&!u.contains(g)&&!y.contains(g)&&!w.contains(g)&&!k.contains(g)&&!a.contains(g)&&P()}),{getState:()=>({slug:i.value.trim(),type:c,status:o,tags:[...p],related:[...s]}),setRelated(S){s=[...new Set(S)],E(),m()}}}const on="modulepreload",ln=function(e){return"/"+e},Fe={},it=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){let d=function(w){return Promise.all(w.map(h=>Promise.resolve(h).then($=>({status:"fulfilled",value:$}),$=>({status:"rejected",reason:$}))))};document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),y=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));i=d(n.map(w=>{if(w=ln(w),w in Fe)return;Fe[w]=!0;const h=w.endsWith(".css"),$=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${w}"]${$}`))return;const b=document.createElement("link");if(b.rel=h?"stylesheet":on,h||(b.as="script"),b.crossOrigin="",b.href=w,y&&b.setAttribute("nonce",y),document.head.appendChild(b),h)return new Promise((C,k)=>{b.addEventListener("load",C),b.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${w}`)))})}))}function l(d){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=d,window.dispatchEvent(u),!u.defaultPrevented)throw d}return i.then(d=>{for(const u of d||[])u.status==="rejected"&&l(u.reason);return t().catch(l)})};let I=null,K=null;function ot(e,t,n,r,i=[]){var Se,Ee,Le,ke,$e,Pe,Ce,qe,Te,De,Me,xe;const l=i.map(v=>({slug:v.slug,title:v.title}));let d=null,u=n.body;const y=e.querySelector("#ed-title"),w=e.querySelector("#ed-save-status"),h=t.bodySlot.querySelector("#ed-visual-canvas"),$=document.createElement("div");$.id="publish-modal",$.className="modal hidden",$.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($);const b=document.createElement("div");b.id="view-md-modal",b.className="modal hidden",b.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(b);const C=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,()=>m());it(async()=>{const{mountVisualEditor:v}=await import("./visual-editor-BHZk1CI4.js");return{mountVisualEditor:v}},__vite__mapDeps([0,1,2,3])).then(({mountVisualEditor:v})=>{d=v(h,{initialMarkdown:n.body,docCandidates:l,onBodyChange:()=>m(),onError:r.onError})});let a=[];function p(){return(d==null?void 0:d.getMarkdownBody())??u}function s(){const v=k.getState();return{title:y.value,slug:v.slug,type:v.type,status:v.status,tags:v.tags,related:v.related,body:p()}}function o(v){w.textContent=v}async function c(){o("Saving…");const v=s();u=v.body,await Rt(n.id,v),o("Saved")}function m(){I&&clearTimeout(I),I=setTimeout(()=>{I=null,K=c().catch(v=>{o(""),r.onError(v instanceof Error?v.message:"Autosave failed")})},800)}async function L(){I&&(clearTimeout(I),I=null,K=c().catch(v=>{throw o(""),r.onError(v instanceof Error?v.message:"Autosave failed"),v})),K&&(await K,K=null)}y.addEventListener("input",()=>m()),y.addEventListener("change",()=>m());function D(){const v=e.querySelector("#publish-related"),x=e.querySelector("#publish-related-prompt"),_=e.querySelector("#publish-related-list"),H=k.getState();if(a=en(p(),H.related,l),a.length===0){v.classList.add("hidden");return}x.textContent=`Add ${a.length} body link(s) to related?`,_.innerHTML=a.map(ae=>{var Ae;const kt=((Ae=l.find($t=>$t.slug===ae))==null?void 0:Ae.title)??ae;return`<li><code>${M(ae)}</code> — ${M(kt)}</li>`}).join(""),v.classList.remove("hidden")}function f(){var x;if(a.length===0)return;const v=k.getState();k.setRelated([...new Set([...v.related,...a])]),a=[],(x=e.querySelector("#publish-related"))==null||x.classList.add("hidden")}(Se=e.querySelector("#publish-related-apply"))==null||Se.addEventListener("click",()=>{f()}),(Ee=e.querySelector("#publish-related-skip"))==null||Ee.addEventListener("click",()=>{var v;a=[],(v=e.querySelector("#publish-related"))==null||v.classList.add("hidden")});let E=null,P=null;function q(){$.classList.add("hidden"),E&&(document.removeEventListener("keydown",E),E=null)}function S(){$.classList.remove("hidden"),E||(E=v=>{v.key==="Escape"&&q()},document.addEventListener("keydown",E))}function g(){b.classList.add("hidden")}function T(){const v=b.querySelector("#view-md-content");v.textContent=p(),b.classList.remove("hidden")}async function se(){await L(),S(),D();const v=e.querySelector("#publish-target"),x=e.querySelector("#publish-diff"),_=k.getState();v.textContent=`docs/.../${_.slug}.md`,x.textContent="Loading diff…";try{const H=await Ht(n.id);H.targetPath&&(v.textContent=H.targetPath),x.textContent=H.diff}catch(H){x.textContent=H instanceof Error?H.message:"Diff unavailable"}}async function Lt(){const v=e.querySelector("#ed-publish");v.setAttribute("aria-busy","true"),v.disabled=!0;try{await L();const{result:x}=await de(n.id);r.onPublished(x.path)}finally{v.removeAttribute("aria-busy"),v.disabled=!1}}(Le=e.querySelector("#ed-publish"))==null||Le.addEventListener("click",()=>{Lt().catch(v=>{r.onError(v instanceof Error?v.message:"Publish failed")})}),(ke=e.querySelector("#ed-publish-review"))==null||ke.addEventListener("click",()=>{C.classList.add("hidden"),se().catch(v=>{r.onError(v instanceof Error?v.message:"Failed to prepare publish")})}),($e=e.querySelector("#ed-publish-menu-btn"))==null||$e.addEventListener("click",()=>{var x;const v=C.classList.toggle("hidden");(x=e.querySelector("#ed-publish-menu-btn"))==null||x.setAttribute("aria-expanded",v?"false":"true")});const be=v=>{var _,H;const x=v.target;!C.contains(x)&&!((_=e.querySelector("#ed-publish-menu-btn"))!=null&&_.contains(x))&&(C.classList.add("hidden"),(H=e.querySelector("#ed-publish-menu-btn"))==null||H.setAttribute("aria-expanded","false"))};document.addEventListener("click",be),(Pe=e.querySelector("#ed-view-md"))==null||Pe.addEventListener("click",()=>{T()}),(Ce=b.querySelector("#view-md-close"))==null||Ce.addEventListener("click",()=>{g()}),b.addEventListener("click",v=>{v.target===b&&g()}),(qe=b.querySelector("#view-md-copy"))==null||qe.addEventListener("click",()=>{navigator.clipboard.writeText(p()).catch(v=>{r.onError(v instanceof Error?v.message:"Copy failed")})}),(Te=e.querySelector("#publish-cancel"))==null||Te.addEventListener("click",()=>{q()}),$.addEventListener("click",v=>{v.target===$&&q()}),(De=e.querySelector("#publish-confirm"))==null||De.addEventListener("click",()=>{(async()=>{await L();const{result:v}=await de(n.id);q(),r.onPublished(v.path)})().catch(v=>{r.onError(v instanceof Error?v.message:"Publish failed")})});const we=()=>{d==null||d.destroy(),r.onClosed()};return(Me=e.querySelector("#ed-close"))==null||Me.addEventListener("click",we),(xe=e.querySelector("#ed-discard"))==null||xe.addEventListener("click",()=>{confirm("Discard this draft?")&&(d==null||d.destroy(),At(n.id).then(()=>r.onDeleted()).catch(v=>{r.onError(v instanceof Error?v.message:"Delete failed")}))}),P=v=>{v.key==="Escape"&&$.classList.contains("hidden")&&b.classList.contains("hidden")&&we()},document.addEventListener("keydown",P),{destroy:()=>{d==null||d.destroy(),document.removeEventListener("click",be),P&&document.removeEventListener("keydown",P),q(),g(),$.remove(),b.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 Ie(e,t,n,r=[]){const i=ne(),l=fe(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 ge(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 he(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=he(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=he(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 We(e){const t=e.toLowerCase();return gn.some(n=>t.endsWith(n))}function hn(e,t){const n=he(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("..")&&We(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 u=d.join("/");return u&&We(u)?u:null}function mn(e,t){const n=hn(e,t);return n?`/api/assets/${n.split("/").map(encodeURIComponent).join("/")}`:null}let _e=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-CIyMeT5H.js").then(i=>i.ba),__vite__mapDeps([4,5,1]));_e!==n&&(r.default.initialize({startOnLoad:!1,theme:n,securityLevel:"loose"}),_e=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 Ue=!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(){Ue||(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}}}),Ue=!0)}function wn(e,t){bn(),W=t??null;try{return et.parse(yn(e),{async:!1})}finally{W=null}}const me="slug",ct="path",Sn="draft";function ve(){const e=new URLSearchParams(window.location.search).get(me);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=ve();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(me,e),t.toString()}function Pn(e,t="push"){const n=ut();n.searchParams.delete(ct),n.searchParams.set(me,e);const r={slug:e};t==="replace"?history.replaceState(r,"",n):history.pushState(r,"",n)}function Cn(e){const t=()=>{e(ve())};return window.addEventListener("popstate",t),()=>window.removeEventListener("popstate",t)}function qn(e,t){if(t==="json")try{const n=JSON.parse(e);return JSON.stringify(n,null,2)}catch{return e}return e}function Tn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Dn(e,t){const n=qn(e,t);return`<pre class="structured-preview ${t==="json"?"structured-preview--json":"structured-preview--yaml"}"><code>${Tn(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"):[],u=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-${M(n)}">${M(n)}</span></dd>
164
+ <dt>Type</dt><dd>${M(r)}</dd>
165
+ ${i?`<dt>Domain</dt><dd>${M(i)}</dd>`:""}
166
+ <dt>Format</dt><dd>${M(u)}</dd>
167
+ ${l.length>0?`<dt>Tags</dt><dd>${l.map(y=>`<span class="tag-chip">${M(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="${M(y)}">${M(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">${M(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 Oe(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:pe(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:"",u=ne(),y=fe(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(u,{showDiscard:!0}),mainHtml:'<div id="ed-visual-canvas"></div>',railHtml:at({forkedFrom:n.forked_from}),focusMode:u});ge(e,u),V=ot(e,y,n,{onPublished:w=>{(async()=>{var h;if(await r.onPublished(w),(h=r.onDraftsChanged)==null||h.call(r),t.slug){const $=await r.onReloadDoc(t.slug);B(e,$,r)}})()},onClosed:()=>{(async()=>{var w;if((w=r.onDraftsChanged)==null||w.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 w;(w=r.onDraftsChanged)==null||w.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 p,s,o;re();const r=t.frontmatter??{},i=typeof r.title=="string"?r.title:t.slug??"",l=typeof r.type=="string"?r.type:"",d=ne(),u=t.contentKind??"markdown",y=u==="json"||u==="yaml",w=fe(e,{rootClass:"workspace-main workspace-page",breadcrumbs:pt(t,i,l),titleHtml:`<h1 class="doc-title reader-title${y?"":" reader-title--editable"}" tabindex="0">${M(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${y?"":" reader-body--editable"}">
188
+ <div id="tab-preview" class="markdown-preview reader-preview"></div>
189
+ <p class="reader-edit-hint${y?" hidden":""}">Click anywhere to edit</p>
190
+ <section id="reader-backlinks" class="reader-backlinks hidden" aria-label="Backlinks"></section>
191
+ </div>
192
+ `,railHtml:Mn(t,r),focusMode:d});ge(e,d),Xt(e,{root:()=>{var c;return(c=n.onNavigateRoot)==null?void 0:c.call(n)},catalog:()=>{var c;return(c=n.onNavigateCatalog)==null?void 0:c.call(n)}});const h=w.bodySlot.querySelector("#tab-preview");if(y)h.innerHTML=Dn(t.body??"",u);else{const c=n.docRelativePath&&n.slugByRelative?{docRelativePath:n.docRelativePath,slugByRelative:n.slugByRelative}:void 0;h.innerHTML=wn(t.body??"",c),vn(h),h.querySelectorAll("a.wikilink").forEach(m=>{m.addEventListener("click",L=>{L.preventDefault();const D=m.dataset.slug;D&&e.dispatchEvent(new CustomEvent("navigate-slug",{detail:{slug:D}}))})}),h.querySelectorAll("a.md-link-unresolved").forEach(m=>{m.addEventListener("click",L=>{L.preventDefault()})})}const $=w.railSlot.querySelector("#tab-frontmatter");$.innerHTML='<pre class="frontmatter-yaml"></pre>',$.querySelector("pre").textContent=JSON.stringify(r,null,2);const b=w.railSlot.querySelector("#tab-agent");b.innerHTML='<pre class="agent-json"></pre>',b.querySelector("pre").textContent=JSON.stringify(t.agentShape,null,2),xn(e),Oe(e),(p=e.querySelector("#copy-path"))==null||p.addEventListener("click",()=>{t.path&&navigator.clipboard.writeText(t.path)}),(s=e.querySelector("#copy-link"))==null||s.addEventListener("click",()=>{var c;t.slug&&(navigator.clipboard.writeText($n(t.slug)),(c=n.onCopyLink)==null||c.call(n))});const C=()=>{if(!t.slug||y)return;const c=w.bodySlot;c.innerHTML='<p class="reader-loading">Opening editor…</p>',Ze(t.slug).then(({draft:m})=>{var L;(L=n.onDraftsChanged)==null||L.call(n),ft(e,t,m,n)}).catch(m=>{n.onError(m instanceof Error?m.message:"Edit failed"),B(e,t,n)})};(o=e.querySelector("#edit-page"))==null||o.addEventListener("click",C);const k=e.querySelector(".reader-title--editable");k==null||k.addEventListener("click",C),k==null||k.addEventListener("keydown",c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),C())});const a=e.querySelector(".reader-body--editable");a==null||a.addEventListener("click",c=>{c.target.closest("a, button, .reader-backlinks")||C()}),t.slug&&!y&&Nt(t.slug).then(({backlinks:c})=>{const m=w.bodySlot.querySelector("#reader-backlinks");!m||c.length===0||(m.classList.remove("hidden"),m.innerHTML=`
193
+ <h2 class="reader-backlinks-title">Backlinks</h2>
194
+ <div class="reader-backlinks-list">
195
+ ${c.map(L=>`<button type="button" class="related-chip" data-slug="${M(L.slug)}">${M(L.title)} <span class="backlink-kind">${M(L.kind)}</span></button>`).join("")}
196
+ </div>
197
+ `,Oe(e))}).catch(()=>{})}function N(e,t,n){if(re(),!t||!t.found){e.className="workspace-main",e.innerHTML=`
198
+ <div class="workspace-empty">
199
+ <h1>Knowledge</h1>
200
+ <p class="placeholder">Select a page from the tree or use the ⋯ menu to create one.</p>
201
+ </div>
202
+ `;return}B(e,t,n)}function Be(e,t,n,r){ft(e,t,n,r)}function je(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 ue(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 e.indexPageSlug?ue(e.indexPageType??"wiki-page",e.indexPageContentKind??"markdown"):Fn()}function ye(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Wn(e){return ye(e)}function ht(e,t){var d;const n=document.createElement("div");n.className="modal",n.innerHTML=`
203
+ <div class="modal-card tree-page-modal" role="dialog" aria-modal="true">
204
+ <h2 class="modal-title">${ye(e)}</h2>
205
+ ${t}
206
+ <div class="modal-actions">
207
+ <button type="button" class="btn-ghost" data-action="cancel">Отмена</button>
208
+ <button type="button" class="btn-primary" data-action="create">Создать</button>
209
+ </div>
210
+ </div>
211
+ `;const r=()=>{n.remove()};n.querySelector(".modal-card").addEventListener("click",u=>{u.stopPropagation()}),(d=n.querySelector('[data-action="cancel"]'))==null||d.addEventListener("click",r),n.addEventListener("click",u=>{u.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 u=t.value.trim();if(!u){t.focus();return}i&&!i()||(n(),r(u))};(d=e.querySelector('[data-action="create"]'))==null||d.addEventListener("click",l),t.addEventListener("keydown",u=>{u.key==="Enter"&&(u.preventDefault(),l()),u.key==="Escape"&&n()})}function _n(e){const t=`
212
+ <label class="modal-field">
213
+ <span class="modal-label">Имя (без .md)</span>
214
+ <input type="text" class="modal-input" id="tree-page-name" autocomplete="off" />
215
+ </label>
216
+ `,{backdrop:n,nameInput:r,close:i}=ht("Новый файл",t);mt(n,r,i,e)}function Un(e,t){var y;const n=`
217
+ <label class="modal-field">
218
+ <span class="modal-label">Имя (без .md)</span>
219
+ <input type="text" class="modal-input" id="tree-page-name" autocomplete="off" />
220
+ </label>
221
+ <div class="modal-field">
222
+ <span class="modal-label" id="tree-template-label">Шаблон</span>
223
+ <div class="tree-template-list" role="listbox" aria-labelledby="tree-template-label">
224
+ ${e.map((w,h)=>`
225
+ <button
226
+ type="button"
227
+ class="tree-template-item${h===0?" is-selected":""}"
228
+ role="option"
229
+ aria-selected="${h===0?"true":"false"}"
230
+ data-template-id="${Wn(w.id)}"
231
+ >${ye(w.label)}</button>`).join("")}
232
+ </div>
233
+ </div>
234
+ `,{backdrop:r,nameInput:i,close:l}=ht("Новый файл из шаблона",n),d=r.querySelector(".tree-template-list");let u=((y=e[0])==null?void 0:y.id)??"";d.addEventListener("click",w=>{const h=w.target.closest(".tree-template-item");h!=null&&h.dataset.templateId&&(u=h.dataset.templateId,d.querySelectorAll(".tree-template-item").forEach($=>{const b=$===h;$.classList.toggle("is-selected",b),$.setAttribute("aria-selected",String(b))}))}),mt(r,i,l,w=>{u&&t(w,u)},()=>!!u)}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(a){return a.target.closest("[data-drop-dir]")}function l(){n&&(n.classList.remove("tree-drop-target","tree-drop-invalid"),n=null)}function d(a,p){n&&n!==a&&n.classList.remove("tree-drop-target","tree-drop-invalid"),n=a,a.classList.toggle("tree-drop-target",p),a.classList.toggle("tree-drop-invalid",!p)}function u(a){const p=a.dataset.dropDir;return p===void 0?null:p}async function y(a,p){var s,o,c,m,L,D;try{if(a.kind==="page"){const{result:E}=await It(a.path,p);(s=t.onTreeChanged)==null||s.call(t),E.cascadeUpdated.length>0?(o=t.onNotify)==null||o.call(t,`Moved page; updated links in ${E.cascadeUpdated.length} file(s).`):E.inboundWarnings.length>0&&((c=t.onError)==null||c.call(t,`${E.inboundWarnings.length} page(s) still reference old slug "${E.previousSlug}".`));return}const{result:f}=await Wt(a.path,p);(m=t.onTreeChanged)==null||m.call(t),f.cascadeUpdated.length>0&&((L=t.onNotify)==null||L.call(t,`Moved folder; updated links in ${f.cascadeUpdated.length} file(s).`))}catch(f){(D=t.onError)==null||D.call(t,f instanceof Error?f.message:"Move failed")}}const w=a=>{const p=a.target.closest(".tree-row[data-drag-kind]");if(!p||!a.dataTransfer)return;if(a.target.closest(".tree-menu, .tree-toggle")){a.preventDefault();return}const s=p.dataset.dragKind,o=p.dataset.dragPath;if(!s||!o){a.preventDefault();return}const c={kind:s,path:o};r=c,a.dataTransfer.setData(vt,JSON.stringify(c)),a.dataTransfer.setData("text/plain",o),a.dataTransfer.effectAllowed="move",p.classList.add("is-dragging")},h=a=>{r=null;const p=a.target.closest(".tree-row");p==null||p.classList.remove("is-dragging"),l()},$=a=>{!r||!i(a)||a.preventDefault()},b=a=>{const p=r??Ke(a),s=i(a);if(!p||!s)return;const o=u(s);if(o===null)return;const c=p.kind==="page"?ze(p,o):Ve(p,o);a.preventDefault(),a.dataTransfer.dropEffect=c?"move":"none";const m=s.classList.contains("tree-row")?s:s.closest(".tree-row");m&&d(m,c)},C=a=>{const p=i(a);if(!p||p.contains(a.relatedTarget))return;const s=p.classList.contains("tree-row")?p:p.closest(".tree-row");s&&n===s&&l()},k=a=>{a.preventDefault(),a.stopPropagation();const p=r??Ke(a),s=i(a),o=s?u(s):null;l(),r=null,!(!p||o===null||!(p.kind==="page"?ze(p,o):Ve(p,o)))&&y(p,o)};return e.addEventListener("dragstart",w),e.addEventListener("dragend",h),e.addEventListener("dragenter",$),e.addEventListener("dragover",b),e.addEventListener("dragleave",C),e.addEventListener("drop",k),()=>{r=null,e.removeEventListener("dragstart",w),e.removeEventListener("dragend",h),e.removeEventListener("dragenter",$),e.removeEventListener("dragover",b),e.removeEventListener("dragleave",C),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,a,p,s;Vn();const{kind:r,folderPath:i,page:l,templates:d,resolveCreateParent:u}=t,y=r==="page"||r==="folder"&&!!i,w=d.length>0,h=document.createElement("div");h.className="tree-create-menu tree-context-menu",h.innerHTML=`
235
+ <button type="button" data-action="folder">Добавить директорию</button>
236
+ <button type="button" data-action="page">Создать файл</button>
237
+ ${w?'<button type="button" data-action="template">Создать из шаблона</button>':""}
238
+ ${y?'<button type="button" data-action="delete" class="tree-menu-danger">Удалить</button>':""}
239
+ `;const $=e.getBoundingClientRect();h.style.top=`${$.bottom+4}px`,h.style.left=`${Math.max(8,$.right-200)}px`,document.body.appendChild(h);const b=()=>h.remove(),C=o=>{h.contains(o.target)||(b(),document.removeEventListener("click",C))};setTimeout(()=>document.addEventListener("click",C),0),(k=h.querySelector('[data-action="page"]'))==null||k.addEventListener("click",()=>{b(),(async()=>{const o=await u();o!==null&&_n(c=>{Ye(o,c,void 0,n)})})()}),(a=h.querySelector('[data-action="template"]'))==null||a.addEventListener("click",()=>{b(),(async()=>{const o=await u();o!==null&&Un(d,(c,m)=>{Ye(o,c,m,n)})})()}),(p=h.querySelector('[data-action="folder"]'))==null||p.addEventListener("click",()=>{b();const o=window.prompt("Имя директории:");o!=null&&o.trim()&&(async()=>{const c=await u();c!==null&&Ut(c,o.trim()).then(()=>{var m;return(m=n.onTreeChanged)==null?void 0:m.call(n)}).catch(m=>{var L;(L=n.onError)==null||L.call(n,m instanceof Error?m.message:"Create folder failed")})})()}),(s=h.querySelector('[data-action="delete"]'))==null||s.addEventListener("click",()=>{if(b(),r==="page"&&l){if(!window.confirm(`Удалить «${l.title}»?`))return;Re(l.relativePath,"page").then(({result:o})=>{var c,m,L,D;(c=n.onFsDeleted)==null||c.call(n,[o.slug]),(m=n.onTreeChanged)==null||m.call(n),o.cascadeUpdated.length>0?(L=n.onNotify)==null||L.call(n,`Deleted ${o.slug}; cleaned links in ${o.cascadeUpdated.length} file(s).`):o.inboundWarnings.length>0&&((D=n.onError)==null||D.call(n,`${o.inboundWarnings.length} page(s) still reference deleted slug "${o.slug}".`))}).catch(o=>{var c;(c=n.onError)==null||c.call(n,o instanceof Error?o.message:"Delete failed")});return}if(r==="folder"&&i){if(!window.confirm(`Удалить «${i}» и всё содержимое?`))return;Re(i,"folder").then(({result:o})=>{var c,m,L,D;(c=n.onFsDeleted)==null||c.call(n,o.deletedSlugs),(m=n.onTreeChanged)==null||m.call(n),o.cascadeUpdated.length>0?(L=n.onNotify)==null||L.call(n,`Deleted folder; cleaned links in ${o.cascadeUpdated.length} file(s).`):o.inboundWarnings.length>0&&((D=n.onError)==null||D.call(n,`${o.inboundWarnings.length} page(s) still reference deleted page(s).`))}).catch(o=>{var c;(c=n.onError)==null||c.call(n,o instanceof Error?o.message:"Delete folder failed")})}})}function Jn(e,t,n,r){var p;e.innerHTML=`
240
+ <nav id="docs-tree" class="docs-tree" aria-label="Documentation tree"></nav>
241
+ <section class="catalog-section catalog-drafts">
242
+ <button type="button" class="catalog-header" data-catalog="__drafts__" aria-expanded="true">
243
+ <span class="catalog-chevron" aria-hidden="true">▾</span>
244
+ <span class="catalog-icon catalog-icon--draft" aria-hidden="true">✎</span>
245
+ <span class="catalog-label">Drafts</span>
246
+ <span class="catalog-count">${n.length}</span>
247
+ </button>
248
+ <ul id="draft-list" class="catalog-pages"></ul>
249
+ </section>
250
+ `;const i=e.querySelector("#docs-tree"),l=e.querySelector("#draft-list"),d=zn();let u=null,y=null,w=null;function h(s){d.add("");let o="";for(const c of s.split("/").filter(Boolean))o=o?`${o}/${c}`:c,d.add(o);z(d)}async function $(s,o){var c;try{u||(u=(await _t()).templates),Gn(s,{...o,templates:u},r)}catch(m){(c=r.onError)==null||c.call(r,m instanceof Error?m.message:"Failed to open menu")}}function b(s,o){var P,q,S;const c=!!s.childFolderPath,m=s.childFolderPath??"",L=c&&d.has(m),D=document.createElement("div");D.className=c?"tree-folder tree-page-folder":"tree-page";const f=document.createElement("div");f.className="tree-row",f.style.paddingLeft=`${o*12+8}px`,s.slug===y&&f.classList.add("active"),f.innerHTML=c?`
251
+ <button type="button" class="tree-toggle" aria-expanded="${L}">${L?"▾":"▸"}</button>
252
+ <button type="button" class="tree-label">
253
+ ${ue(s.type,s.contentKind)}
254
+ <span class="tree-title">${X(s.title)}</span>
255
+ </button>
256
+ <button type="button" class="tree-menu" title="Actions">⋯</button>
257
+ `:`
258
+ <span class="tree-spacer" aria-hidden="true"></span>
259
+ <button type="button" class="tree-label">
260
+ ${ue(s.type,s.contentKind)}
261
+ <span class="tree-title">${X(s.title)}</span>
262
+ </button>
263
+ <button type="button" class="tree-menu" title="Actions">⋯</button>
264
+ `;const E=s.relativePath.includes("/")?s.relativePath.slice(0,s.relativePath.lastIndexOf("/")):"";if(c&&((P=f.querySelector(".tree-toggle"))==null||P.addEventListener("click",g=>{g.stopPropagation(),d.has(m)?d.delete(m):d.add(m),z(d),k()})),(q=f.querySelector(".tree-menu"))==null||q.addEventListener("click",g=>{g.stopPropagation(),$(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,w=null,k(),a(),r.onSelectSlug(s.slug)}),Ge(f,"page",s.relativePath),s.childFolderPath&&Je(f,s.childFolderPath),D.appendChild(f),c&&L&&s.children){const g=document.createElement("div");g.className="tree-children",s.childFolderPath&&Xe(g,s.childFolderPath);for(const T of s.children)T.kind==="folder"?g.appendChild(C(T,o+1)):g.appendChild(b(T,o+1));D.appendChild(g)}return D}function C(s,o){var D,f,E;const c=document.createElement("div");c.className="tree-folder";const m=d.has(s.relativePath),L=document.createElement("div");if(L.className="tree-row",L.style.paddingLeft=`${o*12+8}px`,L.innerHTML=`
265
+ <button type="button" class="tree-toggle" aria-expanded="${m}">${m?"▾":"▸"}</button>
266
+ <button type="button" class="tree-label">
267
+ ${In(s)}
268
+ <span class="tree-title">${X(s.name)}</span>
269
+ </button>
270
+ <button type="button" class="tree-menu" title="Actions">⋯</button>
271
+ `,(D=L.querySelector(".tree-toggle"))==null||D.addEventListener("click",P=>{P.stopPropagation(),d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(f=L.querySelector(".tree-label"))==null||f.addEventListener("click",()=>{d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(E=L.querySelector(".tree-menu"))==null||E.addEventListener("click",P=>{P.stopPropagation(),$(P.currentTarget,{kind:"folder",parentPath:s.relativePath,folderPath:s.relativePath,resolveCreateParent:async()=>s.relativePath})}),Ge(L,"folder",s.relativePath),Je(L,s.relativePath),c.appendChild(L),m){const P=document.createElement("div");P.className="tree-children",Xe(P,s.relativePath);for(const q of s.children??[])q.kind==="folder"?P.appendChild(C(q,o+1)):P.appendChild(b(q,o+1));c.appendChild(P)}return c}function k(){i.innerHTML="",i.appendChild(C(t,0))}function a(){if(l.innerHTML="",n.length===0){l.innerHTML='<li class="placeholder page-item">No drafts</li>';return}for(const s of n){const o=document.createElement("li");o.className="page-item",s.id===w&&o.classList.add("active"),o.innerHTML=`<span class="page-title">${X(s.title||s.slug)}</span><span class="status-chip status-draft">draft</span>`,o.addEventListener("click",()=>{var c;w=s.id,y=null,k(),a(),(c=r.onSelectDraft)==null||c.call(r,s)}),l.appendChild(o)}}k(),a(),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"),o=e.querySelector('[data-catalog="__drafts__"]'),c=(s==null?void 0:s.classList.toggle("hidden"))===!1;o==null||o.setAttribute("aria-expanded",String(c));const m=o==null?void 0:o.querySelector(".catalog-chevron");m&&(m.textContent=c?"▾":"▸")}),e.setActiveSlug=s=>{y=s,w=null,d.add(""),z(d),k(),a()},e.setActiveDraft=s=>{w=s,y=null,k(),a()},e.refreshDrafts=s=>{n.length=0,n.push(...s),a();const o=e.querySelector(".catalog-drafts .catalog-count");o&&(o.textContent=String(n.length))},e.refreshTree=(s,o)=>{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(...o??[]),k(),a()}}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 u=b=>{if(!i)return;const C=b.clientX-l;Y(e,ee(d+C))},y=()=>{if(!i)return;i=!1,n.classList.remove("is-dragging"),document.body.style.cursor="",document.body.style.userSelect="";const b=ie(e);localStorage.setItem(Z,String(b)),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",y)},w=b=>{b.button===0&&(i=!0,l=b.clientX,d=ie(e),n.classList.add("is-dragging"),document.body.style.cursor="col-resize",document.body.style.userSelect="none",n.setPointerCapture(b.pointerId),window.addEventListener("pointermove",u),window.addEventListener("pointerup",y))},h=b=>{const C=b.shiftKey?40:16;let k=ie(e);if(b.key==="ArrowLeft")k=ee(k-C);else if(b.key==="ArrowRight")k=ee(k+C);else if(b.key==="Home")k=St;else if(b.key==="End")k=Et;else return;b.preventDefault(),Y(e,k),localStorage.setItem(Z,String(k))},$=()=>{Y(e,j),localStorage.setItem(Z,String(j))};return n.addEventListener("pointerdown",w),n.addEventListener("keydown",h),n.addEventListener("dblclick",$),()=>{n.removeEventListener("pointerdown",w),n.removeEventListener("keydown",h),n.removeEventListener("dblclick",$),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 D;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 u=[],y=null,w=[],h="workspace",$=null,b=null;async function C(f){var q;const[{tree:E},{drafts:P}]=await Promise.all([He(),G()]);return(q=f.refreshTree)==null||q.call(f,E,P),w=je(E),E}function k(f){if(h=f,r.setAttribute("aria-pressed",String(f==="dashboard")),f==="dashboard"){$=Gt(n,{onOpenDraft:P=>{k("workspace"),o(P)},onPublished:P=>{(async()=>(await C(t),await a(),A(`Published: ${P}`)))()},onNotify:(P,q)=>A(P,q)}).refresh;return}$=null,re(),N(n,null,p())}r.addEventListener("click",()=>{k(h==="dashboard"?"workspace":"dashboard")}),Rn({onNext:()=>{if(h!=="workspace"||!y)return;const f=w.indexOf(y);f>=0&&f<w.length-1&&L(w[f+1])},onPrev:()=>{if(h!=="workspace"||!y)return;const f=w.indexOf(y);f>0&&L(w[f-1])},onFocusSearch:()=>{l.focus(),l.select()},onEdit:()=>{h==="workspace"&&y&&m(y)}});async function a(){const f=await zt(),P=await(await fetch("/api/stats")).json(),{drafts:q}=await G(),S=P.brokenRelatedCount>0?` · ${P.brokenRelatedCount} broken links`:"";i.textContent=`v${f.version} · ${f.docCount} pages · ${q.length} drafts${S}`}function p(){return{docIndex:u,onPublished:async f=>{u=(await U()).docs,await C(t),await a(),$==null||$(),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 P of f){const q=u.find(g=>g.slug===P.slug),S=document.createElement("li");S.innerHTML=`
272
+ <div class="search-result-title">${P.title}</div>
273
+ <div class="search-result-meta">${pe((q==null?void 0:q.type)??"")} · ${P.snippet}</div>
274
+ `,S.addEventListener("click",()=>{d.classList.add("hidden"),l.value="",L(P.slug)}),E.appendChild(S)}d.innerHTML="",d.appendChild(E),d.classList.remove("hidden")}l.addEventListener("input",()=>{const f=l.value.trim();if(b&&clearTimeout(b),!f){d.classList.add("hidden"),d.innerHTML="";return}b=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 o(f){var P;k("workspace"),(P=t.setActiveDraft)==null||P.call(t,f.id);const E=f.forked_from??(u.some(q=>q.slug===f.slug)?f.slug:null);if(E){J(E).then(q=>{Be(n,q,f,{...p(),docRelativePath:le(u,E),slugByRelative:oe(u),onPublished:async S=>{await p().onPublished(S),await L(f.slug)}})}).catch(()=>{Ie(n,f,c(),u)});return}Ie(n,f,c(),u)}function c(){return{onPublished:f=>{(async()=>{u=(await U()).docs,await C(t),await a(),$==null||$(),A(`Published: ${f}`);const P=u.find(q=>q.slug===draft.slug);P&&await L(P.slug)})()},onClosed:()=>{N(n,null,p())},onDeleted:()=>{(async()=>(await C(t),N(n,null,p())))()},onError:f=>A(f,!0)}}async function m(f){if(h==="workspace")try{const E=await J(f),{draft:P}=await Ze(f);await Qe(t),Be(n,E,P,{...p(),docRelativePath:le(u,f),slugByRelative:oe(u)})}catch(E){A(E instanceof Error?E.message:"Edit failed",!0)}}async function L(f,E={}){var S;const P=E.updateUrl??!0,q=E.urlMode??"push";h==="dashboard"&&k("workspace"),y=f,(S=t.setActiveSlug)==null||S.call(t,f);try{const g=await J(f),T=le(u,f);N(n,g,{...p(),docRelativePath:T,slugByRelative:oe(u)}),P&&Pn(f,q)}catch(g){A(g instanceof Error?g.message:"Failed to load doc",!0)}}n.addEventListener("navigate-slug",(f=>{L(f.detail.slug)}));try{await a();const[f,{tree:E},{drafts:P}]=await Promise.all([U(),He(),G()]);u=f.docs,w=je(E),Jn(t,E,P,{onSelectSlug:g=>{L(g)},onSelectDraft:g=>o(g),onTreeChanged:()=>{(async()=>(u=(await U()).docs,await C(t),await a()))()},onFsDeleted:g=>{(async()=>(u=(await U()).docs,y&&g.includes(y)&&(y=null,N(n,null,p())),await C(t),await a()))()},onError:g=>A(g,!0),onNotify:g=>A(g)}),Qn(()=>{(async()=>{try{u=(await U()).docs,await C(t),await a(),y&&!u.some(T=>T.slug===y)&&(y=null,N(n,null,p()))}catch{}})()}),Cn(g=>{if(!g){y=null,N(n,null,p());return}u.some(T=>T.slug===g)&&L(g,{updateUrl:!1})}),N(n,null,p());const q=ve(),S=Ln();if(S){const g=P.find(T=>T.id===S);g?o(g):A(`Unknown draft: ${S}`,!0)}else if(q)u.some(g=>g.slug===q)?await L(q,{updateUrl:!1}):A(`Unknown page: ${q}`,!0);else{const g=En(),T=g?(D=u.find(se=>se.relativePath===g))==null?void 0:D.slug:void 0;g&&T?await L(T,{updateUrl:!1}):g?A(`Unknown path: ${g}`,!0):E.indexPageSlug?await L(E.indexPageSlug,{urlMode:"replace"}):u.length>0&&u[0]&&await L(u[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};