@shepai/cli 1.180.0 → 1.181.0
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.
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +32 -32
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +33 -33
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +33 -33
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
- package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/features/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1925bef0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4ee8be85._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e265da61._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0277d3b5._.js +1 -1
- package/web/.next/server/chunks/ssr/_0277d3b5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_8caadb9a._.js → _5bb39227._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_8caadb9a._.js.map → _5bb39227._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_d44d091a._.js → _655cc4fd._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_d44d091a._.js.map → _655cc4fd._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_946a7fc6._.js +1 -1
- package/web/.next/server/chunks/ssr/_946a7fc6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_63fc4647._.js → _da028026._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_63fc4647._.js.map → _da028026._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_e5753970._.js +3 -0
- package/web/.next/server/chunks/ssr/{_b8e8b690._.js.map → _e5753970._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_eff1b518._.js +1 -1
- package/web/.next/server/chunks/ssr/_eff1b518._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f227429a._.js +1 -1
- package/web/.next/server/chunks/ssr/_f227429a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js +1 -1
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
- package/web/.next/server/chunks/ssr/{_36489f2b._.js → _fbf4db9c._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_36489f2b._.js.map → _fbf4db9c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +3 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +54 -54
- package/web/.next/static/chunks/{f6d47ff35d612852.js → 15951ad67a810e2c.js} +3 -3
- package/web/.next/static/chunks/25bbd99fa3dcc0b2.js +1 -0
- package/web/.next/static/chunks/{f28aef9cf5107c4b.js → 443c0073e58878d8.js} +1 -1
- package/web/.next/static/chunks/{7849c6797be7c6ca.js → 53f9385d4a447ad4.js} +2 -2
- package/web/.next/static/chunks/{7bc7028587490fff.js → 5635fe220632fced.js} +1 -1
- package/web/.next/static/chunks/{26e2ca76ab6c38b4.js → 6ad23a3ac827b65b.js} +1 -1
- package/web/.next/static/chunks/{be89c20c257247ad.js → 7a9d8b705c0f8d2d.js} +1 -1
- package/web/.next/static/chunks/{e2f9e224d1fa1faa.js → ae94e98b7163890b.js} +1 -1
- package/web/.next/static/chunks/{e7da54dde18e7fb2.js → b40755bc75789277.js} +1 -1
- package/web/.next/static/chunks/{8746807722de67a8.js → b6ddc3e5f64bef7f.js} +1 -1
- package/web/.next/static/chunks/{c0bd3ffcf94d1845.js → be165be5db7a6054.js} +1 -1
- package/web/.next/static/chunks/d7310881615cb55b.js +1 -0
- package/web/.next/static/chunks/{893a2a76546c66a7.js → d8e96baa3feb79cb.js} +1 -1
- package/web/.next/static/chunks/{dfdcccf73de56960.js → e11508a76f5fca98.js} +1 -1
- package/web/.next/static/chunks/{a1098522326428d1.js → e65f14d14ad46a32.js} +1 -1
- package/web/.next/static/chunks/{490667b2a9bb58e2.js → fe29d30a75e697ed.js} +1 -1
- package/web/.next/server/chunks/ssr/_b8e8b690._.js +0 -3
- package/web/.next/static/chunks/1bc12075020723ed.js +0 -1
- package/web/.next/static/chunks/1fa1574b87bd2eb1.js +0 -1
- /package/web/.next/static/{GQFJf3UCD4D5C4NCn8eXl → _PzlF7w3QzhaBsMnhT75_}/_buildManifest.js +0 -0
- /package/web/.next/static/{GQFJf3UCD4D5C4NCn8eXl → _PzlF7w3QzhaBsMnhT75_}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{GQFJf3UCD4D5C4NCn8eXl → _PzlF7w3QzhaBsMnhT75_}/_ssgManifest.js +0 -0
package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[228,a=>{"use strict";var b=a.i(12656);a.i(78454);var c=a.i(24255),d=a.i(2824),e=a.i(58339),f=a.i(13126),g=a.i(3195);function h({skill:a,onClose:h}){return(0,b.jsx)(c.BaseDrawer,{open:null!==a,onClose:h,size:"sm",modal:!0,"data-testid":"skill-detail-drawer",header:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.DrawerTitle,{children:a.displayName}),(0,b.jsx)(d.DrawerDescription,{children:a.name})]}):void 0,children:a?(0,b.jsxs)("div",{className:"px-4 pb-4",children:[(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)(e.Badge,{variant:"project"===a.source?"secondary":"outline",children:"project"===a.source?"Project":"Global"}),(0,b.jsx)(e.Badge,{variant:"outline",children:a.category}),a.context?(0,b.jsx)(e.Badge,{variant:"outline",children:a.context}):null]}),a.allowedTools?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Allowed Tools"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1 text-sm",children:a.allowedTools})]})]}):null,a.resources.length>0?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Resources"}),(0,b.jsx)("ul",{className:"mt-2 space-y-1.5",children:a.resources.map(a=>(0,b.jsxs)("li",{className:"text-muted-foreground flex items-center gap-2 text-sm",children:[(0,b.jsx)(g.FolderOpen,{className:"size-3.5 shrink-0"}),(0,b.jsxs)("span",{children:[a.name,"/ — ",a.fileCount," ",1===a.fileCount?"file":"files"]})]},a.name))})]})]}):null,a.body?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Separator,{className:"my-4"}),(0,b.jsx)("pre",{className:"text-muted-foreground text-sm leading-relaxed whitespace-pre-wrap",children:a.body})]}):null]}):null})}a.s(["SkillDetailDrawer",()=>h])},74468,a=>{"use strict";var b=a.i(12656),c=a.i(96960),d=a.i(31378),e=a.i(67424),f=a.i(90920),g=a.i(18948);a.i(55135);var h=a.i(75550);a.i(38702);var i=a.i(16223),j=a.i(84117),k=a.i(58339),l=a.i(3195);function m({skill:a,onSelect:c}){return(0,b.jsxs)(j.Card,{className:"hover:border-primary/50 cursor-pointer transition-colors",role:"button",tabIndex:0,onClick:()=>c(a),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),c(a))},"data-testid":`skill-card-${a.name}`,children:[(0,b.jsxs)(j.CardHeader,{className:"pb-3",children:[(0,b.jsx)(j.CardTitle,{className:"text-base",children:a.displayName}),(0,b.jsx)("p",{className:"text-muted-foreground font-mono text-xs",children:a.name})]}),(0,b.jsxs)(j.CardContent,{className:"space-y-3",children:[(0,b.jsx)("p",{className:"text-muted-foreground line-clamp-2 text-sm",children:a.description}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)(k.Badge,{variant:"project"===a.source?"secondary":"outline",children:"project"===a.source?"Project":"Global"}),a.context?(0,b.jsx)(k.Badge,{variant:"outline",children:a.context}):null,a.allowedTools?(0,b.jsx)(k.Badge,{variant:"outline",children:"Tools"}):null,a.resources.length>0?(0,b.jsxs)("span",{className:"text-muted-foreground inline-flex items-center gap-1 text-xs",children:[(0,b.jsx)(l.FolderOpen,{className:"size-3"}),a.resources.length," ",1===a.resources.length?"resource":"resources"]}):null]})]})]})}let n=["Workflow","Code Generation","Analysis","Reference"];function o({skills:a,onSkillSelect:c}){let d=function(a){let b=new Map;for(let c of a){let a=b.get(c.category)??[];a.push(c),b.set(c.category,a)}return b}(a);return(0,b.jsx)("div",{className:"space-y-8",children:n.map(a=>{let e=d.get(a);return e&&0!==e.length?(0,b.jsxs)("section",{children:[(0,b.jsxs)("h2",{className:"mb-4 text-lg font-semibold",children:[a," ",(0,b.jsxs)("span",{className:"text-muted-foreground text-sm font-normal",children:["(",e.length,")"]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",children:e.map(a=>(0,b.jsx)(m,{skill:a,onSelect:c},a.name))})]},a):null})})}let p=[{label:"All",value:null},{label:"Workflow",value:"Workflow"},{label:"Code Generation",value:"Code Generation"},{label:"Analysis",value:"Analysis"},{label:"Reference",value:"Reference"}];function q({activeCategory:a,onCategoryChange:c,counts:d}){return(0,b.jsx)("div",{className:"flex flex-wrap gap-2",role:"group","aria-label":"Filter by category",children:p.map(({label:e,value:f})=>(0,b.jsxs)(g.Button,{variant:a===f?"default":"outline",size:"sm",onClick:()=>c(f),children:[e,d&&f?(0,b.jsxs)("span",{className:"ms-1 text-xs opacity-70",children:["(",d[f],")"]}):null]},e))})}var r=a.i(228),s=a.i(13126),t=a.i(69845),u=a.i(67837),v=a.i(2807),w=a.i(52313),x=a.i(25674);let y=(0,x.createServerReference)("401fdd7f63c064d184819ef5a976c11d4e6de36e2b",x.callServer,void 0,x.findSourceMapURL,"removeInjectedSkill");var z=a.i(45670),A=a.i(584),B=a.i(41305);let C=(0,x.createServerReference)("40a042416bf5ac310bf4a5f0ccf8a28eaba63e7fe0",x.callServer,void 0,x.findSourceMapURL,"addInjectedSkill");function D({open:a,onOpenChange:d,onAdded:e,discoveredSkills:h,existingSkillNames:i}){let[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(""),[p,q]=(0,c.useState)(""),r=h.filter(a=>!i.includes(a.name)),s=async a=>{k(!0);let b=await C({name:a.name,type:"local",source:`.claude/skills/${a.name}`});(k(!1),b.success)?(w.toast.success(`Added "${a.name}" to feature skills`),e()):w.toast.error(b.error??"Failed to add skill")},t=async()=>{if(!l.trim()||!n.trim())return void w.toast.error("Name and source are required");k(!0);let a=await C({name:l.trim(),type:"remote",source:n.trim(),...p.trim()&&{remoteSkillName:p.trim()}});(k(!1),a.success)?(w.toast.success(`Added "${l.trim()}" to feature skills`),m(""),o(""),q(""),e()):w.toast.error(a.error??"Failed to add skill")};return(0,b.jsx)(z.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(z.DialogContent,{className:"sm:max-w-md","data-testid":"add-skill-dialog",children:[(0,b.jsx)(z.DialogHeader,{children:(0,b.jsx)(z.DialogTitle,{children:"Add Skill to Features"})}),(0,b.jsxs)(B.Tabs,{defaultValue:"local",children:[(0,b.jsxs)(B.TabsList,{className:"w-full",children:[(0,b.jsx)(B.TabsTrigger,{value:"local",className:"flex-1",children:"Local"}),(0,b.jsx)(B.TabsTrigger,{value:"remote",className:"flex-1",children:"Remote"})]}),(0,b.jsx)(B.TabsContent,{value:"local",className:"mt-4",children:0===r.length?(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"All discovered skills are already configured."}):(0,b.jsx)("div",{className:"flex max-h-60 flex-col gap-2 overflow-y-auto",children:r.map(a=>(0,b.jsxs)("button",{type:"button",className:"hover:bg-accent flex flex-col gap-0.5 rounded-md border p-3 text-left transition-colors",onClick:()=>s(a),disabled:j,"data-testid":`add-local-skill-${a.name}`,children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.displayName}),(0,b.jsx)("span",{className:"text-muted-foreground line-clamp-1 text-xs",children:a.description})]},a.name))})}),(0,b.jsx)(B.TabsContent,{value:"remote",className:"mt-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A.Label,{htmlFor:"remote-name",children:"Name"}),(0,b.jsx)(f.Input,{id:"remote-name",placeholder:"e.g. remotion-best-practices",value:l,onChange:a=>m(a.target.value),"data-testid":"remote-skill-name"})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A.Label,{htmlFor:"remote-source",children:"Source (npm package or URL)"}),(0,b.jsx)(f.Input,{id:"remote-source",placeholder:"e.g. @anthropic/remotion-skills",value:n,onChange:a=>o(a.target.value),"data-testid":"remote-skill-source"})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A.Label,{htmlFor:"remote-skill-name",children:"Skill Name (optional)"}),(0,b.jsx)(f.Input,{id:"remote-skill-name",placeholder:"e.g. remotion-best-practices",value:p,onChange:a=>q(a.target.value),"data-testid":"remote-skill-skill-name"})]}),(0,b.jsx)(z.DialogFooter,{children:(0,b.jsx)(g.Button,{onClick:t,disabled:j||!l.trim()||!n.trim(),"data-testid":"add-remote-skill-submit",children:"Add Remote Skill"})})]})})]})]})})}function E({config:a,discoveredSkills:d}){let e=(0,t.useRouter)(),[f,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(null),k=(0,c.useMemo)(()=>{let a=new Map;for(let b of d)a.set(b.name,b.description);return a},[d]),l=async a=>{j(a);let b=await y(a);(j(null),b.success)?(w.toast.success(`Removed "${a}" from feature skills`),e.refresh()):w.toast.error(b.error??"Failed to remove skill")};return(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-base font-semibold",children:"Feature Skills"}),(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"Curated skills included in new feature worktrees to guide the agent"})]}),a.skills.length>0?(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-3",children:a.skills.map(a=>(0,b.jsx)(F,{skill:a,description:k.get(a.name),onRemove:()=>l(a.name),isRemoving:i===a.name},a.name))}):(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"No skills configured. Add skills to guide the agent when working on new features."}),(0,b.jsx)("div",{children:(0,b.jsxs)(g.Button,{variant:"outline",size:"sm",onClick:()=>h(!0),"data-testid":"add-injected-skill-button",children:[(0,b.jsx)(u.Plus,{className:"mr-1.5 size-4"}),"Add Skill"]})}),(0,b.jsx)(D,{open:f,onOpenChange:h,onAdded:()=>{h(!1),e.refresh()},discoveredSkills:d,existingSkillNames:a.skills.map(a=>a.name)})]})}function F({skill:a,description:c,onRemove:d,isRemoving:e}){return(0,b.jsxs)(j.Card,{"data-testid":`injected-skill-${a.name}`,children:[(0,b.jsxs)(j.CardHeader,{className:"flex flex-row items-start justify-between gap-2 pb-2",children:[(0,b.jsx)("div",{className:"min-w-0",children:(0,b.jsx)(j.CardTitle,{className:"truncate text-sm",children:a.name})}),(0,b.jsx)(g.Button,{variant:"ghost",size:"icon-sm",className:"shrink-0",onClick:d,disabled:e,"aria-label":`Remove ${a.name}`,"data-testid":`remove-injected-skill-${a.name}`,children:(0,b.jsx)(v.X,{className:"size-4"})})]}),(0,b.jsxs)(j.CardContent,{className:"space-y-2 pt-0",children:[c?(0,b.jsx)("p",{className:"text-muted-foreground line-clamp-2 text-xs",children:c}):null,(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(k.Badge,{variant:"local"===a.type?"secondary":"outline",className:"text-xs",children:"local"===a.type?"Local":"Remote"}),(0,b.jsx)("span",{className:"text-muted-foreground max-w-37.5 truncate text-xs",children:a.source})]})]})]})}function G({skills:a,injectionConfig:j}){let[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(null),[p,t]=(0,c.useState)(null),u=(0,c.useMemo)(()=>(function(a){let b={Workflow:0,"Code Generation":0,Analysis:0,Reference:0};for(let c of a)b[c.category]++;return b})(a),[a]),v=(0,c.useMemo)(()=>{let b=k.toLowerCase();return a.filter(a=>{if(m&&a.category!==m)return!1;if(b){let c=a.name.toLowerCase().includes(b),d=a.description.toLowerCase().includes(b);if(!c&&!d)return!1}return!0})},[a,k,m]);return 0===a.length?(0,b.jsxs)("div",{className:"flex flex-col gap-6 p-6",children:[(0,b.jsx)(h.PageHeader,{title:"Skills",description:"Claude Code skills available to this project"}),(0,b.jsx)(E,{config:j,discoveredSkills:a}),(0,b.jsx)(s.Separator,{}),(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(e.Puzzle,{className:"size-10"}),title:"No skills found",description:"No Claude Code skills are installed. Add skills to .claude/skills/ to get started."})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-6 p-6",children:[(0,b.jsx)(h.PageHeader,{title:"Skills",description:"Claude Code skills available to this project"}),(0,b.jsx)(E,{config:j,discoveredSkills:a}),(0,b.jsx)(s.Separator,{}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(d.Search,{className:"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2"}),(0,b.jsx)(f.Input,{placeholder:"Search skills...",value:k,onChange:a=>l(a.target.value),className:"ps-9"})]}),(0,b.jsx)(q,{activeCategory:m,onCategoryChange:n,counts:u}),v.length>0?(0,b.jsx)(o,{skills:v,onSkillSelect:t}):(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(d.Search,{className:"size-10"}),title:"No matching skills",description:"No skills match your current search and filter criteria.",action:(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>{l(""),n(null)},children:"Clear filters"})}),(0,b.jsx)(r.SkillDetailDrawer,{skill:p,onClose:()=>t(null)})]})}a.s(["SkillsPageClient",()=>G],74468)}];
|
|
1
|
+
module.exports=[228,a=>{"use strict";var b=a.i(12656);a.i(78454);var c=a.i(24255),d=a.i(2824),e=a.i(58339),f=a.i(13126),g=a.i(3195);function h({skill:a,onClose:h}){return(0,b.jsx)(c.BaseDrawer,{open:null!==a,onClose:h,size:"sm",modal:!0,"data-testid":"skill-detail-drawer",header:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.DrawerTitle,{children:a.displayName}),(0,b.jsx)(d.DrawerDescription,{children:a.name})]}):void 0,children:a?(0,b.jsxs)("div",{className:"px-4 pb-4",children:[(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)(e.Badge,{variant:"project"===a.source?"secondary":"outline",children:"project"===a.source?"Project":"Global"}),(0,b.jsx)(e.Badge,{variant:"outline",children:a.category}),a.context?(0,b.jsx)(e.Badge,{variant:"outline",children:a.context}):null]}),a.allowedTools?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Allowed Tools"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1 text-sm",children:a.allowedTools})]})]}):null,a.resources.length>0?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Resources"}),(0,b.jsx)("ul",{className:"mt-2 space-y-1.5",children:a.resources.map(a=>(0,b.jsxs)("li",{className:"text-muted-foreground flex items-center gap-2 text-sm",children:[(0,b.jsx)(g.FolderOpen,{className:"size-3.5 shrink-0"}),(0,b.jsxs)("span",{children:[a.name,"/ — ",a.fileCount," ",1===a.fileCount?"file":"files"]})]},a.name))})]})]}):null,a.body?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Separator,{className:"my-4"}),(0,b.jsx)("pre",{className:"text-muted-foreground text-sm leading-relaxed whitespace-pre-wrap",children:a.body})]}):null]}):null})}a.s(["SkillDetailDrawer",()=>h])},74468,a=>{"use strict";var b=a.i(12656),c=a.i(96960),d=a.i(31378),e=a.i(67424),f=a.i(90920),g=a.i(18948);a.i(55135);var h=a.i(75550);a.i(38702);var i=a.i(16223),j=a.i(84117),k=a.i(58339),l=a.i(3195);function m({skill:a,onSelect:c}){return(0,b.jsxs)(j.Card,{className:"hover:border-primary/50 cursor-pointer transition-colors",role:"button",tabIndex:0,onClick:()=>c(a),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),c(a))},"data-testid":`skill-card-${a.name}`,children:[(0,b.jsxs)(j.CardHeader,{className:"pb-3",children:[(0,b.jsx)(j.CardTitle,{className:"text-base",children:a.displayName}),(0,b.jsx)("p",{className:"text-muted-foreground font-mono text-xs",children:a.name})]}),(0,b.jsxs)(j.CardContent,{className:"space-y-3",children:[(0,b.jsx)("p",{className:"text-muted-foreground line-clamp-2 text-sm",children:a.description}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)(k.Badge,{variant:"project"===a.source?"secondary":"outline",children:"project"===a.source?"Project":"Global"}),a.context?(0,b.jsx)(k.Badge,{variant:"outline",children:a.context}):null,a.allowedTools?(0,b.jsx)(k.Badge,{variant:"outline",children:"Tools"}):null,a.resources.length>0?(0,b.jsxs)("span",{className:"text-muted-foreground inline-flex items-center gap-1 text-xs",children:[(0,b.jsx)(l.FolderOpen,{className:"size-3"}),a.resources.length," ",1===a.resources.length?"resource":"resources"]}):null]})]})]})}let n=["Workflow","Code Generation","Analysis","Reference"];function o({skills:a,onSkillSelect:c}){let d=function(a){let b=new Map;for(let c of a){let a=b.get(c.category)??[];a.push(c),b.set(c.category,a)}return b}(a);return(0,b.jsx)("div",{className:"space-y-8",children:n.map(a=>{let e=d.get(a);return e&&0!==e.length?(0,b.jsxs)("section",{children:[(0,b.jsxs)("h2",{className:"mb-4 text-lg font-semibold",children:[a," ",(0,b.jsxs)("span",{className:"text-muted-foreground text-sm font-normal",children:["(",e.length,")"]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",children:e.map(a=>(0,b.jsx)(m,{skill:a,onSelect:c},a.name))})]},a):null})})}let p=[{label:"All",value:null},{label:"Workflow",value:"Workflow"},{label:"Code Generation",value:"Code Generation"},{label:"Analysis",value:"Analysis"},{label:"Reference",value:"Reference"}];function q({activeCategory:a,onCategoryChange:c,counts:d}){return(0,b.jsx)("div",{className:"flex flex-wrap gap-2",role:"group","aria-label":"Filter by category",children:p.map(({label:e,value:f})=>(0,b.jsxs)(g.Button,{variant:a===f?"default":"outline",size:"sm",onClick:()=>c(f),children:[e,d&&f?(0,b.jsxs)("span",{className:"ms-1 text-xs opacity-70",children:["(",d[f],")"]}):null]},e))})}var r=a.i(228),s=a.i(13126),t=a.i(69845),u=a.i(67837),v=a.i(2807),w=a.i(52313),x=a.i(25674);let y=(0,x.createServerReference)("40e2ea3c89625f89f59266a81d174098c8c156c94e",x.callServer,void 0,x.findSourceMapURL,"removeInjectedSkill");var z=a.i(45670),A=a.i(584),B=a.i(41305);let C=(0,x.createServerReference)("40e3be46c3dabbd695830d6a8d62290808482376e2",x.callServer,void 0,x.findSourceMapURL,"addInjectedSkill");function D({open:a,onOpenChange:d,onAdded:e,discoveredSkills:h,existingSkillNames:i}){let[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(""),[p,q]=(0,c.useState)(""),r=h.filter(a=>!i.includes(a.name)),s=async a=>{k(!0);let b=await C({name:a.name,type:"local",source:`.claude/skills/${a.name}`});(k(!1),b.success)?(w.toast.success(`Added "${a.name}" to feature skills`),e()):w.toast.error(b.error??"Failed to add skill")},t=async()=>{if(!l.trim()||!n.trim())return void w.toast.error("Name and source are required");k(!0);let a=await C({name:l.trim(),type:"remote",source:n.trim(),...p.trim()&&{remoteSkillName:p.trim()}});(k(!1),a.success)?(w.toast.success(`Added "${l.trim()}" to feature skills`),m(""),o(""),q(""),e()):w.toast.error(a.error??"Failed to add skill")};return(0,b.jsx)(z.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(z.DialogContent,{className:"sm:max-w-md","data-testid":"add-skill-dialog",children:[(0,b.jsx)(z.DialogHeader,{children:(0,b.jsx)(z.DialogTitle,{children:"Add Skill to Features"})}),(0,b.jsxs)(B.Tabs,{defaultValue:"local",children:[(0,b.jsxs)(B.TabsList,{className:"w-full",children:[(0,b.jsx)(B.TabsTrigger,{value:"local",className:"flex-1",children:"Local"}),(0,b.jsx)(B.TabsTrigger,{value:"remote",className:"flex-1",children:"Remote"})]}),(0,b.jsx)(B.TabsContent,{value:"local",className:"mt-4",children:0===r.length?(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"All discovered skills are already configured."}):(0,b.jsx)("div",{className:"flex max-h-60 flex-col gap-2 overflow-y-auto",children:r.map(a=>(0,b.jsxs)("button",{type:"button",className:"hover:bg-accent flex flex-col gap-0.5 rounded-md border p-3 text-left transition-colors",onClick:()=>s(a),disabled:j,"data-testid":`add-local-skill-${a.name}`,children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.displayName}),(0,b.jsx)("span",{className:"text-muted-foreground line-clamp-1 text-xs",children:a.description})]},a.name))})}),(0,b.jsx)(B.TabsContent,{value:"remote",className:"mt-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A.Label,{htmlFor:"remote-name",children:"Name"}),(0,b.jsx)(f.Input,{id:"remote-name",placeholder:"e.g. remotion-best-practices",value:l,onChange:a=>m(a.target.value),"data-testid":"remote-skill-name"})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A.Label,{htmlFor:"remote-source",children:"Source (npm package or URL)"}),(0,b.jsx)(f.Input,{id:"remote-source",placeholder:"e.g. @anthropic/remotion-skills",value:n,onChange:a=>o(a.target.value),"data-testid":"remote-skill-source"})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(A.Label,{htmlFor:"remote-skill-name",children:"Skill Name (optional)"}),(0,b.jsx)(f.Input,{id:"remote-skill-name",placeholder:"e.g. remotion-best-practices",value:p,onChange:a=>q(a.target.value),"data-testid":"remote-skill-skill-name"})]}),(0,b.jsx)(z.DialogFooter,{children:(0,b.jsx)(g.Button,{onClick:t,disabled:j||!l.trim()||!n.trim(),"data-testid":"add-remote-skill-submit",children:"Add Remote Skill"})})]})})]})]})})}function E({config:a,discoveredSkills:d}){let e=(0,t.useRouter)(),[f,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(null),k=(0,c.useMemo)(()=>{let a=new Map;for(let b of d)a.set(b.name,b.description);return a},[d]),l=async a=>{j(a);let b=await y(a);(j(null),b.success)?(w.toast.success(`Removed "${a}" from feature skills`),e.refresh()):w.toast.error(b.error??"Failed to remove skill")};return(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-base font-semibold",children:"Feature Skills"}),(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"Curated skills included in new feature worktrees to guide the agent"})]}),a.skills.length>0?(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-3",children:a.skills.map(a=>(0,b.jsx)(F,{skill:a,description:k.get(a.name),onRemove:()=>l(a.name),isRemoving:i===a.name},a.name))}):(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:"No skills configured. Add skills to guide the agent when working on new features."}),(0,b.jsx)("div",{children:(0,b.jsxs)(g.Button,{variant:"outline",size:"sm",onClick:()=>h(!0),"data-testid":"add-injected-skill-button",children:[(0,b.jsx)(u.Plus,{className:"mr-1.5 size-4"}),"Add Skill"]})}),(0,b.jsx)(D,{open:f,onOpenChange:h,onAdded:()=>{h(!1),e.refresh()},discoveredSkills:d,existingSkillNames:a.skills.map(a=>a.name)})]})}function F({skill:a,description:c,onRemove:d,isRemoving:e}){return(0,b.jsxs)(j.Card,{"data-testid":`injected-skill-${a.name}`,children:[(0,b.jsxs)(j.CardHeader,{className:"flex flex-row items-start justify-between gap-2 pb-2",children:[(0,b.jsx)("div",{className:"min-w-0",children:(0,b.jsx)(j.CardTitle,{className:"truncate text-sm",children:a.name})}),(0,b.jsx)(g.Button,{variant:"ghost",size:"icon-sm",className:"shrink-0",onClick:d,disabled:e,"aria-label":`Remove ${a.name}`,"data-testid":`remove-injected-skill-${a.name}`,children:(0,b.jsx)(v.X,{className:"size-4"})})]}),(0,b.jsxs)(j.CardContent,{className:"space-y-2 pt-0",children:[c?(0,b.jsx)("p",{className:"text-muted-foreground line-clamp-2 text-xs",children:c}):null,(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(k.Badge,{variant:"local"===a.type?"secondary":"outline",className:"text-xs",children:"local"===a.type?"Local":"Remote"}),(0,b.jsx)("span",{className:"text-muted-foreground max-w-37.5 truncate text-xs",children:a.source})]})]})]})}function G({skills:a,injectionConfig:j}){let[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(null),[p,t]=(0,c.useState)(null),u=(0,c.useMemo)(()=>(function(a){let b={Workflow:0,"Code Generation":0,Analysis:0,Reference:0};for(let c of a)b[c.category]++;return b})(a),[a]),v=(0,c.useMemo)(()=>{let b=k.toLowerCase();return a.filter(a=>{if(m&&a.category!==m)return!1;if(b){let c=a.name.toLowerCase().includes(b),d=a.description.toLowerCase().includes(b);if(!c&&!d)return!1}return!0})},[a,k,m]);return 0===a.length?(0,b.jsxs)("div",{className:"flex flex-col gap-6 p-6",children:[(0,b.jsx)(h.PageHeader,{title:"Skills",description:"Claude Code skills available to this project"}),(0,b.jsx)(E,{config:j,discoveredSkills:a}),(0,b.jsx)(s.Separator,{}),(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(e.Puzzle,{className:"size-10"}),title:"No skills found",description:"No Claude Code skills are installed. Add skills to .claude/skills/ to get started."})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-6 p-6",children:[(0,b.jsx)(h.PageHeader,{title:"Skills",description:"Claude Code skills available to this project"}),(0,b.jsx)(E,{config:j,discoveredSkills:a}),(0,b.jsx)(s.Separator,{}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(d.Search,{className:"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2"}),(0,b.jsx)(f.Input,{placeholder:"Search skills...",value:k,onChange:a=>l(a.target.value),className:"ps-9"})]}),(0,b.jsx)(q,{activeCategory:m,onCategoryChange:n,counts:u}),v.length>0?(0,b.jsx)(o,{skills:v,onSkillSelect:t}):(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(d.Search,{className:"size-10"}),title:"No matching skills",description:"No skills match your current search and filter criteria.",action:(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>{l(""),n(null)},children:"Clear filters"})}),(0,b.jsx)(r.SkillDetailDrawer,{skill:p,onClose:()=>t(null)})]})}a.s(["SkillsPageClient",()=>G],74468)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_presentation_web_components_features_skills_8a174cac._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/components/features/skills/skill-detail-drawer.tsx","../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-card.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-list.tsx","../../../../../../../src/presentation/web/components/features/skills/category-filter.tsx","../../../../../../../src/presentation/web/components/features/skills/auto-injected-skills-section.tsx","../../../../../../../src/presentation/web/app/actions/data%3Aa13104%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/features/skills/add-skill-dialog.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ab0d654%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Separator } from '@/components/ui/separator';\nimport { FolderOpen } from 'lucide-react';\nimport type { SkillData } from '@/lib/skills';\n\nexport interface SkillDetailDrawerProps {\n skill: SkillData | null;\n onClose: () => void;\n}\n\nexport function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {\n return (\n <BaseDrawer\n open={skill !== null}\n onClose={onClose}\n size=\"sm\"\n modal\n data-testid=\"skill-detail-drawer\"\n header={\n skill ? (\n <>\n <DrawerTitle>{skill.displayName}</DrawerTitle>\n <DrawerDescription>{skill.name}</DrawerDescription>\n </>\n ) : undefined\n }\n >\n {skill ? (\n <div className=\"px-4 pb-4\">\n {/* Description */}\n <p className=\"text-muted-foreground text-sm\">{skill.description}</p>\n\n {/* Badges */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n <Badge variant=\"outline\">{skill.category}</Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n </div>\n\n {/* Allowed Tools */}\n {skill.allowedTools ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Allowed Tools</h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">{skill.allowedTools}</p>\n </div>\n </>\n ) : null}\n\n {/* Resources */}\n {skill.resources.length > 0 ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Resources</h3>\n <ul className=\"mt-2 space-y-1.5\">\n {skill.resources.map((resource) => (\n <li\n key={resource.name}\n className=\"text-muted-foreground flex items-center gap-2 text-sm\"\n >\n <FolderOpen className=\"size-3.5 shrink-0\" />\n <span>\n {resource.name}/ — {resource.fileCount}{' '}\n {resource.fileCount === 1 ? 'file' : 'files'}\n </span>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : null}\n\n {/* Body */}\n {skill.body ? (\n <>\n <Separator className=\"my-4\" />\n <pre className=\"text-muted-foreground text-sm leading-relaxed whitespace-pre-wrap\">\n {skill.body}\n </pre>\n </>\n ) : null}\n </div>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { useState, useMemo } from 'react';\nimport { Search, Puzzle } from 'lucide-react';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { SkillList } from './skill-list';\nimport { CategoryFilter } from './category-filter';\nimport { SkillDetailDrawer } from './skill-detail-drawer';\nimport type { SkillInjectionConfig } from '@shepai/core/domain/generated/output';\nimport { Separator } from '@/components/ui/separator';\nimport { AutoInjectedSkillsSection } from './auto-injected-skills-section';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nexport interface SkillsPageClientProps {\n skills: SkillData[];\n injectionConfig: SkillInjectionConfig;\n}\n\nfunction computeCategoryCounts(skills: SkillData[]): Record<SkillCategory, number> {\n const counts: Record<SkillCategory, number> = {\n Workflow: 0,\n 'Code Generation': 0,\n Analysis: 0,\n Reference: 0,\n };\n for (const skill of skills) {\n counts[skill.category]++;\n }\n return counts;\n}\n\nexport function SkillsPageClient({ skills, injectionConfig }: SkillsPageClientProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<SkillCategory | null>(null);\n const [selectedSkill, setSelectedSkill] = useState<SkillData | null>(null);\n\n const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);\n\n const filteredSkills = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return skills.filter((skill) => {\n if (activeCategory && skill.category !== activeCategory) return false;\n if (query) {\n const matchesName = skill.name.toLowerCase().includes(query);\n const matchesDescription = skill.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [skills, searchQuery, activeCategory]);\n\n const clearFilters = () => {\n setSearchQuery('');\n setActiveCategory(null);\n };\n\n // No skills installed at all\n if (skills.length === 0) {\n return (\n <div className=\"flex flex-col gap-6 p-6\">\n <PageHeader title=\"Skills\" description=\"Claude Code skills available to this project\" />\n <AutoInjectedSkillsSection config={injectionConfig} discoveredSkills={skills} />\n <Separator />\n <EmptyState\n icon={<Puzzle className=\"size-10\" />}\n title=\"No skills found\"\n description=\"No Claude Code skills are installed. Add skills to .claude/skills/ to get started.\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-6 p-6\">\n <PageHeader title=\"Skills\" description=\"Claude Code skills available to this project\" />\n\n {/* Feature Skills */}\n <AutoInjectedSkillsSection config={injectionConfig} discoveredSkills={skills} />\n <Separator />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder=\"Search skills...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n />\n </div>\n\n {/* Category Filter */}\n <CategoryFilter\n activeCategory={activeCategory}\n onCategoryChange={setActiveCategory}\n counts={categoryCounts}\n />\n\n {/* Skill List or Empty Filter State */}\n {filteredSkills.length > 0 ? (\n <SkillList skills={filteredSkills} onSkillSelect={setSelectedSkill} />\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title=\"No matching skills\"\n description=\"No skills match your current search and filter criteria.\"\n action={\n <Button variant=\"outline\" onClick={clearFilters}>\n Clear filters\n </Button>\n }\n />\n )}\n\n {/* Skill Detail Drawer */}\n <SkillDetailDrawer skill={selectedSkill} onClose={() => setSelectedSkill(null)} />\n </div>\n );\n}\n","import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport type { SkillData } from '@/lib/skills';\nimport { FolderOpen } from 'lucide-react';\n\nexport interface SkillCardProps {\n skill: SkillData;\n onSelect: (skill: SkillData) => void;\n}\n\nexport function SkillCard({ skill, onSelect }: SkillCardProps) {\n return (\n <Card\n className=\"hover:border-primary/50 cursor-pointer transition-colors\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(skill)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(skill);\n }\n }}\n data-testid={`skill-card-${skill.name}`}\n >\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base\">{skill.displayName}</CardTitle>\n <p className=\"text-muted-foreground font-mono text-xs\">{skill.name}</p>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-muted-foreground line-clamp-2 text-sm\">{skill.description}</p>\n <div className=\"flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n {skill.allowedTools ? <Badge variant=\"outline\">Tools</Badge> : null}\n {skill.resources.length > 0 ? (\n <span className=\"text-muted-foreground inline-flex items-center gap-1 text-xs\">\n <FolderOpen className=\"size-3\" />\n {skill.resources.length} {skill.resources.length === 1 ? 'resource' : 'resources'}\n </span>\n ) : null}\n </div>\n </CardContent>\n </Card>\n );\n}\n","import { SkillCard } from './skill-card';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nconst CATEGORY_ORDER: SkillCategory[] = ['Workflow', 'Code Generation', 'Analysis', 'Reference'];\n\nexport interface SkillListProps {\n skills: SkillData[];\n onSkillSelect: (skill: SkillData) => void;\n}\n\nfunction groupByCategory(skills: SkillData[]): Map<SkillCategory, SkillData[]> {\n const groups = new Map<SkillCategory, SkillData[]>();\n for (const skill of skills) {\n const group = groups.get(skill.category) ?? [];\n group.push(skill);\n groups.set(skill.category, group);\n }\n return groups;\n}\n\nexport function SkillList({ skills, onSkillSelect }: SkillListProps) {\n const groups = groupByCategory(skills);\n\n return (\n <div className=\"space-y-8\">\n {CATEGORY_ORDER.map((category) => {\n const categorySkills = groups.get(category);\n if (!categorySkills || categorySkills.length === 0) return null;\n\n return (\n <section key={category}>\n <h2 className=\"mb-4 text-lg font-semibold\">\n {category}{' '}\n <span className=\"text-muted-foreground text-sm font-normal\">\n ({categorySkills.length})\n </span>\n </h2>\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {categorySkills.map((skill) => (\n <SkillCard key={skill.name} skill={skill} onSelect={onSkillSelect} />\n ))}\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n","import { Button } from '@/components/ui/button';\nimport type { SkillCategory } from '@/lib/skills';\n\nconst CATEGORIES: { label: string; value: SkillCategory | null }[] = [\n { label: 'All', value: null },\n { label: 'Workflow', value: 'Workflow' },\n { label: 'Code Generation', value: 'Code Generation' },\n { label: 'Analysis', value: 'Analysis' },\n { label: 'Reference', value: 'Reference' },\n];\n\nexport interface CategoryFilterProps {\n activeCategory: SkillCategory | null;\n onCategoryChange: (category: SkillCategory | null) => void;\n counts?: Record<SkillCategory, number>;\n}\n\nexport function CategoryFilter({ activeCategory, onCategoryChange, counts }: CategoryFilterProps) {\n return (\n <div className=\"flex flex-wrap gap-2\" role=\"group\" aria-label=\"Filter by category\">\n {CATEGORIES.map(({ label, value }) => (\n <Button\n key={label}\n variant={activeCategory === value ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => onCategoryChange(value)}\n >\n {label}\n {counts && value ? (\n <span className=\"ms-1 text-xs opacity-70\">({counts[value]})</span>\n ) : null}\n </Button>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport { useMemo, useState } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { Plus, X } from 'lucide-react';\nimport { toast } from 'sonner';\nimport type { SkillInjectionConfig, SkillSource } from '@shepai/core/domain/generated/output';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { removeInjectedSkill } from '@/app/actions/remove-injected-skill';\nimport { AddSkillDialog } from './add-skill-dialog';\nimport type { SkillData } from '@/lib/skills';\n\nexport interface AutoInjectedSkillsSectionProps {\n config: SkillInjectionConfig;\n discoveredSkills: SkillData[];\n}\n\nexport function AutoInjectedSkillsSection({\n config,\n discoveredSkills,\n}: AutoInjectedSkillsSectionProps) {\n const router = useRouter();\n const [addDialogOpen, setAddDialogOpen] = useState(false);\n const [removingSkill, setRemovingSkill] = useState<string | null>(null);\n\n const skillDescriptions = useMemo(() => {\n const map = new Map<string, string>();\n for (const s of discoveredSkills) {\n map.set(s.name, s.description);\n }\n return map;\n }, [discoveredSkills]);\n\n const handleRemove = async (skillName: string) => {\n setRemovingSkill(skillName);\n const result = await removeInjectedSkill(skillName);\n setRemovingSkill(null);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to remove skill');\n return;\n }\n toast.success(`Removed \"${skillName}\" from feature skills`);\n router.refresh();\n };\n\n const handleAdded = () => {\n setAddDialogOpen(false);\n router.refresh();\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n <div>\n <h2 className=\"text-base font-semibold\">Feature Skills</h2>\n <p className=\"text-muted-foreground text-sm\">\n Curated skills included in new feature worktrees to guide the agent\n </p>\n </div>\n {config.skills.length > 0 ? (\n <div className=\"grid gap-2 sm:grid-cols-2 lg:grid-cols-3\">\n {config.skills.map((skill) => (\n <InjectedSkillCard\n key={skill.name}\n skill={skill}\n description={skillDescriptions.get(skill.name)}\n onRemove={() => handleRemove(skill.name)}\n isRemoving={removingSkill === skill.name}\n />\n ))}\n </div>\n ) : (\n <p className=\"text-muted-foreground text-sm\">\n No skills configured. Add skills to guide the agent when working on new features.\n </p>\n )}\n <div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setAddDialogOpen(true)}\n data-testid=\"add-injected-skill-button\"\n >\n <Plus className=\"mr-1.5 size-4\" />\n Add Skill\n </Button>\n </div>\n <AddSkillDialog\n open={addDialogOpen}\n onOpenChange={setAddDialogOpen}\n onAdded={handleAdded}\n discoveredSkills={discoveredSkills}\n existingSkillNames={config.skills.map((s) => s.name)}\n />\n </div>\n );\n}\n\nfunction InjectedSkillCard({\n skill,\n description,\n onRemove,\n isRemoving,\n}: {\n skill: SkillSource;\n description?: string;\n onRemove: () => void;\n isRemoving: boolean;\n}) {\n return (\n <Card data-testid={`injected-skill-${skill.name}`}>\n <CardHeader className=\"flex flex-row items-start justify-between gap-2 pb-2\">\n <div className=\"min-w-0\">\n <CardTitle className=\"truncate text-sm\">{skill.name}</CardTitle>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"shrink-0\"\n onClick={onRemove}\n disabled={isRemoving}\n aria-label={`Remove ${skill.name}`}\n data-testid={`remove-injected-skill-${skill.name}`}\n >\n <X className=\"size-4\" />\n </Button>\n </CardHeader>\n <CardContent className=\"space-y-2 pt-0\">\n {description ? (\n <p className=\"text-muted-foreground line-clamp-2 text-xs\">{description}</p>\n ) : null}\n <div className=\"flex items-center gap-1.5\">\n <Badge variant={skill.type === 'local' ? 'secondary' : 'outline'} className=\"text-xs\">\n {skill.type === 'local' ? 'Local' : 'Remote'}\n </Badge>\n <span className=\"text-muted-foreground max-w-37.5 truncate text-xs\">{skill.source}</span>\n </div>\n </CardContent>\n </Card>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"401fdd7f63c064d184819ef5a976c11d4e6de36e2b\":\"removeInjectedSkill\"},\"src/presentation/web/app/actions/remove-injected-skill.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"401fdd7f63c064d184819ef5a976c11d4e6de36e2b\",callServer,void 0,findSourceMapURL,\"removeInjectedSkill\");export{$$RSC_SERVER_ACTION_0 as removeInjectedSkill};","'use client';\n\nimport { useState } from 'react';\nimport { toast } from 'sonner';\nimport type { SkillSourceType } from '@shepai/core/domain/generated/output';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { addInjectedSkill } from '@/app/actions/add-injected-skill';\nimport type { SkillData } from '@/lib/skills';\n\nexport interface AddSkillDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onAdded: () => void;\n discoveredSkills: SkillData[];\n existingSkillNames: string[];\n}\n\nexport function AddSkillDialog({\n open,\n onOpenChange,\n onAdded,\n discoveredSkills,\n existingSkillNames,\n}: AddSkillDialogProps) {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [remoteName, setRemoteName] = useState('');\n const [remoteSource, setRemoteSource] = useState('');\n const [remoteSkillName, setRemoteSkillName] = useState('');\n\n const availableSkills = discoveredSkills.filter((s) => !existingSkillNames.includes(s.name));\n\n const handleAddLocal = async (skill: SkillData) => {\n setIsSubmitting(true);\n const result = await addInjectedSkill({\n name: skill.name,\n type: 'local' as SkillSourceType,\n source: `.claude/skills/${skill.name}`,\n });\n setIsSubmitting(false);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to add skill');\n return;\n }\n toast.success(`Added \"${skill.name}\" to feature skills`);\n onAdded();\n };\n\n const handleAddRemote = async () => {\n if (!remoteName.trim() || !remoteSource.trim()) {\n toast.error('Name and source are required');\n return;\n }\n setIsSubmitting(true);\n const result = await addInjectedSkill({\n name: remoteName.trim(),\n type: 'remote' as SkillSourceType,\n source: remoteSource.trim(),\n ...(remoteSkillName.trim() && { remoteSkillName: remoteSkillName.trim() }),\n });\n setIsSubmitting(false);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to add skill');\n return;\n }\n toast.success(`Added \"${remoteName.trim()}\" to feature skills`);\n setRemoteName('');\n setRemoteSource('');\n setRemoteSkillName('');\n onAdded();\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-md\" data-testid=\"add-skill-dialog\">\n <DialogHeader>\n <DialogTitle>Add Skill to Features</DialogTitle>\n </DialogHeader>\n <Tabs defaultValue=\"local\">\n <TabsList className=\"w-full\">\n <TabsTrigger value=\"local\" className=\"flex-1\">\n Local\n </TabsTrigger>\n <TabsTrigger value=\"remote\" className=\"flex-1\">\n Remote\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"local\" className=\"mt-4\">\n {availableSkills.length === 0 ? (\n <p className=\"text-muted-foreground text-sm\">\n All discovered skills are already configured.\n </p>\n ) : (\n <div className=\"flex max-h-60 flex-col gap-2 overflow-y-auto\">\n {availableSkills.map((skill) => (\n <button\n key={skill.name}\n type=\"button\"\n className=\"hover:bg-accent flex flex-col gap-0.5 rounded-md border p-3 text-left transition-colors\"\n onClick={() => handleAddLocal(skill)}\n disabled={isSubmitting}\n data-testid={`add-local-skill-${skill.name}`}\n >\n <span className=\"text-sm font-medium\">{skill.displayName}</span>\n <span className=\"text-muted-foreground line-clamp-1 text-xs\">\n {skill.description}\n </span>\n </button>\n ))}\n </div>\n )}\n </TabsContent>\n <TabsContent value=\"remote\" className=\"mt-4\">\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"remote-name\">Name</Label>\n <Input\n id=\"remote-name\"\n placeholder=\"e.g. remotion-best-practices\"\n value={remoteName}\n onChange={(e) => setRemoteName(e.target.value)}\n data-testid=\"remote-skill-name\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"remote-source\">Source (npm package or URL)</Label>\n <Input\n id=\"remote-source\"\n placeholder=\"e.g. @anthropic/remotion-skills\"\n value={remoteSource}\n onChange={(e) => setRemoteSource(e.target.value)}\n data-testid=\"remote-skill-source\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"remote-skill-name\">Skill Name (optional)</Label>\n <Input\n id=\"remote-skill-name\"\n placeholder=\"e.g. remotion-best-practices\"\n value={remoteSkillName}\n onChange={(e) => setRemoteSkillName(e.target.value)}\n data-testid=\"remote-skill-skill-name\"\n />\n </div>\n <DialogFooter>\n <Button\n onClick={handleAddRemote}\n disabled={isSubmitting || !remoteName.trim() || !remoteSource.trim()}\n data-testid=\"add-remote-skill-submit\"\n >\n Add Remote Skill\n </Button>\n </DialogFooter>\n </div>\n </TabsContent>\n </Tabs>\n </DialogContent>\n </Dialog>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40a042416bf5ac310bf4a5f0ccf8a28eaba63e7fe0\":\"addInjectedSkill\"},\"src/presentation/web/app/actions/add-injected-skill.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40a042416bf5ac310bf4a5f0ccf8a28eaba63e7fe0\",callServer,void 0,findSourceMapURL,\"addInjectedSkill\");export{$$RSC_SERVER_ACTION_0 as addInjectedSkill};"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/components/features/skills/skill-detail-drawer.tsx","../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-card.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-list.tsx","../../../../../../../src/presentation/web/components/features/skills/category-filter.tsx","../../../../../../../src/presentation/web/components/features/skills/auto-injected-skills-section.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ab6bd01%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/features/skills/add-skill-dialog.tsx","../../../../../../../src/presentation/web/app/actions/data%3Afb71f1%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Separator } from '@/components/ui/separator';\nimport { FolderOpen } from 'lucide-react';\nimport type { SkillData } from '@/lib/skills';\n\nexport interface SkillDetailDrawerProps {\n skill: SkillData | null;\n onClose: () => void;\n}\n\nexport function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {\n return (\n <BaseDrawer\n open={skill !== null}\n onClose={onClose}\n size=\"sm\"\n modal\n data-testid=\"skill-detail-drawer\"\n header={\n skill ? (\n <>\n <DrawerTitle>{skill.displayName}</DrawerTitle>\n <DrawerDescription>{skill.name}</DrawerDescription>\n </>\n ) : undefined\n }\n >\n {skill ? (\n <div className=\"px-4 pb-4\">\n {/* Description */}\n <p className=\"text-muted-foreground text-sm\">{skill.description}</p>\n\n {/* Badges */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n <Badge variant=\"outline\">{skill.category}</Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n </div>\n\n {/* Allowed Tools */}\n {skill.allowedTools ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Allowed Tools</h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">{skill.allowedTools}</p>\n </div>\n </>\n ) : null}\n\n {/* Resources */}\n {skill.resources.length > 0 ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Resources</h3>\n <ul className=\"mt-2 space-y-1.5\">\n {skill.resources.map((resource) => (\n <li\n key={resource.name}\n className=\"text-muted-foreground flex items-center gap-2 text-sm\"\n >\n <FolderOpen className=\"size-3.5 shrink-0\" />\n <span>\n {resource.name}/ — {resource.fileCount}{' '}\n {resource.fileCount === 1 ? 'file' : 'files'}\n </span>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : null}\n\n {/* Body */}\n {skill.body ? (\n <>\n <Separator className=\"my-4\" />\n <pre className=\"text-muted-foreground text-sm leading-relaxed whitespace-pre-wrap\">\n {skill.body}\n </pre>\n </>\n ) : null}\n </div>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { useState, useMemo } from 'react';\nimport { Search, Puzzle } from 'lucide-react';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { SkillList } from './skill-list';\nimport { CategoryFilter } from './category-filter';\nimport { SkillDetailDrawer } from './skill-detail-drawer';\nimport type { SkillInjectionConfig } from '@shepai/core/domain/generated/output';\nimport { Separator } from '@/components/ui/separator';\nimport { AutoInjectedSkillsSection } from './auto-injected-skills-section';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nexport interface SkillsPageClientProps {\n skills: SkillData[];\n injectionConfig: SkillInjectionConfig;\n}\n\nfunction computeCategoryCounts(skills: SkillData[]): Record<SkillCategory, number> {\n const counts: Record<SkillCategory, number> = {\n Workflow: 0,\n 'Code Generation': 0,\n Analysis: 0,\n Reference: 0,\n };\n for (const skill of skills) {\n counts[skill.category]++;\n }\n return counts;\n}\n\nexport function SkillsPageClient({ skills, injectionConfig }: SkillsPageClientProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<SkillCategory | null>(null);\n const [selectedSkill, setSelectedSkill] = useState<SkillData | null>(null);\n\n const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);\n\n const filteredSkills = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return skills.filter((skill) => {\n if (activeCategory && skill.category !== activeCategory) return false;\n if (query) {\n const matchesName = skill.name.toLowerCase().includes(query);\n const matchesDescription = skill.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [skills, searchQuery, activeCategory]);\n\n const clearFilters = () => {\n setSearchQuery('');\n setActiveCategory(null);\n };\n\n // No skills installed at all\n if (skills.length === 0) {\n return (\n <div className=\"flex flex-col gap-6 p-6\">\n <PageHeader title=\"Skills\" description=\"Claude Code skills available to this project\" />\n <AutoInjectedSkillsSection config={injectionConfig} discoveredSkills={skills} />\n <Separator />\n <EmptyState\n icon={<Puzzle className=\"size-10\" />}\n title=\"No skills found\"\n description=\"No Claude Code skills are installed. Add skills to .claude/skills/ to get started.\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-6 p-6\">\n <PageHeader title=\"Skills\" description=\"Claude Code skills available to this project\" />\n\n {/* Feature Skills */}\n <AutoInjectedSkillsSection config={injectionConfig} discoveredSkills={skills} />\n <Separator />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder=\"Search skills...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n />\n </div>\n\n {/* Category Filter */}\n <CategoryFilter\n activeCategory={activeCategory}\n onCategoryChange={setActiveCategory}\n counts={categoryCounts}\n />\n\n {/* Skill List or Empty Filter State */}\n {filteredSkills.length > 0 ? (\n <SkillList skills={filteredSkills} onSkillSelect={setSelectedSkill} />\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title=\"No matching skills\"\n description=\"No skills match your current search and filter criteria.\"\n action={\n <Button variant=\"outline\" onClick={clearFilters}>\n Clear filters\n </Button>\n }\n />\n )}\n\n {/* Skill Detail Drawer */}\n <SkillDetailDrawer skill={selectedSkill} onClose={() => setSelectedSkill(null)} />\n </div>\n );\n}\n","import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport type { SkillData } from '@/lib/skills';\nimport { FolderOpen } from 'lucide-react';\n\nexport interface SkillCardProps {\n skill: SkillData;\n onSelect: (skill: SkillData) => void;\n}\n\nexport function SkillCard({ skill, onSelect }: SkillCardProps) {\n return (\n <Card\n className=\"hover:border-primary/50 cursor-pointer transition-colors\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(skill)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(skill);\n }\n }}\n data-testid={`skill-card-${skill.name}`}\n >\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base\">{skill.displayName}</CardTitle>\n <p className=\"text-muted-foreground font-mono text-xs\">{skill.name}</p>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-muted-foreground line-clamp-2 text-sm\">{skill.description}</p>\n <div className=\"flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n {skill.allowedTools ? <Badge variant=\"outline\">Tools</Badge> : null}\n {skill.resources.length > 0 ? (\n <span className=\"text-muted-foreground inline-flex items-center gap-1 text-xs\">\n <FolderOpen className=\"size-3\" />\n {skill.resources.length} {skill.resources.length === 1 ? 'resource' : 'resources'}\n </span>\n ) : null}\n </div>\n </CardContent>\n </Card>\n );\n}\n","import { SkillCard } from './skill-card';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nconst CATEGORY_ORDER: SkillCategory[] = ['Workflow', 'Code Generation', 'Analysis', 'Reference'];\n\nexport interface SkillListProps {\n skills: SkillData[];\n onSkillSelect: (skill: SkillData) => void;\n}\n\nfunction groupByCategory(skills: SkillData[]): Map<SkillCategory, SkillData[]> {\n const groups = new Map<SkillCategory, SkillData[]>();\n for (const skill of skills) {\n const group = groups.get(skill.category) ?? [];\n group.push(skill);\n groups.set(skill.category, group);\n }\n return groups;\n}\n\nexport function SkillList({ skills, onSkillSelect }: SkillListProps) {\n const groups = groupByCategory(skills);\n\n return (\n <div className=\"space-y-8\">\n {CATEGORY_ORDER.map((category) => {\n const categorySkills = groups.get(category);\n if (!categorySkills || categorySkills.length === 0) return null;\n\n return (\n <section key={category}>\n <h2 className=\"mb-4 text-lg font-semibold\">\n {category}{' '}\n <span className=\"text-muted-foreground text-sm font-normal\">\n ({categorySkills.length})\n </span>\n </h2>\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {categorySkills.map((skill) => (\n <SkillCard key={skill.name} skill={skill} onSelect={onSkillSelect} />\n ))}\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n","import { Button } from '@/components/ui/button';\nimport type { SkillCategory } from '@/lib/skills';\n\nconst CATEGORIES: { label: string; value: SkillCategory | null }[] = [\n { label: 'All', value: null },\n { label: 'Workflow', value: 'Workflow' },\n { label: 'Code Generation', value: 'Code Generation' },\n { label: 'Analysis', value: 'Analysis' },\n { label: 'Reference', value: 'Reference' },\n];\n\nexport interface CategoryFilterProps {\n activeCategory: SkillCategory | null;\n onCategoryChange: (category: SkillCategory | null) => void;\n counts?: Record<SkillCategory, number>;\n}\n\nexport function CategoryFilter({ activeCategory, onCategoryChange, counts }: CategoryFilterProps) {\n return (\n <div className=\"flex flex-wrap gap-2\" role=\"group\" aria-label=\"Filter by category\">\n {CATEGORIES.map(({ label, value }) => (\n <Button\n key={label}\n variant={activeCategory === value ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => onCategoryChange(value)}\n >\n {label}\n {counts && value ? (\n <span className=\"ms-1 text-xs opacity-70\">({counts[value]})</span>\n ) : null}\n </Button>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport { useMemo, useState } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { Plus, X } from 'lucide-react';\nimport { toast } from 'sonner';\nimport type { SkillInjectionConfig, SkillSource } from '@shepai/core/domain/generated/output';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { removeInjectedSkill } from '@/app/actions/remove-injected-skill';\nimport { AddSkillDialog } from './add-skill-dialog';\nimport type { SkillData } from '@/lib/skills';\n\nexport interface AutoInjectedSkillsSectionProps {\n config: SkillInjectionConfig;\n discoveredSkills: SkillData[];\n}\n\nexport function AutoInjectedSkillsSection({\n config,\n discoveredSkills,\n}: AutoInjectedSkillsSectionProps) {\n const router = useRouter();\n const [addDialogOpen, setAddDialogOpen] = useState(false);\n const [removingSkill, setRemovingSkill] = useState<string | null>(null);\n\n const skillDescriptions = useMemo(() => {\n const map = new Map<string, string>();\n for (const s of discoveredSkills) {\n map.set(s.name, s.description);\n }\n return map;\n }, [discoveredSkills]);\n\n const handleRemove = async (skillName: string) => {\n setRemovingSkill(skillName);\n const result = await removeInjectedSkill(skillName);\n setRemovingSkill(null);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to remove skill');\n return;\n }\n toast.success(`Removed \"${skillName}\" from feature skills`);\n router.refresh();\n };\n\n const handleAdded = () => {\n setAddDialogOpen(false);\n router.refresh();\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n <div>\n <h2 className=\"text-base font-semibold\">Feature Skills</h2>\n <p className=\"text-muted-foreground text-sm\">\n Curated skills included in new feature worktrees to guide the agent\n </p>\n </div>\n {config.skills.length > 0 ? (\n <div className=\"grid gap-2 sm:grid-cols-2 lg:grid-cols-3\">\n {config.skills.map((skill) => (\n <InjectedSkillCard\n key={skill.name}\n skill={skill}\n description={skillDescriptions.get(skill.name)}\n onRemove={() => handleRemove(skill.name)}\n isRemoving={removingSkill === skill.name}\n />\n ))}\n </div>\n ) : (\n <p className=\"text-muted-foreground text-sm\">\n No skills configured. Add skills to guide the agent when working on new features.\n </p>\n )}\n <div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setAddDialogOpen(true)}\n data-testid=\"add-injected-skill-button\"\n >\n <Plus className=\"mr-1.5 size-4\" />\n Add Skill\n </Button>\n </div>\n <AddSkillDialog\n open={addDialogOpen}\n onOpenChange={setAddDialogOpen}\n onAdded={handleAdded}\n discoveredSkills={discoveredSkills}\n existingSkillNames={config.skills.map((s) => s.name)}\n />\n </div>\n );\n}\n\nfunction InjectedSkillCard({\n skill,\n description,\n onRemove,\n isRemoving,\n}: {\n skill: SkillSource;\n description?: string;\n onRemove: () => void;\n isRemoving: boolean;\n}) {\n return (\n <Card data-testid={`injected-skill-${skill.name}`}>\n <CardHeader className=\"flex flex-row items-start justify-between gap-2 pb-2\">\n <div className=\"min-w-0\">\n <CardTitle className=\"truncate text-sm\">{skill.name}</CardTitle>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"shrink-0\"\n onClick={onRemove}\n disabled={isRemoving}\n aria-label={`Remove ${skill.name}`}\n data-testid={`remove-injected-skill-${skill.name}`}\n >\n <X className=\"size-4\" />\n </Button>\n </CardHeader>\n <CardContent className=\"space-y-2 pt-0\">\n {description ? (\n <p className=\"text-muted-foreground line-clamp-2 text-xs\">{description}</p>\n ) : null}\n <div className=\"flex items-center gap-1.5\">\n <Badge variant={skill.type === 'local' ? 'secondary' : 'outline'} className=\"text-xs\">\n {skill.type === 'local' ? 'Local' : 'Remote'}\n </Badge>\n <span className=\"text-muted-foreground max-w-37.5 truncate text-xs\">{skill.source}</span>\n </div>\n </CardContent>\n </Card>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40e2ea3c89625f89f59266a81d174098c8c156c94e\":\"removeInjectedSkill\"},\"src/presentation/web/app/actions/remove-injected-skill.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40e2ea3c89625f89f59266a81d174098c8c156c94e\",callServer,void 0,findSourceMapURL,\"removeInjectedSkill\");export{$$RSC_SERVER_ACTION_0 as removeInjectedSkill};","'use client';\n\nimport { useState } from 'react';\nimport { toast } from 'sonner';\nimport type { SkillSourceType } from '@shepai/core/domain/generated/output';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { addInjectedSkill } from '@/app/actions/add-injected-skill';\nimport type { SkillData } from '@/lib/skills';\n\nexport interface AddSkillDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onAdded: () => void;\n discoveredSkills: SkillData[];\n existingSkillNames: string[];\n}\n\nexport function AddSkillDialog({\n open,\n onOpenChange,\n onAdded,\n discoveredSkills,\n existingSkillNames,\n}: AddSkillDialogProps) {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [remoteName, setRemoteName] = useState('');\n const [remoteSource, setRemoteSource] = useState('');\n const [remoteSkillName, setRemoteSkillName] = useState('');\n\n const availableSkills = discoveredSkills.filter((s) => !existingSkillNames.includes(s.name));\n\n const handleAddLocal = async (skill: SkillData) => {\n setIsSubmitting(true);\n const result = await addInjectedSkill({\n name: skill.name,\n type: 'local' as SkillSourceType,\n source: `.claude/skills/${skill.name}`,\n });\n setIsSubmitting(false);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to add skill');\n return;\n }\n toast.success(`Added \"${skill.name}\" to feature skills`);\n onAdded();\n };\n\n const handleAddRemote = async () => {\n if (!remoteName.trim() || !remoteSource.trim()) {\n toast.error('Name and source are required');\n return;\n }\n setIsSubmitting(true);\n const result = await addInjectedSkill({\n name: remoteName.trim(),\n type: 'remote' as SkillSourceType,\n source: remoteSource.trim(),\n ...(remoteSkillName.trim() && { remoteSkillName: remoteSkillName.trim() }),\n });\n setIsSubmitting(false);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to add skill');\n return;\n }\n toast.success(`Added \"${remoteName.trim()}\" to feature skills`);\n setRemoteName('');\n setRemoteSource('');\n setRemoteSkillName('');\n onAdded();\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-md\" data-testid=\"add-skill-dialog\">\n <DialogHeader>\n <DialogTitle>Add Skill to Features</DialogTitle>\n </DialogHeader>\n <Tabs defaultValue=\"local\">\n <TabsList className=\"w-full\">\n <TabsTrigger value=\"local\" className=\"flex-1\">\n Local\n </TabsTrigger>\n <TabsTrigger value=\"remote\" className=\"flex-1\">\n Remote\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"local\" className=\"mt-4\">\n {availableSkills.length === 0 ? (\n <p className=\"text-muted-foreground text-sm\">\n All discovered skills are already configured.\n </p>\n ) : (\n <div className=\"flex max-h-60 flex-col gap-2 overflow-y-auto\">\n {availableSkills.map((skill) => (\n <button\n key={skill.name}\n type=\"button\"\n className=\"hover:bg-accent flex flex-col gap-0.5 rounded-md border p-3 text-left transition-colors\"\n onClick={() => handleAddLocal(skill)}\n disabled={isSubmitting}\n data-testid={`add-local-skill-${skill.name}`}\n >\n <span className=\"text-sm font-medium\">{skill.displayName}</span>\n <span className=\"text-muted-foreground line-clamp-1 text-xs\">\n {skill.description}\n </span>\n </button>\n ))}\n </div>\n )}\n </TabsContent>\n <TabsContent value=\"remote\" className=\"mt-4\">\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"remote-name\">Name</Label>\n <Input\n id=\"remote-name\"\n placeholder=\"e.g. remotion-best-practices\"\n value={remoteName}\n onChange={(e) => setRemoteName(e.target.value)}\n data-testid=\"remote-skill-name\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"remote-source\">Source (npm package or URL)</Label>\n <Input\n id=\"remote-source\"\n placeholder=\"e.g. @anthropic/remotion-skills\"\n value={remoteSource}\n onChange={(e) => setRemoteSource(e.target.value)}\n data-testid=\"remote-skill-source\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor=\"remote-skill-name\">Skill Name (optional)</Label>\n <Input\n id=\"remote-skill-name\"\n placeholder=\"e.g. remotion-best-practices\"\n value={remoteSkillName}\n onChange={(e) => setRemoteSkillName(e.target.value)}\n data-testid=\"remote-skill-skill-name\"\n />\n </div>\n <DialogFooter>\n <Button\n onClick={handleAddRemote}\n disabled={isSubmitting || !remoteName.trim() || !remoteSource.trim()}\n data-testid=\"add-remote-skill-submit\"\n >\n Add Remote Skill\n </Button>\n </DialogFooter>\n </div>\n </TabsContent>\n </Tabs>\n </DialogContent>\n </Dialog>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40e3be46c3dabbd695830d6a8d62290808482376e2\":\"addInjectedSkill\"},\"src/presentation/web/app/actions/add-injected-skill.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40e3be46c3dabbd695830d6a8d62290808482376e2\",callServer,void 0,findSourceMapURL,\"addInjectedSkill\");export{$$RSC_SERVER_ACTION_0 as addInjectedSkill};"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[63836,a=>{"use strict";a.s(["SkillsPageClient",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillsPageClient() from the server but SkillsPageClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skills-page-client.tsx <module evaluation>","SkillsPageClient")},22123,a=>{"use strict";a.s(["SkillsPageClient",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillsPageClient() from the server but SkillsPageClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skills-page-client.tsx","SkillsPageClient")},87259,a=>{"use strict";a.i(63836);var b=a.i(22123);a.n(b)},15499,a=>{"use strict";a.s(["SkillDetailDrawer",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillDetailDrawer() from the server but SkillDetailDrawer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skill-detail-drawer.tsx <module evaluation>","SkillDetailDrawer")},53037,a=>{"use strict";a.s(["SkillDetailDrawer",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillDetailDrawer() from the server but SkillDetailDrawer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skill-detail-drawer.tsx","SkillDetailDrawer")},81494,a=>{"use strict";a.i(15499);var b=a.i(53037);a.n(b)},80548,a=>{"use strict";let b,c;var d=a.i(92807);a.i(61630);var e=a.i(24124),f=a.i(12714),g=a.i(50227),h=a.i(60526),i=a.i(32996);let j=[{test:a=>a.startsWith("shep-kit:"),category:"Workflow"},{test:a=>a.startsWith("shep:"),category:"Code Generation"},{test:a=>/(?:review|validate|cross-validate)/.test(a),category:"Analysis"}],k=["shep-kit:","shep:"],l=["references","examples","templates","scripts","validation","rules"];async function m(a){let b=[];for(let c of l)try{let d=await (0,f.readdir)((0,g.join)(a,c));b.push({name:c,fileCount:d.length})}catch{}return b}async function n(a,b){let c;try{c=(await (0,f.readdir)(a,{withFileTypes:!0})).filter(a=>a.isDirectory()).map(a=>a.name)}catch{return[]}let d=[];for(let e of c){let c,h=(0,g.join)(a,e),l=(0,g.join)(h,"SKILL.md");try{c=await (0,f.readFile)(l,"utf-8")}catch{continue}let n=function(a){let b,c=/^---\s*$/m,d=a.match(c);if(d?.index===void 0)return null;let e=d.index+d[0].length,f=a.slice(e),g=f.match(c);if(g?.index===void 0)return null;let h=f.slice(0,g.index),j=f.slice(g.index+g[0].length).trim();try{b=i.default.load(h)}catch{return null}if(!b||"object"!=typeof b)return null;let k=b.name,l=b.description;return"string"!=typeof k||"string"!=typeof l?null:{name:k,description:l,context:"string"==typeof b.context?b.context:void 0,allowedTools:"string"==typeof b["allowed-tools"]?b["allowed-tools"]:void 0,body:j}}(c);if(!n){console.warn(`Skipping skill "${e}": invalid or missing frontmatter in SKILL.md`);continue}let o=await m(h);d.push({name:n.name,displayName:function(a){for(let b of k)if(a.startsWith(b))return a.slice(b.length);return a}(n.name),description:n.description,context:n.context,allowedTools:n.allowedTools,category:function(a){for(let b of j)if(b.test(a))return b.category;return"Reference"}(n.name),source:b,body:n.body,resources:o})}return d}async function o(a,b){let c=a??"/home/runner/work/shep/shep/src/presentation/web"??process.cwd(),d=b??(0,h.homedir)(),e=(0,g.join)(c,".claude","skills"),f=(0,g.join)(d,".claude","skills"),[i,j]=await Promise.all([n(e,"project"),n(f,"global")]),k=new Set(i.map(a=>a.name));return[...i,...j.filter(a=>!k.has(a.name))].sort((a,b)=>a.name.localeCompare(b.name))}var p=a.i(87259),q=a.i(46870);function r(){for(var a,b,c=0,d="",e=arguments.length;c<e;c++)(a=arguments[c])&&(b=function a(b){var c,d,e="";if("string"==typeof b||"number"==typeof b)e+=b;else if("object"==typeof b)if(Array.isArray(b)){var f=b.length;for(c=0;c<f;c++)b[c]&&(d=a(b[c]))&&(e&&(e+=" "),e+=d)}else for(d in b)b[d]&&(e&&(e+=" "),e+=d);return e}(a))&&(d&&(d+=" "),d+=b);return d}let s=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),t=[],u=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let d=a[b],e=c.nextPart.get(d);if(e){let c=u(a,b+1,e);if(c)return c}let f=c.validators;if(null===f)return;let g=0===b?a.join("-"):a.slice(b).join("-"),h=f.length;for(let a=0;a<h;a++){let b=f[a];if(b.validator(g))return b.classGroupId}},v=(a,b)=>{let c=s();for(let d in a)w(a[d],c,d,b);return c},w=(a,b,c,d)=>{let e=a.length;for(let f=0;f<e;f++)x(a[f],b,c,d)},x=(a,b,c,d)=>{"string"==typeof a?y(a,b,c):"function"==typeof a?z(a,b,c,d):A(a,b,c,d)},y=(a,b,c)=>{(""===a?b:B(b,a)).classGroupId=c},z=(a,b,c,d)=>{C(a)?w(a(d),b,c,d):(null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a}))},A=(a,b,c,d)=>{let e=Object.entries(a),f=e.length;for(let a=0;a<f;a++){let[f,g]=e[a];w(g,B(b,f),c,d)}},B=(a,b)=>{let c=a,d=b.split("-"),e=d.length;for(let a=0;a<e;a++){let b=d[a],e=c.nextPart.get(b);e||(e=s(),c.nextPart.set(b,e)),c=e}return c},C=a=>"isThemeGetter"in a&&!0===a.isThemeGetter,D=[],E=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),F=/\s+/,G=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d<a.length;d++)a[d]&&(b=G(a[d]))&&(c&&(c+=" "),c+=b);return c},H=[],I=a=>{let b=b=>b[a]||H;return b.isThemeGetter=!0,b},J=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,K=/^\((?:(\w[\w-]*):)?(.+)\)$/i,L=/^\d+\/\d+$/,M=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,N=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,O=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,P=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Q=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,R=a=>L.test(a),S=a=>!!a&&!Number.isNaN(Number(a)),T=a=>!!a&&Number.isInteger(Number(a)),U=a=>a.endsWith("%")&&S(a.slice(0,-1)),V=a=>M.test(a),W=()=>!0,X=a=>N.test(a)&&!O.test(a),Y=()=>!1,Z=a=>P.test(a),$=a=>Q.test(a),_=a=>!ab(a)&&!ah(a),aa=a=>ao(a,as,Y),ab=a=>J.test(a),ac=a=>ao(a,at,X),ad=a=>ao(a,au,S),ae=a=>ao(a,aq,Y),af=a=>ao(a,ar,$),ag=a=>ao(a,aw,Z),ah=a=>K.test(a),ai=a=>ap(a,at),aj=a=>ap(a,av),ak=a=>ap(a,aq),al=a=>ap(a,as),am=a=>ap(a,ar),an=a=>ap(a,aw,!0),ao=(a,b,c)=>{let d=J.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},ap=(a,b,c=!1)=>{let d=K.exec(a);return!!d&&(d[1]?b(d[1]):c)},aq=a=>"position"===a||"percentage"===a,ar=a=>"image"===a||"url"===a,as=a=>"length"===a||"size"===a||"bg-size"===a,at=a=>"length"===a,au=a=>"number"===a,av=a=>"family-name"===a,aw=a=>"shadow"===a,ax=((a,...b)=>{let c,d,e,f,g=a=>{let b=d(a);if(b)return b;let f=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(F),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a<t.length;++a){let b=t[a];g.push(r+b)}i=b+(i.length>0?" "+i:i)}return i})(a,c);return e(a,f),f};return f=h=>{var i;let j;return d=(c={cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})((i=b.reduce((a,b)=>b(a),a())).cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;h<g;h++){let g=a[h];if(0===d&&0===e){if(":"===g){c.push(a.slice(f,h)),f=h+1;continue}if("/"===g){b=h;continue}}"["===g?d++:"]"===g?d--:"("===g?e++:")"===g&&e--}let h=0===c.length?a:a.slice(f),i=h,j=!1;return h.endsWith("!")?(i=h.slice(0,-1),j=!0):h.startsWith("!")&&(i=h.slice(1),j=!0),E(c,j,i,b&&b>f?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):E(D,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(i),sortModifiers:(j=new Map,i.orderSensitiveModifiers.forEach((a,b)=>{j.set(a,1e6+b)}),a=>{let b=[],c=[];for(let d=0;d<a.length;d++){let e=a[d],f="["===e[0],g=j.has(e);f||g?(c.length>0&&(c.sort(),b.push(...c),c=[]),b.push(e)):c.push(e)}return c.length>0&&(c.sort(),b.push(...c)),b}),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return v(c,b)})(a),{conflictingClassGroups:c,conflictingClassGroupModifiers:d}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]")){var c;let b,d,e;return -1===(c=a).slice(1,-1).indexOf(":")?void 0:(d=(b=c.slice(1,-1)).indexOf(":"),(e=b.slice(0,d))?"arbitrary.."+e:void 0)}let d=a.split("-"),e=+(""===d[0]&&d.length>1);return u(d,e,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=d[a],e=c[a];if(b){if(e){let a=Array(e.length+b.length);for(let b=0;b<e.length;b++)a[b]=e[b];for(let c=0;c<b.length;c++)a[e.length+c]=b[c];return a}return b}return e||t}return c[a]||t}}})(i)}).cache.get,e=c.cache.set,f=g,g(h)},(...a)=>f(((...a)=>{let b,c,d=0,e="";for(;d<a.length;)(b=a[d++])&&(c=G(b))&&(e&&(e+=" "),e+=c);return e})(...a))})(()=>{let a=I("color"),b=I("font"),c=I("text"),d=I("font-weight"),e=I("tracking"),f=I("leading"),g=I("breakpoint"),h=I("container"),i=I("spacing"),j=I("radius"),k=I("shadow"),l=I("inset-shadow"),m=I("text-shadow"),n=I("drop-shadow"),o=I("blur"),p=I("perspective"),q=I("aspect"),r=I("ease"),s=I("animate"),t=()=>["auto","avoid","all","avoid-page","page","left","right","column"],u=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],v=()=>[...u(),ah,ab],w=()=>["auto","hidden","clip","visible","scroll"],x=()=>["auto","contain","none"],y=()=>[ah,ab,i],z=()=>[R,"full","auto",...y()],A=()=>[T,"none","subgrid",ah,ab],B=()=>["auto",{span:["full",T,ah,ab]},T,ah,ab],C=()=>[T,"auto",ah,ab],D=()=>["auto","min","max","fr",ah,ab],E=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],F=()=>["start","end","center","stretch","center-safe","end-safe"],G=()=>["auto",...y()],H=()=>[R,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...y()],J=()=>[a,ah,ab],K=()=>[...u(),ak,ae,{position:[ah,ab]}],L=()=>["no-repeat",{repeat:["","x","y","space","round"]}],M=()=>["auto","cover","contain",al,aa,{size:[ah,ab]}],N=()=>[U,ai,ac],O=()=>["","none","full",j,ah,ab],P=()=>["",S,ai,ac],Q=()=>["solid","dashed","dotted","double"],X=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Y=()=>[S,U,ak,ae],Z=()=>["","none",o,ah,ab],$=()=>["none",S,ah,ab],ao=()=>["none",S,ah,ab],ap=()=>[S,ah,ab],aq=()=>[R,"full",...y()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[V],breakpoint:[V],color:[W],container:[V],"drop-shadow":[V],ease:["in","out","in-out"],font:[_],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[V],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[V],shadow:[V],spacing:["px",S],text:[V],"text-shadow":[V],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",R,ab,ah,q]}],container:["container"],columns:[{columns:[S,ab,ah,h]}],"break-after":[{"break-after":t()}],"break-before":[{"break-before":t()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:v()}],overflow:[{overflow:w()}],"overflow-x":[{"overflow-x":w()}],"overflow-y":[{"overflow-y":w()}],overscroll:[{overscroll:x()}],"overscroll-x":[{"overscroll-x":x()}],"overscroll-y":[{"overscroll-y":x()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:z()}],"inset-x":[{"inset-x":z()}],"inset-y":[{"inset-y":z()}],start:[{start:z()}],end:[{end:z()}],top:[{top:z()}],right:[{right:z()}],bottom:[{bottom:z()}],left:[{left:z()}],visibility:["visible","invisible","collapse"],z:[{z:[T,"auto",ah,ab]}],basis:[{basis:[R,"full","auto",h,...y()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[S,R,"auto","initial","none",ab]}],grow:[{grow:["",S,ah,ab]}],shrink:[{shrink:["",S,ah,ab]}],order:[{order:[T,"first","last","none",ah,ab]}],"grid-cols":[{"grid-cols":A()}],"col-start-end":[{col:B()}],"col-start":[{"col-start":C()}],"col-end":[{"col-end":C()}],"grid-rows":[{"grid-rows":A()}],"row-start-end":[{row:B()}],"row-start":[{"row-start":C()}],"row-end":[{"row-end":C()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":D()}],"auto-rows":[{"auto-rows":D()}],gap:[{gap:y()}],"gap-x":[{"gap-x":y()}],"gap-y":[{"gap-y":y()}],"justify-content":[{justify:[...E(),"normal"]}],"justify-items":[{"justify-items":[...F(),"normal"]}],"justify-self":[{"justify-self":["auto",...F()]}],"align-content":[{content:["normal",...E()]}],"align-items":[{items:[...F(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...F(),{baseline:["","last"]}]}],"place-content":[{"place-content":E()}],"place-items":[{"place-items":[...F(),"baseline"]}],"place-self":[{"place-self":["auto",...F()]}],p:[{p:y()}],px:[{px:y()}],py:[{py:y()}],ps:[{ps:y()}],pe:[{pe:y()}],pt:[{pt:y()}],pr:[{pr:y()}],pb:[{pb:y()}],pl:[{pl:y()}],m:[{m:G()}],mx:[{mx:G()}],my:[{my:G()}],ms:[{ms:G()}],me:[{me:G()}],mt:[{mt:G()}],mr:[{mr:G()}],mb:[{mb:G()}],ml:[{ml:G()}],"space-x":[{"space-x":y()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":y()}],"space-y-reverse":["space-y-reverse"],size:[{size:H()}],w:[{w:[h,"screen",...H()]}],"min-w":[{"min-w":[h,"screen","none",...H()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...H()]}],h:[{h:["screen","lh",...H()]}],"min-h":[{"min-h":["screen","lh","none",...H()]}],"max-h":[{"max-h":["screen","lh",...H()]}],"font-size":[{text:["base",c,ai,ac]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,ah,ad]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",U,ab]}],"font-family":[{font:[aj,ab,b]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[e,ah,ab]}],"line-clamp":[{"line-clamp":[S,"none",ah,ad]}],leading:[{leading:[f,...y()]}],"list-image":[{"list-image":["none",ah,ab]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ah,ab]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:J()}],"text-color":[{text:J()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Q(),"wavy"]}],"text-decoration-thickness":[{decoration:[S,"from-font","auto",ah,ac]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[S,"auto",ah,ab]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:y()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ah,ab]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ah,ab]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:K()}],"bg-repeat":[{bg:L()}],"bg-size":[{bg:M()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},T,ah,ab],radial:["",ah,ab],conic:[T,ah,ab]},am,af]}],"bg-color":[{bg:J()}],"gradient-from-pos":[{from:N()}],"gradient-via-pos":[{via:N()}],"gradient-to-pos":[{to:N()}],"gradient-from":[{from:J()}],"gradient-via":[{via:J()}],"gradient-to":[{to:J()}],rounded:[{rounded:O()}],"rounded-s":[{"rounded-s":O()}],"rounded-e":[{"rounded-e":O()}],"rounded-t":[{"rounded-t":O()}],"rounded-r":[{"rounded-r":O()}],"rounded-b":[{"rounded-b":O()}],"rounded-l":[{"rounded-l":O()}],"rounded-ss":[{"rounded-ss":O()}],"rounded-se":[{"rounded-se":O()}],"rounded-ee":[{"rounded-ee":O()}],"rounded-es":[{"rounded-es":O()}],"rounded-tl":[{"rounded-tl":O()}],"rounded-tr":[{"rounded-tr":O()}],"rounded-br":[{"rounded-br":O()}],"rounded-bl":[{"rounded-bl":O()}],"border-w":[{border:P()}],"border-w-x":[{"border-x":P()}],"border-w-y":[{"border-y":P()}],"border-w-s":[{"border-s":P()}],"border-w-e":[{"border-e":P()}],"border-w-t":[{"border-t":P()}],"border-w-r":[{"border-r":P()}],"border-w-b":[{"border-b":P()}],"border-w-l":[{"border-l":P()}],"divide-x":[{"divide-x":P()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":P()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Q(),"hidden","none"]}],"divide-style":[{divide:[...Q(),"hidden","none"]}],"border-color":[{border:J()}],"border-color-x":[{"border-x":J()}],"border-color-y":[{"border-y":J()}],"border-color-s":[{"border-s":J()}],"border-color-e":[{"border-e":J()}],"border-color-t":[{"border-t":J()}],"border-color-r":[{"border-r":J()}],"border-color-b":[{"border-b":J()}],"border-color-l":[{"border-l":J()}],"divide-color":[{divide:J()}],"outline-style":[{outline:[...Q(),"none","hidden"]}],"outline-offset":[{"outline-offset":[S,ah,ab]}],"outline-w":[{outline:["",S,ai,ac]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",k,an,ag]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",l,an,ag]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:P()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[S,ac]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":P()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",m,an,ag]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[S,ah,ab]}],"mix-blend":[{"mix-blend":[...X(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":X()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[S]}],"mask-image-linear-from-pos":[{"mask-linear-from":Y()}],"mask-image-linear-to-pos":[{"mask-linear-to":Y()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":Y()}],"mask-image-t-to-pos":[{"mask-t-to":Y()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":Y()}],"mask-image-r-to-pos":[{"mask-r-to":Y()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":Y()}],"mask-image-b-to-pos":[{"mask-b-to":Y()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":Y()}],"mask-image-l-to-pos":[{"mask-l-to":Y()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":Y()}],"mask-image-x-to-pos":[{"mask-x-to":Y()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":Y()}],"mask-image-y-to-pos":[{"mask-y-to":Y()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ah,ab]}],"mask-image-radial-from-pos":[{"mask-radial-from":Y()}],"mask-image-radial-to-pos":[{"mask-radial-to":Y()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":u()}],"mask-image-conic-pos":[{"mask-conic":[S]}],"mask-image-conic-from-pos":[{"mask-conic-from":Y()}],"mask-image-conic-to-pos":[{"mask-conic-to":Y()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:K()}],"mask-repeat":[{mask:L()}],"mask-size":[{mask:M()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ah,ab]}],filter:[{filter:["","none",ah,ab]}],blur:[{blur:Z()}],brightness:[{brightness:[S,ah,ab]}],contrast:[{contrast:[S,ah,ab]}],"drop-shadow":[{"drop-shadow":["","none",n,an,ag]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",S,ah,ab]}],"hue-rotate":[{"hue-rotate":[S,ah,ab]}],invert:[{invert:["",S,ah,ab]}],saturate:[{saturate:[S,ah,ab]}],sepia:[{sepia:["",S,ah,ab]}],"backdrop-filter":[{"backdrop-filter":["","none",ah,ab]}],"backdrop-blur":[{"backdrop-blur":Z()}],"backdrop-brightness":[{"backdrop-brightness":[S,ah,ab]}],"backdrop-contrast":[{"backdrop-contrast":[S,ah,ab]}],"backdrop-grayscale":[{"backdrop-grayscale":["",S,ah,ab]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[S,ah,ab]}],"backdrop-invert":[{"backdrop-invert":["",S,ah,ab]}],"backdrop-opacity":[{"backdrop-opacity":[S,ah,ab]}],"backdrop-saturate":[{"backdrop-saturate":[S,ah,ab]}],"backdrop-sepia":[{"backdrop-sepia":["",S,ah,ab]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":y()}],"border-spacing-x":[{"border-spacing-x":y()}],"border-spacing-y":[{"border-spacing-y":y()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ah,ab]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[S,"initial",ah,ab]}],ease:[{ease:["linear","initial",r,ah,ab]}],delay:[{delay:[S,ah,ab]}],animate:[{animate:["none",s,ah,ab]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,ah,ab]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:$()}],"rotate-x":[{"rotate-x":$()}],"rotate-y":[{"rotate-y":$()}],"rotate-z":[{"rotate-z":$()}],scale:[{scale:ao()}],"scale-x":[{"scale-x":ao()}],"scale-y":[{"scale-y":ao()}],"scale-z":[{"scale-z":ao()}],"scale-3d":["scale-3d"],skew:[{skew:ap()}],"skew-x":[{"skew-x":ap()}],"skew-y":[{"skew-y":ap()}],transform:[{transform:[ah,ab,"","none","gpu","cpu"]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:aq()}],"translate-x":[{"translate-x":aq()}],"translate-y":[{"translate-y":aq()}],"translate-z":[{"translate-z":aq()}],"translate-none":["translate-none"],accent:[{accent:J()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:J()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ah,ab]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":y()}],"scroll-mx":[{"scroll-mx":y()}],"scroll-my":[{"scroll-my":y()}],"scroll-ms":[{"scroll-ms":y()}],"scroll-me":[{"scroll-me":y()}],"scroll-mt":[{"scroll-mt":y()}],"scroll-mr":[{"scroll-mr":y()}],"scroll-mb":[{"scroll-mb":y()}],"scroll-ml":[{"scroll-ml":y()}],"scroll-p":[{"scroll-p":y()}],"scroll-px":[{"scroll-px":y()}],"scroll-py":[{"scroll-py":y()}],"scroll-ps":[{"scroll-ps":y()}],"scroll-pe":[{"scroll-pe":y()}],"scroll-pt":[{"scroll-pt":y()}],"scroll-pr":[{"scroll-pr":y()}],"scroll-pb":[{"scroll-pb":y()}],"scroll-pl":[{"scroll-pl":y()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ah,ab]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[S,ai,ac,ad]}],stroke:[{stroke:["none",...J()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function ay(...a){return ax(r(a))}q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("bg-card text-card-foreground rounded-xl border shadow",a),...b})).displayName="Card",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("flex flex-col space-y-1.5 p-6",a),...b})).displayName="CardHeader",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("leading-none font-semibold tracking-tight",a),...b})).displayName="CardTitle",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("text-muted-foreground text-sm",a),...b})).displayName="CardDescription",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("p-6 pt-0",a),...b})).displayName="CardContent",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("flex items-center p-6 pt-0",a),...b})).displayName="CardFooter";let az=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,aA=(a,b)=>c=>{var d;if((null==b?void 0:b.variants)==null)return r(a,null==c?void 0:c.class,null==c?void 0:c.className);let{variants:e,defaultVariants:f}=b,g=Object.keys(e).map(a=>{let b=null==c?void 0:c[a],d=null==f?void 0:f[a];if(null===b)return null;let g=az(b)||az(d);return e[a][g]}),h=c&&Object.entries(c).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return r(a,g,null==b||null==(d=b.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...f,...h}[b]):({...f,...h})[b]===c})?[...a,c,d]:a},[]),null==c?void 0:c.class,null==c?void 0:c.className)};function aB(a,b){if("function"==typeof a)return a(b);null!=a&&(a.current=b)}function aC(a){var b;let c,e=(b=a,(c=q.forwardRef((a,b)=>{let{children:c,...d}=a;if(q.isValidElement(c)){var e;let a,f,g=(e=c,(f=(a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?e.ref:(f=(a=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?e.props.ref:e.props.ref||e.ref),h=function(a,b){let c={...b};for(let d in b){let e=a[d],f=b[d];/^on[A-Z]/.test(d)?e&&f?c[d]=(...a)=>{let b=f(...a);return e(...a),b}:e&&(c[d]=e):"style"===d?c[d]={...e,...f}:"className"===d&&(c[d]=[e,f].filter(Boolean).join(" "))}return{...a,...c}}(d,c.props);return c.type!==q.Fragment&&(h.ref=b?function(...a){return b=>{let c=!1,d=a.map(a=>{let d=aB(a,b);return c||"function"!=typeof d||(c=!0),d});if(c)return()=>{for(let b=0;b<d.length;b++){let c=d[b];"function"==typeof c?c():aB(a[b],null)}}}}(b,g):g),q.cloneElement(c,h)}return q.Children.count(c)>1?q.Children.only(null):null})).displayName=`${b}.SlotClone`,c),f=q.forwardRef((a,b)=>{let{children:c,...f}=a,g=q.Children.toArray(c),h=g.find(aH);if(h){let a=h.props.children,c=g.map(b=>b!==h?b:q.Children.count(a)>1?q.Children.only(null):q.isValidElement(a)?a.props.children:null);return(0,d.jsx)(e,{...f,ref:b,children:q.isValidElement(a)?q.cloneElement(a,void 0,c):null})}return(0,d.jsx)(e,{...f,ref:b,children:c})});return f.displayName=`${a}.Slot`,f}aA("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});var aD=aC("Slot"),aE=Symbol("radix.slottable");function aF(a){let b=({children:a})=>(0,d.jsx)(d.Fragment,{children:a});return b.displayName=`${a}.Slottable`,b.__radixId=aE,b}var aG=aF("Slottable");function aH(a){return q.isValidElement(a)&&"function"==typeof a.type&&"__radixId"in a.type&&a.type.__radixId===aE}a.s(["Root",()=>aD,"Slot",()=>aD,"Slottable",()=>aG,"createSlot",()=>aC,"createSlottable",()=>aF],76924),a.i(76924),aA("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}}),a.i(81494);var aI=a.i(40848),aJ=a.i(33244),aK=a.i(81719);let aL=aK.EditorType.VsCode,aM=aK.TerminalType.System,aN=aK.AgentType.ClaudeCode,aO=aK.AgentAuthMethod.Session,aP=(b=new Date,c={enabled:!1,skills:[{name:"architecture-reviewer",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"architecture-reviewer"},{name:"cross-validate-artifacts",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"cross-validate-artifacts"},{name:"mermaid-diagrams",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"mermaid-diagrams"},{name:"react-flow",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"react-flow"},{name:"shadcn-ui",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"shadcn-ui"},{name:"tsp-model",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"tsp-model"},{name:"vercel-react-best-practices",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"vercel-react-best-practices"},{name:"frontend-design",type:aK.SkillSourceType.Remote,source:"anthropics/claude-code",remoteSkillName:"frontend-design"}]},{id:globalThis.crypto.randomUUID(),models:{default:"claude-sonnet-4-6"},user:{},environment:{defaultEditor:aL,shellPreference:"bash",terminalPreference:aM,defaultCloneDirectory:"~/repos"},system:{autoUpdate:!0,logLevel:"info"},agent:{type:aN,authMethod:aO},notifications:{inApp:{enabled:!0},browser:{enabled:!0},desktop:{enabled:!1},events:{agentStarted:!0,phaseCompleted:!0,waitingApproval:!0,agentCompleted:!0,agentFailed:!0,prMerged:!0,prClosed:!0,prChecksPassed:!0,prChecksFailed:!0,prBlocked:!0,mergeReviewReady:!0}},workflow:{openPrOnImplementationComplete:!1,approvalGateDefaults:{allowPrd:!1,allowPlan:!1,allowMerge:!1,pushOnImplementationComplete:!1},ciWatchEnabled:!0,enableEvidence:!1,commitEvidence:!1,defaultFastMode:!0,autoArchiveDelayMinutes:10,skillInjection:c},featureFlags:{skills:!1,envDeploy:!0,debug:!1,githubImport:!1,adoptBranch:!1,gitRebaseSync:!1,reactFileManager:!1,inventory:!1},onboardingComplete:!1,createdAt:b,updatedAt:b}).workflow.skillInjection;async function aQ(){aI.featureFlags.skills||(0,e.notFound)();let a=await o(),b=(0,aJ.getSettings)().workflow.skillInjection??aP;return(0,d.jsx)(p.SkillsPageClient,{skills:a,injectionConfig:b})}a.s(["default",()=>aQ],80548)}];
|
|
1
|
+
module.exports=[63836,a=>{"use strict";a.s(["SkillsPageClient",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillsPageClient() from the server but SkillsPageClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skills-page-client.tsx <module evaluation>","SkillsPageClient")},22123,a=>{"use strict";a.s(["SkillsPageClient",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillsPageClient() from the server but SkillsPageClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skills-page-client.tsx","SkillsPageClient")},87259,a=>{"use strict";a.i(63836);var b=a.i(22123);a.n(b)},15499,a=>{"use strict";a.s(["SkillDetailDrawer",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillDetailDrawer() from the server but SkillDetailDrawer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skill-detail-drawer.tsx <module evaluation>","SkillDetailDrawer")},41818,a=>{"use strict";a.s(["SkillDetailDrawer",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call SkillDetailDrawer() from the server but SkillDetailDrawer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/skills/skill-detail-drawer.tsx","SkillDetailDrawer")},81494,a=>{"use strict";a.i(15499);var b=a.i(41818);a.n(b)},80548,a=>{"use strict";let b,c;var d=a.i(92807);a.i(61630);var e=a.i(24124),f=a.i(12714),g=a.i(50227),h=a.i(60526),i=a.i(32996);let j=[{test:a=>a.startsWith("shep-kit:"),category:"Workflow"},{test:a=>a.startsWith("shep:"),category:"Code Generation"},{test:a=>/(?:review|validate|cross-validate)/.test(a),category:"Analysis"}],k=["shep-kit:","shep:"],l=["references","examples","templates","scripts","validation","rules"];async function m(a){let b=[];for(let c of l)try{let d=await (0,f.readdir)((0,g.join)(a,c));b.push({name:c,fileCount:d.length})}catch{}return b}async function n(a,b){let c;try{c=(await (0,f.readdir)(a,{withFileTypes:!0})).filter(a=>a.isDirectory()).map(a=>a.name)}catch{return[]}let d=[];for(let e of c){let c,h=(0,g.join)(a,e),l=(0,g.join)(h,"SKILL.md");try{c=await (0,f.readFile)(l,"utf-8")}catch{continue}let n=function(a){let b,c=/^---\s*$/m,d=a.match(c);if(d?.index===void 0)return null;let e=d.index+d[0].length,f=a.slice(e),g=f.match(c);if(g?.index===void 0)return null;let h=f.slice(0,g.index),j=f.slice(g.index+g[0].length).trim();try{b=i.default.load(h)}catch{return null}if(!b||"object"!=typeof b)return null;let k=b.name,l=b.description;return"string"!=typeof k||"string"!=typeof l?null:{name:k,description:l,context:"string"==typeof b.context?b.context:void 0,allowedTools:"string"==typeof b["allowed-tools"]?b["allowed-tools"]:void 0,body:j}}(c);if(!n){console.warn(`Skipping skill "${e}": invalid or missing frontmatter in SKILL.md`);continue}let o=await m(h);d.push({name:n.name,displayName:function(a){for(let b of k)if(a.startsWith(b))return a.slice(b.length);return a}(n.name),description:n.description,context:n.context,allowedTools:n.allowedTools,category:function(a){for(let b of j)if(b.test(a))return b.category;return"Reference"}(n.name),source:b,body:n.body,resources:o})}return d}async function o(a,b){let c=a??"/home/runner/work/shep/shep/src/presentation/web"??process.cwd(),d=b??(0,h.homedir)(),e=(0,g.join)(c,".claude","skills"),f=(0,g.join)(d,".claude","skills"),[i,j]=await Promise.all([n(e,"project"),n(f,"global")]),k=new Set(i.map(a=>a.name));return[...i,...j.filter(a=>!k.has(a.name))].sort((a,b)=>a.name.localeCompare(b.name))}var p=a.i(87259),q=a.i(46870);function r(){for(var a,b,c=0,d="",e=arguments.length;c<e;c++)(a=arguments[c])&&(b=function a(b){var c,d,e="";if("string"==typeof b||"number"==typeof b)e+=b;else if("object"==typeof b)if(Array.isArray(b)){var f=b.length;for(c=0;c<f;c++)b[c]&&(d=a(b[c]))&&(e&&(e+=" "),e+=d)}else for(d in b)b[d]&&(e&&(e+=" "),e+=d);return e}(a))&&(d&&(d+=" "),d+=b);return d}let s=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),t=[],u=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let d=a[b],e=c.nextPart.get(d);if(e){let c=u(a,b+1,e);if(c)return c}let f=c.validators;if(null===f)return;let g=0===b?a.join("-"):a.slice(b).join("-"),h=f.length;for(let a=0;a<h;a++){let b=f[a];if(b.validator(g))return b.classGroupId}},v=(a,b)=>{let c=s();for(let d in a)w(a[d],c,d,b);return c},w=(a,b,c,d)=>{let e=a.length;for(let f=0;f<e;f++)x(a[f],b,c,d)},x=(a,b,c,d)=>{"string"==typeof a?y(a,b,c):"function"==typeof a?z(a,b,c,d):A(a,b,c,d)},y=(a,b,c)=>{(""===a?b:B(b,a)).classGroupId=c},z=(a,b,c,d)=>{C(a)?w(a(d),b,c,d):(null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a}))},A=(a,b,c,d)=>{let e=Object.entries(a),f=e.length;for(let a=0;a<f;a++){let[f,g]=e[a];w(g,B(b,f),c,d)}},B=(a,b)=>{let c=a,d=b.split("-"),e=d.length;for(let a=0;a<e;a++){let b=d[a],e=c.nextPart.get(b);e||(e=s(),c.nextPart.set(b,e)),c=e}return c},C=a=>"isThemeGetter"in a&&!0===a.isThemeGetter,D=[],E=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),F=/\s+/,G=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d<a.length;d++)a[d]&&(b=G(a[d]))&&(c&&(c+=" "),c+=b);return c},H=[],I=a=>{let b=b=>b[a]||H;return b.isThemeGetter=!0,b},J=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,K=/^\((?:(\w[\w-]*):)?(.+)\)$/i,L=/^\d+\/\d+$/,M=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,N=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,O=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,P=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Q=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,R=a=>L.test(a),S=a=>!!a&&!Number.isNaN(Number(a)),T=a=>!!a&&Number.isInteger(Number(a)),U=a=>a.endsWith("%")&&S(a.slice(0,-1)),V=a=>M.test(a),W=()=>!0,X=a=>N.test(a)&&!O.test(a),Y=()=>!1,Z=a=>P.test(a),$=a=>Q.test(a),_=a=>!ab(a)&&!ah(a),aa=a=>ao(a,as,Y),ab=a=>J.test(a),ac=a=>ao(a,at,X),ad=a=>ao(a,au,S),ae=a=>ao(a,aq,Y),af=a=>ao(a,ar,$),ag=a=>ao(a,aw,Z),ah=a=>K.test(a),ai=a=>ap(a,at),aj=a=>ap(a,av),ak=a=>ap(a,aq),al=a=>ap(a,as),am=a=>ap(a,ar),an=a=>ap(a,aw,!0),ao=(a,b,c)=>{let d=J.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},ap=(a,b,c=!1)=>{let d=K.exec(a);return!!d&&(d[1]?b(d[1]):c)},aq=a=>"position"===a||"percentage"===a,ar=a=>"image"===a||"url"===a,as=a=>"length"===a||"size"===a||"bg-size"===a,at=a=>"length"===a,au=a=>"number"===a,av=a=>"family-name"===a,aw=a=>"shadow"===a,ax=((a,...b)=>{let c,d,e,f,g=a=>{let b=d(a);if(b)return b;let f=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(F),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a<t.length;++a){let b=t[a];g.push(r+b)}i=b+(i.length>0?" "+i:i)}return i})(a,c);return e(a,f),f};return f=h=>{var i;let j;return d=(c={cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})((i=b.reduce((a,b)=>b(a),a())).cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;h<g;h++){let g=a[h];if(0===d&&0===e){if(":"===g){c.push(a.slice(f,h)),f=h+1;continue}if("/"===g){b=h;continue}}"["===g?d++:"]"===g?d--:"("===g?e++:")"===g&&e--}let h=0===c.length?a:a.slice(f),i=h,j=!1;return h.endsWith("!")?(i=h.slice(0,-1),j=!0):h.startsWith("!")&&(i=h.slice(1),j=!0),E(c,j,i,b&&b>f?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):E(D,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(i),sortModifiers:(j=new Map,i.orderSensitiveModifiers.forEach((a,b)=>{j.set(a,1e6+b)}),a=>{let b=[],c=[];for(let d=0;d<a.length;d++){let e=a[d],f="["===e[0],g=j.has(e);f||g?(c.length>0&&(c.sort(),b.push(...c),c=[]),b.push(e)):c.push(e)}return c.length>0&&(c.sort(),b.push(...c)),b}),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return v(c,b)})(a),{conflictingClassGroups:c,conflictingClassGroupModifiers:d}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]")){var c;let b,d,e;return -1===(c=a).slice(1,-1).indexOf(":")?void 0:(d=(b=c.slice(1,-1)).indexOf(":"),(e=b.slice(0,d))?"arbitrary.."+e:void 0)}let d=a.split("-"),e=+(""===d[0]&&d.length>1);return u(d,e,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=d[a],e=c[a];if(b){if(e){let a=Array(e.length+b.length);for(let b=0;b<e.length;b++)a[b]=e[b];for(let c=0;c<b.length;c++)a[e.length+c]=b[c];return a}return b}return e||t}return c[a]||t}}})(i)}).cache.get,e=c.cache.set,f=g,g(h)},(...a)=>f(((...a)=>{let b,c,d=0,e="";for(;d<a.length;)(b=a[d++])&&(c=G(b))&&(e&&(e+=" "),e+=c);return e})(...a))})(()=>{let a=I("color"),b=I("font"),c=I("text"),d=I("font-weight"),e=I("tracking"),f=I("leading"),g=I("breakpoint"),h=I("container"),i=I("spacing"),j=I("radius"),k=I("shadow"),l=I("inset-shadow"),m=I("text-shadow"),n=I("drop-shadow"),o=I("blur"),p=I("perspective"),q=I("aspect"),r=I("ease"),s=I("animate"),t=()=>["auto","avoid","all","avoid-page","page","left","right","column"],u=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],v=()=>[...u(),ah,ab],w=()=>["auto","hidden","clip","visible","scroll"],x=()=>["auto","contain","none"],y=()=>[ah,ab,i],z=()=>[R,"full","auto",...y()],A=()=>[T,"none","subgrid",ah,ab],B=()=>["auto",{span:["full",T,ah,ab]},T,ah,ab],C=()=>[T,"auto",ah,ab],D=()=>["auto","min","max","fr",ah,ab],E=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],F=()=>["start","end","center","stretch","center-safe","end-safe"],G=()=>["auto",...y()],H=()=>[R,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...y()],J=()=>[a,ah,ab],K=()=>[...u(),ak,ae,{position:[ah,ab]}],L=()=>["no-repeat",{repeat:["","x","y","space","round"]}],M=()=>["auto","cover","contain",al,aa,{size:[ah,ab]}],N=()=>[U,ai,ac],O=()=>["","none","full",j,ah,ab],P=()=>["",S,ai,ac],Q=()=>["solid","dashed","dotted","double"],X=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Y=()=>[S,U,ak,ae],Z=()=>["","none",o,ah,ab],$=()=>["none",S,ah,ab],ao=()=>["none",S,ah,ab],ap=()=>[S,ah,ab],aq=()=>[R,"full",...y()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[V],breakpoint:[V],color:[W],container:[V],"drop-shadow":[V],ease:["in","out","in-out"],font:[_],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[V],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[V],shadow:[V],spacing:["px",S],text:[V],"text-shadow":[V],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",R,ab,ah,q]}],container:["container"],columns:[{columns:[S,ab,ah,h]}],"break-after":[{"break-after":t()}],"break-before":[{"break-before":t()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:v()}],overflow:[{overflow:w()}],"overflow-x":[{"overflow-x":w()}],"overflow-y":[{"overflow-y":w()}],overscroll:[{overscroll:x()}],"overscroll-x":[{"overscroll-x":x()}],"overscroll-y":[{"overscroll-y":x()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:z()}],"inset-x":[{"inset-x":z()}],"inset-y":[{"inset-y":z()}],start:[{start:z()}],end:[{end:z()}],top:[{top:z()}],right:[{right:z()}],bottom:[{bottom:z()}],left:[{left:z()}],visibility:["visible","invisible","collapse"],z:[{z:[T,"auto",ah,ab]}],basis:[{basis:[R,"full","auto",h,...y()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[S,R,"auto","initial","none",ab]}],grow:[{grow:["",S,ah,ab]}],shrink:[{shrink:["",S,ah,ab]}],order:[{order:[T,"first","last","none",ah,ab]}],"grid-cols":[{"grid-cols":A()}],"col-start-end":[{col:B()}],"col-start":[{"col-start":C()}],"col-end":[{"col-end":C()}],"grid-rows":[{"grid-rows":A()}],"row-start-end":[{row:B()}],"row-start":[{"row-start":C()}],"row-end":[{"row-end":C()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":D()}],"auto-rows":[{"auto-rows":D()}],gap:[{gap:y()}],"gap-x":[{"gap-x":y()}],"gap-y":[{"gap-y":y()}],"justify-content":[{justify:[...E(),"normal"]}],"justify-items":[{"justify-items":[...F(),"normal"]}],"justify-self":[{"justify-self":["auto",...F()]}],"align-content":[{content:["normal",...E()]}],"align-items":[{items:[...F(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...F(),{baseline:["","last"]}]}],"place-content":[{"place-content":E()}],"place-items":[{"place-items":[...F(),"baseline"]}],"place-self":[{"place-self":["auto",...F()]}],p:[{p:y()}],px:[{px:y()}],py:[{py:y()}],ps:[{ps:y()}],pe:[{pe:y()}],pt:[{pt:y()}],pr:[{pr:y()}],pb:[{pb:y()}],pl:[{pl:y()}],m:[{m:G()}],mx:[{mx:G()}],my:[{my:G()}],ms:[{ms:G()}],me:[{me:G()}],mt:[{mt:G()}],mr:[{mr:G()}],mb:[{mb:G()}],ml:[{ml:G()}],"space-x":[{"space-x":y()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":y()}],"space-y-reverse":["space-y-reverse"],size:[{size:H()}],w:[{w:[h,"screen",...H()]}],"min-w":[{"min-w":[h,"screen","none",...H()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...H()]}],h:[{h:["screen","lh",...H()]}],"min-h":[{"min-h":["screen","lh","none",...H()]}],"max-h":[{"max-h":["screen","lh",...H()]}],"font-size":[{text:["base",c,ai,ac]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,ah,ad]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",U,ab]}],"font-family":[{font:[aj,ab,b]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[e,ah,ab]}],"line-clamp":[{"line-clamp":[S,"none",ah,ad]}],leading:[{leading:[f,...y()]}],"list-image":[{"list-image":["none",ah,ab]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ah,ab]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:J()}],"text-color":[{text:J()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Q(),"wavy"]}],"text-decoration-thickness":[{decoration:[S,"from-font","auto",ah,ac]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[S,"auto",ah,ab]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:y()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ah,ab]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ah,ab]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:K()}],"bg-repeat":[{bg:L()}],"bg-size":[{bg:M()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},T,ah,ab],radial:["",ah,ab],conic:[T,ah,ab]},am,af]}],"bg-color":[{bg:J()}],"gradient-from-pos":[{from:N()}],"gradient-via-pos":[{via:N()}],"gradient-to-pos":[{to:N()}],"gradient-from":[{from:J()}],"gradient-via":[{via:J()}],"gradient-to":[{to:J()}],rounded:[{rounded:O()}],"rounded-s":[{"rounded-s":O()}],"rounded-e":[{"rounded-e":O()}],"rounded-t":[{"rounded-t":O()}],"rounded-r":[{"rounded-r":O()}],"rounded-b":[{"rounded-b":O()}],"rounded-l":[{"rounded-l":O()}],"rounded-ss":[{"rounded-ss":O()}],"rounded-se":[{"rounded-se":O()}],"rounded-ee":[{"rounded-ee":O()}],"rounded-es":[{"rounded-es":O()}],"rounded-tl":[{"rounded-tl":O()}],"rounded-tr":[{"rounded-tr":O()}],"rounded-br":[{"rounded-br":O()}],"rounded-bl":[{"rounded-bl":O()}],"border-w":[{border:P()}],"border-w-x":[{"border-x":P()}],"border-w-y":[{"border-y":P()}],"border-w-s":[{"border-s":P()}],"border-w-e":[{"border-e":P()}],"border-w-t":[{"border-t":P()}],"border-w-r":[{"border-r":P()}],"border-w-b":[{"border-b":P()}],"border-w-l":[{"border-l":P()}],"divide-x":[{"divide-x":P()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":P()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Q(),"hidden","none"]}],"divide-style":[{divide:[...Q(),"hidden","none"]}],"border-color":[{border:J()}],"border-color-x":[{"border-x":J()}],"border-color-y":[{"border-y":J()}],"border-color-s":[{"border-s":J()}],"border-color-e":[{"border-e":J()}],"border-color-t":[{"border-t":J()}],"border-color-r":[{"border-r":J()}],"border-color-b":[{"border-b":J()}],"border-color-l":[{"border-l":J()}],"divide-color":[{divide:J()}],"outline-style":[{outline:[...Q(),"none","hidden"]}],"outline-offset":[{"outline-offset":[S,ah,ab]}],"outline-w":[{outline:["",S,ai,ac]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",k,an,ag]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",l,an,ag]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:P()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[S,ac]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":P()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",m,an,ag]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[S,ah,ab]}],"mix-blend":[{"mix-blend":[...X(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":X()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[S]}],"mask-image-linear-from-pos":[{"mask-linear-from":Y()}],"mask-image-linear-to-pos":[{"mask-linear-to":Y()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":Y()}],"mask-image-t-to-pos":[{"mask-t-to":Y()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":Y()}],"mask-image-r-to-pos":[{"mask-r-to":Y()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":Y()}],"mask-image-b-to-pos":[{"mask-b-to":Y()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":Y()}],"mask-image-l-to-pos":[{"mask-l-to":Y()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":Y()}],"mask-image-x-to-pos":[{"mask-x-to":Y()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":Y()}],"mask-image-y-to-pos":[{"mask-y-to":Y()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ah,ab]}],"mask-image-radial-from-pos":[{"mask-radial-from":Y()}],"mask-image-radial-to-pos":[{"mask-radial-to":Y()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":u()}],"mask-image-conic-pos":[{"mask-conic":[S]}],"mask-image-conic-from-pos":[{"mask-conic-from":Y()}],"mask-image-conic-to-pos":[{"mask-conic-to":Y()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:K()}],"mask-repeat":[{mask:L()}],"mask-size":[{mask:M()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ah,ab]}],filter:[{filter:["","none",ah,ab]}],blur:[{blur:Z()}],brightness:[{brightness:[S,ah,ab]}],contrast:[{contrast:[S,ah,ab]}],"drop-shadow":[{"drop-shadow":["","none",n,an,ag]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",S,ah,ab]}],"hue-rotate":[{"hue-rotate":[S,ah,ab]}],invert:[{invert:["",S,ah,ab]}],saturate:[{saturate:[S,ah,ab]}],sepia:[{sepia:["",S,ah,ab]}],"backdrop-filter":[{"backdrop-filter":["","none",ah,ab]}],"backdrop-blur":[{"backdrop-blur":Z()}],"backdrop-brightness":[{"backdrop-brightness":[S,ah,ab]}],"backdrop-contrast":[{"backdrop-contrast":[S,ah,ab]}],"backdrop-grayscale":[{"backdrop-grayscale":["",S,ah,ab]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[S,ah,ab]}],"backdrop-invert":[{"backdrop-invert":["",S,ah,ab]}],"backdrop-opacity":[{"backdrop-opacity":[S,ah,ab]}],"backdrop-saturate":[{"backdrop-saturate":[S,ah,ab]}],"backdrop-sepia":[{"backdrop-sepia":["",S,ah,ab]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":y()}],"border-spacing-x":[{"border-spacing-x":y()}],"border-spacing-y":[{"border-spacing-y":y()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ah,ab]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[S,"initial",ah,ab]}],ease:[{ease:["linear","initial",r,ah,ab]}],delay:[{delay:[S,ah,ab]}],animate:[{animate:["none",s,ah,ab]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,ah,ab]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:$()}],"rotate-x":[{"rotate-x":$()}],"rotate-y":[{"rotate-y":$()}],"rotate-z":[{"rotate-z":$()}],scale:[{scale:ao()}],"scale-x":[{"scale-x":ao()}],"scale-y":[{"scale-y":ao()}],"scale-z":[{"scale-z":ao()}],"scale-3d":["scale-3d"],skew:[{skew:ap()}],"skew-x":[{"skew-x":ap()}],"skew-y":[{"skew-y":ap()}],transform:[{transform:[ah,ab,"","none","gpu","cpu"]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:aq()}],"translate-x":[{"translate-x":aq()}],"translate-y":[{"translate-y":aq()}],"translate-z":[{"translate-z":aq()}],"translate-none":["translate-none"],accent:[{accent:J()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:J()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ah,ab]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":y()}],"scroll-mx":[{"scroll-mx":y()}],"scroll-my":[{"scroll-my":y()}],"scroll-ms":[{"scroll-ms":y()}],"scroll-me":[{"scroll-me":y()}],"scroll-mt":[{"scroll-mt":y()}],"scroll-mr":[{"scroll-mr":y()}],"scroll-mb":[{"scroll-mb":y()}],"scroll-ml":[{"scroll-ml":y()}],"scroll-p":[{"scroll-p":y()}],"scroll-px":[{"scroll-px":y()}],"scroll-py":[{"scroll-py":y()}],"scroll-ps":[{"scroll-ps":y()}],"scroll-pe":[{"scroll-pe":y()}],"scroll-pt":[{"scroll-pt":y()}],"scroll-pr":[{"scroll-pr":y()}],"scroll-pb":[{"scroll-pb":y()}],"scroll-pl":[{"scroll-pl":y()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ah,ab]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[S,ai,ac,ad]}],stroke:[{stroke:["none",...J()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function ay(...a){return ax(r(a))}q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("bg-card text-card-foreground rounded-xl border shadow",a),...b})).displayName="Card",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("flex flex-col space-y-1.5 p-6",a),...b})).displayName="CardHeader",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("leading-none font-semibold tracking-tight",a),...b})).displayName="CardTitle",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("text-muted-foreground text-sm",a),...b})).displayName="CardDescription",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("p-6 pt-0",a),...b})).displayName="CardContent",q.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:ay("flex items-center p-6 pt-0",a),...b})).displayName="CardFooter";let az=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,aA=(a,b)=>c=>{var d;if((null==b?void 0:b.variants)==null)return r(a,null==c?void 0:c.class,null==c?void 0:c.className);let{variants:e,defaultVariants:f}=b,g=Object.keys(e).map(a=>{let b=null==c?void 0:c[a],d=null==f?void 0:f[a];if(null===b)return null;let g=az(b)||az(d);return e[a][g]}),h=c&&Object.entries(c).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return r(a,g,null==b||null==(d=b.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...f,...h}[b]):({...f,...h})[b]===c})?[...a,c,d]:a},[]),null==c?void 0:c.class,null==c?void 0:c.className)};function aB(a,b){if("function"==typeof a)return a(b);null!=a&&(a.current=b)}function aC(a){var b;let c,e=(b=a,(c=q.forwardRef((a,b)=>{let{children:c,...d}=a;if(q.isValidElement(c)){var e;let a,f,g=(e=c,(f=(a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?e.ref:(f=(a=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?e.props.ref:e.props.ref||e.ref),h=function(a,b){let c={...b};for(let d in b){let e=a[d],f=b[d];/^on[A-Z]/.test(d)?e&&f?c[d]=(...a)=>{let b=f(...a);return e(...a),b}:e&&(c[d]=e):"style"===d?c[d]={...e,...f}:"className"===d&&(c[d]=[e,f].filter(Boolean).join(" "))}return{...a,...c}}(d,c.props);return c.type!==q.Fragment&&(h.ref=b?function(...a){return b=>{let c=!1,d=a.map(a=>{let d=aB(a,b);return c||"function"!=typeof d||(c=!0),d});if(c)return()=>{for(let b=0;b<d.length;b++){let c=d[b];"function"==typeof c?c():aB(a[b],null)}}}}(b,g):g),q.cloneElement(c,h)}return q.Children.count(c)>1?q.Children.only(null):null})).displayName=`${b}.SlotClone`,c),f=q.forwardRef((a,b)=>{let{children:c,...f}=a,g=q.Children.toArray(c),h=g.find(aH);if(h){let a=h.props.children,c=g.map(b=>b!==h?b:q.Children.count(a)>1?q.Children.only(null):q.isValidElement(a)?a.props.children:null);return(0,d.jsx)(e,{...f,ref:b,children:q.isValidElement(a)?q.cloneElement(a,void 0,c):null})}return(0,d.jsx)(e,{...f,ref:b,children:c})});return f.displayName=`${a}.Slot`,f}aA("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});var aD=aC("Slot"),aE=Symbol("radix.slottable");function aF(a){let b=({children:a})=>(0,d.jsx)(d.Fragment,{children:a});return b.displayName=`${a}.Slottable`,b.__radixId=aE,b}var aG=aF("Slottable");function aH(a){return q.isValidElement(a)&&"function"==typeof a.type&&"__radixId"in a.type&&a.type.__radixId===aE}a.s(["Root",()=>aD,"Slot",()=>aD,"Slottable",()=>aG,"createSlot",()=>aC,"createSlottable",()=>aF],76924),a.i(76924),aA("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}}),a.i(81494);var aI=a.i(40848),aJ=a.i(33244),aK=a.i(81719);let aL=aK.EditorType.VsCode,aM=aK.TerminalType.System,aN=aK.AgentType.ClaudeCode,aO=aK.AgentAuthMethod.Session,aP=(b=new Date,c={enabled:!1,skills:[{name:"architecture-reviewer",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"architecture-reviewer"},{name:"cross-validate-artifacts",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"cross-validate-artifacts"},{name:"mermaid-diagrams",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"mermaid-diagrams"},{name:"react-flow",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"react-flow"},{name:"shadcn-ui",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"shadcn-ui"},{name:"tsp-model",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"tsp-model"},{name:"vercel-react-best-practices",type:aK.SkillSourceType.Remote,source:"shep-ai/shep",remoteSkillName:"vercel-react-best-practices"},{name:"frontend-design",type:aK.SkillSourceType.Remote,source:"anthropics/claude-code",remoteSkillName:"frontend-design"}]},{id:globalThis.crypto.randomUUID(),models:{default:"claude-sonnet-4-6"},user:{},environment:{defaultEditor:aL,shellPreference:"bash",terminalPreference:aM,defaultCloneDirectory:"~/repos"},system:{autoUpdate:!0,logLevel:"info"},agent:{type:aN,authMethod:aO},notifications:{inApp:{enabled:!0},browser:{enabled:!0},desktop:{enabled:!1},events:{agentStarted:!0,phaseCompleted:!0,waitingApproval:!0,agentCompleted:!0,agentFailed:!0,prMerged:!0,prClosed:!0,prChecksPassed:!0,prChecksFailed:!0,prBlocked:!0,mergeReviewReady:!0}},workflow:{openPrOnImplementationComplete:!1,approvalGateDefaults:{allowPrd:!1,allowPlan:!1,allowMerge:!1,pushOnImplementationComplete:!1},ciWatchEnabled:!0,enableEvidence:!1,commitEvidence:!1,defaultFastMode:!0,autoArchiveDelayMinutes:10,skillInjection:c},featureFlags:{skills:!1,envDeploy:!0,debug:!1,githubImport:!1,adoptBranch:!1,gitRebaseSync:!1,reactFileManager:!1,inventory:!1},onboardingComplete:!1,createdAt:b,updatedAt:b}).workflow.skillInjection;async function aQ(){aI.featureFlags.skills||(0,e.notFound)();let a=await o(),b=(0,aJ.getSettings)().workflow.skillInjection??aP;return(0,d.jsx)(p.SkillsPageClient,{skills:a,injectionConfig:b})}a.s(["default",()=>aQ],80548)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_presentation_web_db9fa0c2._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[80496,a=>{"use strict";var b=a.i(92658),c=a.i(2157),d=a.i(60526),e=a.i(50227),f=a.i(74533),g=a.i(12581);let h={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function i(a){if(!a||!(0,e.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return{success:!1,error:"Directory not found"};let b=h[(0,d.platform)()];if(!b)return{success:!1,error:`Unsupported platform: ${(0,d.platform)()}`};let g=(0,e.normalize)(a),i=(0,f.spawn)(b.cmd,b.args(g),{detached:!0,stdio:"ignore"});return i.on("error",()=>void 0),i.unref(),{success:!0,path:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"
|
|
1
|
+
module.exports=[80496,a=>{"use strict";var b=a.i(92658),c=a.i(2157),d=a.i(60526),e=a.i(50227),f=a.i(74533),g=a.i(12581);let h={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function i(a){if(!a||!(0,e.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return{success:!1,error:"Directory not found"};let b=h[(0,d.platform)()];if(!b)return{success:!1,error:`Unsupported platform: ${(0,d.platform)()}`};let g=(0,e.normalize)(a),i=(0,f.spawn)(b.cmd,b.args(g),{detached:!0,stdio:"ignore"});return i.on("error",()=>void 0),i.unref(),{success:!0,path:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40d902df8a5f576b5aa33b645a7dfaf4b4133f67e6",null),a.s(["openFolder",()=>i])},6199,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(46646),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(84095),o=a.i(56799),p=a.i(80496),q=a.i(93225),r=a.i(94691),s=a.i(77710),t=a.i(45395),u=a.i(76707),v=a.i(10528),w=a.i(50845),x=a.i(26604),y=a.i(54723),z=a.i(18942),A=a.i(42886),B=a.i(49560),C=a.i(39353),D=a.i(95072),E=a.i(29207);a.s([],75426),a.i(75426),a.s(["0023077826973eb66acc97360f2324aa92fc4b7eaf",()=>c.checkAllAgentsStatus,"003d0efbae2ee51b84f36569a3d9855d87e24750d1",()=>b.getAllAgentModels,"00bd27b30e6c35aa39ca5fcf0280d5b3379cd1c07e",()=>g.listGitHubOrganizations,"00d659d7355a2b6a5ffc831e27d33aa2b1bbb99816",()=>e.pickFolder,"40003deaddd47ade1409b6d526755b08eb3be80f0d",()=>B.addRepository,"400962487c8ebd3b1f5ded2ca4a60f8a73406f4f3f",()=>t.createApplication,"400c298d066926bbd45a1cc986940c718482912bf4",()=>q.syncRepository,"400c51000c5d6b72e9ea6f8c5b72d2281b3a54694b",()=>y.startFeature,"40192685e178327248c4ee3e7ed433168089f96062",()=>f.listGitHubRepositories,"401df75e6c7fb8e097b733abb8797bdfcdccbefb47",()=>h.importGitHubRepository,"40249dc44ff0bea67ac4b228d968dd1f704ee4b24f",()=>D.deleteApplication,"402abe7793fe396edf2d669c244fd0eeb370125424",()=>z.stopFeature,"402bf41f2c3cf1b29b445e07ab9a6fe3182e1df2d8",()=>j.deployRepository,"40314c5fc0aabcf152e1d908fe738c3cf40bd70be1",()=>l.stopDeployment,"403a379924950f7ba0c0e57e7c3c960d0624062339",()=>A.unarchiveFeature,"4046888598d39ae43d75963d3ef3cd4e8016324d4b",()=>s.createProjectAndFeature,"40699d7542c74323d1335bc9d1238c872989b4ff95",()=>u.createProjectFolder,"406c2354167c1037f06f5228adc94dcd5e877d721e",()=>r.getDeploymentLogs,"40adf0278807286a3192aa91cc969ad4bf34de24f3",()=>v.archiveFeature,"40bd8b1511738071912093ce876b807d0cb12137cd",()=>o.openShell,"40c7cc76af10154bd904315971383c0c513ef690f6",()=>E.getFeatureMetadata,"40cfe9ccf1af62e1123113d5ba522244a957544f28",()=>i.deployFeature,"40d7b674cc1d8c901818cf7e473218e7a6203fd032",()=>k.deployApplication,"40d902df8a5f576b5aa33b645a7dfaf4b4133f67e6",()=>p.openFolder,"40d9edabf5ce0f2bae3126c6a229398875f507a208",()=>n.openIde,"40f7e19e0c90a0828d68efc73ea956f73a3fc08de5",()=>x.resumeFeature,"40f88f7c0b3d5aad4185d49a932fc0dce113ec0912",()=>m.getDeploymentStatus,"6066fc7a836c30765dbacbf5d8466865b5aa1f9640",()=>C.deleteRepository,"60ddc5a1721764ad79ab273b52c39232c5e9359107",()=>d.updateAgentAndModel,"788ed56ab07e66ef884d6ce0f77fa46b5034bcfed4",()=>w.deleteFeature],6199)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_presentation_web_f1edcf5e._.js.map
|