archsight 0.2.4 → 0.2.5

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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/lib/archsight/cli.rb +67 -0
  3. data/lib/archsight/graph.rb +10 -0
  4. data/lib/archsight/import/executor.rb +11 -3
  5. data/lib/archsight/import/handlers/cpp_grapher.rb +193 -0
  6. data/lib/archsight/import/handlers/crystal_grapher.rb +186 -0
  7. data/lib/archsight/import/handlers/elixir_grapher.rb +202 -0
  8. data/lib/archsight/import/handlers/go_grapher.rb +127 -0
  9. data/lib/archsight/import/handlers/grapher.rb +552 -0
  10. data/lib/archsight/import/handlers/java_grapher.rb +286 -0
  11. data/lib/archsight/import/handlers/javascript_grapher.rb +340 -0
  12. data/lib/archsight/import/handlers/python_grapher.rb +270 -0
  13. data/lib/archsight/import/handlers/repository.rb +41 -17
  14. data/lib/archsight/import/handlers/ruby_grapher.rb +203 -0
  15. data/lib/archsight/import/handlers/rust_grapher.rb +227 -0
  16. data/lib/archsight/import/registry.rb +23 -0
  17. data/lib/archsight/resources/import.rb +1 -0
  18. data/lib/archsight/resources/technology_artifact.rb +17 -0
  19. data/lib/archsight/version.rb +1 -1
  20. data/lib/archsight/web/api/json_helpers.rb +1 -1
  21. data/lib/archsight/web/public/vue/ApiDocsPage-C0y953v0.css +1 -0
  22. data/lib/archsight/web/public/vue/ApiDocsPage-DHSCaHEn.js +1 -0
  23. data/lib/archsight/web/public/vue/DocPage-DszOPlFy.js +1 -0
  24. data/lib/archsight/web/public/vue/EditorPage-CPZ0Ei4l.css +1 -0
  25. data/lib/archsight/web/public/vue/EditorPage-DsiuZ7fg.js +35 -0
  26. data/lib/archsight/web/public/vue/ErrorPage-C4JutrYc.js +2 -0
  27. data/lib/archsight/web/public/vue/ErrorPage-uMDnfY5_.css +1 -0
  28. data/lib/archsight/web/public/vue/GraphView-Bqlbt6dK.js +1 -0
  29. data/lib/archsight/web/public/vue/GraphView-Cj2V2stN.css +1 -0
  30. data/lib/archsight/web/public/vue/InstanceRouter-D8SEY2eu.js +2 -0
  31. data/lib/archsight/web/public/vue/InstanceRouter-D9hclKFt.css +1 -0
  32. data/lib/archsight/web/public/vue/KindList-CPDaNron.js +1 -0
  33. data/lib/archsight/web/public/vue/ResourceList-B5w9yiyS.js +1 -0
  34. data/lib/archsight/web/public/vue/ResourceList-DxZfNbOg.css +1 -0
  35. data/lib/archsight/web/public/vue/SearchResults-DSHpVO-c.css +1 -0
  36. data/lib/archsight/web/public/vue/SearchResults-FpkhdBFu.js +1 -0
  37. data/lib/archsight/web/public/vue/architecture-7EHR7CIX-DpNNjAIc.js +1 -0
  38. data/lib/archsight/web/public/vue/eventmodeling-FCH6USID-CiThxoWl.js +1 -0
  39. data/lib/archsight/web/public/vue/gitGraph-WXDBUCRP-BODMGpAm.js +1 -0
  40. data/lib/archsight/web/public/vue/graphviz-09t3o0af.js +13 -0
  41. data/lib/archsight/web/public/vue/index-BW0IzY6X.css +1 -0
  42. data/lib/archsight/web/public/vue/index-T1YqCmM1.js +2 -0
  43. data/lib/archsight/web/public/vue/info-J43DQDTF-fLq04sri.js +1 -0
  44. data/lib/archsight/web/public/vue/katex-5qHlIbPR.js +261 -0
  45. data/lib/archsight/web/public/vue/mermaid-DYyHQk7x.js +3093 -0
  46. data/lib/archsight/web/public/vue/packet-YPE3B663-DoY1fbqu.js +1 -0
  47. data/lib/archsight/web/public/vue/pie-LRSECV5Y-C7ZQVwRe.js +1 -0
  48. data/lib/archsight/web/public/vue/radar-GUYGQ44K-CRtY5oqf.js +1 -0
  49. data/lib/archsight/web/public/vue/rolldown-runtime-QTnfLwEv.js +1 -0
  50. data/lib/archsight/web/public/vue/treeView-BLDUP644-Csx2WLLh.js +1 -0
  51. data/lib/archsight/web/public/vue/treemap-LRROVOQU-CfEnRbTx.js +1 -0
  52. data/lib/archsight/web/public/vue/{useGraphviz-C5lv_BWF.js → useGraphviz-EKSrE4q_.js} +5 -4
  53. data/lib/archsight/web/public/vue/useHighlight-BcVbGyrK.js +10 -0
  54. data/lib/archsight/web/public/vue/useMermaid-CIZxhy_r.js +2 -0
  55. data/lib/archsight/web/public/vue/usePanZoom-C2slpyY9.js +11 -0
  56. data/lib/archsight/web/public/vue/wardley-L42UT6IY-97oUvxhz.js +1 -0
  57. data/lib/archsight/web/public/vue.html +4 -3
  58. metadata +51 -72
  59. data/lib/archsight/web/public/vue/ApiDocsPage-DHOFUCYc.js +0 -1
  60. data/lib/archsight/web/public/vue/ApiDocsPage-DhNTOH4o.css +0 -1
  61. data/lib/archsight/web/public/vue/DocPage-CV66qgTr.js +0 -1
  62. data/lib/archsight/web/public/vue/EditorPage-Dq0MuTnp.css +0 -1
  63. data/lib/archsight/web/public/vue/EditorPage-KqBivY-B.js +0 -34
  64. data/lib/archsight/web/public/vue/ErrorPage-CwPT3JUr.css +0 -1
  65. data/lib/archsight/web/public/vue/ErrorPage-DcbC8Kf1.js +0 -2
  66. data/lib/archsight/web/public/vue/GraphView-Bg_l-F-Q.js +0 -1
  67. data/lib/archsight/web/public/vue/GraphView-DRcIqAiR.css +0 -1
  68. data/lib/archsight/web/public/vue/InstanceRouter-4VEtZM7n.css +0 -1
  69. data/lib/archsight/web/public/vue/InstanceRouter-D-twdyZY.js +0 -2
  70. data/lib/archsight/web/public/vue/KindList-CPImTKNb.js +0 -1
  71. data/lib/archsight/web/public/vue/ResourceList-DMxm0cGh.js +0 -1
  72. data/lib/archsight/web/public/vue/ResourceList-DP-z-j71.css +0 -1
  73. data/lib/archsight/web/public/vue/SearchResults-BGHbg48-.css +0 -1
  74. data/lib/archsight/web/public/vue/SearchResults-BqUHEWHE.js +0 -1
  75. data/lib/archsight/web/public/vue/_baseUniq-BjkdEi26.js +0 -1
  76. data/lib/archsight/web/public/vue/architectureDiagram-VXUJARFQ-JN7CxdtP.js +0 -36
  77. data/lib/archsight/web/public/vue/blockDiagram-VD42YOAC-teziPFHX.js +0 -122
  78. data/lib/archsight/web/public/vue/c4Diagram-YG6GDRKO-CVNrzCCc.js +0 -10
  79. data/lib/archsight/web/public/vue/chunk-4BX2VUAB-BQUARyyA.js +0 -1
  80. data/lib/archsight/web/public/vue/chunk-55IACEB6-BgJn0Waa.js +0 -1
  81. data/lib/archsight/web/public/vue/chunk-B4BG7PRW-0ghAfB1t.js +0 -165
  82. data/lib/archsight/web/public/vue/chunk-DI55MBZ5-HJo1DW2B.js +0 -220
  83. data/lib/archsight/web/public/vue/chunk-FMBD7UC4-C1GwGKgX.js +0 -15
  84. data/lib/archsight/web/public/vue/chunk-QN33PNHL-BOoA1KfJ.js +0 -1
  85. data/lib/archsight/web/public/vue/chunk-QZHKN3VN-BcTNH3IX.js +0 -1
  86. data/lib/archsight/web/public/vue/chunk-TZMSLE5B-58bQF3J5.js +0 -1
  87. data/lib/archsight/web/public/vue/classDiagram-2ON5EDUG-DAA8tpbN.js +0 -1
  88. data/lib/archsight/web/public/vue/classDiagram-v2-WZHVMYZB-DAA8tpbN.js +0 -1
  89. data/lib/archsight/web/public/vue/clone-BPcOyh7U.js +0 -1
  90. data/lib/archsight/web/public/vue/cose-bilkent-S5V4N54A-Bv8iR4rF.js +0 -1
  91. data/lib/archsight/web/public/vue/cytoscape.esm-5J0xJHOV.js +0 -321
  92. data/lib/archsight/web/public/vue/dagre-6UL2VRFP-B8ZPRhgU.js +0 -4
  93. data/lib/archsight/web/public/vue/diagram-PSM6KHXK-Dp1bZnNq.js +0 -24
  94. data/lib/archsight/web/public/vue/diagram-QEK2KX5R-DZBsDWP6.js +0 -43
  95. data/lib/archsight/web/public/vue/diagram-S2PKOQOG-BKOnLWNk.js +0 -24
  96. data/lib/archsight/web/public/vue/erDiagram-Q2GNP2WA-V6FqHPc9.js +0 -60
  97. data/lib/archsight/web/public/vue/flowDiagram-NV44I4VS-BipXjPVT.js +0 -162
  98. data/lib/archsight/web/public/vue/ganttDiagram-JELNMOA3-DUdVPVK1.js +0 -267
  99. data/lib/archsight/web/public/vue/gitGraphDiagram-V2S2FVAM-Bcf_apTG.js +0 -65
  100. data/lib/archsight/web/public/vue/graph-C4e9XILZ.js +0 -1
  101. data/lib/archsight/web/public/vue/graphviz-CJms5bxZ.js +0 -13
  102. data/lib/archsight/web/public/vue/index-BUI400cn.js +0 -2
  103. data/lib/archsight/web/public/vue/index-Tiu4C-Sb.css +0 -1
  104. data/lib/archsight/web/public/vue/infoDiagram-HS3SLOUP-DBwnExXO.js +0 -2
  105. data/lib/archsight/web/public/vue/journeyDiagram-XKPGCS4Q-D4b8PEzB.js +0 -139
  106. data/lib/archsight/web/public/vue/kanban-definition-3W4ZIXB7-R6r4NPxJ.js +0 -89
  107. data/lib/archsight/web/public/vue/katex-C-M49wc6.js +0 -261
  108. data/lib/archsight/web/public/vue/layout-CXL8NrCi.js +0 -1
  109. data/lib/archsight/web/public/vue/mermaid-MmHzOPPB.js +0 -250
  110. data/lib/archsight/web/public/vue/min-B4MPxNTL.js +0 -1
  111. data/lib/archsight/web/public/vue/mindmap-definition-VGOIOE7T-BypPT67y.js +0 -68
  112. data/lib/archsight/web/public/vue/pieDiagram-ADFJNKIX-BJ4nb15u.js +0 -30
  113. data/lib/archsight/web/public/vue/quadrantDiagram-AYHSOK5B-D4Ee5XRs.js +0 -7
  114. data/lib/archsight/web/public/vue/requirementDiagram-UZGBJVZJ-DuxpUmt2.js +0 -64
  115. data/lib/archsight/web/public/vue/sankeyDiagram-TZEHDZUN-CgWlWmza.js +0 -10
  116. data/lib/archsight/web/public/vue/sequenceDiagram-WL72ISMW-v2l2CbI0.js +0 -145
  117. data/lib/archsight/web/public/vue/stateDiagram-FKZM4ZOC-B5ROi2_1.js +0 -1
  118. data/lib/archsight/web/public/vue/stateDiagram-v2-4FDKWEC3-CQhha5H7.js +0 -1
  119. data/lib/archsight/web/public/vue/timeline-definition-IT6M3QCI-Bnx2HvxP.js +0 -61
  120. data/lib/archsight/web/public/vue/treemap-GDKQZRPO-BVho_qBy.js +0 -162
  121. data/lib/archsight/web/public/vue/useHighlight-yg_u-WUA.js +0 -10
  122. data/lib/archsight/web/public/vue/useMermaid-BPBwn39g.js +0 -1
  123. data/lib/archsight/web/public/vue/usePanZoom-CgSmFLId.js +0 -11
  124. data/lib/archsight/web/public/vue/xychartDiagram-PRI3JC2R-CDkeZXF1.js +0 -7
