archsight 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +1 -1
- data/README.md +6 -1
- data/docs/icons.md +3 -2
- data/docs/index.md.erb +5 -4
- data/docs/modeling.md +122 -5
- data/docs/pages.md +12 -3
- data/docs/search.md +9 -2
- data/docs/togaf.md +4 -0
- data/lib/archsight/annotations/relation_resolver.rb +15 -6
- data/lib/archsight/cli.rb +6 -0
- data/lib/archsight/database.rb +57 -3
- data/lib/archsight/diagram.rb +7 -0
- data/lib/archsight/documentation.rb +7 -4
- data/lib/archsight/editor.rb +2 -2
- data/lib/archsight/helpers/requirements_blocks.rb +1 -1
- data/lib/archsight/helpers/resource_resolver.rb +1 -1
- data/lib/archsight/helpers/wiki_links.rb +11 -0
- data/lib/archsight/linter.rb +6 -0
- data/lib/archsight/mcp/analyze_resource_tool.rb +2 -2
- data/lib/archsight/mcp/resource_doc_tool.rb +2 -2
- data/lib/archsight/query/ast.rb +2 -1
- data/lib/archsight/query/evaluator.rb +2 -2
- data/lib/archsight/references.rb +129 -0
- data/lib/archsight/requirements.rb +4 -4
- data/lib/archsight/resources/application_component.rb +3 -0
- data/lib/archsight/resources/application_interface.rb +1 -1
- data/lib/archsight/resources/application_service.rb +4 -4
- data/lib/archsight/resources/base.rb +40 -5
- data/lib/archsight/resources/business_control.rb +80 -0
- data/lib/archsight/resources/business_process.rb +3 -2
- data/lib/archsight/resources/business_product.rb +2 -2
- data/lib/archsight/resources/compliance_evidence.rb +36 -1
- data/lib/archsight/resources/data_object.rb +1 -1
- data/lib/archsight/resources/{business_constraint.rb → motivation_constraint.rb} +4 -4
- data/lib/archsight/resources/motivation_goal.rb +1 -1
- data/lib/archsight/resources/{business_requirement.rb → motivation_requirement.rb} +15 -5
- data/lib/archsight/resources/motivation_stakeholder.rb +2 -2
- data/lib/archsight/resources/strategy_capability.rb +2 -2
- data/lib/archsight/resources/technology_node.rb +1 -1
- data/lib/archsight/resources/technology_service.rb +3 -3
- data/lib/archsight/resources/technology_system_software.rb +3 -3
- data/lib/archsight/resources.rb +34 -3
- data/lib/archsight/template.rb +2 -2
- data/lib/archsight/version.rb +1 -1
- data/lib/archsight/web/api/docs.rb +1 -1
- data/lib/archsight/web/api/json_helpers.rb +14 -10
- data/lib/archsight/web/api/openapi/spec.yaml +2 -2
- data/lib/archsight/web/api/page_helpers.rb +8 -7
- data/lib/archsight/web/api/routes.rb +1 -1
- data/lib/archsight/web/application.rb +6 -1
- data/lib/archsight/web/public/vue/{ApiDocsPage-D-cPRZCT.js → ApiDocsPage-DoOxKjG0.js} +1 -1
- data/lib/archsight/web/public/vue/{DocPage-DK6vNDbF.js → DocPage-CfsC3CeQ.js} +1 -1
- data/lib/archsight/web/public/vue/{EditorPage-BoJpQaVw.js → EditorPage-CsJA0q8n.js} +1 -1
- data/lib/archsight/web/public/vue/{ErrorPage-PGyjdtEf.js → ErrorPage-OJpJz9df.js} +1 -1
- data/lib/archsight/web/public/vue/{GraphView-BLiKR4zP.js → GraphView-CBq6oFRV.js} +1 -1
- data/lib/archsight/web/public/vue/HomePage-BwgMLgVC.js +2 -0
- data/lib/archsight/web/public/vue/InstanceRouter-DQz-SsQq.js +1 -0
- data/lib/archsight/web/public/vue/{InstanceRouter-60Tt3ZNM.css → InstanceRouter-jeavM6PW.css} +1 -1
- data/lib/archsight/web/public/vue/KindList-4q0K9Cll.js +1 -0
- data/lib/archsight/web/public/vue/{PageView-9MgHtrgl.js → PageView-DzeGnvoS.js} +1 -1
- data/lib/archsight/web/public/vue/{QueryError-D1FL1xgA.js → QueryError-kg6Yf-pW.js} +1 -1
- data/lib/archsight/web/public/vue/ResourceList-Df_0e0qt.js +2 -0
- data/lib/archsight/web/public/vue/SearchResults-CKgY6_wH.js +1 -0
- data/lib/archsight/web/public/vue/{SearchResults-DiW5XVYW.css → SearchResults-CyPUZZSC.css} +1 -1
- data/lib/archsight/web/public/vue/WikiPage-DoFJ0dbW.css +1 -0
- data/lib/archsight/web/public/vue/{WikiPage-CeCQBTDS.js → WikiPage-DrvCHwJ7.js} +3 -3
- data/lib/archsight/web/public/vue/{index-D7m61Ahx.js → index-D0Q5GZRs.js} +2 -2
- data/lib/archsight/web/public/vue/index-oF-iyZvk.css +1 -0
- data/lib/archsight/web/public/vue.html +2 -2
- metadata +23 -21
- data/lib/archsight/web/public/vue/HomePage-C0lR8i2C.js +0 -2
- data/lib/archsight/web/public/vue/InstanceRouter-D3W2jJHV.js +0 -1
- data/lib/archsight/web/public/vue/KindList-BlsaRBNO.js +0 -1
- data/lib/archsight/web/public/vue/ResourceList-vkgFyeOY.js +0 -2
- data/lib/archsight/web/public/vue/SearchResults-Cl3O_OEr.js +0 -1
- data/lib/archsight/web/public/vue/WikiPage-C-8SG67a.css +0 -1
- data/lib/archsight/web/public/vue/index-Dbx3MXWG.css +0 -1
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>IONOS Architecture</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico" />
|
|
8
|
-
<script type="module" crossorigin src="/vue/index-
|
|
8
|
+
<script type="module" crossorigin src="/vue/index-D0Q5GZRs.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/vue/useHighlight-D5Gf8DLl.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/vue/mermaid-BjEi5URd.js">
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/vue/index-
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/vue/index-oF-iyZvk.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="app"></div>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: archsight
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vincent Landgraf
|
|
@@ -413,6 +413,7 @@ files:
|
|
|
413
413
|
- lib/archsight/query/evaluator.rb
|
|
414
414
|
- lib/archsight/query/lexer.rb
|
|
415
415
|
- lib/archsight/query/parser.rb
|
|
416
|
+
- lib/archsight/references.rb
|
|
416
417
|
- lib/archsight/renderer.rb
|
|
417
418
|
- lib/archsight/requirements.rb
|
|
418
419
|
- lib/archsight/resources.rb
|
|
@@ -422,15 +423,16 @@ files:
|
|
|
422
423
|
- lib/archsight/resources/application_service.rb
|
|
423
424
|
- lib/archsight/resources/base.rb
|
|
424
425
|
- lib/archsight/resources/business_actor.rb
|
|
425
|
-
- lib/archsight/resources/
|
|
426
|
+
- lib/archsight/resources/business_control.rb
|
|
426
427
|
- lib/archsight/resources/business_process.rb
|
|
427
428
|
- lib/archsight/resources/business_product.rb
|
|
428
|
-
- lib/archsight/resources/business_requirement.rb
|
|
429
429
|
- lib/archsight/resources/compliance_evidence.rb
|
|
430
430
|
- lib/archsight/resources/data_object.rb
|
|
431
431
|
- lib/archsight/resources/import.rb
|
|
432
|
+
- lib/archsight/resources/motivation_constraint.rb
|
|
432
433
|
- lib/archsight/resources/motivation_goal.rb
|
|
433
434
|
- lib/archsight/resources/motivation_outcome.rb
|
|
435
|
+
- lib/archsight/resources/motivation_requirement.rb
|
|
434
436
|
- lib/archsight/resources/motivation_stakeholder.rb
|
|
435
437
|
- lib/archsight/resources/page.rb
|
|
436
438
|
- lib/archsight/resources/page_menu.rb
|
|
@@ -2841,35 +2843,35 @@ files:
|
|
|
2841
2843
|
- lib/archsight/web/public/vendor/drawio/viewer-static.min.js
|
|
2842
2844
|
- lib/archsight/web/public/vendor/drawio/viewer.html
|
|
2843
2845
|
- lib/archsight/web/public/vue.html
|
|
2844
|
-
- lib/archsight/web/public/vue/ApiDocsPage-D-cPRZCT.js
|
|
2845
2846
|
- lib/archsight/web/public/vue/ApiDocsPage-DZ0fa5-h.css
|
|
2846
|
-
- lib/archsight/web/public/vue/
|
|
2847
|
-
- lib/archsight/web/public/vue/
|
|
2847
|
+
- lib/archsight/web/public/vue/ApiDocsPage-DoOxKjG0.js
|
|
2848
|
+
- lib/archsight/web/public/vue/DocPage-CfsC3CeQ.js
|
|
2848
2849
|
- lib/archsight/web/public/vue/EditorPage-CbG4mc9T.css
|
|
2850
|
+
- lib/archsight/web/public/vue/EditorPage-CsJA0q8n.js
|
|
2849
2851
|
- lib/archsight/web/public/vue/ErrorPage-Ck9izEUS.css
|
|
2850
|
-
- lib/archsight/web/public/vue/ErrorPage-
|
|
2851
|
-
- lib/archsight/web/public/vue/GraphView-BLiKR4zP.js
|
|
2852
|
+
- lib/archsight/web/public/vue/ErrorPage-OJpJz9df.js
|
|
2852
2853
|
- lib/archsight/web/public/vue/GraphView-BvWAbUAl.css
|
|
2853
|
-
- lib/archsight/web/public/vue/
|
|
2854
|
-
- lib/archsight/web/public/vue/
|
|
2855
|
-
- lib/archsight/web/public/vue/InstanceRouter-
|
|
2856
|
-
- lib/archsight/web/public/vue/
|
|
2857
|
-
- lib/archsight/web/public/vue/
|
|
2854
|
+
- lib/archsight/web/public/vue/GraphView-CBq6oFRV.js
|
|
2855
|
+
- lib/archsight/web/public/vue/HomePage-BwgMLgVC.js
|
|
2856
|
+
- lib/archsight/web/public/vue/InstanceRouter-DQz-SsQq.js
|
|
2857
|
+
- lib/archsight/web/public/vue/InstanceRouter-jeavM6PW.css
|
|
2858
|
+
- lib/archsight/web/public/vue/KindList-4q0K9Cll.js
|
|
2859
|
+
- lib/archsight/web/public/vue/PageView-DzeGnvoS.js
|
|
2858
2860
|
- lib/archsight/web/public/vue/QueryError-3EqjpbyV.css
|
|
2859
|
-
- lib/archsight/web/public/vue/QueryError-
|
|
2861
|
+
- lib/archsight/web/public/vue/QueryError-kg6Yf-pW.js
|
|
2860
2862
|
- lib/archsight/web/public/vue/ResourceList-B0FLaFR3.css
|
|
2861
|
-
- lib/archsight/web/public/vue/ResourceList-
|
|
2862
|
-
- lib/archsight/web/public/vue/SearchResults-
|
|
2863
|
-
- lib/archsight/web/public/vue/SearchResults-
|
|
2864
|
-
- lib/archsight/web/public/vue/WikiPage-
|
|
2865
|
-
- lib/archsight/web/public/vue/WikiPage-
|
|
2863
|
+
- lib/archsight/web/public/vue/ResourceList-Df_0e0qt.js
|
|
2864
|
+
- lib/archsight/web/public/vue/SearchResults-CKgY6_wH.js
|
|
2865
|
+
- lib/archsight/web/public/vue/SearchResults-CyPUZZSC.css
|
|
2866
|
+
- lib/archsight/web/public/vue/WikiPage-DoFJ0dbW.css
|
|
2867
|
+
- lib/archsight/web/public/vue/WikiPage-DrvCHwJ7.js
|
|
2866
2868
|
- lib/archsight/web/public/vue/architecture-7GRP2DOG-BfA1TPxQ.js
|
|
2867
2869
|
- lib/archsight/web/public/vue/cynefin-OW5HDTMX-BmgdUKVD.js
|
|
2868
2870
|
- lib/archsight/web/public/vue/eventmodeling-NTZA5JFV-DbXDvAWF.js
|
|
2869
2871
|
- lib/archsight/web/public/vue/gitGraph-4MIJSDKK-BkVhrKS1.js
|
|
2870
2872
|
- lib/archsight/web/public/vue/graphviz-SXWTgZH5.js
|
|
2871
|
-
- lib/archsight/web/public/vue/index-
|
|
2872
|
-
- lib/archsight/web/public/vue/index-
|
|
2873
|
+
- lib/archsight/web/public/vue/index-D0Q5GZRs.js
|
|
2874
|
+
- lib/archsight/web/public/vue/index-oF-iyZvk.css
|
|
2873
2875
|
- lib/archsight/web/public/vue/info-A6RAGUB7-BIlCVuUY.js
|
|
2874
2876
|
- lib/archsight/web/public/vue/katex-CXMH3UgJ.js
|
|
2875
2877
|
- lib/archsight/web/public/vue/mermaid-BjEi5URd.js
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["vue/GraphView-BLiKR4zP.js","vue/index-D7m61Ahx.js","vue/mermaid-BjEi5URd.js","vue/useHighlight-D5Gf8DLl.js","vue/index-Dbx3MXWG.css","vue/useGraphviz-DweKV7Kg.js","vue/WikiPage-CeCQBTDS.js","vue/ResourceList-vkgFyeOY.js","vue/ResourceList-B0FLaFR3.css","vue/QueryError-D1FL1xgA.js","vue/QueryError-3EqjpbyV.css","vue/WikiPage-C-8SG67a.css","vue/GraphView-BvWAbUAl.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{M as e}from"./mermaid-BjEi5URd.js";import{A as t,H as n,I as r,L as i,M as a,O as o,X as s,k as c}from"./index-D7m61Ahx.js";import{n as l}from"./PageView-9MgHtrgl.js";var u={key:2},d={__name:`HomePage`,setup(d){let f=r(()=>e(()=>import(`./GraphView-BLiKR4zP.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),p=i(`pages`,null),m=i(`pageHome`,null),h=o(()=>p?.value!=null),g=o(()=>m?.value);return(e,r)=>g.value?(n(),t(l,{key:0,name:g.value.name},null,8,[`name`])):h.value?(n(),t(s(f),{key:1})):(n(),a(`article`,u,[...r[0]||=[c(`p`,null,`Loading...`,-1)]]))}};export{d as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,B as n,D as r,E as i,F as a,G as o,H as s,J as c,K as l,L as u,M as d,O as f,P as p,Q as m,R as h,U as g,V as _,X as v,Y as y,Z as b,d as x,f as S,j as C,k as w,q as T,t as E,w as D}from"./index-D7m61Ahx.js";import{t as O}from"./useGraphviz-DweKV7Kg.js";import{a as k,c as A,d as j,i as M,l as N,n as P,o as F,r as I,s as L,u as R}from"./WikiPage-CeCQBTDS.js";import{c as z,i as B,l as ee,n as V,o as H,r as U,s as W,u as G}from"./ResourceList-vkgFyeOY.js";import{n as K}from"./PageView-9MgHtrgl.js";var q={key:0,class:`relations-section`},J={class:`relations-grid`},Y={class:`relations-column relations-outgoing`},te={class:`relation-kind`},ne={class:`relation-verb`},re={class:`instance-badges`},ie={key:1,class:`relations-empty`},ae={class:`relations-column relations-incoming`},X={class:`relation-kind`},Z={class:`relation-verb`},oe={class:`instance-badges`},se={key:1,class:`relations-empty`},Q=E({__name:`RelationsGrid`,props:{data:Object},setup(n){let r=n,a=u(`kinds`),c=f(()=>r.data.relations||{}),l=f(()=>r.data.references||{}),m=f(()=>Object.keys(c.value).length>0||Object.keys(l.value).length>0);function h(e){return a?.value?.kinds?a.value.kinds.find(t=>t.kind===e):null}function _(e){return h(e)?.icon||`cube`}function v(e){return h(e)?.layer||`technology`}let y=f(()=>{let e=[];for(let[t,n]of Object.entries(c.value))for(let[r,i]of Object.entries(n))e.push({verb:t,kind:r,names:[...i].sort()});return e}),x=f(()=>{let e=[];for(let[t,n]of Object.entries(l.value))for(let[r,i]of Object.entries(n))e.push({verb:r||`references`,kind:t,names:[...i].sort()});return e});return(n,r)=>{let a=o(`router-link`);return m.value?(s(),d(`article`,q,[r[2]||=w(`header`,null,[w(`h2`,null,`Relations`)],-1),w(`div`,J,[w(`div`,Y,[r[0]||=w(`h3`,null,[p(`Outgoing `),w(`i`,{class:`iconoir-arrow-right`})],-1),y.value.length?(s(!0),d(i,{key:0},g(y.value,(n,r)=>(s(),d(`div`,{key:`out-`+r,class:`relation-group`},[w(`div`,te,[w(`i`,{class:b(`iconoir-${_(n.kind)} icon-${v(n.kind)}`)},null,2),w(`span`,null,e(n.kind)+` (`+e(n.names.length)+`)`,1)]),w(`div`,ne,e(n.verb)+` (`+e(n.names.length)+`)`,1),w(`div`,re,[(s(!0),d(i,null,g(n.names,r=>(s(),t(a,{key:r,class:`badge badge-info`,to:{name:`instance`,params:{kind:n.kind,instance:r}}},{default:T(()=>[p(e(r),1)]),_:2},1032,[`to`]))),128))])]))),128)):(s(),d(`div`,ie,`None`))]),w(`div`,ae,[r[1]||=w(`h3`,null,[w(`i`,{class:`iconoir-arrow-right`}),p(` Incoming`)],-1),x.value.length?(s(!0),d(i,{key:0},g(x.value,(n,r)=>(s(),d(`div`,{key:`in-`+r,class:`relation-group`},[w(`div`,X,[w(`i`,{class:b(`iconoir-${_(n.kind)} icon-${v(n.kind)}`)},null,2),w(`span`,null,e(n.kind)+` (`+e(n.names.length)+`)`,1)]),w(`div`,Z,e(n.verb)+` (`+e(n.names.length)+`)`,1),w(`div`,oe,[(s(!0),d(i,null,g(n.names,r=>(s(),t(a,{key:r,class:`badge badge-info`,to:{name:`instance`,params:{kind:n.kind,instance:r}}},{default:T(()=>[p(e(r),1)]),_:2},1032,[`to`]))),128))])]))),128)):(s(),d(`div`,se,`None`))])])])):C(``,!0)}}},[[`__scopeId`,`data-v-2fa43570`]]),ce={key:0},le={key:1,class:`graph-error`},ue={key:2,class:`graph-container`},de=[`innerHTML`],fe=E({__name:`ModuleGraph`,props:{dot:String,label:{type:String,default:`Module Structure`}},setup(t){let r=t,i=y(``),a=y(!0),o=y(null),c=y(null),u=null;async function f(e){if(!e){a.value=!1;return}u?.destroy(),u=null,a.value=!0,o.value=null;try{i.value=await O(e)}catch(e){o.value=e?.message||`Failed to render module graph`,i.value=``}finally{if(a.value=!1,await h(),c.value){let e=c.value.querySelector(`svg`);e&&(u=j(e,c.value))}}}return n(()=>f(r.dot)),l(()=>r.dot,f),_(()=>{u?.destroy()}),(n,r)=>(s(),d(`article`,null,[w(`header`,null,[w(`h2`,null,e(t.label),1)]),a.value?(s(),d(`div`,ce,[...r[0]||=[w(`p`,null,`Loading graph...`,-1)]])):o.value?(s(),d(`p`,le,[r[1]||=w(`i`,{class:`iconoir-warning-triangle`},null,-1),p(` `+e(o.value),1)])):i.value?(s(),d(`div`,ue,[w(`div`,{ref_key:`graphEl`,ref:c,class:`canvas`,innerHTML:i.value},null,8,de)])):C(``,!0)]))}},[[`__scopeId`,`data-v-c3280c1e`]]),pe={key:0,class:`requirements-section`},me={__name:`RequirementsSection`,props:{data:Object},setup(e){let t=e,n=f(()=>{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}),r=y([]);l(n,async e=>{if(!e.length){r.value=[];return}let t=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}}}));r.value=t},{immediate:!0});function i(e){let n=t.data.name;return`/search?q=${encodeURIComponent(`BusinessRequirement: <- "${n}" & requirement/priority == "${e}"`)}`}return(e,t)=>n.value.length?(s(),d(`article`,pe,[t[0]||=w(`header`,null,[w(`h2`,null,`Business Requirements`)],-1),a(I,{items:r.value,"priority-link":i},null,8,[`items`])])):C(``,!0)}},he={key:0},ge=[`title`],_e=[`href`],ve={class:`git-info`},ye={class:`git-item`},be={class:`git-clone-command`},xe=E({__name:`GitInfo`,props:{annotations:Object},setup(t){let n=t,r=f(()=>n.annotations[`repository/git`]),i=f(()=>r.value?H(r.value):null);function a(){navigator.clipboard.writeText(`git clone ${r.value}`)}return(t,n)=>r.value?(s(),d(`tr`,he,[w(`th`,{scope:`row`,title:v(V)(`repository/git`)},[w(`a`,{class:`git-link`,href:i.value,target:`_blank`},`Git Repo`,8,_e)],8,ge),w(`td`,null,[w(`div`,ve,[w(`div`,ye,[n[0]||=w(`i`,{class:`iconoir-git-branch`},null,-1),w(`code`,be,`git clone `+e(r.value),1)]),w(`button`,{class:`copy-button`,onClick:a,title:`Copy to clipboard`},[...n[1]||=[w(`i`,{class:`iconoir-copy`},null,-1)]])])])])):C(``,!0)}},[[`__scopeId`,`data-v-808bbe74`]]),Se={key:0},Ce=[`title`],we={class:`language-distribution`},Te={class:`language-total`},Ee={class:`language-count`},De={class:`language-bar`},Oe=[`title`],ke={class:`language-legend`},Ae={class:`other-languages`},je=E({__name:`LanguageStats`,props:{annotations:Object,kind:String},setup(n){let r=n,c=f(()=>{let e=r.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(r.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 i=t.filter(e=>e.loc/n*100>=.1),a=i.slice(0,10),o=[...i.slice(10),...t.filter(e=>e.loc/n*100<.1)],s=o.reduce((e,t)=>e+t.loc,0),c=[...a];return s>0&&c.push({name:`Other`,loc:s,isOther:!0,otherNames:o.map(e=>e.name)}),{display:c,total:n}});function l(e){return(e/c.value.total*100).toFixed(1)}function u(e,t){return t.isOther?`lang-other`:`lang-${e}`}function h(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(n,r)=>{let f=o(`router-link`);return c.value?(s(),d(`tr`,Se,[w(`th`,{scope:`row`,title:v(V)(`scc/languages`,`scc/language/<Language>/loc`)},`Languages`,8,Ce),w(`td`,null,[w(`div`,we,[w(`div`,Te,[w(`span`,Ee,e(v(z)(c.value.total)),1),r[0]||=w(`span`,{class:`language-label`},`lines of code`,-1)]),w(`div`,De,[(s(!0),d(i,null,g(c.value.display,(e,t)=>(s(),d(`div`,{key:e.name,class:b([`language-bar-segment`,u(t,e)]),style:m({width:l(e.loc)+`%`}),title:`${e.name}: ${v(z)(e.loc)} (${l(e.loc)}%)`},null,14,Oe))),128))]),w(`div`,ke,[(s(!0),d(i,null,g(c.value.display,(n,o)=>(s(),d(`div`,{key:n.name,class:`language-legend-item`},[w(`div`,{class:b([`language-legend-dot`,u(o,n)])},null,2),n.isOther?(s(),d(i,{key:0},[w(`span`,null,`Other `+e(l(n.loc))+`%`,1),w(`span`,Ae,[r[1]||=p(` (`,-1),(s(!0),d(i,null,g(n.otherNames,(t,r)=>(s(),d(i,{key:t},[a(f,{to:h(`scc/languages`,t)},{default:T(()=>[p(e(t),1)]),_:2},1032,[`to`]),r<n.otherNames.length-1?(s(),d(i,{key:0},[p(`, `)],64)):C(``,!0)],64))),128)),r[2]||=p(`) `,-1)])],64)):(s(),t(f,{key:1,to:h(`scc/languages`,n.name)},{default:T(()=>[p(e(n.name)+` `+e(l(n.loc))+`% `,1)]),_:2},1032,[`to`]))]))),128))])])])])):C(``,!0)}}},[[`__scopeId`,`data-v-c1202fdd`]]),Me={key:0},Ne=[`title`],Pe={class:`project-estimate`},Fe={key:0,class:`estimate-item`},Ie={class:`estimate-value`},Le={key:1,class:`estimate-item`},Re={class:`estimate-value`},ze={key:2,class:`estimate-item`},Be={class:`estimate-value`},Ve=E({__name:`ProjectEstimate`,props:{annotations:Object},setup(t){let n=t,r=f(()=>U(`cost`,n.annotations[`scc/estimatedCost`])),i=f(()=>U(`schedule`,n.annotations[`scc/estimatedScheduleMonths`])),a=f(()=>U(`team`,n.annotations[`scc/estimatedPeople`])),o=f(()=>r.value!=null||i.value!=null||a.value!=null);return(t,n)=>o.value?(s(),d(`tr`,Me,[w(`th`,{scope:`row`,title:v(V)(`scc/estimatedCost`,`scc/estimatedScheduleMonths`,`scc/estimatedPeople`)},[...n[0]||=[p(` Project Estimate `,-1),w(`span`,{class:`estimate-note`,title:`Estimates adjusted for €80k salary and AI-assisted development (3x productivity)`},[w(`i`,{class:`iconoir-info-circle`})],-1)]],8,Ne),w(`td`,null,[w(`div`,Pe,[r.value==null?C(``,!0):(s(),d(`div`,Fe,[n[1]||=w(`i`,{class:`iconoir-euro`},null,-1),n[2]||=w(`span`,{class:`estimate-label`},`Cost:`,-1),w(`span`,Ie,e(v(G)(r.value)),1)])),i.value==null?C(``,!0):(s(),d(`div`,Le,[n[3]||=w(`i`,{class:`iconoir-calendar`},null,-1),n[4]||=w(`span`,{class:`estimate-label`},`Schedule:`,-1),w(`span`,Re,e(i.value.toFixed(1))+` months`,1)])),a.value==null?C(``,!0):(s(),d(`div`,ze,[n[5]||=w(`i`,{class:`iconoir-group`},null,-1),n[6]||=w(`span`,{class:`estimate-label`},`Team:`,-1),w(`span`,Be,e(a.value)+` people`,1)]))])])])):C(``,!0)}},[[`__scopeId`,`data-v-d97600d8`]]),He={key:0},Ue=[`title`],We={class:`repository-distribution`},Ge={class:`repository-total`},Ke={class:`repository-count`},qe={class:`repository-bar`},Je=[`title`],Ye={class:`repository-legend`},Xe=E({__name:`RepositoriesBar`,props:{annotations:Object},setup(t){let n=t,r=f(()=>parseInt(n.annotations[`repository/artifacts/total`]||`0`,10)),a=f(()=>parseInt(n.annotations[`repository/artifacts/active`]||`0`,10)),o=f(()=>parseInt(n.annotations[`repository/artifacts/abandoned`]||`0`,10)),c=f(()=>parseInt(n.annotations[`repository/artifacts/archived`]||`0`,10)),l=f(()=>parseInt(n.annotations[`repository/artifacts/highBusFactor`]||`0`,10)),u=f(()=>r.value>0),p=f(()=>a.value-l.value),h=f(()=>r.value-a.value-o.value-c.value);function _(e){return(e/r.value*100).toFixed(1)}let y=f(()=>{let e=[];return p.value>0&&e.push({cls:`status-active`,value:p.value,label:`Active (healthy)`}),l.value>0&&e.push({cls:`status-high-bus-factor`,value:l.value,label:`Active (high bus factor)`}),c.value>0&&e.push({cls:`status-archived`,value:c.value,label:`Archived`}),h.value>0&&e.push({cls:`status-other`,value:h.value,label:`Other`}),o.value>0&&e.push({cls:`status-abandoned`,value:o.value,label:`Abandoned`}),e});return(t,n)=>u.value?(s(),d(`tr`,He,[w(`th`,{scope:`row`,title:v(V)(`repository/artifacts/total`,`repository/artifacts/active`,`repository/artifacts/abandoned`,`repository/artifacts/archived`,`repository/artifacts/highBusFactor`)},`Repositories`,8,Ue),w(`td`,null,[w(`div`,We,[w(`div`,Ge,[w(`span`,Ke,e(r.value),1),n[0]||=w(`span`,{class:`repository-label`},`repositories`,-1)]),w(`div`,qe,[(s(!0),d(i,null,g(y.value,e=>(s(),d(`div`,{key:e.cls,class:b([`repository-bar-segment`,e.cls]),style:m({width:_(e.value)+`%`}),title:`${e.label}: ${e.value} (${_(e.value)}%)`},null,14,Je))),128))]),w(`div`,Ye,[(s(!0),d(i,null,g(y.value,t=>(s(),d(`div`,{key:t.cls,class:`repository-legend-item`},[w(`div`,{class:b([`repository-legend-dot`,t.cls])},null,2),w(`span`,null,e(t.value)+` `+e(t.label.toLowerCase()),1)]))),128))])])])])):C(``,!0)}},[[`__scopeId`,`data-v-6c3e5f7d`]]),Ze=[`title`],$=E({__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=f(()=>!t.values||t.values.trim()===``?[]:t.values.split(`,`).map(e=>parseInt(e,10)||0)),r=f(()=>{let e=Math.max(...n.value);return e===0?1:e});function a(e){return e===0?0:Math.max(2,Math.round(e/r.value*t.maxHeight))}let o=f(()=>{switch(t.type){case`created`:return` issues created`;case`resolved`:return` issues resolved`;default:return` commits`}});return(t,r)=>(s(),d(`div`,{class:b([`activity-sparkline`,e.colorClass])},[(s(!0),d(i,null,g(n.value,(e,t)=>(s(),d(`div`,{key:t,class:b([`activity-sparkline-bar`,{empty:e===0}]),style:m({height:a(e)+`px`}),title:e+o.value},null,14,Ze))),128))],2))}},[[`__scopeId`,`data-v-33cc84bd`]]),Qe={key:0},$e=[`title`],et={class:`activity-summary`},tt={key:0,class:`activity-item`},nt=[`title`],rt={class:`activity-value sparkline-total`},it={key:1,class:`activity-item`},at=[`title`],ot={key:0,class:`activity-value sparkline-total`},st={key:1,class:`activity-value contributors-total`},ct={key:2,class:`activity-item`},lt=[`title`],ut={class:`activity-value`},dt={key:3,class:`activity-item`},ft=[`title`],pt={key:4,class:`activity-item`},mt=[`title`],ht=E({__name:`ActivityInfo`,props:{annotations:Object,kind:String},setup(t){let n=t,r=f(()=>n.annotations[`activity/commits`]),i=f(()=>n.annotations[`activity/contributors`]),c=f(()=>n.annotations[`activity/contributors/6m`]),l=f(()=>n.annotations[`activity/contributors/total`]),u=f(()=>n.annotations[`activity/status`]),m=f(()=>n.annotations[`activity/busFactor`]),h=f(()=>n.annotations[`activity/createdAt`]),g=f(()=>r.value||i.value||u.value||m.value||h.value),_=f(()=>r.value?r.value.split(`,`).map(Number).reduce((e,t)=>e+t,0):0),y=f(()=>h.value?new Date(h.value).toLocaleDateString(`en`,{month:`short`,year:`numeric`}):null),x=f(()=>{let e=m.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 c.value&&(t+=` (${c.value} unique contributors)`),t});function S(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(t,n)=>{let f=o(`router-link`);return g.value?(s(),d(`tr`,Qe,[w(`th`,{scope:`row`,title:v(V)(`activity/commits`,`activity/contributors`,`activity/contributors/6m`,`activity/contributors/total`,`activity/status`,`activity/busFactor`,`activity/createdAt`)},`Activity`,8,$e),w(`td`,null,[w(`div`,et,[r.value?(s(),d(`div`,tt,[n[0]||=w(`i`,{class:`iconoir-git-commit`},null,-1),w(`span`,{class:`activity-label`,title:v(V)(`activity/commits`)},`Commits:`,8,nt),a($,{values:r.value},null,8,[`values`]),w(`span`,rt,e(_.value),1)])):C(``,!0),i.value?(s(),d(`div`,it,[n[1]||=w(`i`,{class:`iconoir-community`},null,-1),w(`span`,{class:`activity-label`,title:v(V)(`activity/contributors`,`activity/contributors/6m`,`activity/contributors/total`)},`Contributors:`,8,at),a($,{values:i.value,"color-class":`contributors-sparkline`},null,8,[`values`]),c.value?(s(),d(`span`,ot,e(c.value),1)):C(``,!0),l.value?(s(),d(`span`,st,`(`+e(l.value)+` total)`,1)):C(``,!0)])):C(``,!0),h.value?(s(),d(`div`,ct,[n[2]||=w(`i`,{class:`iconoir-calendar`},null,-1),w(`span`,{class:`activity-label`,title:v(V)(`activity/createdAt`)},`Created:`,8,lt),w(`span`,ut,e(y.value),1)])):C(``,!0),u.value?(s(),d(`div`,dt,[n[3]||=w(`i`,{class:`iconoir-info-circle`},null,-1),w(`span`,{class:`activity-label`,title:v(V)(`activity/status`)},`Status:`,8,ft),a(f,{class:b(`activity-value status-${u.value}`),to:S(`activity/status`,u.value)},{default:T(()=>[p(e(u.value),1)]),_:1},8,[`class`,`to`])])):C(``,!0),m.value?(s(),d(`div`,pt,[n[4]||=w(`i`,{class:`iconoir-warning-triangle`},null,-1),w(`span`,{class:`activity-label`,title:v(V)(`activity/busFactor`)},`Bus Factor:`,8,mt),a(f,{class:b(`activity-value bus-factor-${m.value}`),to:S(`activity/busFactor`,m.value),title:x.value},{default:T(()=>[p(e(m.value),1)]),_:1},8,[`class`,`to`,`title`])])):C(``,!0)])])])):C(``,!0)}}},[[`__scopeId`,`data-v-a2e60c62`]]),gt={key:0},_t={key:1},vt=[`title`],yt={class:`jira-info`},bt=[`href`],xt={class:`jira-metric`},St={class:`jira-metric-total`},Ct={class:`jira-metric`},wt={class:`jira-metric-total`},Tt={key:0,class:`iconoir-arrow-down-circle`},Et={key:1,class:`iconoir-arrow-up-circle`},Dt={key:2,class:`iconoir-minus-circle`},Ot={class:`jira-trend-text`},kt={key:2},At=[`title`],jt=[`href`],Mt={key:1,class:`team-value`},Nt={key:3},Pt=[`title`],Ft={class:`team-stats`},It={key:0,class:`team-stat-item`},Lt={class:`team-stat-value`},Rt={key:1,class:`team-stat-item`},zt={class:`team-stat-value`},Bt={key:4},Vt=[`title`],Ht={class:`team-members`},Ut=[`href`],Wt={key:1,class:`team-member`},Gt=E({__name:`TeamInfo`,props:{annotations:Object,instance:Object},setup(t){let n=t,r=f(()=>n.annotations[`team/lead`]),c=f(()=>n.annotations[`team/members`]),l=f(()=>n.annotations[`team/size`]),u=f(()=>n.annotations[`team/lead/size`]),m=f(()=>n.annotations[`team/jira`]),h=f(()=>n.annotations[`jira/projectUrl`]),_=f(()=>n.annotations[`jira/issues/created`]),y=f(()=>n.annotations[`jira/issues/resolved`]),x=f(()=>n.instance?.kind===`BusinessActor`),S=f(()=>`kind in ("ApplicationService", "ApplicationComponent") & ~> $(TechnologyArtifact: -{maintainedBy}> "${n.instance?.name||``}")`),E=f(()=>c.value?c.value.split(/,|\n/).map(e=>e.trim()).filter(Boolean):[]);function D(e){let t=e.match(/<([^>]+@[^>]+)>/);return t?t[1]:null}function O(e){return{name:`search`,query:{q:e}}}let k=f(()=>_.value?_.value.split(`,`).map(Number).reduce((e,t)=>e+t,0):0),A=f(()=>y.value?y.value.split(`,`).map(Number).reduce((e,t)=>e+t,0):0),j=f(()=>_.value?_.value.split(`,`).map(Number):[]),M=f(()=>y.value?y.value.split(`,`).map(Number):[]),N=f(()=>(j.value.length?k.value/j.value.length:0)-(M.value.length?A.value/M.value.length:0)),P=f(()=>{let e=N.value;return e<-1?`positive`:e>1?`negative`:`neutral`});return(t,n)=>{let f=o(`router-link`);return s(),d(i,null,[x.value?(s(),d(`tr`,gt,[n[1]||=w(`th`,{scope:`row`},`Owned Services`,-1),w(`td`,null,[a(f,{class:`badge badge-info`,to:O(S.value)},{default:T(()=>[...n[0]||=[p(` Show ApplicationServices & Components `,-1)]]),_:1},8,[`to`])])])):C(``,!0),m.value&&h.value?(s(),d(`tr`,_t,[w(`th`,{scope:`row`,title:v(V)(`team/jira`,`jira/projectUrl`,`jira/issues/created`,`jira/issues/resolved`)},`Jira Project`,8,vt),w(`td`,null,[w(`div`,yt,[w(`a`,{class:`badge badge-info`,href:h.value,target:`_blank`},e(m.value),9,bt),_.value||y.value?(s(),d(i,{key:0},[w(`div`,xt,[n[2]||=w(`span`,{class:`jira-metric-label`},`Created (6m):`,-1),a($,{values:_.value,type:`created`,"color-class":`jira-created-sparkline`},null,8,[`values`]),w(`span`,St,e(k.value),1)]),w(`div`,Ct,[n[3]||=w(`span`,{class:`jira-metric-label`},`Resolved (6m):`,-1),a($,{values:y.value,type:`resolved`,"color-class":`jira-resolved-sparkline`},null,8,[`values`]),w(`span`,wt,e(A.value),1)]),w(`div`,{class:b([`jira-trend`,`jira-trend-${P.value}`])},[P.value===`positive`?(s(),d(`i`,Tt)):P.value===`negative`?(s(),d(`i`,Et)):(s(),d(`i`,Dt)),w(`span`,Ot,e(N.value>0?`+`:``)+e(N.value.toFixed(1))+`/mo`,1)],2)],64)):C(``,!0)])])])):C(``,!0),r.value?(s(),d(`tr`,kt,[w(`th`,{scope:`row`,title:v(V)(`team/lead`)},`Team Lead`,8,At),w(`td`,null,[D(r.value)?(s(),d(`a`,{key:0,class:`team-value`,href:`mailto:${D(r.value)}`},e(r.value),9,jt)):(s(),d(`span`,Mt,e(r.value),1))])])):C(``,!0),l.value||u.value?(s(),d(`tr`,Nt,[w(`th`,{scope:`row`,title:v(V)(`team/size`,`team/lead/size`)},`Team Stats`,8,Pt),w(`td`,null,[w(`div`,Ft,[u.value?(s(),d(`div`,It,[w(`span`,Lt,e(u.value),1),n[4]||=w(`span`,{class:`team-stat-label`},`leads`,-1)])):C(``,!0),l.value?(s(),d(`div`,Rt,[w(`span`,zt,e(l.value),1),n[5]||=w(`span`,{class:`team-stat-label`},`members`,-1)])):C(``,!0)])])])):C(``,!0),c.value?(s(),d(`tr`,Bt,[w(`th`,{scope:`row`,title:v(V)(`team/members`)},`Team Members`,8,Vt),w(`td`,null,[w(`div`,Ht,[(s(!0),d(i,null,g(E.value,t=>(s(),d(i,{key:t},[D(t)?(s(),d(`a`,{key:0,class:`team-member`,href:`mailto:${D(t)}`},e(t),9,Ut)):(s(),d(`span`,Wt,e(t),1))],64))),128))])])])):C(``,!0)],64)}}},[[`__scopeId`,`data-v-ddf2e61d`]]),Kt={key:0},qt=[`title`],Jt={class:`deployment-types`},Yt=E({__name:`DeploymentInfo`,props:{annotations:Object,kind:String},setup(n){let r=n,a=f(()=>(r.annotations[`repository/artifacts`]||`none`).split(`,`).map(e=>e.trim())),c=f(()=>a.value[0]!==`none`),l=[{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 u(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(n,r)=>{let f=o(`router-link`);return c.value?(s(),d(`tr`,Kt,[w(`th`,{scope:`row`,title:v(V)(`repository/artifacts`)},`Deployment Artifacts`,8,qt),w(`td`,null,[w(`div`,Jt,[(s(),d(i,null,g(l,n=>(s(),d(i,{key:n.key},[a.value.includes(n.key)?(s(),t(f,{key:0,class:`deployment-item`,to:u(`repository/artifacts`,n.key)},{default:T(()=>[w(`i`,{class:b(n.icon)},null,2),w(`strong`,null,e(n.label),1)]),_:2},1032,[`to`])):C(``,!0)],64))),64))])])])):C(``,!0)}}},[[`__scopeId`,`data-v-c57237c3`]]),Xt=[`title`],Zt={class:`workflow-platforms`},Qt=[`checked`],$t=[`checked`],en=[`checked`],tn={class:`info-section-cell`,colspan:`2`},nn={open:``},rn=[`title`],an={class:`workflow-types`},on={class:`workflow-category`},sn=[`checked`],cn=[`checked`],ln={class:`workflow-category`},un=[`checked`],dn=[`checked`],fn=[`checked`],pn=[`checked`],mn={class:`workflow-category`},hn=[`checked`],gn=[`checked`],_n={class:`workflow-category`},vn=[`checked`],yn=[`checked`],bn=E({__name:`WorkflowInfo`,props:{annotations:Object,kind:String},setup(e){let t=e,n=f(()=>(t.annotations[`workflow/platforms`]||`none`).split(`,`).map(e=>e.trim())),r=f(()=>(t.annotations[`workflow/types`]||`none`).split(`,`).map(e=>e.trim())),c=f(()=>n.value[0]!==`none`||r.value[0]!==`none`),l=f(()=>r.value.includes(`test`));function u(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}function m(e,t){return e.includes(t)}return(e,t)=>{let f=o(`router-link`);return c.value?(s(),d(i,{key:0},[w(`tr`,null,[w(`th`,{scope:`row`,title:v(V)(`workflow/platforms`)},`CI/CD Platforms`,8,Xt),w(`td`,null,[w(`div`,Zt,[a(f,{class:`workflow-platform-item`,to:u(`workflow/platforms`,`github-actions`)},{default:T(()=>[w(`input`,{type:`checkbox`,disabled:``,checked:m(n.value,`github-actions`)},null,8,Qt),t[0]||=w(`label`,null,`GitHub Actions`,-1)]),_:1},8,[`to`]),a(f,{class:`workflow-platform-item`,to:u(`workflow/platforms`,`gitlab-ci`)},{default:T(()=>[w(`input`,{type:`checkbox`,disabled:``,checked:m(n.value,`gitlab-ci`)},null,8,$t),t[1]||=w(`label`,null,`GitLab CI`,-1)]),_:1},8,[`to`]),a(f,{class:`workflow-platform-item`,to:u(`workflow/platforms`,`makefile`)},{default:T(()=>[w(`input`,{type:`checkbox`,disabled:``,checked:m(n.value,`makefile`)},null,8,en),t[2]||=w(`label`,null,`Makefile`,-1)]),_:1},8,[`to`])])])]),w(`tr`,null,[w(`td`,tn,[w(`details`,nn,[w(`summary`,{title:v(V)(`workflow/types`)},[...t[3]||=[w(`strong`,null,`Workflow Types`,-1)]],8,rn),w(`div`,an,[w(`div`,null,[w(`div`,on,[t[6]||=w(`strong`,null,`Build & Deploy`,-1),w(`ul`,null,[w(`li`,null,[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`build`)},null,8,sn),a(f,{to:u(`workflow/types`,`build`)},{default:T(()=>[...t[4]||=[p(`Build`,-1)]]),_:1},8,[`to`])]),w(`li`,null,[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`deploy`)},null,8,cn),a(f,{to:u(`workflow/types`,`deploy`)},{default:T(()=>[...t[5]||=[p(`Deploy`,-1)]]),_:1},8,[`to`])])])]),w(`div`,ln,[t[11]||=w(`strong`,null,`Testing`,-1),w(`ul`,null,[w(`li`,null,[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`test`)},null,8,un),a(f,{to:u(`workflow/types`,`test`)},{default:T(()=>[...t[7]||=[p(`Test (generic)`,-1)]]),_:1},8,[`to`])]),w(`li`,{class:b({"grayed-out":l.value})},[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`unit-test`)},null,8,dn),a(f,{to:u(`workflow/types`,`unit-test`)},{default:T(()=>[...t[8]||=[p(`Unit Tests`,-1)]]),_:1},8,[`to`])],2),w(`li`,{class:b({"grayed-out":l.value})},[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`integration-test`)},null,8,fn),a(f,{to:u(`workflow/types`,`integration-test`)},{default:T(()=>[...t[9]||=[p(`Integration Tests`,-1)]]),_:1},8,[`to`])],2),w(`li`,{class:b({"grayed-out":l.value})},[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`smoke-test`)},null,8,pn),a(f,{to:u(`workflow/types`,`smoke-test`)},{default:T(()=>[...t[10]||=[p(`Smoke Tests`,-1)]]),_:1},8,[`to`])],2)])]),w(`div`,mn,[t[14]||=w(`strong`,null,`Quality & Security`,-1),w(`ul`,null,[w(`li`,null,[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`lint`)},null,8,hn),a(f,{to:u(`workflow/types`,`lint`)},{default:T(()=>[...t[12]||=[p(`Linting`,-1)]]),_:1},8,[`to`])]),w(`li`,null,[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`security-scan`)},null,8,gn),a(f,{to:u(`workflow/types`,`security-scan`)},{default:T(()=>[...t[13]||=[p(`Security Scan`,-1)]]),_:1},8,[`to`])])])]),w(`div`,_n,[t[17]||=w(`strong`,null,`Automation`,-1),w(`ul`,null,[w(`li`,null,[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`dependency-update`)},null,8,vn),a(f,{to:u(`workflow/types`,`dependency-update`)},{default:T(()=>[...t[15]||=[p(`Dependency Updates`,-1)]]),_:1},8,[`to`])]),w(`li`,null,[w(`input`,{type:`checkbox`,disabled:``,checked:m(r.value,`ticket-creation`)},null,8,yn),a(f,{to:u(`workflow/types`,`ticket-creation`)},{default:T(()=>[...t[16]||=[p(`Ticket Creation`,-1)]]),_:1},8,[`to`])])])])])])])])])],64)):C(``,!0)}}},[[`__scopeId`,`data-v-5e906c49`]]),xn=[`title`],Sn={class:`info-section-cell`,colspan:`2`},Cn={class:`agentic-tools`},wn={class:`tool-item-header`},Tn=[`checked`],En={class:`tool-item-description`},Dn=E({__name:`AgenticTools`,props:{annotations:Object,kind:String},setup(t){let n=t,r=f(()=>(n.annotations[`agentic/tools`]||`none`).split(`,`).map(e=>e.trim())),c=f(()=>r.value[0]!==`none`),l=[{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 u(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(t,n)=>{let f=o(`router-link`);return c.value?(s(),d(i,{key:0},[w(`tr`,null,[w(`th`,{scope:`row`,colspan:`2`,title:v(V)(`agentic/tools`)},[...n[0]||=[w(`i`,{class:`iconoir-cpu`},null,-1),p(` AI Coding Assistants `,-1)]],8,xn)]),w(`tr`,null,[w(`td`,Sn,[w(`div`,Cn,[(s(),d(i,null,g(l,t=>a(f,{key:t.key,class:b([`tool-item`,{"not-implemented":!r.value.includes(t.key)}]),to:u(`agentic/tools`,t.key)},{default:T(()=>[w(`div`,wn,[w(`input`,{type:`checkbox`,checked:r.value.includes(t.key),disabled:``},null,8,Tn),w(`i`,{class:b([t.icon,r.value.includes(t.key)?`implemented`:`not-implemented`])},null,2),w(`strong`,null,e(t.name),1)]),w(`div`,En,e(t.description),1)]),_:2},1032,[`class`,`to`])),64))])])])],64)):C(``,!0)}}},[[`__scopeId`,`data-v-52b7b17d`]]),On={key:0},kn=[`title`],An={class:`activity-summary`},jn={class:`activity-item`},Mn={key:0,class:`activity-item`},Nn={class:`activity-value`},Pn={key:1,class:`activity-item`},Fn={key:0,class:`license-details-inline`},In={class:`badge badge-secondary`},Ln={class:`license-overflow`},Rn=E({__name:`LicenseInfo`,props:{annotations:Object,kind:String},setup(n){let r=n,c=f(()=>r.annotations[`license/spdx`]),l=f(()=>r.annotations[`license/category`]||`unknown`),u=f(()=>r.annotations[`license/dependencies/count`]),m=f(()=>(r.annotations[`license/dependencies/ecosystems`]||``).split(`,`).map(e=>e.trim()).filter(Boolean)),h=f(()=>r.annotations[`license/dependencies/risk`]||`unknown`),_=f(()=>r.annotations[`license/dependencies/copyleft`]||`unknown`),y=f(()=>(r.annotations[`license/dependencies/licenses`]||``).split(`,`).map(e=>e.trim()).filter(Boolean)),x=f(()=>{switch(l.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=f(()=>{switch(h.value){case`low`:return`badge-success`;case`weak-copyleft`:return`badge-warning`;case`copyleft`:return`badge-danger`;default:return`badge-secondary`}}),E=f(()=>{switch(h.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`}}),D=f(()=>y.value.filter(e=>e!==`unknown`).map(e=>({name:e,count:parseInt(r.annotations[`license/dependencies/${e}/count`]||`0`,10)})).sort((e,t)=>t.count-e.count));function O(e,t){return{name:`search`,query:{q:`${e} == "${t}"`}}}return(n,r)=>{let f=o(`router-link`);return c.value?(s(),d(`tr`,On,[w(`th`,{scope:`row`,title:v(V)(`license/spdx`,`license/category`,`license/dependencies/count`,`license/dependencies/ecosystems`,`license/dependencies/risk`,`license/dependencies/copyleft`,`license/dependencies/licenses`)},`License`,8,kn),w(`td`,null,[w(`div`,An,[w(`div`,jn,[r[0]||=w(`i`,{class:`iconoir-shield-check`},null,-1),a(f,{class:b([`badge`,x.value]),to:O(`license/spdx`,c.value)},{default:T(()=>[p(e(c.value),1)]),_:1},8,[`class`,`to`]),l.value===`unknown`?C(``,!0):(s(),t(f,{key:0,class:`badge badge-outline`,to:O(`license/category`,l.value)},{default:T(()=>[p(e(l.value),1)]),_:1},8,[`to`]))]),u.value&&parseInt(u.value)>0?(s(),d(`div`,Mn,[r[2]||=w(`i`,{class:`iconoir-box`},null,-1),r[3]||=w(`span`,{class:`activity-label`},`Dependencies:`,-1),w(`span`,Nn,e(u.value),1),(s(!0),d(i,null,g(m.value,n=>(s(),t(f,{key:n,class:`badge badge-info`,to:O(`license/dependencies/ecosystems`,n)},{default:T(()=>[p(e(n),1)]),_:2},1032,[`to`]))),128)),a(f,{class:b([`badge`,S.value]),title:E.value,to:O(`license/dependencies/risk`,h.value)},{default:T(()=>[p(`Risk: `+e(h.value),1)]),_:1},8,[`class`,`title`,`to`]),_.value===`true`?(s(),t(f,{key:0,class:`badge badge-warning`,to:O(`license/dependencies/copyleft`,`true`)},{default:T(()=>[...r[1]||=[p(`Copyleft present`,-1)]]),_:1},8,[`to`])):C(``,!0)])):C(``,!0),D.value.length?(s(),d(`div`,Pn,[r[4]||=w(`i`,{class:`iconoir-list`},null,-1),r[5]||=w(`span`,{class:`activity-label`},`Types:`,-1),(s(!0),d(i,null,g(D.value.slice(0,5),n=>(s(),t(f,{key:n.name,class:`badge badge-outline`,to:O(`license/dependencies/licenses`,n.name)},{default:T(()=>[p(e(n.count>0?`${n.name} (${n.count})`:n.name),1)]),_:2},1032,[`to`]))),128)),D.value.length>5?(s(),d(`details`,Fn,[w(`summary`,In,`+`+e(D.value.length-5)+` more`,1),w(`div`,Ln,[(s(!0),d(i,null,g(D.value.slice(5),n=>(s(),t(f,{key:n.name,class:`badge badge-outline`,to:O(`license/dependencies/licenses`,n.name)},{default:T(()=>[p(e(n.count>0?`${n.name} (${n.count})`:n.name),1)]),_:2},1032,[`to`]))),128))])])):C(``,!0)])):C(``,!0)])])])):C(``,!0)}}},[[`__scopeId`,`data-v-126f0fee`]]),zn={key:0},Bn=[`title`],Vn=[`href`,`title`],Hn=[`href`],Un={__name:`ExternalLinks`,props:{annotations:Object},setup(t){let n=t,r=f(()=>Object.entries(n.annotations).filter(([e])=>e.startsWith(`link/`)).sort(([e],[t])=>e.localeCompare(t))),a=f(()=>r.value.length>0),o=f(()=>{if(r.value.length<=10)return null;let e={};for(let[t,n]of r.value){let r=B(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(t,n)=>a.value?(s(),d(`tr`,zn,[w(`th`,{scope:`row`,title:v(V)(`link/<name>`)},`Links`,8,Bn),w(`td`,null,[o.value?(s(!0),d(i,{key:0},g(o.value,([t,r])=>(s(),d(i,{key:t},[w(`strong`,null,e(t),1),n[1]||=w(`br`,null,null,-1),(s(!0),d(i,null,g(r,t=>(s(),d(i,{key:t.key},[w(`a`,{href:t.url,title:v(V)(t.key),target:`_blank`,rel:`noopener noreferrer`},[w(`span`,{class:b(v(W)(t.url))},null,2),p(` `+e(t.name),1)],8,Vn),n[0]||=w(`br`,null,null,-1)],64))),128)),n[2]||=w(`br`,null,null,-1)],64))),128)):(s(!0),d(i,{key:1},g(r.value,([t,r])=>(s(),d(i,{key:t},[w(`a`,{href:r,target:`_blank`,rel:`noopener noreferrer`},[w(`span`,{class:b(v(W)(r))},null,2),p(` `+e(t.replace(`link/`,``)),1)],8,Hn),n[3]||=w(`br`,null,null,-1)],64))),128))])])):C(``,!0)}},Wn=[`title`],Gn=[`innerHTML`],Kn={key:1,class:`instance-badges`},qn=[`href`],Jn={__name:`AnnotationRow`,props:{annotationKey:String,value:[String,Number,Boolean],kind:String,format:{type:String,default:null}},setup(n){let r=n,a=y(null);R(a);let c=f(()=>{let e=r.annotationKey.split(`/`);return e[e.length-1].replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase())}),l=f(()=>typeof r.value==`string`&&/^https?:\/\//.test(r.value)),u=f(()=>r.format!==`tag_list`||typeof r.value!=`string`?[]:r.value.split(`,`).map(e=>e.trim()).filter(Boolean));function m(e){return`/search?q=${encodeURIComponent(`${r.kind}: ${r.annotationKey} == "${e}"`)}`}return(r,f)=>{let h=o(`router-link`);return s(),d(`tr`,null,[w(`th`,{scope:`row`,title:v(V)(n.annotationKey)},e(c.value),9,Wn),w(`td`,null,[n.format===`markdown`?(s(),d(`div`,{key:0,ref_key:`mdEl`,ref:a,innerHTML:n.value},null,8,Gn)):n.format===`tag_list`?(s(),d(`div`,Kn,[(s(!0),d(i,null,g(u.value,n=>(s(),t(h,{key:n,class:`badge badge-info`,to:m(n)},{default:T(()=>[p(e(n),1)]),_:2},1032,[`to`]))),128))])):n.format===`tag_word`?(s(),t(h,{key:2,class:`badge badge-info`,to:m(n.value)},{default:T(()=>[p(e(n.value),1)]),_:1},8,[`to`])):(s(),d(i,{key:3},[l.value?(s(),d(`a`,{key:0,href:n.value,target:`_blank`},e(n.value),9,qn)):(s(),d(i,{key:1},[p(e(n.value),1)],64))],64))])])}}},Yn={class:`instance-title-text`},Xn={class:`instance-name`},Zn={class:`instance-kind-subtitle`},Qn={key:0,class:`generated-badge`},$n={class:`generated-script`},er={key:0,class:`generated-time`},tr={key:0,class:`view-pager`,role:`group`,"aria-label":`Diagram view`},nr=[`aria-pressed`],rr=[`aria-pressed`],ir=[`innerHTML`],ar={key:2,class:`graph-container`},or=[`innerHTML`],sr={key:3,class:`graph-too-large`},cr=[`innerHTML`],lr={class:`documentation`},ur=E({__name:`InstanceDetail`,props:{data:Object,kind:String,kindMeta:Object},setup(u){let m=u,x=y(``),E=y(null),k=!1,M=null,I=y(null);R(I);let{embeds:L,scanEmbeds:z}=F(),B=y(null);R(B);let V=f(()=>m.data.metadata?.annotations||{}),H=f(()=>Object.keys(m.data.relations||{}).length>0),U=f(()=>{let e=m.data.references||{};return H.value||Object.keys(e).length>0}),W=f(()=>V.value[`generated/script`]),G=f(()=>V.value[`generated/at`]),K=f(()=>V.value[`architecture/description`]),q=f(()=>m.data.diagram||``),J=y(m.data.diagram?`diagram`:`graph`),Y=[[`go`,`Go`],[`python`,`Python`],[`java`,`Java`],[`typescript`,`TypeScript`],[`javascript`,`JavaScript`],[`rust`,`Rust`],[`ruby`,`Ruby`],[`crystal`,`Crystal`],[`cpp`,`C++`],[`csharp`,`C#`],[`zig`,`Zig`],[`elixir`,`Elixir`]],te=f(()=>{let e=Y.filter(([e])=>V.value[`architecture/${e}/modules`]).map(([e,t])=>({label:`${t} Module Structure`,dot:V.value[`architecture/${e}/modules`]}));return!e.length&&V.value[`architecture/modules`]&&e.push({label:`Module Structure`,dot:V.value[`architecture/modules`]}),e}),ne=[`scc/language/`,`repository/artifacts/`,`link/`,`team/`,`jira/`,`generated/`,`license/`],re=new Set([`scc/languages`,`architecture/description`,`architecture/diagram`,`architecture/modules`,`workflow/platforms`,`workflow/types`,`agentic/tools`,`repository/artifacts`,`repository/git`,`repository/visibility`]),ie=[/^scc\/estimated(Cost|ScheduleMonths|People)$/,/^activity\/(commits|contributors(\/.*)?|status|busFactor|createdAt)$/,/^scc\/language\/.+\/loc$/,/^repository\/$/,/^architecture\/.+\/modules$/],ae=f(()=>Object.entries(V.value).filter(([e])=>!(re.has(e)||ne.some(t=>e.startsWith(t))||ie.some(t=>t.test(e)))));async function X(){if(k||!H.value)return;k=!0;let e=await S(m.kind,m.data.name);x.value=e?await O(e):``,await h(),oe()}async function Z(e){J.value=e,e===`graph`&&await X()}n(async()=>{J.value===`graph`&&await X(),await h(),I.value&&(N(I.value),A(I.value),z(I.value))}),l(K,async()=>{await h(),I.value&&(N(I.value),A(I.value),z(I.value))}),_(()=>{M?.destroy()});function oe(){if(!E.value)return;let e=E.value.querySelector(`svg`);e&&(M=j(e,E.value))}return(n,l)=>{let f=o(`router-link`);return s(),d(i,null,[w(`article`,null,[w(`header`,null,[w(`h2`,null,[u.kindMeta?(s(),d(`i`,{key:0,class:b(`iconoir-${u.kindMeta.icon} icon-${u.kindMeta.layer}`)},null,2)):C(``,!0),w(`div`,Yn,[w(`span`,Xn,e(u.data.name),1),w(`span`,Zn,e(u.kind),1)])]),W.value?(s(),d(`div`,Qn,[w(`span`,$n,[l[2]||=p(` by `,-1),a(f,{to:{name:`instance`,params:{kind:`Import`,instance:W.value}}},{default:T(()=>[p(e(W.value),1)]),_:1},8,[`to`])]),G.value?(s(),d(`span`,er,` generated `+e(v(ee)(G.value)),1)):C(``,!0)])):(s(),t(f,{key:1,class:`btn-header`,to:`/kinds/${u.kind}/instances/${u.data.name}/edit`,title:`Edit this resource`},{default:T(()=>[...l[3]||=[w(`i`,{class:`iconoir-edit-pencil`},null,-1),p(` Edit `,-1)]]),_:1},8,[`to`]))]),q.value&&H.value?(s(),d(`div`,tr,[w(`button`,{type:`button`,class:b([`outline`,{secondary:J.value!==`diagram`}]),"aria-pressed":J.value===`diagram`,onClick:l[0]||=e=>Z(`diagram`)},[...l[4]||=[w(`i`,{class:`iconoir-developer`},null,-1),p(` Diagram `,-1)]],10,nr),w(`button`,{type:`button`,class:b([`outline`,{secondary:J.value!==`graph`}]),"aria-pressed":J.value===`graph`,onClick:l[1]||=e=>Z(`graph`)},[...l[5]||=[w(`i`,{class:`iconoir-graph-up`},null,-1),p(` Dependencies `,-1)]],10,rr)])):C(``,!0),q.value?c((s(),d(`div`,{key:1,ref_key:`diagramEl`,ref:B,class:`asd-diagram-wrap`,innerHTML:q.value},null,8,ir)),[[D,J.value===`diagram`]]):C(``,!0),H.value&&x.value?c((s(),d(`div`,ar,[w(`div`,{id:`graphviz`,ref_key:`graphEl`,ref:E,class:`canvas`,innerHTML:x.value},null,8,or)],512)),[[D,J.value===`graph`]]):U.value&&!H.value&&!q.value?(s(),d(`p`,sr,[...l[6]||=[w(`i`,{class:`iconoir-graph-up`},null,-1),p(` No outgoing dependencies — graph omitted `,-1)]])):C(``,!0),K.value?(s(),d(`div`,{key:4,ref_key:`descEl`,ref:I,innerHTML:K.value,class:b([`prose`,{footer:U.value}])},null,10,cr)):C(``,!0),(s(!0),d(i,null,g(v(L),e=>(s(),t(r,{key:e.key,to:e.el},[a(P,{kind:e.kind,name:e.name,spec:e.spec},null,8,[`kind`,`name`,`spec`])],8,[`to`]))),128))]),(s(!0),d(i,null,g(te.value,e=>(s(),t(fe,{key:e.label,dot:e.dot,label:e.label},null,8,[`dot`,`label`]))),128)),a(me,{data:u.data},null,8,[`data`]),w(`article`,lr,[l[7]||=w(`header`,null,[w(`h2`,null,`Details`)],-1),w(`table`,null,[w(`tbody`,null,[a(xe,{annotations:V.value},null,8,[`annotations`]),a(je,{annotations:V.value,kind:u.kind},null,8,[`annotations`,`kind`]),a(Ve,{annotations:V.value},null,8,[`annotations`]),a(Xe,{annotations:V.value},null,8,[`annotations`]),a(ht,{annotations:V.value,kind:u.kind},null,8,[`annotations`,`kind`]),a(Gt,{annotations:V.value,instance:u.data},null,8,[`annotations`,`instance`]),a(Yt,{annotations:V.value,kind:u.kind},null,8,[`annotations`,`kind`]),a(bn,{annotations:V.value,kind:u.kind},null,8,[`annotations`,`kind`]),a(Dn,{annotations:V.value,kind:u.kind},null,8,[`annotations`,`kind`]),a(Rn,{annotations:V.value,kind:u.kind},null,8,[`annotations`,`kind`]),a(Un,{annotations:V.value},null,8,[`annotations`]),(s(!0),d(i,null,g(ae.value,([e,n])=>(s(),t(Jn,{key:e,"annotation-key":e,value:n,kind:u.kind},null,8,[`annotation-key`,`value`,`kind`]))),128))])])]),a(Q,{data:u.data},null,8,[`data`])],64)}}},[[`__scopeId`,`data-v-c066186a`]]),dr={class:`view-header`},fr=[`innerHTML`],pr={key:1,class:`view-query-display`},mr={class:`query-item`},hr={class:`query-value`},gr={key:1},_r=E({__name:`ViewDetail`,props:{data:Object,kindMeta:Object},setup(n){let r=n,a=f(()=>r.data.metadata?.annotations||{}),o=f(()=>L(a.value)),c=f(()=>o.value.query),l=f(()=>a.value[`architecture/description`]),u=f(()=>o.value.fields),m=f(()=>o.value.sort),h=f(()=>o.value.showKind),g=y(null);return R(g),(r,a)=>(s(),d(i,null,[w(`article`,dr,[w(`header`,null,[w(`h2`,null,[n.kindMeta?(s(),d(`i`,{key:0,class:b(`iconoir-${n.kindMeta.icon} icon-${n.kindMeta.layer}`)},null,2)):C(``,!0),p(` `+e(n.data.name),1)])]),l.value?(s(),d(`div`,{key:0,ref_key:`descEl`,ref:g,class:`description-box prose`,innerHTML:l.value},null,8,fr)):C(``,!0),c.value?(s(),d(`div`,pr,[w(`p`,mr,[a[0]||=w(`span`,{class:`label`},`Query:`,-1),w(`code`,hr,e(c.value),1)])])):C(``,!0)]),c.value?(s(),t(k,{key:0,query:c.value,fields:u.value,sort:m.value,"show-kind":h.value},null,8,[`query`,`fields`,`sort`,`show-kind`])):C(``,!0),c.value?C(``,!0):(s(),d(`article`,gr,[...a[1]||=[w(`p`,{class:`view-empty-state`},[w(`em`,null,`No query defined`)],-1)]]))],64))}},[[`__scopeId`,`data-v-1bea2f01`]]),vr={components:{RelationsGrid:Q,AnalysisResults:M},props:{data:Object,kindMeta:Object},setup(e){let t=f(()=>e.data.metadata?.annotations||{}),n=f(()=>t.value[`architecture/description`]),r=f(()=>t.value[`analysis/script`]),i=f(()=>t.value[`analysis/handler`]||`ruby`),a=f(()=>t.value[`analysis/timeout`]||`30s`),o=y(null);R(o);function s(){r.value&&navigator.clipboard.writeText(r.value)}return{annotations:t,description:n,analysisScript:r,handler:i,timeout:a,descEl:o,copyScript:s}}},yr={class:`analysis-header`},br={class:`instance-title-text`},xr={class:`instance-name`},Sr={class:`header-actions`},Cr=[`innerHTML`],wr={class:`analysis-details-section`},Tr={class:`analysis-details-content`},Er={class:`analysis-metadata`},Dr={class:`analysis-meta-item`},Or={class:`analysis-meta-item`},kr={class:`analysis-script`},Ar={class:`analysis-script-header`},jr={class:`code`},Mr={class:`language-ruby`},Nr={key:1};function Pr(t,n,r,c,l,u){let f=o(`router-link`),m=o(`AnalysisResults`),h=o(`RelationsGrid`);return s(),d(i,null,[w(`article`,yr,[w(`header`,null,[w(`h2`,null,[r.kindMeta?(s(),d(`i`,{key:0,class:b(`iconoir-${r.kindMeta.icon} icon-${r.kindMeta.layer}`)},null,2)):C(``,!0),w(`div`,br,[w(`span`,xr,e(r.data.name),1),n[1]||=w(`span`,{class:`instance-kind-subtitle`},`Analysis`,-1)])]),w(`div`,Sr,[a(f,{class:`btn-header`,to:`/kinds/Analysis/instances/${r.data.name}/edit`,title:`Edit this resource`},{default:T(()=>[...n[2]||=[w(`i`,{class:`iconoir-edit-pencil`},null,-1),p(` Edit `,-1)]]),_:1},8,[`to`])])]),c.description?(s(),d(`div`,{key:0,ref:`descEl`,class:`description-box prose`,innerHTML:c.description},null,8,Cr)):C(``,!0)]),c.analysisScript?(s(),d(i,{key:0},[a(m,{name:r.data.name},null,8,[`name`]),w(`details`,wr,[n[7]||=w(`summary`,null,[w(`i`,{class:`iconoir-code-brackets-square`}),p(` Script Details `)],-1),w(`div`,Tr,[w(`div`,Er,[w(`span`,Dr,[n[3]||=w(`i`,{class:`iconoir-code`},null,-1),p(` `+e(c.handler),1)]),w(`span`,Or,[n[4]||=w(`i`,{class:`iconoir-timer`},null,-1),p(` `+e(c.timeout),1)])]),w(`div`,kr,[w(`div`,Ar,[n[6]||=w(`strong`,null,`Script`,-1),w(`button`,{class:`copy-button`,onClick:n[0]||=(...e)=>c.copyScript&&c.copyScript(...e),title:`Copy script to clipboard`},[...n[5]||=[w(`i`,{class:`iconoir-copy`},null,-1)]])]),w(`pre`,jr,[w(`code`,Mr,e(c.analysisScript),1)])])])])],64)):(s(),d(`article`,Nr,[...n[8]||=[w(`p`,{class:`analysis-empty-state`},[w(`i`,{class:`iconoir-warning-triangle`}),p(` No script defined for this analysis. `)],-1)]])),a(h,{data:r.data},null,8,[`data`])],64)}var Fr=E(vr,[[`render`,Pr],[`__scopeId`,`data-v-d0da5075`]]),Ir={class:`import-header`},Lr={class:`instance-title-text`},Rr={class:`instance-name`},zr={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=E({__name:`ImportDetail`,props:{data:Object,kindMeta:Object},setup(t){let r=t,c=y(``),l=y(null),u=null,m=y(null);R(m);let v=f(()=>r.data.metadata?.annotations||{}),x=f(()=>v.value[`import/handler`]),E=f(()=>v.value[`import/enabled`]!==`false`),D=f(()=>v.value[`import/cacheTime`]),k=f(()=>v.value[`import/priority`]),A=f(()=>v.value[`import/outputPath`]),M=f(()=>v.value[`architecture/description`]),N=f(()=>Object.entries(v.value).filter(([e])=>e.startsWith(`import/config/`)).map(([e,t])=>[e.replace(`import/config/`,``),t])),P=f(()=>{let e=r.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=f(()=>Object.keys(r.data.relations||{}).length>0),I=f(()=>{let e=r.data.references||{};return F.value||Object.keys(e).length>0}),L=f(()=>P.value>=50);n(async()=>{if(F.value&&!L.value){let e=await S(`Import`,r.data.name);c.value=e?await O(e):``,await h(),z()}}),_(()=>{u?.destroy()});function z(){if(!l.value)return;let e=l.value.querySelector(`svg`);e&&(u=j(e,l.value))}function B(e){return typeof e==`string`?e.startsWith(`http`)||e.startsWith(`git@`)||e.startsWith(`file://`):!1}return(n,r)=>{let u=o(`router-link`);return s(),d(i,null,[w(`article`,Ir,[w(`header`,null,[w(`h2`,null,[t.kindMeta?(s(),d(`i`,{key:0,class:b(`iconoir-${t.kindMeta.icon} icon-${t.kindMeta.layer}`)},null,2)):C(``,!0),w(`div`,Lr,[w(`span`,Rr,e(t.data.name),1),r[0]||=w(`span`,{class:`instance-kind-subtitle`},`Import`,-1)])]),w(`div`,zr,[x.value?(s(),d(`span`,Br,e(x.value),1)):C(``,!0),E.value?C(``,!0):(s(),d(`span`,Vr,`Disabled`)),a(u,{class:`btn-header`,to:`/kinds/Import/instances/${t.data.name}/edit`,title:`Edit this resource`},{default:T(()=>[...r[1]||=[w(`i`,{class:`iconoir-edit-pencil`},null,-1),p(` Edit `,-1)]]),_:1},8,[`to`])])]),M.value?(s(),d(`div`,{key:0,ref_key:`descEl`,ref:m,class:`description-box prose`,innerHTML:M.value},null,8,Hr)):C(``,!0),I.value?(s(),d(i,{key:1},[F.value&&!L.value&&c.value?(s(),d(`div`,Ur,[w(`div`,{id:`graphviz`,ref_key:`graphEl`,ref:l,class:`canvas`,innerHTML:c.value},null,8,Wr)])):L.value?(s(),d(`p`,Gr,[r[2]||=w(`i`,{class:`iconoir-warning-triangle`},null,-1),p(` Graph too large to display (`+e(P.value)+` relations) `,1)])):F.value?C(``,!0):(s(),d(`p`,Kr,[...r[3]||=[w(`i`,{class:`iconoir-graph-up`},null,-1),p(` No outgoing dependencies — graph omitted `,-1)]]))],64)):C(``,!0)]),w(`article`,qr,[r[11]||=w(`header`,null,[w(`h3`,null,[w(`i`,{class:`iconoir-settings`}),p(` Configuration`)])],-1),w(`div`,Jr,[x.value?(s(),d(`span`,Yr,[r[4]||=w(`i`,{class:`iconoir-code`},null,-1),p(` `+e(x.value),1)])):C(``,!0),D.value?(s(),d(`span`,Xr,[r[5]||=w(`i`,{class:`iconoir-timer`},null,-1),p(` `+e(D.value),1)])):C(``,!0),k.value?(s(),d(`span`,Zr,[r[6]||=w(`i`,{class:`iconoir-sort-down`},null,-1),p(` Priority: `+e(k.value),1)])):C(``,!0),E.value?(s(),d(`span`,Qr,[...r[7]||=[w(`i`,{class:`iconoir-check-circle`},null,-1),p(` Enabled `,-1)]])):(s(),d(`span`,$r,[...r[8]||=[w(`i`,{class:`iconoir-xmark-circle`},null,-1),p(` Disabled `,-1)]]))]),A.value?(s(),d(`div`,ei,[r[9]||=w(`strong`,null,`Output:`,-1),w(`code`,null,e(A.value),1)])):C(``,!0),N.value.length?(s(),d(`details`,ti,[r[10]||=w(`summary`,null,[w(`i`,{class:`iconoir-list`}),p(` Handler Settings `)],-1),w(`table`,ni,[w(`tbody`,null,[(s(!0),d(i,null,g(N.value,([t,n])=>(s(),d(`tr`,{key:t},[w(`th`,ri,e(t),1),w(`td`,null,[B(n)?(s(),d(`code`,ii,e(n),1)):(s(),d(i,{key:1},[p(e(n),1)],64))])]))),128))])])])):C(``,!0)]),a(Q,{data:t.data},null,8,[`data`])],64)}}},[[`__scopeId`,`data-v-4e36b50f`]]),oi={class:`page-actions`},si={class:`page-resource`},ci={__name:`PageDetail`,props:{data:Object,kindMeta:Object},setup(t){return(n,r)=>{let c=o(`router-link`);return s(),d(i,null,[a(K,{name:t.data.name},{actions:T(()=>[w(`div`,oi,[w(`span`,si,[t.kindMeta?(s(),d(`i`,{key:0,class:b(`iconoir-${t.kindMeta.icon} icon-${t.kindMeta.layer}`)},null,2)):C(``,!0),r[0]||=p(` Page `,-1),w(`code`,null,e(t.data.name),1)]),a(c,{class:`btn-header`,to:{name:`page`,params:{name:t.data.name}},title:`Open in the handbook tree`},{default:T(()=>[...r[1]||=[w(`i`,{class:`iconoir-book`},null,-1),p(` Open in handbook `,-1)]]),_:1},8,[`to`]),a(c,{class:`btn-header`,to:`/kinds/Page/instances/${encodeURIComponent(t.data.name)}/edit`,title:`Edit this page`},{default:T(()=>[...r[2]||=[w(`i`,{class:`iconoir-edit-pencil`},null,-1),p(` Edit `,-1)]]),_:1},8,[`to`])])]),_:1},8,[`name`]),a(Q,{data:t.data},null,8,[`data`])],64)}}},li={key:0},ui={key:1},di={__name:`InstanceRouter`,props:{kind:String,instance:String},setup(n){let r=n,a=u(`kinds`),o=y(null),c=y(!0),f=y(null);async function m(){c.value=!0,f.value=null;try{o.value=await x(r.kind,r.instance)}catch(e){f.value=e.message}finally{c.value=!1}}l(()=>[r.kind,r.instance],m,{immediate:!0});function h(){return a.value?a.value.kinds.find(e=>e.kind===r.kind):null}return(r,a)=>c.value?(s(),d(`article`,li,[...a[0]||=[w(`p`,null,`Loading...`,-1)]])):f.value?(s(),d(`article`,ui,[a[4]||=w(`header`,null,[w(`h2`,null,`Not Found`)],-1),w(`p`,null,[a[1]||=p(`Instance `,-1),w(`strong`,null,e(n.instance),1),a[2]||=p(` of kind `,-1),w(`strong`,null,e(n.kind),1),a[3]||=p(` was not found.`,-1)])])):o.value?(s(),d(i,{key:2},[n.kind===`View`?(s(),t(_r,{key:0,data:o.value,"kind-meta":h()},null,8,[`data`,`kind-meta`])):n.kind===`Analysis`?(s(),t(Fr,{key:1,data:o.value,"kind-meta":h()},null,8,[`data`,`kind-meta`])):n.kind===`Import`?(s(),t(ai,{key:2,data:o.value,"kind-meta":h()},null,8,[`data`,`kind-meta`])):n.kind===`Page`?(s(),t(ci,{key:3,data:o.value,"kind-meta":h()},null,8,[`data`,`kind-meta`])):(s(),t(ur,{key:4,data:o.value,kind:n.kind,"kind-meta":h()},null,8,[`data`,`kind`,`kind-meta`]))],64)):C(``,!0)}};export{di as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,F as t,G as n,H as r,K as i,L as a,M as o,P as s,Y as c,Z as l,j as u,k as d,p as f,q as p}from"./index-D7m61Ahx.js";import{t as m}from"./ResourceList-vkgFyeOY.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=a(`kinds`),S=c([]),C=c(0),w=c(!0),T=c(!1),E=c(null),D=0;async function O(){w.value=!0,D=0;try{let e=await f(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 f(b.kind,{limit:v,offset:D,output:`brief`})).instances||[];S.value=[...S.value,...e],D+=e.length}catch{}T.value=!1}}i(()=>b.kind,O,{immediate:!0});function A(e){return e.replace(/([a-z])([A-Z])/g,`$1_$2`).toLowerCase()}return(i,a)=>{let c=n(`router-link`);return w.value?(r(),o(`article`,_,[...a[1]||=[d(`p`,null,`Loading...`,-1)]])):(r(),o(`article`,h,[d(`header`,null,[d(`h2`,null,[E.value?(r(),o(`i`,{key:0,class:l(`iconoir-${E.value.icon} icon-${E.value.layer}`)},null,2)):u(``,!0),s(` `+e(y.kind),1)]),d(`div`,g,[t(c,{class:`kind-help`,to:{name:`doc`,params:{filename:`resources/`+A(y.kind)}},title:`Documentation`},{default:p(()=>[...a[0]||=[d(`i`,{class:`iconoir-help-circle`},null,-1)]]),_:1},8,[`to`])])]),t(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};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,B as n,E as r,F as i,G as a,H as o,K as s,L as c,M as l,O as u,P as d,U as f,X as p,Y as m,Z as h,j as g,k as _,q as v,r as y,t as b,x,z as S}from"./index-D7m61Ahx.js";function C(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function w(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 T={cocomoSalary:15e4,targetSalary:8e4,aiCostMultiplier:3,aiScheduleMultiplier:2.5,aiTeamMultiplier:3};function E(e,t){if(t==null)return null;let n=T.targetSalary/T.cocomoSalary,r=parseFloat(t);switch(e){case`cost`:return r*n/T.aiCostMultiplier;case`schedule`:return r/T.aiScheduleMultiplier;case`team`:return Math.ceil(r/T.aiTeamMultiplier);default:return null}}function D(e){return e.replace(/\.git$/,``).replace(`:`,`/`).replace(`git@`,`https://`)}function O(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 k(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 A(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 j=new Set([`name`,`kind`]);function M(e){return j.has(e)}function N(e,t){return M(t)?e[t]??null:e.metadata?.annotations?.[t]??null}function P(...e){return e.filter(Boolean).join(`
|
|
2
|
-
`)||void 0}var F=[`title`],I={class:`hl-label`},L={class:`hl-number`},R={key:0,class:`hl-more`},z=2,B=b({__name:`HighlightValue`,props:{item:{type:Object,required:!0},kind:{type:String,required:!0}},setup(n){let i=n,s=u(()=>i.item.type===`Time`),c=u(()=>typeof i.item.value==`number`),m=u(()=>[`Person`,`EmailRecipient`].includes(i.item.type)),h=u(()=>[`tag_word`,`tag_list`].includes(i.item.format)),b=u(()=>Array.isArray(i.item.value)?i.item.value:[i.item.value]),x=u(()=>b.value.slice(0,z)),S=u(()=>b.value.length-x.value.length),C=u(()=>P(i.item.title,i.item.key,s.value?i.item.value:null)),w=u(()=>String(i.item.value).replace(/\s*<[^>]*>/,``).trim()||String(i.item.value));function T(e){let t=`${i.kind}: ${i.item.key} == "${String(e).replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`;return{name:`search`,query:y(t,i.kind===`Page`?`pages`:`kinds`)}}return(i,u)=>{let y=a(`router-link`);return o(),l(`span`,{class:`hl`,title:C.value},[c.value?(o(),l(r,{key:0},[_(`span`,I,e(n.item.title),1),_(`span`,L,e(n.item.value.toLocaleString(`en`)),1)],64)):s.value?(o(),l(r,{key:1},[d(e(p(O)(n.item.value)),1)],64)):m.value?(o(),l(r,{key:2},[d(e(w.value),1)],64)):h.value?(o(),l(r,{key:3},[(o(!0),l(r,null,f(x.value,n=>(o(),t(y,{key:n,class:`hl-tag`,to:T(n)},{default:v(()=>[d(e(n),1)]),_:2},1032,[`to`]))),128)),S.value>0?(o(),l(`span`,R,`+`+e(S.value),1)):g(``,!0)],64)):(o(),l(r,{key:4},[d(e(b.value.join(`, `)),1)],64))],8,F)}}},[[`__scopeId`,`data-v-318b23ef`]]),V={class:`highlights`},H=b({__name:`HighlightList`,props:{items:{type:Array,required:!0},kind:{type:String,required:!0}},setup(e){return(n,i)=>(o(),l(`div`,V,[(o(!0),l(r,null,f(e.items,n=>(o(),t(B,{key:n.key,item:n,kind:e.kind},null,8,[`item`,`kind`]))),128))]))}},[[`__scopeId`,`data-v-c7feccbb`]]),U={key:0,class:`empty-state`},W={key:1,class:`resource-list-table`},G={key:0,class:`col-kind`},K=[`onClick`],q={class:`col-name`},J={key:0,class:`instance-sub`},Y={key:0,class:`col-kind`},X={key:0,class:`instance-kind`},Z=[`title`],Q={key:1,class:`empty-value`},ee={class:`instance-main`},te={key:0,class:`instance-sub`},ne={key:1,class:`instance-kind`},re={key:0},$=b({__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},pageLinks:{type:Boolean,default:!1},rows:{type:Boolean,default:!1}},emits:[`load-more`],setup(y,{emit:b}){let C=y,w=b,T=c(`pageTitles`,null);function E(e){return C.pageLinks&&e.kind===`Page`}let D=x();function k(e,t){t.target.closest(`a`)||t.metaKey||t.ctrlKey||t.shiftKey||window.getSelection()?.toString()||D.push(A(e))}function A(e){return E(e)?{name:`page`,params:{name:e.name}}:{name:`instance`,params:{kind:e.kind,instance:e.name}}}function j(e){return E(e)&&T?.value?.[e.name]||e.name}function P(e){return E(e)&&j(e)!==e.name?e.name:null}let F=m(null),I=null,L=u(()=>C.total>C.instances.length);function R(){I&&I.disconnect(),F.value&&(I=new IntersectionObserver(e=>{e[0].isIntersecting&&L.value&&!C.loadingMore&&w(`load-more`)},{rootMargin:`200px`}),I.observe(F.value))}n(R),s(F,R),S(()=>{I&&I.disconnect()});let z=u(()=>C.fields&&C.fields.length>0),B=u(()=>C.fields?C.fields.filter(e=>!M(e)).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 N(e,t)}function $(e){return/at$/i.test(e)||/date$/i.test(e)||/time$/i.test(e)}return(n,s)=>{let c=a(`router-link`);return o(),l(r,null,[y.instances.length?z.value?(o(),l(`table`,W,[_(`thead`,null,[_(`tr`,null,[s[1]||=_(`th`,{class:`col-name`},`Name`,-1),y.omitKind?g(``,!0):(o(),l(`th`,G,`Kind`)),(o(!0),l(r,null,f(B.value,t=>(o(),l(`th`,{key:t.key,class:`col-annotation`},e(t.title),1))),128))])]),_(`tbody`,null,[(o(!0),l(r,null,f(y.instances,t=>(o(),l(`tr`,{key:t.name,class:`resource-list-row`,onClick:e=>k(t,e)},[_(`td`,q,[i(c,{class:`instance-name`,to:A(t)},{default:v(()=>[t.icon?(o(),l(`i`,{key:0,class:h(`iconoir-${t.icon} icon-${t.layer}`)},null,2)):g(``,!0),d(` `+e(j(t)),1)]),_:2},1032,[`to`]),P(t)?(o(),l(`span`,J,e(P(t)),1)):g(``,!0)]),y.omitKind?g(``,!0):(o(),l(`td`,Y,[E(t)?g(``,!0):(o(),l(`span`,X,e(t.kind),1))])),(o(!0),l(r,null,f(B.value,n=>(o(),l(`td`,{key:n.key,class:`col-annotation`},[V(t,n.key)==null?(o(),l(`span`,Q,`—`)):(o(),l(r,{key:0},[$(n.key)?(o(),l(`span`,{key:0,title:V(t,n.key)},e(p(O)(V(t,n.key))),9,Z)):(o(),l(r,{key:1},[d(e(V(t,n.key)),1)],64))],64))]))),128))],8,K))),128))])])):(o(),l(`ul`,{key:2,class:h([`search-instance-list`,{rows:y.rows}])},[(o(!0),l(r,null,f(y.instances,n=>(o(),l(`li`,{key:n.name,class:`search-instance-item`},[_(`div`,ee,[i(c,{class:`instance-name`,to:A(n)},{default:v(()=>[n.icon?(o(),l(`i`,{key:0,class:h(`iconoir-${n.icon} icon-${n.layer}`)},null,2)):g(``,!0),d(` `+e(j(n)),1)]),_:2},1032,[`to`]),P(n)?(o(),l(`span`,te,e(P(n)),1)):g(``,!0),!y.omitKind&&!E(n)?(o(),l(`span`,ne,e(n.kind),1)):g(``,!0)]),n.highlights?.length?(o(),t(H,{key:0,items:n.highlights,kind:n.kind},null,8,[`items`,`kind`])):g(``,!0)]))),128))],2)):(o(),l(`p`,U,[...s[0]||=[_(`i`,null,`No resources found`,-1)]])),L.value?(o(),l(`div`,{key:3,ref_key:`sentinel`,ref:F,class:`load-more-sentinel`},[y.loadingMore?(o(),l(`small`,re,`Loading more…`)):g(``,!0)],512)):g(``,!0)],64)}}},[[`__scopeId`,`data-v-03a0a71c`]]);export{N as a,C as c,A as i,O as l,P as n,D as o,E as r,k as s,$ as t,w as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,E as n,F as r,G as i,H as a,K as o,L as s,M as c,O as l,P as u,U as d,Y as f,Z as p,b as m,j as h,k as g,n as _,q as v,r as y,t as b,y as x}from"./index-D7m61Ahx.js";import{t as S}from"./ResourceList-vkgFyeOY.js";import{t as C}from"./QueryError-D1FL1xgA.js";var w={class:`kind-facets`,"aria-label":`Filter by kind`},T={class:`facet-count`},E={class:`facet-count`},D=b({__name:`KindFacets`,props:{byKind:{type:Object,default:()=>({})},selected:{type:String,default:null}},setup(o){let f=o,h=[`strategy`,`motivation`,`business`,`application`,`technology`,`other`],_=m(),y=s(`kinds`,null),b=l(()=>Object.fromEntries((y?.value?.kinds||[]).map(e=>[e.kind,e.layer]))),x=l(()=>Object.entries(f.byKind).map(([e,t])=>({kind:e,count:t,layer:h.includes(b.value[e])?b.value[e]:`other`})).sort((e,t)=>h.indexOf(e.layer)-h.indexOf(t.layer)||e.kind.localeCompare(t.kind))),S=l(()=>x.value.reduce((e,t)=>e+t.count,0));function C(e){let t={..._.query};return e?t.kind=e:delete t.kind,{name:`search`,query:t}}return(s,l)=>{let f=i(`router-link`);return a(),c(`nav`,w,[r(f,{class:p([`facet facet-all`,{selected:!o.selected}]),to:C(null),"aria-current":o.selected?void 0:`true`},{default:v(()=>[l[0]||=u(` All `,-1),g(`span`,T,e(S.value),1)]),_:1},8,[`class`,`to`,`aria-current`]),(a(!0),c(n,null,d(x.value,n=>(a(),t(f,{key:n.kind,class:p([`facet`,[`icon-${n.layer}`,{selected:o.selected===n.kind}]]),to:C(n.kind),"aria-current":o.selected===n.kind?`true`:void 0},{default:v(()=>[l[1]||=g(`span`,{class:`facet-dot`,"aria-hidden":`true`},null,-1),u(` `+e(n.kind)+` `,1),g(`span`,E,e(n.count),1)]),_:2},1032,[`class`,`to`,`aria-current`]))),128))])}}},[[`__scopeId`,`data-v-c963b199`]]),O={key:0,class:`search-hints`},k={class:`hint-lead`},A={class:`hint-examples`},j={class:`hint-note`},M={key:1,class:`search-hints`},N={class:`hint-lead`},P={class:`hint-tips`},F={key:0},I={key:1},L=b({__name:`SearchHints`,props:{mode:{type:String,required:!0},query:{type:String,default:``},scope:{type:String,default:`kinds`}},setup(t){let o=t,f=s(`pages`,null),p=l(()=>!!f?.value?.length),m={kinds:[{query:`kubernetes`,note:`names that contain a word`},{query:`TechnologyArtifact: activity/status == "active"`,note:`active repositories`},{query:`BusinessRequirement: requirement/priority == "must"`,note:`requirements that must be met`},{query:`-> ApplicationInterface`,note:`resources that use an interface`}],pages:[{query:`handbook`,note:`words in a page title, name or text`},{query:`page/status == "rfc"`,note:`pages in review`}]},_=l(()=>m[o.scope]||m.kinds),b=l(()=>o.scope===`pages`?`pages`:`resources`);function x(e){return{name:`search`,query:y(e.query,o.scope)}}return(o,s)=>{let l=i(`router-link`);return t.mode===`intro`?(a(),c(`section`,O,[g(`p`,k,`Search `+e(b.value)+` by name, or filter them with a query.`,1),g(`ul`,A,[(a(!0),c(n,null,d(_.value,t=>(a(),c(`li`,{key:t.query},[r(l,{to:x(t)},{default:v(()=>[g(`code`,null,e(t.query),1)]),_:2},1032,[`to`]),g(`span`,j,e(t.note),1)]))),128))]),g(`p`,null,[r(l,{to:`/doc/search`},{default:v(()=>[...s[0]||=[u(`Query syntax`,-1)]]),_:1})])])):(a(),c(`section`,M,[g(`p`,N,[u(`No `+e(b.value)+` match `,1),g(`code`,null,e(t.query),1),s[1]||=u(`.`,-1)]),g(`ul`,P,[s[2]||=g(`li`,null,`Check the spelling, or try a shorter word.`,-1),t.scope===`kinds`&&p.value?(a(),c(`li`,F,`Page texts are searched from the Pages tab.`)):h(``,!0),t.scope===`pages`?(a(),c(`li`,I,`Switch to the Kinds tab to search resources.`)):h(``,!0)]),g(`p`,null,[r(l,{to:`/doc/search`},{default:v(()=>[...s[3]||=[u(`Query syntax`,-1)]]),_:1})])]))}}},[[`__scopeId`,`data-v-840619d7`]]),R={class:`search-page`},z={class:`sr-only`,role:`status`,"aria-live":`polite`},B={class:`header-actions`},V={key:2,class:`search-summary`},H={class:`search-meta`},U={key:0,class:`search-meta`},W={key:1,class:`more-error`},G=100,K=b({__name:`SearchResults`,setup(s){let d=m(),y=f([]),b=f(0),w=f({}),T=f(0),E=f(``),O=f(``),k=f(`kinds`),A=f(null),j=f(!1),M=f(!1),N=f(null),P=f(!1),F=0,I=0,K=l(()=>!!E.value),q=l(()=>Object.keys(w.value).length>1||!!A.value),J=l(()=>j.value||!!N.value),Y=l(()=>{let e=b.value===1?`result`:`results`;return A.value?`${b.value} ${e} in ${A.value}`:`${b.value} ${e}`});async function X(){let e=d.query.q;if(A.value=d.query.kind||null,k.value=d.query.scope===`pages`?`pages`:`kinds`,!e){I++,y.value=[],b.value=0,w.value={},E.value=``,O.value=``,N.value=null,j.value=!1;return}E.value=e,O.value=_(e,k.value);let t=++I;j.value=!0,N.value=null,P.value=!1;try{let e=await x(O.value,{limit:G,offset:0,output:`brief`,kind:A.value});if(t!==I)return;y.value=e.instances||[],b.value=e.total||0,w.value=e.by_kind||{},T.value=e.query_time_ms||0,F=y.value.length}catch(e){if(t!==I)return;N.value=e.message}finally{t===I&&(j.value=!1)}}async function Z(){if(M.value||F>=b.value||!E.value)return;M.value=!0,P.value=!1;let e=I;try{let t=await x(O.value,{limit:G,offset:F,output:`brief`,kind:A.value});if(e!==I)return;let n=t.instances||[];y.value=[...y.value,...n],F+=n.length}catch{P.value=!0}finally{M.value=!1}}return o(()=>[d.query.q,d.query.scope,d.query.kind],X,{immediate:!0}),(o,s)=>{let l=i(`router-link`);return a(),c(`article`,R,[g(`span`,z,e(j.value?`Searching`:``),1),g(`header`,null,[s[1]||=g(`h2`,null,[g(`i`,{class:`iconoir-search`,"aria-hidden":`true`}),u(` Search`)],-1),g(`div`,B,[r(l,{class:`search-syntax`,to:`/doc/search`,title:`Query syntax`},{default:v(()=>[...s[0]||=[g(`i`,{class:`iconoir-help-circle`,"aria-hidden":`true`},null,-1)]]),_:1})])]),K.value?(a(),c(n,{key:1},[q.value?(a(),t(D,{key:0,"by-kind":w.value,selected:A.value},null,8,[`by-kind`,`selected`])):h(``,!0),N.value?(a(),t(C,{key:1,message:N.value},null,8,[`message`])):h(``,!0),!N.value&&y.value.length?(a(),c(`p`,V,[u(e(Y.value)+` `,1),g(`span`,H,e(T.value)+` ms`,1),k.value===`pages`&&O.value!==E.value?(a(),c(`span`,U,[s[2]||=u(` searched as `,-1),g(`code`,null,e(O.value),1)])):h(``,!0)])):h(``,!0),g(`div`,{class:p({stale:J.value})},[y.value.length?(a(),t(S,{key:0,rows:``,instances:y.value,"omit-kind":!!A.value,"page-links":k.value===`pages`,total:b.value,"loading-more":M.value,onLoadMore:Z},null,8,[`instances`,`omit-kind`,`page-links`,`total`,`loading-more`])):h(``,!0),P.value?(a(),c(`p`,W,[s[3]||=u(` Could not load more results. `,-1),g(`button`,{type:`button`,class:`more-retry`,onClick:Z},`Try again`)])):h(``,!0)],2),!j.value&&!N.value&&!y.value.length?(a(),t(L,{key:3,mode:`empty`,query:E.value,scope:k.value},null,8,[`query`,`scope`])):h(``,!0)],64)):(a(),t(L,{key:0,mode:`intro`,scope:k.value},null,8,[`scope`]))])}}},[[`__scopeId`,`data-v-3a63d0fc`]]);export{K as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.view-result-meta[data-v-713366b4]{font-size:var(--fs-sm);color:var(--pico-muted-color);margin-left:1rem}.view-loading[data-v-713366b4]{color:var(--pico-muted-color);align-items:center;gap:.5rem;display:flex}@keyframes spin-713366b4{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinning[data-v-713366b4]{animation:1s linear infinite spin-713366b4}.analysis-heading[data-v-010124ff]{margin:1rem 0 .5rem;font-weight:600}.analysis-heading.level-0[data-v-010124ff]{font-size:var(--fs-md);border-bottom:1px solid var(--pico-muted-border-color);padding-bottom:.25rem}.analysis-heading.level-1[data-v-010124ff]{font-size:var(--fs-md)}.analysis-heading.level-2[data-v-010124ff]{font-size:1em}.analysis-text[data-v-010124ff]{margin:.5rem 0}[data-v-010124ff] .analysis-text p{margin:0}.analysis-message[data-v-010124ff]{border-radius:4px;align-items:flex-start;gap:.5rem;margin:.5rem 0;padding:.5rem .75rem;display:flex}.analysis-message i[data-v-010124ff]{margin-top:.15rem}.analysis-message.message-info[data-v-010124ff]{color:#3b82f6;background-color:#3b82f61a;border:1px solid #3b82f64d}.analysis-message.message-warning[data-v-010124ff]{color:#f59e0b;background-color:#f59e0b1a;border:1px solid #f59e0b4d}.analysis-message.message-error[data-v-010124ff]{color:#ef4444;background-color:#ef44441a;border:1px solid #ef44444d}.analysis-table-wrapper[data-v-010124ff]{margin:.75rem 0;overflow-x:auto}.analysis-list[data-v-010124ff]{margin:.5rem 0;padding-left:1.5rem}.analysis-list li[data-v-010124ff]{margin:.25rem 0}.analysis-execution header[data-v-48e3ef33]{justify-content:space-between;align-items:center;display:flex}.analysis-execution header h3[data-v-48e3ef33]{align-items:center;gap:.5rem;margin:0;display:flex}.analysis-execute-controls[data-v-48e3ef33]{align-items:center;gap:.75rem;display:flex}.analysis-execute-controls button[data-v-48e3ef33]{font-size:var(--fs-xs);align-items:center;gap:.35rem;margin:0;padding:.4rem .75rem;display:flex}.analysis-loading[data-v-48e3ef33]{color:var(--pico-muted-color);justify-content:center;align-items:center;gap:.5rem;padding:2rem;display:flex}@keyframes spin-48e3ef33{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinning[data-v-48e3ef33]{animation:1s linear infinite spin-48e3ef33}.analysis-results[data-v-48e3ef33]{background-color:var(--pico-card-background-color);border:1px solid var(--pico-muted-border-color);border-radius:8px;min-height:100px;padding:1rem}.analysis-results-placeholder[data-v-48e3ef33]{color:var(--pico-muted-color);align-items:center;gap:.5rem;margin:0;font-style:italic;display:flex}.analysis-empty-state[data-v-48e3ef33]{color:var(--pico-muted-color);align-items:center;gap:.5rem;padding:1.5rem;display:flex}.analysis-result-container[data-v-48e3ef33]{padding:0}.analysis-result-header[data-v-48e3ef33]{background-color:var(--pico-code-background-color);border-bottom:1px solid var(--pico-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-48e3ef33]{align-items:center;gap:.5rem;font-weight:600;display:flex}.analysis-result-header .status-success[data-v-48e3ef33]{color:#10b981}.analysis-result-header .status-findings[data-v-48e3ef33]{color:#f59e0b}.analysis-result-header .status-error[data-v-48e3ef33]{color:#ef4444}.analysis-result-header .duration[data-v-48e3ef33]{font-size:var(--fs-sm);color:var(--pico-muted-color);align-items:center;gap:.35rem;display:flex}.analysis-error-details[data-v-48e3ef33]{color:#ef4444;background-color:#ef44441a;border:1px solid #ef44444d;border-radius:4px;margin-bottom:1rem;padding:.75rem 1rem}.analysis-error-details details[data-v-48e3ef33]{margin-top:.5rem}.analysis-error-details summary[data-v-48e3ef33]{cursor:pointer;color:var(--pico-muted-color);font-size:var(--fs-sm)}.analysis-error-details pre[data-v-48e3ef33]{font-size:var(--fs-xs);max-height:200px;margin-top:.5rem;overflow:auto}.analysis-output[data-v-48e3ef33]{margin-top:.5rem}.compact .analysis-results-placeholder[data-v-48e3ef33]{font-size:var(--fs-xs)}.requirement-status-icon[data-v-a6f2eb1d]{font-size:var(--fs-md)}.requirement-status-icon.status-implemented[data-v-a6f2eb1d]{color:#10b981}.requirement-status-icon.status-partial[data-v-a6f2eb1d]{color:#f59e0b}.requirement-status-icon.status-planned[data-v-a6f2eb1d]{color:#3b82f6}.requirement-status-icon.status-not-started[data-v-a6f2eb1d],.requirement-status-icon.status-unknown[data-v-a6f2eb1d]{color:#9ca3af}.requirement-by ul[data-v-a6f2eb1d]{margin:0;padding:0;list-style:none}.kind-embed-source[data-v-1f964c65]{font-size:var(--fs-xs);color:var(--pico-muted-color);align-items:center;gap:.35rem;margin:0 0 .25rem;display:flex}.kind-embed-source a[data-v-1f964c65]{color:inherit;text-decoration:none}.kind-embed-source a[data-v-1f964c65]:hover{color:var(--pico-primary);text-decoration:underline}.kind-embed-status.failed[data-v-1f964c65]{color:#ef4444}.kind-embed-rerun[data-v-1f964c65]{font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;margin:0;padding:0 .25rem;line-height:1;display:inline-flex}.kind-embed-rerun i[data-v-1f964c65]{font-size:var(--fs-md)}.kind-embed-rerun[data-v-1f964c65]:hover:not(:disabled){color:var(--pico-primary)}.kind-embed-loading[data-v-1f964c65],.kind-embed-empty[data-v-1f964c65]{color:var(--pico-muted-color);align-items:center;gap:.5rem;margin:0;font-style:italic;display:flex}.kind-embed-error[data-v-1f964c65]{color:#991b1b;background:#fee2e2;border:1px solid #fecaca;border-radius:4px;padding:.5rem .75rem}@keyframes spin-1f964c65{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinning[data-v-1f964c65]{animation:1s linear infinite spin-1f964c65}@media (prefers-color-scheme:dark){.kind-embed-error[data-v-1f964c65]{color:#fecaca;background:#450a0a;border-color:#7f1d1d}}
|