@slycode/slycode 0.2.17 → 0.2.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/bin/sly-kanban.js +3 -3
  2. package/dist/data/scaffold-templates/mcp.json +1 -6
  3. package/dist/scripts/kanban.js +9 -3
  4. package/dist/web/.next/BUILD_ID +1 -1
  5. package/dist/web/.next/build-manifest.json +2 -2
  6. package/dist/web/.next/server/app/_global-error.html +2 -2
  7. package/dist/web/.next/server/app/_global-error.rsc +1 -1
  8. package/dist/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/dist/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/dist/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/dist/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/dist/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/dist/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/dist/web/.next/server/app/_not-found.html +1 -1
  15. package/dist/web/.next/server/app/_not-found.rsc +3 -3
  16. package/dist/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  17. package/dist/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/dist/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/dist/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/dist/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/dist/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/dist/web/.next/server/app/api/cli-assets/sync/route.js +3 -2
  23. package/dist/web/.next/server/app/api/cli-assets/sync/route.js.nft.json +1 -1
  24. package/dist/web/.next/server/app/page_client-reference-manifest.js +1 -1
  25. package/dist/web/.next/server/app/project/[id]/page_client-reference-manifest.js +1 -1
  26. package/dist/web/.next/server/chunks/[root-of-the-server]__12f6cd6f._.js +1 -1
  27. package/dist/web/.next/server/chunks/[root-of-the-server]__15fc9266._.js +1 -1
  28. package/dist/web/.next/server/chunks/[root-of-the-server]__279e9bf3._.js +1 -1
  29. package/dist/web/.next/server/chunks/[root-of-the-server]__2d1f0ed9._.js +1 -1
  30. package/dist/web/.next/server/chunks/[root-of-the-server]__3b9d3e43._.js +42 -23
  31. package/dist/web/.next/server/chunks/[root-of-the-server]__47dd878e._.js +1 -1
  32. package/dist/web/.next/server/chunks/[root-of-the-server]__5b8c9374._.js +3 -0
  33. package/dist/web/.next/server/chunks/[root-of-the-server]__5e08b942._.js +1 -1
  34. package/dist/web/.next/server/chunks/[root-of-the-server]__71bb3374._.js +1 -1
  35. package/dist/web/.next/server/chunks/[root-of-the-server]__7603305e._.js +1 -1
  36. package/dist/web/.next/server/chunks/[root-of-the-server]__7c476ad6._.js +1 -1
  37. package/dist/web/.next/server/chunks/[root-of-the-server]__846ca56f._.js +1 -1
  38. package/dist/web/.next/server/chunks/[root-of-the-server]__98d88050._.js +1 -1
  39. package/dist/web/.next/server/chunks/[root-of-the-server]__b273cc05._.js +1 -1
  40. package/dist/web/.next/server/chunks/[root-of-the-server]__d6362272._.js +1 -1
  41. package/dist/web/.next/server/chunks/[root-of-the-server]__de1277ee._.js +1 -1
  42. package/dist/web/.next/server/chunks/[root-of-the-server]__f3e501b6._.js +1 -1
  43. package/dist/web/.next/server/chunks/[root-of-the-server]__f97e93fa._.js +2 -2
  44. package/dist/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_234fda9c.js +3 -0
  45. package/dist/web/.next/server/chunks/src_lib_asset-scanner_ts_c599fd1c._.js +1 -1
  46. package/dist/web/.next/server/chunks/ssr/[root-of-the-server]__193dbb5b._.js +1 -1
  47. package/dist/web/.next/server/chunks/ssr/src_components_Dashboard_tsx_efc4dc27._.js +1 -1
  48. package/dist/web/.next/server/chunks/ssr/src_lib_registry_ts_2fc87c9c._.js +1 -1
  49. package/dist/web/.next/server/pages/404.html +1 -1
  50. package/dist/web/.next/server/pages/500.html +2 -2
  51. package/dist/web/.next/static/chunks/747f5e5f9dcf2621.css +1 -0
  52. package/dist/web/.next/static/chunks/f55f3c8c1a52f80c.js +1 -0
  53. package/dist/web/src/app/api/cli-assets/assistant/route.ts +30 -13
  54. package/dist/web/src/app/api/cli-assets/store/route.ts +5 -3
  55. package/dist/web/src/app/api/cli-assets/sync/route.ts +31 -1
  56. package/dist/web/src/app/api/file/route.ts +2 -1
  57. package/dist/web/src/app/layout.tsx +1 -1
  58. package/dist/web/src/components/AssetViewer.tsx +99 -0
  59. package/dist/web/src/components/CliAssetsTab.tsx +2 -2
  60. package/dist/web/src/components/StoreView.tsx +168 -61
  61. package/dist/web/src/lib/asset-scanner.ts +1 -1
  62. package/dist/web/src/lib/mcp-common.ts +76 -37
  63. package/dist/web/src/lib/provider-paths.ts +1 -1
  64. package/dist/web/src/lib/store-scanner.ts +1 -1
  65. package/dist/web/tsconfig.tsbuildinfo +1 -1
  66. package/package.json +3 -2
  67. package/templates/kanban-seed.json +1 -1
  68. package/dist/web/.next/server/chunks/[root-of-the-server]__3c5ef8ec._.js +0 -3
  69. package/dist/web/.next/static/chunks/2744d72103f49934.css +0 -1
  70. package/dist/web/.next/static/chunks/e8b318caa49fce00.js +0 -1
  71. /package/dist/web/.next/static/{zp7O3ZtAOySM7ONwqP-kQ → qMss0q1Ox38k4U6oxip2H}/_buildManifest.js +0 -0
  72. /package/dist/web/.next/static/{zp7O3ZtAOySM7ONwqP-kQ → qMss0q1Ox38k4U6oxip2H}/_clientMiddlewareManifest.json +0 -0
  73. /package/dist/web/.next/static/{zp7O3ZtAOySM7ONwqP-kQ → qMss0q1Ox38k4U6oxip2H}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../README.md","../../../../../../eslint.config.mjs","../../../../../../next.config.ts","../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../../../package-lock.json","../../../../../../package.json","../../../../../../postcss.config.mjs","../../../../../../public/favicon.png","../../../../../../public/file.svg","../../../../../../public/globe.svg","../../../../../../public/next.svg","../../../../../../public/slycode.webp","../../../../../../public/slycode_light.webp","../../../../../../public/slycode_logo.webp","../../../../../../public/slycode_logo_light.webp","../../../../../../public/vercel.svg","../../../../../../public/window.svg","../../../../../../src/app/api/areas/route.ts","../../../../../../src/app/api/bridge/[...path]/route.ts","../../../../../../src/app/api/cli-assets/assistant/route.ts","../../../../../../src/app/api/cli-assets/fix/route.ts","../../../../../../src/app/api/cli-assets/import/route.ts","../../../../../../src/app/api/cli-assets/route.ts","../../../../../../src/app/api/cli-assets/store/preview/route.ts","../../../../../../src/app/api/cli-assets/store/route.ts","../../../../../../src/app/api/cli-assets/sync/route.ts","../../../../../../src/app/api/cli-assets/updates/route.ts","../../../../../../src/app/api/dashboard/route.ts","../../../../../../src/app/api/events/route.ts","../../../../../../src/app/api/file/route.ts","../../../../../../src/app/api/git-status/route.ts","../../../../../../src/app/api/kanban/route.ts","../../../../../../src/app/api/kanban/stream/route.ts","../../../../../../src/app/api/projects/[id]/route.ts","../../../../../../src/app/api/projects/analyze/route.ts","../../../../../../src/app/api/projects/reorder/route.ts","../../../../../../src/app/api/projects/route.ts","../../../../../../src/app/api/providers/route.ts","../../../../../../src/app/api/scheduler/route.ts","../../../../../../src/app/api/search/route.ts","../../../../../../src/app/api/settings/route.ts","../../../../../../src/app/api/sly-actions/invalidate/route.ts","../../../../../../src/app/api/sly-actions/route.ts","../../../../../../src/app/api/sly-actions/stream/route.ts","../../../../../../src/app/api/system-stats/route.ts","../../../../../../src/app/api/terminal-classes/route.ts","../../../../../../src/app/api/transcribe/route.ts","../../../../../../src/app/api/version-check/route.ts","../../../../../../src/app/globals.css","../../../../../../src/app/layout.tsx","../../../../../../src/app/page.tsx","../../../../../../src/app/project/[id]/page.tsx","../../../../../../src/components/ActionUpdatesModal.tsx","../../../../../../src/components/ActivityFeed.tsx","../../../../../../src/components/AddProjectModal.tsx","../../../../../../src/components/AssetAssistant.tsx","../../../../../../src/components/AssetMatrix.tsx","../../../../../../src/components/AssetViewer.tsx","../../../../../../src/components/AutomationConfig.tsx","../../../../../../src/components/AutomationsScreen.tsx","../../../../../../src/components/CardModal.tsx","../../../../../../src/components/ClaudeTerminalPanel.tsx","../../../../../../src/components/CliAssetsTab.tsx","../../../../../../src/components/ConfirmDialog.tsx","../../../../../../src/components/ConnectionStatusIndicator.tsx","../../../../../../src/components/ContextMenu.tsx","../../../../../../src/components/Dashboard.tsx","../../../../../../src/components/FloatingVoiceWidget.tsx","../../../../../../src/components/GlobalClaudePanel.tsx","../../../../../../src/components/HealthDot.tsx","../../../../../../src/components/HealthMonitor.tsx","../../../../../../src/components/KanbanCardItem.tsx","../../../../../../src/components/KanbanColumn.tsx","../../../../../../src/components/MarkdownContent.tsx","../../../../../../src/components/PlatformBadges.tsx","../../../../../../src/components/ProjectCard.tsx","../../../../../../src/components/ProjectHeader.tsx","../../../../../../src/components/ProjectKanban.tsx","../../../../../../src/components/ProjectPageClient.tsx","../../../../../../src/components/ProjectView.tsx","../../../../../../src/components/SearchBar.tsx","../../../../../../src/components/SkillDiffViewer.tsx","../../../../../../src/components/SlyActionConfigModal.tsx","../../../../../../src/components/StoreView.tsx","../../../../../../src/components/Terminal.tsx","../../../../../../src/components/ThemeToggle.tsx","../../../../../../src/components/UpdatesView.tsx","../../../../../../src/components/VersionUpdateToast.tsx","../../../../../../src/components/VoiceControlBar.tsx","../../../../../../src/components/VoiceErrorPopup.tsx","../../../../../../src/components/VoiceSettingsPopover.tsx","../../../../../../src/contexts/VoiceContext.tsx","../../../../../../src/hooks/useConnectionStatus.ts","../../../../../../src/hooks/useKeyboardShortcuts.ts","../../../../../../src/hooks/usePolling.ts","../../../../../../src/hooks/useSettings.ts","../../../../../../src/hooks/useSlyActionsConfig.ts","../../../../../../src/hooks/useVoiceRecorder.ts","../../../../../../src/hooks/useVoiceShortcuts.ts","../../../../../../src/instrumentation.ts","../../../../../../src/lib/action-scanner.ts","../../../../../../src/lib/asset-scanner.ts","../../../../../../src/lib/connection-manager.ts","../../../../../../src/lib/cron-utils.ts","../../../../../../src/lib/event-log.ts","../../../../../../src/lib/health-score.ts","../../../../../../src/lib/kanban-paths.ts","../../../../../../src/lib/mcp-common.ts","../../../../../../src/lib/paths.ts","../../../../../../src/lib/provider-paths.ts","../../../../../../src/lib/registry.ts","../../../../../../src/lib/scheduler.ts","../../../../../../src/lib/sly-actions.ts","../../../../../../src/lib/store-scanner.ts","../../../../../../src/lib/tab-sync.ts","../../../../../../src/lib/terminal-events.ts","../../../../../../src/lib/types.ts","../../../../../../src/lib/webm-to-ogg-opus.ts","../../../../../../tsconfig.json","../../../../../../tsconfig.tsbuildinfo","../../../../chunks/[root-of-the-server]__3c5ef8ec._.js","../../../../chunks/[root-of-the-server]__8f5ebbc3._.js","../../../../chunks/[turbopack]_runtime.js","../../../../chunks/_next-internal_server_app_api_cli-assets_sync_route_actions_69845b95.js","../../../../chunks/node_modules_next_1402a1da._.js","../../../../chunks/src_lib_asset-scanner_ts_c599fd1c._.js","./route_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../../../README.md","../../../../../../eslint.config.mjs","../../../../../../next.config.ts","../../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js","../../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../../node_modules/next/dist/lib/constants.js","../../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../../node_modules/next/dist/lib/is-error.js","../../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../node_modules/next/package.json","../../../../../../package-lock.json","../../../../../../package.json","../../../../../../postcss.config.mjs","../../../../../../public/favicon.png","../../../../../../public/file.svg","../../../../../../public/globe.svg","../../../../../../public/next.svg","../../../../../../public/slycode.webp","../../../../../../public/slycode_light.webp","../../../../../../public/slycode_logo.webp","../../../../../../public/slycode_logo_light.webp","../../../../../../public/vercel.svg","../../../../../../public/window.svg","../../../../../../src/app/api/areas/route.ts","../../../../../../src/app/api/bridge/[...path]/route.ts","../../../../../../src/app/api/cli-assets/assistant/route.ts","../../../../../../src/app/api/cli-assets/fix/route.ts","../../../../../../src/app/api/cli-assets/import/route.ts","../../../../../../src/app/api/cli-assets/route.ts","../../../../../../src/app/api/cli-assets/store/preview/route.ts","../../../../../../src/app/api/cli-assets/store/route.ts","../../../../../../src/app/api/cli-assets/sync/route.ts","../../../../../../src/app/api/cli-assets/updates/route.ts","../../../../../../src/app/api/dashboard/route.ts","../../../../../../src/app/api/events/route.ts","../../../../../../src/app/api/file/route.ts","../../../../../../src/app/api/git-status/route.ts","../../../../../../src/app/api/kanban/route.ts","../../../../../../src/app/api/kanban/stream/route.ts","../../../../../../src/app/api/projects/[id]/route.ts","../../../../../../src/app/api/projects/analyze/route.ts","../../../../../../src/app/api/projects/reorder/route.ts","../../../../../../src/app/api/projects/route.ts","../../../../../../src/app/api/providers/route.ts","../../../../../../src/app/api/scheduler/route.ts","../../../../../../src/app/api/search/route.ts","../../../../../../src/app/api/settings/route.ts","../../../../../../src/app/api/sly-actions/invalidate/route.ts","../../../../../../src/app/api/sly-actions/route.ts","../../../../../../src/app/api/sly-actions/stream/route.ts","../../../../../../src/app/api/system-stats/route.ts","../../../../../../src/app/api/terminal-classes/route.ts","../../../../../../src/app/api/transcribe/route.ts","../../../../../../src/app/api/version-check/route.ts","../../../../../../src/app/globals.css","../../../../../../src/app/layout.tsx","../../../../../../src/app/page.tsx","../../../../../../src/app/project/[id]/page.tsx","../../../../../../src/components/ActionUpdatesModal.tsx","../../../../../../src/components/ActivityFeed.tsx","../../../../../../src/components/AddProjectModal.tsx","../../../../../../src/components/AssetAssistant.tsx","../../../../../../src/components/AssetMatrix.tsx","../../../../../../src/components/AssetViewer.tsx","../../../../../../src/components/AutomationConfig.tsx","../../../../../../src/components/AutomationsScreen.tsx","../../../../../../src/components/CardModal.tsx","../../../../../../src/components/ClaudeTerminalPanel.tsx","../../../../../../src/components/CliAssetsTab.tsx","../../../../../../src/components/ConfirmDialog.tsx","../../../../../../src/components/ConnectionStatusIndicator.tsx","../../../../../../src/components/ContextMenu.tsx","../../../../../../src/components/Dashboard.tsx","../../../../../../src/components/FloatingVoiceWidget.tsx","../../../../../../src/components/GlobalClaudePanel.tsx","../../../../../../src/components/HealthDot.tsx","../../../../../../src/components/HealthMonitor.tsx","../../../../../../src/components/KanbanCardItem.tsx","../../../../../../src/components/KanbanColumn.tsx","../../../../../../src/components/MarkdownContent.tsx","../../../../../../src/components/PlatformBadges.tsx","../../../../../../src/components/ProjectCard.tsx","../../../../../../src/components/ProjectHeader.tsx","../../../../../../src/components/ProjectKanban.tsx","../../../../../../src/components/ProjectPageClient.tsx","../../../../../../src/components/ProjectView.tsx","../../../../../../src/components/SearchBar.tsx","../../../../../../src/components/SkillDiffViewer.tsx","../../../../../../src/components/SlyActionConfigModal.tsx","../../../../../../src/components/StoreView.tsx","../../../../../../src/components/Terminal.tsx","../../../../../../src/components/ThemeToggle.tsx","../../../../../../src/components/UpdatesView.tsx","../../../../../../src/components/VersionUpdateToast.tsx","../../../../../../src/components/VoiceControlBar.tsx","../../../../../../src/components/VoiceErrorPopup.tsx","../../../../../../src/components/VoiceSettingsPopover.tsx","../../../../../../src/contexts/VoiceContext.tsx","../../../../../../src/hooks/useConnectionStatus.ts","../../../../../../src/hooks/useKeyboardShortcuts.ts","../../../../../../src/hooks/usePolling.ts","../../../../../../src/hooks/useSettings.ts","../../../../../../src/hooks/useSlyActionsConfig.ts","../../../../../../src/hooks/useVoiceRecorder.ts","../../../../../../src/hooks/useVoiceShortcuts.ts","../../../../../../src/instrumentation.ts","../../../../../../src/lib/action-scanner.ts","../../../../../../src/lib/asset-scanner.ts","../../../../../../src/lib/connection-manager.ts","../../../../../../src/lib/cron-utils.ts","../../../../../../src/lib/event-log.ts","../../../../../../src/lib/health-score.ts","../../../../../../src/lib/kanban-paths.ts","../../../../../../src/lib/mcp-common.ts","../../../../../../src/lib/paths.ts","../../../../../../src/lib/provider-paths.ts","../../../../../../src/lib/registry.ts","../../../../../../src/lib/scheduler.ts","../../../../../../src/lib/sly-actions.ts","../../../../../../src/lib/store-scanner.ts","../../../../../../src/lib/tab-sync.ts","../../../../../../src/lib/terminal-events.ts","../../../../../../src/lib/types.ts","../../../../../../src/lib/webm-to-ogg-opus.ts","../../../../../../tsconfig.json","../../../../../../tsconfig.tsbuildinfo","../../../../chunks/[root-of-the-server]__5b8c9374._.js","../../../../chunks/[root-of-the-server]__8f5ebbc3._.js","../../../../chunks/[turbopack]_runtime.js","../../../../chunks/_next-internal_server_app_api_cli-assets_sync_route_actions_69845b95.js","../../../../chunks/node_modules_next_1402a1da._.js","../../../../chunks/node_modules_next_dist_esm_build_templates_app-route_234fda9c.js","../../../../chunks/src_lib_asset-scanner_ts_c599fd1c._.js","./route_client-reference-manifest.js"]}