@@ -0,0 +1,2 @@
1
+ import{D as e,E as t,F as n,L as r,N as i,P as a,S as o,T as s,U as c,V as l,b as u,f as d,g as f,h as p,t as m,w as h,x as g,y as _}from"./index-T1YqCmM1.js";var v={key:0},y={class:`error-header`},b={class:`error-message`},x={class:`error-location`},S={class:`error-line-badge`},C={key:0,class:`error-code-block`},w={class:`line-number`},T={key:1},E=m({__name:`ErrorPage`,setup(m){let E=p(),D=f(),O=g(()=>{try{return E.query.data?JSON.parse(E.query.data):null}catch{return null}});async function k(){let e=await d();e.error?D.replace({name:`error`,query:{data:JSON.stringify(e.error)}}):(D.push(`/`),window.location.reload())}return(d,f)=>{let p=n(`router-link`);return O.value?(i(),s(`div`,v,[o(`header`,null,[o(`article`,y,[f[1]||=o(`h3`,null,[o(`i`,{class:`iconoir-warning-triangle`}),t(` Error `)],-1),o(`p`,b,c(O.value.error),1),o(`p`,x,[f[0]||=o(`i`,{class:`iconoir-page`},null,-1),t(` `+c(O.value.path)+` `,1),o(`span`,S,`Line `+c(O.value.line_no),1)])]),o(`a`,{href:`#`,class:`reload-btn`,onClick:_(k,[`prevent`])},[...f[2]||=[o(`i`,{class:`iconoir-refresh`},null,-1),t(` Reload `,-1)]])]),O.value.context?(i(),s(`div`,C,[o(`pre`,null,[o(`code`,null,[(i(!0),s(u,null,a(O.value.context,e=>(i(),s(`span`,{key:e.line_no,class:l(e.selected?`error-line`:`code-line`)},[o(`span`,w,c(String(e.line_no).padStart(4,` `)),1),t(c(e.content)+`
2
+ `,1)],2))),128))])])])):h(``,!0)])):(i(),s(`div`,T,[f[4]||=o(`p`,null,`No error data available.`,-1),e(p,{to:`/`},{default:r(()=>[...f[3]||=[t(`Back to home`,-1)]]),_:1})]))}}},[[`__scopeId`,`data-v-109cf8ab`]]);export{E as default};
@@ -0,0 +1 @@
1
+ .error-header[data-v-109cf8ab]{margin-bottom:1rem}.error-header h3[data-v-109cf8ab]{color:#dc2626;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.error-message[data-v-109cf8ab]{margin-bottom:.5rem;font-size:1.1rem}.error-location[data-v-109cf8ab]{color:#6b7280;align-items:center;gap:.5rem;font-family:monospace;display:flex}.error-line-badge[data-v-109cf8ab]{color:#fff;background-color:#dc2626;border-radius:4px;padding:.125rem .5rem;font-size:.875rem}.reload-btn[data-v-109cf8ab]{align-items:center;gap:.25rem;display:inline-flex}.error-code-block[data-v-109cf8ab]{width:100%;overflow-x:auto}.error-code-block pre[data-v-109cf8ab]{background-color:#1e1e1e;border-radius:8px;margin:0;padding:1rem;overflow-x:auto}.error-code-block code[data-v-109cf8ab]{font-family:SF Mono,Monaco,Menlo,Consolas,monospace;font-size:.8rem;line-height:1.1}.error-code-block .code-line[data-v-109cf8ab],.error-code-block .error-line[data-v-109cf8ab]{white-space:pre;display:block}.error-code-block .code-line[data-v-109cf8ab]{color:#d4d4d4}.error-code-block .error-line[data-v-109cf8ab]{color:#fca5a5;background-color:#dc26264d;margin:0 -1rem;padding:0 1rem}.error-code-block .line-number[data-v-109cf8ab]{color:#6b7280;-webkit-user-select:none;user-select:none;text-align:right;min-width:3rem;margin-right:1rem;display:inline-block}.error-code-block .error-line .line-number[data-v-109cf8ab]{color:#f87171}@media (prefers-color-scheme:dark){.error-header h3[data-v-109cf8ab]{color:#f87171}.error-location[data-v-109cf8ab]{color:#9ca3af}}
@@ -0,0 +1 @@
1
+ import{M as e,N as t,S as n,T as r,c as i,j as a,k as o,t as s,z as c}from"./index-T1YqCmM1.js";import{t as l}from"./useGraphviz-EKSrE4q_.js";import{t as u}from"./usePanZoom-C2slpyY9.js";var d={key:0},f={key:1,class:`graph-container graph-expand`},p=[`innerHTML`],m=s({__name:`GraphView`,setup(s){let m=c(``),h=c(!0),g=c(null),_=null;a(async()=>{let e=await i();m.value=e?await l(e):``,h.value=!1,await o(),v()}),e(()=>{_?.destroy()});function v(){if(!g.value)return;let e=g.value.querySelector(`svg`);e&&(_=u(e,g.value))}return(e,i)=>(t(),r(`article`,null,[i[1]||=n(`header`,null,[n(`h2`,null,`Architecture Overview`)],-1),h.value?(t(),r(`div`,d,[...i[0]||=[n(`p`,null,`Loading graph...`,-1)]])):(t(),r(`div`,f,[n(`div`,{id:`graphviz`,ref_key:`graphEl`,ref:g,class:`fullcanvas`,innerHTML:m.value},null,8,p)]))]))}},[[`__scopeId`,`data-v-7d4eb553`]]);export{m as default};
@@ -0,0 +1 @@
1
+ .graph-container[data-v-7d4eb553]{border:1px solid var(--muted-border-color);background-color:var(--card-background-color);border-radius:4px;height:auto;min-height:150px;max-height:70vh;position:relative;overflow:hidden}.graph-container.graph-expand[data-v-7d4eb553]{height:85vh;max-height:none}#graphviz[data-v-7d4eb553]{width:100%;height:100%}[data-v-7d4eb553] #graphviz svg{display:block}
@@ -0,0 +1,2 @@
1
+ import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,S as p,T as m,U as h,V as g,b as _,g as v,j as y,k as b,l as x,m as S,n as C,t as w,u as T,w as E,x as D,z as O}from"./index-T1YqCmM1.js";import{t as k}from"./useHighlight-BcVbGyrK.js";import{t as A}from"./useGraphviz-EKSrE4q_.js";import{t as j}from"./usePanZoom-C2slpyY9.js";import{a as M,c as N,i as P,n as F,o as I,r as L,s as R,t as z}from"./ResourceList-B5w9yiyS.js";import{t as B}from"./useMermaid-CIZxhy_r.js";function V(t){let n=v();function r(e){let t=e.target.closest(`a[href]`);if(!t)return;let r=t.getAttribute(`href`);!r||!r.startsWith(`/kinds/`)||(e.preventDefault(),n.push(r))}y(()=>{t.value?.addEventListener(`click`,r)}),e(()=>{t.value?.removeEventListener(`click`,r)})}var H={key:0,class:`relations-section`},U={class:`relations-grid`},W={class:`relations-column relations-outgoing`},G={class:`relation-kind`},ee={class:`relation-verb`},te={class:`instance-badges`},ne={key:1,class:`relations-empty`},re={class:`relations-column relations-incoming`},K={class:`relation-kind`},q={class:`relation-verb`},J={class:`instance-badges`},Y={key:1,class:`relations-empty`},X=w({__name:`RelationsGrid`,props:{data:Object},setup(e){let t=e,r=d(`kinds`),o=D(()=>t.data.relations||{}),s=D(()=>t.data.references||{}),l=D(()=>Object.keys(o.value).length>0||Object.keys(s.value).length>0);function v(e){return r?.value?.kinds?r.value.kinds.find(t=>t.kind===e):null}function y(e){return v(e)?.icon||`cube`}function b(e){return v(e)?.layer||`technology`}let x=D(()=>{let e=[];for(let[t,n]of Object.entries(o.value))for(let[r,i]of Object.entries(n))e.push({verb:t,kind:r,names:[...i].sort()});return e}),S=D(()=>{let e=[];for(let[t,n]of Object.entries(s.value))for(let[r,i]of Object.entries(n))e.push({verb:r||`references`,kind:t,names:[...i].sort()});return e});return(e,t)=>{let r=a(`router-link`);return l.value?(u(),m(`article`,H,[t[2]||=p(`header`,null,[p(`h2`,null,`Relations`)],-1),p(`div`,U,[p(`div`,W,[t[0]||=p(`h3`,null,[i(`Outgoing `),p(`i`,{class:`iconoir-arrow-right`})],-1),x.value.length?(u(!0),m(_,{key:0},f(x.value,(e,t)=>(u(),m(`div`,{key:`out-`+t,class:`relation-group`},[p(`div`,G,[p(`i`,{class:g(`iconoir-${y(e.kind)} icon-${b(e.kind)}`)},null,2),p(`span`,null,h(e.kind)+` (`+h(e.names.length)+`)`,1)]),p(`div`,ee,h(e.verb)+` (`+h(e.names.length)+`)`,1),p(`div`,te,[(u(!0),m(_,null,f(e.names,t=>(u(),n(r,{key:t,class:`badge badge-info`,to:{name:`instance`,params:{kind:e.kind,instance:t}}},{default:c(()=>[i(h(t),1)]),_:2},1032,[`to`]))),128))])]))),128)):(u(),m(`div`,ne,`None`))]),p(`div`,re,[t[1]||=p(`h3`,null,[p(`i`,{class:`iconoir-arrow-right`}),i(` Incoming`)],-1),S.value.length?(u(!0),m(_,{key:0},f(S.value,(e,t)=>(u(),m(`div`,{key:`in-`+t,class:`relation-group`},[p(`div`,K,[p(`i`,{class:g(`iconoir-${y(e.kind)} icon-${b(e.kind)}`)},null,2),p(`span`,null,h(e.kind)+` (`+h(e.names.length)+`)`,1)]),p(`div`,q,h(e.verb)+` (`+h(e.names.length)+`)`,1),p(`div`,J,[(u(!0),m(_,null,f(e.names,t=>(u(),n(r,{key:t,class:`badge badge-info`,to:{name:`instance`,params:{kind:e.kind,instance:t}}},{default:c(()=>[i(h(t),1)]),_:2},1032,[`to`]))),128))])]))),128)):(u(),m(`div`,Y,`None`))])])])):E(``,!0)}}},[[`__scopeId`,`data-v-3a1d98d9`]]),ie={key:0},ae={key:1,class:`graph-error`},oe={key:2,class:`graph-container`},se=[`innerHTML`],ce=w({__name:`ModuleGraph`,props:{dot:String,label:{type:String,default:`Module Structure`}},setup(e){let t=e,n=O(``),r=O(!0),a=O(null),o=O(null),c=null;async function d(e){if(!e){r.value=!1;return}c?.destroy(),c=null,r.value=!0,a.value=null;try{n.value=await A(e)}catch(e){a.value=e?.message||`Failed to render module graph`,n.value=``}finally{if(r.value=!1,await b(),o.value){let e=o.value.querySelector(`svg`);e&&(c=j(e,o.value))}}}return y(()=>d(t.dot)),s(()=>t.dot,d),l(()=>{c?.destroy()}),(t,s)=>(u(),m(`article`,null,[p(`header`,null,[p(`h2`,null,h(e.label),1)]),r.value?(u(),m(`div`,ie,[...s[0]||=[p(`p`,null,`Loading graph...`,-1)]])):a.value?(u(),m(`p`,ae,[s[1]||=p(`i`,{class:`iconoir-warning-triangle`},null,-1),i(` `+h(a.value),1)])):n.value?(u(),m(`div`,oe,[p(`div`,{ref_key:`graphEl`,ref:o,class:`canvas`,innerHTML:n.value},null,8,se)])):E(``,!0)]))}},[[`__scopeId`,`data-v-084799f5`]]),le={key:0,class:`requirements-section`},ue={class:`requirements-table`},de={class:`requirement-status`},fe=[`title`],pe={key:1,class:`view-empty-value`},me={class:`requirement-story`},he=[`innerHTML`],ge={key:1,class:`view-empty-value`},_e=w({__name:`RequirementsSection`,props:{data:Object},setup(e){let t=e,o=D(()=>{let e=t.data.relations||{},n=[];for(let[t,r]of Object.entries({realizes:`implemented`,partiallyRealizes:`partial`,plans:`planned`})){let i=e[t]||{},a=i.BusinessRequirement||i.businessRequirements||[];for(let e of a)n.push({name:e,status:r,verb:t})}return n}),l=O([]);s(o,async e=>{if(!e.length){l.value=[];return}l.value=await Promise.all(e.map(async e=>{try{let t=(await x(`BusinessRequirement`,e.name)).metadata?.annotations||{};return{...e,priority:t[`requirement/priority`]||null,story:t[`requirement/story`]||null}}catch{return{...e,priority:null,story:null}}}))},{immediate:!0});function d(e){switch(e){case`implemented`:return`iconoir-check-circle`;case`partial`:return`iconoir-half-moon`;case`planned`:return`iconoir-calendar`;default:return`iconoir-circle`}}function v(e){let n=t.data.name;return`/search?q=${encodeURIComponent(`BusinessRequirement: <- "${n}" & requirement/priority == "${e}"`)}`}return(e,t)=>{let s=a(`router-link`);return o.value.length?(u(),m(`article`,le,[t[1]||=p(`header`,null,[p(`h2`,null,`Business Requirements`)],-1),p(`table`,ue,[t[0]||=p(`thead`,null,[p(`tr`,null,[p(`th`),p(`th`,null,`Name`),p(`th`,null,`Priority`),p(`th`,null,`Story`)])],-1),p(`tbody`,null,[(u(!0),m(_,null,f(l.value,e=>(u(),m(`tr`,{key:e.name},[p(`td`,de,[p(`i`,{class:g([[d(e.status),`status-${e.status}`],`requirement-status-icon`]),title:e.status},null,10,fe)]),p(`td`,null,[r(s,{to:{name:`instance`,params:{kind:`BusinessRequirement`,instance:e.name}}},{default:c(()=>[i(h(e.name),1)]),_:2},1032,[`to`])]),p(`td`,null,[e.priority?(u(),n(s,{key:0,class:`badge badge-info`,to:v(e.priority)},{default:c(()=>[i(h(e.priority),1)]),_:2},1032,[`to`])):(u(),m(`span`,pe,`-`))]),p(`td`,me,[e.story?(u(),m(`div`,{key:0,innerHTML:e.story},null,8,he)):(u(),m(`span`,ge,`-`))])]))),128))])])])):E(``,!0)}}},[[`__scopeId`,`data-v-1e32a2b6`]]),ve={key:0},ye={scope:`row`},be=[`href`],xe={class:`git-info`},Se={class:`git-item`},Ce={class:`git-clone-command`},we=w({__name:`GitInfo`,props:{annotations:Object},setup(e){let t=e,n=D(()=>t.annotations[`repository/git`]),r=D(()=>n.value?P(n.value):null);function i(){navigator.clipboard.writeText(`git clone ${n.value}`)}return(e,t)=>n.value?(u(),m(`tr`,ve,[p(`th`,ye,[p(`a`,{class:`git-link`,href:r.value,target:`_blank`},`Git Repo`,8,be)]),p(`td`,null,[p(`div`,xe,[p(`div`,Se,[t[0]||=p(`i`,{class:`iconoir-git-branch`},null,-1),p(`code`,Ce,`git clone `+h(n.value),1)]),p(`button`,{class:`copy-button`,onClick:i,title:`Copy to clipboard`},[...t[1]||=[p(`i`,{class:`iconoir-copy`},null,-1)]])])])])):E(``,!0)}},[[`__scopeId`,`data-v-ae19746e`]]),Te={key:0},Ee={class:`language-distribution`},De={class:`language-total`},Oe={class:`language-count`},ke={class:`language-bar`},Ae=[`title`],je={class:`language-legend`},Me={class:`other-languages`},Ne=w({__name:`LanguageStats`,props:{annotations:Object,kind:String},setup(e){let s=e,l=D(()=>{let e=s.annotations[`scc/languages`];if(!e)return null;let t=e.split(`,`).map(e=>{let t=`scc/language/${e.trim()}/loc`;return{name:e.trim(),loc:parseInt(s.annotations[t]||`0`,10)}}).sort((e,t)=>t.loc-e.loc),n=t.reduce((e,t)=>e+t.loc,0);if(n<=0)return null;let r=t.filter(e=>e.loc/n*100>=.1),i=r.slice(0,10),a=[...r.slice(10),...t.filter(e=>e.loc/n*100<.1)],o=a.reduce((e,t)=>e+t.loc,0),c=[...i];return o>0&&c.push({name:`Other`,loc:o,isOther:!0,otherNames:a.map(e=>e.name)}),{display:c,total:n}});function d(e){return(e/l.value.total*100).toFixed(1)}function v(e,t){return t.isOther?`lang-other`:`lang-${e}`}function y(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(e,s)=>{let b=a(`router-link`);return l.value?(u(),m(`tr`,Te,[s[3]||=p(`th`,{scope:`row`},`Languages`,-1),p(`td`,null,[p(`div`,Ee,[p(`div`,De,[p(`span`,Oe,h(t(I)(l.value.total)),1),s[0]||=p(`span`,{class:`language-label`},`lines of code`,-1)]),p(`div`,ke,[(u(!0),m(_,null,f(l.value.display,(e,n)=>(u(),m(`div`,{key:e.name,class:g([`language-bar-segment`,v(n,e)]),style:o({width:d(e.loc)+`%`}),title:`${e.name}: ${t(I)(e.loc)} (${d(e.loc)}%)`},null,14,Ae))),128))]),p(`div`,je,[(u(!0),m(_,null,f(l.value.display,(e,t)=>(u(),m(`div`,{key:e.name,class:`language-legend-item`},[p(`div`,{class:g([`language-legend-dot`,v(t,e)])},null,2),e.isOther?(u(),m(_,{key:0},[p(`span`,null,`Other `+h(d(e.loc))+`%`,1),p(`span`,Me,[s[1]||=i(` (`,-1),(u(!0),m(_,null,f(e.otherNames,(t,n)=>(u(),m(_,{key:t},[r(b,{to:y(`scc/languages`,t)},{default:c(()=>[i(h(t),1)]),_:2},1032,[`to`]),n<e.otherNames.length-1?(u(),m(_,{key:0},[i(`, `)],64)):E(``,!0)],64))),128)),s[2]||=i(`) `,-1)])],64)):(u(),n(b,{key:1,to:y(`scc/languages`,e.name)},{default:c(()=>[i(h(e.name)+` `+h(d(e.loc))+`% `,1)]),_:2},1032,[`to`]))]))),128))])])])])):E(``,!0)}}},[[`__scopeId`,`data-v-c306da87`]]),Pe={key:0},Fe={class:`project-estimate`},Ie={key:0,class:`estimate-item`},Le={class:`estimate-value`},Re={key:1,class:`estimate-item`},ze={class:`estimate-value`},Be={key:2,class:`estimate-item`},Ve={class:`estimate-value`},He=w({__name:`ProjectEstimate`,props:{annotations:Object},setup(e){let n=e,r=D(()=>F(`cost`,n.annotations[`scc/estimatedCost`])),a=D(()=>F(`schedule`,n.annotations[`scc/estimatedScheduleMonths`])),o=D(()=>F(`team`,n.annotations[`scc/estimatedPeople`])),s=D(()=>r.value!=null||a.value!=null||o.value!=null);return(e,n)=>s.value?(u(),m(`tr`,Pe,[n[6]||=p(`th`,{scope:`row`},[i(` Project Estimate `),p(`span`,{class:`estimate-note`,title:`Estimates adjusted for €80k salary and AI-assisted development (3x productivity)`},[p(`i`,{class:`iconoir-info-circle`})])],-1),p(`td`,null,[p(`div`,Fe,[r.value==null?E(``,!0):(u(),m(`div`,Ie,[n[0]||=p(`i`,{class:`iconoir-euro`},null,-1),n[1]||=p(`span`,{class:`estimate-label`},`Cost:`,-1),p(`span`,Le,h(t(N)(r.value)),1)])),a.value==null?E(``,!0):(u(),m(`div`,Re,[n[2]||=p(`i`,{class:`iconoir-calendar`},null,-1),n[3]||=p(`span`,{class:`estimate-label`},`Schedule:`,-1),p(`span`,ze,h(a.value.toFixed(1))+` months`,1)])),o.value==null?E(``,!0):(u(),m(`div`,Be,[n[4]||=p(`i`,{class:`iconoir-group`},null,-1),n[5]||=p(`span`,{class:`estimate-label`},`Team:`,-1),p(`span`,Ve,h(o.value)+` people`,1)]))])])])):E(``,!0)}},[[`__scopeId`,`data-v-6cb46a9d`]]),Ue={key:0},We={class:`repository-distribution`},Ge={class:`repository-total`},Ke={class:`repository-count`},qe={class:`repository-bar`},Je=[`title`],Ye={class:`repository-legend`},Xe=w({__name:`RepositoriesBar`,props:{annotations:Object},setup(e){let t=e,n=D(()=>parseInt(t.annotations[`repository/artifacts/total`]||`0`,10)),r=D(()=>parseInt(t.annotations[`repository/artifacts/active`]||`0`,10)),i=D(()=>parseInt(t.annotations[`repository/artifacts/abandoned`]||`0`,10)),a=D(()=>parseInt(t.annotations[`repository/artifacts/archived`]||`0`,10)),s=D(()=>parseInt(t.annotations[`repository/artifacts/highBusFactor`]||`0`,10)),c=D(()=>n.value>0),l=D(()=>r.value-s.value),d=D(()=>n.value-r.value-i.value-a.value);function v(e){return(e/n.value*100).toFixed(1)}let y=D(()=>{let e=[];return l.value>0&&e.push({cls:`status-active`,value:l.value,label:`Active (healthy)`}),s.value>0&&e.push({cls:`status-high-bus-factor`,value:s.value,label:`Active (high bus factor)`}),a.value>0&&e.push({cls:`status-archived`,value:a.value,label:`Archived`}),d.value>0&&e.push({cls:`status-other`,value:d.value,label:`Other`}),i.value>0&&e.push({cls:`status-abandoned`,value:i.value,label:`Abandoned`}),e});return(e,t)=>c.value?(u(),m(`tr`,Ue,[t[1]||=p(`th`,{scope:`row`},`Repositories`,-1),p(`td`,null,[p(`div`,We,[p(`div`,Ge,[p(`span`,Ke,h(n.value),1),t[0]||=p(`span`,{class:`repository-label`},`repositories`,-1)]),p(`div`,qe,[(u(!0),m(_,null,f(y.value,e=>(u(),m(`div`,{key:e.cls,class:g([`repository-bar-segment`,e.cls]),style:o({width:v(e.value)+`%`}),title:`${e.label}: ${e.value} (${v(e.value)}%)`},null,14,Je))),128))]),p(`div`,Ye,[(u(!0),m(_,null,f(y.value,e=>(u(),m(`div`,{key:e.cls,class:`repository-legend-item`},[p(`div`,{class:g([`repository-legend-dot`,e.cls])},null,2),p(`span`,null,h(e.value)+` `+h(e.label.toLowerCase()),1)]))),128))])])])])):E(``,!0)}},[[`__scopeId`,`data-v-1fbb3e92`]]),Ze=[`title`],Z=w({__name:`SparklineChart`,props:{values:{type:String,required:!0},type:{type:String,default:`commits`},maxHeight:{type:Number,default:16},colorClass:{type:String,default:null}},setup(e){let t=e,n=D(()=>!t.values||t.values.trim()===``?[]:t.values.split(`,`).map(e=>parseInt(e,10)||0)),r=D(()=>{let e=Math.max(...n.value);return e===0?1:e});function i(e){return e===0?0:Math.max(2,Math.round(e/r.value*t.maxHeight))}let a=D(()=>{switch(t.type){case`created`:return` issues created`;case`resolved`:return` issues resolved`;default:return` commits`}});return(t,r)=>(u(),m(`div`,{class:g([`activity-sparkline`,e.colorClass])},[(u(!0),m(_,null,f(n.value,(e,t)=>(u(),m(`div`,{key:t,class:g([`activity-sparkline-bar`,{empty:e===0}]),style:o({height:i(e)+`px`}),title:e+a.value},null,14,Ze))),128))],2))}},[[`__scopeId`,`data-v-c5e6ffa5`]]),Qe={key:0},$e={class:`activity-summary`},et={key:0,class:`activity-item`},tt={class:`activity-value sparkline-total`},nt={key:1,class:`activity-item`},rt={key:0,class:`activity-value sparkline-total`},it={key:1,class:`activity-value contributors-total`},at={key:2,class:`activity-item`},ot={class:`activity-value`},st={key:3,class:`activity-item`},ct={key:4,class:`activity-item`},lt=w({__name:`ActivityInfo`,props:{annotations:Object,kind:String},setup(e){let t=e,n=D(()=>t.annotations[`activity/commits`]),o=D(()=>t.annotations[`activity/contributors`]),s=D(()=>t.annotations[`activity/contributors/6m`]),l=D(()=>t.annotations[`activity/contributors/total`]),d=D(()=>t.annotations[`activity/status`]),f=D(()=>t.annotations[`activity/busFactor`]),_=D(()=>t.annotations[`activity/createdAt`]),v=D(()=>n.value||o.value||d.value||f.value||_.value),y=D(()=>n.value?n.value.split(`,`).map(Number).reduce((e,t)=>e+t,0):0),b=D(()=>_.value?new Date(_.value).toLocaleDateString(`en`,{month:`short`,year:`numeric`}):null),x=D(()=>{let e=f.value,t=``;switch(e){case`high`:t=`High risk: One contributor accounts for >75% of commits in the last 6 months`;break;case`medium`:t=`Medium risk: One contributor accounts for 50-75% of commits in the last 6 months`;break;case`low`:t=`Low risk: No single contributor dominates the codebase`;break;default:t=`Unknown: Not enough recent activity to assess`}return s.value&&(t+=` (${s.value} unique contributors)`),t});function S(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(e,t)=>{let C=a(`router-link`);return v.value?(u(),m(`tr`,Qe,[t[10]||=p(`th`,{scope:`row`},`Activity`,-1),p(`td`,null,[p(`div`,$e,[n.value?(u(),m(`div`,et,[t[0]||=p(`i`,{class:`iconoir-git-commit`},null,-1),t[1]||=p(`span`,{class:`activity-label`},`Commits:`,-1),r(Z,{values:n.value},null,8,[`values`]),p(`span`,tt,h(y.value),1)])):E(``,!0),o.value?(u(),m(`div`,nt,[t[2]||=p(`i`,{class:`iconoir-community`},null,-1),t[3]||=p(`span`,{class:`activity-label`},`Contributors:`,-1),r(Z,{values:o.value,"color-class":`contributors-sparkline`},null,8,[`values`]),s.value?(u(),m(`span`,rt,h(s.value),1)):E(``,!0),l.value?(u(),m(`span`,it,`(`+h(l.value)+` total)`,1)):E(``,!0)])):E(``,!0),_.value?(u(),m(`div`,at,[t[4]||=p(`i`,{class:`iconoir-calendar`},null,-1),t[5]||=p(`span`,{class:`activity-label`},`Created:`,-1),p(`span`,ot,h(b.value),1)])):E(``,!0),d.value?(u(),m(`div`,st,[t[6]||=p(`i`,{class:`iconoir-info-circle`},null,-1),t[7]||=p(`span`,{class:`activity-label`},`Status:`,-1),r(C,{class:g(`activity-value status-${d.value}`),to:S(`activity/status`,d.value)},{default:c(()=>[i(h(d.value),1)]),_:1},8,[`class`,`to`])])):E(``,!0),f.value?(u(),m(`div`,ct,[t[8]||=p(`i`,{class:`iconoir-warning-triangle`},null,-1),t[9]||=p(`span`,{class:`activity-label`},`Bus Factor:`,-1),r(C,{class:g(`activity-value bus-factor-${f.value}`),to:S(`activity/busFactor`,f.value),title:x.value},{default:c(()=>[i(h(f.value),1)]),_:1},8,[`class`,`to`,`title`])])):E(``,!0)])])])):E(``,!0)}}},[[`__scopeId`,`data-v-c3143572`]]),ut={key:0},dt={key:1},ft={class:`jira-info`},pt=[`href`],mt={class:`jira-metric`},ht={class:`jira-metric-total`},gt={class:`jira-metric`},_t={class:`jira-metric-total`},vt={key:0,class:`iconoir-arrow-down-circle`},yt={key:1,class:`iconoir-arrow-up-circle`},bt={key:2,class:`iconoir-minus-circle`},xt={class:`jira-trend-text`},St={key:2},Ct=[`href`],wt={key:1,class:`team-value`},Tt={key:3},Et={class:`team-stats`},Dt={key:0,class:`team-stat-item`},Ot={class:`team-stat-value`},kt={key:1,class:`team-stat-item`},At={class:`team-stat-value`},jt={key:4},Mt={class:`team-members`},Nt=[`href`],Pt={key:1,class:`team-member`},Ft=w({__name:`TeamInfo`,props:{annotations:Object,instance:Object},setup(e){let t=e,n=D(()=>t.annotations[`team/lead`]),o=D(()=>t.annotations[`team/members`]),s=D(()=>t.annotations[`team/size`]),l=D(()=>t.annotations[`team/lead/size`]),d=D(()=>t.annotations[`team/jira`]),v=D(()=>t.annotations[`jira/projectUrl`]),y=D(()=>t.annotations[`jira/issues/created`]),b=D(()=>t.annotations[`jira/issues/resolved`]),x=D(()=>t.instance?.kind===`BusinessActor`),S=D(()=>`kind in ("ApplicationService", "ApplicationComponent") & ~> $(TechnologyArtifact: -{maintainedBy}> "${t.instance?.name||``}")`),C=D(()=>o.value?o.value.split(/,|\n/).map(e=>e.trim()).filter(Boolean):[]);function w(e){let t=e.match(/<([^>]+@[^>]+)>/);return t?t[1]:null}function T(e){return{name:`search`,query:{q:e}}}let O=D(()=>y.value?y.value.split(`,`).map(Number).reduce((e,t)=>e+t,0):0),k=D(()=>b.value?b.value.split(`,`).map(Number).reduce((e,t)=>e+t,0):0),A=D(()=>y.value?y.value.split(`,`).map(Number):[]),j=D(()=>b.value?b.value.split(`,`).map(Number):[]),M=D(()=>(A.value.length?O.value/A.value.length:0)-(j.value.length?k.value/j.value.length:0)),N=D(()=>{let e=M.value;return e<-1?`positive`:e>1?`negative`:`neutral`});return(e,t)=>{let D=a(`router-link`);return u(),m(_,null,[x.value?(u(),m(`tr`,ut,[t[1]||=p(`th`,{scope:`row`},`Owned Services`,-1),p(`td`,null,[r(D,{class:`badge badge-info`,to:T(S.value)},{default:c(()=>[...t[0]||=[i(` Show ApplicationServices & Components `,-1)]]),_:1},8,[`to`])])])):E(``,!0),d.value&&v.value?(u(),m(`tr`,dt,[t[4]||=p(`th`,{scope:`row`},`Jira Project`,-1),p(`td`,null,[p(`div`,ft,[p(`a`,{class:`badge badge-info`,href:v.value,target:`_blank`},h(d.value),9,pt),y.value||b.value?(u(),m(_,{key:0},[p(`div`,mt,[t[2]||=p(`span`,{class:`jira-metric-label`},`Created (6m):`,-1),r(Z,{values:y.value,type:`created`,"color-class":`jira-created-sparkline`},null,8,[`values`]),p(`span`,ht,h(O.value),1)]),p(`div`,gt,[t[3]||=p(`span`,{class:`jira-metric-label`},`Resolved (6m):`,-1),r(Z,{values:b.value,type:`resolved`,"color-class":`jira-resolved-sparkline`},null,8,[`values`]),p(`span`,_t,h(k.value),1)]),p(`div`,{class:g([`jira-trend`,`jira-trend-${N.value}`])},[N.value===`positive`?(u(),m(`i`,vt)):N.value===`negative`?(u(),m(`i`,yt)):(u(),m(`i`,bt)),p(`span`,xt,h(M.value>0?`+`:``)+h(M.value.toFixed(1))+`/mo`,1)],2)],64)):E(``,!0)])])])):E(``,!0),n.value?(u(),m(`tr`,St,[t[5]||=p(`th`,{scope:`row`},`Team Lead`,-1),p(`td`,null,[w(n.value)?(u(),m(`a`,{key:0,class:`team-value`,href:`mailto:${w(n.value)}`},h(n.value),9,Ct)):(u(),m(`span`,wt,h(n.value),1))])])):E(``,!0),s.value||l.value?(u(),m(`tr`,Tt,[t[8]||=p(`th`,{scope:`row`},`Team Stats`,-1),p(`td`,null,[p(`div`,Et,[l.value?(u(),m(`div`,Dt,[p(`span`,Ot,h(l.value),1),t[6]||=p(`span`,{class:`team-stat-label`},`leads`,-1)])):E(``,!0),s.value?(u(),m(`div`,kt,[p(`span`,At,h(s.value),1),t[7]||=p(`span`,{class:`team-stat-label`},`members`,-1)])):E(``,!0)])])])):E(``,!0),o.value?(u(),m(`tr`,jt,[t[9]||=p(`th`,{scope:`row`},`Team Members`,-1),p(`td`,null,[p(`div`,Mt,[(u(!0),m(_,null,f(C.value,e=>(u(),m(_,{key:e},[w(e)?(u(),m(`a`,{key:0,class:`team-member`,href:`mailto:${w(e)}`},h(e),9,Nt)):(u(),m(`span`,Pt,h(e),1))],64))),128))])])])):E(``,!0)],64)}}},[[`__scopeId`,`data-v-4e1ea26f`]]),It={key:0},Lt={class:`deployment-types`},Rt=w({__name:`DeploymentInfo`,props:{annotations:Object,kind:String},setup(e){let t=e,r=D(()=>(t.annotations[`repository/artifacts`]||`none`).split(`,`).map(e=>e.trim())),i=D(()=>r.value[0]!==`none`),o=[{key:`container`,icon:`iconoir-box`,label:`Container Image`},{key:`chart`,icon:`iconoir-packages`,label:`Helm Chart`},{key:`binary`,icon:`iconoir-terminal`,label:`Binary`},{key:`debian`,icon:`iconoir-package`,label:`Debian Package`},{key:`rpm`,icon:`iconoir-package`,label:`RPM Package`}];function s(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(e,t)=>{let l=a(`router-link`);return i.value?(u(),m(`tr`,It,[t[0]||=p(`th`,{scope:`row`},`Deployment Artifacts`,-1),p(`td`,null,[p(`div`,Lt,[(u(),m(_,null,f(o,e=>(u(),m(_,{key:e.key},[r.value.includes(e.key)?(u(),n(l,{key:0,class:`deployment-item`,to:s(`repository/artifacts`,e.key)},{default:c(()=>[p(`i`,{class:g(e.icon)},null,2),p(`strong`,null,h(e.label),1)]),_:2},1032,[`to`])):E(``,!0)],64))),64))])])])):E(``,!0)}}},[[`__scopeId`,`data-v-7cfa7667`]]),zt={class:`workflow-platforms`},Bt=[`checked`],Vt=[`checked`],Ht=[`checked`],Ut={class:`info-section-cell`,colspan:`2`},Wt={open:``},Gt={class:`workflow-types`},Kt={class:`workflow-category`},qt=[`checked`],Jt=[`checked`],Yt={class:`workflow-category`},Xt=[`checked`],Zt=[`checked`],Qt=[`checked`],$t=[`checked`],en={class:`workflow-category`},tn=[`checked`],nn=[`checked`],rn={class:`workflow-category`},an=[`checked`],on=[`checked`],sn=w({__name:`WorkflowInfo`,props:{annotations:Object,kind:String},setup(e){let t=e,n=D(()=>(t.annotations[`workflow/platforms`]||`none`).split(`,`).map(e=>e.trim())),o=D(()=>(t.annotations[`workflow/types`]||`none`).split(`,`).map(e=>e.trim())),s=D(()=>n.value[0]!==`none`||o.value[0]!==`none`),l=D(()=>o.value.includes(`test`));function d(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}function f(e,t){return e.includes(t)}return(e,t)=>{let h=a(`router-link`);return s.value?(u(),m(_,{key:0},[p(`tr`,null,[t[3]||=p(`th`,{scope:`row`},`CI/CD Platforms`,-1),p(`td`,null,[p(`div`,zt,[r(h,{class:`workflow-platform-item`,to:d(`workflow/platforms`,`github-actions`)},{default:c(()=>[p(`input`,{type:`checkbox`,disabled:``,checked:f(n.value,`github-actions`)},null,8,Bt),t[0]||=p(`label`,null,`GitHub Actions`,-1)]),_:1},8,[`to`]),r(h,{class:`workflow-platform-item`,to:d(`workflow/platforms`,`gitlab-ci`)},{default:c(()=>[p(`input`,{type:`checkbox`,disabled:``,checked:f(n.value,`gitlab-ci`)},null,8,Vt),t[1]||=p(`label`,null,`GitLab CI`,-1)]),_:1},8,[`to`]),r(h,{class:`workflow-platform-item`,to:d(`workflow/platforms`,`makefile`)},{default:c(()=>[p(`input`,{type:`checkbox`,disabled:``,checked:f(n.value,`makefile`)},null,8,Ht),t[2]||=p(`label`,null,`Makefile`,-1)]),_:1},8,[`to`])])])]),p(`tr`,null,[p(`td`,Ut,[p(`details`,Wt,[t[18]||=p(`summary`,null,[p(`strong`,null,`Workflow Types`)],-1),p(`div`,Gt,[p(`div`,null,[p(`div`,Kt,[t[6]||=p(`strong`,null,`Build & Deploy`,-1),p(`ul`,null,[p(`li`,null,[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`build`)},null,8,qt),r(h,{to:d(`workflow/types`,`build`)},{default:c(()=>[...t[4]||=[i(`Build`,-1)]]),_:1},8,[`to`])]),p(`li`,null,[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`deploy`)},null,8,Jt),r(h,{to:d(`workflow/types`,`deploy`)},{default:c(()=>[...t[5]||=[i(`Deploy`,-1)]]),_:1},8,[`to`])])])]),p(`div`,Yt,[t[11]||=p(`strong`,null,`Testing`,-1),p(`ul`,null,[p(`li`,null,[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`test`)},null,8,Xt),r(h,{to:d(`workflow/types`,`test`)},{default:c(()=>[...t[7]||=[i(`Test (generic)`,-1)]]),_:1},8,[`to`])]),p(`li`,{class:g({"grayed-out":l.value})},[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`unit-test`)},null,8,Zt),r(h,{to:d(`workflow/types`,`unit-test`)},{default:c(()=>[...t[8]||=[i(`Unit Tests`,-1)]]),_:1},8,[`to`])],2),p(`li`,{class:g({"grayed-out":l.value})},[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`integration-test`)},null,8,Qt),r(h,{to:d(`workflow/types`,`integration-test`)},{default:c(()=>[...t[9]||=[i(`Integration Tests`,-1)]]),_:1},8,[`to`])],2),p(`li`,{class:g({"grayed-out":l.value})},[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`smoke-test`)},null,8,$t),r(h,{to:d(`workflow/types`,`smoke-test`)},{default:c(()=>[...t[10]||=[i(`Smoke Tests`,-1)]]),_:1},8,[`to`])],2)])]),p(`div`,en,[t[14]||=p(`strong`,null,`Quality & Security`,-1),p(`ul`,null,[p(`li`,null,[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`lint`)},null,8,tn),r(h,{to:d(`workflow/types`,`lint`)},{default:c(()=>[...t[12]||=[i(`Linting`,-1)]]),_:1},8,[`to`])]),p(`li`,null,[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`security-scan`)},null,8,nn),r(h,{to:d(`workflow/types`,`security-scan`)},{default:c(()=>[...t[13]||=[i(`Security Scan`,-1)]]),_:1},8,[`to`])])])]),p(`div`,rn,[t[17]||=p(`strong`,null,`Automation`,-1),p(`ul`,null,[p(`li`,null,[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`dependency-update`)},null,8,an),r(h,{to:d(`workflow/types`,`dependency-update`)},{default:c(()=>[...t[15]||=[i(`Dependency Updates`,-1)]]),_:1},8,[`to`])]),p(`li`,null,[p(`input`,{type:`checkbox`,disabled:``,checked:f(o.value,`ticket-creation`)},null,8,on),r(h,{to:d(`workflow/types`,`ticket-creation`)},{default:c(()=>[...t[16]||=[i(`Ticket Creation`,-1)]]),_:1},8,[`to`])])])])])])])])])],64)):E(``,!0)}}},[[`__scopeId`,`data-v-62c25aa1`]]),cn={class:`info-section-cell`,colspan:`2`},ln={class:`agentic-tools`},un={class:`tool-item-header`},dn=[`checked`],fn={class:`tool-item-description`},pn=w({__name:`AgenticTools`,props:{annotations:Object,kind:String},setup(e){let t=e,n=D(()=>(t.annotations[`agentic/tools`]||`none`).split(`,`).map(e=>e.trim())),o=D(()=>n.value[0]!==`none`),s=[{key:`claude`,icon:`iconoir-brain`,name:`Claude`,description:`Anthropic Claude API`},{key:`cursor`,icon:`iconoir-edit-pencil`,name:`Cursor`,description:`AI code editor`},{key:`aider`,icon:`iconoir-terminal`,name:`Aider`,description:`CLI pair programmer`},{key:`github-copilot`,icon:`iconoir-github`,name:`GitHub Copilot`,description:`GitHub AI assistant`},{key:`agents`,icon:`iconoir-cpu-warning`,name:`Custom Agents`,description:`Custom AI agents`}];function l(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(e,t)=>{let d=a(`router-link`);return o.value?(u(),m(_,{key:0},[t[0]||=p(`tr`,null,[p(`th`,{scope:`row`,colspan:`2`},[p(`i`,{class:`iconoir-cpu`}),i(` AI Coding Assistants `)])],-1),p(`tr`,null,[p(`td`,cn,[p(`div`,ln,[(u(),m(_,null,f(s,e=>r(d,{key:e.key,class:g([`tool-item`,{"not-implemented":!n.value.includes(e.key)}]),to:l(`agentic/tools`,e.key)},{default:c(()=>[p(`div`,un,[p(`input`,{type:`checkbox`,checked:n.value.includes(e.key),disabled:``},null,8,dn),p(`i`,{class:g([e.icon,n.value.includes(e.key)?`implemented`:`not-implemented`])},null,2),p(`strong`,null,h(e.name),1)]),p(`div`,fn,h(e.description),1)]),_:2},1032,[`class`,`to`])),64))])])])],64)):E(``,!0)}}},[[`__scopeId`,`data-v-9f667c51`]]),mn={key:0},hn={class:`activity-summary`},gn={class:`activity-item`},_n={key:0,class:`activity-item`},vn={class:`activity-value`},yn={key:1,class:`activity-item`},bn={key:0,class:`license-details-inline`},xn={class:`badge badge-secondary`},Sn={class:`license-overflow`},Cn=w({__name:`LicenseInfo`,props:{annotations:Object,kind:String},setup(e){let t=e,o=D(()=>t.annotations[`license/spdx`]),s=D(()=>t.annotations[`license/category`]||`unknown`),l=D(()=>t.annotations[`license/dependencies/count`]),d=D(()=>(t.annotations[`license/dependencies/ecosystems`]||``).split(`,`).map(e=>e.trim()).filter(Boolean)),v=D(()=>t.annotations[`license/dependencies/risk`]||`unknown`),y=D(()=>t.annotations[`license/dependencies/copyleft`]||`unknown`),b=D(()=>(t.annotations[`license/dependencies/licenses`]||``).split(`,`).map(e=>e.trim()).filter(Boolean)),x=D(()=>{switch(s.value){case`permissive`:return`badge-success`;case`weak-copyleft`:return`badge-warning`;case`source-available`:return`badge-warning`;case`copyleft`:return`badge-danger`;default:return`badge-secondary`}}),S=D(()=>{switch(v.value){case`low`:return`badge-success`;case`weak-copyleft`:return`badge-warning`;case`copyleft`:return`badge-danger`;default:return`badge-secondary`}}),C=D(()=>{switch(v.value){case`copyleft`:return`Copyleft dependencies (GPL, AGPL) or >50% unknown licenses`;case`weak-copyleft`:return`Weak-copyleft dependencies (LGPL, MPL) present`;case`low`:return`All dependencies have known permissive licenses`;default:return`No dependency license data available`}}),w=D(()=>b.value.filter(e=>e!==`unknown`).map(e=>({name:e,count:parseInt(t.annotations[`license/dependencies/${e}/count`]||`0`,10)})).sort((e,t)=>t.count-e.count));function T(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(e,t)=>{let b=a(`router-link`);return o.value?(u(),m(`tr`,mn,[t[6]||=p(`th`,{scope:`row`},`License`,-1),p(`td`,null,[p(`div`,hn,[p(`div`,gn,[t[0]||=p(`i`,{class:`iconoir-shield-check`},null,-1),r(b,{class:g([`badge`,x.value]),to:T(`license/spdx`,o.value)},{default:c(()=>[i(h(o.value),1)]),_:1},8,[`class`,`to`]),s.value===`unknown`?E(``,!0):(u(),n(b,{key:0,class:`badge badge-outline`,to:T(`license/category`,s.value)},{default:c(()=>[i(h(s.value),1)]),_:1},8,[`to`]))]),l.value&&parseInt(l.value)>0?(u(),m(`div`,_n,[t[2]||=p(`i`,{class:`iconoir-box`},null,-1),t[3]||=p(`span`,{class:`activity-label`},`Dependencies:`,-1),p(`span`,vn,h(l.value),1),(u(!0),m(_,null,f(d.value,e=>(u(),n(b,{key:e,class:`badge badge-info`,to:T(`license/dependencies/ecosystems`,e)},{default:c(()=>[i(h(e),1)]),_:2},1032,[`to`]))),128)),r(b,{class:g([`badge`,S.value]),title:C.value,to:T(`license/dependencies/risk`,v.value)},{default:c(()=>[i(`Risk: `+h(v.value),1)]),_:1},8,[`class`,`title`,`to`]),y.value===`true`?(u(),n(b,{key:0,class:`badge badge-warning`,to:T(`license/dependencies/copyleft`,`true`)},{default:c(()=>[...t[1]||=[i(`Copyleft present`,-1)]]),_:1},8,[`to`])):E(``,!0)])):E(``,!0),w.value.length?(u(),m(`div`,yn,[t[4]||=p(`i`,{class:`iconoir-list`},null,-1),t[5]||=p(`span`,{class:`activity-label`},`Types:`,-1),(u(!0),m(_,null,f(w.value.slice(0,5),e=>(u(),n(b,{key:e.name,class:`badge badge-outline`,to:T(`license/dependencies/licenses`,e.name)},{default:c(()=>[i(h(e.count>0?`${e.name} (${e.count})`:e.name),1)]),_:2},1032,[`to`]))),128)),w.value.length>5?(u(),m(`details`,bn,[p(`summary`,xn,`+`+h(w.value.length-5)+` more`,1),p(`div`,Sn,[(u(!0),m(_,null,f(w.value.slice(5),e=>(u(),n(b,{key:e.name,class:`badge badge-outline`,to:T(`license/dependencies/licenses`,e.name)},{default:c(()=>[i(h(e.count>0?`${e.name} (${e.count})`:e.name),1)]),_:2},1032,[`to`]))),128))])])):E(``,!0)])):E(``,!0)])])])):E(``,!0)}}},[[`__scopeId`,`data-v-1b458fa7`]]),wn={key:0},Tn=[`href`],En=[`href`],Dn={__name:`ExternalLinks`,props:{annotations:Object},setup(e){let n=e,r=D(()=>Object.entries(n.annotations).filter(([e])=>e.startsWith(`link/`)).sort(([e],[t])=>e.localeCompare(t))),a=D(()=>r.value.length>0),o=D(()=>{if(r.value.length<=10)return null;let e={};for(let[t,n]of r.value){let r=L(n);e[r]||(e[r]=[]),e[r].push({key:t,url:n,name:t.replace(`link/`,``)})}return Object.entries(e).sort(([e],[t])=>e.localeCompare(t))});return(e,n)=>a.value?(u(),m(`tr`,wn,[n[4]||=p(`th`,{scope:`row`},`Links`,-1),p(`td`,null,[o.value?(u(!0),m(_,{key:0},f(o.value,([e,r])=>(u(),m(_,{key:e},[p(`strong`,null,h(e),1),n[1]||=p(`br`,null,null,-1),(u(!0),m(_,null,f(r,e=>(u(),m(_,{key:e.key},[p(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`},[p(`span`,{class:g(t(M)(e.url))},null,2),i(` `+h(e.name),1)],8,Tn),n[0]||=p(`br`,null,null,-1)],64))),128)),n[2]||=p(`br`,null,null,-1)],64))),128)):(u(!0),m(_,{key:1},f(r.value,([e,r])=>(u(),m(_,{key:e},[p(`a`,{href:r,target:`_blank`,rel:`noopener noreferrer`},[p(`span`,{class:g(t(M)(r))},null,2),i(` `+h(e.replace(`link/`,``)),1)],8,En),n[3]||=p(`br`,null,null,-1)],64))),128))])])):E(``,!0)}},On={scope:`row`},kn=[`innerHTML`],An={key:1,class:`instance-badges`},jn=[`href`],Mn={__name:`AnnotationRow`,props:{annotationKey:String,value:[String,Number,Boolean],kind:String,format:{type:String,default:null}},setup(e){let t=e,r=O(null);V(r);let o=D(()=>{let e=t.annotationKey.split(`/`);return e[e.length-1].replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase())}),s=D(()=>typeof t.value==`string`&&/^https?:\/\//.test(t.value)),l=D(()=>t.format!==`tag_list`||typeof t.value!=`string`?[]:t.value.split(`,`).map(e=>e.trim()).filter(Boolean));function d(e){return`/search?q=${encodeURIComponent(`${t.kind}: ${t.annotationKey} == "${e}"`)}`}return(t,g)=>{let v=a(`router-link`);return u(),m(`tr`,null,[p(`th`,On,h(o.value),1),p(`td`,null,[e.format===`markdown`?(u(),m(`div`,{key:0,ref_key:`mdEl`,ref:r,innerHTML:e.value},null,8,kn)):e.format===`tag_list`?(u(),m(`div`,An,[(u(!0),m(_,null,f(l.value,e=>(u(),n(v,{key:e,class:`badge badge-info`,to:d(e)},{default:c(()=>[i(h(e),1)]),_:2},1032,[`to`]))),128))])):e.format===`tag_word`?(u(),n(v,{key:2,class:`badge badge-info`,to:d(e.value)},{default:c(()=>[i(h(e.value),1)]),_:1},8,[`to`])):(u(),m(_,{key:3},[s.value?(u(),m(`a`,{key:0,href:e.value,target:`_blank`},h(e.value),9,jn)):(u(),m(_,{key:1},[i(h(e.value),1)],64))],64))])])}}},Nn={class:`instance-title-text`},Pn={class:`instance-name`},Fn={class:`instance-kind-subtitle`},In={key:0,class:`generated-badge`},Ln={class:`generated-script`},Rn={key:0,class:`generated-time`},zn={key:0,class:`graph-container`},Bn=[`innerHTML`],Vn={key:1,class:`graph-too-large`},Hn=[`innerHTML`],Un={class:`documentation`},Wn=w({__name:`InstanceDetail`,props:{data:Object,kind:String,kindMeta:Object},setup(e){let o=e,d=O(``),v=O(null),x=null,S=O(null);V(S);let C=D(()=>o.data.metadata?.annotations||{}),w=D(()=>Object.keys(o.data.relations||{}).length>0),k=D(()=>{let e=o.data.references||{};return w.value||Object.keys(e).length>0}),M=D(()=>C.value[`generated/script`]),N=D(()=>C.value[`generated/at`]),P=D(()=>C.value[`architecture/description`]),F=[[`go`,`Go`],[`python`,`Python`],[`java`,`Java`],[`typescript`,`TypeScript`],[`javascript`,`JavaScript`],[`rust`,`Rust`],[`ruby`,`Ruby`],[`crystal`,`Crystal`],[`cpp`,`C++`],[`csharp`,`C#`],[`zig`,`Zig`],[`elixir`,`Elixir`]],I=D(()=>{let e=F.filter(([e])=>C.value[`architecture/${e}/modules`]).map(([e,t])=>({label:`${t} Module Structure`,dot:C.value[`architecture/${e}/modules`]}));return!e.length&&C.value[`architecture/modules`]&&e.push({label:`Module Structure`,dot:C.value[`architecture/modules`]}),e}),L=[`scc/language/`,`repository/artifacts/`,`link/`,`team/`,`jira/`,`generated/`,`license/`],z=new Set([`scc/languages`,`architecture/description`,`architecture/modules`,`workflow/platforms`,`workflow/types`,`agentic/tools`,`repository/artifacts`,`repository/git`,`repository/visibility`]),H=[/^scc\/estimated(Cost|ScheduleMonths|People)$/,/^activity\/(commits|contributors(\/.*)?|status|busFactor|createdAt)$/,/^scc\/language\/.+\/loc$/,/^repository\/$/,/^architecture\/.+\/modules$/],U=D(()=>Object.entries(C.value).filter(([e])=>!(z.has(e)||L.some(t=>e.startsWith(t))||H.some(t=>t.test(e)))));y(async()=>{if(w.value){let e=await T(o.kind,o.data.name);d.value=e?await A(e):``,await b(),W()}await b(),S.value&&B(S.value)}),s(P,async()=>{await b(),S.value&&B(S.value)}),l(()=>{x?.destroy()});function W(){if(!v.value)return;let e=v.value.querySelector(`svg`);e&&(x=j(e,v.value))}return(o,s)=>{let l=a(`router-link`);return u(),m(_,null,[p(`article`,null,[p(`header`,null,[p(`h2`,null,[e.kindMeta?(u(),m(`i`,{key:0,class:g(`iconoir-${e.kindMeta.icon} icon-${e.kindMeta.layer}`)},null,2)):E(``,!0),p(`div`,Nn,[p(`span`,Pn,h(e.data.name),1),p(`span`,Fn,h(e.kind),1)])]),M.value?(u(),m(`div`,In,[p(`span`,Ln,[s[0]||=i(` by `,-1),r(l,{to:{name:`instance`,params:{kind:`Import`,instance:M.value}}},{default:c(()=>[i(h(M.value),1)]),_:1},8,[`to`])]),N.value?(u(),m(`span`,Rn,` generated `+h(t(R)(N.value)),1)):E(``,!0)])):(u(),n(l,{key:1,class:`btn-header`,to:`/kinds/${e.kind}/instances/${e.data.name}/edit`,title:`Edit this resource`},{default:c(()=>[...s[1]||=[p(`i`,{class:`iconoir-edit-pencil`},null,-1),i(` Edit `,-1)]]),_:1},8,[`to`]))]),w.value&&d.value?(u(),m(`div`,zn,[p(`div`,{id:`graphviz`,ref_key:`graphEl`,ref:v,class:`canvas`,innerHTML:d.value},null,8,Bn)])):k.value&&!w.value?(u(),m(`p`,Vn,[...s[2]||=[p(`i`,{class:`iconoir-graph-up`},null,-1),i(` No outgoing dependencies — graph omitted `,-1)]])):E(``,!0),P.value?(u(),m(`div`,{key:2,ref_key:`descEl`,ref:S,innerHTML:P.value,class:g({footer:k.value})},null,10,Hn)):E(``,!0)]),(u(!0),m(_,null,f(I.value,e=>(u(),n(ce,{key:e.label,dot:e.dot,label:e.label},null,8,[`dot`,`label`]))),128)),r(_e,{data:e.data},null,8,[`data`]),p(`article`,Un,[s[4]||=p(`header`,null,[p(`h2`,null,`Details`)],-1),p(`table`,null,[s[3]||=p(`thead`,null,[p(`tr`,null,[p(`th`,{scope:`col`},`Name`),p(`th`,{scope:`col`},`Value`)])],-1),p(`tbody`,null,[r(we,{annotations:C.value},null,8,[`annotations`]),r(Ne,{annotations:C.value,kind:e.kind},null,8,[`annotations`,`kind`]),r(He,{annotations:C.value},null,8,[`annotations`]),r(Xe,{annotations:C.value},null,8,[`annotations`]),r(lt,{annotations:C.value,kind:e.kind},null,8,[`annotations`,`kind`]),r(Ft,{annotations:C.value,instance:e.data},null,8,[`annotations`,`instance`]),r(Rt,{annotations:C.value,kind:e.kind},null,8,[`annotations`,`kind`]),r(sn,{annotations:C.value,kind:e.kind},null,8,[`annotations`,`kind`]),r(pn,{annotations:C.value,kind:e.kind},null,8,[`annotations`,`kind`]),r(Cn,{annotations:C.value,kind:e.kind},null,8,[`annotations`,`kind`]),r(Dn,{annotations:C.value},null,8,[`annotations`]),(u(!0),m(_,null,f(U.value,([t,r])=>(u(),n(Mn,{key:t,"annotation-key":t,value:r,kind:e.kind},null,8,[`annotation-key`,`value`,`kind`]))),128))])])]),r(X,{data:e.data},null,8,[`data`])],64)}}},[[`__scopeId`,`data-v-5b464f89`]]),Gn={class:`view-header`},Kn=[`innerHTML`],qn={key:1,class:`view-query-display`},Jn={class:`query-item`},Yn={class:`query-value`},Xn={key:0,class:`search-error`},Zn={class:`search-error-message`},Qn={key:1,class:`view-results`},$n={class:`view-result-meta`},er={key:2},Q=100,tr=w({__name:`ViewDetail`,props:{data:Object,kindMeta:Object},setup(e){let t=e,n=D(()=>t.data.metadata?.annotations||{}),a=D(()=>n.value[`view/query`]),o=D(()=>n.value[`architecture/description`]),c=D(()=>n.value[`view/type`]||`list:name+kind`),l=D(()=>c.value===`list:name+kind`),d=D(()=>(n.value[`view/fields`]||``).split(`,`).map(e=>e.trim()).filter(Boolean)),f=D(()=>(n.value[`view/sort`]||``).split(`,`).map(e=>e.trim()).filter(Boolean)),v=O(null);V(v);let y=O([]),b=O(0),x=O(0),C=O(!1),w=O(!1),T=O(null),k=0;function A(e,t){return t.length?[...e].sort((e,n)=>{for(let r of t){let t=r.startsWith(`-`),i=t?r.slice(1):r,a=e.annotations?.[i]??``,o=n.annotations?.[i]??``,s=String(a).localeCompare(String(o),void 0,{numeric:!0});if(s!==0)return t?-s:s}return 0}):e}let j=D(()=>A(y.value,f.value));async function M(){if(a.value){C.value=!0,T.value=null,k=0;try{let e=d.value.length?`annotations`:`brief`,t=await S(a.value,{limit:Q,offset:0,output:e});y.value=t.instances||[],b.value=t.total||0,x.value=t.query_time_ms||0,k=y.value.length}catch(e){T.value=e.message}finally{C.value=!1}}}async function N(){if(!(w.value||k>=b.value||!a.value)){w.value=!0;try{let e=d.value.length?`annotations`:`brief`,t=(await S(a.value,{limit:Q,offset:k,output:e})).instances||[];y.value=[...y.value,...t],k+=t.length}catch{}w.value=!1}}return s(()=>t.data,M,{immediate:!0}),(t,n)=>(u(),m(_,null,[p(`article`,Gn,[p(`header`,null,[p(`h2`,null,[e.kindMeta?(u(),m(`i`,{key:0,class:g(`iconoir-${e.kindMeta.icon} icon-${e.kindMeta.layer}`)},null,2)):E(``,!0),i(` `+h(e.data.name),1)])]),o.value?(u(),m(`div`,{key:0,ref_key:`descEl`,ref:v,class:`view-description`,innerHTML:o.value},null,8,Kn)):E(``,!0),a.value?(u(),m(`div`,qn,[p(`p`,Jn,[n[0]||=p(`span`,{class:`label`},`Query:`,-1),p(`code`,Yn,h(a.value),1)])])):E(``,!0)]),T.value?(u(),m(`div`,Xn,[n[1]||=p(`div`,{class:`search-error-header`},[p(`i`,{class:`iconoir-warning-triangle`}),i(` Query Error`)],-1),p(`div`,Zn,h(T.value),1)])):E(``,!0),!C.value&&a.value&&!T.value?(u(),m(`article`,Qn,[p(`header`,null,[n[2]||=p(`h3`,null,`Results`,-1),p(`span`,$n,h(b.value)+` `+h(b.value===1?`item`:`items`)+` in `+h(x.value)+` ms`,1)]),r(z,{instances:j.value,"omit-kind":!l.value,fields:d.value.length?d.value:null,total:b.value,"loading-more":w.value,onLoadMore:N},null,8,[`instances`,`omit-kind`,`fields`,`total`,`loading-more`])])):E(``,!0),a.value?E(``,!0):(u(),m(`article`,er,[...n[3]||=[p(`p`,{class:`view-empty-state`},[p(`em`,null,`No query defined`)],-1)]]))],64))}},[[`__scopeId`,`data-v-f921d1a2`]]),nr=[`innerHTML`],rr={key:3,class:`analysis-table-wrapper`},ir={key:4,class:`analysis-list`},ar={key:5,class:`code`},or={components:{RelationsGrid:X,AnalysisSection:w({__name:`AnalysisSection`,props:{section:Object},setup(e){let t={error:`xmark-circle`,warning:`warning-triangle`,info:`info-circle`};return(n,r)=>e.section.type===`heading`?(u(),m(`div`,{key:0,class:g([`analysis-heading`,`level-`+e.section.level])},h(e.section.text),3)):e.section.type===`text`?(u(),m(`div`,{key:1,class:`analysis-text`,innerHTML:e.section.content},null,8,nr)):e.section.type===`message`?(u(),m(`div`,{key:2,class:g([`analysis-message`,`message-`+e.section.level])},[p(`i`,{class:g(`iconoir-${t[e.section.level]||`info-circle`}`)},null,2),i(` `+h(e.section.message),1)],2)):e.section.type===`table`?(u(),m(`div`,rr,[p(`table`,null,[p(`thead`,null,[p(`tr`,null,[(u(!0),m(_,null,f(e.section.headers,e=>(u(),m(`th`,{key:e},h(e),1))),128))])]),p(`tbody`,null,[(u(!0),m(_,null,f(e.section.rows,(e,t)=>(u(),m(`tr`,{key:t},[(u(!0),m(_,null,f(e,(e,t)=>(u(),m(`td`,{key:t},h(e),1))),128))]))),128))])])])):e.section.type===`list`?(u(),m(`ul`,ir,[(u(!0),m(_,null,f(e.section.items,(e,t)=>(u(),m(`li`,{key:t},h(e),1))),128))])):e.section.type===`code`?(u(),m(`pre`,ar,[p(`code`,{class:g(e.section.lang?`language-`+e.section.lang:``)},h(e.section.content),3)])):E(``,!0)}},[[`__scopeId`,`data-v-4d3d107a`]])},props:{data:Object,kindMeta:Object},setup(e){let t=D(()=>e.data.metadata?.annotations||{}),n=D(()=>t.value[`architecture/description`]),r=D(()=>t.value[`analysis/script`]),i=D(()=>t.value[`analysis/handler`]||`ruby`),a=D(()=>t.value[`analysis/timeout`]||`30s`),o=O(null);V(o);let c=O(null),l=O(!1);async function u(){l.value=!0,c.value=await C(e.data.name),l.value=!1}function d(){r.value&&navigator.clipboard.writeText(r.value)}function f(e){let t=[],n={title:null,sections:[]};for(let r of e)r.type===`heading`&&r.level===0?((n.title||n.sections.length)&&t.push(n),n={title:r.text,sections:[]}):n.sections.push(r);return(n.title||n.sections.length)&&t.push(n),t}let p=D(()=>c.value?.sections?.length?f(c.value.sections):[]),m=D(()=>p.value.some(e=>e.title)),h=O(null);return s(c,async()=>{await b(),h.value&&k(h.value)}),y(()=>{r.value&&u()}),{annotations:t,description:n,analysisScript:r,handler:i,timeout:a,descEl:o,rootEl:h,result:c,executing:l,sectionGroups:p,hasTitledGroups:m,run:u,copyScript:d}}},sr={class:`analysis-header`},cr={class:`instance-title-text`},lr={class:`instance-name`},ur={class:`header-actions`},dr=[`innerHTML`],fr={ref:`rootEl`,class:`analysis-execution`},pr={class:`analysis-execute-controls`},mr=[`disabled`],hr={class:`analysis-result-header`},gr={class:`status-indicator`},_r={key:0,class:`duration`},vr={key:0,class:`analysis-error-details`},yr={key:0},br={class:`code`},xr={key:1,class:`analysis-output`},Sr={key:0},Cr=[`open`],wr={key:1,class:`analysis-results-placeholder`},Tr={class:`analysis-details-section`},Er={class:`analysis-details-content`},Dr={class:`analysis-metadata`},Or={class:`analysis-meta-item`},kr={class:`analysis-meta-item`},Ar={class:`analysis-script`},jr={class:`analysis-script-header`},Mr={class:`code`},Nr={class:`language-ruby`},Pr={key:1};function Fr(e,t,o,s,l,d){let v=a(`router-link`),y=a(`AnalysisSection`),b=a(`RelationsGrid`);return u(),m(_,null,[p(`article`,sr,[p(`header`,null,[p(`h2`,null,[o.kindMeta?(u(),m(`i`,{key:0,class:g(`iconoir-${o.kindMeta.icon} icon-${o.kindMeta.layer}`)},null,2)):E(``,!0),p(`div`,cr,[p(`span`,lr,h(o.data.name),1),t[2]||=p(`span`,{class:`instance-kind-subtitle`},`Analysis`,-1)])]),p(`div`,ur,[r(v,{class:`btn-header`,to:`/kinds/Analysis/instances/${o.data.name}/edit`,title:`Edit this resource`},{default:c(()=>[...t[3]||=[p(`i`,{class:`iconoir-edit-pencil`},null,-1),i(` Edit `,-1)]]),_:1},8,[`to`])])]),s.description?(u(),m(`div`,{key:0,ref:`descEl`,class:`analysis-description`,innerHTML:s.description},null,8,dr)):E(``,!0)]),s.analysisScript?(u(),m(_,{key:0},[p(`article`,fr,[p(`header`,null,[t[4]||=p(`h3`,null,[p(`i`,{class:`iconoir-play`}),i(` Results`)],-1),p(`div`,pr,[p(`button`,{class:`secondary outline`,onClick:t[0]||=(...e)=>s.run&&s.run(...e),disabled:s.executing},[p(`i`,{class:g([`iconoir-refresh`,{spinning:s.executing}])},null,2),i(` `+h(s.executing?`Running...`:`Re-run`),1)],8,mr)])]),s.result?(u(),m(`div`,{key:0,class:g([`analysis-result-container`,s.result.success?`success`:`failed`])},[p(`div`,hr,[p(`span`,gr,[s.result.success?(u(),m(_,{key:0},[s.result.has_findings?(u(),m(_,{key:0},[t[5]||=p(`i`,{class:`iconoir-warning-triangle status-findings`},null,-1),t[6]||=i(` Completed with findings `,-1)],64)):(u(),m(_,{key:1},[t[7]||=p(`i`,{class:`iconoir-check-circle status-success`},null,-1),t[8]||=i(` Completed successfully `,-1)],64))],64)):(u(),m(_,{key:1},[t[9]||=p(`i`,{class:`iconoir-xmark-circle status-error`},null,-1),t[10]||=i(` Failed `,-1)],64))]),s.result.duration?(u(),m(`span`,_r,[t[11]||=p(`i`,{class:`iconoir-timer`},null,-1),i(` `+h(s.result.duration.toFixed(2))+`s `,1)])):E(``,!0)]),s.result.success?E(``,!0):(u(),m(`div`,vr,[t[13]||=p(`strong`,null,`Error:`,-1),i(` `+h(s.result.error)+` `,1),s.result.error_backtrace?.length?(u(),m(`details`,yr,[t[12]||=p(`summary`,null,`Show backtrace`,-1),p(`pre`,br,h(s.result.error_backtrace.join(`
2
+ `)),1)])):E(``,!0)])),s.result.sections?.length?(u(),m(`div`,xr,[s.hasTitledGroups?(u(!0),m(_,{key:1},f(s.sectionGroups,(e,t)=>(u(),m(_,{key:t},[e.title?(u(),m(_,{key:1},[t>0&&s.sectionGroups[t-1]?.title?(u(),m(`hr`,Sr)):E(``,!0),p(`details`,{open:t===0||t===1&&!s.sectionGroups[0].title},[p(`summary`,null,h(e.title),1),(u(!0),m(_,null,f(e.sections,(e,r)=>(u(),n(y,{key:`g${t}-${r}`,section:e},null,8,[`section`]))),128))],8,Cr)],64)):(u(!0),m(_,{key:0},f(e.sections,(e,t)=>(u(),n(y,{key:`u${t}`,section:e},null,8,[`section`]))),128))],64))),128)):(u(!0),m(_,{key:0},f(s.sectionGroups[0]?.sections,(e,t)=>(u(),n(y,{key:t,section:e},null,8,[`section`]))),128))])):E(``,!0)],2)):s.executing?(u(),m(`div`,wr,` Running analysis... `)):E(``,!0)],512),p(`details`,Tr,[t[18]||=p(`summary`,null,[p(`i`,{class:`iconoir-code-brackets-square`}),i(` Script Details `)],-1),p(`div`,Er,[p(`div`,Dr,[p(`span`,Or,[t[14]||=p(`i`,{class:`iconoir-code`},null,-1),i(` `+h(s.handler),1)]),p(`span`,kr,[t[15]||=p(`i`,{class:`iconoir-timer`},null,-1),i(` `+h(s.timeout),1)])]),p(`div`,Ar,[p(`div`,jr,[t[17]||=p(`strong`,null,`Script`,-1),p(`button`,{class:`copy-button`,onClick:t[1]||=(...e)=>s.copyScript&&s.copyScript(...e),title:`Copy script to clipboard`},[...t[16]||=[p(`i`,{class:`iconoir-copy`},null,-1)]])]),p(`pre`,Mr,[p(`code`,Nr,h(s.analysisScript),1)])])])])],64)):(u(),m(`article`,Pr,[...t[19]||=[p(`p`,{class:`analysis-empty-state`},[p(`i`,{class:`iconoir-warning-triangle`}),i(` No script defined for this analysis. `)],-1)]])),r(b,{data:o.data},null,8,[`data`])],64)}var Ir=w(or,[[`render`,Fr],[`__scopeId`,`data-v-19706829`]]),Lr={class:`import-header`},Rr={class:`instance-title-text`},zr={class:`instance-name`},$={class:`header-actions`},Br={key:0,class:`badge badge-primary`},Vr={key:1,class:`badge badge-warning`},Hr=[`innerHTML`],Ur={key:0,class:`graph-container`},Wr=[`innerHTML`],Gr={key:1,class:`graph-too-large`},Kr={key:2,class:`graph-too-large`},qr={class:`import-configuration`},Jr={class:`import-metadata`},Yr={key:0,class:`import-meta-item`},Xr={key:1,class:`import-meta-item`},Zr={key:2,class:`import-meta-item`},Qr={key:3,class:`import-meta-item status-enabled`},$r={key:4,class:`import-meta-item status-disabled`},ei={key:0,class:`import-output-path`},ti={key:1,class:`import-config-section`,open:``},ni={class:`import-config-table`},ri={scope:`row`},ii={key:0},ai=w({__name:`ImportDetail`,props:{data:Object,kindMeta:Object},setup(e){let t=e,n=O(``),o=O(null),s=null,d=O(null);V(d);let v=D(()=>t.data.metadata?.annotations||{}),x=D(()=>v.value[`import/handler`]),S=D(()=>v.value[`import/enabled`]!==`false`),C=D(()=>v.value[`import/cacheTime`]),w=D(()=>v.value[`import/priority`]),k=D(()=>v.value[`import/outputPath`]),M=D(()=>v.value[`architecture/description`]),N=D(()=>Object.entries(v.value).filter(([e])=>e.startsWith(`import/config/`)).map(([e,t])=>[e.replace(`import/config/`,``),t])),P=D(()=>{let e=t.data.relations||{};return Object.values(e).reduce((e,t)=>typeof t==`object`?e+Object.values(t).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0):e,0)}),F=D(()=>Object.keys(t.data.relations||{}).length>0),I=D(()=>{let e=t.data.references||{};return F.value||Object.keys(e).length>0}),L=D(()=>P.value>=50);y(async()=>{if(F.value&&!L.value){let e=await T(`Import`,t.data.name);n.value=e?await A(e):``,await b(),R()}}),l(()=>{s?.destroy()});function R(){if(!o.value)return;let e=o.value.querySelector(`svg`);e&&(s=j(e,o.value))}function z(e){return typeof e==`string`?e.startsWith(`http`)||e.startsWith(`git@`)||e.startsWith(`file://`):!1}return(t,s)=>{let l=a(`router-link`);return u(),m(_,null,[p(`article`,Lr,[p(`header`,null,[p(`h2`,null,[e.kindMeta?(u(),m(`i`,{key:0,class:g(`iconoir-${e.kindMeta.icon} icon-${e.kindMeta.layer}`)},null,2)):E(``,!0),p(`div`,Rr,[p(`span`,zr,h(e.data.name),1),s[0]||=p(`span`,{class:`instance-kind-subtitle`},`Import`,-1)])]),p(`div`,$,[x.value?(u(),m(`span`,Br,h(x.value),1)):E(``,!0),S.value?E(``,!0):(u(),m(`span`,Vr,`Disabled`)),r(l,{class:`btn-header`,to:`/kinds/Import/instances/${e.data.name}/edit`,title:`Edit this resource`},{default:c(()=>[...s[1]||=[p(`i`,{class:`iconoir-edit-pencil`},null,-1),i(` Edit `,-1)]]),_:1},8,[`to`])])]),M.value?(u(),m(`div`,{key:0,ref_key:`descEl`,ref:d,class:`import-description`,innerHTML:M.value},null,8,Hr)):E(``,!0),I.value?(u(),m(_,{key:1},[F.value&&!L.value&&n.value?(u(),m(`div`,Ur,[p(`div`,{id:`graphviz`,ref_key:`graphEl`,ref:o,class:`canvas`,innerHTML:n.value},null,8,Wr)])):L.value?(u(),m(`p`,Gr,[s[2]||=p(`i`,{class:`iconoir-warning-triangle`},null,-1),i(` Graph too large to display (`+h(P.value)+` relations) `,1)])):F.value?E(``,!0):(u(),m(`p`,Kr,[...s[3]||=[p(`i`,{class:`iconoir-graph-up`},null,-1),i(` No outgoing dependencies — graph omitted `,-1)]]))],64)):E(``,!0)]),p(`article`,qr,[s[11]||=p(`header`,null,[p(`h3`,null,[p(`i`,{class:`iconoir-settings`}),i(` Configuration`)])],-1),p(`div`,Jr,[x.value?(u(),m(`span`,Yr,[s[4]||=p(`i`,{class:`iconoir-code`},null,-1),i(` `+h(x.value),1)])):E(``,!0),C.value?(u(),m(`span`,Xr,[s[5]||=p(`i`,{class:`iconoir-timer`},null,-1),i(` `+h(C.value),1)])):E(``,!0),w.value?(u(),m(`span`,Zr,[s[6]||=p(`i`,{class:`iconoir-sort-down`},null,-1),i(` Priority: `+h(w.value),1)])):E(``,!0),S.value?(u(),m(`span`,Qr,[...s[7]||=[p(`i`,{class:`iconoir-check-circle`},null,-1),i(` Enabled `,-1)]])):(u(),m(`span`,$r,[...s[8]||=[p(`i`,{class:`iconoir-xmark-circle`},null,-1),i(` Disabled `,-1)]]))]),k.value?(u(),m(`div`,ei,[s[9]||=p(`strong`,null,`Output:`,-1),p(`code`,null,h(k.value),1)])):E(``,!0),N.value.length?(u(),m(`details`,ti,[s[10]||=p(`summary`,null,[p(`i`,{class:`iconoir-list`}),i(` Handler Settings `)],-1),p(`table`,ni,[p(`tbody`,null,[(u(!0),m(_,null,f(N.value,([e,t])=>(u(),m(`tr`,{key:e},[p(`th`,ri,h(e),1),p(`td`,null,[z(t)?(u(),m(`code`,ii,h(t),1)):(u(),m(_,{key:1},[i(h(t),1)],64))])]))),128))])])])):E(``,!0)]),r(X,{data:e.data},null,8,[`data`])],64)}}},[[`__scopeId`,`data-v-ceaaa6c2`]]),oi={key:0},si={key:1},ci={__name:`InstanceRouter`,props:{kind:String,instance:String},setup(e){let t=e,r=d(`kinds`),a=O(null),o=O(!0),c=O(null);async function l(){o.value=!0,c.value=null;try{a.value=await x(t.kind,t.instance)}catch(e){c.value=e.message}finally{o.value=!1}}s(()=>[t.kind,t.instance],l,{immediate:!0});function f(){return r.value?r.value.kinds.find(e=>e.kind===t.kind):null}return(t,r)=>o.value?(u(),m(`article`,oi,[...r[0]||=[p(`p`,null,`Loading...`,-1)]])):c.value?(u(),m(`article`,si,[r[4]||=p(`header`,null,[p(`h2`,null,`Not Found`)],-1),p(`p`,null,[r[1]||=i(`Instance `,-1),p(`strong`,null,h(e.instance),1),r[2]||=i(` of kind `,-1),p(`strong`,null,h(e.kind),1),r[3]||=i(` was not found.`,-1)])])):a.value?(u(),m(_,{key:2},[e.kind===`View`?(u(),n(tr,{key:0,data:a.value,"kind-meta":f()},null,8,[`data`,`kind-meta`])):e.kind===`Analysis`?(u(),n(Ir,{key:1,data:a.value,"kind-meta":f()},null,8,[`data`,`kind-meta`])):e.kind===`Import`?(u(),n(ai,{key:2,data:a.value,"kind-meta":f()},null,8,[`data`,`kind-meta`])):(u(),n(Wn,{key:3,data:a.value,kind:e.kind,"kind-meta":f()},null,8,[`data`,`kind`,`kind-meta`]))],64)):E(``,!0)}};export{ci as default};
@@ -0,0 +1 @@
1
+ .relations-section .relations-grid[data-v-3a1d98d9]{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.relations-section .relations-outgoing[data-v-3a1d98d9]{order:2}.relations-section .relations-incoming[data-v-3a1d98d9]{order:1}@media (width<=768px){.relations-section .relations-grid[data-v-3a1d98d9]{grid-template-columns:1fr;gap:1rem}.relations-section .relations-outgoing[data-v-3a1d98d9]{order:1}.relations-section .relations-incoming[data-v-3a1d98d9]{order:2}}.relations-section .relations-column h3[data-v-3a1d98d9]{color:var(--muted-color);align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:1rem;font-weight:600;display:flex}.relations-section .relation-group[data-v-3a1d98d9]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:.5rem;margin-bottom:.75rem;padding:.5rem .75rem}.relations-section .relation-kind[data-v-3a1d98d9]{align-items:center;gap:.5rem;margin-bottom:.25rem;font-weight:600;display:flex}.relations-section .relation-verb[data-v-3a1d98d9]{color:var(--muted-color);margin-bottom:.5rem;font-size:.875rem}.relations-section .relations-empty[data-v-3a1d98d9]{color:var(--muted-color);font-style:italic}.instance-badges[data-v-3a1d98d9]{flex-wrap:wrap;gap:6px;display:flex}.graph-container[data-v-084799f5]{border:1px solid var(--muted-border-color);background-color:var(--card-background-color);border-radius:4px;height:auto;min-height:150px;max-height:70vh;position:relative;overflow:hidden}.canvas[data-v-084799f5]{width:100%;height:100%}[data-v-084799f5] .canvas svg{display:block}.graph-error[data-v-084799f5]{color:var(--del-color);padding:.5rem 0}.requirement-status-icon[data-v-1e32a2b6]{font-size:1.2em}.requirement-status-icon.status-implemented[data-v-1e32a2b6]{color:#10b981}.requirement-status-icon.status-partial[data-v-1e32a2b6]{color:#f59e0b}.requirement-status-icon.status-planned[data-v-1e32a2b6]{color:#3b82f6}.requirement-status-icon.status-not-started[data-v-1e32a2b6],.requirement-status-icon.status-unknown[data-v-1e32a2b6]{color:#9ca3af}.git-info[data-v-ae19746e]{flex-wrap:wrap;gap:16px;padding:4px 0;display:flex}.git-item[data-v-ae19746e]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;display:flex}.git-item i[data-v-ae19746e]{color:var(--primary);font-size:1.2em}.git-link[data-v-ae19746e]{color:var(--primary);font-weight:600;text-decoration:none}.git-link[data-v-ae19746e]:hover{text-decoration:underline}.git-clone-command[data-v-ae19746e]{color:var(--muted-color);background-color:var(--code-background-color);border-radius:3px;padding:2px 6px;font-family:monospace;font-size:.9em}.copy-button[data-v-ae19746e]{color:var(--primary);border:1px solid var(--muted-border-color);cursor:pointer;background-color:#0000;border-radius:4px;justify-content:center;align-items:center;min-width:32px;height:32px;padding:6px;transition:all .2s;display:flex}.copy-button[data-v-ae19746e]:hover{background-color:var(--card-background-color);border-color:var(--primary);transform:scale(1.1)}.copy-button.copied[data-v-ae19746e]{color:#fff;background-color:#10b981;border-color:#10b981}.copy-button i[data-v-ae19746e]{font-size:1.1em}.language-distribution[data-v-c306da87]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:6px;flex-direction:column;gap:8px;min-width:200px;padding:8px 12px;display:flex}.language-total[data-v-c306da87]{align-items:baseline;gap:6px;display:flex}.language-total .language-count[data-v-c306da87]{color:var(--color);font-size:1.5em;font-weight:600}.language-total .language-label[data-v-c306da87]{color:var(--muted-color);font-size:.9em}.language-bar[data-v-c306da87]{background-color:var(--muted-border-color);border-radius:4px;height:8px;display:flex;overflow:hidden}.language-bar-segment[data-v-c306da87]{min-width:2px;height:100%}.language-bar-segment.lang-0[data-v-c306da87],.language-legend-dot.lang-0[data-v-c306da87]{background-color:#3178c6}.language-bar-segment.lang-1[data-v-c306da87],.language-legend-dot.lang-1[data-v-c306da87]{background-color:#00add8}.language-bar-segment.lang-2[data-v-c306da87],.language-legend-dot.lang-2[data-v-c306da87]{background-color:#f1e05a}.language-bar-segment.lang-3[data-v-c306da87],.language-legend-dot.lang-3[data-v-c306da87]{background-color:#e34c26}.language-bar-segment.lang-4[data-v-c306da87],.language-legend-dot.lang-4[data-v-c306da87]{background-color:#563d7c}.language-bar-segment.lang-5[data-v-c306da87],.language-legend-dot.lang-5[data-v-c306da87]{background-color:#89e051}.language-bar-segment.lang-6[data-v-c306da87],.language-legend-dot.lang-6[data-v-c306da87]{background-color:#f34b7d}.language-bar-segment.lang-7[data-v-c306da87],.language-legend-dot.lang-7[data-v-c306da87]{background-color:#b07219}.language-bar-segment.lang-8[data-v-c306da87],.language-legend-dot.lang-8[data-v-c306da87]{background-color:#4f5d95}.language-bar-segment.lang-9[data-v-c306da87],.language-legend-dot.lang-9[data-v-c306da87]{background-color:#6b7280}.language-bar-segment.lang-other[data-v-c306da87],.language-legend-dot.lang-other[data-v-c306da87]{background-color:#9ca3af}.language-legend[data-v-c306da87]{flex-wrap:wrap;gap:12px;font-size:.85em;display:flex}.language-legend-item[data-v-c306da87]{align-items:center;gap:4px;display:flex}.language-legend-item a[data-v-c306da87]{color:var(--muted-color);text-decoration:none}.language-legend-item a[data-v-c306da87]:hover{color:var(--primary);text-decoration:underline}.language-legend-dot[data-v-c306da87]{border-radius:50%;flex-shrink:0;width:8px;height:8px}.project-estimate[data-v-6cb46a9d]{flex-wrap:wrap;gap:16px;padding:4px 0;display:flex}.estimate-item[data-v-6cb46a9d]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;display:flex}.estimate-item i[data-v-6cb46a9d]{color:var(--primary);font-size:1.2em}.estimate-label[data-v-6cb46a9d]{color:var(--muted-color);font-size:.9em}.estimate-value[data-v-6cb46a9d]{color:var(--color);font-weight:600}.estimate-note[data-v-6cb46a9d]{color:var(--muted-color);cursor:help;margin-left:.5rem}.estimate-note i[data-v-6cb46a9d]{font-size:.875rem}.repository-distribution[data-v-1fbb3e92]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:6px;flex-direction:column;gap:8px;min-width:200px;padding:8px 12px;display:flex}.repository-total[data-v-1fbb3e92]{align-items:baseline;gap:6px;display:flex}.repository-total .repository-count[data-v-1fbb3e92]{color:var(--color);font-size:1.5em;font-weight:600}.repository-total .repository-label[data-v-1fbb3e92]{color:var(--muted-color);font-size:.9em}.repository-bar[data-v-1fbb3e92]{background-color:var(--muted-border-color);border-radius:4px;height:8px;display:flex;overflow:hidden}.repository-bar-segment[data-v-1fbb3e92]{min-width:2px;height:100%}.repository-bar-segment.status-active[data-v-1fbb3e92]{background-color:#10b981}.repository-bar-segment.status-high-bus-factor[data-v-1fbb3e92]{background-color:#f59e0b}.repository-bar-segment.status-abandoned[data-v-1fbb3e92]{background-color:#dc2626}.repository-bar-segment.status-other[data-v-1fbb3e92]{background-color:#6b7280}.repository-bar-segment.status-archived[data-v-1fbb3e92]{background-color:#9ca3af}.repository-legend[data-v-1fbb3e92]{flex-wrap:wrap;gap:12px;font-size:.85em;display:flex}.repository-legend-item[data-v-1fbb3e92]{color:var(--muted-color);align-items:center;gap:4px;display:flex}.repository-legend-dot[data-v-1fbb3e92]{border-radius:50%;width:8px;height:8px}.repository-legend-dot.status-active[data-v-1fbb3e92]{background-color:#10b981}.repository-legend-dot.status-high-bus-factor[data-v-1fbb3e92]{background-color:#f59e0b}.repository-legend-dot.status-abandoned[data-v-1fbb3e92]{background-color:#dc2626}.repository-legend-dot.status-other[data-v-1fbb3e92]{background-color:#6b7280}.repository-legend-dot.status-archived[data-v-1fbb3e92]{background-color:#9ca3af}@media (prefers-color-scheme:dark){.repository-bar-segment.status-active[data-v-1fbb3e92],.repository-legend-dot.status-active[data-v-1fbb3e92]{background-color:#34d399}.repository-bar-segment.status-high-bus-factor[data-v-1fbb3e92],.repository-legend-dot.status-high-bus-factor[data-v-1fbb3e92]{background-color:#fbbf24}.repository-bar-segment.status-abandoned[data-v-1fbb3e92],.repository-legend-dot.status-abandoned[data-v-1fbb3e92]{background-color:#f87171}.repository-bar-segment.status-other[data-v-1fbb3e92],.repository-legend-dot.status-other[data-v-1fbb3e92]{background-color:#9ca3af}.repository-bar-segment.status-archived[data-v-1fbb3e92],.repository-legend-dot.status-archived[data-v-1fbb3e92]{background-color:#d1d5db}}.activity-sparkline[data-v-c5e6ffa5]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:4px;align-items:flex-end;gap:1px;height:20px;padding:2px 4px;display:inline-flex}.activity-sparkline-bar[data-v-c5e6ffa5]{background-color:#3178c6;border-radius:1px;width:2px;min-height:2px;transition:background-color .2s}.activity-sparkline-bar.empty[data-v-c5e6ffa5]{background-color:#0000;min-height:0}.activity-sparkline-bar[data-v-c5e6ffa5]:hover{background-color:#2563eb}.activity-sparkline-bar.empty[data-v-c5e6ffa5]:hover{background-color:#0000}.contributors-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]{background-color:#10b981}.contributors-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]:hover{background-color:#059669}.jira-created-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]{background-color:#f59e0b}.jira-created-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]:hover{background-color:#d97706}.jira-resolved-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]{background-color:#10b981}.jira-resolved-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]:hover{background-color:#059669}@media (prefers-color-scheme:dark){.jira-created-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]{background-color:#fbbf24}.jira-resolved-sparkline .activity-sparkline-bar[data-v-c5e6ffa5]{background-color:#34d399}}.sparkline-sm[data-v-c5e6ffa5]{gap:2px;height:28px}.sparkline-sm .activity-sparkline-bar[data-v-c5e6ffa5]{border-radius:1px;width:4px}.activity-summary[data-v-c3143572]{flex-wrap:wrap;gap:16px;padding:4px 0;display:flex}.activity-item[data-v-c3143572]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;display:flex}.activity-item i[data-v-c3143572]{color:var(--primary);font-size:1.2em}.activity-label[data-v-c3143572]{color:var(--muted-color);font-size:.9em}.activity-value[data-v-c3143572]{color:var(--color);font-weight:600}.activity-value.status-abandoned[data-v-c3143572]{color:#dc2626;font-weight:700}.activity-value.status-bot-only[data-v-c3143572]{color:#f59e0b;font-style:italic}.activity-value.status-archived[data-v-c3143572]{color:#6b7280;font-weight:600;text-decoration:line-through}.activity-value.bus-factor-high[data-v-c3143572]{color:#dc2626;font-weight:700}.activity-value.bus-factor-medium[data-v-c3143572]{color:#f59e0b;font-weight:600}.sparkline-total[data-v-c3143572]{color:var(--muted-color);margin-left:6px;font-size:.85em}.contributors-total[data-v-c3143572]{color:var(--muted-color);opacity:.8;margin-left:4px;font-size:.8em;font-weight:400}.team-stats[data-v-4e1ea26f]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:6px;flex-wrap:wrap;gap:16px;padding:8px 12px;display:flex}.team-stat-item[data-v-4e1ea26f]{align-items:baseline;gap:6px;display:flex}.team-stat-value[data-v-4e1ea26f]{color:var(--color);font-size:1.5em;font-weight:600}.team-stat-label[data-v-4e1ea26f]{color:var(--muted-color);font-size:.9em}.team-value[data-v-4e1ea26f]{color:var(--color)}a.team-value[data-v-4e1ea26f]{color:var(--primary);text-decoration:none}a.team-value[data-v-4e1ea26f]:hover{text-decoration:underline}.team-members[data-v-4e1ea26f]{flex-direction:column;gap:2px;display:flex}.team-member[data-v-4e1ea26f]{color:var(--color)}a.team-member[data-v-4e1ea26f]{color:var(--primary);text-decoration:none}a.team-member[data-v-4e1ea26f]:hover{text-decoration:underline}.jira-info[data-v-4e1ea26f]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.jira-metric[data-v-4e1ea26f]{align-items:center;gap:6px;display:flex}.jira-metric-label[data-v-4e1ea26f]{color:var(--muted-color);font-size:.85em}.jira-metric-total[data-v-4e1ea26f]{color:var(--color);font-size:.85em;font-weight:600}.jira-trend[data-v-4e1ea26f]{cursor:help;align-items:center;gap:4px;font-size:.85em;display:flex}.jira-trend i[data-v-4e1ea26f]{font-size:1em}.jira-trend-text[data-v-4e1ea26f]{font-weight:600}.jira-trend-positive i[data-v-4e1ea26f],.jira-trend-positive .jira-trend-text[data-v-4e1ea26f]{color:#10b981}.jira-trend-negative i[data-v-4e1ea26f],.jira-trend-negative .jira-trend-text[data-v-4e1ea26f]{color:#ef4444}.jira-trend-neutral i[data-v-4e1ea26f],.jira-trend-neutral .jira-trend-text[data-v-4e1ea26f]{color:var(--muted-color)}@media (prefers-color-scheme:dark){.jira-trend-positive i[data-v-4e1ea26f],.jira-trend-positive .jira-trend-text[data-v-4e1ea26f]{color:#34d399}.jira-trend-negative i[data-v-4e1ea26f],.jira-trend-negative .jira-trend-text[data-v-4e1ea26f]{color:#f87171}}.deployment-types[data-v-7cfa7667]{grid-template-columns:repeat(2,1fr);gap:.5rem;display:grid}.deployment-item[data-v-7cfa7667]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);color:var(--color);border-radius:6px;align-items:center;gap:.5rem;padding:.5rem;text-decoration:none;transition:border-color .2s;display:flex}.deployment-item[data-v-7cfa7667]:hover{border-color:var(--primary)}.deployment-item i[data-v-7cfa7667]{color:var(--primary);flex-shrink:0;font-size:1.2em}.workflow-platforms[data-v-62c25aa1]{grid-template-columns:repeat(2,1fr);gap:.5rem;display:grid}.workflow-platform-item[data-v-62c25aa1]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);color:var(--color);border-radius:6px;align-items:center;gap:.5rem;padding:.5rem;text-decoration:none;transition:border-color .2s;display:flex}.workflow-platform-item[data-v-62c25aa1]:hover{border-color:var(--primary)}.workflow-platform-item input[type=checkbox][data-v-62c25aa1]{pointer-events:none;margin:0}.workflow-types ul[data-v-62c25aa1]{margin:.25rem 0 0;padding-left:0;list-style:none}.workflow-types li[data-v-62c25aa1]{align-items:center;gap:.5rem;display:flex}.workflow-types li input[type=checkbox][data-v-62c25aa1]{pointer-events:none;margin:0}.workflow-types li a[data-v-62c25aa1]{color:var(--color);text-decoration:none;transition:color .2s}.workflow-types li a[data-v-62c25aa1]:hover{color:var(--primary);text-decoration:underline}.workflow-types li.grayed-out[data-v-62c25aa1]{opacity:.4}.workflow-types[data-v-62c25aa1]{margin-top:.5rem;padding-left:1rem}.workflow-types>div[data-v-62c25aa1]{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.5rem;display:grid}.workflow-category strong[data-v-62c25aa1]{margin-bottom:.25rem;display:block}.agentic-tools[data-v-9f667c51]{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;display:grid}.tool-item[data-v-9f667c51]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);color:var(--color);border-radius:6px;padding:.75rem;text-decoration:none;transition:opacity .2s,border-color .2s;display:block}.tool-item[data-v-9f667c51]:hover{border-color:var(--primary)}.tool-item.not-implemented[data-v-9f667c51]{opacity:.4}.tool-item-header[data-v-9f667c51]{align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.tool-item-header input[type=checkbox][data-v-9f667c51]{pointer-events:none;margin:0}.tool-item-header i[data-v-9f667c51]{font-size:1.2em}.tool-item-header i.implemented[data-v-9f667c51]{color:var(--primary)}.tool-item-header i.not-implemented[data-v-9f667c51]{color:var(--muted-color)}.tool-item-description[data-v-9f667c51]{color:var(--muted-color);font-size:.85em}.activity-summary[data-v-1b458fa7]{flex-wrap:wrap;gap:16px;padding:4px 0;display:flex}.activity-item[data-v-1b458fa7]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;display:flex}.activity-item i[data-v-1b458fa7]{color:var(--primary);font-size:1.2em}.activity-label[data-v-1b458fa7]{color:var(--muted-color);font-size:.9em}.activity-value[data-v-1b458fa7]{color:var(--color);font-weight:600}.license-details-inline[data-v-1b458fa7]{display:inline}.license-details-inline summary[data-v-1b458fa7]{cursor:pointer;list-style:none}.license-details-inline summary[data-v-1b458fa7]::-webkit-details-marker{display:none}.license-overflow[data-v-1b458fa7]{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.instance-title-text[data-v-5b464f89]{flex-direction:column;line-height:1;display:flex}.instance-kind-subtitle[data-v-5b464f89]{color:var(--muted-color);opacity:.7;margin-top:.1em;font-size:.4em;font-weight:400}.graph-container[data-v-5b464f89]{border:1px solid var(--muted-border-color);background-color:var(--card-background-color);border-radius:4px;height:auto;min-height:150px;max-height:70vh;position:relative;overflow:hidden}#graphviz[data-v-5b464f89]{width:100%;height:100%}[data-v-5b464f89] #graphviz svg{display:block}.instance-badges[data-v-5b464f89]{flex-wrap:wrap;gap:6px;display:flex}.btn-header[data-v-5b464f89]{color:var(--muted-color);border-radius:var(--border-radius);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:.35rem;padding:.4rem .75rem;font-size:.9rem;text-decoration:none;transition:all .15s;display:inline-flex}.btn-header[data-v-5b464f89]:hover{color:var(--primary);border-color:var(--primary)}.view-header[data-v-f921d1a2]{margin-bottom:.75rem}.view-header h2[data-v-f921d1a2]{align-items:center;gap:.5rem;display:flex}.view-header h2 i[data-v-f921d1a2]{color:var(--primary)}.view-description[data-v-f921d1a2]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:8px;margin-top:.75rem;padding:.75rem}.view-query-display[data-v-f921d1a2]{flex-wrap:wrap;align-items:center;gap:1rem;padding:.5rem 0;display:flex}.query-item[data-v-f921d1a2]{align-items:center;gap:.5rem;margin:0;padding:0;display:flex}.query-item .label[data-v-f921d1a2]{color:var(--muted-color);text-transform:uppercase;font-size:.85em;font-weight:600}.query-item code[data-v-f921d1a2]{background-color:var(--code-background-color);border-radius:4px;padding:.25rem .5rem}.view-result-meta[data-v-f921d1a2]{color:var(--muted-color);margin-left:1rem;font-size:.9em}.view-empty-state[data-v-f921d1a2]{text-align:center;color:var(--muted-color);padding:1.5rem}.search-error[data-v-f921d1a2]{background-color:#fee2e2;border:1px solid #fecaca;border-radius:8px;margin-bottom:1rem;padding:1rem}.search-error-header[data-v-f921d1a2]{color:#991b1b;align-items:center;gap:.5rem;margin-bottom:.5rem;font-weight:600;display:flex}.search-error-message[data-v-f921d1a2]{color:#991b1b;white-space:pre-wrap;word-break:break-word;background-color:#fef2f2;border-radius:4px;padding:.75rem;font-family:monospace;font-size:.95em;overflow-x:auto}@media (prefers-color-scheme:dark){.search-error[data-v-f921d1a2]{background-color:#450a0a;border-color:#7f1d1d}.search-error-header[data-v-f921d1a2]{color:#fca5a5}.search-error-message[data-v-f921d1a2]{color:#fecaca;background-color:#7f1d1d}}.analysis-heading[data-v-4d3d107a]{margin:1rem 0 .5rem;font-weight:600}.analysis-heading.level-0[data-v-4d3d107a]{border-bottom:1px solid var(--muted-border-color);padding-bottom:.25rem;font-size:1.25em}.analysis-heading.level-1[data-v-4d3d107a]{font-size:1.1em}.analysis-heading.level-2[data-v-4d3d107a]{font-size:1em}.analysis-text[data-v-4d3d107a]{margin:.5rem 0}[data-v-4d3d107a] .analysis-text p{margin:0}.analysis-message[data-v-4d3d107a]{border-radius:4px;align-items:flex-start;gap:.5rem;margin:.5rem 0;padding:.5rem .75rem;display:flex}.analysis-message i[data-v-4d3d107a]{margin-top:.15rem}.analysis-message.message-info[data-v-4d3d107a]{color:#3b82f6;background-color:#3b82f61a;border:1px solid #3b82f64d}.analysis-message.message-warning[data-v-4d3d107a]{color:#f59e0b;background-color:#f59e0b1a;border:1px solid #f59e0b4d}.analysis-message.message-error[data-v-4d3d107a]{color:#ef4444;background-color:#ef44441a;border:1px solid #ef44444d}.analysis-table-wrapper[data-v-4d3d107a]{margin:.75rem 0;overflow-x:auto}.analysis-list[data-v-4d3d107a]{margin:.5rem 0;padding-left:1.5rem}.analysis-list li[data-v-4d3d107a]{margin:.25rem 0}.instance-title-text[data-v-19706829]{flex-direction:column;line-height:1;display:flex}.instance-kind-subtitle[data-v-19706829]{color:var(--muted-color);opacity:.7;margin-top:.1em;font-size:.4em;font-weight:400}.instance-name[data-v-19706829]{color:var(--primary);font-size:1em;font-weight:600;text-decoration:none}.header-actions[data-v-19706829]{align-items:center;gap:.5rem;display:flex}.btn-header[data-v-19706829]{color:var(--muted-color);border-radius:var(--border-radius);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:.35rem;padding:.4rem .75rem;font-size:.9rem;text-decoration:none;transition:all .15s;display:inline-flex}.btn-header[data-v-19706829]:hover{color:var(--primary);border-color:var(--primary)}.analysis-header[data-v-19706829]{margin-bottom:.75rem}.analysis-header h2[data-v-19706829]{align-items:center;gap:.5rem;display:flex}.analysis-description[data-v-19706829]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:8px;margin-top:.75rem;padding:.75rem}.analysis-metadata[data-v-19706829]{flex-wrap:wrap;align-items:center;gap:1rem;margin-top:.5rem;padding:.75rem 0;display:flex}.analysis-meta-item[data-v-19706829]{color:var(--muted-color);background-color:var(--code-background-color);border-radius:4px;align-items:center;gap:.35rem;padding:.25rem .5rem;font-size:.9em;display:flex}.analysis-meta-item i[data-v-19706829]{font-size:1.1em}.analysis-script pre.code[data-v-19706829]{white-space:pre;min-height:300px;max-height:600px;margin:0;overflow:auto}.analysis-script pre.code code[data-v-19706829]{white-space:pre;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.9em;line-height:1.5}.analysis-execution header[data-v-19706829]{justify-content:space-between;align-items:center;display:flex}.analysis-execution header h3[data-v-19706829]{align-items:center;gap:.5rem;margin:0;display:flex}.analysis-execute-controls[data-v-19706829]{align-items:center;gap:.75rem;display:flex}.analysis-execute-controls button[data-v-19706829]{align-items:center;gap:.35rem;margin:0;padding:.4rem .75rem;font-size:.85em;display:flex}.analysis-loading[data-v-19706829]{color:var(--muted-color);justify-content:center;align-items:center;gap:.5rem;padding:2rem;display:flex}@keyframes spin-19706829{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinning[data-v-19706829]{animation:1s linear infinite spin-19706829}.analysis-results[data-v-19706829]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:8px;min-height:100px;padding:1rem}.analysis-results-placeholder[data-v-19706829]{color:var(--muted-color);align-items:center;gap:.5rem;margin:0;font-style:italic;display:flex}.analysis-empty-state[data-v-19706829]{color:var(--muted-color);align-items:center;gap:.5rem;padding:1.5rem;display:flex}.analysis-result-container[data-v-19706829]{padding:0}.analysis-result-header[data-v-19706829]{background-color:var(--code-background-color);border-bottom:1px solid var(--muted-border-color);border-radius:8px 8px 0 0;justify-content:space-between;align-items:center;margin:-1rem -1rem 1rem;padding:.75rem 1rem;display:flex}.analysis-result-header .status-indicator[data-v-19706829]{align-items:center;gap:.5rem;font-weight:600;display:flex}.analysis-result-header .status-success[data-v-19706829]{color:#10b981}.analysis-result-header .status-findings[data-v-19706829]{color:#f59e0b}.analysis-result-header .status-error[data-v-19706829]{color:#ef4444}.analysis-result-header .duration[data-v-19706829]{color:var(--muted-color);align-items:center;gap:.35rem;font-size:.9em;display:flex}.analysis-error-details[data-v-19706829]{color:#ef4444;background-color:#ef44441a;border:1px solid #ef44444d;border-radius:4px;margin-bottom:1rem;padding:.75rem 1rem}.analysis-error-details details[data-v-19706829]{margin-top:.5rem}.analysis-error-details summary[data-v-19706829]{cursor:pointer;color:var(--muted-color);font-size:.9em}.analysis-error-details pre[data-v-19706829]{max-height:200px;margin-top:.5rem;font-size:.85em;overflow:auto}.analysis-output[data-v-19706829]{margin-top:.5rem}.analysis-script-header[data-v-19706829]{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.analysis-script-header .copy-button[data-v-19706829]{padding:.25rem .5rem;font-size:.85em}.copy-button[data-v-19706829]{color:var(--primary);border:1px solid var(--muted-border-color);cursor:pointer;background-color:#0000;border-radius:4px;justify-content:center;align-items:center;min-width:32px;height:32px;padding:6px;transition:all .2s;display:flex}.copy-button[data-v-19706829]:hover{background-color:var(--card-background-color);border-color:var(--primary)}.analysis-details-section[data-v-19706829]{border:1px solid var(--muted-border-color);background-color:var(--card-background-color);border-radius:8px;margin-top:1rem}.analysis-details-section summary[data-v-19706829]{cursor:pointer;color:var(--muted-color);-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.75rem 1rem;font-weight:600;display:flex}.analysis-details-section summary[data-v-19706829]:hover{color:var(--color)}.analysis-details-section summary[data-v-19706829]::marker{display:none}.analysis-details-section summary[data-v-19706829]::-webkit-details-marker{display:none}.analysis-details-section summary[data-v-19706829]:before{content:"▶";font-size:.7em;transition:transform .2s}.analysis-details-section[open] summary[data-v-19706829]:before{transform:rotate(90deg)}.analysis-details-section[open][data-v-19706829]{padding-bottom:0}.analysis-details-content[data-v-19706829]{border-top:1px solid var(--muted-border-color);padding:1rem}.analysis-details-content .analysis-metadata[data-v-19706829]{margin-bottom:1rem}.analysis-details-content .analysis-script[data-v-19706829]{border:none;margin:0}.instance-title-text[data-v-ceaaa6c2]{flex-direction:column;line-height:1;display:flex}.instance-kind-subtitle[data-v-ceaaa6c2]{color:var(--muted-color);opacity:.7;margin-top:.1em;font-size:.4em;font-weight:400}.instance-name[data-v-ceaaa6c2]{color:var(--primary);font-size:1em;font-weight:600;text-decoration:none}.header-actions[data-v-ceaaa6c2]{align-items:center;gap:.5rem;display:flex}.btn-header[data-v-ceaaa6c2]{color:var(--muted-color);border-radius:var(--border-radius);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:.35rem;padding:.4rem .75rem;font-size:.9rem;text-decoration:none;transition:all .15s;display:inline-flex}.btn-header[data-v-ceaaa6c2]:hover{color:var(--primary);border-color:var(--primary)}.import-header[data-v-ceaaa6c2]{margin-bottom:.75rem}.import-header header[data-v-ceaaa6c2]{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.import-header header h2[data-v-ceaaa6c2]{align-items:center;gap:.5rem;margin-right:auto;display:flex}.import-description[data-v-ceaaa6c2]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:8px;margin-top:.75rem;padding:.75rem}.graph-container[data-v-ceaaa6c2]{border:1px solid var(--muted-border-color);background-color:var(--card-background-color);border-radius:4px;height:auto;min-height:150px;max-height:70vh;position:relative;overflow:hidden}#graphviz[data-v-ceaaa6c2]{width:100%;height:100%}[data-v-ceaaa6c2] #graphviz svg{display:block}.import-metadata[data-v-ceaaa6c2]{flex-wrap:wrap;gap:1rem;margin-bottom:1rem;display:flex}.import-meta-item[data-v-ceaaa6c2]{color:var(--muted-color);background-color:var(--code-background-color);border-radius:4px;align-items:center;gap:.35rem;padding:.25rem .5rem;font-size:.9em;display:flex}.import-meta-item i[data-v-ceaaa6c2]{font-size:1.1em}.import-meta-item.status-enabled[data-v-ceaaa6c2]{color:#10b981}.import-meta-item.status-disabled[data-v-ceaaa6c2]{color:#ef4444}.import-output-path[data-v-ceaaa6c2]{background-color:var(--code-background-color);border-radius:4px;margin-bottom:1rem;padding:.5rem .75rem}.import-output-path code[data-v-ceaaa6c2]{margin-left:.5rem}.import-config-section[data-v-ceaaa6c2]{border:1px solid var(--muted-border-color);background-color:var(--card-background-color);border-radius:8px;margin-top:1rem}.import-config-section summary[data-v-ceaaa6c2]{cursor:pointer;color:var(--muted-color);-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.75rem 1rem;font-weight:600;display:flex}.import-config-section summary[data-v-ceaaa6c2]:hover{color:var(--color)}.import-config-section summary[data-v-ceaaa6c2]::marker{display:none}.import-config-section summary[data-v-ceaaa6c2]::-webkit-details-marker{display:none}.import-config-section summary[data-v-ceaaa6c2]:before{content:"▶";font-size:.7em;transition:transform .2s}.import-config-section[open] summary[data-v-ceaaa6c2]:before{transform:rotate(90deg)}.import-config-table[data-v-ceaaa6c2]{border-collapse:collapse;width:100%;margin:0}.import-config-table th[data-v-ceaaa6c2],.import-config-table td[data-v-ceaaa6c2]{border-top:1px solid var(--muted-border-color);padding:.5rem 1rem}.import-config-table th[data-v-ceaaa6c2]{text-align:left;width:30%;color:var(--muted-color);font-weight:500}.import-config-table code[data-v-ceaaa6c2]{word-break:break-all}
@@ -0,0 +1 @@
1
+ import{D as e,E as t,F as n,I as r,L as i,N as a,O as o,S as s,T as c,U as l,V as u,d,w as f,z as p}from"./index-T1YqCmM1.js";import{t as m}from"./ResourceList-B5w9yiyS.js";var h={key:0},g={class:`header-actions`},_={key:1},v=100,y={__name:`KindList`,props:{kind:String},setup(y){let b=y,x=o(`kinds`),S=p([]),C=p(0),w=p(!0),T=p(!1),E=p(null),D=0;async function O(){w.value=!0,D=0;try{let e=await d(b.kind,{limit:v,offset:0,output:`brief`});S.value=e.instances||[],C.value=e.total||0,D=S.value.length}catch{S.value=[],C.value=0}x.value&&(E.value=x.value.kinds.find(e=>e.kind===b.kind)),w.value=!1}async function k(){if(!(T.value||D>=C.value)){T.value=!0;try{let e=(await d(b.kind,{limit:v,offset:D,output:`brief`})).instances||[];S.value=[...S.value,...e],D+=e.length}catch{}T.value=!1}}r(()=>b.kind,O,{immediate:!0});function A(e){return e.replace(/([a-z])([A-Z])/g,`$1_$2`).toLowerCase()}return(r,o)=>{let d=n(`router-link`);return w.value?(a(),c(`article`,_,[...o[1]||=[s(`p`,null,`Loading...`,-1)]])):(a(),c(`article`,h,[s(`header`,null,[s(`h2`,null,[E.value?(a(),c(`i`,{key:0,class:u(`iconoir-${E.value.icon} icon-${E.value.layer}`)},null,2)):f(``,!0),t(` `+l(y.kind),1)]),s(`div`,g,[e(d,{class:`kind-help`,to:{name:`doc`,params:{filename:`resources/`+A(y.kind)}},title:`Documentation`},{default:i(()=>[...o[0]||=[s(`i`,{class:`iconoir-help-circle`},null,-1)]]),_:1},8,[`to`])])]),e(m,{instances:S.value,"omit-kind":!0,total:C.value,"loading-more":T.value,onLoadMore:k},null,8,[`instances`,`total`,`loading-more`])]))}}};export{y as default};
@@ -0,0 +1 @@
1
+ import{A as e,B as t,D as n,E as r,F as i,I as a,L as o,N as s,P as c,S as l,T as u,U as d,V as f,b as p,j as m,t as h,w as g,x as _,z as v}from"./index-T1YqCmM1.js";function y(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function b(e){let t=(Math.round(e*100)/100).toFixed(2).split(`.`);return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,`,`),`\u20AC${t.join(`.`)}`}var x={cocomoSalary:15e4,targetSalary:8e4,aiCostMultiplier:3,aiScheduleMultiplier:2.5,aiTeamMultiplier:3};function S(e,t){if(t==null)return null;let n=x.targetSalary/x.cocomoSalary,r=parseFloat(t);switch(e){case`cost`:return r*n/x.aiCostMultiplier;case`schedule`:return r/x.aiScheduleMultiplier;case`team`:return Math.ceil(r/x.aiTeamMultiplier);default:return null}}function C(e){return e.replace(/\.git$/,``).replace(`:`,`/`).replace(`git@`,`https://`)}function w(e){if(!e)return null;let t=new Date(e),n=Math.floor((Date.now()-t.getTime())/1e3);if(n<10)return`just now`;let r=[[60,`second`],[60,`minute`],[24,`hour`],[7,`day`],[4,`week`],[12,`month`],[1/0,`year`]],i=n;for(let[e,t]of r){if(i<e)return`${i} ${t}${i===1?``:`s`} ago`;i=Math.floor(i/e)}return`${i} years ago`}function T(e){return/docs\.google\.com\/(document|spreadsheets|presentation)/.test(e)?`iconoir-google-docs`:/github\.com/.test(e)?`iconoir-github`:/gitlab/.test(e)?`iconoir-git-fork`:/confluence\.|atlassian\.net/.test(e)?`iconoir-page-edit`:/jira\.|atlassian\.net.*jira/.test(e)?`iconoir-list`:/grafana/.test(e)?`iconoir-graph-up`:/prometheus/.test(e)?`iconoir-database`:/api\./.test(e)?`iconoir-code`:/docs\./.test(e)?`iconoir-book`:`iconoir-internet`}function E(e){return/docs\.google\.com/.test(e)?`Documentation`:/github\.com|gitlab/.test(e)?`Code Repository`:/confluence\.|atlassian\.net/.test(e)?`Documentation`:/jira\.|atlassian\.net.*jira/.test(e)?`Project Management`:/grafana|prometheus/.test(e)?`Monitoring`:/api\./.test(e)?`API`:/docs\./.test(e)?`Documentation`:`Other`}var D={key:0,class:`empty-state`},O={key:1,class:`resource-list-table`},k={key:0,class:`col-kind`},A={class:`col-name`},j={key:0,class:`col-kind`},M={class:`instance-kind`},N=[`title`],P={key:1,class:`empty-value`},F={key:2,class:`search-instance-list`},I={class:`instance-main`},L={key:0,class:`instance-kind`},R={key:0},z=h({__name:`ResourceList`,props:{instances:{type:Array,required:!0},omitKind:{type:Boolean,default:!1},fields:{type:Array,default:null},total:{type:Number,default:0},loadingMore:{type:Boolean,default:!1}},emits:[`load-more`],setup(h,{emit:y}){let b=h,x=y,S=v(null),C=null,T=_(()=>b.total>b.instances.length);function E(){C&&C.disconnect(),S.value&&(C=new IntersectionObserver(e=>{e[0].isIntersecting&&T.value&&!b.loadingMore&&x(`load-more`)},{rootMargin:`200px`}),C.observe(S.value))}m(E),a(S,E),e(()=>{C&&C.disconnect()});let z=_(()=>b.fields&&b.fields.length>0),B=_(()=>b.fields?b.fields.map(e=>{let t=e.split(`/`),n;return n=t.length>=2?`${t[t.length-2]} ${t[t.length-1]}`:t[t.length-1],n=n.replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase()),{key:e,title:n}}):[]);function V(e,t){return(e.annotations||{})[t]??null}function H(e){return/at$/i.test(e)||/date$/i.test(e)||/time$/i.test(e)}return(e,a)=>{let m=i(`router-link`);return s(),u(p,null,[h.instances.length?z.value?(s(),u(`table`,O,[l(`thead`,null,[l(`tr`,null,[a[1]||=l(`th`,{class:`col-name`},`Name`,-1),h.omitKind?g(``,!0):(s(),u(`th`,k,`Kind`)),(s(!0),u(p,null,c(B.value,e=>(s(),u(`th`,{key:e.key,class:`col-annotation`},d(e.title),1))),128))])]),l(`tbody`,null,[(s(!0),u(p,null,c(h.instances,e=>(s(),u(`tr`,{key:e.name,class:`resource-list-row`},[l(`td`,A,[n(m,{class:`instance-name`,to:{name:`instance`,params:{kind:e.kind,instance:e.name}}},{default:o(()=>[e.icon?(s(),u(`i`,{key:0,class:f(`iconoir-${e.icon} icon-${e.layer}`)},null,2)):g(``,!0),r(` `+d(e.name),1)]),_:2},1032,[`to`])]),h.omitKind?g(``,!0):(s(),u(`td`,j,[l(`span`,M,d(e.kind),1)])),(s(!0),u(p,null,c(B.value,n=>(s(),u(`td`,{key:n.key,class:`col-annotation`},[V(e,n.key)==null?(s(),u(`span`,P,`—`)):(s(),u(p,{key:0},[H(n.key)?(s(),u(`span`,{key:0,title:V(e,n.key)},d(t(w)(V(e,n.key))),9,N)):(s(),u(p,{key:1},[r(d(V(e,n.key)),1)],64))],64))]))),128))]))),128))])])):(s(),u(`ul`,F,[(s(!0),u(p,null,c(h.instances,e=>(s(),u(`li`,{key:e.name,class:`search-instance-item`},[l(`div`,I,[n(m,{class:`instance-name`,to:{name:`instance`,params:{kind:e.kind,instance:e.name}}},{default:o(()=>[e.icon?(s(),u(`i`,{key:0,class:f(`iconoir-${e.icon} icon-${e.layer}`)},null,2)):g(``,!0),r(` `+d(e.name),1)]),_:2},1032,[`to`]),h.omitKind?g(``,!0):(s(),u(`span`,L,d(e.kind),1))])]))),128))])):(s(),u(`p`,D,[...a[0]||=[l(`i`,null,`No resources found`,-1)]])),T.value?(s(),u(`div`,{key:3,ref_key:`sentinel`,ref:S,class:`load-more-sentinel`},[h.loadingMore?(s(),u(`small`,R,`Loading more…`)):g(``,!0)],512)):g(``,!0)],64)}}},[[`__scopeId`,`data-v-baa693c5`]]);export{T as a,b as c,C as i,S as n,y as o,E as r,w as s,z as t};
@@ -0,0 +1 @@
1
+ .search-instance-list[data-v-baa693c5]{margin:0;padding:0;list-style:none}.search-instance-item[data-v-baa693c5]{background-color:var(--card-background-color);border:1px solid var(--muted-border-color);border-radius:4px;justify-content:space-between;align-items:center;margin-bottom:2px;padding:6px 8px;transition:border-color .15s;display:flex}.search-instance-item[data-v-baa693c5]:hover{border-color:var(--primary)}.instance-main[data-v-baa693c5]{flex:1;align-items:center;gap:12px;display:flex}.instance-name[data-v-baa693c5]{color:var(--primary);font-size:1em;font-weight:600;text-decoration:none}.instance-name[data-v-baa693c5]:hover{text-decoration:underline}.instance-kind[data-v-baa693c5]{color:var(--muted-color);background-color:var(--code-background-color);border-radius:4px;padding:2px 8px;font-size:.85em}.resource-list-table[data-v-baa693c5]{border-collapse:collapse;width:100%;margin:0}.resource-list-table thead th[data-v-baa693c5]{text-align:left;color:var(--muted-color);border-bottom:2px solid var(--muted-border-color);background-color:var(--card-background-color);padding:8px 12px;font-size:.85em;font-weight:600}.resource-list-table tbody tr[data-v-baa693c5]{border-bottom:1px solid var(--muted-border-color);transition:background-color .15s}.resource-list-table tbody tr[data-v-baa693c5]:hover{background-color:var(--card-background-color)}.resource-list-table td[data-v-baa693c5]{vertical-align:middle;padding:8px 12px}.resource-list-table .col-name[data-v-baa693c5]{min-width:200px}.resource-list-table .col-kind[data-v-baa693c5]{white-space:nowrap}.resource-list-table .col-annotation[data-v-baa693c5]{color:var(--color);font-size:.9em}.resource-list-table .empty-value[data-v-baa693c5]{color:var(--muted-color)}.resource-list-table .instance-name[data-v-baa693c5]{align-items:center;gap:8px;display:inline-flex}
@@ -0,0 +1 @@
1
+ .search-query-display[data-v-1926309f]{flex-wrap:wrap;align-items:center;gap:1.5rem;padding:1rem 0;display:flex}.query-item[data-v-1926309f]{align-items:center;gap:.5rem;margin:0;padding:0;display:flex}.query-item .label[data-v-1926309f]{color:var(--muted-color);text-transform:uppercase;letter-spacing:.5px;font-size:.85em;font-weight:600}.query-item code[data-v-1926309f]{background-color:var(--code-background-color);color:var(--color);border-radius:6px;padding:.35rem .75rem;font-family:monospace;font-size:.95em}.query-value[data-v-1926309f]{word-break:break-word}.kind-value[data-v-1926309f]{text-transform:capitalize}.result-count[data-v-1926309f]{color:var(--color);font-size:1em;font-weight:600}.search-error[data-v-1926309f]{background-color:#fee2e2;border:1px solid #fecaca;border-radius:8px;margin-bottom:1rem;padding:1rem}.search-error-header[data-v-1926309f]{color:#991b1b;align-items:center;gap:.5rem;margin-bottom:.5rem;font-weight:600;display:flex}.search-error-header i[data-v-1926309f]{font-size:1.2em}.search-error-message[data-v-1926309f]{color:#991b1b;white-space:pre-wrap;word-break:break-word;background-color:#fef2f2;border-radius:4px;padding:.75rem;font-family:monospace;font-size:.95em;overflow-x:auto}.search-error-query[data-v-1926309f]{color:#7f1d1d;margin-top:.5rem;font-size:.85em}.search-error-query code[data-v-1926309f]{background-color:#fef2f2;border-radius:4px;padding:.25rem .5rem}@media (prefers-color-scheme:dark){.search-error[data-v-1926309f]{background-color:#450a0a;border-color:#7f1d1d}.search-error-header[data-v-1926309f]{color:#fca5a5}.search-error-message[data-v-1926309f]{color:#fecaca;background-color:#7f1d1d}.search-error-query[data-v-1926309f]{color:#fca5a5}.search-error-query code[data-v-1926309f]{background-color:#7f1d1d}}
@@ -0,0 +1 @@
1
+ import{C as e,E as t,I as n,N as r,S as i,T as a,U as o,b as s,h as c,m as l,t as u,w as d,z as f}from"./index-T1YqCmM1.js";import{t as p}from"./ResourceList-B5w9yiyS.js";var m={key:0,class:`search-error`},h={class:`search-error-message`},g={class:`search-error-query`},_={class:`search-context`},v={class:`search-query-display`},y={class:`query-item`},b={class:`query-value`},x={key:0,class:`query-item`},S={class:`kind-value`},C={key:1,class:`query-item`},w={class:`result-count`},T={class:`query-item`},E={class:`search-time`},D={key:1,class:`search-results`},O={key:0},k={key:2},A=100,j=u({__name:`SearchResults`,setup(u){let j=c(),M=f([]),N=f(0),P=f(0),F=f(``),I=f(null),L=f(!1),R=f(!1),z=f(null),B=0;async function V(){let e=j.query.q;if(I.value=j.query.kind||null,!e){M.value=[],N.value=0;return}F.value=e,L.value=!0,z.value=null,B=0;try{let t=await l(e,{limit:A,offset:0,output:`brief`});M.value=t.instances||[],N.value=t.total||0,P.value=t.query_time_ms||0,B=M.value.length}catch(e){z.value=e.message,M.value=[]}finally{L.value=!1}}async function H(){if(R.value||B>=N.value)return;let e=j.query.q;if(e){R.value=!0;try{let t=(await l(e,{limit:A,offset:B,output:`brief`})).instances||[];M.value=[...M.value,...t],B+=t.length}catch{}R.value=!1}}return n(()=>j.query.q,V,{immediate:!0}),(n,c)=>(r(),a(s,null,[z.value?(r(),a(`div`,m,[c[1]||=i(`div`,{class:`search-error-header`},[i(`i`,{class:`iconoir-warning-triangle`}),t(` Query Syntax Error `)],-1),i(`div`,h,o(z.value),1),i(`div`,g,[c[0]||=t(`Query: `,-1),i(`code`,null,o(F.value),1)])])):d(``,!0),i(`article`,_,[c[6]||=i(`header`,null,[i(`h3`,null,`Search Query`)],-1),i(`div`,v,[i(`p`,y,[c[2]||=i(`span`,{class:`label`},`Query:`,-1),i(`code`,b,o(F.value),1)]),I.value?(r(),a(`p`,x,[c[3]||=i(`span`,{class:`label`},`Kind:`,-1),i(`code`,S,o(I.value),1)])):d(``,!0),z.value?d(``,!0):(r(),a(`p`,C,[c[4]||=i(`span`,{class:`label`},`Results:`,-1),i(`span`,w,o(N.value)+` `+o(N.value===1?`item`:`items`),1)])),i(`p`,T,[c[5]||=i(`span`,{class:`label`},`Time:`,-1),i(`span`,E,o(P.value)+` ms`,1)])])]),!z.value&&!L.value?(r(),a(`article`,D,[c[8]||=i(`header`,null,[i(`h3`,null,`Results`)],-1),M.value.length?(r(),e(p,{key:1,instances:M.value,"omit-kind":!!I.value,total:N.value,"loading-more":R.value,onLoadMore:H},null,8,[`instances`,`omit-kind`,`total`,`loading-more`])):(r(),a(`p`,O,[...c[7]||=[i(`em`,null,`No results found`,-1)]]))])):d(``,!0),L.value?(r(),a(`article`,k,[...c[9]||=[i(`p`,null,`Searching...`,-1)]])):d(``,!0)],64))}},[[`__scopeId`,`data-v-1926309f`]]);export{j as default};
@@ -0,0 +1 @@
1
+ import{x as e}from"./mermaid-DYyHQk7x.js";export{e as createArchitectureServices};
@@ -0,0 +1 @@
1
+ import{y as e}from"./mermaid-DYyHQk7x.js";export{e as createEventModelingServices};
@@ -0,0 +1 @@
1
+ import{_ as e}from"./mermaid-DYyHQk7x.js";export{e as createGitGraphServices};