@duckcodeailabs/dql-cli 1.12.11 → 1.13.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 (107) hide show
  1. package/dist/apps-api.d.ts +151 -3
  2. package/dist/apps-api.d.ts.map +1 -1
  3. package/dist/apps-api.js +675 -97
  4. package/dist/apps-api.js.map +1 -1
  5. package/dist/args.d.ts +2 -0
  6. package/dist/args.d.ts.map +1 -1
  7. package/dist/args.js +3 -0
  8. package/dist/args.js.map +1 -1
  9. package/dist/assets/dql-notebook/assets/AgentAnswerCard-c8QUo6NH.js +5 -0
  10. package/dist/assets/dql-notebook/assets/{AgentLogPage-hzHqpD3-.js → AgentLogPage-D6fgEAEy.js} +1 -1
  11. package/dist/assets/dql-notebook/assets/{AiBuildDialog-BQRWoxp9.js → AiBuildDialog-8miXFPse.js} +1 -1
  12. package/dist/assets/dql-notebook/assets/{AiBuildResult-D9t_4sQl.js → AiBuildResult-DPJ_SI0R.js} +3 -3
  13. package/dist/assets/dql-notebook/assets/AiSidePanel-NVA6lZnn.js +6 -0
  14. package/dist/assets/dql-notebook/assets/AnalyticsHome-DgwnRW71.js +6 -0
  15. package/dist/assets/dql-notebook/assets/AppsView-B6LYUpgm.js +4578 -0
  16. package/dist/assets/dql-notebook/assets/BlockStudio--jNw9XUI.js +60 -0
  17. package/dist/assets/dql-notebook/assets/{BusinessArtifactView-CnTbFVGT.js → BusinessArtifactView-DtRMiaF4.js} +1 -1
  18. package/dist/assets/dql-notebook/assets/DbtFirstModelingPage-DhBsLCYr.js +22 -0
  19. package/dist/assets/dql-notebook/assets/GitPage-CazC-eTR.js +7 -0
  20. package/dist/assets/dql-notebook/assets/GlobalAiRail-1Tgweuu2.js +1 -0
  21. package/dist/assets/dql-notebook/assets/GovernedContextPage-C7qGrH3d.js +16 -0
  22. package/dist/assets/dql-notebook/assets/{HelpDocsPage-CL0vbSER.js → HelpDocsPage-DMHPsVqP.js} +1 -1
  23. package/dist/assets/dql-notebook/assets/{HomePage-DzAucwBW.js → HomePage-DcSI4dnU.js} +1 -1
  24. package/dist/assets/dql-notebook/assets/LineageDAG-BJ6xz06u.js +1 -0
  25. package/dist/assets/dql-notebook/assets/{LineageDetailView-DdVH-nz6.js → LineageDetailView-8WrQm-MF.js} +1 -1
  26. package/dist/assets/dql-notebook/assets/{LineageDrawer-BvrVZNKY.js → LineageDrawer-hnqCW_t-.js} +1 -1
  27. package/dist/assets/dql-notebook/assets/{LineagePathBreadcrumb-CSut-zvm.js → LineagePathBreadcrumb-B4LZTUsl.js} +3 -3
  28. package/dist/assets/dql-notebook/assets/{MiniLineageGraph-zg_1wW3M.js → MiniLineageGraph-CotnRuxa.js} +1 -1
  29. package/dist/assets/dql-notebook/assets/{NewBlockModal-9cDletl-.js → NewBlockModal-DHn-CEEW.js} +1 -1
  30. package/dist/assets/dql-notebook/assets/{NewNotebookModal-V6de8L4d.js → NewNotebookModal-BPGp-8oq.js} +2 -2
  31. package/dist/assets/dql-notebook/assets/NotebookEditor-B0OTHM6W.js +195 -0
  32. package/dist/assets/dql-notebook/assets/ReadinessPage-CoOIpxWq.js +1 -0
  33. package/dist/assets/dql-notebook/assets/{SetupOnboarding-Bg-MjbC9.js → SetupOnboarding-DxK_mFzf.js} +2 -2
  34. package/dist/assets/dql-notebook/assets/{TrustBadge-DGuHB8kP.js → TrustBadge-ZuD5N5Ww.js} +1 -1
  35. package/dist/assets/dql-notebook/assets/UnifiedAgentRunPanel-duFXXNV_.js +88 -0
  36. package/dist/assets/dql-notebook/assets/{answer-to-notebook-BDzY4MuQ.js → answer-to-notebook-WAVAYjBv.js} +1 -1
  37. package/dist/assets/dql-notebook/assets/{arrow-left-IjlnAihE.js → arrow-left-L8odLbyN.js} +1 -1
  38. package/dist/assets/dql-notebook/assets/{arrow-right-BI4cXgOY.js → arrow-right-WIF1V9a9.js} +1 -1
  39. package/dist/assets/dql-notebook/assets/{book-open-text-i6xhxu_I.js → book-open-text-BpqWMa4m.js} +1 -1
  40. package/dist/assets/dql-notebook/assets/{bot-C6DE7Q6m.js → bot-CLR1V6dO.js} +1 -1
  41. package/dist/assets/dql-notebook/assets/{circle-x-BoAorVSm.js → circle-x-CQBOM0b0.js} +1 -1
  42. package/dist/assets/dql-notebook/assets/{dagre.esm-CycymVj6.js → dagre.esm-DlZi7NR3.js} +1 -1
  43. package/dist/assets/dql-notebook/assets/{external-link-ZwE5iHsX.js → external-link-DYqdQIGp.js} +1 -1
  44. package/dist/assets/dql-notebook/assets/{grip-vertical-Dnp2st8l.js → grip-vertical-HmUijbwN.js} +1 -1
  45. package/dist/assets/dql-notebook/assets/index-Cpx47jCH.js +634 -0
  46. package/dist/assets/dql-notebook/assets/{list-tree-Ced8e_S1.js → list-tree-DGKqCxmz.js} +1 -1
  47. package/dist/assets/dql-notebook/assets/{minimize-2-CBIAE0XH.js → minimize-2-C8dvqCxX.js} +1 -1
  48. package/dist/assets/dql-notebook/assets/{panel-right-open-po3bWSeL.js → panel-right-open-yuVkIo5n.js} +1 -1
  49. package/dist/assets/dql-notebook/assets/{rotate-ccw-B9v1LTJ0.js → rotate-ccw-Di0kRnrM.js} +1 -1
  50. package/dist/assets/dql-notebook/assets/{semantic-fields-B6ii0an0.js → semantic-fields-BMQV0li8.js} +1 -1
  51. package/dist/assets/dql-notebook/assets/sliders-horizontal-alebptlJ.js +6 -0
  52. package/dist/assets/dql-notebook/assets/{star-CO4tfaDq.js → star-CgCQbnXc.js} +1 -1
  53. package/dist/assets/dql-notebook/assets/{triangle-alert-BSdIu2El.js → triangle-alert-SyuSZ4ht.js} +1 -1
  54. package/dist/assets/dql-notebook/assets/upload-BPhfea_E.js +11 -0
  55. package/dist/assets/dql-notebook/assets/usePersistedAgentThreadId-Bnl9gWhj.js +28 -0
  56. package/dist/assets/dql-notebook/assets/{user-round-BfrV8U-W.js → user-round-J4PQHxo9.js} +1 -1
  57. package/dist/assets/dql-notebook/assets/{wand-sparkles-BgTxZNBc.js → wand-sparkles-c4WDXTCk.js} +1 -1
  58. package/dist/assets/dql-notebook/assets/{workflow--2ycp0yy.js → workflow-NtRLaq7n.js} +1 -1
  59. package/dist/assets/dql-notebook/assets/{wrench-LMCrpa9_.js → wrench-CS1f1Zv4.js} +1 -1
  60. package/dist/assets/dql-notebook/assets/{x-CeNgQwGm.js → x-CbKEfe5m.js} +1 -1
  61. package/dist/assets/dql-notebook/index.html +1 -1
  62. package/dist/commands/model.d.ts.map +1 -1
  63. package/dist/commands/model.js +62 -1
  64. package/dist/commands/model.js.map +1 -1
  65. package/dist/index.js +3 -0
  66. package/dist/index.js.map +1 -1
  67. package/dist/llm/providers/dql-agent-provider.d.ts +4 -3
  68. package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
  69. package/dist/llm/providers/dql-agent-provider.js +13 -10
  70. package/dist/llm/providers/dql-agent-provider.js.map +1 -1
  71. package/dist/local-operation-coordinator.d.ts +59 -0
  72. package/dist/local-operation-coordinator.d.ts.map +1 -0
  73. package/dist/local-operation-coordinator.js +256 -0
  74. package/dist/local-operation-coordinator.js.map +1 -0
  75. package/dist/local-runtime.d.ts +59 -1
  76. package/dist/local-runtime.d.ts.map +1 -1
  77. package/dist/local-runtime.js +2653 -342
  78. package/dist/local-runtime.js.map +1 -1
  79. package/dist/package.json +12 -11
  80. package/dist/project-refresh-coordinator.d.ts +19 -0
  81. package/dist/project-refresh-coordinator.d.ts.map +1 -0
  82. package/dist/project-refresh-coordinator.js +134 -0
  83. package/dist/project-refresh-coordinator.js.map +1 -0
  84. package/dist/project-refresh-worker.d.ts +13 -0
  85. package/dist/project-refresh-worker.d.ts.map +1 -0
  86. package/dist/project-refresh-worker.js +58 -0
  87. package/dist/project-refresh-worker.js.map +1 -0
  88. package/package.json +13 -11
  89. package/dist/assets/dql-notebook/assets/AgentAnswerCard-CpL2kDCV.js +0 -5
  90. package/dist/assets/dql-notebook/assets/AiSidePanel-BCQB9rVF.js +0 -6
  91. package/dist/assets/dql-notebook/assets/AnalyticsHome-Ba4Ve_Gd.js +0 -6
  92. package/dist/assets/dql-notebook/assets/AppsView-CdAT9BOq.js +0 -4466
  93. package/dist/assets/dql-notebook/assets/BlockStudio-Brg4fwn5.js +0 -60
  94. package/dist/assets/dql-notebook/assets/DbtFirstModelingPage-CQe2FUZq.js +0 -22
  95. package/dist/assets/dql-notebook/assets/GitPage-DHyDBChc.js +0 -7
  96. package/dist/assets/dql-notebook/assets/GlobalAiRail-Cys4n_rq.js +0 -1
  97. package/dist/assets/dql-notebook/assets/GovernedContextPage-DyKoDSZ2.js +0 -7
  98. package/dist/assets/dql-notebook/assets/LineageDAG-QHqd_AM5.js +0 -1
  99. package/dist/assets/dql-notebook/assets/NotebookEditor-EZ0pfWVs.js +0 -200
  100. package/dist/assets/dql-notebook/assets/ReadinessPage-BaGvjyfd.js +0 -1
  101. package/dist/assets/dql-notebook/assets/UnifiedAgentRunPanel-BlWAVEwO.js +0 -83
  102. package/dist/assets/dql-notebook/assets/chevron-up-DSEILnDs.js +0 -6
  103. package/dist/assets/dql-notebook/assets/index-BTuliKhK.js +0 -634
  104. package/dist/assets/dql-notebook/assets/link-2-CTKe6Snr.js +0 -6
  105. package/dist/assets/dql-notebook/assets/maximize-2-Cojc6867.js +0 -6
  106. package/dist/assets/dql-notebook/assets/pencil-Cb45c6WU.js +0 -6
  107. package/dist/assets/dql-notebook/assets/usePersistedAgentThreadId-CkVFrrjk.js +0 -18