@@ -1,2 +1,2 @@
1
1
  globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx <module evaluation>":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/components/Dashboard.tsx <module evaluation>":{"id":58116,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/e52d73ad4544e983.js","/_next/static/chunks/3d5195b57fc05540.js","/_next/static/chunks/e8b318caa49fce00.js"],"async":false},"[project]/src/components/Dashboard.tsx":{"id":58116,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/e52d73ad4544e983.js","/_next/static/chunks/3d5195b57fc05540.js","/_next/static/chunks/e8b318caa49fce00.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"1088":{"*":{"id":7491,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js"],"async":false}},"58116":{"*":{"id":39579,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js","server/chunks/ssr/[root-of-the-server]__077f472c._.js","server/chunks/ssr/[root-of-the-server]__1f5fc489._.js","server/chunks/ssr/src_components_Dashboard_tsx_efc4dc27._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"1088":{"*":{"id":21229,"name":"*","chunks":[],"async":false}},"58116":{"*":{"id":92848,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/src/app/layout":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/2744d72103f49934.css","inlined":false}],"[project]/src/app/page":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/2744d72103f49934.css","inlined":false}]},"entryJSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/ff1a16fafef87110.js","static/chunks/e24d6768d85df882.js"],"[project]/src/app/layout":["static/chunks/b8e0c1aeea4a14bc.js"],"[project]/src/app/page":["static/chunks/b8e0c1aeea4a14bc.js","static/chunks/e52d73ad4544e983.js","static/chunks/3d5195b57fc05540.js","static/chunks/e8b318caa49fce00.js"]}}
2
+ globalThis.__RSC_MANIFEST["/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx <module evaluation>":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/components/Dashboard.tsx <module evaluation>":{"id":58116,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/e52d73ad4544e983.js","/_next/static/chunks/3d5195b57fc05540.js","/_next/static/chunks/f55f3c8c1a52f80c.js"],"async":false},"[project]/src/components/Dashboard.tsx":{"id":58116,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/e52d73ad4544e983.js","/_next/static/chunks/3d5195b57fc05540.js","/_next/static/chunks/f55f3c8c1a52f80c.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"1088":{"*":{"id":7491,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js"],"async":false}},"58116":{"*":{"id":39579,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js","server/chunks/ssr/[root-of-the-server]__077f472c._.js","server/chunks/ssr/[root-of-the-server]__1f5fc489._.js","server/chunks/ssr/src_components_Dashboard_tsx_efc4dc27._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"1088":{"*":{"id":21229,"name":"*","chunks":[],"async":false}},"58116":{"*":{"id":92848,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/src/app/layout":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/747f5e5f9dcf2621.css","inlined":false}],"[project]/src/app/page":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/747f5e5f9dcf2621.css","inlined":false}]},"entryJSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/ff1a16fafef87110.js","static/chunks/e24d6768d85df882.js"],"[project]/src/app/layout":["static/chunks/b8e0c1aeea4a14bc.js"],"[project]/src/app/page":["static/chunks/b8e0c1aeea4a14bc.js","static/chunks/e52d73ad4544e983.js","static/chunks/3d5195b57fc05540.js","static/chunks/f55f3c8c1a52f80c.js"]}}
@@ -1,2 +1,2 @@
1
1
  globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/project/[id]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx <module evaluation>":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/components/ProjectView.tsx <module evaluation>":{"id":72630,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false},"[project]/src/components/ProjectView.tsx":{"id":72630,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false},"[project]/src/components/ProjectPageClient.tsx <module evaluation>":{"id":27444,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false},"[project]/src/components/ProjectPageClient.tsx":{"id":27444,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"1088":{"*":{"id":7491,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js"],"async":false}},"72630":{"*":{"id":15704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js","server/chunks/ssr/[root-of-the-server]__2f64210a._.js","server/chunks/ssr/[root-of-the-server]__bcbe4bf2._.js","server/chunks/ssr/src_components_c4135402._.js"],"async":false}},"27444":{"*":{"id":77788,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js","server/chunks/ssr/[root-of-the-server]__2f64210a._.js","server/chunks/ssr/[root-of-the-server]__bcbe4bf2._.js","server/chunks/ssr/src_components_c4135402._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"1088":{"*":{"id":21229,"name":"*","chunks":[],"async":false}},"72630":{"*":{"id":50165,"name":"*","chunks":[],"async":false}},"27444":{"*":{"id":76100,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/src/app/layout":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/2744d72103f49934.css","inlined":false}],"[project]/src/app/project/[id]/page":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/2744d72103f49934.css","inlined":false}]},"entryJSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/ff1a16fafef87110.js","static/chunks/e24d6768d85df882.js"],"[project]/src/app/layout":["static/chunks/b8e0c1aeea4a14bc.js"],"[project]/src/app/project/[id]/page":["static/chunks/b8e0c1aeea4a14bc.js","static/chunks/c7a853519f3ebcb8.js","static/chunks/59fb302a5bfd2dc0.js","static/chunks/8cb404d087e9f3c7.js"]}}
2
+ globalThis.__RSC_MANIFEST["/project/[id]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/e24d6768d85df882.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx <module evaluation>":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/contexts/VoiceContext.tsx":{"id":1088,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js"],"async":false},"[project]/src/components/ProjectView.tsx <module evaluation>":{"id":72630,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false},"[project]/src/components/ProjectView.tsx":{"id":72630,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false},"[project]/src/components/ProjectPageClient.tsx <module evaluation>":{"id":27444,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false},"[project]/src/components/ProjectPageClient.tsx":{"id":27444,"name":"*","chunks":["/_next/static/chunks/b8e0c1aeea4a14bc.js","/_next/static/chunks/c7a853519f3ebcb8.js","/_next/static/chunks/59fb302a5bfd2dc0.js","/_next/static/chunks/8cb404d087e9f3c7.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__b6871b66._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"1088":{"*":{"id":7491,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js"],"async":false}},"72630":{"*":{"id":15704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js","server/chunks/ssr/[root-of-the-server]__2f64210a._.js","server/chunks/ssr/[root-of-the-server]__bcbe4bf2._.js","server/chunks/ssr/src_components_c4135402._.js"],"async":false}},"27444":{"*":{"id":77788,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__72142a5d._.js","server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js","server/chunks/ssr/[root-of-the-server]__2f64210a._.js","server/chunks/ssr/[root-of-the-server]__bcbe4bf2._.js","server/chunks/ssr/src_components_c4135402._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"1088":{"*":{"id":21229,"name":"*","chunks":[],"async":false}},"72630":{"*":{"id":50165,"name":"*","chunks":[],"async":false}},"27444":{"*":{"id":76100,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/src/app/layout":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/747f5e5f9dcf2621.css","inlined":false}],"[project]/src/app/project/[id]/page":[{"path":"static/chunks/43bfca92afbacd38.css","inlined":false},{"path":"static/chunks/747f5e5f9dcf2621.css","inlined":false}]},"entryJSFiles":{"[project]/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/ff1a16fafef87110.js","static/chunks/e24d6768d85df882.js"],"[project]/src/app/layout":["static/chunks/b8e0c1aeea4a14bc.js"],"[project]/src/app/project/[id]/page":["static/chunks/b8e0c1aeea4a14bc.js","static/chunks/c7a853519f3ebcb8.js","static/chunks/59fb302a5bfd2dc0.js","static/chunks/8cb404d087e9f3c7.js"]}}
@@ -1,3 +1,3 @@
1
- module.exports=[46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),r=e.i(22734);function n(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function a(){let e=n(),a=t.default.join(e,"node_modules","@slycode","slycode","dist");return r.default.existsSync(a)?a:e}function s(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>s,"getPackageDir",()=>a,"getSlycodeRoot",()=>n])},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(46676),a=e.i(7367);function s(){return r.default.join((0,a.getSlycodeRoot)(),"store")}function o(e,a){let s=[],o="skill"===a?"skills":"agents",i=r.default.join(e,o);try{if(!t.default.existsSync(i))return s;for(let e of t.default.readdirSync(i,{withFileTypes:!0})){let l,u;if("skill"===a){if(!e.isDirectory()||(l=r.default.join(i,e.name,"SKILL.md"),u=r.default.join(o,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=r.default.join(i,e.name),u=r.default.join(o,e.name)}let d=t.default.readFileSync(l,"utf-8"),c=(0,n.parseFrontmatter)(d),p=c?.name||e.name.replace(/\.md$/,"");s.push({name:p,type:a,path:u,frontmatter:c,isValid:(0,n.validateFrontmatter)(c)})}}catch{}return s.sort((e,t)=>e.name.localeCompare(t.name))}function i(){let e=s(),n=o(e,"skill");return{skills:n,agents:o(e,"agent"),mcp:function(e){let n=r.default.join(e,"mcp"),a=[];try{if(!t.default.existsSync(n))return a;for(let e of t.default.readdirSync(n,{withFileTypes:!0})){let s;if(!e.isFile()||!e.name.endsWith(".json"))continue;let o=r.default.join(n,e.name),i=t.default.readFileSync(o,"utf-8");try{s=JSON.parse(i)}catch{continue}let l=s.name||e.name.replace(/\.json$/,"");a.push({name:l,type:"mcp",path:r.default.join("mcp",e.name),frontmatter:{name:l,version:s.version,description:s.description,updated:s.updated},isValid:!!(s.name&&s.command)})}}catch{}return a}(e)}}function l(){let e=s();return[...o(e,"skill"),...o(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>i])},48044,e=>{"use strict";var t=e.i(22734),r=e.i(33405),n=e.i(14747),a=e.i(46676),s=e.i(73178);let o={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function i(e,t=0,r=0,n=0,a=o){let s=[],l=Math.max(r,1);s.push({name:"Outdated Assets",weight:a.outdatedAssets,value:t,maxValue:l});let u=Date.now(),d=[...e.backlog],c=d.filter(e=>(u-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(d.length,1);s.push({name:"Stale Cards",weight:a.staleCards,value:c,maxValue:p}),s.push({name:"Unresolved Problems",weight:a.unresolvedProblems,value:0,maxValue:1}),s.push({name:"Missing CLAUDE.md",weight:a.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(r,1);s.push({name:"Non-compliant Frontmatter",weight:a.nonCompliantFrontmatter,value:n,maxValue:f});let h=0;for(let e of s)h+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let m=Math.round(Math.max(0,(1-h)*100));return{score:m,level:m>=80?"green":m>=50?"amber":"red",factors:s}}var l=e.i(7367);function u(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?n.default.dirname(e):e}let d=u(),c=n.default.join(d,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(c,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${c}`)}}async function f(e){let r=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(c,r,"utf-8")}async function h(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function m(e){try{let r=await t.promises.readFile(e,"utf-8");return JSON.parse(r)}catch{return null}}async function g(e,t,r){let a=n.default.join(e,"documentation","backlog.json"),s=await m(a);return s?s.map(e=>({...e,projectId:t,projectName:r})):[]}async function x(e,t){let r=n.default.join(e,"documentation","designs.json"),a=await m(r);return a?a.map(e=>({...e,projectId:t})):[]}async function y(e,t){let r=n.default.join(e,"documentation","features.json"),a=await m(r);return a?a.map(e=>({...e,projectId:t})):[]}async function R(e){let t=e.path;if(!await h(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[n,s,o]=await Promise.all([g(t,e.id,e.name),x(t,e.id),y(t,e.id)]),i=(0,a.scanProjectAssets)(t,e.id),l=(0,a.detectPlatforms)(t),u=function(e){try{return(0,r.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:n,designs:s,features:o,assets:i,platforms:l,gitUncommitted:u>=0?u:void 0,accessible:!0}}async function v(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>R(e)),r=await Promise.all(t),o=(0,s.getStoreAssets)(),d=["skill","agent"],c=0,f=[];for(let t of["claude","agents"])for(let r of d){let n=o.filter(e=>e.type===r),s=new Map;for(let n of e.projects){let e=(0,a.scanProviderAssets)(n.path,t);s.set(n.id,e.filter(e=>e.type===r))}let i=(0,a.buildStoreAssetMatrix)(n,s,e.projects,r);f.push(...i)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&c++;for(let e of r){if(!e.accessible)continue;let t=0;for(let r of f)for(let n of r.cells)n.projectId===e.id&&"outdated"===n.status&&t++;e.healthScore=function(e,t,r=0,n){if(!t)return i(e,0,0,0,void 0);let a=[...t.skills,...t.agents];return i(e,r,a.length,a.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let h=0,g=0;for(let e of r){if(!e.accessible)continue;let t=n.default.join(e.path,"documentation","kanban.json"),r=await m(t);if(r?.stages){h+=(r.stages.backlog||[]).filter(e=>!e.archived).length;let e=(r.stages.implementation||[]).filter(e=>!e.archived),t=(r.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let x=r.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),y=(0,l.getBridgeUrl)();try{let e=await fetch(`${y}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),n={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];n[t]=(n[t]||0)+1}for(let e of r)e.activeSessions=n[e.id]??0}}catch{}let v=u();return{projects:r,totalBacklogItems:h,activeItems:g,totalOutdatedAssets:c,totalUncommitted:x,lastRefresh:new Date().toISOString(),slycodeRoot:v,projectsDir:n.default.dirname(v)}}e.s(["getRepoRoot",()=>u,"loadDashboardData",()=>v,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},71741,e=>{"use strict";var t=e.i(14747),r=e.i(48044);let n={hourly:36e5,daily:864e5,weekly:6048e5},a=null,s=0;async function o(){let e=Date.now();return a&&e-s<5e3||(a=await (0,r.loadRegistry)(),s=e),a}class i extends Error{code;constructor(e,t){super(e),this.code=t,this.name="ProjectResolutionError"}}async function l(e){if(e===t.default.basename((0,r.getRepoRoot)()).replace(/_/g,"-"))return(0,r.getRepoRoot)();let n=(await o()).projects.find(t=>t.id===e);if(!n)throw new i(`Project '${e}' not found in registry`,"NOT_FOUND");return n.path}async function u(e){let r=await l(e);return t.default.join(r,"documentation","kanban.json")}async function d(e){let r=await l(e);return t.default.join(r,"documentation","archive")}async function c(e,r,n=1){let a=await d(e),s=String(n).padStart(3,"0");return t.default.join(a,`kanban_${r}_${s}.json`)}async function p(e){let r=await d(e),a=[];for(let e=1;e<=10;e++){let n=String(e).padStart(3,"0");a.push(t.default.join(r,`kanban_${n}.json`))}for(let e of Object.keys(n))a.push(t.default.join(r,`kanban_${e}.json`));return a}async function f(e){return e?u(e):t.default.join((0,r.getRepoRoot)(),"documentation")}e.s(["BACKUP_TIERS",0,n,"ProjectResolutionError",()=>i,"getArchiveDir",()=>d,"getKanbanPath",()=>u,"getLegacyBackupPaths",()=>p,"getTieredBackupPath",()=>c,"getWatchPath",()=>f,"resolveProjectRoot",()=>l])},45079,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(74838),m=e.i(10372),g=e.i(93695);e.i(52474);var x=e.i(220),y=e.i(89171),R=e.i(32695),v=e.i(22734),w=e.i(14747),j=e.i(71741);async function S(){let e=(0,R.getSchedulerStatus)(),t=(0,R.getConfiguredTimezone)();return y.NextResponse.json({...e,...t})}async function E(e){try{let t=await e.json(),{action:r,cardId:n,projectId:a}=t;if("start"===r)return(0,R.startScheduler)(),y.NextResponse.json({ok:!0,message:"Scheduler started"});if("stop"===r)return(0,R.stopScheduler)(),y.NextResponse.json({ok:!0,message:"Scheduler stopped"});if("nextRun"===r){let{schedule:e,scheduleType:r}=t;if(!e)return y.NextResponse.json({error:"schedule required"},{status:400});let n=(0,R.getNextRun)(e,r||"recurring");return y.NextResponse.json({nextRun:n?n.toISOString():null})}if("trigger"===r){if(!n||!a)return y.NextResponse.json({error:"cardId and projectId required"},{status:400});let e=await (0,j.resolveProjectRoot)(a),t=w.default.join(e,"documentation","kanban.json"),r=await v.promises.readFile(t,"utf-8"),s=JSON.parse(r),o=null;for(let e of Object.values(s.stages)){let t=e.find(e=>e.id===n);if(t){o=t;break}}if(!o)return y.NextResponse.json({error:"Card not found"},{status:404});if(!o.automation)return y.NextResponse.json({error:"Card has no automation config"},{status:400});let i=await (0,R.triggerAutomation)(o,a,e,{trigger:"manual"}),l={lastRun:new Date().toISOString(),lastResult:i.success?"success":"error"};return await (0,R.updateCardAutomation)(e,n,l),y.NextResponse.json(i)}return y.NextResponse.json({error:"Unknown action"},{status:400})}catch(e){return y.NextResponse.json({error:e.message},{status:500})}}e.s(["GET",()=>S,"POST",()=>E],94132);var b=e.i(94132);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/scheduler/route",pathname:"/api/scheduler",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/scheduler/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:k,workUnitAsyncStorage:O,serverHooks:P}=C;function A(){return(0,n.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:O})}async function N(e,t,n){C.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/scheduler/route";y=y.replace(/\/index$/,"")||"/";let R=await C.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:w,nextConfig:j,parsedUrl:S,isDraftMode:E,prerenderManifest:b,routerServerContext:k,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,resolvedPathname:A,clientReferenceManifest:N,serverActionsManifest:_}=R,D=(0,i.normalizeAppPath)(y),T=!!(b.dynamicRoutes[D]||b.routes[A]),M=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,S,!1):t.end("This page could not be found"),null);if(T&&!E){let e=!!b.routes[A],t=b.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(j.experimental.adapterPath)return await M();throw new g.NoFallbackError}}let U=null;!T||C.isDev||E||(U="/index"===(U=A)?"/":U);let q=!0===C.isDev||!T,F=T&&!q;_&&N&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:N,serverActionsManifest:_});let I=e.method||"GET",H=(0,s.getTracer)(),$=H.getActiveScopeSpan(),L={params:w,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!j.experimental.authInterrupts},cacheComponents:!!j.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:j.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>C.onRequestError(e,t,n,a,k)},sharedContext:{buildId:v}},V=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),K=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let o=async e=>C.handle(K,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${I} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${I} ${y}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&O&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let l=L.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(V,B,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:O})},!1,k),t}},d=await C.handleResponse({req:e,nextConfig:j,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:i});if(!T)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",O?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&T||g.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,B,new Response(d.value.body,{headers:g,status:d.value.status||200})),null};$?await l($):await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${I} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:O})},!1,k),T)throw t;return await (0,p.sendResponse)(V,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>A,"routeModule",()=>C,"serverHooks",()=>P,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>O],45079)},44264,e=>{e.v(e=>Promise.resolve().then(()=>e(33405)))}];
1
+ module.exports=[46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),r=e.i(22734);function n(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function a(){let e=n(),a=t.default.join(e,"node_modules","@slycode","slycode","dist");return r.default.existsSync(a)?a:e}function s(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>s,"getPackageDir",()=>a,"getSlycodeRoot",()=>n])},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(46676),a=e.i(7367);function s(){return r.default.join((0,a.getSlycodeRoot)(),"store")}function o(e,a){let s=[],o="skill"===a?"skills":"agents",i=r.default.join(e,o);try{if(!t.default.existsSync(i))return s;for(let e of t.default.readdirSync(i,{withFileTypes:!0})){let l,u;if("skill"===a){if(!e.isDirectory()||(l=r.default.join(i,e.name,"SKILL.md"),u=r.default.join(o,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=r.default.join(i,e.name),u=r.default.join(o,e.name)}let d=t.default.readFileSync(l,"utf-8"),c=(0,n.parseFrontmatter)(d),p=c?.name||e.name.replace(/\.md$/,"");s.push({name:p,type:a,path:u,frontmatter:c,isValid:(0,n.validateFrontmatter)(c)})}}catch{}return s.sort((e,t)=>e.name.localeCompare(t.name))}function i(){let e=s(),n=o(e,"skill");return{skills:n,agents:o(e,"agent"),mcp:function(e){let n=r.default.join(e,"mcp"),a=[];try{if(!t.default.existsSync(n))return a;for(let e of t.default.readdirSync(n,{withFileTypes:!0})){let s;if(!e.isFile()||!e.name.endsWith(".json"))continue;let o=r.default.join(n,e.name),i=t.default.readFileSync(o,"utf-8");try{s=JSON.parse(i)}catch{continue}let l=s.name||e.name.replace(/\.json$/,"");a.push({name:l,type:"mcp",path:r.default.join("mcp",e.name),frontmatter:{name:l,version:s.version,description:s.description,updated:s.updated},isValid:!!(s.name&&(s.command||s.url))})}}catch{}return a}(e)}}function l(){let e=s();return[...o(e,"skill"),...o(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>i])},48044,e=>{"use strict";var t=e.i(22734),r=e.i(33405),n=e.i(14747),a=e.i(46676),s=e.i(73178);let o={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function i(e,t=0,r=0,n=0,a=o){let s=[],l=Math.max(r,1);s.push({name:"Outdated Assets",weight:a.outdatedAssets,value:t,maxValue:l});let u=Date.now(),d=[...e.backlog],c=d.filter(e=>(u-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(d.length,1);s.push({name:"Stale Cards",weight:a.staleCards,value:c,maxValue:p}),s.push({name:"Unresolved Problems",weight:a.unresolvedProblems,value:0,maxValue:1}),s.push({name:"Missing CLAUDE.md",weight:a.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(r,1);s.push({name:"Non-compliant Frontmatter",weight:a.nonCompliantFrontmatter,value:n,maxValue:f});let h=0;for(let e of s)h+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let m=Math.round(Math.max(0,(1-h)*100));return{score:m,level:m>=80?"green":m>=50?"amber":"red",factors:s}}var l=e.i(7367);function u(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?n.default.dirname(e):e}let d=u(),c=n.default.join(d,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(c,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${c}`)}}async function f(e){let r=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(c,r,"utf-8")}async function h(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function m(e){try{let r=await t.promises.readFile(e,"utf-8");return JSON.parse(r)}catch{return null}}async function g(e,t,r){let a=n.default.join(e,"documentation","backlog.json"),s=await m(a);return s?s.map(e=>({...e,projectId:t,projectName:r})):[]}async function x(e,t){let r=n.default.join(e,"documentation","designs.json"),a=await m(r);return a?a.map(e=>({...e,projectId:t})):[]}async function y(e,t){let r=n.default.join(e,"documentation","features.json"),a=await m(r);return a?a.map(e=>({...e,projectId:t})):[]}async function R(e){let t=e.path;if(!await h(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[n,s,o]=await Promise.all([g(t,e.id,e.name),x(t,e.id),y(t,e.id)]),i=(0,a.scanProjectAssets)(t,e.id),l=(0,a.detectPlatforms)(t),u=function(e){try{return(0,r.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:n,designs:s,features:o,assets:i,platforms:l,gitUncommitted:u>=0?u:void 0,accessible:!0}}async function v(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>R(e)),r=await Promise.all(t),o=(0,s.getStoreAssets)(),d=["skill","agent"],c=0,f=[];for(let t of["claude","agents"])for(let r of d){let n=o.filter(e=>e.type===r),s=new Map;for(let n of e.projects){let e=(0,a.scanProviderAssets)(n.path,t);s.set(n.id,e.filter(e=>e.type===r))}let i=(0,a.buildStoreAssetMatrix)(n,s,e.projects,r);f.push(...i)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&c++;for(let e of r){if(!e.accessible)continue;let t=0;for(let r of f)for(let n of r.cells)n.projectId===e.id&&"outdated"===n.status&&t++;e.healthScore=function(e,t,r=0,n){if(!t)return i(e,0,0,0,void 0);let a=[...t.skills,...t.agents];return i(e,r,a.length,a.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let h=0,g=0;for(let e of r){if(!e.accessible)continue;let t=n.default.join(e.path,"documentation","kanban.json"),r=await m(t);if(r?.stages){h+=(r.stages.backlog||[]).filter(e=>!e.archived).length;let e=(r.stages.implementation||[]).filter(e=>!e.archived),t=(r.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let x=r.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),y=(0,l.getBridgeUrl)();try{let e=await fetch(`${y}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),n={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];n[t]=(n[t]||0)+1}for(let e of r)e.activeSessions=n[e.id]??0}}catch{}let v=u();return{projects:r,totalBacklogItems:h,activeItems:g,totalOutdatedAssets:c,totalUncommitted:x,lastRefresh:new Date().toISOString(),slycodeRoot:v,projectsDir:n.default.dirname(v)}}e.s(["getRepoRoot",()=>u,"loadDashboardData",()=>v,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},71741,e=>{"use strict";var t=e.i(14747),r=e.i(48044);let n={hourly:36e5,daily:864e5,weekly:6048e5},a=null,s=0;async function o(){let e=Date.now();return a&&e-s<5e3||(a=await (0,r.loadRegistry)(),s=e),a}class i extends Error{code;constructor(e,t){super(e),this.code=t,this.name="ProjectResolutionError"}}async function l(e){if(e===t.default.basename((0,r.getRepoRoot)()).replace(/_/g,"-"))return(0,r.getRepoRoot)();let n=(await o()).projects.find(t=>t.id===e);if(!n)throw new i(`Project '${e}' not found in registry`,"NOT_FOUND");return n.path}async function u(e){let r=await l(e);return t.default.join(r,"documentation","kanban.json")}async function d(e){let r=await l(e);return t.default.join(r,"documentation","archive")}async function c(e,r,n=1){let a=await d(e),s=String(n).padStart(3,"0");return t.default.join(a,`kanban_${r}_${s}.json`)}async function p(e){let r=await d(e),a=[];for(let e=1;e<=10;e++){let n=String(e).padStart(3,"0");a.push(t.default.join(r,`kanban_${n}.json`))}for(let e of Object.keys(n))a.push(t.default.join(r,`kanban_${e}.json`));return a}async function f(e){return e?u(e):t.default.join((0,r.getRepoRoot)(),"documentation")}e.s(["BACKUP_TIERS",0,n,"ProjectResolutionError",()=>i,"getArchiveDir",()=>d,"getKanbanPath",()=>u,"getLegacyBackupPaths",()=>p,"getTieredBackupPath",()=>c,"getWatchPath",()=>f,"resolveProjectRoot",()=>l])},45079,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(74838),m=e.i(10372),g=e.i(93695);e.i(52474);var x=e.i(220),y=e.i(89171),R=e.i(32695),v=e.i(22734),w=e.i(14747),j=e.i(71741);async function S(){let e=(0,R.getSchedulerStatus)(),t=(0,R.getConfiguredTimezone)();return y.NextResponse.json({...e,...t})}async function E(e){try{let t=await e.json(),{action:r,cardId:n,projectId:a}=t;if("start"===r)return(0,R.startScheduler)(),y.NextResponse.json({ok:!0,message:"Scheduler started"});if("stop"===r)return(0,R.stopScheduler)(),y.NextResponse.json({ok:!0,message:"Scheduler stopped"});if("nextRun"===r){let{schedule:e,scheduleType:r}=t;if(!e)return y.NextResponse.json({error:"schedule required"},{status:400});let n=(0,R.getNextRun)(e,r||"recurring");return y.NextResponse.json({nextRun:n?n.toISOString():null})}if("trigger"===r){if(!n||!a)return y.NextResponse.json({error:"cardId and projectId required"},{status:400});let e=await (0,j.resolveProjectRoot)(a),t=w.default.join(e,"documentation","kanban.json"),r=await v.promises.readFile(t,"utf-8"),s=JSON.parse(r),o=null;for(let e of Object.values(s.stages)){let t=e.find(e=>e.id===n);if(t){o=t;break}}if(!o)return y.NextResponse.json({error:"Card not found"},{status:404});if(!o.automation)return y.NextResponse.json({error:"Card has no automation config"},{status:400});let i=await (0,R.triggerAutomation)(o,a,e,{trigger:"manual"}),l={lastRun:new Date().toISOString(),lastResult:i.success?"success":"error"};return await (0,R.updateCardAutomation)(e,n,l),y.NextResponse.json(i)}return y.NextResponse.json({error:"Unknown action"},{status:400})}catch(e){return y.NextResponse.json({error:e.message},{status:500})}}e.s(["GET",()=>S,"POST",()=>E],94132);var b=e.i(94132);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/scheduler/route",pathname:"/api/scheduler",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/scheduler/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:k,workUnitAsyncStorage:O,serverHooks:P}=C;function A(){return(0,n.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:O})}async function N(e,t,n){C.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/scheduler/route";y=y.replace(/\/index$/,"")||"/";let R=await C.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:w,nextConfig:j,parsedUrl:S,isDraftMode:E,prerenderManifest:b,routerServerContext:k,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,resolvedPathname:A,clientReferenceManifest:N,serverActionsManifest:_}=R,D=(0,i.normalizeAppPath)(y),T=!!(b.dynamicRoutes[D]||b.routes[A]),M=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,S,!1):t.end("This page could not be found"),null);if(T&&!E){let e=!!b.routes[A],t=b.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(j.experimental.adapterPath)return await M();throw new g.NoFallbackError}}let U=null;!T||C.isDev||E||(U="/index"===(U=A)?"/":U);let q=!0===C.isDev||!T,F=T&&!q;_&&N&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:N,serverActionsManifest:_});let I=e.method||"GET",H=(0,s.getTracer)(),$=H.getActiveScopeSpan(),L={params:w,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!j.experimental.authInterrupts},cacheComponents:!!j.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:j.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>C.onRequestError(e,t,n,a,k)},sharedContext:{buildId:v}},V=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),K=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let o=async e=>C.handle(K,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${I} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${I} ${y}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&O&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let l=L.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(V,B,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:O})},!1,k),t}},d=await C.handleResponse({req:e,nextConfig:j,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:i});if(!T)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",O?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&T||g.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,B,new Response(d.value.body,{headers:g,status:d.value.status||200})),null};$?await l($):await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${I} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:O})},!1,k),T)throw t;return await (0,p.sendResponse)(V,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>A,"routeModule",()=>C,"serverHooks",()=>P,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>O],45079)},44264,e=>{e.v(e=>Promise.resolve().then(()=>e(33405)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__12f6cd6f._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[93695,(e,t,a)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},18622,(e,t,a)=>{t.exports=e.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,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},22734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),a=e.i(22734);function n(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function r(){let e=n(),r=t.default.join(e,"node_modules","@slycode","slycode","dist");return a.default.existsSync(r)?r:e}function o(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>o,"getPackageDir",()=>r,"getSlycodeRoot",()=>n])},54799,(e,t,a)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),a=e.i(14747),n=e.i(46676),r=e.i(7367);function o(){return a.default.join((0,r.getSlycodeRoot)(),"store")}function i(e,r){let o=[],i="skill"===r?"skills":"agents",s=a.default.join(e,i);try{if(!t.default.existsSync(s))return o;for(let e of t.default.readdirSync(s,{withFileTypes:!0})){let l,c;if("skill"===r){if(!e.isDirectory()||(l=a.default.join(s,e.name,"SKILL.md"),c=a.default.join(i,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=a.default.join(s,e.name),c=a.default.join(i,e.name)}let u=t.default.readFileSync(l,"utf-8"),d=(0,n.parseFrontmatter)(u),p=d?.name||e.name.replace(/\.md$/,"");o.push({name:p,type:r,path:c,frontmatter:d,isValid:(0,n.validateFrontmatter)(d)})}}catch{}return o.sort((e,t)=>e.name.localeCompare(t.name))}function s(){let e=o(),n=i(e,"skill");return{skills:n,agents:i(e,"agent"),mcp:function(e){let n=a.default.join(e,"mcp"),r=[];try{if(!t.default.existsSync(n))return r;for(let e of t.default.readdirSync(n,{withFileTypes:!0})){let o;if(!e.isFile()||!e.name.endsWith(".json"))continue;let i=a.default.join(n,e.name),s=t.default.readFileSync(i,"utf-8");try{o=JSON.parse(s)}catch{continue}let l=o.name||e.name.replace(/\.json$/,"");r.push({name:l,type:"mcp",path:a.default.join("mcp",e.name),frontmatter:{name:l,version:o.version,description:o.description,updated:o.updated},isValid:!!(o.name&&o.command)})}}catch{}return r}(e)}}function l(){let e=o();return[...i(e,"skill"),...i(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>s])},48044,e=>{"use strict";var t=e.i(22734),a=e.i(33405),n=e.i(14747),r=e.i(46676),o=e.i(73178);let i={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function s(e,t=0,a=0,n=0,r=i){let o=[],l=Math.max(a,1);o.push({name:"Outdated Assets",weight:r.outdatedAssets,value:t,maxValue:l});let c=Date.now(),u=[...e.backlog],d=u.filter(e=>(c-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(u.length,1);o.push({name:"Stale Cards",weight:r.staleCards,value:d,maxValue:p}),o.push({name:"Unresolved Problems",weight:r.unresolvedProblems,value:0,maxValue:1}),o.push({name:"Missing CLAUDE.md",weight:r.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(a,1);o.push({name:"Non-compliant Frontmatter",weight:r.nonCompliantFrontmatter,value:n,maxValue:f});let h=0;for(let e of o)h+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let m=Math.round(Math.max(0,(1-h)*100));return{score:m,level:m>=80?"green":m>=50?"amber":"red",factors:o}}var l=e.i(7367);function c(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?n.default.dirname(e):e}let u=c(),d=n.default.join(u,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(d,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${d}`)}}async function f(e){let a=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(d,a,"utf-8")}async function h(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function m(e){try{let a=await t.promises.readFile(e,"utf-8");return JSON.parse(a)}catch{return null}}async function g(e,t,a){let r=n.default.join(e,"documentation","backlog.json"),o=await m(r);return o?o.map(e=>({...e,projectId:t,projectName:a})):[]}async function y(e,t){let a=n.default.join(e,"documentation","designs.json"),r=await m(a);return r?r.map(e=>({...e,projectId:t})):[]}async function v(e,t){let a=n.default.join(e,"documentation","features.json"),r=await m(a);return r?r.map(e=>({...e,projectId:t})):[]}async function w(e){let t=e.path;if(!await h(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[n,o,i]=await Promise.all([g(t,e.id,e.name),y(t,e.id),v(t,e.id)]),s=(0,r.scanProjectAssets)(t,e.id),l=(0,r.detectPlatforms)(t),c=function(e){try{return(0,a.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:n,designs:o,features:i,assets:s,platforms:l,gitUncommitted:c>=0?c:void 0,accessible:!0}}async function x(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>w(e)),a=await Promise.all(t),i=(0,o.getStoreAssets)(),u=["skill","agent"],d=0,f=[];for(let t of["claude","agents"])for(let a of u){let n=i.filter(e=>e.type===a),o=new Map;for(let n of e.projects){let e=(0,r.scanProviderAssets)(n.path,t);o.set(n.id,e.filter(e=>e.type===a))}let s=(0,r.buildStoreAssetMatrix)(n,o,e.projects,a);f.push(...s)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&d++;for(let e of a){if(!e.accessible)continue;let t=0;for(let a of f)for(let n of a.cells)n.projectId===e.id&&"outdated"===n.status&&t++;e.healthScore=function(e,t,a=0,n){if(!t)return s(e,0,0,0,void 0);let r=[...t.skills,...t.agents];return s(e,a,r.length,r.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let h=0,g=0;for(let e of a){if(!e.accessible)continue;let t=n.default.join(e.path,"documentation","kanban.json"),a=await m(t);if(a?.stages){h+=(a.stages.backlog||[]).filter(e=>!e.archived).length;let e=(a.stages.implementation||[]).filter(e=>!e.archived),t=(a.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let y=a.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),v=(0,l.getBridgeUrl)();try{let e=await fetch(`${v}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),n={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];n[t]=(n[t]||0)+1}for(let e of a)e.activeSessions=n[e.id]??0}}catch{}let x=c();return{projects:a,totalBacklogItems:h,activeItems:g,totalOutdatedAssets:d,totalUncommitted:y,lastRefresh:new Date().toISOString(),slycodeRoot:x,projectsDir:n.default.dirname(x)}}e.s(["getRepoRoot",()=>c,"loadDashboardData",()=>x,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},71741,e=>{"use strict";var t=e.i(14747),a=e.i(48044);let n={hourly:36e5,daily:864e5,weekly:6048e5},r=null,o=0;async function i(){let e=Date.now();return r&&e-o<5e3||(r=await (0,a.loadRegistry)(),o=e),r}class s extends Error{code;constructor(e,t){super(e),this.code=t,this.name="ProjectResolutionError"}}async function l(e){if(e===t.default.basename((0,a.getRepoRoot)()).replace(/_/g,"-"))return(0,a.getRepoRoot)();let n=(await i()).projects.find(t=>t.id===e);if(!n)throw new s(`Project '${e}' not found in registry`,"NOT_FOUND");return n.path}async function c(e){let a=await l(e);return t.default.join(a,"documentation","kanban.json")}async function u(e){let a=await l(e);return t.default.join(a,"documentation","archive")}async function d(e,a,n=1){let r=await u(e),o=String(n).padStart(3,"0");return t.default.join(r,`kanban_${a}_${o}.json`)}async function p(e){let a=await u(e),r=[];for(let e=1;e<=10;e++){let n=String(e).padStart(3,"0");r.push(t.default.join(a,`kanban_${n}.json`))}for(let e of Object.keys(n))r.push(t.default.join(a,`kanban_${e}.json`));return r}async function f(e){return e?c(e):t.default.join((0,a.getRepoRoot)(),"documentation")}e.s(["BACKUP_TIERS",0,n,"ProjectResolutionError",()=>s,"getArchiveDir",()=>u,"getKanbanPath",()=>c,"getLegacyBackupPaths",()=>p,"getTieredBackupPath",()=>d,"getWatchPath",()=>f,"resolveProjectRoot",()=>l])},54226,e=>{"use strict";var t=e.i(47909),a=e.i(74017),n=e.i(96250),r=e.i(59756),o=e.i(61916),i=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),u=e.i(95169),d=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(74838),m=e.i(10372),g=e.i(93695);e.i(52474);var y=e.i(220),v=e.i(22734),w=e.i(71741);async function x(e){let t,{searchParams:a}=new URL(e.url),n=a.get("projectId"),r=new TextEncoder,o=null,i=null,s=!1;try{t=await (0,w.getWatchPath)(n)}catch(e){if(e instanceof w.ProjectResolutionError)return new Response(new ReadableStream({start(t){let a=`event: error
1
+ module.exports=[93695,(e,t,a)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},18622,(e,t,a)=>{t.exports=e.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,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},22734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),a=e.i(22734);function n(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function r(){let e=n(),r=t.default.join(e,"node_modules","@slycode","slycode","dist");return a.default.existsSync(r)?r:e}function o(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>o,"getPackageDir",()=>r,"getSlycodeRoot",()=>n])},54799,(e,t,a)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),a=e.i(14747),n=e.i(46676),r=e.i(7367);function o(){return a.default.join((0,r.getSlycodeRoot)(),"store")}function i(e,r){let o=[],i="skill"===r?"skills":"agents",s=a.default.join(e,i);try{if(!t.default.existsSync(s))return o;for(let e of t.default.readdirSync(s,{withFileTypes:!0})){let l,c;if("skill"===r){if(!e.isDirectory()||(l=a.default.join(s,e.name,"SKILL.md"),c=a.default.join(i,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=a.default.join(s,e.name),c=a.default.join(i,e.name)}let u=t.default.readFileSync(l,"utf-8"),d=(0,n.parseFrontmatter)(u),p=d?.name||e.name.replace(/\.md$/,"");o.push({name:p,type:r,path:c,frontmatter:d,isValid:(0,n.validateFrontmatter)(d)})}}catch{}return o.sort((e,t)=>e.name.localeCompare(t.name))}function s(){let e=o(),n=i(e,"skill");return{skills:n,agents:i(e,"agent"),mcp:function(e){let n=a.default.join(e,"mcp"),r=[];try{if(!t.default.existsSync(n))return r;for(let e of t.default.readdirSync(n,{withFileTypes:!0})){let o;if(!e.isFile()||!e.name.endsWith(".json"))continue;let i=a.default.join(n,e.name),s=t.default.readFileSync(i,"utf-8");try{o=JSON.parse(s)}catch{continue}let l=o.name||e.name.replace(/\.json$/,"");r.push({name:l,type:"mcp",path:a.default.join("mcp",e.name),frontmatter:{name:l,version:o.version,description:o.description,updated:o.updated},isValid:!!(o.name&&(o.command||o.url))})}}catch{}return r}(e)}}function l(){let e=o();return[...i(e,"skill"),...i(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>s])},48044,e=>{"use strict";var t=e.i(22734),a=e.i(33405),n=e.i(14747),r=e.i(46676),o=e.i(73178);let i={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function s(e,t=0,a=0,n=0,r=i){let o=[],l=Math.max(a,1);o.push({name:"Outdated Assets",weight:r.outdatedAssets,value:t,maxValue:l});let c=Date.now(),u=[...e.backlog],d=u.filter(e=>(c-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(u.length,1);o.push({name:"Stale Cards",weight:r.staleCards,value:d,maxValue:p}),o.push({name:"Unresolved Problems",weight:r.unresolvedProblems,value:0,maxValue:1}),o.push({name:"Missing CLAUDE.md",weight:r.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(a,1);o.push({name:"Non-compliant Frontmatter",weight:r.nonCompliantFrontmatter,value:n,maxValue:f});let h=0;for(let e of o)h+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let m=Math.round(Math.max(0,(1-h)*100));return{score:m,level:m>=80?"green":m>=50?"amber":"red",factors:o}}var l=e.i(7367);function c(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?n.default.dirname(e):e}let u=c(),d=n.default.join(u,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(d,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${d}`)}}async function f(e){let a=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(d,a,"utf-8")}async function h(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function m(e){try{let a=await t.promises.readFile(e,"utf-8");return JSON.parse(a)}catch{return null}}async function g(e,t,a){let r=n.default.join(e,"documentation","backlog.json"),o=await m(r);return o?o.map(e=>({...e,projectId:t,projectName:a})):[]}async function y(e,t){let a=n.default.join(e,"documentation","designs.json"),r=await m(a);return r?r.map(e=>({...e,projectId:t})):[]}async function v(e,t){let a=n.default.join(e,"documentation","features.json"),r=await m(a);return r?r.map(e=>({...e,projectId:t})):[]}async function w(e){let t=e.path;if(!await h(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[n,o,i]=await Promise.all([g(t,e.id,e.name),y(t,e.id),v(t,e.id)]),s=(0,r.scanProjectAssets)(t,e.id),l=(0,r.detectPlatforms)(t),c=function(e){try{return(0,a.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:n,designs:o,features:i,assets:s,platforms:l,gitUncommitted:c>=0?c:void 0,accessible:!0}}async function x(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>w(e)),a=await Promise.all(t),i=(0,o.getStoreAssets)(),u=["skill","agent"],d=0,f=[];for(let t of["claude","agents"])for(let a of u){let n=i.filter(e=>e.type===a),o=new Map;for(let n of e.projects){let e=(0,r.scanProviderAssets)(n.path,t);o.set(n.id,e.filter(e=>e.type===a))}let s=(0,r.buildStoreAssetMatrix)(n,o,e.projects,a);f.push(...s)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&d++;for(let e of a){if(!e.accessible)continue;let t=0;for(let a of f)for(let n of a.cells)n.projectId===e.id&&"outdated"===n.status&&t++;e.healthScore=function(e,t,a=0,n){if(!t)return s(e,0,0,0,void 0);let r=[...t.skills,...t.agents];return s(e,a,r.length,r.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let h=0,g=0;for(let e of a){if(!e.accessible)continue;let t=n.default.join(e.path,"documentation","kanban.json"),a=await m(t);if(a?.stages){h+=(a.stages.backlog||[]).filter(e=>!e.archived).length;let e=(a.stages.implementation||[]).filter(e=>!e.archived),t=(a.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let y=a.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),v=(0,l.getBridgeUrl)();try{let e=await fetch(`${v}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),n={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];n[t]=(n[t]||0)+1}for(let e of a)e.activeSessions=n[e.id]??0}}catch{}let x=c();return{projects:a,totalBacklogItems:h,activeItems:g,totalOutdatedAssets:d,totalUncommitted:y,lastRefresh:new Date().toISOString(),slycodeRoot:x,projectsDir:n.default.dirname(x)}}e.s(["getRepoRoot",()=>c,"loadDashboardData",()=>x,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},71741,e=>{"use strict";var t=e.i(14747),a=e.i(48044);let n={hourly:36e5,daily:864e5,weekly:6048e5},r=null,o=0;async function i(){let e=Date.now();return r&&e-o<5e3||(r=await (0,a.loadRegistry)(),o=e),r}class s extends Error{code;constructor(e,t){super(e),this.code=t,this.name="ProjectResolutionError"}}async function l(e){if(e===t.default.basename((0,a.getRepoRoot)()).replace(/_/g,"-"))return(0,a.getRepoRoot)();let n=(await i()).projects.find(t=>t.id===e);if(!n)throw new s(`Project '${e}' not found in registry`,"NOT_FOUND");return n.path}async function c(e){let a=await l(e);return t.default.join(a,"documentation","kanban.json")}async function u(e){let a=await l(e);return t.default.join(a,"documentation","archive")}async function d(e,a,n=1){let r=await u(e),o=String(n).padStart(3,"0");return t.default.join(r,`kanban_${a}_${o}.json`)}async function p(e){let a=await u(e),r=[];for(let e=1;e<=10;e++){let n=String(e).padStart(3,"0");r.push(t.default.join(a,`kanban_${n}.json`))}for(let e of Object.keys(n))r.push(t.default.join(a,`kanban_${e}.json`));return r}async function f(e){return e?c(e):t.default.join((0,a.getRepoRoot)(),"documentation")}e.s(["BACKUP_TIERS",0,n,"ProjectResolutionError",()=>s,"getArchiveDir",()=>u,"getKanbanPath",()=>c,"getLegacyBackupPaths",()=>p,"getTieredBackupPath",()=>d,"getWatchPath",()=>f,"resolveProjectRoot",()=>l])},54226,e=>{"use strict";var t=e.i(47909),a=e.i(74017),n=e.i(96250),r=e.i(59756),o=e.i(61916),i=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),u=e.i(95169),d=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(74838),m=e.i(10372),g=e.i(93695);e.i(52474);var y=e.i(220),v=e.i(22734),w=e.i(71741);async function x(e){let t,{searchParams:a}=new URL(e.url),n=a.get("projectId"),r=new TextEncoder,o=null,i=null,s=!1;try{t=await (0,w.getWatchPath)(n)}catch(e){if(e instanceof w.ProjectResolutionError)return new Response(new ReadableStream({start(t){let a=`event: error
2
2
  data: ${JSON.stringify({message:e.message,code:e.code})}
3
3
 
4
4
  `;t.enqueue(r.encode(a)),t.close()}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}});throw e}return new Response(new ReadableStream({start(e){let a=`event: connected
@@ -1,3 +1,3 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),r=e.i(22734);function a(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function n(){let e=a(),n=t.default.join(e,"node_modules","@slycode","slycode","dist");return r.default.existsSync(n)?n:e}function s(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>s,"getPackageDir",()=>n,"getSlycodeRoot",()=>a])},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),r=e.i(14747),a=e.i(46676),n=e.i(7367);function s(){return r.default.join((0,n.getSlycodeRoot)(),"store")}function i(e,n){let s=[],i="skill"===n?"skills":"agents",o=r.default.join(e,i);try{if(!t.default.existsSync(o))return s;for(let e of t.default.readdirSync(o,{withFileTypes:!0})){let l,d;if("skill"===n){if(!e.isDirectory()||(l=r.default.join(o,e.name,"SKILL.md"),d=r.default.join(i,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=r.default.join(o,e.name),d=r.default.join(i,e.name)}let u=t.default.readFileSync(l,"utf-8"),c=(0,a.parseFrontmatter)(u),p=c?.name||e.name.replace(/\.md$/,"");s.push({name:p,type:n,path:d,frontmatter:c,isValid:(0,a.validateFrontmatter)(c)})}}catch{}return s.sort((e,t)=>e.name.localeCompare(t.name))}function o(){let e=s(),a=i(e,"skill");return{skills:a,agents:i(e,"agent"),mcp:function(e){let a=r.default.join(e,"mcp"),n=[];try{if(!t.default.existsSync(a))return n;for(let e of t.default.readdirSync(a,{withFileTypes:!0})){let s;if(!e.isFile()||!e.name.endsWith(".json"))continue;let i=r.default.join(a,e.name),o=t.default.readFileSync(i,"utf-8");try{s=JSON.parse(o)}catch{continue}let l=s.name||e.name.replace(/\.json$/,"");n.push({name:l,type:"mcp",path:r.default.join("mcp",e.name),frontmatter:{name:l,version:s.version,description:s.description,updated:s.updated},isValid:!!(s.name&&s.command)})}}catch{}return n}(e)}}function l(){let e=s();return[...i(e,"skill"),...i(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>o])},48044,e=>{"use strict";var t=e.i(22734),r=e.i(33405),a=e.i(14747),n=e.i(46676),s=e.i(73178);let i={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function o(e,t=0,r=0,a=0,n=i){let s=[],l=Math.max(r,1);s.push({name:"Outdated Assets",weight:n.outdatedAssets,value:t,maxValue:l});let d=Date.now(),u=[...e.backlog],c=u.filter(e=>(d-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(u.length,1);s.push({name:"Stale Cards",weight:n.staleCards,value:c,maxValue:p}),s.push({name:"Unresolved Problems",weight:n.unresolvedProblems,value:0,maxValue:1}),s.push({name:"Missing CLAUDE.md",weight:n.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(r,1);s.push({name:"Non-compliant Frontmatter",weight:n.nonCompliantFrontmatter,value:a,maxValue:f});let m=0;for(let e of s)m+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let h=Math.round(Math.max(0,(1-m)*100));return{score:h,level:h>=80?"green":h>=50?"amber":"red",factors:s}}var l=e.i(7367);function d(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?a.default.dirname(e):e}let u=d(),c=a.default.join(u,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(c,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${c}`)}}async function f(e){let r=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(c,r,"utf-8")}async function m(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function h(e){try{let r=await t.promises.readFile(e,"utf-8");return JSON.parse(r)}catch{return null}}async function g(e,t,r){let n=a.default.join(e,"documentation","backlog.json"),s=await h(n);return s?s.map(e=>({...e,projectId:t,projectName:r})):[]}async function x(e,t){let r=a.default.join(e,"documentation","designs.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function y(e,t){let r=a.default.join(e,"documentation","features.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function v(e){let t=e.path;if(!await m(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[a,s,i]=await Promise.all([g(t,e.id,e.name),x(t,e.id),y(t,e.id)]),o=(0,n.scanProjectAssets)(t,e.id),l=(0,n.detectPlatforms)(t),d=function(e){try{return(0,r.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:a,designs:s,features:i,assets:o,platforms:l,gitUncommitted:d>=0?d:void 0,accessible:!0}}async function w(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>v(e)),r=await Promise.all(t),i=(0,s.getStoreAssets)(),u=["skill","agent"],c=0,f=[];for(let t of["claude","agents"])for(let r of u){let a=i.filter(e=>e.type===r),s=new Map;for(let a of e.projects){let e=(0,n.scanProviderAssets)(a.path,t);s.set(a.id,e.filter(e=>e.type===r))}let o=(0,n.buildStoreAssetMatrix)(a,s,e.projects,r);f.push(...o)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&c++;for(let e of r){if(!e.accessible)continue;let t=0;for(let r of f)for(let a of r.cells)a.projectId===e.id&&"outdated"===a.status&&t++;e.healthScore=function(e,t,r=0,a){if(!t)return o(e,0,0,0,void 0);let n=[...t.skills,...t.agents];return o(e,r,n.length,n.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let m=0,g=0;for(let e of r){if(!e.accessible)continue;let t=a.default.join(e.path,"documentation","kanban.json"),r=await h(t);if(r?.stages){m+=(r.stages.backlog||[]).filter(e=>!e.archived).length;let e=(r.stages.implementation||[]).filter(e=>!e.archived),t=(r.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let x=r.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),y=(0,l.getBridgeUrl)();try{let e=await fetch(`${y}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),a={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];a[t]=(a[t]||0)+1}for(let e of r)e.activeSessions=a[e.id]??0}}catch{}let w=d();return{projects:r,totalBacklogItems:m,activeItems:g,totalOutdatedAssets:c,totalUncommitted:x,lastRefresh:new Date().toISOString(),slycodeRoot:w,projectsDir:a.default.dirname(w)}}e.s(["getRepoRoot",()=>d,"loadDashboardData",()=>w,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},36758,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),m=e.i(74838),h=e.i(10372),g=e.i(93695);e.i(52474);var x=e.i(220),y=e.i(89171),v=e.i(48044);async function w(e){try{let{projectIds:t}=await e.json();if(!Array.isArray(t)||0===t.length)return y.NextResponse.json({error:"projectIds must be a non-empty array"},{status:400});let r=await (0,v.loadRegistry)();for(let e=0;e<t.length;e++){let a=r.projects.find(r=>r.id===t[e]);a&&(a.order=e)}return r.lastUpdated=new Date().toISOString(),await (0,v.saveRegistry)(r),y.NextResponse.json({ok:!0})}catch(e){return console.error("Failed to reorder projects:",e),y.NextResponse.json({error:"Failed to reorder projects",details:String(e)},{status:500})}}e.s(["POST",()=>w,"dynamic",0,"force-dynamic"],12621);var R=e.i(12621);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/reorder/route",pathname:"/api/projects/reorder",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/projects/reorder/route.ts",nextConfigOutput:"standalone",userland:R}),{workAsyncStorage:E,workUnitAsyncStorage:S,serverHooks:b}=j;function C(){return(0,a.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:S})}async function A(e,t,a){j.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/projects/reorder/route";y=y.replace(/\/index$/,"")||"/";let v=await j.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:R,nextConfig:E,parsedUrl:S,isDraftMode:b,prerenderManifest:C,routerServerContext:A,isOnDemandRevalidate:O,revalidateOnlyGenerated:k,resolvedPathname:P,clientReferenceManifest:D,serverActionsManifest:N}=v,_=(0,o.normalizeAppPath)(y),M=!!(C.dynamicRoutes[_]||C.routes[P]),T=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,S,!1):t.end("This page could not be found"),null);if(M&&!b){let e=!!C.routes[P],t=C.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await T();throw new g.NoFallbackError}}let U=null;!M||j.isDev||b||(U="/index"===(U=P)?"/":U);let F=!0===j.isDev||!M,q=M&&!F;N&&D&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:D,serverActionsManifest:N});let I=e.method||"GET",H=(0,s.getTracer)(),L=H.getActiveScopeSpan(),$={params:R,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:F,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>j.onRequestError(e,t,a,n,A)},sharedContext:{buildId:w}},V=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let i=async e=>j.handle(B,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${I} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${I} ${y}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&O&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,K,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,a=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:O})},!1,A),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:k,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!M)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&M||g.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,K,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};L?await l(L):await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${I} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:O})},!1,A),M)throw t;return await (0,p.sendResponse)(V,K,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>C,"routeModule",()=>j,"serverHooks",()=>b,"workAsyncStorage",()=>E,"workUnitAsyncStorage",()=>S],36758)}];
1
+ module.exports=[18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),r=e.i(22734);function a(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function n(){let e=a(),n=t.default.join(e,"node_modules","@slycode","slycode","dist");return r.default.existsSync(n)?n:e}function s(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>s,"getPackageDir",()=>n,"getSlycodeRoot",()=>a])},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),r=e.i(14747),a=e.i(46676),n=e.i(7367);function s(){return r.default.join((0,n.getSlycodeRoot)(),"store")}function i(e,n){let s=[],i="skill"===n?"skills":"agents",o=r.default.join(e,i);try{if(!t.default.existsSync(o))return s;for(let e of t.default.readdirSync(o,{withFileTypes:!0})){let l,d;if("skill"===n){if(!e.isDirectory()||(l=r.default.join(o,e.name,"SKILL.md"),d=r.default.join(i,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=r.default.join(o,e.name),d=r.default.join(i,e.name)}let u=t.default.readFileSync(l,"utf-8"),c=(0,a.parseFrontmatter)(u),p=c?.name||e.name.replace(/\.md$/,"");s.push({name:p,type:n,path:d,frontmatter:c,isValid:(0,a.validateFrontmatter)(c)})}}catch{}return s.sort((e,t)=>e.name.localeCompare(t.name))}function o(){let e=s(),a=i(e,"skill");return{skills:a,agents:i(e,"agent"),mcp:function(e){let a=r.default.join(e,"mcp"),n=[];try{if(!t.default.existsSync(a))return n;for(let e of t.default.readdirSync(a,{withFileTypes:!0})){let s;if(!e.isFile()||!e.name.endsWith(".json"))continue;let i=r.default.join(a,e.name),o=t.default.readFileSync(i,"utf-8");try{s=JSON.parse(o)}catch{continue}let l=s.name||e.name.replace(/\.json$/,"");n.push({name:l,type:"mcp",path:r.default.join("mcp",e.name),frontmatter:{name:l,version:s.version,description:s.description,updated:s.updated},isValid:!!(s.name&&(s.command||s.url))})}}catch{}return n}(e)}}function l(){let e=s();return[...i(e,"skill"),...i(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>o])},48044,e=>{"use strict";var t=e.i(22734),r=e.i(33405),a=e.i(14747),n=e.i(46676),s=e.i(73178);let i={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function o(e,t=0,r=0,a=0,n=i){let s=[],l=Math.max(r,1);s.push({name:"Outdated Assets",weight:n.outdatedAssets,value:t,maxValue:l});let d=Date.now(),u=[...e.backlog],c=u.filter(e=>(d-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(u.length,1);s.push({name:"Stale Cards",weight:n.staleCards,value:c,maxValue:p}),s.push({name:"Unresolved Problems",weight:n.unresolvedProblems,value:0,maxValue:1}),s.push({name:"Missing CLAUDE.md",weight:n.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(r,1);s.push({name:"Non-compliant Frontmatter",weight:n.nonCompliantFrontmatter,value:a,maxValue:f});let m=0;for(let e of s)m+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let h=Math.round(Math.max(0,(1-m)*100));return{score:h,level:h>=80?"green":h>=50?"amber":"red",factors:s}}var l=e.i(7367);function d(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?a.default.dirname(e):e}let u=d(),c=a.default.join(u,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(c,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${c}`)}}async function f(e){let r=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(c,r,"utf-8")}async function m(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function h(e){try{let r=await t.promises.readFile(e,"utf-8");return JSON.parse(r)}catch{return null}}async function g(e,t,r){let n=a.default.join(e,"documentation","backlog.json"),s=await h(n);return s?s.map(e=>({...e,projectId:t,projectName:r})):[]}async function x(e,t){let r=a.default.join(e,"documentation","designs.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function y(e,t){let r=a.default.join(e,"documentation","features.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function v(e){let t=e.path;if(!await m(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[a,s,i]=await Promise.all([g(t,e.id,e.name),x(t,e.id),y(t,e.id)]),o=(0,n.scanProjectAssets)(t,e.id),l=(0,n.detectPlatforms)(t),d=function(e){try{return(0,r.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:a,designs:s,features:i,assets:o,platforms:l,gitUncommitted:d>=0?d:void 0,accessible:!0}}async function w(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>v(e)),r=await Promise.all(t),i=(0,s.getStoreAssets)(),u=["skill","agent"],c=0,f=[];for(let t of["claude","agents"])for(let r of u){let a=i.filter(e=>e.type===r),s=new Map;for(let a of e.projects){let e=(0,n.scanProviderAssets)(a.path,t);s.set(a.id,e.filter(e=>e.type===r))}let o=(0,n.buildStoreAssetMatrix)(a,s,e.projects,r);f.push(...o)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&c++;for(let e of r){if(!e.accessible)continue;let t=0;for(let r of f)for(let a of r.cells)a.projectId===e.id&&"outdated"===a.status&&t++;e.healthScore=function(e,t,r=0,a){if(!t)return o(e,0,0,0,void 0);let n=[...t.skills,...t.agents];return o(e,r,n.length,n.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let m=0,g=0;for(let e of r){if(!e.accessible)continue;let t=a.default.join(e.path,"documentation","kanban.json"),r=await h(t);if(r?.stages){m+=(r.stages.backlog||[]).filter(e=>!e.archived).length;let e=(r.stages.implementation||[]).filter(e=>!e.archived),t=(r.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let x=r.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),y=(0,l.getBridgeUrl)();try{let e=await fetch(`${y}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),a={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];a[t]=(a[t]||0)+1}for(let e of r)e.activeSessions=a[e.id]??0}}catch{}let w=d();return{projects:r,totalBacklogItems:m,activeItems:g,totalOutdatedAssets:c,totalUncommitted:x,lastRefresh:new Date().toISOString(),slycodeRoot:w,projectsDir:a.default.dirname(w)}}e.s(["getRepoRoot",()=>d,"loadDashboardData",()=>w,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},36758,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),m=e.i(74838),h=e.i(10372),g=e.i(93695);e.i(52474);var x=e.i(220),y=e.i(89171),v=e.i(48044);async function w(e){try{let{projectIds:t}=await e.json();if(!Array.isArray(t)||0===t.length)return y.NextResponse.json({error:"projectIds must be a non-empty array"},{status:400});let r=await (0,v.loadRegistry)();for(let e=0;e<t.length;e++){let a=r.projects.find(r=>r.id===t[e]);a&&(a.order=e)}return r.lastUpdated=new Date().toISOString(),await (0,v.saveRegistry)(r),y.NextResponse.json({ok:!0})}catch(e){return console.error("Failed to reorder projects:",e),y.NextResponse.json({error:"Failed to reorder projects",details:String(e)},{status:500})}}e.s(["POST",()=>w,"dynamic",0,"force-dynamic"],12621);var R=e.i(12621);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/reorder/route",pathname:"/api/projects/reorder",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/projects/reorder/route.ts",nextConfigOutput:"standalone",userland:R}),{workAsyncStorage:E,workUnitAsyncStorage:S,serverHooks:b}=j;function C(){return(0,a.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:S})}async function A(e,t,a){j.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/projects/reorder/route";y=y.replace(/\/index$/,"")||"/";let v=await j.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:R,nextConfig:E,parsedUrl:S,isDraftMode:b,prerenderManifest:C,routerServerContext:A,isOnDemandRevalidate:O,revalidateOnlyGenerated:k,resolvedPathname:P,clientReferenceManifest:D,serverActionsManifest:N}=v,_=(0,o.normalizeAppPath)(y),M=!!(C.dynamicRoutes[_]||C.routes[P]),T=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,S,!1):t.end("This page could not be found"),null);if(M&&!b){let e=!!C.routes[P],t=C.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await T();throw new g.NoFallbackError}}let U=null;!M||j.isDev||b||(U="/index"===(U=P)?"/":U);let F=!0===j.isDev||!M,q=M&&!F;N&&D&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:D,serverActionsManifest:N});let I=e.method||"GET",H=(0,s.getTracer)(),L=H.getActiveScopeSpan(),$={params:R,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:F,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>j.onRequestError(e,t,a,n,A)},sharedContext:{buildId:w}},V=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let i=async e=>j.handle(B,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${I} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${I} ${y}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&O&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,K,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,a=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:O})},!1,A),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:k,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!M)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&M||g.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,K,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};L?await l(L):await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${I} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:O})},!1,A),M)throw t;return await (0,p.sendResponse)(V,K,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>C,"routeModule",()=>j,"serverHooks",()=>b,"workAsyncStorage",()=>E,"workUnitAsyncStorage",()=>S],36758)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__279e9bf3._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),r=e.i(22734);function a(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function n(){let e=a(),n=t.default.join(e,"node_modules","@slycode","slycode","dist");return r.default.existsSync(n)?n:e}function s(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>s,"getPackageDir",()=>n,"getSlycodeRoot",()=>a])},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),r=e.i(14747),a=e.i(46676),n=e.i(7367);function s(){return r.default.join((0,n.getSlycodeRoot)(),"store")}function i(e,n){let s=[],i="skill"===n?"skills":"agents",o=r.default.join(e,i);try{if(!t.default.existsSync(o))return s;for(let e of t.default.readdirSync(o,{withFileTypes:!0})){let l,d;if("skill"===n){if(!e.isDirectory()||(l=r.default.join(o,e.name,"SKILL.md"),d=r.default.join(i,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=r.default.join(o,e.name),d=r.default.join(i,e.name)}let u=t.default.readFileSync(l,"utf-8"),c=(0,a.parseFrontmatter)(u),p=c?.name||e.name.replace(/\.md$/,"");s.push({name:p,type:n,path:d,frontmatter:c,isValid:(0,a.validateFrontmatter)(c)})}}catch{}return s.sort((e,t)=>e.name.localeCompare(t.name))}function o(){let e=s(),a=i(e,"skill");return{skills:a,agents:i(e,"agent"),mcp:function(e){let a=r.default.join(e,"mcp"),n=[];try{if(!t.default.existsSync(a))return n;for(let e of t.default.readdirSync(a,{withFileTypes:!0})){let s;if(!e.isFile()||!e.name.endsWith(".json"))continue;let i=r.default.join(a,e.name),o=t.default.readFileSync(i,"utf-8");try{s=JSON.parse(o)}catch{continue}let l=s.name||e.name.replace(/\.json$/,"");n.push({name:l,type:"mcp",path:r.default.join("mcp",e.name),frontmatter:{name:l,version:s.version,description:s.description,updated:s.updated},isValid:!!(s.name&&s.command)})}}catch{}return n}(e)}}function l(){let e=s();return[...i(e,"skill"),...i(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>o])},48044,e=>{"use strict";var t=e.i(22734),r=e.i(33405),a=e.i(14747),n=e.i(46676),s=e.i(73178);let i={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function o(e,t=0,r=0,a=0,n=i){let s=[],l=Math.max(r,1);s.push({name:"Outdated Assets",weight:n.outdatedAssets,value:t,maxValue:l});let d=Date.now(),u=[...e.backlog],c=u.filter(e=>(d-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(u.length,1);s.push({name:"Stale Cards",weight:n.staleCards,value:c,maxValue:p}),s.push({name:"Unresolved Problems",weight:n.unresolvedProblems,value:0,maxValue:1}),s.push({name:"Missing CLAUDE.md",weight:n.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(r,1);s.push({name:"Non-compliant Frontmatter",weight:n.nonCompliantFrontmatter,value:a,maxValue:f});let m=0;for(let e of s)m+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let h=Math.round(Math.max(0,(1-m)*100));return{score:h,level:h>=80?"green":h>=50?"amber":"red",factors:s}}var l=e.i(7367);function d(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?a.default.dirname(e):e}let u=d(),c=a.default.join(u,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(c,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${c}`)}}async function f(e){let r=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(c,r,"utf-8")}async function m(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function h(e){try{let r=await t.promises.readFile(e,"utf-8");return JSON.parse(r)}catch{return null}}async function g(e,t,r){let n=a.default.join(e,"documentation","backlog.json"),s=await h(n);return s?s.map(e=>({...e,projectId:t,projectName:r})):[]}async function x(e,t){let r=a.default.join(e,"documentation","designs.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function v(e,t){let r=a.default.join(e,"documentation","features.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function y(e){let t=e.path;if(!await m(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[a,s,i]=await Promise.all([g(t,e.id,e.name),x(t,e.id),v(t,e.id)]),o=(0,n.scanProjectAssets)(t,e.id),l=(0,n.detectPlatforms)(t),d=function(e){try{return(0,r.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:a,designs:s,features:i,assets:o,platforms:l,gitUncommitted:d>=0?d:void 0,accessible:!0}}async function w(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>y(e)),r=await Promise.all(t),i=(0,s.getStoreAssets)(),u=["skill","agent"],c=0,f=[];for(let t of["claude","agents"])for(let r of u){let a=i.filter(e=>e.type===r),s=new Map;for(let a of e.projects){let e=(0,n.scanProviderAssets)(a.path,t);s.set(a.id,e.filter(e=>e.type===r))}let o=(0,n.buildStoreAssetMatrix)(a,s,e.projects,r);f.push(...o)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&c++;for(let e of r){if(!e.accessible)continue;let t=0;for(let r of f)for(let a of r.cells)a.projectId===e.id&&"outdated"===a.status&&t++;e.healthScore=function(e,t,r=0,a){if(!t)return o(e,0,0,0,void 0);let n=[...t.skills,...t.agents];return o(e,r,n.length,n.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let m=0,g=0;for(let e of r){if(!e.accessible)continue;let t=a.default.join(e.path,"documentation","kanban.json"),r=await h(t);if(r?.stages){m+=(r.stages.backlog||[]).filter(e=>!e.archived).length;let e=(r.stages.implementation||[]).filter(e=>!e.archived),t=(r.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let x=r.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),v=(0,l.getBridgeUrl)();try{let e=await fetch(`${v}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),a={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];a[t]=(a[t]||0)+1}for(let e of r)e.activeSessions=a[e.id]??0}}catch{}let w=d();return{projects:r,totalBacklogItems:m,activeItems:g,totalOutdatedAssets:c,totalUncommitted:x,lastRefresh:new Date().toISOString(),slycodeRoot:w,projectsDir:a.default.dirname(w)}}e.s(["getRepoRoot",()=>d,"loadDashboardData",()=>w,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},59404,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),m=e.i(74838),h=e.i(10372),g=e.i(93695);e.i(52474);var x=e.i(220),v=e.i(89171),y=e.i(22734),w=e.i(14747),R=e.i(48044),j=e.i(7367);let E=["documentation/","designs/","features/",".claude/",".codex/",".agents/",".gemini/","store/","updates/"],S=[".md"];async function C(e){let t,{searchParams:r}=new URL(e.url),a=r.get("path"),n=r.get("projectId");if(!a)return v.NextResponse.json({error:"path required"},{status:400});let s=a.replace(/\\/g,"/");if(!E.some(e=>s.startsWith(e)))return v.NextResponse.json({error:"Access denied"},{status:403});let i=w.default.extname(s).toLowerCase();if(!S.includes(i))return v.NextResponse.json({error:"File type not allowed"},{status:403});if(s.includes(".."))return v.NextResponse.json({error:"Invalid path"},{status:400});if(n){let e=(await (0,R.loadRegistry)()).projects.find(e=>e.id===n);if(!e)return v.NextResponse.json({error:"Project not found"},{status:404});t=e.path}else t=(0,j.getSlycodeRoot)();let o=/^\.(claude|codex|agents|gemini)/.test(s)||/^(store|updates)\//.test(s)?w.default.join(t,s):w.default.join(t,"documentation",s.replace(/^documentation\//,"")),l=w.default.resolve(o),d=w.default.resolve(t);if(!l.startsWith(d+w.default.sep)&&l!==d)return v.NextResponse.json({error:"Access denied"},{status:403});try{let e=await y.promises.readFile(l,"utf-8");return v.NextResponse.json({path:a,content:e,type:".md"===i?"markdown":"text"})}catch(e){return console.error("Failed to read file:",e),v.NextResponse.json({error:"File not found"},{status:404})}}e.s(["GET",()=>C],96641);var b=e.i(96641);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/file/route",pathname:"/api/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/file/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:k,workUnitAsyncStorage:O,serverHooks:N}=A;function P(){return(0,a.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:O})}async function _(e,t,a){A.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/file/route";v=v.replace(/\/index$/,"")||"/";let y=await A.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:R,nextConfig:j,parsedUrl:E,isDraftMode:S,prerenderManifest:C,routerServerContext:b,isOnDemandRevalidate:k,revalidateOnlyGenerated:O,resolvedPathname:N,clientReferenceManifest:P,serverActionsManifest:_}=y,D=(0,o.normalizeAppPath)(v),M=!!(C.dynamicRoutes[D]||C.routes[N]),F=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,E,!1):t.end("This page could not be found"),null);if(M&&!S){let e=!!C.routes[N],t=C.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(j.experimental.adapterPath)return await F();throw new g.NoFallbackError}}let T=null;!M||A.isDev||S||(T="/index"===(T=N)?"/":T);let U=!0===A.isDev||!M,q=M&&!U;_&&P&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:P,serverActionsManifest:_});let I=e.method||"GET",H=(0,s.getTracer)(),L=H.getActiveScopeSpan(),$={params:R,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!j.experimental.authInterrupts},cacheComponents:!!j.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:j.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,b)},sharedContext:{buildId:w}},V=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let i=async e=>A.handle(W,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${I} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${I} ${v}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&k&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,K,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,a=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:k})},!1,b),t}},u=await A.handleResponse({req:e,nextConfig:j,cacheKey:T,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:k,revalidateOnlyGenerated:O,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!M)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",k?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&M||g.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,K,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};L?await l(L):await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${I} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:k})},!1,b),M)throw t;return await (0,p.sendResponse)(V,K,new Response(null,{status:500})),null}}e.s(["handler",()=>_,"patchFetch",()=>P,"routeModule",()=>A,"serverHooks",()=>N,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>O],59404)}];
1
+ module.exports=[18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},7367,e=>{"use strict";var t=e.i(14747),r=e.i(22734);function a(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return(console.warn("[paths] SLYCODE_HOME not set in production — falling back to cwd:",e),e.endsWith("/web")||e.endsWith("\\web"))?t.default.dirname(e):e}function n(){let e=a(),n=t.default.join(e,"node_modules","@slycode","slycode","dist");return r.default.existsSync(n)?n:e}function s(){return process.env.BRIDGE_URL?process.env.BRIDGE_URL:"http://127.0.0.1:3004"}e.s(["getBridgeUrl",()=>s,"getPackageDir",()=>n,"getSlycodeRoot",()=>a])},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},73178,e=>{"use strict";var t=e.i(22734),r=e.i(14747),a=e.i(46676),n=e.i(7367);function s(){return r.default.join((0,n.getSlycodeRoot)(),"store")}function i(e,n){let s=[],i="skill"===n?"skills":"agents",o=r.default.join(e,i);try{if(!t.default.existsSync(o))return s;for(let e of t.default.readdirSync(o,{withFileTypes:!0})){let l,d;if("skill"===n){if(!e.isDirectory()||(l=r.default.join(o,e.name,"SKILL.md"),d=r.default.join(i,e.name,"SKILL.md"),!t.default.existsSync(l)))continue}else{if(!e.isFile()||!e.name.endsWith(".md"))continue;l=r.default.join(o,e.name),d=r.default.join(i,e.name)}let u=t.default.readFileSync(l,"utf-8"),c=(0,a.parseFrontmatter)(u),p=c?.name||e.name.replace(/\.md$/,"");s.push({name:p,type:n,path:d,frontmatter:c,isValid:(0,a.validateFrontmatter)(c)})}}catch{}return s.sort((e,t)=>e.name.localeCompare(t.name))}function o(){let e=s(),a=i(e,"skill");return{skills:a,agents:i(e,"agent"),mcp:function(e){let a=r.default.join(e,"mcp"),n=[];try{if(!t.default.existsSync(a))return n;for(let e of t.default.readdirSync(a,{withFileTypes:!0})){let s;if(!e.isFile()||!e.name.endsWith(".json"))continue;let i=r.default.join(a,e.name),o=t.default.readFileSync(i,"utf-8");try{s=JSON.parse(o)}catch{continue}let l=s.name||e.name.replace(/\.json$/,"");n.push({name:l,type:"mcp",path:r.default.join("mcp",e.name),frontmatter:{name:l,version:s.version,description:s.description,updated:s.updated},isValid:!!(s.name&&(s.command||s.url))})}}catch{}return n}(e)}}function l(){let e=s();return[...i(e,"skill"),...i(e,"agent")]}e.s(["getStoreAssets",()=>l,"scanStore",()=>o])},48044,e=>{"use strict";var t=e.i(22734),r=e.i(33405),a=e.i(14747),n=e.i(46676),s=e.i(73178);let i={outdatedAssets:.3,staleCards:.15,unresolvedProblems:.25,missingClaudeMd:.1,nonCompliantFrontmatter:.2};function o(e,t=0,r=0,a=0,n=i){let s=[],l=Math.max(r,1);s.push({name:"Outdated Assets",weight:n.outdatedAssets,value:t,maxValue:l});let d=Date.now(),u=[...e.backlog],c=u.filter(e=>(d-new Date(e.created_at).getTime())/864e5>14&&"done"!==e.status).length,p=Math.max(u.length,1);s.push({name:"Stale Cards",weight:n.staleCards,value:c,maxValue:p}),s.push({name:"Unresolved Problems",weight:n.unresolvedProblems,value:0,maxValue:1}),s.push({name:"Missing CLAUDE.md",weight:n.missingClaudeMd,value:+!e.hasClaudeMd,maxValue:1});let f=Math.max(r,1);s.push({name:"Non-compliant Frontmatter",weight:n.nonCompliantFrontmatter,value:a,maxValue:f});let m=0;for(let e of s)m+=Math.min(e.maxValue>0?e.value/e.maxValue:0,1)*e.weight;let h=Math.round(Math.max(0,(1-m)*100));return{score:h,level:h>=80?"green":h>=50?"amber":"red",factors:s}}var l=e.i(7367);function d(){if(process.env.SLYCODE_HOME)return process.env.SLYCODE_HOME;let e=process.cwd();return e.endsWith("/web")||e.endsWith("\\web")?a.default.dirname(e):e}let u=d(),c=a.default.join(u,"projects","registry.json");async function p(){try{let e=await t.promises.readFile(c,"utf-8");return JSON.parse(e)}catch(e){throw console.error("Failed to load registry:",e),Error(`Failed to load registry from ${c}`)}}async function f(e){let r=JSON.stringify(e,null,2)+"\n";await t.promises.writeFile(c,r,"utf-8")}async function m(e){try{return(await t.promises.stat(e)).isDirectory()}catch{return!1}}async function h(e){try{let r=await t.promises.readFile(e,"utf-8");return JSON.parse(r)}catch{return null}}async function g(e,t,r){let n=a.default.join(e,"documentation","backlog.json"),s=await h(n);return s?s.map(e=>({...e,projectId:t,projectName:r})):[]}async function x(e,t){let r=a.default.join(e,"documentation","designs.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function v(e,t){let r=a.default.join(e,"documentation","features.json"),n=await h(r);return n?n.map(e=>({...e,projectId:t})):[]}async function y(e){let t=e.path;if(!await m(t))return{...e,backlog:[],designs:[],features:[],accessible:!1,error:`Path not accessible: ${t}`};let[a,s,i]=await Promise.all([g(t,e.id,e.name),x(t,e.id),v(t,e.id)]),o=(0,n.scanProjectAssets)(t,e.id),l=(0,n.detectPlatforms)(t),d=function(e){try{return(0,r.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",timeout:5e3}).split("\n").filter(e=>e.trim().length>0).length}catch{return -1}}(t);return{...e,backlog:a,designs:s,features:i,assets:o,platforms:l,gitUncommitted:d>=0?d:void 0,accessible:!0}}async function w(){let e=await p();for(let t=0;t<e.projects.length;t++)void 0===e.projects[t].order&&(e.projects[t].order=t);e.projects.sort((e,t)=>(e.order??0)-(t.order??0));let t=e.projects.map(e=>y(e)),r=await Promise.all(t),i=(0,s.getStoreAssets)(),u=["skill","agent"],c=0,f=[];for(let t of["claude","agents"])for(let r of u){let a=i.filter(e=>e.type===r),s=new Map;for(let a of e.projects){let e=(0,n.scanProviderAssets)(a.path,t);s.set(a.id,e.filter(e=>e.type===r))}let o=(0,n.buildStoreAssetMatrix)(a,s,e.projects,r);f.push(...o)}for(let e of f)for(let t of e.cells)"outdated"===t.status&&c++;for(let e of r){if(!e.accessible)continue;let t=0;for(let r of f)for(let a of r.cells)a.projectId===e.id&&"outdated"===a.status&&t++;e.healthScore=function(e,t,r=0,a){if(!t)return o(e,0,0,0,void 0);let n=[...t.skills,...t.agents];return o(e,r,n.length,n.filter(e=>!e.isValid).length,void 0)}(e,e.assets,t)}let m=0,g=0;for(let e of r){if(!e.accessible)continue;let t=a.default.join(e.path,"documentation","kanban.json"),r=await h(t);if(r?.stages){m+=(r.stages.backlog||[]).filter(e=>!e.archived).length;let e=(r.stages.implementation||[]).filter(e=>!e.archived),t=(r.stages.testing||[]).filter(e=>!e.archived);g+=e.length+t.length}}let x=r.reduce((e,t)=>e+(t.gitUncommitted&&t.gitUncommitted>0?t.gitUncommitted:0),0),v=(0,l.getBridgeUrl)();try{let e=await fetch(`${v}/stats`,{signal:AbortSignal.timeout(2e3)});if(e.ok){let t=await e.json(),a={};for(let e of t.sessions||[])if(e.isActive){let t=e.name.split(":")[0];a[t]=(a[t]||0)+1}for(let e of r)e.activeSessions=a[e.id]??0}}catch{}let w=d();return{projects:r,totalBacklogItems:m,activeItems:g,totalOutdatedAssets:c,totalUncommitted:x,lastRefresh:new Date().toISOString(),slycodeRoot:w,projectsDir:a.default.dirname(w)}}e.s(["getRepoRoot",()=>d,"loadDashboardData",()=>w,"loadRegistry",()=>p,"saveRegistry",()=>f],48044)},59404,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),m=e.i(74838),h=e.i(10372),g=e.i(93695);e.i(52474);var x=e.i(220),v=e.i(89171),y=e.i(22734),w=e.i(14747),R=e.i(48044),j=e.i(7367);let E=["documentation/","designs/","features/",".claude/",".codex/",".agents/",".gemini/","store/","updates/"],S=[".md",".json"];async function C(e){let t,{searchParams:r}=new URL(e.url),a=r.get("path"),n=r.get("projectId");if(!a)return v.NextResponse.json({error:"path required"},{status:400});let s=a.replace(/\\/g,"/");if(!E.some(e=>s.startsWith(e)))return v.NextResponse.json({error:"Access denied"},{status:403});let i=w.default.extname(s).toLowerCase();if(!S.includes(i))return v.NextResponse.json({error:"File type not allowed"},{status:403});if(s.includes(".."))return v.NextResponse.json({error:"Invalid path"},{status:400});if(n){let e=(await (0,R.loadRegistry)()).projects.find(e=>e.id===n);if(!e)return v.NextResponse.json({error:"Project not found"},{status:404});t=e.path}else t=(0,j.getSlycodeRoot)();let o=/^\.(claude|codex|agents|gemini)/.test(s)||/^(store|updates)\//.test(s)?w.default.join(t,s):w.default.join(t,"documentation",s.replace(/^documentation\//,"")),l=w.default.resolve(o),d=w.default.resolve(t);if(!l.startsWith(d+w.default.sep)&&l!==d)return v.NextResponse.json({error:"Access denied"},{status:403});try{let e=await y.promises.readFile(l,"utf-8");return v.NextResponse.json({path:a,content:e,type:".md"===i?"markdown":".json"===i?"json":"text"})}catch(e){return console.error("Failed to read file:",e),v.NextResponse.json({error:"File not found"},{status:404})}}e.s(["GET",()=>C],96641);var b=e.i(96641);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/file/route",pathname:"/api/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/file/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:k,workUnitAsyncStorage:O,serverHooks:N}=A;function P(){return(0,a.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:O})}async function _(e,t,a){A.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/file/route";v=v.replace(/\/index$/,"")||"/";let y=await A.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:R,nextConfig:j,parsedUrl:E,isDraftMode:S,prerenderManifest:C,routerServerContext:b,isOnDemandRevalidate:k,revalidateOnlyGenerated:O,resolvedPathname:N,clientReferenceManifest:P,serverActionsManifest:_}=y,D=(0,o.normalizeAppPath)(v),M=!!(C.dynamicRoutes[D]||C.routes[N]),F=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,E,!1):t.end("This page could not be found"),null);if(M&&!S){let e=!!C.routes[N],t=C.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(j.experimental.adapterPath)return await F();throw new g.NoFallbackError}}let T=null;!M||A.isDev||S||(T="/index"===(T=N)?"/":T);let U=!0===A.isDev||!M,q=M&&!U;_&&P&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:P,serverActionsManifest:_});let I=e.method||"GET",H=(0,s.getTracer)(),L=H.getActiveScopeSpan(),$={params:R,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!j.experimental.authInterrupts},cacheComponents:!!j.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:j.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,b)},sharedContext:{buildId:w}},V=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let i=async e=>A.handle(W,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${I} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${I} ${v}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&k&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,K,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[h.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,a=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:k})},!1,b),t}},u=await A.handleResponse({req:e,nextConfig:j,cacheKey:T,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:k,revalidateOnlyGenerated:O,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!M)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",k?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&M||g.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,K,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};L?await l(L):await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${I} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:k})},!1,b),M)throw t;return await (0,p.sendResponse)(V,K,new Response(null,{status:500})),null}}e.s(["handler",()=>_,"patchFetch",()=>P,"routeModule",()=>A,"serverHooks",()=>N,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>O],59404)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__2d1f0ed9._.js.map