@shepai/cli 1.60.0 → 1.61.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/dist/src/presentation/web/components/common/action-button/action-button.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/action-button/action-button.js +7 -1
- package/dist/src/presentation/web/components/common/action-button/action-button.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/common/action-button/action-button.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/action-button/action-button.stories.js +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +10 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts +20 -0
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.js +68 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +21 -2
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +13 -2
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +16 -3
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.js +1 -1
- package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.js +14 -1
- package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.js +2 -0
- package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.js +4 -1
- package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.d.ts +1 -0
- package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.js +1 -0
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +14 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.js +1 -1
- package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.js +13 -0
- package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.js +2 -0
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +2 -2
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +7 -13
- package/dist/src/presentation/web/hooks/use-notifications.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-notifications.js +18 -18
- package/dist/src/presentation/web/hooks/use-sound-action.d.ts +100 -0
- package/dist/src/presentation/web/hooks/use-sound-action.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-sound-action.js +42 -0
- package/dist/src/presentation/web/hooks/use-sound-action.stories.d.ts +6 -0
- package/dist/src/presentation/web/hooks/use-sound-action.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-sound-action.stories.js +61 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/.tsbuildinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +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 +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
- package/web/.next/server/chunks/ssr/{_34627374._.js → _d3711354._.js} +2 -2
- package/web/.next/server/chunks/ssr/_d3711354._.js.map +1 -0
- 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 +15 -15
- package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2395adc6._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__87fda958._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_34627374._.js → _d3711354._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +15 -15
- package/web/.next/standalone/src/presentation/web/components/common/action-button/action-button.stories.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/action-button/action-button.tsx +9 -1
- package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.tsx +82 -0
- package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +16 -2
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +27 -3
- package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +14 -2
- package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +17 -4
- package/web/.next/standalone/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.tsx +2 -0
- package/web/.next/standalone/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.tsx +14 -1
- package/web/.next/standalone/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.tsx +1 -0
- package/web/.next/standalone/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.tsx +6 -1
- package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +14 -1
- package/web/.next/standalone/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.tsx +2 -0
- package/web/.next/standalone/src/presentation/web/components/common/theme-toggle/theme-toggle.tsx +14 -0
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +2 -2
- package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +7 -12
- package/web/.next/standalone/src/presentation/web/hooks/use-notifications.ts +20 -19
- package/web/.next/standalone/src/presentation/web/hooks/use-sound-action.stories.tsx +107 -0
- package/web/.next/standalone/src/presentation/web/hooks/use-sound-action.ts +53 -0
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/{bac5122e95f5c7eb.js → 13664c029245afc8.js} +1 -1
- package/web/.next/static/chunks/2960a70537e4fd12.js +10 -0
- package/web/.next/static/chunks/45f510f84c7c417d.css +2 -0
- package/web/.next/static/chunks/79718b1f5713fdc0.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/server/chunks/ssr/_34627374._.js.map +0 -1
- package/web/.next/static/chunks/1fe24572a810eafa.js +0 -10
- package/web/.next/static/chunks/7d3c5ae8f47e74cd.js +0 -1
- package/web/.next/static/chunks/8b2879f911a05b55.css +0 -2
- /package/web/.next/static/{enyZhg62FqP6oInxg1T3h → _DBWexyU1QkK02q15qod2}/_buildManifest.js +0 -0
- /package/web/.next/static/{enyZhg62FqP6oInxg1T3h → _DBWexyU1QkK02q15qod2}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{enyZhg62FqP6oInxg1T3h → _DBWexyU1QkK02q15qod2}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/module.compiled.js","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-dom.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/wrench.ts","../../../../../../../src/presentation/web/components/ui/input.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-separator%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Bre_339be71113696df74cf881e475ee3eb9/node_modules/%40radix-ui/react-separator/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/separator.tsx","../../../../../../../src/presentation/web/components/ui/sheet.tsx","../../../../../../../src/presentation/web/hooks/use-deferred-mount.ts","../../../../../../../src/presentation/web/lib/feature-flags.ts","../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx","../../../../../../../src/presentation/web/components/common/sound-toggle/sound-toggle.tsx","../../../../../../../src/presentation/web/hooks/use-notifications.ts","../../../../../../../src/presentation/web/components/layouts/app-shell/app-shell.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/house.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/volume-off.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/volume-2.ts","../../../../../../../src/presentation/web/components/ui/sonner.tsx"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactDOM\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactServerDOMTurbopackClient\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z',\n key: '1ngwbx',\n },\n ],\n];\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('wrench', __iconNode);\n\nexport default Wrench;\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Separator as SeparatorPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","'use client';\n\nimport * as React from 'react';\nimport { XIcon } from 'lucide-react';\nimport { Dialog as SheetPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n ) : null}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\n/**\n * Defers mount/unmount of content to allow opacity transitions.\n * When expanding: mounts immediately, then sets visible on next frame.\n * When collapsing: hides immediately, then unmounts after `ms` delay.\n */\nexport function useDeferredMount(isCollapsed: boolean, ms: number) {\n const [mounted, setMounted] = useState(!isCollapsed);\n const [visible, setVisible] = useState(!isCollapsed);\n\n useEffect(() => {\n if (!isCollapsed) {\n setMounted(true);\n // delay visibility by one frame so the element mounts at opacity-0 first\n const raf = requestAnimationFrame(() => setVisible(true));\n return () => cancelAnimationFrame(raf);\n }\n setVisible(false);\n const t = window.setTimeout(() => setMounted(false), ms);\n return () => window.clearTimeout(t);\n }, [isCollapsed, ms]);\n\n return { mounted, visible };\n}\n","/**\n * Feature flags for the web UI.\n *\n * Toggle via environment variables (NEXT_PUBLIC_ prefix for client access).\n * All flags default to **off** unless explicitly set to \"true\" or \"1\".\n */\n\nfunction isEnabled(envVar: string | undefined): boolean {\n return envVar === 'true' || envVar === '1';\n}\n\nexport const featureFlags = {\n skills: isEnabled(process.env.NEXT_PUBLIC_FLAG_SKILLS),\n} as const;\n","'use client';\n\nimport { usePathname } from 'next/navigation';\nimport { Home, Wrench, Puzzle, Plus } from 'lucide-react';\nimport {\n Sidebar,\n SidebarHeader,\n SidebarContent,\n SidebarFooter,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarRail,\n useSidebar,\n} from '@/components/ui/sidebar';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { SidebarNavItem } from '@/components/common/sidebar-nav-item';\nimport { SidebarCollapseToggle } from '@/components/common/sidebar-collapse-toggle';\nimport { ShepLogo } from '@/components/common/shep-logo';\nimport { FeatureListItem } from '@/components/common/feature-list-item';\nimport { FeatureStatusGroup } from '@/components/common/feature-status-group';\nimport { SidebarSectionHeader } from '@/components/common/sidebar-section-header';\nimport { featureStatusConfig, featureStatusOrder } from '@/components/common/feature-status-config';\nimport type { FeatureStatus } from '@/components/common/feature-status-config';\nimport { useDeferredMount } from '@/hooks/use-deferred-mount';\nimport { featureFlags } from '@/lib/feature-flags';\n\ninterface FeatureItem {\n name: string;\n status: FeatureStatus;\n startedAt?: number;\n duration?: string;\n}\n\nexport interface AppSidebarProps {\n features: FeatureItem[];\n onNewFeature?: () => void;\n onFeatureClick?: (name: string) => void;\n onFeaturesFolderClick?: () => void;\n onFeaturesMenuClick?: () => void;\n}\n\nexport function AppSidebar({\n features,\n onNewFeature,\n onFeatureClick,\n onFeaturesFolderClick,\n onFeaturesMenuClick,\n}: AppSidebarProps) {\n const pathname = usePathname();\n const { state } = useSidebar();\n const collapsed = state === 'collapsed';\n const { mounted: showExpanded, visible: expandedVisible } = useDeferredMount(collapsed, 200);\n\n const grouped = featureStatusOrder.map((key) => {\n const { label } = featureStatusConfig[key];\n const items = features.filter((f) => f.status === key);\n return { key, label, items };\n });\n\n return (\n <Sidebar data-testid=\"app-sidebar\" collapsible=\"icon\">\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <div className=\"flex h-8 items-center group-data-[collapsible=icon]:justify-center\">\n {showExpanded ? (\n <div\n className={[\n 'flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2',\n 'transition-opacity duration-200 ease-out',\n expandedVisible ? 'opacity-100' : 'opacity-0',\n ].join(' ')}\n aria-hidden={!expandedVisible}\n >\n <ShepLogo className=\"shrink-0\" size={20} />\n <span className=\"truncate text-sm font-semibold tracking-tight\">Shep</span>\n </div>\n ) : null}\n <SidebarCollapseToggle className=\"shrink-0 transition-all duration-200\" />\n </div>\n </SidebarMenuItem>\n\n <SidebarNavItem icon={Home} label=\"Control Center\" href=\"/\" active={pathname === '/'} />\n <SidebarNavItem\n icon={Wrench}\n label=\"Tools\"\n href=\"/tools\"\n active={pathname === '/tools'}\n />\n {featureFlags.skills ? (\n <SidebarNavItem\n icon={Puzzle}\n label=\"Skills\"\n href=\"/skills\"\n active={pathname === '/skills'}\n />\n ) : null}\n </SidebarMenu>\n </SidebarHeader>\n\n <SidebarContent>\n {showExpanded ? (\n <div\n className={[\n 'min-w-0 overflow-hidden transition-opacity duration-200 ease-out',\n '[&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none',\n expandedVisible ? 'opacity-100' : 'opacity-0',\n ].join(' ')}\n >\n <SidebarSectionHeader\n label=\"Features\"\n onFolderClick={onFeaturesFolderClick}\n onMenuClick={onFeaturesMenuClick}\n />\n <ScrollArea>\n {grouped.map(({ key, label, items }) =>\n items.length > 0 ? (\n <FeatureStatusGroup key={key} label={label} count={items.length}>\n {items.map((feature) => (\n <FeatureListItem\n key={feature.name}\n name={feature.name}\n status={feature.status}\n startedAt={feature.startedAt}\n duration={feature.duration}\n onClick={onFeatureClick ? () => onFeatureClick(feature.name) : undefined}\n />\n ))}\n </FeatureStatusGroup>\n ) : null\n )}\n </ScrollArea>\n </div>\n ) : null}\n </SidebarContent>\n\n <SidebarFooter>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton onClick={onNewFeature} tooltip=\"New feature\">\n <Plus />\n <span>New feature</span>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n","'use client';\n\nimport { Volume2, VolumeOff } from 'lucide-react';\nimport { Button } from '@/components/ui/button';\nimport { useSoundEnabled } from '@/hooks/use-sound-enabled';\n\nexport function SoundToggle() {\n const { enabled, toggle } = useSoundEnabled();\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggle}\n aria-label={enabled ? 'Mute sounds' : 'Unmute sounds'}\n >\n {enabled ? <Volume2 className=\"h-5 w-5\" /> : <VolumeOff className=\"h-5 w-5\" />}\n <span className=\"sr-only\">Toggle sound</span>\n </Button>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { toast } from 'sonner';\nimport type { NotificationEvent } from '@shepai/core/domain/generated/output';\nimport { NotificationEventType, NotificationSeverity } from '@shepai/core/domain/generated/output';\nimport { useAgentEventsContext } from './agent-events-provider';\nimport { useSound } from './use-sound';\n\nexport interface UseNotificationsResult {\n requestBrowserPermission: () => Promise<void>;\n browserPermissionState: NotificationPermission;\n}\n\nconst SEVERITY_TO_TOAST: Record<NotificationSeverity, 'success' | 'error' | 'warning' | 'info'> = {\n [NotificationSeverity.Success]: 'success',\n [NotificationSeverity.Error]: 'error',\n [NotificationSeverity.Warning]: 'warning',\n [NotificationSeverity.Info]: 'info',\n};\n\nfunction dispatchToast(event: NotificationEvent): void {\n const method = SEVERITY_TO_TOAST[event.severity] ?? 'info';\n const isActionable = event.eventType === NotificationEventType.WaitingApproval;\n toast[method](event.featureName, {\n description: event.message,\n ...(isActionable && {\n action: {\n label: 'Review',\n onClick: () => {\n window.dispatchEvent(\n new CustomEvent('shep:select-feature', { detail: { featureId: event.featureId } })\n );\n },\n },\n }),\n });\n}\n\nfunction dispatchBrowserNotification(event: NotificationEvent): void {\n if (globalThis.Notification?.permission !== 'granted') {\n return;\n }\n new Notification(`Shep: ${event.featureName}`, {\n body: event.message,\n icon: '/favicon-light.svg',\n });\n}\n\nconst SEVERITY_TO_SOUND = {\n [NotificationSeverity.Success]: 'celebration',\n [NotificationSeverity.Error]: 'caution',\n [NotificationSeverity.Warning]: 'notification',\n [NotificationSeverity.Info]: 'button',\n} as const;\n\nexport function useNotifications(): UseNotificationsResult {\n const { events } = useAgentEventsContext();\n\n const successSound = useSound('celebration', { volume: 0.5 });\n const errorSound = useSound('caution', { volume: 0.5 });\n const warningSound = useSound('notification', { volume: 0.5 });\n const infoSound = useSound('button', { volume: 0.5 });\n\n const soundsByName = useMemo<Record<string, { play: () => void }>>(\n () => ({\n celebration: successSound,\n caution: errorSound,\n notification: warningSound,\n button: infoSound,\n }),\n [successSound, errorSound, warningSound, infoSound]\n );\n\n const [browserPermissionState, setBrowserPermissionState] = useState<NotificationPermission>(\n () => {\n if (typeof globalThis.Notification === 'undefined') return 'default';\n return globalThis.Notification.permission;\n }\n );\n\n // Track how many events from the array we've already processed.\n // Using the array index (instead of lastEvent) prevents React batching\n // from silently dropping events when multiple SSE messages arrive together.\n const processedCountRef = useRef(0);\n\n useEffect(() => {\n if (events.length <= processedCountRef.current) return;\n\n const newEvents = events.slice(processedCountRef.current);\n processedCountRef.current = events.length;\n\n for (const event of newEvents) {\n // Only notify for actionable events and completion celebrations\n if (\n event.severity !== NotificationSeverity.Error &&\n event.severity !== NotificationSeverity.Warning &&\n event.severity !== NotificationSeverity.Success\n ) {\n continue;\n }\n\n dispatchToast(event);\n dispatchBrowserNotification(event);\n\n const soundName = SEVERITY_TO_SOUND[event.severity];\n soundsByName[soundName]?.play();\n }\n }, [events, soundsByName]);\n\n const requestBrowserPermission = useCallback(async () => {\n if (typeof globalThis.Notification === 'undefined') return;\n const result = await globalThis.Notification.requestPermission();\n setBrowserPermissionState(result);\n }, []);\n\n return {\n requestBrowserPermission,\n browserPermissionState,\n };\n}\n","'use client';\n\nimport { useCallback, type ReactNode } from 'react';\nimport { SidebarProvider, SidebarInset } from '@/components/ui/sidebar';\nimport { AppSidebar } from '@/components/layouts/app-sidebar';\nimport { AddRepositoryButton } from '@/components/common/add-repository-node';\nimport { ThemeToggle } from '@/components/common/theme-toggle';\nimport { SoundToggle } from '@/components/common/sound-toggle';\nimport { AgentEventsProvider } from '@/hooks/agent-events-provider';\nimport { useNotifications } from '@/hooks/use-notifications';\n\ninterface AppShellProps {\n children: ReactNode;\n}\n\n/** Inner shell that consumes the agent-events context for notifications. */\nfunction AppShellInner({ children }: AppShellProps) {\n // Subscribe to agent lifecycle events and dispatch toast/browser notifications\n useNotifications();\n\n const handleNewFeature = useCallback(() => {\n window.dispatchEvent(new CustomEvent('shep:open-create-drawer'));\n }, []);\n\n const handleRepositorySelect = useCallback((path: string) => {\n window.dispatchEvent(new CustomEvent('shep:add-repository', { detail: { path } }));\n }, []);\n\n return (\n <SidebarProvider>\n <AppSidebar features={[]} onNewFeature={handleNewFeature} />\n <SidebarInset>\n <div className=\"relative h-full\">\n <div className=\"absolute top-3 right-3 z-50 flex gap-1\">\n <AddRepositoryButton onSelect={handleRepositorySelect} />\n <SoundToggle />\n <ThemeToggle />\n </div>\n <main className=\"h-full\">{children}</main>\n </div>\n </SidebarInset>\n </SidebarProvider>\n );\n}\n\nexport function AppShell({ children }: AppShellProps) {\n return (\n <AgentEventsProvider>\n <AppShellInner>{children}</AppShellInner>\n </AgentEventsProvider>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8', key: '5wwlr5' }],\n [\n 'path',\n {\n d: 'M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z',\n key: 'r6nss1',\n },\n ],\n];\n\n/**\n * @component @name House\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/house\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst House = createLucideIcon('house', __iconNode);\n\nexport default House;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 9a5 5 0 0 1 .95 2.293', key: '1fgyg8' }],\n ['path', { d: 'M19.364 5.636a9 9 0 0 1 1.889 9.96', key: 'l3zxae' }],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n [\n 'path',\n {\n d: 'm7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11',\n key: '1gbwow',\n },\n ],\n ['path', { d: 'M9.828 4.172A.686.686 0 0 1 11 4.657v.686', key: 's2je0y' }],\n];\n\n/**\n * @component @name VolumeOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/volume-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst VolumeOff = createLucideIcon('volume-off', __iconNode);\n\nexport default VolumeOff;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z',\n key: 'uqj9uw',\n },\n ],\n ['path', { d: 'M16 9a5 5 0 0 1 0 6', key: '1q6k2b' }],\n ['path', { d: 'M19.364 18.364a9 9 0 0 0 0-12.728', key: 'ijwkga' }],\n];\n\n/**\n * @component @name Volume2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/volume-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Volume2 = createLucideIcon('volume-2', __iconNode);\n\nexport default Volume2;\n","'use client';\n\nimport { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n return (\n <Sonner\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"names":["module","exports","require","vendored","HooksClientContext","ServerInsertedHtml","process","env","NEXT_RUNTIME","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","ReactJsxRuntime","React","ReactDOM","AppRouterContext","ReactServerDOMTurbopackClient"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,11,20,21,22]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/module.compiled.js","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-dom.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/wrench.ts","../../../../../../../src/presentation/web/components/ui/input.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-separator%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Bre_339be71113696df74cf881e475ee3eb9/node_modules/%40radix-ui/react-separator/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/separator.tsx","../../../../../../../src/presentation/web/components/ui/sheet.tsx","../../../../../../../src/presentation/web/hooks/use-deferred-mount.ts","../../../../../../../src/presentation/web/lib/feature-flags.ts","../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx","../../../../../../../src/presentation/web/components/common/sound-toggle/sound-toggle.tsx","../../../../../../../src/presentation/web/hooks/use-notifications.ts","../../../../../../../src/presentation/web/components/layouts/app-shell/app-shell.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/house.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/volume-off.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/volume-2.ts","../../../../../../../src/presentation/web/components/ui/sonner.tsx"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactDOM\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactServerDOMTurbopackClient\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z',\n key: '1ngwbx',\n },\n ],\n];\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('wrench', __iconNode);\n\nexport default Wrench;\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Separator as SeparatorPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","'use client';\n\nimport * as React from 'react';\nimport { XIcon } from 'lucide-react';\nimport { Dialog as SheetPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n ) : null}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","'use client';\n\nimport { useState, useEffect } from 'react';\n\n/**\n * Defers mount/unmount of content to allow opacity transitions.\n * When expanding: mounts immediately, then sets visible on next frame.\n * When collapsing: hides immediately, then unmounts after `ms` delay.\n */\nexport function useDeferredMount(isCollapsed: boolean, ms: number) {\n const [mounted, setMounted] = useState(!isCollapsed);\n const [visible, setVisible] = useState(!isCollapsed);\n\n useEffect(() => {\n if (!isCollapsed) {\n setMounted(true);\n // delay visibility by one frame so the element mounts at opacity-0 first\n const raf = requestAnimationFrame(() => setVisible(true));\n return () => cancelAnimationFrame(raf);\n }\n setVisible(false);\n const t = window.setTimeout(() => setMounted(false), ms);\n return () => window.clearTimeout(t);\n }, [isCollapsed, ms]);\n\n return { mounted, visible };\n}\n","/**\n * Feature flags for the web UI.\n *\n * Toggle via environment variables (NEXT_PUBLIC_ prefix for client access).\n * All flags default to **off** unless explicitly set to \"true\" or \"1\".\n */\n\nfunction isEnabled(envVar: string | undefined): boolean {\n return envVar === 'true' || envVar === '1';\n}\n\nexport const featureFlags = {\n skills: isEnabled(process.env.NEXT_PUBLIC_FLAG_SKILLS),\n} as const;\n","'use client';\n\nimport { usePathname } from 'next/navigation';\nimport { Home, Wrench, Puzzle, Plus } from 'lucide-react';\nimport {\n Sidebar,\n SidebarHeader,\n SidebarContent,\n SidebarFooter,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarRail,\n useSidebar,\n} from '@/components/ui/sidebar';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { SidebarNavItem } from '@/components/common/sidebar-nav-item';\nimport { SidebarCollapseToggle } from '@/components/common/sidebar-collapse-toggle';\nimport { ShepLogo } from '@/components/common/shep-logo';\nimport { FeatureListItem } from '@/components/common/feature-list-item';\nimport { FeatureStatusGroup } from '@/components/common/feature-status-group';\nimport { SidebarSectionHeader } from '@/components/common/sidebar-section-header';\nimport { featureStatusConfig, featureStatusOrder } from '@/components/common/feature-status-config';\nimport type { FeatureStatus } from '@/components/common/feature-status-config';\nimport { useDeferredMount } from '@/hooks/use-deferred-mount';\nimport { featureFlags } from '@/lib/feature-flags';\n\ninterface FeatureItem {\n name: string;\n status: FeatureStatus;\n startedAt?: number;\n duration?: string;\n}\n\nexport interface AppSidebarProps {\n features: FeatureItem[];\n onNewFeature?: () => void;\n onFeatureClick?: (name: string) => void;\n onFeaturesFolderClick?: () => void;\n onFeaturesMenuClick?: () => void;\n}\n\nexport function AppSidebar({\n features,\n onNewFeature,\n onFeatureClick,\n onFeaturesFolderClick,\n onFeaturesMenuClick,\n}: AppSidebarProps) {\n const pathname = usePathname();\n const { state } = useSidebar();\n const collapsed = state === 'collapsed';\n const { mounted: showExpanded, visible: expandedVisible } = useDeferredMount(collapsed, 200);\n\n const grouped = featureStatusOrder.map((key) => {\n const { label } = featureStatusConfig[key];\n const items = features.filter((f) => f.status === key);\n return { key, label, items };\n });\n\n return (\n <Sidebar data-testid=\"app-sidebar\" collapsible=\"icon\">\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <div className=\"flex h-8 items-center group-data-[collapsible=icon]:justify-center\">\n {showExpanded ? (\n <div\n className={[\n 'flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2',\n 'transition-opacity duration-200 ease-out',\n expandedVisible ? 'opacity-100' : 'opacity-0',\n ].join(' ')}\n aria-hidden={!expandedVisible}\n >\n <ShepLogo className=\"shrink-0\" size={20} />\n <span className=\"truncate text-sm font-semibold tracking-tight\">Shep</span>\n </div>\n ) : null}\n <SidebarCollapseToggle className=\"shrink-0 transition-all duration-200\" />\n </div>\n </SidebarMenuItem>\n\n <SidebarNavItem icon={Home} label=\"Control Center\" href=\"/\" active={pathname === '/'} />\n <SidebarNavItem\n icon={Wrench}\n label=\"Tools\"\n href=\"/tools\"\n active={pathname === '/tools'}\n />\n {featureFlags.skills ? (\n <SidebarNavItem\n icon={Puzzle}\n label=\"Skills\"\n href=\"/skills\"\n active={pathname === '/skills'}\n />\n ) : null}\n </SidebarMenu>\n </SidebarHeader>\n\n <SidebarContent>\n {showExpanded ? (\n <div\n className={[\n 'min-w-0 overflow-hidden transition-opacity duration-200 ease-out',\n '[&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none',\n expandedVisible ? 'opacity-100' : 'opacity-0',\n ].join(' ')}\n >\n <SidebarSectionHeader\n label=\"Features\"\n onFolderClick={onFeaturesFolderClick}\n onMenuClick={onFeaturesMenuClick}\n />\n <ScrollArea>\n {grouped.map(({ key, label, items }) =>\n items.length > 0 ? (\n <FeatureStatusGroup key={key} label={label} count={items.length}>\n {items.map((feature) => (\n <FeatureListItem\n key={feature.name}\n name={feature.name}\n status={feature.status}\n startedAt={feature.startedAt}\n duration={feature.duration}\n onClick={onFeatureClick ? () => onFeatureClick(feature.name) : undefined}\n />\n ))}\n </FeatureStatusGroup>\n ) : null\n )}\n </ScrollArea>\n </div>\n ) : null}\n </SidebarContent>\n\n <SidebarFooter>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton onClick={onNewFeature} tooltip=\"New feature\">\n <Plus />\n <span>New feature</span>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n","'use client';\n\nimport { Volume2, VolumeOff } from 'lucide-react';\nimport { Button } from '@/components/ui/button';\nimport { useSoundEnabled } from '@/hooks/use-sound-enabled';\n\nexport function SoundToggle() {\n const { enabled, toggle } = useSoundEnabled();\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggle}\n aria-label={enabled ? 'Mute sounds' : 'Unmute sounds'}\n >\n {enabled ? <Volume2 className=\"h-5 w-5\" /> : <VolumeOff className=\"h-5 w-5\" />}\n <span className=\"sr-only\">Toggle sound</span>\n </Button>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { toast } from 'sonner';\nimport type { NotificationEvent } from '@shepai/core/domain/generated/output';\nimport { NotificationEventType, NotificationSeverity } from '@shepai/core/domain/generated/output';\nimport { useAgentEventsContext } from './agent-events-provider';\nimport { useSoundAction } from './use-sound-action';\nimport type { SoundAction } from './use-sound-action';\n\nexport interface UseNotificationsResult {\n requestBrowserPermission: () => Promise<void>;\n browserPermissionState: NotificationPermission;\n}\n\nconst SEVERITY_TO_TOAST: Record<NotificationSeverity, 'success' | 'error' | 'warning' | 'info'> = {\n [NotificationSeverity.Success]: 'success',\n [NotificationSeverity.Error]: 'error',\n [NotificationSeverity.Warning]: 'warning',\n [NotificationSeverity.Info]: 'info',\n};\n\nfunction dispatchToast(event: NotificationEvent): void {\n const method = SEVERITY_TO_TOAST[event.severity] ?? 'info';\n const isActionable = event.eventType === NotificationEventType.WaitingApproval;\n toast[method](event.featureName, {\n description: event.message,\n ...(isActionable && {\n action: {\n label: 'Review',\n onClick: () => {\n window.dispatchEvent(\n new CustomEvent('shep:select-feature', { detail: { featureId: event.featureId } })\n );\n },\n },\n }),\n });\n}\n\nfunction dispatchBrowserNotification(event: NotificationEvent): void {\n if (globalThis.Notification?.permission !== 'granted') {\n return;\n }\n new Notification(`Shep: ${event.featureName}`, {\n body: event.message,\n icon: '/favicon-light.svg',\n });\n}\n\nconst SEVERITY_TO_ACTION: Record<NotificationSeverity, SoundAction> = {\n [NotificationSeverity.Success]: 'notification-success',\n [NotificationSeverity.Error]: 'notification-error',\n [NotificationSeverity.Warning]: 'notification-warning',\n [NotificationSeverity.Info]: 'notification-info',\n};\n\nexport function useNotifications(): UseNotificationsResult {\n const { events } = useAgentEventsContext();\n\n const successSound = useSoundAction('notification-success');\n const errorSound = useSoundAction('notification-error');\n const warningSound = useSoundAction('notification-warning');\n const infoSound = useSoundAction('notification-info');\n\n const soundsByAction = useMemo<Record<string, { play: () => void }>>(\n () => ({\n 'notification-success': successSound,\n 'notification-error': errorSound,\n 'notification-warning': warningSound,\n 'notification-info': infoSound,\n }),\n [successSound, errorSound, warningSound, infoSound]\n );\n\n const [browserPermissionState, setBrowserPermissionState] = useState<NotificationPermission>(\n () => {\n if (typeof globalThis.Notification === 'undefined') return 'default';\n return globalThis.Notification.permission;\n }\n );\n\n // Track how many events from the array we've already processed.\n // Using the array index (instead of lastEvent) prevents React batching\n // from silently dropping events when multiple SSE messages arrive together.\n const processedCountRef = useRef(0);\n\n useEffect(() => {\n if (events.length <= processedCountRef.current) return;\n\n const newEvents = events.slice(processedCountRef.current);\n processedCountRef.current = events.length;\n\n for (const event of newEvents) {\n // Only notify for actionable events and completion celebrations\n if (\n event.severity !== NotificationSeverity.Error &&\n event.severity !== NotificationSeverity.Warning &&\n event.severity !== NotificationSeverity.Success\n ) {\n continue;\n }\n\n dispatchToast(event);\n dispatchBrowserNotification(event);\n\n const actionName = SEVERITY_TO_ACTION[event.severity];\n soundsByAction[actionName]?.play();\n }\n }, [events, soundsByAction]);\n\n const requestBrowserPermission = useCallback(async () => {\n if (typeof globalThis.Notification === 'undefined') return;\n const result = await globalThis.Notification.requestPermission();\n setBrowserPermissionState(result);\n }, []);\n\n return {\n requestBrowserPermission,\n browserPermissionState,\n };\n}\n","'use client';\n\nimport { useCallback, type ReactNode } from 'react';\nimport { SidebarProvider, SidebarInset } from '@/components/ui/sidebar';\nimport { AppSidebar } from '@/components/layouts/app-sidebar';\nimport { AddRepositoryButton } from '@/components/common/add-repository-node';\nimport { ThemeToggle } from '@/components/common/theme-toggle';\nimport { SoundToggle } from '@/components/common/sound-toggle';\nimport { AgentEventsProvider } from '@/hooks/agent-events-provider';\nimport { useNotifications } from '@/hooks/use-notifications';\n\ninterface AppShellProps {\n children: ReactNode;\n}\n\n/** Inner shell that consumes the agent-events context for notifications. */\nfunction AppShellInner({ children }: AppShellProps) {\n // Subscribe to agent lifecycle events and dispatch toast/browser notifications\n useNotifications();\n\n const handleNewFeature = useCallback(() => {\n window.dispatchEvent(new CustomEvent('shep:open-create-drawer'));\n }, []);\n\n const handleRepositorySelect = useCallback((path: string) => {\n window.dispatchEvent(new CustomEvent('shep:add-repository', { detail: { path } }));\n }, []);\n\n return (\n <SidebarProvider>\n <AppSidebar features={[]} onNewFeature={handleNewFeature} />\n <SidebarInset>\n <div className=\"relative h-full\">\n <div className=\"absolute top-3 right-3 z-50 flex gap-1\">\n <AddRepositoryButton onSelect={handleRepositorySelect} />\n <SoundToggle />\n <ThemeToggle />\n </div>\n <main className=\"h-full\">{children}</main>\n </div>\n </SidebarInset>\n </SidebarProvider>\n );\n}\n\nexport function AppShell({ children }: AppShellProps) {\n return (\n <AgentEventsProvider>\n <AppShellInner>{children}</AppShellInner>\n </AgentEventsProvider>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8', key: '5wwlr5' }],\n [\n 'path',\n {\n d: 'M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z',\n key: 'r6nss1',\n },\n ],\n];\n\n/**\n * @component @name House\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/house\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst House = createLucideIcon('house', __iconNode);\n\nexport default House;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 9a5 5 0 0 1 .95 2.293', key: '1fgyg8' }],\n ['path', { d: 'M19.364 5.636a9 9 0 0 1 1.889 9.96', key: 'l3zxae' }],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n [\n 'path',\n {\n d: 'm7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11',\n key: '1gbwow',\n },\n ],\n ['path', { d: 'M9.828 4.172A.686.686 0 0 1 11 4.657v.686', key: 's2je0y' }],\n];\n\n/**\n * @component @name VolumeOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/volume-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst VolumeOff = createLucideIcon('volume-off', __iconNode);\n\nexport default VolumeOff;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z',\n key: 'uqj9uw',\n },\n ],\n ['path', { d: 'M16 9a5 5 0 0 1 0 6', key: '1q6k2b' }],\n ['path', { d: 'M19.364 18.364a9 9 0 0 0 0-12.728', key: 'ijwkga' }],\n];\n\n/**\n * @component @name Volume2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/volume-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Volume2 = createLucideIcon('volume-2', __iconNode);\n\nexport default Volume2;\n","'use client';\n\nimport { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n return (\n <Sonner\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"names":["module","exports","require","vendored","HooksClientContext","ServerInsertedHtml","process","env","NEXT_RUNTIME","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","ReactJsxRuntime","React","ReactDOM","AppRouterContext","ReactServerDOMTurbopackClient"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,11,20,21,22]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
module.exports=[74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},92658,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28478)},12581,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},12513,a=>{"use strict";var b=a.i(92658),c=a.i(74533);let d={platform:process.platform,exec:(a,b)=>(0,c.execSync)(a,b)},e={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class f{deps;constructor(a={}){this.deps={...d,...a}}getCommand(){return e[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function g(){let a=new f;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,a.i(12581).ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},12513,a=>{"use strict";var b=a.i(92658),c=a.i(74533);let d={platform:process.platform,exec:(a,b)=>(0,c.execSync)(a,b)},e={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class f{deps;constructor(a={}){this.deps={...d,...a}}getCommand(){return e[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function g(){let a=new f;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,a.i(12581).ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"00f46b544814f14a9bd450e71019c7325620386871",null),a.s(["pickFolder",()=>g],12513)},66973,a=>{"use strict";var b=a.i(12513);a.s([],65794),a.i(65794),a.s(["00f46b544814f14a9bd450e71019c7325620386871",()=>b.pickFolder],66973)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=%5Broot-of-the-server%5D__6b17a22d._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../../../packages/core/src/infrastructure/services/folder-dialog.service.ts","../../../../../../../src/presentation/web/app/actions/pick-folder.ts","../../../../../../../src/presentation/web/.next-internal/server/app/_not-found/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","import { execSync } from 'node:child_process';\n\nexport interface FolderDialogDeps {\n platform: NodeJS.Platform;\n exec: (cmd: string, opts?: { encoding: BufferEncoding; timeout?: number }) => string;\n}\n\nconst defaultDeps: FolderDialogDeps = {\n platform: process.platform,\n exec: (cmd, opts) => execSync(cmd, opts) as unknown as string,\n};\n\n/**\n * Platform-specific commands that open a native OS folder picker dialog.\n * Each returns the chosen absolute folder path on stdout, or exits non-zero / returns empty on cancel.\n */\nconst PLATFORM_COMMANDS: Record<string, string> = {\n darwin: `osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'`,\n linux: `zenity --file-selection --directory --title=\"Select a repository folder\" 2>/dev/null`,\n win32: `powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\"`,\n};\n\nexport class FolderDialogService {\n private deps: FolderDialogDeps;\n\n constructor(deps: Partial<FolderDialogDeps> = {}) {\n this.deps = { ...defaultDeps, ...deps };\n }\n\n /** Returns the OS-specific command string, or null if the platform is unsupported. */\n getCommand(): string | null {\n return PLATFORM_COMMANDS[this.deps.platform] ?? null;\n }\n\n /**\n * Opens a native folder picker dialog and returns the selected absolute path.\n * Returns `null` if the user cancels the dialog.\n * Throws if the platform is unsupported or the command fails unexpectedly.\n */\n pickFolder(): string | null {\n const command = this.getCommand();\n if (!command) {\n throw new Error(`Unsupported platform: ${this.deps.platform}`);\n }\n\n try {\n const result = this.deps.exec(command, { encoding: 'utf-8', timeout: 60_000 });\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n } catch (error: unknown) {\n // User cancelled the dialog — exit code 1 from osascript/zenity/powershell\n if (isExecError(error) && error.status === 1) {\n return null;\n }\n throw error;\n }\n }\n}\n\nfunction isExecError(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n","'use server';\n\nimport { FolderDialogService } from '@shepai/core/infrastructure/services/folder-dialog.service';\n\nexport async function pickFolder(): Promise<{ path: string | null; error?: string }> {\n const service = new FolderDialogService();\n\n try {\n const path = service.pickFolder();\n return { path };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder dialog';\n return { path: null, error: message };\n }\n}\n","export {pickFolder as '
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../../../packages/core/src/infrastructure/services/folder-dialog.service.ts","../../../../../../../src/presentation/web/app/actions/pick-folder.ts","../../../../../../../src/presentation/web/.next-internal/server/app/_not-found/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","import { execSync } from 'node:child_process';\n\nexport interface FolderDialogDeps {\n platform: NodeJS.Platform;\n exec: (cmd: string, opts?: { encoding: BufferEncoding; timeout?: number }) => string;\n}\n\nconst defaultDeps: FolderDialogDeps = {\n platform: process.platform,\n exec: (cmd, opts) => execSync(cmd, opts) as unknown as string,\n};\n\n/**\n * Platform-specific commands that open a native OS folder picker dialog.\n * Each returns the chosen absolute folder path on stdout, or exits non-zero / returns empty on cancel.\n */\nconst PLATFORM_COMMANDS: Record<string, string> = {\n darwin: `osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'`,\n linux: `zenity --file-selection --directory --title=\"Select a repository folder\" 2>/dev/null`,\n win32: `powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\"`,\n};\n\nexport class FolderDialogService {\n private deps: FolderDialogDeps;\n\n constructor(deps: Partial<FolderDialogDeps> = {}) {\n this.deps = { ...defaultDeps, ...deps };\n }\n\n /** Returns the OS-specific command string, or null if the platform is unsupported. */\n getCommand(): string | null {\n return PLATFORM_COMMANDS[this.deps.platform] ?? null;\n }\n\n /**\n * Opens a native folder picker dialog and returns the selected absolute path.\n * Returns `null` if the user cancels the dialog.\n * Throws if the platform is unsupported or the command fails unexpectedly.\n */\n pickFolder(): string | null {\n const command = this.getCommand();\n if (!command) {\n throw new Error(`Unsupported platform: ${this.deps.platform}`);\n }\n\n try {\n const result = this.deps.exec(command, { encoding: 'utf-8', timeout: 60_000 });\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n } catch (error: unknown) {\n // User cancelled the dialog — exit code 1 from osascript/zenity/powershell\n if (isExecError(error) && error.status === 1) {\n return null;\n }\n throw error;\n }\n }\n}\n\nfunction isExecError(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n","'use server';\n\nimport { FolderDialogService } from '@shepai/core/infrastructure/services/folder-dialog.service';\n\nexport async function pickFolder(): Promise<{ path: string | null; error?: string }> {\n const service = new FolderDialogService();\n\n try {\n const path = service.pickFolder();\n return { path };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder dialog';\n return { path: null, error: message };\n }\n}\n","export {pickFolder as '00f46b544814f14a9bd450e71019c7325620386871'} from 'ACTIONS_MODULE0'\n"],"names":["registerServerReference","ensureServerEntryExports","actions","i","length","action","Error"],"mappings":"oIAAoD,OAAA,cAAA,CAAA,EAAA,aAAA,oCAC3CA,0BAAAA,qCAAAA,EAAAA,uBAAuB,YAAQ,CAAA,CAAA,IAAA,iCCEjC,SAASC,EAAyBC,CAAc,EACrD,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQE,MAAM,CAAED,IAAK,CACvC,IAAME,EAASH,CAAO,CAACC,EAAE,CACzB,GAAI,AAAkB,YAAY,OAAvBE,EACT,MAAM,OAAA,cAEL,CAFK,AAAIC,MACR,CAAC,2DAA2D,EAAE,OAAOD,EAAO;AAAA,oEAAuE,CAAC,EADhJ,oBAAA,OAAA,mBAAA,gBAAA,CAEN,EAEJ,CACF,0EATgBJ,2BAAAA,qCAAAA,8CCHhB,EAAA,EAAA,CAAA,CAAA,OAOA,IAAM,EAAgC,CACpC,SAAU,QAAQ,QAAQ,CAC1B,KAAM,CAAC,EAAK,IAAS,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,EAAK,EACrC,EAMM,EAA4C,CAChD,OAAQ,CAAC,qFAAqF,CAAC,GAC/F,MAAO,CAAC,oFAAoF,CAAC,CAC7F,MAAO,CAAC,wPAAwP,CAAC,EACnQ,CAEO,OAAM,EACH,IAAuB,AAE/B,aAAY,EAAkC,CAAC,CAAC,CAAE,CAChD,IAAI,CAAC,IAAI,CAAG,CAAE,GAAG,CAAW,CAAE,GAAG,CAAI,AAAC,CACxC,CAGA,YAA4B,CAC1B,OAAO,CAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAI,IAClD,CAOA,YAA4B,CAC1B,IAAM,EAAU,IAAI,CAAC,UAAU,GAC/B,GAAI,CAAC,EACH,MAAM,AAAI,CADE,KACI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAE,EAG/D,GAAI,CAEF,IAAM,EADS,AACC,IADG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAS,CAAE,SAAU,QAAS,QAAS,GAAO,GACrD,IAAI,GAC3B,OAAO,EAAQ,MAAM,CAAG,EAAI,EAAU,IACxC,CAAE,MAAO,EAAgB,OAEvB,GAAI,AASgB,UAAjB,OADY,AACL,EATM,GAQa,CACa,OAAV,GAAkB,WAAY,GATnB,GAAG,CAApB,EAAM,MAAM,CACpC,OAAO,IAET,OAAM,CACR,CACF,CACF,CCrDO,eAAe,IACpB,IAAM,EAAU,IAAI,EAEpB,GAAI,CAEF,MAAO,CAAE,KADI,EAAQ,UAAU,EACjB,CAChB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,KAAM,KAAM,MADL,CACY,YADK,MAAQ,EAAM,OAAO,CAAG,8BACrB,CACtC,CACF,0CAVsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,8DCJtB,IAAA,EAAA,EAAA,CAAA,CAAA","ignoreList":[0,1]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
module.exports=[74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},92658,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28478)},12581,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},12513,a=>{"use strict";var b=a.i(92658),c=a.i(74533);let d={platform:process.platform,exec:(a,b)=>(0,c.execSync)(a,b)},e={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class f{deps;constructor(a={}){this.deps={...d,...a}}getCommand(){return e[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function g(){let a=new f;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,a.i(12581).ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},12513,a=>{"use strict";var b=a.i(92658),c=a.i(74533);let d={platform:process.platform,exec:(a,b)=>(0,c.execSync)(a,b)},e={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class f{deps;constructor(a={}){this.deps={...d,...a}}getCommand(){return e[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function g(){let a=new f;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,a.i(12581).ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"00f46b544814f14a9bd450e71019c7325620386871",null),a.s(["pickFolder",()=>g],12513)},86139,a=>{"use strict";var b=a.i(12513);a.s([],53565),a.i(53565),a.s(["00f46b544814f14a9bd450e71019c7325620386871",()=>b.pickFolder],86139)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=%5Broot-of-the-server%5D__804c006d._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../../../packages/core/src/infrastructure/services/folder-dialog.service.ts","../../../../../../../src/presentation/web/app/actions/pick-folder.ts","../../../../../../../src/presentation/web/.next-internal/server/app/version/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","import { execSync } from 'node:child_process';\n\nexport interface FolderDialogDeps {\n platform: NodeJS.Platform;\n exec: (cmd: string, opts?: { encoding: BufferEncoding; timeout?: number }) => string;\n}\n\nconst defaultDeps: FolderDialogDeps = {\n platform: process.platform,\n exec: (cmd, opts) => execSync(cmd, opts) as unknown as string,\n};\n\n/**\n * Platform-specific commands that open a native OS folder picker dialog.\n * Each returns the chosen absolute folder path on stdout, or exits non-zero / returns empty on cancel.\n */\nconst PLATFORM_COMMANDS: Record<string, string> = {\n darwin: `osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'`,\n linux: `zenity --file-selection --directory --title=\"Select a repository folder\" 2>/dev/null`,\n win32: `powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\"`,\n};\n\nexport class FolderDialogService {\n private deps: FolderDialogDeps;\n\n constructor(deps: Partial<FolderDialogDeps> = {}) {\n this.deps = { ...defaultDeps, ...deps };\n }\n\n /** Returns the OS-specific command string, or null if the platform is unsupported. */\n getCommand(): string | null {\n return PLATFORM_COMMANDS[this.deps.platform] ?? null;\n }\n\n /**\n * Opens a native folder picker dialog and returns the selected absolute path.\n * Returns `null` if the user cancels the dialog.\n * Throws if the platform is unsupported or the command fails unexpectedly.\n */\n pickFolder(): string | null {\n const command = this.getCommand();\n if (!command) {\n throw new Error(`Unsupported platform: ${this.deps.platform}`);\n }\n\n try {\n const result = this.deps.exec(command, { encoding: 'utf-8', timeout: 60_000 });\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n } catch (error: unknown) {\n // User cancelled the dialog — exit code 1 from osascript/zenity/powershell\n if (isExecError(error) && error.status === 1) {\n return null;\n }\n throw error;\n }\n }\n}\n\nfunction isExecError(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n","'use server';\n\nimport { FolderDialogService } from '@shepai/core/infrastructure/services/folder-dialog.service';\n\nexport async function pickFolder(): Promise<{ path: string | null; error?: string }> {\n const service = new FolderDialogService();\n\n try {\n const path = service.pickFolder();\n return { path };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder dialog';\n return { path: null, error: message };\n }\n}\n","export {pickFolder as '
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../../../packages/core/src/infrastructure/services/folder-dialog.service.ts","../../../../../../../src/presentation/web/app/actions/pick-folder.ts","../../../../../../../src/presentation/web/.next-internal/server/app/version/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","import { execSync } from 'node:child_process';\n\nexport interface FolderDialogDeps {\n platform: NodeJS.Platform;\n exec: (cmd: string, opts?: { encoding: BufferEncoding; timeout?: number }) => string;\n}\n\nconst defaultDeps: FolderDialogDeps = {\n platform: process.platform,\n exec: (cmd, opts) => execSync(cmd, opts) as unknown as string,\n};\n\n/**\n * Platform-specific commands that open a native OS folder picker dialog.\n * Each returns the chosen absolute folder path on stdout, or exits non-zero / returns empty on cancel.\n */\nconst PLATFORM_COMMANDS: Record<string, string> = {\n darwin: `osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'`,\n linux: `zenity --file-selection --directory --title=\"Select a repository folder\" 2>/dev/null`,\n win32: `powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\"`,\n};\n\nexport class FolderDialogService {\n private deps: FolderDialogDeps;\n\n constructor(deps: Partial<FolderDialogDeps> = {}) {\n this.deps = { ...defaultDeps, ...deps };\n }\n\n /** Returns the OS-specific command string, or null if the platform is unsupported. */\n getCommand(): string | null {\n return PLATFORM_COMMANDS[this.deps.platform] ?? null;\n }\n\n /**\n * Opens a native folder picker dialog and returns the selected absolute path.\n * Returns `null` if the user cancels the dialog.\n * Throws if the platform is unsupported or the command fails unexpectedly.\n */\n pickFolder(): string | null {\n const command = this.getCommand();\n if (!command) {\n throw new Error(`Unsupported platform: ${this.deps.platform}`);\n }\n\n try {\n const result = this.deps.exec(command, { encoding: 'utf-8', timeout: 60_000 });\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n } catch (error: unknown) {\n // User cancelled the dialog — exit code 1 from osascript/zenity/powershell\n if (isExecError(error) && error.status === 1) {\n return null;\n }\n throw error;\n }\n }\n}\n\nfunction isExecError(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n","'use server';\n\nimport { FolderDialogService } from '@shepai/core/infrastructure/services/folder-dialog.service';\n\nexport async function pickFolder(): Promise<{ path: string | null; error?: string }> {\n const service = new FolderDialogService();\n\n try {\n const path = service.pickFolder();\n return { path };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder dialog';\n return { path: null, error: message };\n }\n}\n","export {pickFolder as '00f46b544814f14a9bd450e71019c7325620386871'} from 'ACTIONS_MODULE0'\n"],"names":["registerServerReference","ensureServerEntryExports","actions","i","length","action","Error"],"mappings":"oIAAoD,OAAA,cAAA,CAAA,EAAA,aAAA,oCAC3CA,0BAAAA,qCAAAA,EAAAA,uBAAuB,YAAQ,CAAA,CAAA,IAAA,iCCEjC,SAASC,EAAyBC,CAAc,EACrD,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQE,MAAM,CAAED,IAAK,CACvC,IAAME,EAASH,CAAO,CAACC,EAAE,CACzB,GAAI,AAAkB,YAAY,OAAvBE,EACT,MAAM,OAAA,cAEL,CAFK,AAAIC,MACR,CAAC,2DAA2D,EAAE,OAAOD,EAAO;AAAA,oEAAuE,CAAC,EADhJ,oBAAA,OAAA,mBAAA,gBAAA,CAEN,EAEJ,CACF,0EATgBJ,2BAAAA,qCAAAA,8CCHhB,EAAA,EAAA,CAAA,CAAA,OAOA,IAAM,EAAgC,CACpC,SAAU,QAAQ,QAAQ,CAC1B,KAAM,CAAC,EAAK,IAAS,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,EAAK,EACrC,EAMM,EAA4C,CAChD,OAAQ,CAAC,qFAAqF,CAAC,GAC/F,MAAO,CAAC,oFAAoF,CAAC,CAC7F,MAAO,CAAC,wPAAwP,CAAC,EACnQ,CAEO,OAAM,EACH,IAAuB,AAE/B,aAAY,EAAkC,CAAC,CAAC,CAAE,CAChD,IAAI,CAAC,IAAI,CAAG,CAAE,GAAG,CAAW,CAAE,GAAG,CAAI,AAAC,CACxC,CAGA,YAA4B,CAC1B,OAAO,CAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAI,IAClD,CAOA,YAA4B,CAC1B,IAAM,EAAU,IAAI,CAAC,UAAU,GAC/B,GAAI,CAAC,EACH,MAAM,AAAI,CADE,KACI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAE,EAG/D,GAAI,CAEF,IAAM,EADS,AACC,IADG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAS,CAAE,SAAU,QAAS,QAAS,GAAO,GACrD,IAAI,GAC3B,OAAO,EAAQ,MAAM,CAAG,EAAI,EAAU,IACxC,CAAE,MAAO,EAAgB,OAEvB,GAAI,AASgB,UAAjB,OADY,AACL,EATM,GAQa,CACa,OAAV,GAAkB,WAAY,GATnB,GAAG,CAApB,EAAM,MAAM,CACpC,OAAO,IAET,OAAM,CACR,CACF,CACF,CCrDO,eAAe,IACpB,IAAM,EAAU,IAAI,EAEpB,GAAI,CAEF,MAAO,CAAE,KADI,EAAQ,UAAU,EACjB,CAChB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,KAAM,KAAM,MADL,CACY,YADK,MAAQ,EAAM,OAAO,CAAG,8BACrB,CACtC,CACF,0CAVsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,8DCJtB,IAAA,EAAA,EAAA,CAAA,CAAA","ignoreList":[0,1]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},55721,(a,b,c)=>{"use strict";b.exports=a.r(18622)},10973,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactJsxRuntime},96960,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].React},55690,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactDOM},62485,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.AppRouterContext},21032,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactServerDOMTurbopackClient},15108,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.HooksClientContext},71915,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.ServerInsertedHtml},17300,88064,a=>{"use strict";var b=a.i(25700);let c=(0,b.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]);a.s(["Wrench",()=>c],17300);let d=(0,b.default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>d],88064)},52475,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"HandleISRError",{enumerable:!0,get:function(){return e}});let d=a.r(56704).workAsyncStorage;function e({error:a}){if(d){let b=d.getStore();if(b?.isStaticGeneration)throw a&&console.error(a),a}return null}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},43167,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return h}});let d=a.r(10973),e=a.r(52475),f={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},g={fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"},h=function({error:a}){let b=a?.digest;return(0,d.jsxs)("html",{id:"__next_error__",children:[(0,d.jsx)("head",{}),(0,d.jsxs)("body",{children:[(0,d.jsx)(e.HandleISRError,{error:a}),(0,d.jsx)("div",{style:f,children:(0,d.jsxs)("div",{children:[(0,d.jsxs)("h2",{style:g,children:["Application error: a ",b?"server":"client","-side exception has occurred while loading ",window.location.hostname," (see the"," ",b?"server logs":"browser console"," for more information)."]}),b?(0,d.jsx)("p",{style:g,children:`Digest: ${b}`}):null]})})]})]})};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},90920,a=>{"use strict";var b=a.i(10973),c=a.i(85536);function d({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}a.s(["Input",()=>d])},13126,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(66873),e="horizontal",f=["horizontal","vertical"],g=c.forwardRef((a,c)=>{var g;let{decorative:h,orientation:i=e,...j}=a,k=(g=i,f.includes(g))?i:e;return(0,b.jsx)(d.Primitive.div,{"data-orientation":k,...h?{role:"none"}:{"aria-orientation":"vertical"===k?k:void 0,role:"separator"},...j,ref:c})});g.displayName="Separator",a.s(["Root",()=>g,"Separator",()=>g],1443);var h=a.i(1443),h=h,i=a.i(85536);function j({className:a,orientation:c="horizontal",decorative:d=!0,...e}){return(0,b.jsx)(h.Root,{"data-slot":"separator",decorative:d,orientation:c,className:(0,i.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...e})}a.s(["Separator",()=>j],13126)},10568,a=>{"use strict";var b=a.i(89868);a.s(["XIcon",()=>b.default])},44338,a=>{"use strict";var b=a.i(10973),c=a.i(10568),d=a.i(71335),e=a.i(85536);function f({...a}){return(0,b.jsx)(d.Dialog.Root,{"data-slot":"sheet",...a})}function g({...a}){return(0,b.jsx)(d.Dialog.Portal,{"data-slot":"sheet-portal",...a})}function h({className:a,...c}){return(0,b.jsx)(d.Dialog.Overlay,{"data-slot":"sheet-overlay",className:(0,e.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...c})}function i({className:a,children:f,side:i="right",showCloseButton:j=!0,...k}){return(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{}),(0,b.jsxs)(d.Dialog.Content,{"data-slot":"sheet-content",className:(0,e.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===i&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===i&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===i&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===i&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",a),...k,children:[f,j?(0,b.jsxs)(d.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,b.jsx)(c.XIcon,{className:"size-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})]})}function j({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"sheet-header",className:(0,e.cn)("flex flex-col gap-1.5 p-4",a),...c})}function k({className:a,...c}){return(0,b.jsx)(d.Dialog.Title,{"data-slot":"sheet-title",className:(0,e.cn)("text-foreground font-semibold",a),...c})}function l({className:a,...c}){return(0,b.jsx)(d.Dialog.Description,{"data-slot":"sheet-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...c})}a.s(["Sheet",()=>f,"SheetContent",()=>i,"SheetDescription",()=>l,"SheetHeader",()=>j,"SheetTitle",()=>k])},66560,a=>{"use strict";var b,c=a.i(10973),d=a.i(96960),e=a.i(55003),f=a.i(69845),g=a.i(25700);let h=(0,g.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var i=a.i(17300),j=a.i(67424),k=a.i(67837),l=a.i(59706);a.i(47938);var m=a.i(59503);a.i(69345);var n=a.i(46969);a.i(48822);var o=a.i(16911);a.i(4388);var p=a.i(27756);a.i(77466);var q=a.i(85637);a.i(34338);var r=a.i(54860),s=a.i(49474);let t={skills:"true"===(b=process.env.NEXT_PUBLIC_FLAG_SKILLS)||"1"===b};function u({features:a,onNewFeature:b,onFeatureClick:g,onFeaturesFolderClick:u,onFeaturesMenuClick:v}){let w=(0,f.usePathname)(),{state:x}=(0,e.useSidebar)(),{mounted:y,visible:z}=function(a,b){let[c,e]=(0,d.useState)(!a),[f,g]=(0,d.useState)(!a);return(0,d.useEffect)(()=>{if(!a){e(!0);let a=requestAnimationFrame(()=>g(!0));return()=>cancelAnimationFrame(a)}g(!1);let b=window.setTimeout(()=>e(!1),200);return()=>window.clearTimeout(b)},[a,200]),{mounted:c,visible:f}}("collapsed"===x,0),A=s.featureStatusOrder.map(b=>{let{label:c}=s.featureStatusConfig[b],d=a.filter(a=>a.status===b);return{key:b,label:c,items:d}});return(0,c.jsxs)(e.Sidebar,{"data-testid":"app-sidebar",collapsible:"icon",children:[(0,c.jsx)(e.SidebarHeader,{children:(0,c.jsxs)(e.SidebarMenu,{children:[(0,c.jsx)(e.SidebarMenuItem,{children:(0,c.jsxs)("div",{className:"flex h-8 items-center group-data-[collapsible=icon]:justify-center",children:[y?(0,c.jsxs)("div",{className:["flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2 transition-opacity duration-200 ease-out",z?"opacity-100":"opacity-0"].join(" "),"aria-hidden":!z,children:[(0,c.jsx)(o.ShepLogo,{className:"shrink-0",size:20}),(0,c.jsx)("span",{className:"truncate text-sm font-semibold tracking-tight",children:"Shep"})]}):null,(0,c.jsx)(n.SidebarCollapseToggle,{className:"shrink-0 transition-all duration-200"})]})}),(0,c.jsx)(m.SidebarNavItem,{icon:h,label:"Control Center",href:"/",active:"/"===w}),(0,c.jsx)(m.SidebarNavItem,{icon:i.Wrench,label:"Tools",href:"/tools",active:"/tools"===w}),t.skills?(0,c.jsx)(m.SidebarNavItem,{icon:j.Puzzle,label:"Skills",href:"/skills",active:"/skills"===w}):null]})}),(0,c.jsx)(e.SidebarContent,{children:y?(0,c.jsxs)("div",{className:["min-w-0 overflow-hidden transition-opacity duration-200 ease-out [&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none",z?"opacity-100":"opacity-0"].join(" "),children:[(0,c.jsx)(r.SidebarSectionHeader,{label:"Features",onFolderClick:u,onMenuClick:v}),(0,c.jsx)(l.ScrollArea,{children:A.map(({key:a,label:b,items:d})=>d.length>0?(0,c.jsx)(q.FeatureStatusGroup,{label:b,count:d.length,children:d.map(a=>(0,c.jsx)(p.FeatureListItem,{name:a.name,status:a.status,startedAt:a.startedAt,duration:a.duration,onClick:g?()=>g(a.name):void 0},a.name))},a):null)})]}):null}),(0,c.jsx)(e.SidebarFooter,{children:(0,c.jsx)(e.SidebarMenu,{children:(0,c.jsx)(e.SidebarMenuItem,{children:(0,c.jsxs)(e.SidebarMenuButton,{onClick:b,tooltip:"New feature",children:[(0,c.jsx)(k.Plus,{}),(0,c.jsx)("span",{children:"New feature"})]})})})}),(0,c.jsx)(e.SidebarRail,{})]})}a.i(65079);var v=a.i(21080);a.i(20786);var w=a.i(22550);let x=(0,g.default)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]),y=(0,g.default)("volume-off",[["path",{d:"M16 9a5 5 0 0 1 .95 2.293",key:"1fgyg8"}],["path",{d:"M19.364 5.636a9 9 0 0 1 1.889 9.96",key:"l3zxae"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11",key:"1gbwow"}],["path",{d:"M9.828 4.172A.686.686 0 0 1 11 4.657v.686",key:"s2je0y"}]]);var z=a.i(18948),A=a.i(2103);function B(){let{enabled:a,toggle:b}=(0,A.useSoundEnabled)();return(0,c.jsxs)(z.Button,{variant:"ghost",size:"icon",onClick:b,"aria-label":a?"Mute sounds":"Unmute sounds",children:[a?(0,c.jsx)(x,{className:"h-5 w-5"}):(0,c.jsx)(y,{className:"h-5 w-5"}),(0,c.jsx)("span",{className:"sr-only",children:"Toggle sound"})]})}var C=a.i(84871),D=a.i(52313),E=a.i(46847),F=a.i(76431);let G={[E.NotificationSeverity.Success]:"success",[E.NotificationSeverity.Error]:"error",[E.NotificationSeverity.Warning]:"warning",[E.NotificationSeverity.Info]:"info"},H={[E.NotificationSeverity.Success]:"celebration",[E.NotificationSeverity.Error]:"caution",[E.NotificationSeverity.Warning]:"notification",[E.NotificationSeverity.Info]:"button"};function I({children:a}){!function(){let{events:a}=(0,C.useAgentEventsContext)(),b=(0,F.useSound)("celebration",{volume:.5}),c=(0,F.useSound)("caution",{volume:.5}),e=(0,F.useSound)("notification",{volume:.5}),f=(0,F.useSound)("button",{volume:.5}),g=(0,d.useMemo)(()=>({celebration:b,caution:c,notification:e,button:f}),[b,c,e,f]),[h,i]=(0,d.useState)(()=>void 0===globalThis.Notification?"default":globalThis.Notification.permission),j=(0,d.useRef)(0);(0,d.useEffect)(()=>{if(a.length<=j.current)return;let b=a.slice(j.current);for(let c of(j.current=a.length,b)){if(c.severity!==E.NotificationSeverity.Error&&c.severity!==E.NotificationSeverity.Warning&&c.severity!==E.NotificationSeverity.Success)continue;!function(a){let b=G[a.severity]??"info",c=a.eventType===E.NotificationEventType.WaitingApproval;D.toast[b](a.featureName,{description:a.message,...c&&{action:{label:"Review",onClick:()=>{window.dispatchEvent(new CustomEvent("shep:select-feature",{detail:{featureId:a.featureId}}))}}}})}(c),globalThis.Notification?.permission==="granted"&&new Notification(`Shep: ${c.featureName}`,{body:c.message,icon:"/favicon-light.svg"});let a=H[c.severity];g[a]?.play()}},[a,g]),(0,d.useCallback)(async()=>{void 0===globalThis.Notification||i(await globalThis.Notification.requestPermission())},[])}();let b=(0,d.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shep:open-create-drawer"))},[]),f=(0,d.useCallback)(a=>{window.dispatchEvent(new CustomEvent("shep:add-repository",{detail:{path:a}}))},[]);return(0,c.jsxs)(e.SidebarProvider,{children:[(0,c.jsx)(u,{features:[],onNewFeature:b}),(0,c.jsx)(e.SidebarInset,{children:(0,c.jsxs)("div",{className:"relative h-full",children:[(0,c.jsxs)("div",{className:"absolute top-3 right-3 z-50 flex gap-1",children:[(0,c.jsx)(v.AddRepositoryButton,{onSelect:f}),(0,c.jsx)(B,{}),(0,c.jsx)(w.ThemeToggle,{})]}),(0,c.jsx)("main",{className:"h-full",children:a})]})})]})}function J({children:a}){return(0,c.jsx)(C.AgentEventsProvider,{children:(0,c.jsx)(I,{children:a})})}a.s(["AppShell",()=>J],66560)},58313,a=>{"use strict";var b=a.i(10973),c=a.i(52313);let d=({...a})=>(0,b.jsx)(c.Toaster,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...a});a.s(["Toaster",()=>d])}];
|
|
1
|
+
module.exports=[43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},55721,(a,b,c)=>{"use strict";b.exports=a.r(18622)},10973,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactJsxRuntime},96960,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].React},55690,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactDOM},62485,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.AppRouterContext},21032,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactServerDOMTurbopackClient},15108,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.HooksClientContext},71915,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.ServerInsertedHtml},17300,88064,a=>{"use strict";var b=a.i(25700);let c=(0,b.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]);a.s(["Wrench",()=>c],17300);let d=(0,b.default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>d],88064)},52475,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"HandleISRError",{enumerable:!0,get:function(){return e}});let d=a.r(56704).workAsyncStorage;function e({error:a}){if(d){let b=d.getStore();if(b?.isStaticGeneration)throw a&&console.error(a),a}return null}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},43167,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return h}});let d=a.r(10973),e=a.r(52475),f={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},g={fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"},h=function({error:a}){let b=a?.digest;return(0,d.jsxs)("html",{id:"__next_error__",children:[(0,d.jsx)("head",{}),(0,d.jsxs)("body",{children:[(0,d.jsx)(e.HandleISRError,{error:a}),(0,d.jsx)("div",{style:f,children:(0,d.jsxs)("div",{children:[(0,d.jsxs)("h2",{style:g,children:["Application error: a ",b?"server":"client","-side exception has occurred while loading ",window.location.hostname," (see the"," ",b?"server logs":"browser console"," for more information)."]}),b?(0,d.jsx)("p",{style:g,children:`Digest: ${b}`}):null]})})]})]})};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},90920,a=>{"use strict";var b=a.i(10973),c=a.i(85536);function d({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}a.s(["Input",()=>d])},13126,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(66873),e="horizontal",f=["horizontal","vertical"],g=c.forwardRef((a,c)=>{var g;let{decorative:h,orientation:i=e,...j}=a,k=(g=i,f.includes(g))?i:e;return(0,b.jsx)(d.Primitive.div,{"data-orientation":k,...h?{role:"none"}:{"aria-orientation":"vertical"===k?k:void 0,role:"separator"},...j,ref:c})});g.displayName="Separator",a.s(["Root",()=>g,"Separator",()=>g],1443);var h=a.i(1443),h=h,i=a.i(85536);function j({className:a,orientation:c="horizontal",decorative:d=!0,...e}){return(0,b.jsx)(h.Root,{"data-slot":"separator",decorative:d,orientation:c,className:(0,i.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...e})}a.s(["Separator",()=>j],13126)},10568,a=>{"use strict";var b=a.i(89868);a.s(["XIcon",()=>b.default])},44338,a=>{"use strict";var b=a.i(10973),c=a.i(10568),d=a.i(71335),e=a.i(85536);function f({...a}){return(0,b.jsx)(d.Dialog.Root,{"data-slot":"sheet",...a})}function g({...a}){return(0,b.jsx)(d.Dialog.Portal,{"data-slot":"sheet-portal",...a})}function h({className:a,...c}){return(0,b.jsx)(d.Dialog.Overlay,{"data-slot":"sheet-overlay",className:(0,e.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...c})}function i({className:a,children:f,side:i="right",showCloseButton:j=!0,...k}){return(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{}),(0,b.jsxs)(d.Dialog.Content,{"data-slot":"sheet-content",className:(0,e.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===i&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===i&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===i&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===i&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",a),...k,children:[f,j?(0,b.jsxs)(d.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,b.jsx)(c.XIcon,{className:"size-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})]})}function j({className:a,...c}){return(0,b.jsx)("div",{"data-slot":"sheet-header",className:(0,e.cn)("flex flex-col gap-1.5 p-4",a),...c})}function k({className:a,...c}){return(0,b.jsx)(d.Dialog.Title,{"data-slot":"sheet-title",className:(0,e.cn)("text-foreground font-semibold",a),...c})}function l({className:a,...c}){return(0,b.jsx)(d.Dialog.Description,{"data-slot":"sheet-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...c})}a.s(["Sheet",()=>f,"SheetContent",()=>i,"SheetDescription",()=>l,"SheetHeader",()=>j,"SheetTitle",()=>k])},66560,a=>{"use strict";var b,c=a.i(10973),d=a.i(96960),e=a.i(55003),f=a.i(69845),g=a.i(25700);let h=(0,g.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var i=a.i(17300),j=a.i(67424),k=a.i(67837),l=a.i(59706);a.i(47938);var m=a.i(59503);a.i(69345);var n=a.i(46969);a.i(48822);var o=a.i(16911);a.i(4388);var p=a.i(27756);a.i(77466);var q=a.i(85637);a.i(34338);var r=a.i(54860),s=a.i(49474);let t={skills:"true"===(b=process.env.NEXT_PUBLIC_FLAG_SKILLS)||"1"===b};function u({features:a,onNewFeature:b,onFeatureClick:g,onFeaturesFolderClick:u,onFeaturesMenuClick:v}){let w=(0,f.usePathname)(),{state:x}=(0,e.useSidebar)(),{mounted:y,visible:z}=function(a,b){let[c,e]=(0,d.useState)(!a),[f,g]=(0,d.useState)(!a);return(0,d.useEffect)(()=>{if(!a){e(!0);let a=requestAnimationFrame(()=>g(!0));return()=>cancelAnimationFrame(a)}g(!1);let b=window.setTimeout(()=>e(!1),200);return()=>window.clearTimeout(b)},[a,200]),{mounted:c,visible:f}}("collapsed"===x,0),A=s.featureStatusOrder.map(b=>{let{label:c}=s.featureStatusConfig[b],d=a.filter(a=>a.status===b);return{key:b,label:c,items:d}});return(0,c.jsxs)(e.Sidebar,{"data-testid":"app-sidebar",collapsible:"icon",children:[(0,c.jsx)(e.SidebarHeader,{children:(0,c.jsxs)(e.SidebarMenu,{children:[(0,c.jsx)(e.SidebarMenuItem,{children:(0,c.jsxs)("div",{className:"flex h-8 items-center group-data-[collapsible=icon]:justify-center",children:[y?(0,c.jsxs)("div",{className:["flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2 transition-opacity duration-200 ease-out",z?"opacity-100":"opacity-0"].join(" "),"aria-hidden":!z,children:[(0,c.jsx)(o.ShepLogo,{className:"shrink-0",size:20}),(0,c.jsx)("span",{className:"truncate text-sm font-semibold tracking-tight",children:"Shep"})]}):null,(0,c.jsx)(n.SidebarCollapseToggle,{className:"shrink-0 transition-all duration-200"})]})}),(0,c.jsx)(m.SidebarNavItem,{icon:h,label:"Control Center",href:"/",active:"/"===w}),(0,c.jsx)(m.SidebarNavItem,{icon:i.Wrench,label:"Tools",href:"/tools",active:"/tools"===w}),t.skills?(0,c.jsx)(m.SidebarNavItem,{icon:j.Puzzle,label:"Skills",href:"/skills",active:"/skills"===w}):null]})}),(0,c.jsx)(e.SidebarContent,{children:y?(0,c.jsxs)("div",{className:["min-w-0 overflow-hidden transition-opacity duration-200 ease-out [&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none",z?"opacity-100":"opacity-0"].join(" "),children:[(0,c.jsx)(r.SidebarSectionHeader,{label:"Features",onFolderClick:u,onMenuClick:v}),(0,c.jsx)(l.ScrollArea,{children:A.map(({key:a,label:b,items:d})=>d.length>0?(0,c.jsx)(q.FeatureStatusGroup,{label:b,count:d.length,children:d.map(a=>(0,c.jsx)(p.FeatureListItem,{name:a.name,status:a.status,startedAt:a.startedAt,duration:a.duration,onClick:g?()=>g(a.name):void 0},a.name))},a):null)})]}):null}),(0,c.jsx)(e.SidebarFooter,{children:(0,c.jsx)(e.SidebarMenu,{children:(0,c.jsx)(e.SidebarMenuItem,{children:(0,c.jsxs)(e.SidebarMenuButton,{onClick:b,tooltip:"New feature",children:[(0,c.jsx)(k.Plus,{}),(0,c.jsx)("span",{children:"New feature"})]})})})}),(0,c.jsx)(e.SidebarRail,{})]})}a.i(65079);var v=a.i(21080);a.i(20786);var w=a.i(22550);let x=(0,g.default)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]),y=(0,g.default)("volume-off",[["path",{d:"M16 9a5 5 0 0 1 .95 2.293",key:"1fgyg8"}],["path",{d:"M19.364 5.636a9 9 0 0 1 1.889 9.96",key:"l3zxae"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11",key:"1gbwow"}],["path",{d:"M9.828 4.172A.686.686 0 0 1 11 4.657v.686",key:"s2je0y"}]]);var z=a.i(18948),A=a.i(2103);function B(){let{enabled:a,toggle:b}=(0,A.useSoundEnabled)();return(0,c.jsxs)(z.Button,{variant:"ghost",size:"icon",onClick:b,"aria-label":a?"Mute sounds":"Unmute sounds",children:[a?(0,c.jsx)(x,{className:"h-5 w-5"}):(0,c.jsx)(y,{className:"h-5 w-5"}),(0,c.jsx)("span",{className:"sr-only",children:"Toggle sound"})]})}var C=a.i(84871),D=a.i(52313),E=a.i(46847),F=a.i(19884);let G={[E.NotificationSeverity.Success]:"success",[E.NotificationSeverity.Error]:"error",[E.NotificationSeverity.Warning]:"warning",[E.NotificationSeverity.Info]:"info"},H={[E.NotificationSeverity.Success]:"notification-success",[E.NotificationSeverity.Error]:"notification-error",[E.NotificationSeverity.Warning]:"notification-warning",[E.NotificationSeverity.Info]:"notification-info"};function I({children:a}){!function(){let{events:a}=(0,C.useAgentEventsContext)(),b=(0,F.useSoundAction)("notification-success"),c=(0,F.useSoundAction)("notification-error"),e=(0,F.useSoundAction)("notification-warning"),f=(0,F.useSoundAction)("notification-info"),g=(0,d.useMemo)(()=>({"notification-success":b,"notification-error":c,"notification-warning":e,"notification-info":f}),[b,c,e,f]),[h,i]=(0,d.useState)(()=>void 0===globalThis.Notification?"default":globalThis.Notification.permission),j=(0,d.useRef)(0);(0,d.useEffect)(()=>{if(a.length<=j.current)return;let b=a.slice(j.current);for(let c of(j.current=a.length,b)){if(c.severity!==E.NotificationSeverity.Error&&c.severity!==E.NotificationSeverity.Warning&&c.severity!==E.NotificationSeverity.Success)continue;!function(a){let b=G[a.severity]??"info",c=a.eventType===E.NotificationEventType.WaitingApproval;D.toast[b](a.featureName,{description:a.message,...c&&{action:{label:"Review",onClick:()=>{window.dispatchEvent(new CustomEvent("shep:select-feature",{detail:{featureId:a.featureId}}))}}}})}(c),globalThis.Notification?.permission==="granted"&&new Notification(`Shep: ${c.featureName}`,{body:c.message,icon:"/favicon-light.svg"});let a=H[c.severity];g[a]?.play()}},[a,g]),(0,d.useCallback)(async()=>{void 0===globalThis.Notification||i(await globalThis.Notification.requestPermission())},[])}();let b=(0,d.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shep:open-create-drawer"))},[]),f=(0,d.useCallback)(a=>{window.dispatchEvent(new CustomEvent("shep:add-repository",{detail:{path:a}}))},[]);return(0,c.jsxs)(e.SidebarProvider,{children:[(0,c.jsx)(u,{features:[],onNewFeature:b}),(0,c.jsx)(e.SidebarInset,{children:(0,c.jsxs)("div",{className:"relative h-full",children:[(0,c.jsxs)("div",{className:"absolute top-3 right-3 z-50 flex gap-1",children:[(0,c.jsx)(v.AddRepositoryButton,{onSelect:f}),(0,c.jsx)(B,{}),(0,c.jsx)(w.ThemeToggle,{})]}),(0,c.jsx)("main",{className:"h-full",children:a})]})})]})}function J({children:a}){return(0,c.jsx)(C.AgentEventsProvider,{children:(0,c.jsx)(I,{children:a})})}a.s(["AppShell",()=>J],66560)},58313,a=>{"use strict";var b=a.i(10973),c=a.i(52313);let d=({...a})=>(0,b.jsx)(c.Toaster,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...a});a.s(["Toaster",()=>d])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__87fda958._.js.map
|