@@ -1,5 +1,5 @@
1
- import{r as v,j as d,t as _e,V as Be,W as he,ak as Ie,a as Te,al as je,am as ze,an as Oe,R as ye,l as Ne,n as Ke}from"./index-BTuliKhK.js";import{S as Z,g as ve,E as S,s as Qe,a as g,b as Se,c as Ge,P as Ue,d as Ve,e as Ze,F as He,f as Ye,h as we,V as Je,D as R,R as Xe,i as et,C as M,j as ke,k as y,r as tt,l as rt,m as nt,u as st,n as at,t as it,o as ot,p as lt,q as ct,v as ut,w as ht,x as dt,y as ft,z as pt,A as mt,B as gt,G as xt,H as bt,I as yt,J as vt,K as St,L as wt,M as kt,N as de,O as Ct,Q as u}from"./codemirror-DXt7RW72.js";const fe=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class _{constructor(e,r,n=0,s=e.length,a,i){this.test=i,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,s),this.bufferStart=n,this.normalize=a?o=>a(fe(o)):fe,this.query=this.normalize(r)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Ve(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let r=et(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=Ze(e);let s=this.normalize(r);if(s.length)for(let a=0,i=n;;a++){let o=s.charCodeAt(a),l=this.match(o,i,this.bufferPos+this.bufferStart);if(a==s.length-1){if(l)return this.value=l,this;break}i==n&&a<r.length&&r.charCodeAt(a)==o&&i++}}}match(e,r,n){let s=null;for(let a=0;a<this.matches.length;a+=2){let i=this.matches[a],o=!1;this.query.charCodeAt(i)==e&&(i==this.query.length-1?s={from:this.matches[a+1],to:n}:(this.matches[a]++,o=!0)),o||(this.matches.splice(a,2),a-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:r,to:n}:this.matches.push(1,r)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}typeof Symbol<"u"&&(_.prototype[Symbol.iterator]=function(){return this});const Ce={from:-1,to:-1,match:/.*/.exec("")},ae="gm"+(/x/.unicode==null?"":"u");class Me{constructor(e,r,n,s=0,a=e.length){if(this.text=e,this.to=a,this.curLine="",this.done=!1,this.value=Ce,/\\[sWDnr]|\n|\r|\[\^/.test(r))return new Le(e,r,n,s,a);this.re=new RegExp(r,ae+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.iter=e.iter();let i=e.lineAt(s);this.curLineStart=i.from,this.matchPos=K(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let r=this.matchPos<=this.to&&this.re.exec(this.curLine);if(r){let n=this.curLineStart+r.index,s=n+r[0].length;if(this.matchPos=K(this.text,s+(n==s?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(n<s||n>this.value.to)&&(!this.test||this.test(n,s,r)))return this.value={from:n,to:s,match:r},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const J=new WeakMap;class W{constructor(e,r){this.from=e,this.text=r}get to(){return this.from+this.text.length}static get(e,r,n){let s=J.get(e);if(!s||s.from>=n||s.to<=r){let o=new W(r,e.sliceString(r,n));return J.set(e,o),o}if(s.from==r&&s.to==n)return s;let{text:a,from:i}=s;return i>r&&(a=e.sliceString(r,i)+a,i=r),s.to<n&&(a+=e.sliceString(s.to,n)),J.set(e,new W(i,a)),new W(r,a.slice(r-i,n-i))}}class Le{constructor(e,r,n,s,a){this.text=e,this.to=a,this.done=!1,this.value=Ce,this.matchPos=K(e,s),this.re=new RegExp(r,ae+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.flat=W.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,r=this.re.exec(this.flat.text);if(r&&!r[0]&&r.index==e&&(this.re.lastIndex=e+1,r=this.re.exec(this.flat.text)),r){let n=this.flat.from+r.index,s=n+r[0].length;if((this.flat.to>=this.to||r.index+r[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,s,r)))return this.value={from:n,to:s,match:r},this.matchPos=K(this.text,s+(n==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=W.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(Me.prototype[Symbol.iterator]=Le.prototype[Symbol.iterator]=function(){return this});function Mt(t){try{return new RegExp(t,ae),!0}catch{return!1}}function K(t,e){if(e>=t.length)return e;let r=t.lineAt(e),n;for(;e<r.to&&(n=r.text.charCodeAt(e-r.from))>=56320&&n<57344;)e++;return e}const Lt=t=>{let{state:e}=t,r=String(e.doc.lineAt(t.state.selection.main.head).number),{close:n,result:s}=Qe(t,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:r},focus:!0,submitLabel:e.phrase("go")});return s.then(a=>{let i=a&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(a.elements.line.value);if(!i){t.dispatch({effects:n});return}let o=e.doc.lineAt(e.selection.main.head),[,l,c,m,w]=i,k=m?+m.slice(1):0,f=c?+c:o.number;if(c&&w){let E=f/100;l&&(E=E*(l=="-"?-1:1)+o.number/e.doc.lines),f=Math.round(e.doc.lines*E)}else c&&l&&(f=f*(l=="-"?-1:1)+o.number);let T=e.doc.line(Math.max(1,Math.min(e.doc.lines,f))),q=S.cursor(T.from+Math.max(0,Math.min(k,T.length)));t.dispatch({effects:[n,g.scrollIntoView(q.from,{y:"center"})],selection:q})}),!0},Et=({state:t,dispatch:e})=>{let{selection:r}=t,n=S.create(r.ranges.map(s=>t.wordAt(s.head)||S.cursor(s.head)),r.mainIndex);return n.eq(r)?!1:(e(t.update({selection:n})),!0)};function Rt(t,e){let{main:r,ranges:n}=t.selection,s=t.wordAt(r.head),a=s&&s.from==r.from&&s.to==r.to;for(let i=!1,o=new _(t.doc,e,n[n.length-1].to);;)if(o.next(),o.done){if(i)return null;o=new _(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),i=!0}else{if(i&&n.some(l=>l.from==o.value.from))continue;if(a){let l=t.wordAt(o.value.from);if(!l||l.from!=o.value.from||l.to!=o.value.to)continue}return o.value}}const At=({state:t,dispatch:e})=>{let{ranges:r}=t.selection;if(r.some(a=>a.from===a.to))return Et({state:t,dispatch:e});let n=t.sliceDoc(r[0].from,r[0].to);if(t.selection.ranges.some(a=>t.sliceDoc(a.from,a.to)!=n))return!1;let s=Rt(t,n);return s?(e(t.update({selection:t.selection.addRange(S.range(s.from,s.to),!1),effects:g.scrollIntoView(s.to)})),!0):!1},A=He.define({combine(t){return Ye(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Kt(e),scrollToMatch:e=>g.scrollIntoView(e)})}});function qt(t){return t?[A.of(t),se]:se}class Ee{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Mt(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(r,n)=>n=="n"?`
2
- `:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new _t(this):new Wt(this)}getCursor(e,r=0,n){let s=e.doc?e:we.create({doc:e});return n==null&&(n=s.doc.length),this.regexp?F(this,s,r,n):$(this,s,r,n)}}class Re{constructor(e){this.spec=e}}function $t(t,e,r){return(n,s,a,i)=>{if(r&&!r(n,s,a,i))return!1;let o=n>=i&&s<=i+a.length?a.slice(n-i,s-i):e.doc.sliceString(n,s);return t(o,e,n,s)}}function $(t,e,r,n){let s;return t.wholeWord&&(s=Ft(e.doc,e.charCategorizer(e.selection.main.head))),t.test&&(s=$t(t.test,e,s)),new _(e.doc,t.unquoted,r,n,t.caseSensitive?void 0:a=>a.toLowerCase(),s)}function Ft(t,e){return(r,n,s,a)=>((a>r||a+s.length<n)&&(a=Math.max(0,r-2),s=t.sliceString(a,Math.min(t.length,n+2))),(e(Q(s,r-a))!=M.Word||e(G(s,r-a))!=M.Word)&&(e(G(s,n-a))!=M.Word||e(Q(s,n-a))!=M.Word))}class Wt extends Re{constructor(e){super(e)}nextMatch(e,r,n){let s=$(this.spec,e,n,e.doc.length).nextOverlapping();if(s.done){let a=Math.min(e.doc.length,r+this.spec.unquoted.length);s=$(this.spec,e,0,a).nextOverlapping()}return s.done||s.value.from==r&&s.value.to==n?null:s.value}prevMatchInRange(e,r,n){for(let s=n;;){let a=Math.max(r,s-1e4-this.spec.unquoted.length),i=$(this.spec,e,a,s),o=null;for(;!i.nextOverlapping().done;)o=i.value;if(o)return o;if(a==r)return null;s-=1e4}}prevMatch(e,r,n){let s=this.prevMatchInRange(e,0,r);return s||(s=this.prevMatchInRange(e,Math.max(0,n-this.spec.unquoted.length),e.doc.length)),s&&(s.from!=r||s.to!=n)?s:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,r){let n=$(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=r)return null;s.push(n.value)}return s}highlight(e,r,n,s){let a=$(this.spec,e,Math.max(0,r-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!a.next().done;)s(a.value.from,a.value.to)}}function Pt(t,e,r){return(n,s,a)=>(!r||r(n,s,a))&&t(a[0],e,n,s)}function F(t,e,r,n){let s;return t.wholeWord&&(s=Dt(e.charCategorizer(e.selection.main.head))),t.test&&(s=Pt(t.test,e,s)),new Me(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:s},r,n)}function Q(t,e){return t.slice(ke(t,e,!1),e)}function G(t,e){return t.slice(e,ke(t,e))}function Dt(t){return(e,r,n)=>!n[0].length||(t(Q(n.input,n.index))!=M.Word||t(G(n.input,n.index))!=M.Word)&&(t(G(n.input,n.index+n[0].length))!=M.Word||t(Q(n.input,n.index+n[0].length))!=M.Word)}class _t extends Re{nextMatch(e,r,n){let s=F(this.spec,e,n,e.doc.length).next();return s.done&&(s=F(this.spec,e,0,r).next()),s.done?null:s.value}prevMatchInRange(e,r,n){for(let s=1;;s++){let a=Math.max(r,n-s*1e4),i=F(this.spec,e,a,n),o=null;for(;!i.next().done;)o=i.value;if(o&&(a==r||o.from>a+10))return o;if(a==r)return null}}prevMatch(e,r,n){return this.prevMatchInRange(e,0,r)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(r,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let s=n.length;s>0;s--){let a=+n.slice(0,s);if(a>0&&a<e.match.length)return e.match[a]+n.slice(s)}return r})}matchAll(e,r){let n=F(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=r)return null;s.push(n.value)}return s}highlight(e,r,n,s){let a=F(this.spec,e,Math.max(0,r-250),Math.min(n+250,e.doc.length));for(;!a.next().done;)s(a.value.from,a.value.to)}}const B=Z.define(),ie=Z.define(),L=Se.define({create(t){return new X(ne(t).create(),null)},update(t,e){for(let r of e.effects)r.is(B)?t=new X(r.value.create(),t.panel):r.is(ie)&&(t=new X(t.query,r.value?oe:null));return t},provide:t=>Ge.from(t,e=>e.panel)});class X{constructor(e,r){this.query=e,this.panel=r}}const Bt=R.mark({class:"cm-searchMatch"}),It=R.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Tt=Je.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(L))}update(t){let e=t.state.field(L);(e!=t.startState.field(L)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return R.none;let{view:r}=this,n=new Xe;for(let s=0,a=r.visibleRanges,i=a.length;s<i;s++){let{from:o,to:l}=a[s];for(;s<i-1&&l>a[s+1].from-500;)l=a[++s].to;t.highlight(r.state,o,l,(c,m)=>{let w=r.state.selection.ranges.some(k=>k.from==c&&k.to==m);n.add(c,m,w?It:Bt)})}return n.finish()}},{decorations:t=>t.decorations});function I(t){return e=>{let r=e.state.field(L,!1);return r&&r.query.spec.valid?t(e,r):$e(e)}}const U=I((t,{query:e})=>{let{to:r}=t.state.selection.main,n=e.nextMatch(t.state,r,r);if(!n)return!1;let s=S.single(n.from,n.to),a=t.state.facet(A);return t.dispatch({selection:s,effects:[le(t,n),a.scrollToMatch(s.main,t)],userEvent:"select.search"}),qe(t),!0}),V=I((t,{query:e})=>{let{state:r}=t,{from:n}=r.selection.main,s=e.prevMatch(r,n,n);if(!s)return!1;let a=S.single(s.from,s.to),i=t.state.facet(A);return t.dispatch({selection:a,effects:[le(t,s),i.scrollToMatch(a.main,t)],userEvent:"select.search"}),qe(t),!0}),jt=I((t,{query:e})=>{let r=e.matchAll(t.state,1e3);return!r||!r.length?!1:(t.dispatch({selection:S.create(r.map(n=>S.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),zt=({state:t,dispatch:e})=>{let r=t.selection;if(r.ranges.length>1||r.main.empty)return!1;let{from:n,to:s}=r.main,a=[],i=0;for(let o=new _(t.doc,t.sliceDoc(n,s));!o.next().done;){if(a.length>1e3)return!1;o.value.from==n&&(i=a.length),a.push(S.range(o.value.from,o.value.to))}return e(t.update({selection:S.create(a,i),userEvent:"select.search.matches"})),!0},pe=I((t,{query:e})=>{let{state:r}=t,{from:n,to:s}=r.selection.main;if(r.readOnly)return!1;let a=e.nextMatch(r,n,n);if(!a)return!1;let i=a,o=[],l,c,m=[];i.from==n&&i.to==s&&(c=r.toText(e.getReplacement(i)),o.push({from:i.from,to:i.to,insert:c}),i=e.nextMatch(r,i.from,i.to),m.push(g.announce.of(r.phrase("replaced match on line $",r.doc.lineAt(n).number)+".")));let w=t.state.changes(o);return i&&(l=S.single(i.from,i.to).map(w),m.push(le(t,i)),m.push(r.facet(A).scrollToMatch(l.main,t))),t.dispatch({changes:w,selection:l,effects:m,userEvent:"input.replace"}),!0}),Ot=I((t,{query:e})=>{if(t.state.readOnly)return!1;let r=e.matchAll(t.state,1e9).map(s=>{let{from:a,to:i}=s;return{from:a,to:i,insert:e.getReplacement(s)}});if(!r.length)return!1;let n=t.state.phrase("replaced $ matches",r.length)+".";return t.dispatch({changes:r,effects:g.announce.of(n),userEvent:"input.replace.all"}),!0});function oe(t){return t.state.facet(A).createPanel(t)}function ne(t,e){var r,n,s,a,i;let o=t.selection.main,l=o.empty||o.to>o.from+100?"":t.sliceDoc(o.from,o.to);if(e&&!l)return e;let c=t.facet(A);return new Ee({search:((r=e==null?void 0:e.literal)!==null&&r!==void 0?r:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n:c.caseSensitive,literal:(s=e==null?void 0:e.literal)!==null&&s!==void 0?s:c.literal,regexp:(a=e==null?void 0:e.regexp)!==null&&a!==void 0?a:c.regexp,wholeWord:(i=e==null?void 0:e.wholeWord)!==null&&i!==void 0?i:c.wholeWord})}function Ae(t){let e=ve(t,oe);return e&&e.dom.querySelector("[main-field]")}function qe(t){let e=Ae(t);e&&e==t.root.activeElement&&e.select()}const $e=t=>{let e=t.state.field(L,!1);if(e&&e.panel){let r=Ae(t);if(r&&r!=t.root.activeElement){let n=ne(t.state,e.query.spec);n.valid&&t.dispatch({effects:B.of(n)}),r.focus(),r.select()}}else t.dispatch({effects:[ie.of(!0),e?B.of(ne(t.state,e.query.spec)):Z.appendConfig.of(se)]});return!0},Fe=t=>{let e=t.state.field(L,!1);if(!e||!e.panel)return!1;let r=ve(t,oe);return r&&r.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:ie.of(!1)}),!0},Nt=[{key:"Mod-f",run:$e,scope:"editor search-panel"},{key:"F3",run:U,shift:V,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:U,shift:V,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Fe,scope:"editor search-panel"},{key:"Mod-Shift-l",run:zt},{key:"Mod-Alt-g",run:Lt},{key:"Mod-d",run:At,preventDefault:!0}];class Kt{constructor(e){this.view=e;let r=this.query=e.state.field(L).query.spec;this.commit=this.commit.bind(this),this.searchField=y("input",{value:r.search,placeholder:b(e,"Find"),"aria-label":b(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=y("input",{value:r.replace,placeholder:b(e,"Replace"),"aria-label":b(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=y("input",{type:"checkbox",name:"case",form:"",checked:r.caseSensitive,onchange:this.commit}),this.reField=y("input",{type:"checkbox",name:"re",form:"",checked:r.regexp,onchange:this.commit}),this.wordField=y("input",{type:"checkbox",name:"word",form:"",checked:r.wholeWord,onchange:this.commit});function n(s,a,i){return y("button",{class:"cm-button",name:s,onclick:a,type:"button"},i)}this.dom=y("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,n("next",()=>U(e),[b(e,"next")]),n("prev",()=>V(e),[b(e,"previous")]),n("select",()=>jt(e),[b(e,"all")]),y("label",null,[this.caseField,b(e,"match case")]),y("label",null,[this.reField,b(e,"regexp")]),y("label",null,[this.wordField,b(e,"by word")]),...e.state.readOnly?[]:[y("br"),this.replaceField,n("replace",()=>pe(e),[b(e,"replace")]),n("replaceAll",()=>Ot(e),[b(e,"replace all")])],y("button",{name:"close",onclick:()=>Fe(e),"aria-label":b(e,"close"),type:"button"},["×"])])}commit(){let e=new Ee({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:B.of(e)}))}keydown(e){tt(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?V:U)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),pe(this.view))}update(e){for(let r of e.transactions)for(let n of r.effects)n.is(B)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(A).top}}function b(t,e){return t.state.phrase(e)}const z=30,O=/[\s\.,:;?!]/;function le(t,{from:e,to:r}){let n=t.state.doc.lineAt(e),s=t.state.doc.lineAt(r).to,a=Math.max(n.from,e-z),i=Math.min(s,r+z),o=t.state.sliceDoc(a,i);if(a!=n.from){for(let l=0;l<z;l++)if(!O.test(o[l+1])&&O.test(o[l])){o=o.slice(l);break}}if(i!=s){for(let l=o.length-1;l>o.length-z;l--)if(!O.test(o[l-1])&&O.test(o[l])){o=o.slice(0,l);break}}return g.announce.of(`${t.state.phrase("current match")}. ${o} ${t.state.phrase("on line")} ${n.number}.`)}const Qt=g.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),se=[L,Ue.low(Tt),Qt],me=[{name:"domain",detail:"business domain (namespace)"},{name:"owner",detail:"accountable owner — required to certify"},{name:"description",detail:"business-facing description"},{name:"status",detail:"draft | certified"},{name:"pattern",detail:"reusable block pattern"},{name:"grain",detail:'row grain, e.g. "one row per customer"'},{name:"outputs",detail:"declared output column names"},{name:"entities",detail:'business entities, e.g. ["order"]'},{name:"tags",detail:"discoverability tags"},{name:"llmContext",detail:"when an agent should use this block"},{name:"reviewCadence",detail:"how often to re-review"},{name:"sourceSystems",detail:"upstream source systems"},{name:"dimensions",detail:"queryable dimensions"},{name:"allowedFilters",detail:"filters an app may bind"},{name:"filterBindings",detail:"filter → column map (app-ready)",snippet:`filterBindings {
1
+ import{r as v,j as d,t as _e,Z as Be,_ as he,aq as Ie,a as Te,ar as je,as as ze,at as Oe,R as ye,p as Ne,q as Ke}from"./index-Cpx47jCH.js";import{S as V,g as ve,E as S,s as Qe,a as g,b as Se,c as Ze,P as Ge,d as Ue,e as Ve,F as He,f as Ye,h as we,V as Je,D as q,R as Xe,i as et,C as M,j as ke,k as y,r as tt,l as rt,m as nt,u as st,n as at,t as it,o as ot,p as lt,q as ct,v as ut,w as ht,x as dt,y as ft,z as pt,A as mt,B as gt,G as xt,H as bt,I as yt,J as vt,K as St,L as wt,M as kt,N as de,O as Ct,Q as u}from"./codemirror-DXt7RW72.js";const fe=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class _{constructor(e,r,n=0,s=e.length,a,i){this.test=i,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,s),this.bufferStart=n,this.normalize=a?o=>a(fe(o)):fe,this.query=this.normalize(r)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Ue(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let r=et(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=Ve(e);let s=this.normalize(r);if(s.length)for(let a=0,i=n;;a++){let o=s.charCodeAt(a),l=this.match(o,i,this.bufferPos+this.bufferStart);if(a==s.length-1){if(l)return this.value=l,this;break}i==n&&a<r.length&&r.charCodeAt(a)==o&&i++}}}match(e,r,n){let s=null;for(let a=0;a<this.matches.length;a+=2){let i=this.matches[a],o=!1;this.query.charCodeAt(i)==e&&(i==this.query.length-1?s={from:this.matches[a+1],to:n}:(this.matches[a]++,o=!0)),o||(this.matches.splice(a,2),a-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:r,to:n}:this.matches.push(1,r)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}typeof Symbol<"u"&&(_.prototype[Symbol.iterator]=function(){return this});const Ce={from:-1,to:-1,match:/.*/.exec("")},ae="gm"+(/x/.unicode==null?"":"u");class Me{constructor(e,r,n,s=0,a=e.length){if(this.text=e,this.to=a,this.curLine="",this.done=!1,this.value=Ce,/\\[sWDnr]|\n|\r|\[\^/.test(r))return new Le(e,r,n,s,a);this.re=new RegExp(r,ae+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.iter=e.iter();let i=e.lineAt(s);this.curLineStart=i.from,this.matchPos=K(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let r=this.matchPos<=this.to&&this.re.exec(this.curLine);if(r){let n=this.curLineStart+r.index,s=n+r[0].length;if(this.matchPos=K(this.text,s+(n==s?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(n<s||n>this.value.to)&&(!this.test||this.test(n,s,r)))return this.value={from:n,to:s,match:r},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const J=new WeakMap;class W{constructor(e,r){this.from=e,this.text=r}get to(){return this.from+this.text.length}static get(e,r,n){let s=J.get(e);if(!s||s.from>=n||s.to<=r){let o=new W(r,e.sliceString(r,n));return J.set(e,o),o}if(s.from==r&&s.to==n)return s;let{text:a,from:i}=s;return i>r&&(a=e.sliceString(r,i)+a,i=r),s.to<n&&(a+=e.sliceString(s.to,n)),J.set(e,new W(i,a)),new W(r,a.slice(r-i,n-i))}}class Le{constructor(e,r,n,s,a){this.text=e,this.to=a,this.done=!1,this.value=Ce,this.matchPos=K(e,s),this.re=new RegExp(r,ae+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.flat=W.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,r=this.re.exec(this.flat.text);if(r&&!r[0]&&r.index==e&&(this.re.lastIndex=e+1,r=this.re.exec(this.flat.text)),r){let n=this.flat.from+r.index,s=n+r[0].length;if((this.flat.to>=this.to||r.index+r[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,s,r)))return this.value={from:n,to:s,match:r},this.matchPos=K(this.text,s+(n==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=W.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(Me.prototype[Symbol.iterator]=Le.prototype[Symbol.iterator]=function(){return this});function Mt(t){try{return new RegExp(t,ae),!0}catch{return!1}}function K(t,e){if(e>=t.length)return e;let r=t.lineAt(e),n;for(;e<r.to&&(n=r.text.charCodeAt(e-r.from))>=56320&&n<57344;)e++;return e}const Lt=t=>{let{state:e}=t,r=String(e.doc.lineAt(t.state.selection.main.head).number),{close:n,result:s}=Qe(t,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:r},focus:!0,submitLabel:e.phrase("go")});return s.then(a=>{let i=a&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(a.elements.line.value);if(!i){t.dispatch({effects:n});return}let o=e.doc.lineAt(e.selection.main.head),[,l,c,m,w]=i,k=m?+m.slice(1):0,f=c?+c:o.number;if(c&&w){let E=f/100;l&&(E=E*(l=="-"?-1:1)+o.number/e.doc.lines),f=Math.round(e.doc.lines*E)}else c&&l&&(f=f*(l=="-"?-1:1)+o.number);let T=e.doc.line(Math.max(1,Math.min(e.doc.lines,f))),A=S.cursor(T.from+Math.max(0,Math.min(k,T.length)));t.dispatch({effects:[n,g.scrollIntoView(A.from,{y:"center"})],selection:A})}),!0},Et=({state:t,dispatch:e})=>{let{selection:r}=t,n=S.create(r.ranges.map(s=>t.wordAt(s.head)||S.cursor(s.head)),r.mainIndex);return n.eq(r)?!1:(e(t.update({selection:n})),!0)};function qt(t,e){let{main:r,ranges:n}=t.selection,s=t.wordAt(r.head),a=s&&s.from==r.from&&s.to==r.to;for(let i=!1,o=new _(t.doc,e,n[n.length-1].to);;)if(o.next(),o.done){if(i)return null;o=new _(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),i=!0}else{if(i&&n.some(l=>l.from==o.value.from))continue;if(a){let l=t.wordAt(o.value.from);if(!l||l.from!=o.value.from||l.to!=o.value.to)continue}return o.value}}const Rt=({state:t,dispatch:e})=>{let{ranges:r}=t.selection;if(r.some(a=>a.from===a.to))return Et({state:t,dispatch:e});let n=t.sliceDoc(r[0].from,r[0].to);if(t.selection.ranges.some(a=>t.sliceDoc(a.from,a.to)!=n))return!1;let s=qt(t,n);return s?(e(t.update({selection:t.selection.addRange(S.range(s.from,s.to),!1),effects:g.scrollIntoView(s.to)})),!0):!1},R=He.define({combine(t){return Ye(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Kt(e),scrollToMatch:e=>g.scrollIntoView(e)})}});function At(t){return t?[R.of(t),se]:se}class Ee{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Mt(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(r,n)=>n=="n"?`
2
+ `:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new _t(this):new Wt(this)}getCursor(e,r=0,n){let s=e.doc?e:we.create({doc:e});return n==null&&(n=s.doc.length),this.regexp?F(this,s,r,n):$(this,s,r,n)}}class qe{constructor(e){this.spec=e}}function $t(t,e,r){return(n,s,a,i)=>{if(r&&!r(n,s,a,i))return!1;let o=n>=i&&s<=i+a.length?a.slice(n-i,s-i):e.doc.sliceString(n,s);return t(o,e,n,s)}}function $(t,e,r,n){let s;return t.wholeWord&&(s=Ft(e.doc,e.charCategorizer(e.selection.main.head))),t.test&&(s=$t(t.test,e,s)),new _(e.doc,t.unquoted,r,n,t.caseSensitive?void 0:a=>a.toLowerCase(),s)}function Ft(t,e){return(r,n,s,a)=>((a>r||a+s.length<n)&&(a=Math.max(0,r-2),s=t.sliceString(a,Math.min(t.length,n+2))),(e(Q(s,r-a))!=M.Word||e(Z(s,r-a))!=M.Word)&&(e(Z(s,n-a))!=M.Word||e(Q(s,n-a))!=M.Word))}class Wt extends qe{constructor(e){super(e)}nextMatch(e,r,n){let s=$(this.spec,e,n,e.doc.length).nextOverlapping();if(s.done){let a=Math.min(e.doc.length,r+this.spec.unquoted.length);s=$(this.spec,e,0,a).nextOverlapping()}return s.done||s.value.from==r&&s.value.to==n?null:s.value}prevMatchInRange(e,r,n){for(let s=n;;){let a=Math.max(r,s-1e4-this.spec.unquoted.length),i=$(this.spec,e,a,s),o=null;for(;!i.nextOverlapping().done;)o=i.value;if(o)return o;if(a==r)return null;s-=1e4}}prevMatch(e,r,n){let s=this.prevMatchInRange(e,0,r);return s||(s=this.prevMatchInRange(e,Math.max(0,n-this.spec.unquoted.length),e.doc.length)),s&&(s.from!=r||s.to!=n)?s:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,r){let n=$(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=r)return null;s.push(n.value)}return s}highlight(e,r,n,s){let a=$(this.spec,e,Math.max(0,r-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!a.next().done;)s(a.value.from,a.value.to)}}function Pt(t,e,r){return(n,s,a)=>(!r||r(n,s,a))&&t(a[0],e,n,s)}function F(t,e,r,n){let s;return t.wholeWord&&(s=Dt(e.charCategorizer(e.selection.main.head))),t.test&&(s=Pt(t.test,e,s)),new Me(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:s},r,n)}function Q(t,e){return t.slice(ke(t,e,!1),e)}function Z(t,e){return t.slice(e,ke(t,e))}function Dt(t){return(e,r,n)=>!n[0].length||(t(Q(n.input,n.index))!=M.Word||t(Z(n.input,n.index))!=M.Word)&&(t(Z(n.input,n.index+n[0].length))!=M.Word||t(Q(n.input,n.index+n[0].length))!=M.Word)}class _t extends qe{nextMatch(e,r,n){let s=F(this.spec,e,n,e.doc.length).next();return s.done&&(s=F(this.spec,e,0,r).next()),s.done?null:s.value}prevMatchInRange(e,r,n){for(let s=1;;s++){let a=Math.max(r,n-s*1e4),i=F(this.spec,e,a,n),o=null;for(;!i.next().done;)o=i.value;if(o&&(a==r||o.from>a+10))return o;if(a==r)return null}}prevMatch(e,r,n){return this.prevMatchInRange(e,0,r)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(r,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let s=n.length;s>0;s--){let a=+n.slice(0,s);if(a>0&&a<e.match.length)return e.match[a]+n.slice(s)}return r})}matchAll(e,r){let n=F(this.spec,e,0,e.doc.length),s=[];for(;!n.next().done;){if(s.length>=r)return null;s.push(n.value)}return s}highlight(e,r,n,s){let a=F(this.spec,e,Math.max(0,r-250),Math.min(n+250,e.doc.length));for(;!a.next().done;)s(a.value.from,a.value.to)}}const B=V.define(),ie=V.define(),L=Se.define({create(t){return new X(ne(t).create(),null)},update(t,e){for(let r of e.effects)r.is(B)?t=new X(r.value.create(),t.panel):r.is(ie)&&(t=new X(t.query,r.value?oe:null));return t},provide:t=>Ze.from(t,e=>e.panel)});class X{constructor(e,r){this.query=e,this.panel=r}}const Bt=q.mark({class:"cm-searchMatch"}),It=q.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Tt=Je.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(L))}update(t){let e=t.state.field(L);(e!=t.startState.field(L)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return q.none;let{view:r}=this,n=new Xe;for(let s=0,a=r.visibleRanges,i=a.length;s<i;s++){let{from:o,to:l}=a[s];for(;s<i-1&&l>a[s+1].from-500;)l=a[++s].to;t.highlight(r.state,o,l,(c,m)=>{let w=r.state.selection.ranges.some(k=>k.from==c&&k.to==m);n.add(c,m,w?It:Bt)})}return n.finish()}},{decorations:t=>t.decorations});function I(t){return e=>{let r=e.state.field(L,!1);return r&&r.query.spec.valid?t(e,r):$e(e)}}const G=I((t,{query:e})=>{let{to:r}=t.state.selection.main,n=e.nextMatch(t.state,r,r);if(!n)return!1;let s=S.single(n.from,n.to),a=t.state.facet(R);return t.dispatch({selection:s,effects:[le(t,n),a.scrollToMatch(s.main,t)],userEvent:"select.search"}),Ae(t),!0}),U=I((t,{query:e})=>{let{state:r}=t,{from:n}=r.selection.main,s=e.prevMatch(r,n,n);if(!s)return!1;let a=S.single(s.from,s.to),i=t.state.facet(R);return t.dispatch({selection:a,effects:[le(t,s),i.scrollToMatch(a.main,t)],userEvent:"select.search"}),Ae(t),!0}),jt=I((t,{query:e})=>{let r=e.matchAll(t.state,1e3);return!r||!r.length?!1:(t.dispatch({selection:S.create(r.map(n=>S.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),zt=({state:t,dispatch:e})=>{let r=t.selection;if(r.ranges.length>1||r.main.empty)return!1;let{from:n,to:s}=r.main,a=[],i=0;for(let o=new _(t.doc,t.sliceDoc(n,s));!o.next().done;){if(a.length>1e3)return!1;o.value.from==n&&(i=a.length),a.push(S.range(o.value.from,o.value.to))}return e(t.update({selection:S.create(a,i),userEvent:"select.search.matches"})),!0},pe=I((t,{query:e})=>{let{state:r}=t,{from:n,to:s}=r.selection.main;if(r.readOnly)return!1;let a=e.nextMatch(r,n,n);if(!a)return!1;let i=a,o=[],l,c,m=[];i.from==n&&i.to==s&&(c=r.toText(e.getReplacement(i)),o.push({from:i.from,to:i.to,insert:c}),i=e.nextMatch(r,i.from,i.to),m.push(g.announce.of(r.phrase("replaced match on line $",r.doc.lineAt(n).number)+".")));let w=t.state.changes(o);return i&&(l=S.single(i.from,i.to).map(w),m.push(le(t,i)),m.push(r.facet(R).scrollToMatch(l.main,t))),t.dispatch({changes:w,selection:l,effects:m,userEvent:"input.replace"}),!0}),Ot=I((t,{query:e})=>{if(t.state.readOnly)return!1;let r=e.matchAll(t.state,1e9).map(s=>{let{from:a,to:i}=s;return{from:a,to:i,insert:e.getReplacement(s)}});if(!r.length)return!1;let n=t.state.phrase("replaced $ matches",r.length)+".";return t.dispatch({changes:r,effects:g.announce.of(n),userEvent:"input.replace.all"}),!0});function oe(t){return t.state.facet(R).createPanel(t)}function ne(t,e){var r,n,s,a,i;let o=t.selection.main,l=o.empty||o.to>o.from+100?"":t.sliceDoc(o.from,o.to);if(e&&!l)return e;let c=t.facet(R);return new Ee({search:((r=e==null?void 0:e.literal)!==null&&r!==void 0?r:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n:c.caseSensitive,literal:(s=e==null?void 0:e.literal)!==null&&s!==void 0?s:c.literal,regexp:(a=e==null?void 0:e.regexp)!==null&&a!==void 0?a:c.regexp,wholeWord:(i=e==null?void 0:e.wholeWord)!==null&&i!==void 0?i:c.wholeWord})}function Re(t){let e=ve(t,oe);return e&&e.dom.querySelector("[main-field]")}function Ae(t){let e=Re(t);e&&e==t.root.activeElement&&e.select()}const $e=t=>{let e=t.state.field(L,!1);if(e&&e.panel){let r=Re(t);if(r&&r!=t.root.activeElement){let n=ne(t.state,e.query.spec);n.valid&&t.dispatch({effects:B.of(n)}),r.focus(),r.select()}}else t.dispatch({effects:[ie.of(!0),e?B.of(ne(t.state,e.query.spec)):V.appendConfig.of(se)]});return!0},Fe=t=>{let e=t.state.field(L,!1);if(!e||!e.panel)return!1;let r=ve(t,oe);return r&&r.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:ie.of(!1)}),!0},Nt=[{key:"Mod-f",run:$e,scope:"editor search-panel"},{key:"F3",run:G,shift:U,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:G,shift:U,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Fe,scope:"editor search-panel"},{key:"Mod-Shift-l",run:zt},{key:"Mod-Alt-g",run:Lt},{key:"Mod-d",run:Rt,preventDefault:!0}];class Kt{constructor(e){this.view=e;let r=this.query=e.state.field(L).query.spec;this.commit=this.commit.bind(this),this.searchField=y("input",{value:r.search,placeholder:b(e,"Find"),"aria-label":b(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=y("input",{value:r.replace,placeholder:b(e,"Replace"),"aria-label":b(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=y("input",{type:"checkbox",name:"case",form:"",checked:r.caseSensitive,onchange:this.commit}),this.reField=y("input",{type:"checkbox",name:"re",form:"",checked:r.regexp,onchange:this.commit}),this.wordField=y("input",{type:"checkbox",name:"word",form:"",checked:r.wholeWord,onchange:this.commit});function n(s,a,i){return y("button",{class:"cm-button",name:s,onclick:a,type:"button"},i)}this.dom=y("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,n("next",()=>G(e),[b(e,"next")]),n("prev",()=>U(e),[b(e,"previous")]),n("select",()=>jt(e),[b(e,"all")]),y("label",null,[this.caseField,b(e,"match case")]),y("label",null,[this.reField,b(e,"regexp")]),y("label",null,[this.wordField,b(e,"by word")]),...e.state.readOnly?[]:[y("br"),this.replaceField,n("replace",()=>pe(e),[b(e,"replace")]),n("replaceAll",()=>Ot(e),[b(e,"replace all")])],y("button",{name:"close",onclick:()=>Fe(e),"aria-label":b(e,"close"),type:"button"},["×"])])}commit(){let e=new Ee({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:B.of(e)}))}keydown(e){tt(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?U:G)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),pe(this.view))}update(e){for(let r of e.transactions)for(let n of r.effects)n.is(B)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(R).top}}function b(t,e){return t.state.phrase(e)}const z=30,O=/[\s\.,:;?!]/;function le(t,{from:e,to:r}){let n=t.state.doc.lineAt(e),s=t.state.doc.lineAt(r).to,a=Math.max(n.from,e-z),i=Math.min(s,r+z),o=t.state.sliceDoc(a,i);if(a!=n.from){for(let l=0;l<z;l++)if(!O.test(o[l+1])&&O.test(o[l])){o=o.slice(l);break}}if(i!=s){for(let l=o.length-1;l>o.length-z;l--)if(!O.test(o[l-1])&&O.test(o[l])){o=o.slice(0,l);break}}return g.announce.of(`${t.state.phrase("current match")}. ${o} ${t.state.phrase("on line")} ${n.number}.`)}const Qt=g.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),se=[L,Ge.low(Tt),Qt],me=[{name:"domain",detail:"business domain (namespace)"},{name:"owner",detail:"accountable owner — required to certify"},{name:"description",detail:"business-facing description"},{name:"status",detail:"draft | certified"},{name:"pattern",detail:"reusable block pattern"},{name:"grain",detail:'row grain, e.g. "one row per customer"'},{name:"outputs",detail:"declared output column names"},{name:"entities",detail:'business entities, e.g. ["order"]'},{name:"tags",detail:"discoverability tags"},{name:"llmContext",detail:"when an agent should use this block"},{name:"reviewCadence",detail:"how often to re-review"},{name:"sourceSystems",detail:"upstream source systems"},{name:"dimensions",detail:"queryable dimensions"},{name:"allowedFilters",detail:"filters an app may bind"},{name:"filterBindings",detail:"filter → column map (app-ready)",snippet:`filterBindings {
3
3
  $0
4
4
  }`},{name:"parameterPolicy",detail:"per-parameter reuse policy",snippet:`parameterPolicy {
5
5
  $0
@@ -11,4 +11,4 @@ import{r as v,j as d,t as _e,V as Be,W as he,ak as Ie,a as Te,al as je,am as ze,
11
11
  assert $0
12
12
  }`},{name:"query",detail:"the SQL body",snippet:`query = """
13
13
  $0
14
- """`}],Gt={chart:["bar","line","area","column","combo","pie","donut","scatter","histogram","heatmap","number","single_value","table"],viz:["bar","line","area","column","combo","pie","donut","scatter","histogram","heatmap","number","single_value","table"],type:["bar","line","area","column","combo","pie","donut","scatter","histogram","heatmap","number","single_value","table"],pattern:["metric_wrapper","entity_profile","entity_rollup","ranking","trend","bridge","drilldown","replacement","custom"],reviewCadence:["daily","weekly","monthly","quarterly","annually"],status:["draft","certified"],type_block:["custom","semantic"]};function Ut(t){return(t.match(/"""/g)??[]).length%2===1}function ge(t){return{label:t.name,type:"property",detail:t.detail,apply:t.snippet?Vt(t.snippet):`${t.name} = `}}function Vt(t){return(e,r,n,s)=>{const a=t.indexOf("$0"),i=t.replace("$0",""),o=a>=0?n+a:n+i.length;e.dispatch({changes:{from:n,to:s,insert:i},selection:{anchor:o}})}}const Zt=t=>{const e=t.state.doc.lineAt(t.pos),r=t.state.sliceDoc(0,t.pos),n=r.slice(e.from);if(Ut(r))return null;const s=/([a-zA-Z_]+)\s*=\s*"([^"]*)$/.exec(n);if(s){const i=Gt[s[1]];if(i){const o=t.pos-s[2].length,l=s[2].toLowerCase();return{from:o,options:i.filter(c=>!l||c.toLowerCase().includes(l)).map(c=>({label:c,type:"enum"})),validFor:/^[\w-]*$/}}return null}const a=t.matchBefore(/[a-zA-Z_]+/);if(a&&/^\s*[a-zA-Z_]+$/.test(n)){const i=a.text.toLowerCase();return{from:a.from,options:me.filter(o=>o.name.toLowerCase().startsWith(i)||o.name.toLowerCase().includes(i)).map(ge),validFor:/^[a-zA-Z_]*$/}}return t.explicit&&/^\s*$/.test(n)?{from:t.pos,options:me.map(ge)}:null},xe=new Map;async function ee(t,e,r){const n=`${t}:${r??""}:${e}`.toLowerCase(),s=xe.get(n);if(s&&s.expiresAt>Date.now())return s.items;const a=new URLSearchParams({kind:t,q:e,limit:"60"});r&&a.set("relation",r);const i=await fetch(`${window.location.origin}/api/editor/completions?${a}`);if(!i.ok)return[];const o=await i.json(),l=Array.isArray(o.completions)?o.completions:[];return xe.set(n,{items:l,expiresAt:Date.now()+2e4}),l}const Ht=async t=>{const e=t.state.sliceDoc(0,t.pos),r=/\b(?:from|join)\s+([\w."-]*)$/i.exec(e);if(r){const a=r[1].replace(/^"/,""),i=await ee("relation",a);return te(t.pos-r[1].length,i)}const n=/([A-Za-z_][\w]*)\.([A-Za-z_][\w]*)?$/.exec(e);if(n){const a=n[1],i=n[2]??"",o=Yt(e,a)??a,l=await ee("column",i,o.replace(/^"|"$/g,""));return te(t.pos-i.length,l)}const s=t.matchBefore(/[A-Za-z_][\w]*$/);if(t.explicit&&s){const a=await ee("column",s.text);return te(s.from,a)}return null};function te(t,e){return{from:t,options:e.map(r=>({label:r.label||r.name,apply:r.apply??r.name,detail:[r.detail,r.relation,r.governance].filter(Boolean).join(" · "),info:r.description,type:r.type==="column"?"property":r.type==="dataset"?"class":"variable",boost:r.governance==="semantic"||r.governance==="project_controlled"?20:0})),validFor:/^[\w."-]*$/}}function Yt(t,e){var n;return(n=new RegExp(`\\b(?:from|join)\\s+([\\w."-]+)(?:\\s+(?:as\\s+)?${Jt(e)})\\b`,"i").exec(t))==null?void 0:n[1]}function Jt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function be(t,e){const r=t?de({schema:t,upperCaseKeywords:!1}):de({upperCaseKeywords:!1}),n=[r,r.language.data.of({autocomplete:je}),r.language.data.of({autocomplete:Ht})];return e&&n.push(r.language.data.of({autocomplete:Zt})),n}function Xt(t){const e=t.match(/LINE\s+(\d+)/i);if(e){const s=parseInt(e[1],10),a=t.match(/\n(\s*)\^/),i=a?a[1].length+1:1;return{line:s,col:i}}const r=t.match(/at line\s+(\d+),?\s*column\s+(\d+)/i);if(r)return{line:parseInt(r[1],10),col:parseInt(r[2],10)};const n=t.match(/line\s+(\d+)/i);return n?{line:parseInt(n[1],10),col:1}:null}const N=Z.define(),re=kt.define(),er=Se.define({create(){return R.none},update(t,e){for(const r of e.effects)if(r.is(N)){if(!r.value)return R.none;const{from:n,to:s,message:a}=r.value;return R.set([R.mark({class:"cm-sql-error",attributes:{title:a}}).range(n,s)])}return t},provide:t=>g.decorations.from(t)}),tr=Ct.define([{tag:u.keyword,color:"var(--sql-keyword)",fontWeight:"600"},{tag:[u.controlKeyword,u.moduleKeyword],color:"var(--sql-keyword)",fontWeight:"600"},{tag:[u.string,u.special(u.string)],color:"var(--sql-string)"},{tag:u.number,color:"var(--sql-number)"},{tag:u.bool,color:"var(--sql-number)",fontWeight:"600"},{tag:u.null,color:"var(--sql-number)",fontWeight:"600"},{tag:[u.comment,u.lineComment,u.blockComment,u.docComment],color:"var(--sql-comment)",fontStyle:"italic"},{tag:[u.function(u.variableName),u.function(u.propertyName)],color:"var(--sql-function)"},{tag:[u.typeName,u.className],color:"var(--sql-type)"},{tag:u.operator,color:"var(--sql-punctuation)"},{tag:u.punctuation,color:"var(--sql-punctuation)"},{tag:u.bracket,color:"var(--sql-punctuation)"},{tag:[u.variableName,u.name,u.propertyName,u.attributeName],color:"var(--sql-ident)"},{tag:u.invalid,color:"var(--color-status-error)"}]),rr=g.baseTheme({".cm-sql-error":{textDecoration:"underline wavy var(--color-status-error)",textUnderlineOffset:"3px",background:"color-mix(in srgb, var(--color-status-error) 10%, transparent)"}});function We(t){return g.theme({"&":{background:"transparent",color:"var(--color-text-primary)"},".cm-content":{caretColor:"var(--color-text-primary)"},".cm-cursor":{borderLeftColor:"var(--color-text-primary)"},".cm-selectionBackground":{background:"color-mix(in srgb, var(--color-accent-blue) 30%, transparent)"},"&.cm-focused .cm-selectionBackground":{background:"color-mix(in srgb, var(--color-accent-blue) 30%, transparent)"},".cm-gutters":{background:"transparent",color:"var(--color-text-tertiary)",border:"none",borderRight:"1px solid var(--color-border-subtle)"},".cm-activeLineGutter":{background:"transparent"},".cm-activeLine":{background:"transparent"},"&.cm-focused .cm-activeLineGutter":{background:"var(--color-bg-hover)"},"&.cm-focused .cm-activeLine":{background:"var(--color-bg-hover)"},".cm-matchingBracket":{background:"color-mix(in srgb, var(--color-accent-blue) 18%, transparent)",outline:"1px solid var(--color-accent-blue)"},".cm-foldPlaceholder":{background:"var(--color-bg-tertiary)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-secondary)",borderRadius:3,padding:"0 4px"},".cm-tooltip":{background:"var(--color-bg-card)",border:"1px solid var(--color-border-primary)",color:"var(--color-text-primary)",borderRadius:6,boxShadow:"0 4px 12px color-mix(in srgb, var(--color-bg-primary) 40%, transparent)"},".cm-tooltip.cm-tooltip-autocomplete":{"& > ul > li":{padding:"3px 8px"},"& > ul > li[aria-selected]":{background:"color-mix(in srgb, var(--color-accent-blue) 20%, transparent)",color:"var(--color-accent-blue)"}},".cm-searchMatch":{background:"color-mix(in srgb, var(--color-status-warning) 25%, transparent)",outline:"1px solid var(--color-status-warning)"},".cm-searchMatch.cm-searchMatch-selected":{background:"color-mix(in srgb, var(--color-status-warning) 50%, transparent)"},".cm-panels":{background:"var(--color-bg-secondary)",borderTop:"1px solid var(--color-border-subtle)"},".cm-panel":{padding:"6px 8px"},".cm-panel input":{background:"var(--color-bg-sunken)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-primary)",borderRadius:4,padding:"2px 6px",fontSize:12},".cm-panel button":{background:"var(--color-bg-tertiary)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-primary)",borderRadius:4,padding:"2px 8px",cursor:"pointer",fontSize:12,marginLeft:4}},{dark:t})}const nr=We(!0),sr=We(!1);function ar(t){return t==="midnight"||t==="obsidian"||t==="dark"}function ir({value:t,onChange:e,onRun:r,themeMode:n,autoFocus:s,schema:a,errorMessage:i,editorRef:o,wrap:l=!0,fillHeight:c=!1,dqlMode:m=!1}){const w=_e[n],k=v.useRef(null),f=v.useRef(null),[T,q]=v.useState(!1),E=v.useRef(r),ce=v.useRef(e),ue=v.useRef(new rt);return E.current=r,ce.current=e,v.useEffect(()=>{o&&(o.current={undo:()=>{f.current&&st(f.current)},redo:()=>{f.current&&nt(f.current)},resetTo:h=>{const p=f.current;p&&p.dispatch({changes:{from:0,to:p.state.doc.length,insert:h},annotations:re.of(!0)})}})}),v.useEffect(()=>{if(!k.current)return;const h=at.of([{key:"Shift-Enter",run:()=>(E.current(),!0)},{key:"Ctrl-Enter",mac:"Cmd-Enter",run:()=>(E.current(),!0)},{key:"Ctrl-/",mac:"Cmd-/",run:it},ot,...lt,...ct,...ut,...Nt,...ht,...dt]),p=g.updateListener.of(P=>{const D=P.transactions.some(De=>De.annotation(re));P.docChanged&&!D&&ce.current(P.state.doc.toString())}),x=g.domEventHandlers({focus:(P,D)=>{Oe(D)},blur:(P,D)=>{ze(D)}}),C=g.theme({"&":{background:"var(--color-bg-surface)",color:"var(--color-text-primary)",fontFamily:"var(--font-mono)",fontSize:"13px",minHeight:c?"100%":"80px",maxHeight:c?"none":"480px",...c?{height:"100%"}:{}},".cm-scroller":{overflow:"auto",fontFamily:"inherit",...c?{height:"100%"}:{}},".cm-content":{padding:"10px 0",minHeight:c?"100%":"80px",color:"var(--color-text-primary)"},"&.cm-focused":{outline:"none"},".cm-editor":{border:"none"},".cm-gutters":{minWidth:40},".cm-foldGutter":{cursor:"pointer"}}),j=be(a,m),H=[h,p,x,C,ue.current.of(j),ft({closeOnBlur:!1}),pt(),mt(),gt(),xt(),bt(),yt(),vt(),St(),...l?[g.lineWrapping]:[],qt({top:!0}),er,rr,wt(tr),ar(n)?nr:sr],Pe=we.create({doc:t,extensions:H}),Y=new g({state:Pe,parent:k.current});return f.current=Y,s&&Y.focus(),()=>{Y.destroy(),f.current=null}},[n]),v.useEffect(()=>{const h=f.current;h&&h.dispatch({effects:ue.current.reconfigure(be(a,m))})},[a,m]),v.useEffect(()=>{const h=f.current;if(!h)return;const p=h.state.doc.toString();p!==t&&h.dispatch({changes:{from:0,to:p.length,insert:t},annotations:re.of(!0)})},[t]),v.useEffect(()=>{const h=f.current;if(!h)return;if(!i){h.dispatch({effects:N.of(null)});return}const p=Xt(i),x=h.state.doc;if(p&&p.line>=1&&p.line<=x.lines){const C=x.line(p.line),j=C.from+Math.max(0,p.col-1),H=Math.max(j+1,C.to);h.dispatch({effects:N.of({from:Math.min(j,x.length),to:Math.min(H,x.length),message:i})})}else if(x.lines>=1){const C=x.line(1);h.dispatch({effects:N.of({from:C.from,to:Math.max(C.from+1,C.to),message:i})})}},[i]),d.jsx("div",{onDragOver:h=>{h.dataTransfer.types.includes(he)&&(h.preventDefault(),q(!0))},onDragLeave:()=>q(!1),onDrop:h=>{const p=f.current;if(!p)return;const x=Be(h.dataTransfer.getData(he));x&&(h.preventDefault(),q(!1),Ie(p,x.reference,{x:h.clientX,y:h.clientY}),Te.trackUsage(x.name),window.dispatchEvent(new CustomEvent("dql:semantic-used",{detail:{name:x.name}})))},style:{background:"var(--color-bg-surface)",height:c?"100%":void 0,minHeight:c?0:80,border:T?`1px solid ${w.accent}`:"1px solid transparent",borderRadius:c?0:6,transition:"border-color 0.15s",overflow:"hidden"},children:d.jsx("div",{ref:k,style:{height:c?"100%":void 0,minHeight:c?0:80}})})}ir.displayName="SQLCellEditor";function or({path:t,onNodeClick:e,focalNodeId:r,t:n}){return t.nodes.length===0?null:d.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignItems:"center"},children:t.nodes.map((s,a)=>d.jsxs(ye.Fragment,{children:[d.jsx(lr,{node:s,isFocal:s.id===r,onClick:e?()=>e(s.id):void 0,t:n}),a<t.nodes.length-1&&d.jsx("span",{style:{color:n.textMuted,fontSize:10,lineHeight:1},children:"→"})]},s.id))})}function hr({title:t,paths:e,onNodeClick:r,focalNodeId:n,maxVisible:s=4,t:a}){const[i,o]=ye.useState(!1),l=i?e:e.slice(0,s),c=e.length>s;return e.length===0?null:d.jsxs("div",{style:{border:`1px solid ${a.cellBorder}`,borderRadius:10,overflow:"hidden",background:a.inputBg},children:[d.jsxs("div",{style:{padding:"8px 12px",borderBottom:`1px solid ${a.cellBorder}`,fontSize:11,fontWeight:700,color:a.textMuted,fontFamily:a.font,textTransform:"uppercase",letterSpacing:"0.04em",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[d.jsx("span",{children:t}),d.jsxs("span",{style:{fontWeight:400,fontSize:10},children:[e.length," path",e.length!==1?"s":""]})]}),d.jsxs("div",{style:{display:"grid",gap:8,padding:10},children:[l.map((m,w)=>d.jsx(or,{path:m,onNodeClick:r,focalNodeId:n,t:a},`path-${w}`)),c&&!i&&d.jsxs("button",{onClick:()=>o(!0),style:{background:"none",border:"none",color:a.accent,cursor:"pointer",fontSize:11,fontFamily:a.font,padding:"2px 0",textAlign:"left"},children:["Show ",e.length-s," more path",e.length-s!==1?"s":"","..."]})]})]})}function lr({node:t,isFocal:e,onClick:r,t:n}){const s=Ne[t.type]??"#8b949e",a=Ke[t.type]??t.type.slice(0,3).toUpperCase();return d.jsxs("button",{onClick:r,disabled:!r,style:{display:"inline-flex",alignItems:"center",gap:4,background:e?`${s}18`:n.pillBg??`${n.cellBg}`,border:`1px solid ${e?s:n.cellBorder}`,borderRadius:999,color:n.textPrimary,cursor:r?"pointer":"default",fontSize:10,fontFamily:n.font,padding:"3px 8px",transition:"border-color 0.15s",whiteSpace:"nowrap",maxWidth:180},title:`${t.type}: ${t.name}${t.domain?` (${t.domain})`:""}`,children:[d.jsx("span",{style:{fontSize:8,fontWeight:700,color:"#0d1117",background:s,borderRadius:3,padding:"1px 3px",flexShrink:0},children:a}),d.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.name})]})}function dr({layerSummary:t,t:e}){const r=["source","transform","answer","consumption"];if(Object.values(t).reduce((i,o)=>i+o,0)===0)return null;const s={source:"#79c0ff",transform:"#ff7b72",answer:"#56d364",consumption:"#d2a8ff"},a={source:"Sources",transform:"Transform",answer:"Answer",consumption:"Consumption"};return d.jsx("div",{style:{display:"flex",gap:10,fontSize:10,color:e.textMuted,fontFamily:e.font},children:r.map(i=>{const o=t[i]??0;return o===0?null:d.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:[d.jsx("span",{style:{width:8,height:8,borderRadius:2,background:s[i],display:"inline-block"}}),a[i],": ",o]},i)})})}export{or as L,ir as S,dr as a,hr as b};
14
+ """`}],Zt={chart:["bar","line","area","column","combo","pie","donut","scatter","histogram","heatmap","number","single_value","table"],viz:["bar","line","area","column","combo","pie","donut","scatter","histogram","heatmap","number","single_value","table"],type:["bar","line","area","column","combo","pie","donut","scatter","histogram","heatmap","number","single_value","table"],pattern:["metric_wrapper","entity_profile","entity_rollup","ranking","trend","bridge","drilldown","replacement","custom"],reviewCadence:["daily","weekly","monthly","quarterly","annually"],status:["draft","certified"],type_block:["custom","semantic"]};function Gt(t){return(t.match(/"""/g)??[]).length%2===1}function ge(t){return{label:t.name,type:"property",detail:t.detail,apply:t.snippet?Ut(t.snippet):`${t.name} = `}}function Ut(t){return(e,r,n,s)=>{const a=t.indexOf("$0"),i=t.replace("$0",""),o=a>=0?n+a:n+i.length;e.dispatch({changes:{from:n,to:s,insert:i},selection:{anchor:o}})}}const Vt=t=>{const e=t.state.doc.lineAt(t.pos),r=t.state.sliceDoc(0,t.pos),n=r.slice(e.from);if(Gt(r))return null;const s=/([a-zA-Z_]+)\s*=\s*"([^"]*)$/.exec(n);if(s){const i=Zt[s[1]];if(i){const o=t.pos-s[2].length,l=s[2].toLowerCase();return{from:o,options:i.filter(c=>!l||c.toLowerCase().includes(l)).map(c=>({label:c,type:"enum"})),validFor:/^[\w-]*$/}}return null}const a=t.matchBefore(/[a-zA-Z_]+/);if(a&&/^\s*[a-zA-Z_]+$/.test(n)){const i=a.text.toLowerCase();return{from:a.from,options:me.filter(o=>o.name.toLowerCase().startsWith(i)||o.name.toLowerCase().includes(i)).map(ge),validFor:/^[a-zA-Z_]*$/}}return t.explicit&&/^\s*$/.test(n)?{from:t.pos,options:me.map(ge)}:null},xe=new Map;async function ee(t,e,r){const n=`${t}:${r??""}:${e}`.toLowerCase(),s=xe.get(n);if(s&&s.expiresAt>Date.now())return s.items;const a=new URLSearchParams({kind:t,q:e,limit:"60"});r&&a.set("relation",r);const i=await fetch(`${window.location.origin}/api/editor/completions?${a}`);if(!i.ok)return[];const o=await i.json(),l=Array.isArray(o.completions)?o.completions:[];return xe.set(n,{items:l,expiresAt:Date.now()+2e4}),l}const Ht=async t=>{const e=t.state.sliceDoc(0,t.pos),r=/\b(?:from|join)\s+([\w."-]*)$/i.exec(e);if(r){const a=r[1].replace(/^"/,""),i=await ee("relation",a);return te(t.pos-r[1].length,i)}const n=/([A-Za-z_][\w]*)\.([A-Za-z_][\w]*)?$/.exec(e);if(n){const a=n[1],i=n[2]??"",o=Yt(e,a)??a,l=await ee("column",i,o.replace(/^"|"$/g,""));return te(t.pos-i.length,l)}const s=t.matchBefore(/[A-Za-z_][\w]*$/);if(t.explicit&&s){const a=await ee("column",s.text);return te(s.from,a)}return null};function te(t,e){return{from:t,options:e.map(r=>({label:r.label||r.name,apply:r.apply??r.name,detail:[r.detail,r.relation,r.governance].filter(Boolean).join(" · "),info:r.description,type:r.type==="column"?"property":r.type==="dataset"?"class":"variable",boost:r.governance==="semantic"||r.governance==="project_controlled"?20:0})),validFor:/^[\w."-]*$/}}function Yt(t,e){var n;return(n=new RegExp(`\\b(?:from|join)\\s+([\\w."-]+)(?:\\s+(?:as\\s+)?${Jt(e)})\\b`,"i").exec(t))==null?void 0:n[1]}function Jt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function be(t,e){const r=t?de({schema:t,upperCaseKeywords:!1}):de({upperCaseKeywords:!1}),n=[r,r.language.data.of({autocomplete:je}),r.language.data.of({autocomplete:Ht})];return e&&n.push(r.language.data.of({autocomplete:Vt})),n}function Xt(t){const e=t.match(/LINE\s+(\d+)/i);if(e){const s=parseInt(e[1],10),a=t.match(/\n(\s*)\^/),i=a?a[1].length+1:1;return{line:s,col:i}}const r=t.match(/at line\s+(\d+),?\s*column\s+(\d+)/i);if(r)return{line:parseInt(r[1],10),col:parseInt(r[2],10)};const n=t.match(/line\s+(\d+)/i);return n?{line:parseInt(n[1],10),col:1}:null}const N=V.define(),re=kt.define(),er=Se.define({create(){return q.none},update(t,e){for(const r of e.effects)if(r.is(N)){if(!r.value)return q.none;const{from:n,to:s,message:a}=r.value;return q.set([q.mark({class:"cm-sql-error",attributes:{title:a}}).range(n,s)])}return t},provide:t=>g.decorations.from(t)}),tr=Ct.define([{tag:u.keyword,color:"var(--sql-keyword)",fontWeight:"600"},{tag:[u.controlKeyword,u.moduleKeyword],color:"var(--sql-keyword)",fontWeight:"600"},{tag:[u.string,u.special(u.string)],color:"var(--sql-string)"},{tag:u.number,color:"var(--sql-number)"},{tag:u.bool,color:"var(--sql-number)",fontWeight:"600"},{tag:u.null,color:"var(--sql-number)",fontWeight:"600"},{tag:[u.comment,u.lineComment,u.blockComment,u.docComment],color:"var(--sql-comment)",fontStyle:"italic"},{tag:[u.function(u.variableName),u.function(u.propertyName)],color:"var(--sql-function)"},{tag:[u.typeName,u.className],color:"var(--sql-type)"},{tag:u.operator,color:"var(--sql-punctuation)"},{tag:u.punctuation,color:"var(--sql-punctuation)"},{tag:u.bracket,color:"var(--sql-punctuation)"},{tag:[u.variableName,u.name,u.propertyName,u.attributeName],color:"var(--sql-ident)"},{tag:u.invalid,color:"var(--color-status-error)"}]),rr=g.baseTheme({".cm-sql-error":{textDecoration:"underline wavy var(--color-status-error)",textUnderlineOffset:"3px",background:"color-mix(in srgb, var(--color-status-error) 10%, transparent)"}});function We(t){return g.theme({"&":{background:"transparent",color:"var(--color-text-primary)"},".cm-content":{caretColor:"var(--color-text-primary)"},".cm-cursor":{borderLeftColor:"var(--color-text-primary)"},".cm-selectionBackground":{background:"color-mix(in srgb, var(--color-accent-blue) 30%, transparent)"},"&.cm-focused .cm-selectionBackground":{background:"color-mix(in srgb, var(--color-accent-blue) 30%, transparent)"},".cm-gutters":{background:"transparent",color:"var(--color-text-tertiary)",border:"none",borderRight:"1px solid var(--color-border-subtle)"},".cm-activeLineGutter":{background:"transparent"},".cm-activeLine":{background:"transparent"},"&.cm-focused .cm-activeLineGutter":{background:"var(--color-bg-hover)"},"&.cm-focused .cm-activeLine":{background:"var(--color-bg-hover)"},".cm-matchingBracket":{background:"color-mix(in srgb, var(--color-accent-blue) 18%, transparent)",outline:"1px solid var(--color-accent-blue)"},".cm-foldPlaceholder":{background:"var(--color-bg-tertiary)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-secondary)",borderRadius:3,padding:"0 4px"},".cm-tooltip":{background:"var(--color-bg-card)",border:"1px solid var(--color-border-primary)",color:"var(--color-text-primary)",borderRadius:6,boxShadow:"0 4px 12px color-mix(in srgb, var(--color-bg-primary) 40%, transparent)"},".cm-tooltip.cm-tooltip-autocomplete":{"& > ul > li":{padding:"3px 8px"},"& > ul > li[aria-selected]":{background:"color-mix(in srgb, var(--color-accent-blue) 20%, transparent)",color:"var(--color-accent-blue)"}},".cm-searchMatch":{background:"color-mix(in srgb, var(--color-status-warning) 25%, transparent)",outline:"1px solid var(--color-status-warning)"},".cm-searchMatch.cm-searchMatch-selected":{background:"color-mix(in srgb, var(--color-status-warning) 50%, transparent)"},".cm-panels":{background:"var(--color-bg-secondary)",borderTop:"1px solid var(--color-border-subtle)"},".cm-panel":{padding:"6px 8px"},".cm-panel input":{background:"var(--color-bg-sunken)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-primary)",borderRadius:4,padding:"2px 6px",fontSize:12},".cm-panel button":{background:"var(--color-bg-tertiary)",border:"1px solid var(--color-border-subtle)",color:"var(--color-text-primary)",borderRadius:4,padding:"2px 8px",cursor:"pointer",fontSize:12,marginLeft:4}},{dark:t})}const nr=We(!0),sr=We(!1);function ar(t){return t==="midnight"||t==="obsidian"||t==="dark"}function ir({value:t,onChange:e,onRun:r,themeMode:n,autoFocus:s,schema:a,errorMessage:i,editorRef:o,wrap:l=!0,fillHeight:c=!1,dqlMode:m=!1}){const w=_e[n],k=v.useRef(null),f=v.useRef(null),[T,A]=v.useState(!1),E=v.useRef(r),ce=v.useRef(e),ue=v.useRef(new rt);return E.current=r,ce.current=e,v.useEffect(()=>{o&&(o.current={undo:()=>{f.current&&st(f.current)},redo:()=>{f.current&&nt(f.current)},resetTo:h=>{const p=f.current;p&&p.dispatch({changes:{from:0,to:p.state.doc.length,insert:h},annotations:re.of(!0)})}})}),v.useEffect(()=>{if(!k.current)return;const h=at.of([{key:"Shift-Enter",run:()=>(E.current(),!0)},{key:"Ctrl-Enter",mac:"Cmd-Enter",run:()=>(E.current(),!0)},{key:"Ctrl-/",mac:"Cmd-/",run:it},ot,...lt,...ct,...ut,...Nt,...ht,...dt]),p=g.updateListener.of(P=>{const D=P.transactions.some(De=>De.annotation(re));P.docChanged&&!D&&ce.current(P.state.doc.toString())}),x=g.domEventHandlers({focus:(P,D)=>{Oe(D)},blur:(P,D)=>{ze(D)}}),C=g.theme({"&":{background:"var(--color-bg-surface)",color:"var(--color-text-primary)",fontFamily:"var(--font-mono)",fontSize:"13px",minHeight:c?"100%":"80px",maxHeight:c?"none":"480px",...c?{height:"100%"}:{}},".cm-scroller":{overflow:"auto",fontFamily:"inherit",...c?{height:"100%"}:{}},".cm-content":{padding:"10px 0",minHeight:c?"100%":"80px",color:"var(--color-text-primary)"},"&.cm-focused":{outline:"none"},".cm-editor":{border:"none"},".cm-gutters":{minWidth:40},".cm-foldGutter":{cursor:"pointer"}}),j=be(a,m),H=[h,p,x,C,ue.current.of(j),ft({closeOnBlur:!1}),pt(),mt(),gt(),xt(),bt(),yt(),vt(),St(),...l?[g.lineWrapping]:[],At({top:!0}),er,rr,wt(tr),ar(n)?nr:sr],Pe=we.create({doc:t,extensions:H}),Y=new g({state:Pe,parent:k.current});return f.current=Y,s&&Y.focus(),()=>{Y.destroy(),f.current=null}},[n]),v.useEffect(()=>{const h=f.current;h&&h.dispatch({effects:ue.current.reconfigure(be(a,m))})},[a,m]),v.useEffect(()=>{const h=f.current;if(!h)return;const p=h.state.doc.toString();p!==t&&h.dispatch({changes:{from:0,to:p.length,insert:t},annotations:re.of(!0)})},[t]),v.useEffect(()=>{const h=f.current;if(!h)return;if(!i){h.dispatch({effects:N.of(null)});return}const p=Xt(i),x=h.state.doc;if(p&&p.line>=1&&p.line<=x.lines){const C=x.line(p.line),j=C.from+Math.max(0,p.col-1),H=Math.max(j+1,C.to);h.dispatch({effects:N.of({from:Math.min(j,x.length),to:Math.min(H,x.length),message:i})})}else if(x.lines>=1){const C=x.line(1);h.dispatch({effects:N.of({from:C.from,to:Math.max(C.from+1,C.to),message:i})})}},[i]),d.jsx("div",{onDragOver:h=>{h.dataTransfer.types.includes(he)&&(h.preventDefault(),A(!0))},onDragLeave:()=>A(!1),onDrop:h=>{const p=f.current;if(!p)return;const x=Be(h.dataTransfer.getData(he));x&&(h.preventDefault(),A(!1),Ie(p,x.reference,{x:h.clientX,y:h.clientY}),Te.trackUsage(x.name),window.dispatchEvent(new CustomEvent("dql:semantic-used",{detail:{name:x.name}})))},style:{background:"var(--color-bg-surface)",height:c?"100%":void 0,minHeight:c?0:80,border:T?`1px solid ${w.accent}`:"1px solid transparent",borderRadius:c?0:6,transition:"border-color 0.15s",overflow:"hidden"},children:d.jsx("div",{ref:k,style:{height:c?"100%":void 0,minHeight:c?0:80}})})}ir.displayName="SQLCellEditor";function or({path:t,onNodeClick:e,focalNodeId:r,t:n}){return t.nodes.length===0?null:d.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignItems:"center"},children:t.nodes.map((s,a)=>d.jsxs(ye.Fragment,{children:[d.jsx(lr,{node:s,isFocal:s.id===r,onClick:e?()=>e(s.id):void 0,t:n}),a<t.nodes.length-1&&d.jsx("span",{style:{color:n.textMuted,fontSize:10,lineHeight:1},children:"→"})]},s.id))})}function hr({title:t,paths:e,onNodeClick:r,focalNodeId:n,maxVisible:s=4,t:a}){const[i,o]=ye.useState(!1),l=i?e:e.slice(0,s),c=e.length>s;return e.length===0?null:d.jsxs("div",{style:{border:`1px solid ${a.cellBorder}`,borderRadius:10,overflow:"hidden",background:a.inputBg},children:[d.jsxs("div",{style:{padding:"8px 12px",borderBottom:`1px solid ${a.cellBorder}`,fontSize:11,fontWeight:700,color:a.textMuted,fontFamily:a.font,textTransform:"uppercase",letterSpacing:"0.04em",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[d.jsx("span",{children:t}),d.jsxs("span",{style:{fontWeight:400,fontSize:10},children:[e.length," path",e.length!==1?"s":""]})]}),d.jsxs("div",{style:{display:"grid",gap:8,padding:10},children:[l.map((m,w)=>d.jsx(or,{path:m,onNodeClick:r,focalNodeId:n,t:a},`path-${w}`)),c&&!i&&d.jsxs("button",{onClick:()=>o(!0),style:{background:"none",border:"none",color:a.accent,cursor:"pointer",fontSize:11,fontFamily:a.font,padding:"2px 0",textAlign:"left"},children:["Show ",e.length-s," more path",e.length-s!==1?"s":"","..."]})]})]})}function lr({node:t,isFocal:e,onClick:r,t:n}){const s=Ne[t.type]??"#8b949e",a=Ke[t.type]??t.type.slice(0,3).toUpperCase();return d.jsxs("button",{onClick:r,disabled:!r,style:{display:"inline-flex",alignItems:"center",gap:4,background:e?`${s}18`:n.pillBg??`${n.cellBg}`,border:`1px solid ${e?s:n.cellBorder}`,borderRadius:999,color:n.textPrimary,cursor:r?"pointer":"default",fontSize:10,fontFamily:n.font,padding:"3px 8px",transition:"border-color 0.15s",whiteSpace:"nowrap",maxWidth:180},title:`${t.type}: ${t.name}${t.domain?` (${t.domain})`:""}`,children:[d.jsx("span",{style:{fontSize:8,fontWeight:700,color:"#0d1117",background:s,borderRadius:3,padding:"1px 3px",flexShrink:0},children:a}),d.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.name})]})}function dr({layerSummary:t,t:e}){const r=["source","transform","answer","consumption"];if(Object.values(t).reduce((i,o)=>i+o,0)===0)return null;const s={source:"#79c0ff",transform:"#ff7b72",answer:"#56d364",consumption:"#d2a8ff"},a={source:"Sources",transform:"Transform",answer:"Answer",consumption:"Consumption"};return d.jsx("div",{style:{display:"flex",gap:10,fontSize:10,color:e.textMuted,fontFamily:e.font},children:r.map(i=>{const o=t[i]??0;return o===0?null:d.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:[d.jsx("span",{style:{width:8,height:8,borderRadius:2,background:s[i],display:"inline-block"}}),a[i],": ",o]},i)})})}export{or as L,ir as S,dr as a,hr as b};
@@ -1 +1 @@
1
- import{j as t,r as h,at as O,au as x,av as S,n as L,l as C}from"./index-BTuliKhK.js";import{R as N,u as T,a as D,d as z,M as _,i as F,B as G,T as b,H as m,c as v}from"./dagre.esm-CycymVj6.js";function A(e,c,a={}){var s;if(e.length===0)return e;const n=new b.graphlib.Graph().setDefaultEdgeLabel(()=>({}));n.setGraph({rankdir:"LR",ranksep:60,nodesep:30,marginx:20,marginy:20});for(const o of e){const i={width:170,height:52};if(a.mode==="layered"&&((s=o.data)!=null&&s.layer)){const d=S.indexOf(o.data.layer);d>=0&&(i.rank=d)}n.setNode(o.id,i)}for(const o of c)n.setEdge(o.source,o.target);return b.layout(n),e.map(o=>{const i=n.node(o.id);return{...o,position:{x:i.x-85,y:i.y-26}}})}function M({data:e,selected:c}){const a=e.nodeType,n=e.isFocal,s=C[a]??"var(--color-text-tertiary)",o=L[a]??a.toUpperCase();return t.jsxs("div",{style:{minWidth:140,maxWidth:190,background:"var(--color-bg-card)",border:`2px solid ${n||c?"var(--color-accent-blue)":s}`,borderRadius:8,padding:"6px 8px",boxShadow:n?"0 0 0 2px color-mix(in srgb, var(--color-accent-blue) 25%, transparent)":"none"},children:[t.jsx(m,{type:"target",position:v.Left,style:{width:6,height:6,background:s,border:"none"}}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:2},children:[t.jsx("span",{style:{fontSize:8,fontWeight:700,letterSpacing:"0.04em",color:"var(--color-bg-card)",background:s,borderRadius:3,padding:"1px 4px"},children:o}),e.domain&&t.jsx("span",{style:{color:"var(--color-text-tertiary)",fontSize:9},children:e.domain})]}),t.jsx("div",{style:{color:"var(--color-text-primary)",fontSize:10,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e.label,children:e.label}),t.jsx(m,{type:"source",position:v.Right,style:{width:6,height:6,background:s,border:"none"}})]})}const W={miniDagNode:M};function B({nodes:e,edges:c,focalNodeId:a,height:n=250,onNodeClick:s,interactive:o=!0,layoutMode:i="flow",fitViewPadding:d=.15}){const[E,f,R]=T([]),[w,y,j]=D([]),{fitView:p}=z(),u=h.useRef(null);return h.useEffect(()=>{const g=e.map(r=>({id:r.id,type:"miniDagNode",position:{x:0,y:0},data:{label:r.name,nodeType:r.type,domain:r.domain,layer:O(r),isFocal:r.id===a}})),l=c.map((r,k)=>({id:`mini-edge-${k}-${r.source}-${r.target}`,source:r.source,target:r.target,style:{stroke:x[r.type]??"#8b949e",strokeWidth:1.4},markerEnd:{type:_.ArrowClosed,color:x[r.type]??"#8b949e",width:10,height:10}}));f(A(g,l,{mode:i})),y(l),requestAnimationFrame(()=>{p({padding:d,duration:200})})},[e,c,a,i,d,f,y,p]),h.useEffect(()=>{if(!u.current)return;const g=u.current,l=new ResizeObserver(()=>{p({padding:d,duration:0})});return l.observe(g),()=>l.disconnect()},[p,d]),e.length===0?t.jsx("div",{style:{height:n,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--color-text-tertiary)",fontSize:11},children:"No lineage nodes to display"}):t.jsx("div",{ref:u,style:{height:n,width:"100%",borderRadius:8,overflow:"hidden",border:"1px solid var(--color-border-subtle)"},children:t.jsx(F,{nodes:E,edges:w,onNodesChange:o?R:void 0,onEdgesChange:o?j:void 0,onNodeClick:s?(g,l)=>s(l.id):void 0,nodeTypes:W,fitView:!0,fitViewOptions:{padding:d},minZoom:.25,proOptions:{hideAttribution:!0},nodesDraggable:o,nodesConnectable:!1,zoomOnScroll:o,panOnDrag:o,style:{background:"var(--color-bg-sunken)"},children:t.jsx(G,{color:"var(--color-border-subtle)",gap:20,size:1})})})}function I(e){return t.jsx(N,{children:t.jsx(B,{...e})})}export{I as M};
1
+ import{j as t,r as h,az as O,aA as x,aB as S,q as L,p as C}from"./index-Cpx47jCH.js";import{R as N,u as T,a as D,d as z,M as _,i as A,B as F,T as b,H as m,c as v}from"./dagre.esm-DlZi7NR3.js";function G(e,c,a={}){var s;if(e.length===0)return e;const n=new b.graphlib.Graph().setDefaultEdgeLabel(()=>({}));n.setGraph({rankdir:"LR",ranksep:60,nodesep:30,marginx:20,marginy:20});for(const o of e){const i={width:170,height:52};if(a.mode==="layered"&&((s=o.data)!=null&&s.layer)){const d=S.indexOf(o.data.layer);d>=0&&(i.rank=d)}n.setNode(o.id,i)}for(const o of c)n.setEdge(o.source,o.target);return b.layout(n),e.map(o=>{const i=n.node(o.id);return{...o,position:{x:i.x-85,y:i.y-26}}})}function B({data:e,selected:c}){const a=e.nodeType,n=e.isFocal,s=C[a]??"var(--color-text-tertiary)",o=L[a]??a.toUpperCase();return t.jsxs("div",{style:{minWidth:140,maxWidth:190,background:"var(--color-bg-card)",border:`2px solid ${n||c?"var(--color-accent-blue)":s}`,borderRadius:8,padding:"6px 8px",boxShadow:n?"0 0 0 2px color-mix(in srgb, var(--color-accent-blue) 25%, transparent)":"none"},children:[t.jsx(m,{type:"target",position:v.Left,style:{width:6,height:6,background:s,border:"none"}}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:2},children:[t.jsx("span",{style:{fontSize:8,fontWeight:700,letterSpacing:"0.04em",color:"var(--color-bg-card)",background:s,borderRadius:3,padding:"1px 4px"},children:o}),e.domain&&t.jsx("span",{style:{color:"var(--color-text-tertiary)",fontSize:9},children:e.domain})]}),t.jsx("div",{style:{color:"var(--color-text-primary)",fontSize:10,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e.label,children:e.label}),t.jsx(m,{type:"source",position:v.Right,style:{width:6,height:6,background:s,border:"none"}})]})}const M={miniDagNode:B};function W({nodes:e,edges:c,focalNodeId:a,height:n=250,onNodeClick:s,interactive:o=!0,layoutMode:i="flow",fitViewPadding:d=.15}){const[E,f,R]=T([]),[w,y,j]=D([]),{fitView:p}=z(),u=h.useRef(null);return h.useEffect(()=>{const g=e.map(r=>({id:r.id,type:"miniDagNode",position:{x:0,y:0},data:{label:r.name,nodeType:r.type,domain:r.domain,layer:O(r),isFocal:r.id===a}})),l=c.map((r,k)=>({id:`mini-edge-${k}-${r.source}-${r.target}`,source:r.source,target:r.target,style:{stroke:x[r.type]??"#8b949e",strokeWidth:1.4},markerEnd:{type:_.ArrowClosed,color:x[r.type]??"#8b949e",width:10,height:10}}));f(G(g,l,{mode:i})),y(l),requestAnimationFrame(()=>{p({padding:d,duration:200})})},[e,c,a,i,d,f,y,p]),h.useEffect(()=>{if(!u.current)return;const g=u.current,l=new ResizeObserver(()=>{p({padding:d,duration:0})});return l.observe(g),()=>l.disconnect()},[p,d]),e.length===0?t.jsx("div",{style:{height:n,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--color-text-tertiary)",fontSize:11},children:"No lineage nodes to display"}):t.jsx("div",{ref:u,style:{height:n,width:"100%",borderRadius:8,overflow:"hidden",border:"1px solid var(--color-border-subtle)"},children:t.jsx(A,{nodes:E,edges:w,onNodesChange:o?R:void 0,onEdgesChange:o?j:void 0,onNodeClick:s?(g,l)=>s(l.id):void 0,nodeTypes:M,fitView:!0,fitViewOptions:{padding:d},minZoom:.25,proOptions:{hideAttribution:!0},nodesDraggable:o,nodesConnectable:!1,zoomOnScroll:o,panOnDrag:o,style:{background:"var(--color-bg-sunken)"},children:t.jsx(F,{color:"var(--color-border-subtle)",gap:20,size:1})})})}function I(e){return t.jsx(N,{children:t.jsx(W,{...e})})}export{I as M};
@@ -1 +1 @@
1
- import{u as w,t as z,r as l,M as O,j as t,a as D}from"./index-BTuliKhK.js";import"./react-CRB3T2We.js";function F(s,i,a,e){var d;const n=a.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,""),p=`${n?`${n}/`:""}${e}.dql`;if(!i)return`blocks/${p}`;const r=s.find(g=>g.id===i),c=(d=r==null?void 0:r.sourcePath)==null?void 0:d.replace(/\/domain\.dql$/,"");return c?`${c}/blocks/${p}`:`blocks/${i}/${p}`}function v(s){return s.toLowerCase().replace(/[^a-z0-9\-_\s]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").slice(0,64)}function M(s){return s.trim()?/^[a-zA-Z0-9\-_ ]+$/.test(s)?null:"Only letters, numbers, hyphens, underscores, and spaces allowed.":"Name is required."}function R({onFileOpened:s}){const{state:i,dispatch:a}=w(),e=z[i.themeMode],[n,p]=l.useState(""),[r,c]=l.useState(i.newBlockModalDefaultType),[d,g]=l.useState(""),[x,E]=l.useState(""),[y,u]=l.useState(null),[m,h]=l.useState(!1),k=l.useRef(null);l.useEffect(()=>{var o;(o=k.current)==null||o.focus()},[]);const S=i.authoredDomains,L=O(S);l.useEffect(()=>{c(i.newBlockModalDefaultType)},[i.newBlockModalDefaultType]),l.useEffect(()=>{const o=b=>{b.key==="Escape"&&a({type:"CLOSE_NEW_BLOCK_MODAL"})};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[a]);const B=async()=>{var j;const o=M(n);if(o){u(o);return}h(!0),u(null);const b=v(n);try{const f=await D.createBlock(n.trim(),{blockType:r,...d?{domain:d}:{},...x.trim()?{folderPath:x.trim()}:{}}),C={name:`${b}.dql`,path:f.path,type:"block",folder:f.path.split("/").slice(0,-1).join("/"),isNew:!0};a({type:"FILE_ADDED",file:C}),a({type:"CLOSE_NEW_BLOCK_MODAL"}),s(C)}catch(f){(j=f.message)!=null&&j.includes("already exists")?u("A block with this name already exists."):u(f.message??"Failed to create block.")}finally{h(!1)}},$=o=>{o.target===o.currentTarget&&a({type:"CLOSE_NEW_BLOCK_MODAL"})};return t.jsx("div",{onClick:$,style:{position:"fixed",inset:0,background:e.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},children:t.jsxs("div",{style:{background:e.modalBg,border:`1px solid ${e.cellBorder}`,borderRadius:12,width:420,maxWidth:"calc(100vw - 48px)",boxShadow:"0 20px 60px rgba(0,0,0,0.5)",overflow:"hidden"},children:[t.jsxs("div",{style:{padding:"20px 24px 0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[t.jsx("h2",{style:{fontSize:16,fontWeight:600,color:e.textPrimary,fontFamily:e.font,margin:0},children:"New Block"}),t.jsx("button",{onClick:()=>a({type:"CLOSE_NEW_BLOCK_MODAL"}),style:{background:"transparent",border:"none",cursor:"pointer",color:e.textMuted,fontSize:18,lineHeight:1,padding:"2px 4px",borderRadius:4},children:"×"})]}),t.jsxs("div",{style:{padding:"20px 24px 24px",display:"flex",flexDirection:"column",gap:16},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[t.jsxs("button",{type:"button",onClick:()=>c("custom"),style:{background:r==="custom"?`${e.accent}18`:e.btnBg,border:`1px solid ${r==="custom"?e.accent:e.btnBorder}`,borderRadius:8,color:r==="custom"?e.accent:e.textSecondary,cursor:"pointer",fontSize:12,fontWeight:700,fontFamily:e.font,padding:"10px 12px",textAlign:"left"},children:["SQL Block",t.jsx("span",{style:{display:"block",marginTop:3,color:e.textMuted,fontWeight:400,fontSize:11},children:"Build from dbt models, tables, and SELECT queries."})]}),t.jsxs("button",{type:"button",onClick:()=>c("semantic"),style:{background:r==="semantic"?`${e.accent}18`:e.btnBg,border:`1px solid ${r==="semantic"?e.accent:e.btnBorder}`,borderRadius:8,color:r==="semantic"?e.accent:e.textSecondary,cursor:"pointer",fontSize:12,fontWeight:700,fontFamily:e.font,padding:"10px 12px",textAlign:"left"},children:["Semantic Block",t.jsx("span",{style:{display:"block",marginTop:3,color:e.textMuted,fontWeight:400,fontSize:11},children:"Build from dbt/DQL metrics and dimensions."})]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[t.jsx("label",{style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Block Name"}),t.jsx("input",{ref:k,value:n,onChange:o=>{p(o.target.value),u(null)},onKeyDown:o=>{o.key==="Enter"&&B()},placeholder:"revenue-summary",style:{background:e.inputBg,border:`1px solid ${y?e.error:e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 12px",outline:"none",transition:"border-color 0.15s"}}),y&&t.jsx("span",{style:{fontSize:11,color:e.error,fontFamily:e.font},children:y}),n&&!y&&t.jsxs("span",{style:{fontSize:11,color:e.textMuted,fontFamily:e.fontMono},children:["Git path: ",F(S,d,x,v(n))]})]}),t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[t.jsxs("label",{style:{display:"grid",gap:6,fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:["Domain",t.jsxs("select",{"aria-label":"Block domain",value:d,onChange:o=>g(o.target.value),style:{background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 10px",outline:"none"},children:[t.jsx("option",{value:"",children:"Global / cross-domain"}),L.map(o=>t.jsx("option",{value:o.value,children:o.label},o.value))]})]}),t.jsxs("label",{style:{display:"grid",gap:6,fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:["Folder",t.jsx("input",{"aria-label":"Block folder",value:x,onChange:o=>E(o.target.value),placeholder:"reporting/monthly",style:{background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.fontMono,padding:"8px 10px",outline:"none"}})]})]}),t.jsx("div",{style:{fontSize:12,color:e.textMuted,fontFamily:e.font,lineHeight:1.5,padding:"8px 12px",background:e.pillBg,borderRadius:6},children:r==="semantic"?"Semantic blocks use governed metrics, dimensions, and chart intent. They do not start with raw SQL.":"SQL blocks are reusable SELECT queries stored in the blocks/ folder. Use them for dbt models, tables, and imported SQL."})]}),t.jsxs("div",{style:{padding:"14px 24px",borderTop:`1px solid ${e.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10},children:[t.jsx("button",{onClick:()=>a({type:"CLOSE_NEW_BLOCK_MODAL"}),style:{background:e.btnBg,border:`1px solid ${e.btnBorder}`,borderRadius:6,color:e.textSecondary,cursor:"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"7px 16px"},children:"Cancel"}),t.jsx("button",{onClick:B,disabled:m||!n.trim(),style:{background:e.accent,border:`1px solid ${e.accent}`,borderRadius:6,color:"#ffffff",cursor:m||!n.trim()?"not-allowed":"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"7px 20px",opacity:m||!n.trim()?.6:1,display:"flex",alignItems:"center",gap:6},children:m?"Creating...":"Create Block"})]})]})})}export{R as NewBlockModal};
1
+ import{u as w,t as z,r as l,V as O,j as t,a as D}from"./index-Cpx47jCH.js";import"./react-CRB3T2We.js";function F(s,i,a,e){var d;const n=a.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,""),p=`${n?`${n}/`:""}${e}.dql`;if(!i)return`blocks/${p}`;const r=s.find(g=>g.id===i),c=(d=r==null?void 0:r.sourcePath)==null?void 0:d.replace(/\/domain\.dql$/,"");return c?`${c}/blocks/${p}`:`blocks/${i}/${p}`}function v(s){return s.toLowerCase().replace(/[^a-z0-9\-_\s]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").slice(0,64)}function _(s){return s.trim()?/^[a-zA-Z0-9\-_ ]+$/.test(s)?null:"Only letters, numbers, hyphens, underscores, and spaces allowed.":"Name is required."}function R({onFileOpened:s}){const{state:i,dispatch:a}=w(),e=z[i.themeMode],[n,p]=l.useState(""),[r,c]=l.useState(i.newBlockModalDefaultType),[d,g]=l.useState(""),[x,E]=l.useState(""),[y,u]=l.useState(null),[m,h]=l.useState(!1),k=l.useRef(null);l.useEffect(()=>{var o;(o=k.current)==null||o.focus()},[]);const S=i.authoredDomains,L=O(S);l.useEffect(()=>{c(i.newBlockModalDefaultType)},[i.newBlockModalDefaultType]),l.useEffect(()=>{const o=b=>{b.key==="Escape"&&a({type:"CLOSE_NEW_BLOCK_MODAL"})};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[a]);const B=async()=>{var j;const o=_(n);if(o){u(o);return}h(!0),u(null);const b=v(n);try{const f=await D.createBlock(n.trim(),{blockType:r,...d?{domain:d}:{},...x.trim()?{folderPath:x.trim()}:{}}),C={name:`${b}.dql`,path:f.path,type:"block",folder:f.path.split("/").slice(0,-1).join("/"),isNew:!0};a({type:"FILE_ADDED",file:C}),a({type:"CLOSE_NEW_BLOCK_MODAL"}),s(C)}catch(f){(j=f.message)!=null&&j.includes("already exists")?u("A block with this name already exists."):u(f.message??"Failed to create block.")}finally{h(!1)}},$=o=>{o.target===o.currentTarget&&a({type:"CLOSE_NEW_BLOCK_MODAL"})};return t.jsx("div",{onClick:$,style:{position:"fixed",inset:0,background:e.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},children:t.jsxs("div",{style:{background:e.modalBg,border:`1px solid ${e.cellBorder}`,borderRadius:12,width:420,maxWidth:"calc(100vw - 48px)",boxShadow:"0 20px 60px rgba(0,0,0,0.5)",overflow:"hidden"},children:[t.jsxs("div",{style:{padding:"20px 24px 0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[t.jsx("h2",{style:{fontSize:16,fontWeight:600,color:e.textPrimary,fontFamily:e.font,margin:0},children:"New Block"}),t.jsx("button",{onClick:()=>a({type:"CLOSE_NEW_BLOCK_MODAL"}),style:{background:"transparent",border:"none",cursor:"pointer",color:e.textMuted,fontSize:18,lineHeight:1,padding:"2px 4px",borderRadius:4},children:"×"})]}),t.jsxs("div",{style:{padding:"20px 24px 24px",display:"flex",flexDirection:"column",gap:16},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[t.jsxs("button",{type:"button",onClick:()=>c("custom"),style:{background:r==="custom"?`${e.accent}18`:e.btnBg,border:`1px solid ${r==="custom"?e.accent:e.btnBorder}`,borderRadius:8,color:r==="custom"?e.accent:e.textSecondary,cursor:"pointer",fontSize:12,fontWeight:700,fontFamily:e.font,padding:"10px 12px",textAlign:"left"},children:["SQL Block",t.jsx("span",{style:{display:"block",marginTop:3,color:e.textMuted,fontWeight:400,fontSize:11},children:"Build from dbt models, tables, and SELECT queries."})]}),t.jsxs("button",{type:"button",onClick:()=>c("semantic"),style:{background:r==="semantic"?`${e.accent}18`:e.btnBg,border:`1px solid ${r==="semantic"?e.accent:e.btnBorder}`,borderRadius:8,color:r==="semantic"?e.accent:e.textSecondary,cursor:"pointer",fontSize:12,fontWeight:700,fontFamily:e.font,padding:"10px 12px",textAlign:"left"},children:["Semantic Block",t.jsx("span",{style:{display:"block",marginTop:3,color:e.textMuted,fontWeight:400,fontSize:11},children:"Build from dbt/DQL metrics and dimensions."})]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[t.jsx("label",{style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Block Name"}),t.jsx("input",{ref:k,value:n,onChange:o=>{p(o.target.value),u(null)},onKeyDown:o=>{o.key==="Enter"&&B()},placeholder:"revenue-summary",style:{background:e.inputBg,border:`1px solid ${y?e.error:e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 12px",outline:"none",transition:"border-color 0.15s"}}),y&&t.jsx("span",{style:{fontSize:11,color:e.error,fontFamily:e.font},children:y}),n&&!y&&t.jsxs("span",{style:{fontSize:11,color:e.textMuted,fontFamily:e.fontMono},children:["Git path: ",F(S,d,x,v(n))]})]}),t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[t.jsxs("label",{style:{display:"grid",gap:6,fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:["Domain",t.jsxs("select",{"aria-label":"Block domain",value:d,onChange:o=>g(o.target.value),style:{background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 10px",outline:"none"},children:[t.jsx("option",{value:"",children:"Global / cross-domain"}),L.map(o=>t.jsx("option",{value:o.value,children:o.label},o.value))]})]}),t.jsxs("label",{style:{display:"grid",gap:6,fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:["Folder",t.jsx("input",{"aria-label":"Block folder",value:x,onChange:o=>E(o.target.value),placeholder:"reporting/monthly",style:{background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.fontMono,padding:"8px 10px",outline:"none"}})]})]}),t.jsx("div",{style:{fontSize:12,color:e.textMuted,fontFamily:e.font,lineHeight:1.5,padding:"8px 12px",background:e.pillBg,borderRadius:6},children:r==="semantic"?"Semantic blocks use governed metrics, dimensions, and chart intent. They do not start with raw SQL.":"SQL blocks are reusable SELECT queries stored in the blocks/ folder. Use them for dbt models, tables, and imported SQL."})]}),t.jsxs("div",{style:{padding:"14px 24px",borderTop:`1px solid ${e.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10},children:[t.jsx("button",{onClick:()=>a({type:"CLOSE_NEW_BLOCK_MODAL"}),style:{background:e.btnBg,border:`1px solid ${e.btnBorder}`,borderRadius:6,color:e.textSecondary,cursor:"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"7px 16px"},children:"Cancel"}),t.jsx("button",{onClick:B,disabled:m||!n.trim(),style:{background:e.accent,border:`1px solid ${e.accent}`,borderRadius:6,color:"#ffffff",cursor:m||!n.trim()?"not-allowed":"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"7px 20px",opacity:m||!n.trim()?.6:1,display:"flex",alignItems:"center",gap:6},children:m?"Creating...":"Create Block"})]})]})})}export{R as NewBlockModal};
@@ -1,4 +1,4 @@
1
- import{c as v,m as i,u as L,t as D,r as d,M as N,j as t,h as B,a as T}from"./index-BTuliKhK.js";import{B as k}from"./book-open-text-i6xhxu_I.js";import{X as q}from"./x-CeNgQwGm.js";import"./react-CRB3T2We.js";/**
1
+ import{c as v,m as i,u as M,t as D,r as d,V as N,j as t,l as B,a as T}from"./index-Cpx47jCH.js";import{B as k}from"./book-open-text-BpqWMa4m.js";import{X as q}from"./x-CbKEfe5m.js";import"./react-CRB3T2We.js";/**
2
2
  * @license lucide-react v0.563.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -43,4 +43,4 @@ Record severity, impacted metrics, owner, and remediation.`)];case"experiment":r
43
43
 
44
44
  Report effect size, uncertainty, guardrails, and data-quality checks.`),i("markdown",`## Decision
45
45
 
46
- Ship, iterate, or stop — with rationale.`)];default:return[]}}const H={blank:k,analysis:R,metric_diagnostic:I,data_quality:B,experiment:W};function j(r){return r.toLowerCase().replace(/[^a-z0-9\-_\s]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").slice(0,64)}function Q(r){return r.trim()?/^[a-zA-Z0-9\-_ ]+$/.test(r)?null:"Only letters, numbers, hyphens, underscores, and spaces allowed.":"Name is required."}function Z({onFileOpened:r}){const{state:s,dispatch:a}=L(),e=D[s.themeMode],[l,h]=d.useState(""),[m,o]=d.useState("blank"),[c,y]=d.useState(""),[x,g]=d.useState(null),[f,w]=d.useState(!1),E=d.useRef(null);d.useEffect(()=>{var n;(n=E.current)==null||n.focus()},[]);const C=N(s.authoredDomains);d.useEffect(()=>{const n=u=>{u.key==="Escape"&&a({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[a]);const O=async()=>{const n=Q(l);if(n){g(n);return}w(!0),g(null);const u=j(l),_=K(m);try{const b=await T.createNotebook(u,m,{...c?{ownerDomain:c,usesDomains:[c]}:{}}),p={name:`${u}.dqlnb`,path:b.path,type:"notebook",folder:"notebooks",isNew:!0};a({type:"FILE_ADDED",file:p}),a({type:"OPEN_FILE",file:p,cells:_,title:l.trim()}),a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),r(p)}catch{const b=`notebooks/${u}.dqlnb`,p={name:`${u}.dqlnb`,path:b,type:"notebook",folder:"notebooks",isNew:!0};a({type:"FILE_ADDED",file:p}),a({type:"OPEN_FILE",file:p,cells:_,title:l.trim()}),a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),r(p)}finally{w(!1)}},M=n=>{n.target===n.currentTarget&&a({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return t.jsx("div",{onClick:M,role:"presentation",style:{position:"fixed",inset:0,background:e.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},children:t.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":"new-notebook-title",style:{background:e.modalBg,border:`1px solid ${e.cellBorder}`,borderRadius:14,width:700,maxWidth:"calc(100vw - 48px)",maxHeight:"min(760px, calc(100vh - 48px))",boxShadow:"0 24px 72px rgba(0,0,0,0.38)",overflow:"hidden",display:"flex",flexDirection:"column"},children:[t.jsxs("div",{style:{padding:"14px 18px",display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,borderBottom:`1px solid ${e.cellBorder}`},children:[t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:10},children:[t.jsx("span",{style:{width:30,height:30,borderRadius:8,display:"inline-grid",placeItems:"center",color:e.accent,background:"var(--accent-dim)",flexShrink:0},children:t.jsx(k,{size:16,strokeWidth:2,"aria-hidden":"true"})}),t.jsxs("div",{children:[t.jsx("h2",{id:"new-notebook-title",style:{fontSize:17,fontWeight:750,color:e.textPrimary,fontFamily:e.font,margin:0},children:"Create notebook"}),t.jsx("p",{style:{margin:"3px 0 0",color:e.textMuted,fontSize:11.5,lineHeight:1.35,fontFamily:e.font},children:"Choose how much starter structure you want. Every option creates the same editable, Git-tracked notebook."})]})]}),t.jsx("button",{type:"button","aria-label":"Close create notebook",onClick:()=>a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{width:28,height:28,display:"inline-grid",placeItems:"center",background:e.btnBg,border:`1px solid ${e.btnBorder}`,cursor:"pointer",color:e.textMuted,padding:0,borderRadius:7,flexShrink:0},children:t.jsx(q,{size:14,"aria-hidden":"true"})})]}),t.jsxs("div",{style:{padding:"14px 18px",display:"flex",flexDirection:"column",gap:13,overflowY:"auto"},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(210px, 0.72fr)",gap:12},children:[t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,minWidth:0},children:[t.jsx("label",{htmlFor:"new-notebook-name",style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Notebook name"}),t.jsx("input",{id:"new-notebook-name",ref:E,value:l,onChange:n=>{h(n.target.value),g(null)},onKeyDown:n=>{n.key==="Enter"&&O()},placeholder:"e.g. Customer retention analysis",style:{background:e.inputBg,border:`1px solid ${x?e.error:e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 12px",outline:"none",transition:"border-color 0.15s"}}),x&&t.jsx("span",{style:{fontSize:11,color:e.error,fontFamily:e.font},children:x}),l&&!x&&t.jsxs("span",{style:{fontSize:11,color:e.textMuted,fontFamily:e.fontMono},children:["Git path: notebooks/",j(l),".dqlnb"]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,minWidth:0},children:[t.jsx("label",{style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Domain context"}),t.jsxs("select",{"aria-label":"Notebook owner domain",value:c,onChange:n=>y(n.target.value),style:{background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 12px",outline:"none"},children:[t.jsx("option",{value:"",children:"Global / cross-domain"}),C.map(n=>t.jsx("option",{value:n.value,children:n.label},n.value))]}),t.jsx("span",{style:{fontSize:10.5,lineHeight:1.3,color:e.textMuted,fontFamily:e.font},children:"Optional. Adds a Domain Studio backlink without moving the Git file."})]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:7},children:[t.jsx("label",{style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Starting point"}),t.jsx("div",{style:{padding:"6px 9px",borderRadius:8,border:`1px solid ${e.cellBorder}`,background:e.cellBg,color:e.textMuted,fontSize:10.5,lineHeight:1.35,fontFamily:e.font},children:"Templates only add starter cells. They do not change execution, permissions, governance, or where the notebook is saved."}),t.jsx("div",{role:"radiogroup","aria-label":"Notebook starting point",style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:8},children:Object.keys(S).map(n=>t.jsx(G,{value:n,selected:m===n,onSelect:()=>o(n),label:S[n],description:$[n],cellSummary:P[n],Icon:H[n],t:e},n))})]})]}),t.jsxs("div",{style:{padding:"10px 18px",borderTop:`1px solid ${e.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10,background:e.cellBg},children:[t.jsx("button",{onClick:()=>a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{background:e.btnBg,border:`1px solid ${e.btnBorder}`,borderRadius:8,color:e.textSecondary,cursor:"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"8px 15px"},children:"Cancel"}),t.jsxs("button",{onClick:O,disabled:f||!l.trim(),style:{background:e.accent,border:`1px solid ${e.accent}`,borderRadius:8,color:"var(--accent-fg)",cursor:f||!l.trim()?"not-allowed":"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"8px 16px",opacity:f||!l.trim()?.6:1,display:"flex",alignItems:"center",gap:6},children:[t.jsx(k,{size:14,"aria-hidden":"true"}),f?"Creating…":"Create notebook"]})]})]})})}function G({value:r,selected:s,onSelect:a,label:e,description:l,cellSummary:h,Icon:m,t:o}){const[c,y]=d.useState(!1);return t.jsxs("button",{type:"button",role:"radio","aria-checked":s,"aria-label":`${e}. ${h}`,onClick:a,onMouseEnter:()=>y(!0),onMouseLeave:()=>y(!1),style:{position:"relative",display:"grid",gridTemplateColumns:"30px minmax(0, 1fr)",gridColumn:r==="blank"?"1 / -1":void 0,alignItems:"start",gap:9,minHeight:r==="blank"?60:88,padding:"10px",borderRadius:10,border:`1px solid ${s?o.accent:c?o.textMuted:o.inputBorder}`,background:s?"var(--accent-dim)":c?o.sidebarItemHover:o.cellBg,color:o.textPrimary,cursor:"pointer",transition:"all 0.15s",textAlign:"left",fontFamily:o.font},children:[t.jsx("span",{style:{width:30,height:30,borderRadius:8,display:"inline-grid",placeItems:"center",color:s?o.accent:o.textSecondary,background:s?o.cellBg:o.btnBg,border:`1px solid ${s?`${o.accent}40`:o.btnBorder}`},children:t.jsx(m,{size:16,strokeWidth:2,"aria-hidden":"true"})}),t.jsxs("span",{style:{minWidth:0,display:"grid",gap:4},children:[t.jsx("span",{style:{fontSize:12.5,fontWeight:750,color:o.textPrimary},children:e}),t.jsx("span",{style:{fontSize:11,color:o.textSecondary,lineHeight:1.3},children:l}),t.jsx("span",{style:{marginTop:1,fontSize:10,color:s?o.accent:o.textMuted,fontWeight:650},children:h})]}),t.jsx("span",{"aria-hidden":"true",style:{position:"absolute",right:10,top:10,width:14,height:14,borderRadius:999,border:`1.5px solid ${s?o.accent:o.textMuted}`,display:"inline-grid",placeItems:"center"},children:s?t.jsx("span",{style:{width:7,height:7,borderRadius:999,background:o.accent}}):null})]})}export{Z as NewNotebookModal};
46
+ Ship, iterate, or stop — with rationale.`)];default:return[]}}const H={blank:k,analysis:R,metric_diagnostic:I,data_quality:B,experiment:W};function j(r){return r.toLowerCase().replace(/[^a-z0-9\-_\s]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").slice(0,64)}function Q(r){return r.trim()?/^[a-zA-Z0-9\-_ ]+$/.test(r)?null:"Only letters, numbers, hyphens, underscores, and spaces allowed.":"Name is required."}function Z({onFileOpened:r}){const{state:s,dispatch:a}=M(),e=D[s.themeMode],[l,h]=d.useState(""),[m,o]=d.useState("blank"),[c,y]=d.useState(""),[x,g]=d.useState(null),[f,w]=d.useState(!1),E=d.useRef(null);d.useEffect(()=>{var n;(n=E.current)==null||n.focus()},[]);const C=N(s.authoredDomains);d.useEffect(()=>{const n=u=>{u.key==="Escape"&&a({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[a]);const O=async()=>{const n=Q(l);if(n){g(n);return}w(!0),g(null);const u=j(l),_=K(m);try{const b=await T.createNotebook(u,m,{...c?{ownerDomain:c,usesDomains:[c]}:{}}),p={name:`${u}.dqlnb`,path:b.path,type:"notebook",folder:"notebooks",isNew:!0};a({type:"FILE_ADDED",file:p}),a({type:"OPEN_FILE",file:p,cells:_,title:l.trim()}),a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),r(p)}catch{const b=`notebooks/${u}.dqlnb`,p={name:`${u}.dqlnb`,path:b,type:"notebook",folder:"notebooks",isNew:!0};a({type:"FILE_ADDED",file:p}),a({type:"OPEN_FILE",file:p,cells:_,title:l.trim()}),a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),r(p)}finally{w(!1)}},L=n=>{n.target===n.currentTarget&&a({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return t.jsx("div",{onClick:L,role:"presentation",style:{position:"fixed",inset:0,background:e.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},children:t.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":"new-notebook-title",style:{background:e.modalBg,border:`1px solid ${e.cellBorder}`,borderRadius:14,width:700,maxWidth:"calc(100vw - 48px)",maxHeight:"min(760px, calc(100vh - 48px))",boxShadow:"0 24px 72px rgba(0,0,0,0.38)",overflow:"hidden",display:"flex",flexDirection:"column"},children:[t.jsxs("div",{style:{padding:"14px 18px",display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,borderBottom:`1px solid ${e.cellBorder}`},children:[t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:10},children:[t.jsx("span",{style:{width:30,height:30,borderRadius:8,display:"inline-grid",placeItems:"center",color:e.accent,background:"var(--accent-dim)",flexShrink:0},children:t.jsx(k,{size:16,strokeWidth:2,"aria-hidden":"true"})}),t.jsxs("div",{children:[t.jsx("h2",{id:"new-notebook-title",style:{fontSize:17,fontWeight:750,color:e.textPrimary,fontFamily:e.font,margin:0},children:"Create notebook"}),t.jsx("p",{style:{margin:"3px 0 0",color:e.textMuted,fontSize:11.5,lineHeight:1.35,fontFamily:e.font},children:"Choose how much starter structure you want. Every option creates the same editable, Git-tracked notebook."})]})]}),t.jsx("button",{type:"button","aria-label":"Close create notebook",onClick:()=>a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{width:28,height:28,display:"inline-grid",placeItems:"center",background:e.btnBg,border:`1px solid ${e.btnBorder}`,cursor:"pointer",color:e.textMuted,padding:0,borderRadius:7,flexShrink:0},children:t.jsx(q,{size:14,"aria-hidden":"true"})})]}),t.jsxs("div",{style:{padding:"14px 18px",display:"flex",flexDirection:"column",gap:13,overflowY:"auto"},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(210px, 0.72fr)",gap:12},children:[t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,minWidth:0},children:[t.jsx("label",{htmlFor:"new-notebook-name",style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Notebook name"}),t.jsx("input",{id:"new-notebook-name",ref:E,value:l,onChange:n=>{h(n.target.value),g(null)},onKeyDown:n=>{n.key==="Enter"&&O()},placeholder:"e.g. Customer retention analysis",style:{background:e.inputBg,border:`1px solid ${x?e.error:e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 12px",outline:"none",transition:"border-color 0.15s"}}),x&&t.jsx("span",{style:{fontSize:11,color:e.error,fontFamily:e.font},children:x}),l&&!x&&t.jsxs("span",{style:{fontSize:11,color:e.textMuted,fontFamily:e.fontMono},children:["Git path: notebooks/",j(l),".dqlnb"]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,minWidth:0},children:[t.jsx("label",{style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Domain context"}),t.jsxs("select",{"aria-label":"Notebook owner domain",value:c,onChange:n=>y(n.target.value),style:{background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:6,color:e.textPrimary,fontSize:13,fontFamily:e.font,padding:"8px 12px",outline:"none"},children:[t.jsx("option",{value:"",children:"Global / cross-domain"}),C.map(n=>t.jsx("option",{value:n.value,children:n.label},n.value))]}),t.jsx("span",{style:{fontSize:10.5,lineHeight:1.3,color:e.textMuted,fontFamily:e.font},children:"Optional. Adds a Domain Studio backlink without moving the Git file."})]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:7},children:[t.jsx("label",{style:{fontSize:12,fontWeight:500,color:e.textSecondary,fontFamily:e.font},children:"Starting point"}),t.jsx("div",{style:{padding:"6px 9px",borderRadius:8,border:`1px solid ${e.cellBorder}`,background:e.cellBg,color:e.textMuted,fontSize:10.5,lineHeight:1.35,fontFamily:e.font},children:"Templates only add starter cells. They do not change execution, permissions, governance, or where the notebook is saved."}),t.jsx("div",{role:"radiogroup","aria-label":"Notebook starting point",style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:8},children:Object.keys(S).map(n=>t.jsx(G,{value:n,selected:m===n,onSelect:()=>o(n),label:S[n],description:$[n],cellSummary:P[n],Icon:H[n],t:e},n))})]})]}),t.jsxs("div",{style:{padding:"10px 18px",borderTop:`1px solid ${e.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10,background:e.cellBg},children:[t.jsx("button",{onClick:()=>a({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{background:e.btnBg,border:`1px solid ${e.btnBorder}`,borderRadius:8,color:e.textSecondary,cursor:"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"8px 15px"},children:"Cancel"}),t.jsxs("button",{onClick:O,disabled:f||!l.trim(),style:{background:e.accent,border:`1px solid ${e.accent}`,borderRadius:8,color:"var(--accent-fg)",cursor:f||!l.trim()?"not-allowed":"pointer",fontSize:13,fontFamily:e.font,fontWeight:500,padding:"8px 16px",opacity:f||!l.trim()?.6:1,display:"flex",alignItems:"center",gap:6},children:[t.jsx(k,{size:14,"aria-hidden":"true"}),f?"Creating…":"Create notebook"]})]})]})})}function G({value:r,selected:s,onSelect:a,label:e,description:l,cellSummary:h,Icon:m,t:o}){const[c,y]=d.useState(!1);return t.jsxs("button",{type:"button",role:"radio","aria-checked":s,"aria-label":`${e}. ${h}`,onClick:a,onMouseEnter:()=>y(!0),onMouseLeave:()=>y(!1),style:{position:"relative",display:"grid",gridTemplateColumns:"30px minmax(0, 1fr)",gridColumn:r==="blank"?"1 / -1":void 0,alignItems:"start",gap:9,minHeight:r==="blank"?60:88,padding:"10px",borderRadius:10,border:`1px solid ${s?o.accent:c?o.textMuted:o.inputBorder}`,background:s?"var(--accent-dim)":c?o.sidebarItemHover:o.cellBg,color:o.textPrimary,cursor:"pointer",transition:"all 0.15s",textAlign:"left",fontFamily:o.font},children:[t.jsx("span",{style:{width:30,height:30,borderRadius:8,display:"inline-grid",placeItems:"center",color:s?o.accent:o.textSecondary,background:s?o.cellBg:o.btnBg,border:`1px solid ${s?`${o.accent}40`:o.btnBorder}`},children:t.jsx(m,{size:16,strokeWidth:2,"aria-hidden":"true"})}),t.jsxs("span",{style:{minWidth:0,display:"grid",gap:4},children:[t.jsx("span",{style:{fontSize:12.5,fontWeight:750,color:o.textPrimary},children:e}),t.jsx("span",{style:{fontSize:11,color:o.textSecondary,lineHeight:1.3},children:l}),t.jsx("span",{style:{marginTop:1,fontSize:10,color:s?o.accent:o.textMuted,fontWeight:650},children:h})]}),t.jsx("span",{"aria-hidden":"true",style:{position:"absolute",right:10,top:10,width:14,height:14,borderRadius:999,border:`1.5px solid ${s?o.accent:o.textMuted}`,display:"inline-grid",placeItems:"center"},children:s?t.jsx("span",{style:{width:7,height:7,borderRadius:999,background:o.accent}}):null})]})}export{Z as NewNotebookModal};