slackhive 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +14 -0
- package/.env.example +44 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +65 -0
- package/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +38 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +27 -0
- package/.github/dependabot.yml +20 -0
- package/.github/workflows/audit.yml +149 -0
- package/.github/workflows/ci.yml +135 -0
- package/CHANGELOG.md +52 -0
- package/CODE_OF_CONDUCT.md +37 -0
- package/CONTRIBUTING.md +204 -0
- package/LICENSE +21 -0
- package/README.md +19 -0
- package/SECURITY.md +47 -0
- package/apps/runner/Dockerfile +33 -0
- package/apps/runner/dist/__tests__/channel-restrictions.test.d.ts +8 -0
- package/apps/runner/dist/__tests__/channel-restrictions.test.js +63 -0
- package/apps/runner/dist/__tests__/channel-restrictions.test.js.map +1 -0
- package/apps/runner/dist/__tests__/claude-handler-resolve.test.d.ts +20 -0
- package/apps/runner/dist/__tests__/claude-handler-resolve.test.js +178 -0
- package/apps/runner/dist/__tests__/claude-handler-resolve.test.js.map +1 -0
- package/apps/runner/dist/__tests__/compile-claude-md.test.d.ts +13 -0
- package/apps/runner/dist/__tests__/compile-claude-md.test.js +144 -0
- package/apps/runner/dist/__tests__/compile-claude-md.test.js.map +1 -0
- package/apps/runner/dist/__tests__/memory-sync.test.d.ts +11 -0
- package/apps/runner/dist/__tests__/memory-sync.test.js +56 -0
- package/apps/runner/dist/__tests__/memory-sync.test.js.map +1 -0
- package/apps/runner/dist/__tests__/slack-file-support.test.d.ts +9 -0
- package/apps/runner/dist/__tests__/slack-file-support.test.js +271 -0
- package/apps/runner/dist/__tests__/slack-file-support.test.js.map +1 -0
- package/apps/runner/dist/__tests__/slack-formatting.test.d.ts +12 -0
- package/apps/runner/dist/__tests__/slack-formatting.test.js +400 -0
- package/apps/runner/dist/__tests__/slack-formatting.test.js.map +1 -0
- package/apps/runner/dist/__tests__/thread-context.test.d.ts +12 -0
- package/apps/runner/dist/__tests__/thread-context.test.js +182 -0
- package/apps/runner/dist/__tests__/thread-context.test.js.map +1 -0
- package/apps/runner/dist/agent-runner.d.ts +118 -0
- package/apps/runner/dist/agent-runner.js +352 -0
- package/apps/runner/dist/agent-runner.js.map +1 -0
- package/apps/runner/dist/claude-handler.d.ts +122 -0
- package/apps/runner/dist/claude-handler.js +402 -0
- package/apps/runner/dist/claude-handler.js.map +1 -0
- package/apps/runner/dist/compile-claude-md.d.ts +59 -0
- package/apps/runner/dist/compile-claude-md.js +291 -0
- package/apps/runner/dist/compile-claude-md.js.map +1 -0
- package/apps/runner/dist/correction-handler.d.ts +46 -0
- package/apps/runner/dist/correction-handler.js +162 -0
- package/apps/runner/dist/correction-handler.js.map +1 -0
- package/apps/runner/dist/correction-manager.d.ts +53 -0
- package/apps/runner/dist/correction-manager.js +241 -0
- package/apps/runner/dist/correction-manager.js.map +1 -0
- package/apps/runner/dist/db.d.ts +193 -0
- package/apps/runner/dist/db.js +492 -0
- package/apps/runner/dist/db.js.map +1 -0
- package/apps/runner/dist/index.d.ts +9 -0
- package/apps/runner/dist/index.js +43 -0
- package/apps/runner/dist/index.js.map +1 -0
- package/apps/runner/dist/job-scheduler.d.ts +57 -0
- package/apps/runner/dist/job-scheduler.js +150 -0
- package/apps/runner/dist/job-scheduler.js.map +1 -0
- package/apps/runner/dist/logger.d.ts +32 -0
- package/apps/runner/dist/logger.js +52 -0
- package/apps/runner/dist/logger.js.map +1 -0
- package/apps/runner/dist/mcp-process-manager.d.ts +38 -0
- package/apps/runner/dist/mcp-process-manager.js +189 -0
- package/apps/runner/dist/mcp-process-manager.js.map +1 -0
- package/apps/runner/dist/memory-mcp.d.ts +14 -0
- package/apps/runner/dist/memory-mcp.js +88 -0
- package/apps/runner/dist/memory-mcp.js.map +1 -0
- package/apps/runner/dist/memory-watcher.d.ts +78 -0
- package/apps/runner/dist/memory-watcher.js +220 -0
- package/apps/runner/dist/memory-watcher.js.map +1 -0
- package/apps/runner/dist/slack-handler.d.ts +120 -0
- package/apps/runner/dist/slack-handler.js +843 -0
- package/apps/runner/dist/slack-handler.js.map +1 -0
- package/apps/runner/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/apps/runner/package.json +42 -0
- package/apps/runner/src/__tests__/channel-restrictions.test.ts +75 -0
- package/apps/runner/src/__tests__/claude-handler-resolve.test.ts +160 -0
- package/apps/runner/src/__tests__/compile-claude-md.test.ts +139 -0
- package/apps/runner/src/__tests__/memory-sync.test.ts +59 -0
- package/apps/runner/src/__tests__/slack-file-support.test.ts +376 -0
- package/apps/runner/src/__tests__/slack-formatting.test.ts +495 -0
- package/apps/runner/src/__tests__/thread-context.test.ts +215 -0
- package/apps/runner/src/agent-runner.ts +397 -0
- package/apps/runner/src/claude-handler.ts +475 -0
- package/apps/runner/src/compile-claude-md.ts +283 -0
- package/apps/runner/src/correction-handler.ts +191 -0
- package/apps/runner/src/correction-manager.ts +285 -0
- package/apps/runner/src/db.ts +604 -0
- package/apps/runner/src/index.ts +46 -0
- package/apps/runner/src/job-scheduler.ts +165 -0
- package/apps/runner/src/logger.ts +49 -0
- package/apps/runner/src/mcp-process-manager.ts +195 -0
- package/apps/runner/src/memory-mcp.ts +85 -0
- package/apps/runner/src/memory-watcher.ts +215 -0
- package/apps/runner/src/slack-handler.ts +929 -0
- package/apps/runner/tsconfig.json +17 -0
- package/apps/runner/vitest.config.mts +17 -0
- package/apps/web/.eslintrc.json +3 -0
- package/apps/web/.next/app-build-manifest.json +323 -0
- package/apps/web/.next/app-path-routes-manifest.json +46 -0
- package/apps/web/.next/build-manifest.json +33 -0
- package/apps/web/.next/cache/.previewinfo +1 -0
- package/apps/web/.next/cache/.rscinfo +1 -0
- package/apps/web/.next/cache/webpack/client-production/0.pack +0 -0
- package/apps/web/.next/cache/webpack/client-production/1.pack +0 -0
- package/apps/web/.next/cache/webpack/client-production/2.pack +0 -0
- package/apps/web/.next/cache/webpack/client-production/3.pack +0 -0
- package/apps/web/.next/cache/webpack/client-production/4.pack +0 -0
- package/apps/web/.next/cache/webpack/client-production/index.pack +0 -0
- package/apps/web/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/apps/web/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/apps/web/.next/cache/webpack/edge-server-production/1.pack +0 -0
- package/apps/web/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/apps/web/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/apps/web/.next/cache/webpack/server-production/0.pack +0 -0
- package/apps/web/.next/cache/webpack/server-production/1.pack +0 -0
- package/apps/web/.next/cache/webpack/server-production/2.pack +0 -0
- package/apps/web/.next/cache/webpack/server-production/index.pack +0 -0
- package/apps/web/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/apps/web/.next/diagnostics/build-diagnostics.json +6 -0
- package/apps/web/.next/diagnostics/framework.json +1 -0
- package/apps/web/.next/package.json +1 -0
- package/apps/web/.next/react-loadable-manifest.json +1 -0
- package/apps/web/.next/server/app/_not-found/page.js +2 -0
- package/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/agents/[slug]/page.js +4 -0
- package/apps/web/.next/server/app/agents/[slug]/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/agents/[slug]/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/agents/new/page.js +2 -0
- package/apps/web/.next/server/app/agents/new/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/agents/new/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/access/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/access/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/access/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/claude-md/route.js +6 -0
- package/apps/web/.next/server/app/api/agents/[id]/claude-md/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/claude-md/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/logs/route.js +3 -0
- package/apps/web/.next/server/app/api/agents/[id]/logs/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/logs/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/manifest/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/manifest/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/manifest/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/mcps/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/mcps/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/mcps/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/memories/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/memories/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/memories/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/permissions/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/permissions/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/permissions/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/reload/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/reload/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/reload/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/restrictions/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/restrictions/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/restrictions/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/route.js +33 -0
- package/apps/web/.next/server/app/api/agents/[id]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/skills/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/skills/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/slack-info/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/slack-info/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/slack-info/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/start/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/start/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/start/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/stop/route.js +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/stop/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/[id]/stop/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/agents/route.js +91 -0
- package/apps/web/.next/server/app/api/agents/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/agents/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/auth/login/route.js +1 -0
- package/apps/web/.next/server/app/api/auth/login/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/auth/logout/route.js +1 -0
- package/apps/web/.next/server/app/api/auth/logout/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/auth/me/route.js +1 -0
- package/apps/web/.next/server/app/api/auth/me/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/auth/users/[id]/route.js +1 -0
- package/apps/web/.next/server/app/api/auth/users/[id]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/auth/users/[id]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/auth/users/route.js +1 -0
- package/apps/web/.next/server/app/api/auth/users/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/auth/users/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/env-vars/[key]/route.js +1 -0
- package/apps/web/.next/server/app/api/env-vars/[key]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/env-vars/[key]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/env-vars/route.js +1 -0
- package/apps/web/.next/server/app/api/env-vars/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/env-vars/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/jobs/[id]/route.js +1 -0
- package/apps/web/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/jobs/[id]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/jobs/[id]/runs/route.js +1 -0
- package/apps/web/.next/server/app/api/jobs/[id]/runs/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/jobs/[id]/runs/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/jobs/route.js +1 -0
- package/apps/web/.next/server/app/api/jobs/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/jobs/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/mcps/[id]/route.js +1 -0
- package/apps/web/.next/server/app/api/mcps/[id]/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/mcps/[id]/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/mcps/[id]/test/route.js +1 -0
- package/apps/web/.next/server/app/api/mcps/[id]/test/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/mcps/[id]/test/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/mcps/route.js +1 -0
- package/apps/web/.next/server/app/api/mcps/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/mcps/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/api/settings/route.js +1 -0
- package/apps/web/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/icon.svg/route.js +1 -0
- package/apps/web/.next/server/app/icon.svg/route.js.nft.json +1 -0
- package/apps/web/.next/server/app/jobs/page.js +2 -0
- package/apps/web/.next/server/app/jobs/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/jobs/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/login/page.js +2 -0
- package/apps/web/.next/server/app/login/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/login/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/page.js +2 -0
- package/apps/web/.next/server/app/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/settings/env-vars/page.js +2 -0
- package/apps/web/.next/server/app/settings/env-vars/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/settings/env-vars/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/settings/mcps/page.js +2 -0
- package/apps/web/.next/server/app/settings/mcps/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/settings/mcps/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app/settings/page.js +2 -0
- package/apps/web/.next/server/app/settings/page.js.nft.json +1 -0
- package/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -0
- package/apps/web/.next/server/app-paths-manifest.json +46 -0
- package/apps/web/.next/server/chunks/1157.js +9 -0
- package/apps/web/.next/server/chunks/2287.js +1 -0
- package/apps/web/.next/server/chunks/3444.js +1 -0
- package/apps/web/.next/server/chunks/383.js +6 -0
- package/apps/web/.next/server/chunks/4012.js +58 -0
- package/apps/web/.next/server/chunks/6791.js +1 -0
- package/apps/web/.next/server/chunks/7171.js +1 -0
- package/apps/web/.next/server/chunks/8819.js +22 -0
- package/apps/web/.next/server/edge-runtime-webpack.js +2 -0
- package/apps/web/.next/server/edge-runtime-webpack.js.map +1 -0
- package/apps/web/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/apps/web/.next/server/middleware-build-manifest.js +1 -0
- package/apps/web/.next/server/middleware-manifest.json +32 -0
- package/apps/web/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/apps/web/.next/server/next-font-manifest.js +1 -0
- package/apps/web/.next/server/next-font-manifest.json +1 -0
- package/apps/web/.next/server/pages/_app.js +1 -0
- package/apps/web/.next/server/pages/_app.js.nft.json +1 -0
- package/apps/web/.next/server/pages/_document.js +1 -0
- package/apps/web/.next/server/pages/_document.js.nft.json +1 -0
- package/apps/web/.next/server/pages/_error.js +19 -0
- package/apps/web/.next/server/pages/_error.js.nft.json +1 -0
- package/apps/web/.next/server/pages-manifest.json +5 -0
- package/apps/web/.next/server/server-reference-manifest.js +1 -0
- package/apps/web/.next/server/server-reference-manifest.json +1 -0
- package/apps/web/.next/server/src/middleware.js +14 -0
- package/apps/web/.next/server/src/middleware.js.map +1 -0
- package/apps/web/.next/server/webpack-runtime.js +1 -0
- package/apps/web/.next/static/chunks/18-90b700ea37b686a2.js +1 -0
- package/apps/web/.next/static/chunks/87c73c54-24122e7b92478d00.js +1 -0
- package/apps/web/.next/static/chunks/9664-af80478aa73ba424.js +1 -0
- package/apps/web/.next/static/chunks/app/_not-found/page-b9cee17ed89ca24a.js +1 -0
- package/apps/web/.next/static/chunks/app/agents/[slug]/page-18369fc3fe1a9a7b.js +1 -0
- package/apps/web/.next/static/chunks/app/agents/new/page-bf11cf8901c7e2cd.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/access/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/claude-md/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/logs/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/manifest/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/mcps/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/memories/[memId]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/memories/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/permissions/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/reload/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/restrictions/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/skills/[skillId]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/skills/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/slack-info/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/[sid]/restore/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/[sid]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/start/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/[id]/stop/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/agents/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/auth/login/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/auth/logout/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/auth/me/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/auth/users/[id]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/auth/users/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/env-vars/[key]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/env-vars/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/jobs/[id]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/jobs/[id]/runs/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/jobs/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/mcps/[id]/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/mcps/[id]/test/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/mcps/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/api/settings/route-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/jobs/page-f5aa89a47c50efd8.js +1 -0
- package/apps/web/.next/static/chunks/app/layout-2079f4964aa7314e.js +1 -0
- package/apps/web/.next/static/chunks/app/login/layout-07f0f73ac9839899.js +1 -0
- package/apps/web/.next/static/chunks/app/login/page-aa259283dc38e8f9.js +1 -0
- package/apps/web/.next/static/chunks/app/page-e83437b608104dff.js +1 -0
- package/apps/web/.next/static/chunks/app/settings/env-vars/page-06479dbdfb78b76b.js +1 -0
- package/apps/web/.next/static/chunks/app/settings/mcps/page-75650686ed6490c7.js +1 -0
- package/apps/web/.next/static/chunks/app/settings/page-e1e62fc41ff6cddd.js +1 -0
- package/apps/web/.next/static/chunks/framework-811407f832a33072.js +1 -0
- package/apps/web/.next/static/chunks/main-3f1cddbdd67b1546.js +1 -0
- package/apps/web/.next/static/chunks/main-app-cebd8a6a5ccbf72d.js +1 -0
- package/apps/web/.next/static/chunks/pages/_app-50fa07b56b2d29ac.js +1 -0
- package/apps/web/.next/static/chunks/pages/_error-fed8688bdd23f211.js +1 -0
- package/apps/web/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/apps/web/.next/static/chunks/webpack-6c05566dba553c97.js +1 -0
- package/apps/web/.next/static/css/15371687405525e2.css +5 -0
- package/apps/web/.next/static/ikfNbLhuw7jntn35bz0lk/_buildManifest.js +1 -0
- package/apps/web/.next/static/ikfNbLhuw7jntn35bz0lk/_ssgManifest.js +1 -0
- package/apps/web/.next/trace +5 -0
- package/apps/web/.next/types/app/agents/[slug]/page.ts +84 -0
- package/apps/web/.next/types/app/agents/new/page.ts +84 -0
- package/apps/web/.next/types/app/api/agents/[id]/access/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/claude-md/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/logs/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/manifest/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/mcps/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/memories/[memId]/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/memories/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/permissions/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/reload/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/restrictions/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/skills/[skillId]/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/skills/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/slack-info/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/snapshots/[sid]/restore/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/snapshots/[sid]/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/snapshots/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/start/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/[id]/stop/route.ts +347 -0
- package/apps/web/.next/types/app/api/agents/route.ts +347 -0
- package/apps/web/.next/types/app/api/auth/login/route.ts +347 -0
- package/apps/web/.next/types/app/api/auth/logout/route.ts +347 -0
- package/apps/web/.next/types/app/api/auth/me/route.ts +347 -0
- package/apps/web/.next/types/app/api/auth/users/[id]/route.ts +347 -0
- package/apps/web/.next/types/app/api/auth/users/route.ts +347 -0
- package/apps/web/.next/types/app/api/env-vars/[key]/route.ts +347 -0
- package/apps/web/.next/types/app/api/env-vars/route.ts +347 -0
- package/apps/web/.next/types/app/api/jobs/[id]/route.ts +347 -0
- package/apps/web/.next/types/app/api/jobs/[id]/runs/route.ts +347 -0
- package/apps/web/.next/types/app/api/jobs/route.ts +347 -0
- package/apps/web/.next/types/app/api/mcps/[id]/route.ts +347 -0
- package/apps/web/.next/types/app/api/mcps/[id]/test/route.ts +347 -0
- package/apps/web/.next/types/app/api/mcps/route.ts +347 -0
- package/apps/web/.next/types/app/api/settings/route.ts +347 -0
- package/apps/web/.next/types/app/jobs/page.ts +84 -0
- package/apps/web/.next/types/app/login/layout.ts +84 -0
- package/apps/web/.next/types/app/login/page.ts +84 -0
- package/apps/web/.next/types/app/page.ts +84 -0
- package/apps/web/.next/types/app/settings/env-vars/page.ts +84 -0
- package/apps/web/.next/types/app/settings/mcps/page.ts +84 -0
- package/apps/web/.next/types/app/settings/page.ts +84 -0
- package/apps/web/.next/types/cache-life.d.ts +141 -0
- package/apps/web/.next/types/package.json +1 -0
- package/apps/web/.next/types/routes.d.ts +114 -0
- package/apps/web/.next/types/validator.ts +448 -0
- package/apps/web/Dockerfile +37 -0
- package/apps/web/next-env.d.ts +6 -0
- package/apps/web/next.config.js +6 -0
- package/apps/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/apps/web/package.json +48 -0
- package/apps/web/postcss.config.js +3 -0
- package/apps/web/public/logo.svg +17 -0
- package/apps/web/src/app/agents/[slug]/page.tsx +2235 -0
- package/apps/web/src/app/agents/new/page.tsx +1161 -0
- package/apps/web/src/app/api/agents/[id]/access/route.ts +76 -0
- package/apps/web/src/app/api/agents/[id]/claude-md/route.ts +111 -0
- package/apps/web/src/app/api/agents/[id]/logs/route.ts +84 -0
- package/apps/web/src/app/api/agents/[id]/manifest/route.ts +32 -0
- package/apps/web/src/app/api/agents/[id]/mcps/route.ts +73 -0
- package/apps/web/src/app/api/agents/[id]/memories/[memId]/route.ts +31 -0
- package/apps/web/src/app/api/agents/[id]/memories/route.ts +56 -0
- package/apps/web/src/app/api/agents/[id]/permissions/route.ts +74 -0
- package/apps/web/src/app/api/agents/[id]/reload/route.ts +33 -0
- package/apps/web/src/app/api/agents/[id]/restrictions/route.ts +85 -0
- package/apps/web/src/app/api/agents/[id]/route.ts +81 -0
- package/apps/web/src/app/api/agents/[id]/skills/[skillId]/route.ts +52 -0
- package/apps/web/src/app/api/agents/[id]/skills/route.ts +80 -0
- package/apps/web/src/app/api/agents/[id]/slack-info/route.ts +38 -0
- package/apps/web/src/app/api/agents/[id]/snapshots/[sid]/restore/route.ts +61 -0
- package/apps/web/src/app/api/agents/[id]/snapshots/[sid]/route.ts +53 -0
- package/apps/web/src/app/api/agents/[id]/snapshots/route.ts +84 -0
- package/apps/web/src/app/api/agents/[id]/start/route.ts +35 -0
- package/apps/web/src/app/api/agents/[id]/stop/route.ts +35 -0
- package/apps/web/src/app/api/agents/route.ts +99 -0
- package/apps/web/src/app/api/auth/login/route.ts +39 -0
- package/apps/web/src/app/api/auth/logout/route.ts +21 -0
- package/apps/web/src/app/api/auth/me/route.ts +24 -0
- package/apps/web/src/app/api/auth/users/[id]/route.ts +48 -0
- package/apps/web/src/app/api/auth/users/route.ts +63 -0
- package/apps/web/src/app/api/env-vars/[key]/route.ts +66 -0
- package/apps/web/src/app/api/env-vars/route.ts +59 -0
- package/apps/web/src/app/api/jobs/[id]/route.ts +51 -0
- package/apps/web/src/app/api/jobs/[id]/runs/route.ts +24 -0
- package/apps/web/src/app/api/jobs/route.ts +42 -0
- package/apps/web/src/app/api/mcps/[id]/route.ts +60 -0
- package/apps/web/src/app/api/mcps/[id]/test/route.ts +195 -0
- package/apps/web/src/app/api/mcps/route.ts +72 -0
- package/apps/web/src/app/api/settings/route.ts +42 -0
- package/apps/web/src/app/globals.css +124 -0
- package/apps/web/src/app/icon.svg +17 -0
- package/apps/web/src/app/jobs/page.tsx +543 -0
- package/apps/web/src/app/layout-shell.tsx +89 -0
- package/apps/web/src/app/layout.tsx +18 -0
- package/apps/web/src/app/login/layout.tsx +9 -0
- package/apps/web/src/app/login/page.tsx +150 -0
- package/apps/web/src/app/page.tsx +573 -0
- package/apps/web/src/app/settings/env-vars/page.tsx +216 -0
- package/apps/web/src/app/settings/mcps/page.tsx +763 -0
- package/apps/web/src/app/settings/page.tsx +528 -0
- package/apps/web/src/app/sidebar.tsx +345 -0
- package/apps/web/src/lib/__tests__/api-guard.test.ts +189 -0
- package/apps/web/src/lib/__tests__/auth.test.ts +262 -0
- package/apps/web/src/lib/__tests__/boss-registry.test.ts +323 -0
- package/apps/web/src/lib/__tests__/compile.test.ts +161 -0
- package/apps/web/src/lib/__tests__/db-agent-hierarchy.test.ts +136 -0
- package/apps/web/src/lib/__tests__/db-env-vars.test.ts +216 -0
- package/apps/web/src/lib/__tests__/db-restrictions.test.ts +117 -0
- package/apps/web/src/lib/__tests__/db.integration.test.ts +271 -0
- package/apps/web/src/lib/__tests__/diff.test.ts +102 -0
- package/apps/web/src/lib/__tests__/mcp-mask.test.ts +274 -0
- package/apps/web/src/lib/__tests__/skill-templates.test.ts +237 -0
- package/apps/web/src/lib/__tests__/slack-manifest.test.ts +105 -0
- package/apps/web/src/lib/api-guard.ts +68 -0
- package/apps/web/src/lib/auth-context.tsx +71 -0
- package/apps/web/src/lib/auth.ts +128 -0
- package/apps/web/src/lib/boss-registry.ts +90 -0
- package/apps/web/src/lib/compile.ts +51 -0
- package/apps/web/src/lib/db.ts +1196 -0
- package/apps/web/src/lib/diff.ts +43 -0
- package/apps/web/src/lib/mcp-mask.ts +91 -0
- package/apps/web/src/lib/portal.tsx +23 -0
- package/apps/web/src/lib/skill-templates.ts +148 -0
- package/apps/web/src/lib/slack-manifest.ts +85 -0
- package/apps/web/src/middleware.ts +68 -0
- package/apps/web/tailwind.config.js +6 -0
- package/apps/web/tsconfig.json +23 -0
- package/apps/web/vitest.config.mts +21 -0
- package/cli/.claude/settings.local.json +6 -0
- package/cli/README.md +281 -0
- package/cli/node_modules/.package-lock.json +427 -0
- package/cli/node_modules/commander/LICENSE +22 -0
- package/cli/node_modules/commander/Readme.md +1157 -0
- package/cli/node_modules/commander/esm.mjs +16 -0
- package/cli/node_modules/commander/index.js +24 -0
- package/cli/node_modules/commander/lib/argument.js +149 -0
- package/cli/node_modules/commander/lib/command.js +2509 -0
- package/cli/node_modules/commander/lib/error.js +39 -0
- package/cli/node_modules/commander/lib/help.js +520 -0
- package/cli/node_modules/commander/lib/option.js +330 -0
- package/cli/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/cli/node_modules/commander/package-support.json +16 -0
- package/cli/node_modules/commander/package.json +84 -0
- package/cli/node_modules/commander/typings/esm.d.mts +3 -0
- package/cli/node_modules/commander/typings/index.d.ts +969 -0
- package/cli/package-lock.json +449 -0
- package/cli/package.json +44 -0
- package/cli/src/commands/init.ts +514 -0
- package/cli/src/commands/manage.ts +115 -0
- package/cli/src/index.ts +63 -0
- package/cli/tsconfig.json +14 -0
- package/docker-compose.yml +122 -0
- package/docs/agents/boss-agents.mdx +108 -0
- package/docs/agents/creating-agents.mdx +132 -0
- package/docs/agents/memory.mdx +113 -0
- package/docs/agents/tools.mdx +103 -0
- package/docs/configuration/env-vars.mdx +166 -0
- package/docs/configuration/mcp-servers.mdx +203 -0
- package/docs/configuration/slack-app.mdx +175 -0
- package/docs/docs.json +79 -0
- package/docs/favicon.svg +17 -0
- package/docs/features/history.mdx +60 -0
- package/docs/features/import-export.mdx +77 -0
- package/docs/features/logs.mdx +131 -0
- package/docs/features/multi-workspace.mdx +90 -0
- package/docs/features/scheduled-jobs.mdx +231 -0
- package/docs/features/users.mdx +92 -0
- package/docs/introduction.mdx +160 -0
- package/docs/logo/dark.svg +17 -0
- package/docs/logo/light.svg +17 -0
- package/docs/logo/wide-dark.svg +12 -0
- package/docs/logo/wide-light.svg +12 -0
- package/docs/quickstart.mdx +270 -0
- package/docs/self-hosting/docker.mdx +151 -0
- package/docs/self-hosting/production.mdx +176 -0
- package/package.json +20 -36
- package/packages/shared/dist/index.d.ts +8 -0
- package/packages/shared/dist/index.d.ts.map +1 -0
- package/packages/shared/dist/index.js +24 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/packages/shared/dist/types.d.ts +584 -0
- package/packages/shared/dist/types.d.ts.map +1 -0
- package/packages/shared/dist/types.js +39 -0
- package/packages/shared/dist/types.js.map +1 -0
- package/packages/shared/package.json +15 -0
- package/packages/shared/src/db/schema.sql +354 -0
- package/packages/shared/src/index.ts +8 -0
- package/packages/shared/src/types.ts +683 -0
- package/packages/shared/tsconfig.json +17 -0
- package/scripts/dev.sh +45 -0
- /package/{dist → cli/dist}/commands/init.d.ts +0 -0
- /package/{dist → cli/dist}/commands/init.js +0 -0
- /package/{dist → cli/dist}/commands/manage.d.ts +0 -0
- /package/{dist → cli/dist}/commands/manage.js +0 -0
- /package/{dist → cli/dist}/index.d.ts +0 -0
- /package/{dist → cli/dist}/index.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1555],{2068:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7620);let o=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim()};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,n.forwardRef)((e,t)=>{let{color:r="currentColor",size:l=24,strokeWidth:i=2,absoluteStrokeWidth:s,className:d="",children:c,iconNode:p,...u}=e;return(0,n.createElement)("svg",{ref:t,...a,width:l,height:l,stroke:r,strokeWidth:s?24*Number(i)/Number(l):i,className:o("lucide",d),...u},[...p.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),i=(e,t)=>{let r=(0,n.forwardRef)((r,a)=>{let{className:i,...s}=r;return(0,n.createElement)(l,{ref:a,iconNode:t,className:o("lucide-".concat(e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),i),...s})});return r.displayName="".concat(e),r}},4029:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>y});var n=r(4568),o=r(7620),a=r(2068);let l=(0,a.A)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]),i=(0,a.A)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]),s=(0,a.A)("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]),d=(0,a.A)("Camera",[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]),c=(0,a.A)("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);var p=r(9664),u=r.n(p),f=r(7541),g=r(8546),h=r(4492);function x(e,t){let r=e.split("\n"),n=t.split("\n"),o=r.length,a=n.length,l=Array.from({length:o+1},()=>Array(a+1).fill(0));for(let e=1;e<=o;e++)for(let t=1;t<=a;t++)l[e][t]=r[e-1]===n[t-1]?l[e-1][t-1]+1:Math.max(l[e-1][t],l[e][t-1]);let i=[],s=o,d=a;for(;s>0||d>0;)s>0&&d>0&&r[s-1]===n[d-1]?(i.unshift({type:"same",line:r[s-1]}),s--,d--):d>0&&(0===s||l[s][d-1]>=l[s-1][d])?(i.unshift({type:"add",line:n[d-1]}),d--):(i.unshift({type:"remove",line:r[s-1]}),s--);return i}let m=[{id:"overview",label:"Overview"},{id:"skills",label:"Skills"},{id:"claude-md",label:"System Prompt"},{id:"mcps",label:"MCPs"},{id:"permissions",label:"Tools"},{id:"memory",label:"Memory"},{id:"logs",label:"Logs"},{id:"history",label:"History"}],v={running:"#16a34a",stopped:"var(--border-2)",error:"#ef4444"};function y(e){var t;let{params:r}=e,{slug:a}=(0,o.use)(r),{role:s,canManageUsers:d}=(0,h.A)(),[c,p]=(0,o.useState)(null),[f,x]=(0,o.useState)([]),[y,w]=(0,o.useState)(!1),[z,B]=(0,o.useState)("overview"),[R,I]=(0,o.useState)(!0),[E,A]=(0,o.useState)(""),[F,P]=(0,o.useState)(!1),[U,J]=(0,o.useState)(null),[q,Z]=(0,o.useState)(!1),[V,G]=(0,o.useState)(""),X=(0,o.useRef)(null);(0,o.useEffect)(()=>{fetch("/api/agents").then(e=>e.json()).then(e=>{var t;x(e);let r=null!=(t=e.find(e=>e.slug===a))?t:null;p(r),r&&("admin"===s||"superadmin"===s?w(!0):("editor"===s||"viewer"===s)&&fetch("/api/agents/".concat(r.id,"/access")).then(e=>e.json()).then(e=>{var t;return w("editor"===s&&null!=(t=e.canWrite)&&t)}))}).finally(()=>I(!1))},[a,s]);let $=async e=>{if(!c)return;A("start"===e?"Starting…":"stop"===e?"Stopping…":"Reloading…"),await fetch("/api/agents/".concat(c.id,"/").concat(e),{method:"POST"});let t=await fetch("/api/agents/".concat(c.id));p(await t.json()),A("Done"),setTimeout(()=>A(""),2e3)},K=async()=>{if(c){P(!0);try{let[e,t]=await Promise.all([fetch("/api/agents/".concat(c.id,"/skills")),fetch("/api/agents/".concat(c.id,"/claude-md"))]),r=await e.json(),n=await t.text(),o={version:1,exportedAt:new Date().toISOString(),claudeMd:n,skills:r.map(e=>({category:e.category,filename:e.filename,content:e.content,sortOrder:e.sortOrder}))},a=new Blob([JSON.stringify(o,null,2)],{type:"application/json"}),l=URL.createObjectURL(a),i=document.createElement("a");i.href=l,i.download="".concat(c.slug,"-export.json"),i.click(),URL.revokeObjectURL(l)}finally{P(!1)}}},Q=async()=>{if(c&&U){Z(!0);try{await fetch("/api/agents/".concat(c.id,"/claude-md"),{method:"PUT",headers:{"Content-Type":"text/plain"},body:U.claudeMd}),await Promise.all(U.skills.map(e=>fetch("/api/agents/".concat(c.id,"/skills?noSnapshot=1"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})));let e=await fetch("/api/agents/".concat(c.id)).then(e=>e.json());p(e),J(null)}finally{Z(!1)}}};if(R)return(0,n.jsx)(_,{});if(!c)return(0,n.jsx)(H,{slug:a});let ee=null!=(t=v[c.status])?t:"var(--border-2)";return(0,n.jsxs)("div",{style:{minHeight:"100vh"},className:"fade-up",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"28px 40px 0",borderBottom:"1px solid var(--border)",paddingBottom:0,flexWrap:"wrap",gap:12},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:10,fontSize:12,color:"var(--muted)"},children:[(0,n.jsx)(u(),{href:"/",style:{color:"var(--muted)",textDecoration:"none"},children:"Agents"}),(0,n.jsx)("span",{style:{color:"var(--subtle)"},children:"/"}),(0,n.jsx)("span",{style:{color:"var(--text)"},children:c.name})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:16},children:[(0,n.jsx)("div",{style:{width:36,height:36,borderRadius:10,flexShrink:0,background:c.isBoss?"linear-gradient(135deg, #f59e0b 0%, #d97706 100%)":"linear-gradient(135deg, #3b82f6 0%, #6366f1 100%)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:14,fontWeight:700,color:"#fff"},children:c.name.charAt(0)}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("h1",{style:{margin:0,fontSize:18,fontWeight:600,letterSpacing:"-0.02em",color:"var(--text)"},children:c.name}),c.isBoss&&(0,n.jsx)("span",{style:{fontSize:10,fontWeight:600,letterSpacing:"0.06em",background:"rgba(245,158,11,0.15)",color:"#f59e0b",padding:"2px 7px",borderRadius:5,border:"1px solid rgba(245,158,11,0.25)",textTransform:"uppercase"},children:"Boss"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,n.jsx)("div",{className:"running"===c.status?"status-running":"",style:{width:7,height:7,borderRadius:"50%",background:ee}}),(0,n.jsx)("span",{style:{fontSize:12,color:ee,fontWeight:500,textTransform:"capitalize"},children:c.status})]})]}),(0,n.jsxs)("div",{style:{fontFamily:"var(--font-mono)",fontSize:11.5,color:"var(--muted)",marginTop:1},children:["@",c.slug," \xb7 ",c.model.replace("claude-","").split("-20")[0]]})]})]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,paddingBottom:16},children:[E&&(0,n.jsx)("span",{style:{fontSize:12,color:"var(--muted)"},children:E}),V&&(0,n.jsx)("span",{style:{fontSize:12,color:"var(--danger)"},children:V}),(0,n.jsx)(L,{title:"Export config",onClick:K,loading:F,children:(0,n.jsx)(l,{size:15})}),y&&(0,n.jsx)(L,{title:"Import config",onClick:()=>{var e;return null==(e=X.current)?void 0:e.click()},children:(0,n.jsx)(i,{size:15})}),(0,n.jsx)("input",{ref:X,type:"file",accept:".json",style:{display:"none"},onChange:e=>{var t;let r=null==(t=e.target.files)?void 0:t[0];if(!r)return;e.target.value="",G("");let n=new FileReader;n.onload=e=>{try{var t;let r=JSON.parse(null==(t=e.target)?void 0:t.result);if("string"!=typeof r.claudeMd||!Array.isArray(r.skills))return void G("Invalid export file");J(r)}catch(e){G("Could not parse file")}},n.readAsText(r)}}),(0,n.jsx)("div",{style:{width:1,height:20,background:"var(--border)",margin:"0 2px"}}),y&&"running"!==c.status&&(0,n.jsx)(N,{color:"#22c55e",onClick:()=>$("start"),children:"Start"}),y&&"running"===c.status&&(0,n.jsx)(N,{color:"var(--border-2)",textColor:"var(--muted)",onClick:()=>$("reload"),children:"Reload"}),y&&"running"===c.status&&(0,n.jsx)(N,{color:"#ef4444",onClick:()=>$("stop"),children:"Stop"})]})]}),U&&(0,n.jsx)(g.Z,{children:(0,n.jsx)("div",{style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.45)",backdropFilter:"blur(4px)",display:"flex",alignItems:"center",justifyContent:"center"},onClick:()=>J(null),children:(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:14,padding:"28px 32px",maxWidth:480,width:"90%",boxShadow:"0 20px 60px rgba(0,0,0,0.15)"},onClick:e=>e.stopPropagation(),children:[(0,n.jsx)("h3",{style:{margin:"0 0 16px",fontSize:16,fontWeight:700,color:"var(--text)",letterSpacing:"-0.02em"},children:"Import agent config"}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,padding:"12px 14px",marginBottom:16,background:"#fff1f2",border:"1.5px solid #fecdd3",borderRadius:8},children:[(0,n.jsx)("span",{style:{fontSize:16,flexShrink:0},children:"⚠️"}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"#be123c",marginBottom:2},children:"This will overwrite current CLAUDE.md and skills"}),(0,n.jsx)("div",{style:{fontSize:12,color:"#9f1239"},children:"Existing CLAUDE.md will be replaced. Skills with matching category/filename will be overwritten. A snapshot is saved automatically before applying."})]})]}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,marginBottom:20},children:[U.exportedAt&&(0,n.jsx)(D,{label:"Exported at",value:new Date(U.exportedAt).toLocaleString()}),(0,n.jsx)(D,{label:"Skills",value:"".concat(U.skills.length," skill").concat(1!==U.skills.length?"s":""," will be upserted")})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:10},children:[(0,n.jsx)(M,{onClick:Q,loading:q,children:"Apply Import"}),(0,n.jsx)(O,{onClick:()=>J(null),children:"Cancel"})]})]})})}),(0,n.jsx)("div",{style:{display:"flex",gap:0,padding:"0 36px",borderBottom:"1px solid var(--border)",background:"var(--surface)",overflowX:"auto",WebkitOverflowScrolling:"touch"},children:m.map(e=>(0,n.jsx)("button",{onClick:()=>B(e.id),className:z===e.id?"tab-active":"",style:{background:"none",border:"none",cursor:"pointer",padding:"10px 14px",fontSize:13,color:z===e.id?"var(--text)":"var(--muted)",fontWeight:z===e.id?500:400,transition:"color 0.15s",fontFamily:"var(--font-sans)"},children:e.label},e.id))}),(0,n.jsxs)("div",{style:{padding:"28px 36px"},children:["overview"===z&&(0,n.jsx)(b,{agent:c,onUpdate:p,canEdit:y,allAgents:f,role:s}),"skills"===z&&(0,n.jsx)(S,{agentId:c.id,canEdit:y}),"claude-md"===z&&(0,n.jsx)(j,{agentId:c.id,canEdit:y}),"mcps"===z&&(0,n.jsx)(k,{agentId:c.id,canEdit:y}),"permissions"===z&&(0,n.jsx)(C,{agentId:c.id,canEdit:y}),"memory"===z&&(0,n.jsx)(T,{agentId:c.id,canEdit:y}),"logs"===z&&(0,n.jsx)(W,{agentId:c.id,slug:c.slug}),"history"===z&&(0,n.jsx)(Y,{agentId:c.id,canEdit:y})]})]})}function b(e){var t,r,a;let{agent:l,onUpdate:i,canEdit:s,allAgents:d,role:c}=e,[p,u]=(0,o.useState)({name:l.name,description:null!=(t=l.description)?t:"",persona:null!=(r=l.persona)?r:"",model:l.model,slackBotToken:l.slackBotToken,slackAppToken:l.slackAppToken,slackSigningSecret:l.slackSigningSecret,isBoss:l.isBoss,reportsTo:null!=(a=l.reportsTo)?a:[]}),[g,h]=(0,o.useState)(!1),[x,m]=(0,o.useState)(""),[v,y]=(0,o.useState)(""),[b,j]=(0,o.useState)(!1),[S,k]=(0,o.useState)(!1),[w,C]=(0,o.useState)(null),z=(0,f.useRouter)();(0,o.useEffect)(()=>{l.slackBotToken&&fetch("/api/agents/".concat(l.id,"/slack-info")).then(e=>e.ok?e.json():null).then(e=>e&&C(e)).catch(()=>{})},[l.id,l.slackBotToken]);let[T,B]=(0,o.useState)("");(0,o.useEffect)(()=>{fetch("/api/agents/".concat(l.id,"/restrictions")).then(e=>e.json()).then(e=>{var t;return B((null!=(t=e.allowedChannels)?t:[]).join("\n"))})},[l.id]);let R=async()=>{h(!0);try{var e;let[t]=await Promise.all([fetch("/api/agents/".concat(l.id),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)}),fetch("/api/agents/".concat(l.id,"/restrictions"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedChannels:T.split("\n").map(e=>e.trim()).filter(Boolean)})})]),r=await t.json();t.ok?(i(r),m("Saved")):m(null!=(e=r.error)?e:"Error")}finally{h(!1),setTimeout(()=>m(""),3e3)}},W=async()=>{let e=await fetch("/api/agents/".concat(l.id,"/manifest"));y(JSON.stringify(await e.json(),null,2)),j(!0)},D=async()=>{if(!confirm('Permanently delete agent "'.concat(l.name,'"? This cannot be undone.')))return;k(!0);let e=await fetch("/api/agents/".concat(l.id),{method:"DELETE"});if(e.ok)z.push("/");else{var t;m(null!=(t=(await e.json()).error)?t:"Delete failed"),k(!1)}};return(0,n.jsxs)("div",{style:{maxWidth:640},className:"fade-up",children:[(0,n.jsxs)(I,{title:"Identity",children:[(0,n.jsxs)(E,{children:[(0,n.jsx)(A,{label:"Name",value:p.name,onChange:e=>u(t=>({...t,name:e})),readOnly:!s,hint:"This is the internal agent name. To update the Slack bot display name, change it in your Slack App settings → App Home."}),(0,n.jsx)(A,{label:"Model",value:p.model,onChange:e=>u(t=>({...t,model:e})),hint:"claude-opus-4-6 \xb7 claude-sonnet-4-6 \xb7 claude-haiku-4-5-20251001",readOnly:!s})]}),(0,n.jsx)(A,{label:"Description",value:p.description,onChange:e=>u(t=>({...t,description:e})),hint:"Shown to the boss agent for delegation decisions.",readOnly:!s}),(0,n.jsx)(F,{label:"Persona",value:p.persona,onChange:e=>u(t=>({...t,persona:e})),hint:"Injected into CLAUDE.md — who is this agent?",rows:4,readOnly:!s})]}),(0,n.jsxs)(I,{title:"Role & Hierarchy",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:16},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:500,color:"var(--text)",marginBottom:2},children:"Boss Agent"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--muted)"},children:"Boss agents orchestrate other agents and delegate tasks"})]}),(0,n.jsx)("button",{disabled:!s,onClick:()=>u(e=>({...e,isBoss:!e.isBoss})),style:{width:44,height:24,borderRadius:12,border:"none",background:p.isBoss?"#d97706":"var(--border-2)",cursor:s?"pointer":"default",position:"relative",transition:"background 0.2s",flexShrink:0},children:(0,n.jsx)("div",{style:{position:"absolute",top:3,left:p.isBoss?23:3,width:18,height:18,borderRadius:"50%",background:"#fff",transition:"left 0.2s",boxShadow:"0 1px 3px rgba(0,0,0,0.2)"}})})]}),!p.isBoss&&(()=>{let e=d.filter(e=>e.isBoss&&e.id!==l.id);return 0===e.length?(0,n.jsx)("div",{style:{fontSize:12,color:"var(--subtle)",fontStyle:"italic"},children:"No boss agents available. Create a boss agent first."}):(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:12,fontWeight:500,color:"var(--text)",marginBottom:6},children:"Reports To"}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:e.map(e=>{let t=p.reportsTo.includes(e.id);return(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderRadius:8,border:"1px solid ".concat(t?"rgba(217,119,6,0.3)":"var(--border)"),background:t?"rgba(217,119,6,0.04)":"var(--surface)",cursor:s?"pointer":"default",transition:"all 0.15s"},children:[(0,n.jsx)("input",{type:"checkbox",checked:t,disabled:!s,onChange:()=>u(r=>({...r,reportsTo:t?r.reportsTo.filter(t=>t!==e.id):[...r.reportsTo,e.id]})),style:{accentColor:"#d97706",width:14,height:14}}),(0,n.jsx)("div",{style:{width:24,height:24,borderRadius:6,background:"#171717",display:"flex",alignItems:"center",justifyContent:"center",fontSize:11,fontWeight:600,color:"#fff",flexShrink:0},children:e.name.charAt(0).toUpperCase()}),(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:500,color:"var(--text)"},children:e.name}),(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--muted)",fontFamily:"var(--font-mono)"},children:["@",e.slug]})]}),t&&(0,n.jsx)("span",{style:{marginLeft:"auto",fontSize:10,fontWeight:600,color:"#d97706",letterSpacing:"0.04em",textTransform:"uppercase"},children:"Reports to"})]},e.id)})}),(0,n.jsx)("div",{style:{fontSize:11.5,color:"var(--subtle)",marginTop:8},children:"An agent can report to multiple bosses."})]})})()]}),(0,n.jsxs)(I,{title:"Slack Credentials",children:[(0,n.jsx)(A,{label:"Bot Token",value:p.slackBotToken,onChange:e=>u(t=>({...t,slackBotToken:e})),type:"password",readOnly:!s,hint:(0,n.jsxs)(n.Fragment,{children:["api.slack.com/apps → your app → ",(0,n.jsx)("strong",{children:"OAuth & Permissions"})," → Bot User OAuth Token"]})}),(0,n.jsx)(A,{label:"App-Level Token",value:p.slackAppToken,onChange:e=>u(t=>({...t,slackAppToken:e})),type:"password",readOnly:!s,hint:(0,n.jsxs)(n.Fragment,{children:["Basic Information → ",(0,n.jsx)("strong",{children:"App-Level Tokens"})," → Generate with scope ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:"connections:write"})]})}),(0,n.jsx)(A,{label:"Signing Secret",value:p.slackSigningSecret,onChange:e=>u(t=>({...t,slackSigningSecret:e})),type:"password",readOnly:!s,hint:"Basic Information → App Credentials → Signing Secret"}),w&&(0,n.jsxs)("div",{style:{background:"#f0fdf4",border:"1px solid #bbf7d0",borderRadius:7,padding:"10px 14px",fontSize:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:8},children:[(0,n.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",background:"#16a34a",flexShrink:0}}),(0,n.jsx)("span",{style:{color:"#15803d",fontWeight:600},children:"Connected to Slack"}),(0,n.jsx)("span",{style:{color:"#86efac",marginLeft:"auto",fontSize:11},children:w.teamName})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"max-content 1fr",gap:"4px 16px"},children:[(0,n.jsx)("span",{style:{color:"#6b7280"},children:"Display name"}),(0,n.jsx)("span",{style:{color:"#166534",fontWeight:500},children:w.displayName}),(0,n.jsx)("span",{style:{color:"#6b7280"},children:"@handle"}),(0,n.jsxs)("span",{style:{color:"#166534",fontFamily:"var(--font-mono)"},children:["@",w.handle]}),l.slackBotUserId&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{style:{color:"#6b7280"},children:"Bot User ID"}),(0,n.jsx)("span",{style:{color:"#166534",fontFamily:"var(--font-mono)"},children:l.slackBotUserId})]})]})]}),!w&&l.slackBotUserId&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,background:"#f0fdf4",border:"1px solid #bbf7d0",borderRadius:7,padding:"8px 12px",fontSize:12},children:[(0,n.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",background:"#16a34a",flexShrink:0}}),(0,n.jsx)("span",{style:{color:"#15803d"},children:"Connected \xb7"}),(0,n.jsxs)("span",{style:{color:"#166534",fontFamily:"var(--font-mono)"},children:["Bot User ID: ",l.slackBotUserId]})]})]}),(0,n.jsxs)(I,{title:"Allowed Channels",children:[(0,n.jsxs)("p",{style:{margin:"0 0 10px",fontSize:12.5,color:"var(--muted)",lineHeight:1.6},children:["Restrict this bot to specific Slack channels. Enter one Slack channel ID per line (e.g. ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:"C01234ABCDE"}),"). If empty, the bot responds in all channels it's invited to. When invited to a non-allowed channel, it will post a notice and leave automatically. Bot-initiated messages from scheduled jobs are not affected."]}),(0,n.jsx)("textarea",{value:T,onChange:e=>B(e.target.value),rows:4,readOnly:!s,placeholder:"C01234ABCDE\nC09876ZYXWV",style:{width:"100%",background:"var(--surface)",border:"1px solid var(--border)",borderRadius:8,padding:"10px 12px",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.7,outline:"none",resize:"vertical",boxSizing:"border-box"},onFocus:e=>e.currentTarget.style.borderColor="var(--accent)",onBlur:e=>e.currentTarget.style.borderColor="var(--border)"})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[s&&(0,n.jsx)(M,{onClick:R,loading:g,children:"Save Changes"}),(0,n.jsx)(O,{onClick:W,children:"View Slack Manifest"}),x&&(0,n.jsx)("span",{style:{fontSize:12,color:"#16a34a"},children:x})]}),b&&(0,n.jsxs)("div",{style:{marginTop:20,background:"var(--surface-2)",border:"1px solid var(--border)",borderRadius:10,overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"10px 16px",borderBottom:"1px solid var(--border)",background:"var(--surface-2)"},children:[(0,n.jsx)("span",{style:{fontSize:11.5,color:"var(--muted)",fontFamily:"var(--font-mono)"},children:"slack-manifest.json"}),(0,n.jsx)("button",{onClick:()=>navigator.clipboard.writeText(v),style:{fontSize:11.5,color:"var(--accent)",background:"none",border:"none",cursor:"pointer",fontFamily:"var(--font-sans)"},children:"Copy"})]}),(0,n.jsx)("pre",{style:{margin:0,padding:"16px",fontSize:11.5,color:"var(--accent)",fontFamily:"var(--font-mono)",overflow:"auto",maxHeight:320},children:v})]}),("admin"===c||"superadmin"===c)&&(0,n.jsxs)("div",{style:{marginTop:40,borderTop:"1px solid #fecaca",paddingTop:28},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#dc2626",letterSpacing:"0.08em",textTransform:"uppercase",marginBottom:16},children:"Danger Zone"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",background:"#fff8f8",border:"1px solid #fecaca",borderRadius:8,padding:"14px 18px"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:500,color:"var(--text)",marginBottom:3},children:"Delete this agent"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--muted)"},children:"Permanently removes the agent, all its skills, memories, and history. This cannot be undone."})]}),(0,n.jsx)("button",{onClick:D,disabled:S,style:{flexShrink:0,marginLeft:24,padding:"8px 18px",borderRadius:7,border:"1px solid #dc2626",background:S?"#fef2f2":"#fff",color:"#dc2626",fontSize:13,fontWeight:600,cursor:S?"not-allowed":"pointer",fontFamily:"var(--font-sans)",whiteSpace:"nowrap"},children:S?"Deleting…":"Delete Agent"})]})]})]})}function j(e){let{agentId:t,canEdit:r}=e,[a,l]=(0,o.useState)(""),[i,s]=(0,o.useState)(""),[d,c]=(0,o.useState)(!1),[p,u]=(0,o.useState)(!0),[f,g]=(0,o.useState)(!1),[h,x]=(0,o.useState)("");(0,o.useEffect)(()=>{u(!0),fetch("/api/agents/".concat(t,"/claude-md")).then(e=>e.text()).then(e=>{l(e),s(e)}).catch(()=>l("Failed to load CLAUDE.md")).finally(()=>u(!1))},[t]);let m=async()=>{g(!0);try{let e=await fetch("/api/agents/".concat(t,"/claude-md"),{method:"PUT",headers:{"Content-Type":"text/plain"},body:i});if(!e.ok)throw Error(await e.text());l(i),c(!1),x("Saved — agent will use this on next reload."),setTimeout(()=>x(""),4e3)}catch(e){x("Error: ".concat(e.message))}finally{g(!1)}};return p?(0,n.jsx)("p",{style:{color:"var(--muted)",fontSize:14},children:"Loading..."}):(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:16},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{style:{margin:0,fontSize:15,fontWeight:600},children:"CLAUDE.md"}),(0,n.jsx)("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--muted)"},children:d?"Editing raw system prompt — this overrides all individual skills.":"Compiled system prompt sent to Claude."})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[!d&&(0,n.jsxs)("span",{style:{fontSize:12,color:"var(--muted)",background:"var(--surface-2)",padding:"4px 10px",borderRadius:6,border:"1px solid var(--border)"},children:[(a.length/1024).toFixed(1)," KB \xb7 ",a.split("\n").length," lines"]}),d?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{onClick:()=>{c(!1),s(a)},style:{padding:"6px 14px",borderRadius:7,border:"1px solid var(--border)",background:"var(--surface)",color:"var(--text)",fontSize:13,cursor:"pointer"},children:"Cancel"}),(0,n.jsx)("button",{onClick:m,disabled:f,style:{padding:"6px 16px",borderRadius:7,border:"none",background:"var(--accent)",color:"#fff",fontSize:13,fontWeight:600,cursor:"pointer",opacity:f?.7:1},children:f?"Saving…":"Save"})]}):r&&(0,n.jsx)("button",{onClick:()=>c(!0),style:{padding:"6px 16px",borderRadius:7,border:"1px solid var(--border)",background:"var(--surface)",color:"var(--text)",fontSize:13,cursor:"pointer"},children:"Edit"})]})]}),h&&(0,n.jsx)("p",{style:{fontSize:13,color:h.startsWith("Error")?"var(--danger)":"var(--success)",marginBottom:12},children:h}),d?(0,n.jsx)("textarea",{value:i,onChange:e=>s(e.target.value),style:{width:"100%",height:"70vh",background:"var(--surface)",border:"1px solid var(--accent)",borderRadius:10,padding:"20px 24px",fontSize:12.5,lineHeight:1.7,color:"var(--text)",fontFamily:"var(--font-mono)",resize:"vertical",outline:"none",boxSizing:"border-box"}}):(0,n.jsx)("pre",{style:{background:"var(--surface-2)",border:"1px solid var(--border)",borderRadius:10,padding:"20px 24px",fontSize:12.5,lineHeight:1.7,overflowX:"auto",overflowY:"auto",maxHeight:"70vh",margin:0,whiteSpace:"pre-wrap",wordBreak:"break-word",color:"var(--text)",fontFamily:"var(--font-mono)"},children:a})]})}function S(e){let{agentId:t,canEdit:r}=e,[a,l]=(0,o.useState)([]),[i,s]=(0,o.useState)(null),[d,c]=(0,o.useState)(""),[p,u]=(0,o.useState)(!1),[f,g]=(0,o.useState)(""),[h,x]=(0,o.useState)(!1),[m,v]=(0,o.useState)({category:"",filename:"",content:""}),y=()=>fetch("/api/agents/".concat(t,"/skills")).then(e=>e.json()).then(l);(0,o.useEffect)(()=>{y()},[t]);let b=async()=>{i&&(u(!0),await fetch("/api/agents/".concat(t,"/skills"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({category:i.category,filename:i.filename,content:d,sortOrder:i.sortOrder})}),u(!1),g("Saved"),setTimeout(()=>g(""),2e3),y())},j=async e=>{confirm("Delete ".concat(e.category,"/").concat(e.filename,"?"))&&(await fetch("/api/agents/".concat(t,"/skills/").concat(e.id),{method:"DELETE"}),(null==i?void 0:i.id)===e.id&&(s(null),c("")),y())},S=async()=>{m.category&&m.filename&&(await fetch("/api/agents/".concat(t,"/skills"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)}),x(!1),v({category:"",filename:"",content:""}),y())},k=a.reduce((e,t)=>{var r,n;return(null!=(n=e[r=t.category])?n:e[r]=[]).push(t),e},{});return(0,n.jsxs)("div",{className:"fade-up",style:{display:"flex",gap:14,height:580},children:[(0,n.jsxs)("div",{style:{width:220,flexShrink:0,background:"var(--surface)",border:"1px solid var(--border)",borderRadius:10,overflow:"auto",display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 12px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"var(--muted)",letterSpacing:"0.06em",textTransform:"uppercase"},children:"Files"}),r&&(0,n.jsx)("button",{onClick:()=>x(!0),style:{background:"none",border:"none",cursor:"pointer",fontSize:12,color:"var(--accent)",fontFamily:"var(--font-sans)"},children:"+ New"})]}),(0,n.jsx)("div",{style:{padding:"6px 6px",flex:1,overflow:"auto"},children:Object.entries(k).sort((e,t)=>{let[r]=e,[n]=t;return r.localeCompare(n)}).map(e=>{let[t,o]=e;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{fontSize:10.5,color:"var(--subtle)",padding:"6px 6px 2px",fontFamily:"var(--font-mono)",letterSpacing:"0.02em"},children:[t,"/"]}),o.map(e=>(0,n.jsxs)("div",{onClick:()=>{s(e),c(e.content)},className:"skill-row",style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"5px 8px",borderRadius:6,cursor:"pointer",fontSize:12,fontFamily:"var(--font-mono)",background:(null==i?void 0:i.id)===e.id?"rgba(59,130,246,0.12)":"transparent",color:(null==i?void 0:i.id)===e.id?"var(--accent)":"var(--muted)",transition:"background 0.12s, color 0.12s"},onMouseEnter:t=>{(null==i?void 0:i.id)!==e.id&&(t.currentTarget.style.background="rgba(255,255,255,0.04)");let r=t.currentTarget.querySelector(".delete-btn");r&&(r.style.opacity="1")},onMouseLeave:t=>{(null==i?void 0:i.id)!==e.id&&(t.currentTarget.style.background="transparent");let r=t.currentTarget.querySelector(".delete-btn");r&&(r.style.opacity="0")},children:[(0,n.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.filename}),r&&(0,n.jsx)("button",{onClick:t=>{t.stopPropagation(),j(e)},className:"delete-btn",style:{background:"none",border:"none",cursor:"pointer",color:"#ef4444",fontSize:14,opacity:0,transition:"opacity 0.12s",fontFamily:"var(--font-sans)",lineHeight:1,padding:"0 2px",flexShrink:0},children:"\xd7"})]},e.id))]},t)})})]}),(0,n.jsx)("div",{style:{flex:1,background:"var(--surface)",border:"1px solid var(--border)",borderRadius:10,display:"flex",flexDirection:"column",overflow:"hidden"},children:i?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 16px",borderBottom:"1px solid var(--border)",background:"var(--surface-2)"},children:[(0,n.jsxs)("span",{style:{fontSize:12,color:"var(--muted)",fontFamily:"var(--font-mono)"},children:[i.category,"/",i.filename]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[f&&(0,n.jsx)("span",{style:{fontSize:11.5,color:"#16a34a"},children:f}),r&&(0,n.jsx)("button",{onClick:b,disabled:p,style:{background:p?"var(--border)":"var(--accent)",color:"#fff",border:"none",borderRadius:6,padding:"5px 14px",fontSize:12,fontWeight:500,cursor:p?"not-allowed":"pointer",fontFamily:"var(--font-sans)"},children:p?"Saving…":"Save"})]})]}),(0,n.jsx)("textarea",{value:d,onChange:e=>c(e.target.value),readOnly:!r,style:{flex:1,border:"none",outline:"none",resize:"none",background:"transparent",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12.5,lineHeight:1.65,padding:"16px",caretColor:"var(--accent)"},spellCheck:!1})]}):(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--subtle)",fontSize:13},children:"Select a file to edit"})}),h&&(0,n.jsxs)(P,{title:"New Skill File",onClose:()=>x(!1),children:[(0,n.jsx)(A,{label:"Category",value:m.category,onChange:e=>v(t=>({...t,category:e})),hint:"e.g. 00-core"}),(0,n.jsx)(A,{label:"Filename",value:m.filename,onChange:e=>v(t=>({...t,filename:e})),hint:"e.g. identity.md"}),(0,n.jsx)(F,{label:"Content (optional)",value:m.content,onChange:e=>v(t=>({...t,content:e})),rows:4}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,marginTop:4},children:[(0,n.jsx)(M,{onClick:S,children:"Create"}),(0,n.jsx)(O,{onClick:()=>x(!1),children:"Cancel"})]})]})]})}function k(e){let{agentId:t,canEdit:r}=e,[a,l]=(0,o.useState)([]),[i,s]=(0,o.useState)(new Set),[d,c]=(0,o.useState)(!1),[p,f]=(0,o.useState)("");(0,o.useEffect)(()=>{Promise.all([fetch("/api/mcps").then(e=>e.json()),fetch("/api/agents/".concat(t,"/mcps")).then(e=>e.json())]).then(e=>{let[t,r]=e;l(t),s(new Set(r.map(e=>e.id)))})},[t]);let g=async()=>{c(!0),await fetch("/api/agents/".concat(t,"/mcps"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({mcpIds:[...i]})}),c(!1),f("Saved & reload triggered"),setTimeout(()=>f(""),3e3)};return(0,n.jsxs)("div",{style:{maxWidth:560},className:"fade-up",children:[(0,n.jsx)("p",{style:{margin:"0 0 16px",fontSize:13,color:"var(--muted)"},children:"Select MCP servers from the platform catalog to enable for this agent."}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:10,overflow:"hidden",marginBottom:16},children:0===a.length?(0,n.jsxs)("div",{style:{padding:"24px",textAlign:"center",color:"var(--muted)",fontSize:13},children:["No MCP servers yet."," ",(0,n.jsx)(u(),{href:"/settings/mcps",style:{color:"var(--accent)",textDecoration:"none"},children:"Add some →"})]}):a.map((e,t)=>(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:12,padding:"13px 16px",cursor:e.enabled?"pointer":"not-allowed",borderBottom:t<a.length-1?"1px solid var(--border)":"none",background:"transparent",transition:"background 0.12s",opacity:e.enabled?1:.45},onMouseEnter:t=>{e.enabled&&(t.currentTarget.style.background="rgba(255,255,255,0.03)")},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:[(0,n.jsx)("input",{type:"checkbox",checked:i.has(e.id),onChange:()=>{let t;return t=e.id,s(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},disabled:!e.enabled||!r,style:{accentColor:"var(--accent)",width:14,height:14,flexShrink:0}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:500,color:"var(--text)"},children:e.name}),(0,n.jsx)("span",{style:{fontSize:10.5,fontFamily:"var(--font-mono)",color:"var(--muted)",background:"var(--border)",padding:"1px 6px",borderRadius:4},children:e.type}),!e.enabled&&(0,n.jsx)("span",{style:{fontSize:11,color:"var(--subtle)"},children:"disabled"})]}),e.description&&(0,n.jsx)("p",{style:{margin:0,fontSize:12,color:"var(--muted)",marginTop:1},children:e.description})]})]},e.id))}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[r&&(0,n.jsx)(M,{onClick:g,loading:d,children:"Save Assignments"}),p&&(0,n.jsx)("span",{style:{fontSize:12,color:"#16a34a"},children:p})]})]})}let w=["Read","Write","Edit","Bash","Glob","Grep","WebFetch","WebSearch"];function C(e){let{agentId:t,canEdit:r}=e,[a,l]=(0,o.useState)(""),[i,s]=(0,o.useState)(""),[d,c]=(0,o.useState)(!1),[p,u]=(0,o.useState)("");(0,o.useEffect)(()=>{fetch("/api/agents/".concat(t,"/permissions")).then(e=>e.json()).then(e=>{var t,r;l((null!=(t=e.allowedTools)?t:[]).join("\n")),s((null!=(r=e.deniedTools)?r:[]).join("\n"))})},[t]);let f=async()=>{c(!0),await fetch("/api/agents/".concat(t,"/permissions"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedTools:a.split("\n").map(e=>e.trim()).filter(Boolean),deniedTools:i.split("\n").map(e=>e.trim()).filter(Boolean)})}),c(!1),u("Saved & reload triggered"),setTimeout(()=>u(""),3e3)};return(0,n.jsxs)("div",{style:{maxWidth:660},className:"fade-up",children:[(0,n.jsxs)("div",{style:{background:"var(--surface)",border:"1px solid var(--border)",borderRadius:10,padding:"12px 16px",marginBottom:18},children:[(0,n.jsx)("div",{style:{fontSize:11,color:"var(--muted)",marginBottom:8,fontWeight:500,letterSpacing:"0.04em",textTransform:"uppercase"},children:"Quick add built-in tools"}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:w.map(e=>(0,n.jsx)("button",{onClick:()=>((e,t)=>{let r=("allowed"===t?a:i).split("\n").map(e=>e.trim()).filter(Boolean);r.includes(e)||("allowed"===t?l:s)([...r,e].join("\n"))})(e,"allowed"),disabled:!r,style:{background:"var(--border)",border:"1px solid var(--border-2)",color:"var(--text)",padding:"3px 10px",borderRadius:5,fontSize:11.5,fontFamily:"var(--font-mono)",cursor:"pointer",transition:"background 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--border-2)",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--border)",e.currentTarget.style.borderColor="var(--border-2)"},children:e},e))}),(0,n.jsxs)("p",{style:{margin:"8px 0 0",fontSize:11,color:"var(--subtle)"},children:["MCP tools pattern: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",color:"var(--muted)"},children:"mcp__serverName__toolName"})]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:14,marginBottom:16},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:6},children:["Allowed Tools ",(0,n.jsx)("span",{style:{color:"var(--subtle)",fontWeight:400},children:"\xb7 one per line"})]}),(0,n.jsx)("textarea",{value:a,onChange:e=>l(e.target.value),rows:12,readOnly:!r,style:{width:"100%",background:"var(--surface)",border:"1px solid var(--border)",borderRadius:8,padding:"10px 12px",color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.7,outline:"none",resize:"vertical"},onFocus:e=>e.currentTarget.style.borderColor="var(--accent)",onBlur:e=>e.currentTarget.style.borderColor="var(--border)",placeholder:"Read\nWrite\nmcp__redshift-mcp__query"})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:6},children:["Denied Tools ",(0,n.jsx)("span",{style:{color:"var(--subtle)",fontWeight:400},children:"\xb7 overrides allowed"})]}),(0,n.jsx)("textarea",{value:i,onChange:e=>s(e.target.value),rows:12,readOnly:!r,style:{width:"100%",background:"var(--surface)",border:"1px solid var(--border)",borderRadius:8,padding:"10px 12px",color:"var(--danger)",fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.7,outline:"none",resize:"vertical"},onFocus:e=>e.currentTarget.style.borderColor="#ef4444",onBlur:e=>e.currentTarget.style.borderColor="var(--border)",placeholder:"Bash"})]})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[r&&(0,n.jsx)(M,{onClick:f,loading:d,children:"Save Permissions"}),p&&(0,n.jsx)("span",{style:{fontSize:12,color:"#16a34a"},children:p})]})]})}let z={user:{bg:"#f3f0ff",color:"#7c3aed"},feedback:{bg:"#eff6ff",color:"#2563eb"},project:{bg:"#fffbeb",color:"#b45309"},reference:{bg:"#f0fdf4",color:"#15803d"}};function T(e){let{agentId:t,canEdit:r}=e,[a,l]=(0,o.useState)([]),[i,d]=(0,o.useState)(new Set),c=()=>fetch("/api/agents/".concat(t,"/memories")).then(e=>e.json()).then(l);(0,o.useEffect)(()=>{c()},[t]);let p=async e=>{await fetch("/api/agents/".concat(t,"/memories/").concat(e),{method:"DELETE"}),c()},u=a.reduce((e,t)=>{var r,n;return(null!=(n=e[r=t.type])?n:e[r]=[]).push(t),e},{});return 0===a.length?(0,n.jsxs)("div",{className:"fade-up",style:{display:"flex",flexDirection:"column",alignItems:"center",paddingTop:80,color:"var(--muted)"},children:[(0,n.jsx)(s,{size:36,style:{marginBottom:12,color:"var(--border-2)"}}),(0,n.jsx)("p",{style:{margin:"0 0 4px",fontSize:15,fontWeight:600,color:"var(--text)",textAlign:"center"},children:"No memories yet"}),(0,n.jsx)("p",{style:{fontSize:13,color:"var(--muted)",maxWidth:300,margin:"0",textAlign:"center"},children:"The agent will automatically accumulate memories as it interacts in Slack."})]}):(0,n.jsxs)("div",{style:{maxWidth:720},className:"fade-up",children:[(0,n.jsxs)("div",{style:{fontSize:13,color:"var(--muted)",marginBottom:18},children:[a.length," memories across ",Object.keys(u).length," categories"]}),["feedback","user","project","reference"].map(e=>{var t;let o=u[e];if(!(null==o?void 0:o.length))return null;let a=null!=(t=z[e])?t:{bg:"var(--border)",color:"var(--muted)"};return(0,n.jsxs)("div",{style:{marginBottom:20},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,n.jsx)("span",{style:{fontSize:10.5,fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",background:a.bg,color:a.color,padding:"2px 8px",borderRadius:5},children:e}),(0,n.jsx)("span",{style:{fontSize:11.5,color:"var(--subtle)"},children:o.length})]}),(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:10,overflow:"hidden"},children:o.map((e,t)=>(0,n.jsxs)("div",{style:{borderBottom:t<o.length-1?"1px solid var(--border)":"none"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 14px",cursor:"pointer"},onClick:()=>{let t;return t=e.id,d(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--subtle)"},children:i.has(e.id)?"▼":"▶"}),(0,n.jsx)("span",{style:{fontSize:13,color:"var(--text)",fontWeight:500,fontFamily:"var(--font-mono)"},children:e.name})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,n.jsx)("span",{style:{fontSize:11,color:"var(--subtle)"},children:new Date(e.updatedAt).toLocaleDateString()}),r&&(0,n.jsx)("button",{onClick:t=>{t.stopPropagation(),p(e.id)},style:{background:"none",border:"none",cursor:"pointer",color:"#ef4444",fontSize:13,opacity:.5,transition:"opacity 0.12s",fontFamily:"var(--font-sans)"},onMouseEnter:e=>e.currentTarget.style.opacity="1",onMouseLeave:e=>e.currentTarget.style.opacity="0.5",children:"Delete"})]})]}),i.has(e.id)&&(0,n.jsx)("pre",{style:{margin:0,padding:"12px 14px",background:"var(--surface-2)",borderTop:"1px solid var(--border)",fontFamily:"var(--font-mono)",fontSize:11.5,color:"var(--muted)",whiteSpace:"pre-wrap",lineHeight:1.6},children:e.content})]},e.id))})]},e)})]})}let B={all:{label:"ALL",color:"#6b7280",bg:"#f3f4f6",border:"#e5e7eb",rowBg:"transparent"},info:{label:"INFO",color:"#1d4ed8",bg:"#eff6ff",border:"#bfdbfe",rowBg:"transparent"},debug:{label:"DEBUG",color:"#9ca3af",bg:"#f9fafb",border:"#e5e7eb",rowBg:"transparent"},warn:{label:"WARN",color:"#92400e",bg:"#fffbeb",border:"#fde68a",rowBg:"#fffdf0"},error:{label:"ERR",color:"#991b1b",bg:"#fef2f2",border:"#fecaca",rowBg:"#fff8f8"}};function R(e){let{log:t}=e,[r,a]=(0,o.useState)(!1),[l,i]=(0,o.useState)(!1),s=B[t.level],d=Object.keys(t.fields).length>0,c="error"===t.level?"#7f1d1d":"warn"===t.level?"#78350f":"debug"===t.level?"#9ca3af":"var(--text)";return(0,n.jsxs)("div",{onClick:()=>a(e=>!e),onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{cursor:"pointer",background:l||r?"var(--surface-2)":s.rowBg,borderLeft:"3px solid ".concat(r?s.border:"transparent"),borderBottom:"1px solid var(--border)",transition:"background 0.1s"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"5px 10px",minHeight:28},children:[(0,n.jsx)("span",{style:{color:"var(--subtle)",flexShrink:0,fontSize:10.5,fontVariantNumeric:"tabular-nums",minWidth:68},children:t.time}),(0,n.jsx)("span",{style:{flexShrink:0,fontSize:9.5,fontWeight:700,letterSpacing:"0.06em",padding:"1px 6px",borderRadius:3,border:"1px solid ".concat(s.border),background:s.bg,color:s.color,minWidth:34,textAlign:"center"},children:s.label}),(0,n.jsx)("span",{style:{flex:1,color:c,fontSize:11.5,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t.message}),!r&&d&&(0,n.jsxs)("span",{style:{flexShrink:0,display:"flex",gap:3},children:[Object.keys(t.fields).slice(0,3).map(e=>(0,n.jsx)("span",{style:{fontSize:9.5,color:"var(--muted)",background:"var(--surface-2)",border:"1px solid var(--border)",borderRadius:3,padding:"0 4px"},children:e},e)),Object.keys(t.fields).length>3&&(0,n.jsxs)("span",{style:{fontSize:9.5,color:"var(--subtle)"},children:["+",Object.keys(t.fields).length-3]})]}),(0,n.jsx)("span",{style:{flexShrink:0,color:"var(--subtle)",fontSize:9,transform:r?"rotate(90deg)":"none",transition:"transform 0.15s"},children:"▶"})]}),r&&(0,n.jsxs)("div",{style:{padding:"8px 14px 12px 92px",borderTop:"1px solid var(--border)",background:"var(--surface-2)"},children:[t.message.includes("\n")&&(0,n.jsx)("pre",{style:{margin:"0 0 10px",color:"var(--text)",fontSize:11.5,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:t.message}),d&&(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"max-content 1fr",gap:"4px 16px",marginBottom:8},children:Object.entries(t.fields).map(e=>{let[t,r]=e;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{style:{color:"var(--accent)",fontSize:11,fontWeight:500},children:t},"k-".concat(t)),(0,n.jsx)("span",{style:{color:"var(--muted)",fontSize:11,wordBreak:"break-all"},children:r},"v-".concat(t))]})})}),t.raw&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{fontSize:10,color:"var(--subtle)",marginTop:8,marginBottom:4},children:"Raw"}),(0,n.jsx)("pre",{style:{margin:0,padding:"8px 10px",background:"var(--surface-2)",border:"1px solid var(--border)",borderRadius:4,fontSize:10.5,color:"var(--muted)",whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:180,overflow:"auto"},children:t.raw})]})]})]})}function W(e){let{agentId:t,slug:r}=e,[a,l]=(0,o.useState)([]),[i,s]=(0,o.useState)(!1),[d,c]=(0,o.useState)("all"),[p,u]=(0,o.useState)(""),[f,g]=(0,o.useState)(!0),h=(0,o.useRef)(null),x=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=new EventSource("/api/agents/".concat(t,"/logs"));return s(!0),e.onmessage=e=>{let t=JSON.parse(e.data);l(e=>[...e.slice(-1e3),function(e){let t=e.replace(/\x1b\[[0-9;]*m/g,"");try{var r,n;let e=JSON.parse(t),o="error"===e.level||50===e.level?"error":"warn"===e.level||40===e.level?"warn":"debug"===e.level||20===e.level?"debug":"info",a=e.timestamp?new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"}):"",l=(null!=(n=null!=(r=e.message)?r:e.msg)?n:"").replace(/^(error|warn|info|debug|trace):\s*/i,""),i=new Set(["level","message","msg","timestamp","agent","service"]),s={};for(let[t,r]of Object.entries(e))i.has(t)||(s[t]="object"==typeof r?JSON.stringify(r):String(r));return{raw:t,level:o,time:a,message:l,fields:s}}catch(a){let e=t.toLowerCase(),r=e.includes('"level":"error"')||e.includes('"level":50')||e.includes("error:")?"error":e.includes('"level":"warn"')||e.includes('"level":40')||e.includes("warn:")?"warn":e.includes('"level":"debug"')||e.includes('"level":20')||e.includes("debug:")?"debug":"info",n=t.replace(/^(error|warn|info|debug|trace):\s*/i,""),o=t.match(/"timestamp":"([^"]+)"/);return{raw:t,level:r,time:o?new Date(o[1]).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"}):"",message:n,fields:{}}}}(t)])},e.onerror=()=>s(!1),()=>e.close()},[t]),(0,o.useEffect)(()=>{var e;f&&(null==(e=h.current)||e.scrollIntoView({behavior:"smooth"}))},[a,f]);let m=a.reduce((e,t)=>{var r;return e[t.level]=(null!=(r=e[t.level])?r:0)+1,e},{all:a.length,error:0,warn:0,info:0,debug:0}),v=a.filter(e=>{if("all"!==d&&e.level!==d)return!1;if(p){let t=p.toLowerCase();return e.message.toLowerCase().includes(t)||Object.values(e.fields).some(e=>e.toLowerCase().includes(t))}return!0});return(0,n.jsxs)("div",{className:"fade-up",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5},children:[(0,n.jsx)("div",{className:i?"status-running":"",style:{width:6,height:6,borderRadius:"50%",background:i?"#16a34a":"var(--border-2)"}}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--muted)"},children:i?"Live":"Disconnected"})]}),(0,n.jsx)("div",{style:{width:1,height:14,background:"var(--border)",margin:"0 2px"}}),["all","error","warn","info","debug"].map(e=>{let t=B[e],r=d===e;return(0,n.jsxs)("button",{onClick:()=>c(e),style:{padding:"2px 8px",borderRadius:4,border:"1px solid ".concat(r?t.border:"var(--border)"),fontSize:10.5,fontFamily:"var(--font-sans)",cursor:"pointer",background:r?t.bg:"transparent",color:r?t.color:"var(--muted)",fontWeight:r?700:400,display:"flex",alignItems:"center",gap:4},children:[t.label,m[e]>0&&(0,n.jsx)("span",{style:{fontSize:9.5,opacity:.75},children:m[e]})]},e)}),(0,n.jsx)("input",{value:p,onChange:e=>u(e.target.value),placeholder:"Filter logs…",style:{padding:"3px 10px",borderRadius:4,border:"1px solid var(--border)",fontSize:11,fontFamily:"var(--font-mono)",background:"transparent",color:"var(--text)",outline:"none",width:180}}),(0,n.jsx)("button",{onClick:()=>l([]),style:{marginLeft:"auto",background:"none",border:"none",cursor:"pointer",fontSize:11,color:"var(--subtle)",fontFamily:"var(--font-sans)"},children:"Clear"})]}),(0,n.jsxs)("div",{ref:x,onScroll:e=>{let t=e.currentTarget;g(t.scrollTop+t.clientHeight>=t.scrollHeight-40)},style:{background:"#fff",border:"1px solid var(--border)",borderRadius:8,height:520,overflow:"auto",fontFamily:"var(--font-mono)"},children:[0===v.length?(0,n.jsx)("div",{style:{padding:"40px 20px",textAlign:"center",color:"var(--subtle)",fontSize:12},children:0===a.length?"Waiting for log lines…":"No matching lines."}):v.map((e,t)=>(0,n.jsx)(R,{log:e},t)),(0,n.jsx)("div",{ref:h})]}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginTop:5,padding:"0 2px"},children:[(0,n.jsxs)("span",{style:{fontSize:10.5,color:"var(--subtle)"},children:[v.length,v.length!==a.length?" / ".concat(a.length):""," line",1!==v.length?"s":""]}),!f&&(0,n.jsx)("button",{onClick:()=>{var e;g(!0),null==(e=h.current)||e.scrollIntoView({behavior:"smooth"})},style:{fontSize:10.5,color:"var(--accent)",background:"none",border:"none",cursor:"pointer",fontFamily:"var(--font-sans)"},children:"↓ Jump to latest"})]})]})}function I(e){let{title:t,children:r}=e;return(0,n.jsxs)("div",{style:{marginBottom:32,paddingBottom:28,borderBottom:"1px solid var(--border)"},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--muted)",letterSpacing:"0.08em",textTransform:"uppercase",marginBottom:16},children:t}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:r})]})}function E(e){let{children:t}=e;return(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:t})}function A(e){let{label:t,value:r,onChange:o,hint:a,type:l="text",readOnly:i}=e;return(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:5},children:t}),(0,n.jsx)("input",{type:l,value:r,onChange:e=>o(e.target.value),readOnly:i,style:{width:"100%",background:"var(--surface)",border:"1.5px solid var(--border)",borderRadius:"var(--radius)",padding:"10px 14px",color:"var(--text)",fontSize:14,fontFamily:"var(--font-sans)",outline:"none",transition:"border-color 0.15s"},onFocus:e=>e.currentTarget.style.borderColor="var(--accent)",onBlur:e=>e.currentTarget.style.borderColor="var(--border)"}),a&&(0,n.jsx)("p",{style:{margin:"5px 0 0",fontSize:12,color:"var(--subtle)"},children:a})]})}function F(e){let{label:t,value:r,onChange:o,hint:a,rows:l=3,readOnly:i}=e;return(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:5},children:t}),(0,n.jsx)("textarea",{value:r,onChange:e=>o(e.target.value),rows:l,readOnly:i,style:{width:"100%",background:"var(--surface)",border:"1.5px solid var(--border)",borderRadius:"var(--radius)",padding:"10px 14px",color:"var(--text)",fontSize:14,fontFamily:"var(--font-sans)",outline:"none",resize:"vertical",transition:"border-color 0.15s"},onFocus:e=>e.currentTarget.style.borderColor="var(--accent)",onBlur:e=>e.currentTarget.style.borderColor="var(--border)"}),a&&(0,n.jsx)("p",{style:{margin:"5px 0 0",fontSize:12,color:"var(--subtle)"},children:a})]})}function M(e){let{children:t,onClick:r,loading:o}=e;return(0,n.jsx)("button",{onClick:r,disabled:o,style:{background:o?"var(--border)":"var(--accent)",color:"#fff",border:"none",borderRadius:"var(--radius)",padding:"10px 22px",fontSize:14,fontWeight:600,letterSpacing:"-0.01em",cursor:o?"not-allowed":"pointer",fontFamily:"var(--font-sans)",boxShadow:o?"none":"var(--shadow-sm)",transition:"opacity 0.15s, transform 0.15s, box-shadow 0.15s"},onMouseEnter:e=>{o||(e.currentTarget.style.opacity="0.88",e.currentTarget.style.transform="translateY(-1px)",e.currentTarget.style.boxShadow="var(--shadow-hover)")},onMouseLeave:e=>{e.currentTarget.style.opacity="1",e.currentTarget.style.transform="translateY(0)",e.currentTarget.style.boxShadow="var(--shadow-sm)"},children:o?"Saving…":t})}function O(e){let{children:t,onClick:r,loading:o}=e;return(0,n.jsx)("button",{onClick:r,disabled:o,style:{background:"transparent",color:"var(--muted)",border:"1.5px solid var(--border-2)",borderRadius:"var(--radius)",padding:"10px 20px",fontSize:14,fontWeight:500,fontFamily:"var(--font-sans)",cursor:o?"default":"pointer",opacity:o?.6:1,transition:"border-color 0.15s, color 0.15s"},onMouseEnter:e=>{o||(e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.color="var(--text)")},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border-2)",e.currentTarget.style.color="var(--muted)"},children:o?"…":t})}function D(e){let{label:t,value:r}=e;return(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",fontSize:13},children:[(0,n.jsx)("span",{style:{color:"var(--muted)"},children:t}),(0,n.jsx)("span",{style:{color:"var(--text)",fontWeight:500},children:r})]})}function L(e){let{children:t,onClick:r,title:o,loading:a}=e;return(0,n.jsx)("button",{onClick:r,title:o,disabled:a,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,borderRadius:8,border:"1px solid var(--border)",background:"var(--surface)",color:"var(--muted)",cursor:a?"default":"pointer",opacity:a?.5:1,transition:"all 0.15s"},onMouseEnter:e=>{if(!a){let t=e.currentTarget;t.style.borderColor="var(--border-2)",t.style.color="var(--text)",t.style.background="var(--surface-2)"}},onMouseLeave:e=>{let t=e.currentTarget;t.style.borderColor="var(--border)",t.style.color="var(--muted)",t.style.background="var(--surface)"},children:a?(0,n.jsx)("span",{style:{fontSize:11},children:"…"}):t})}function N(e){let{children:t,onClick:r,color:o,textColor:a}=e;return(0,n.jsx)("button",{onClick:r,style:{background:null!=o?o:"var(--border)",color:null!=a?a:"#fff",border:"none",borderRadius:"var(--radius)",padding:"8px 18px",fontSize:13,fontWeight:600,cursor:"pointer",fontFamily:"var(--font-sans)",transition:"opacity 0.15s, transform 0.15s"},onMouseEnter:e=>{e.currentTarget.style.opacity="0.85",e.currentTarget.style.transform="translateY(-1px)"},onMouseLeave:e=>{e.currentTarget.style.opacity="1",e.currentTarget.style.transform="translateY(0)"},children:t})}function P(e){let{title:t,children:r,onClose:o}=e;return(0,n.jsx)(g.Z,{children:(0,n.jsx)("div",{style:{position:"fixed",inset:0,background:"rgba(0,0,0,0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,backdropFilter:"blur(4px)"},children:(0,n.jsxs)("div",{style:{background:"var(--surface)",border:"1px solid var(--border)",borderRadius:"var(--radius-lg)",padding:"28px",width:440,boxShadow:"var(--shadow-modal)",display:"flex",flexDirection:"column",gap:16,maxHeight:"90vh",overflow:"auto"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)("h3",{style:{margin:0,fontSize:15,fontWeight:600,color:"var(--text)"},children:t}),(0,n.jsx)("button",{onClick:o,style:{background:"none",border:"none",cursor:"pointer",color:"var(--muted)",fontSize:18,lineHeight:1,fontFamily:"var(--font-sans)"},children:"\xd7"})]}),r]})})})}function _(){return(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100vh",color:"var(--muted)",fontSize:13},children:"Loading…"})}function H(e){let{slug:t}=e;return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",gap:12},children:[(0,n.jsxs)("p",{style:{color:"var(--muted)",fontSize:13},children:["Agent not found: ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)"},children:t})]}),(0,n.jsx)(u(),{href:"/",style:{color:"var(--accent)",fontSize:13,textDecoration:"none"},children:"← Back to dashboard"})]})}function U(e){let{snapshot:t,current:r}=e,o=t.skillsJson,a=r?r.skillsJson:null,l=new Map(o.map(e=>["".concat(e.category,"/").concat(e.filename),e.content])),i=a?new Map(a.map(e=>["".concat(e.category,"/").concat(e.filename),e.content])):new Map,s=new Set([...l.keys(),...i.keys()]),d=[];for(let e of s){let t=l.get(e),r=i.get(e);void 0===t?d.push({key:e,status:"added"}):void 0===r?d.push({key:e,status:"removed"}):t!==r&&d.push({key:e,status:"modified",diff:x(t,r)})}return 0===d.length?(0,n.jsx)("p",{style:{fontSize:13,color:"var(--subtle)",margin:0},children:"No skill changes."}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:d.map(e=>(0,n.jsxs)("div",{style:{border:"1px solid var(--border)",borderRadius:8,overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"7px 12px",background:"var(--surface-2)",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("span",{style:{fontSize:11,fontFamily:"var(--font-mono)",color:"var(--text)"},children:e.key}),(0,n.jsx)("span",{style:{fontSize:10,padding:"1px 6px",borderRadius:4,fontWeight:600,background:"added"===e.status?"rgba(22,163,74,0.15)":"removed"===e.status?"rgba(239,68,68,0.15)":"rgba(234,179,8,0.15)",color:"added"===e.status?"#16a34a":"removed"===e.status?"#ef4444":"#ca8a04"},children:e.status})]}),e.diff&&(0,n.jsx)("pre",{style:{margin:0,padding:"10px 0",fontSize:11.5,fontFamily:"var(--font-mono)",lineHeight:1.6,overflow:"auto",maxHeight:320},children:e.diff.map((e,t)=>(0,n.jsxs)("div",{style:{padding:"0 12px",background:"add"===e.type?"rgba(22,163,74,0.1)":"remove"===e.type?"rgba(239,68,68,0.1)":"transparent",color:"add"===e.type?"#16a34a":"remove"===e.type?"#ef4444":"var(--muted)"},children:["add"===e.type?"+ ":"remove"===e.type?"- ":" ",e.line]},t))}),"added"===e.status&&(0,n.jsx)("p",{style:{margin:"8px 12px",fontSize:12,color:"#16a34a"},children:"File added since this snapshot."}),"removed"===e.status&&(0,n.jsx)("p",{style:{margin:"8px 12px",fontSize:12,color:"#ef4444"},children:"File deleted since this snapshot."})]},e.key))})}function J(e){let{snapshot:t,current:r}=e,o=new Set(r?r.allowedTools:[]),a=new Set(r?r.deniedTools:[]),l=new Set(t.allowedTools),i=new Set(t.deniedTools),s=[...o].filter(e=>!l.has(e)),d=[...l].filter(e=>!o.has(e)),c=[...a].filter(e=>!i.has(e)),p=[...i].filter(e=>!a.has(e));if(!s.length&&!d.length&&!c.length&&!p.length)return(0,n.jsx)("p",{style:{fontSize:13,color:"var(--subtle)",margin:0},children:"No permission changes."});let u=(e,t,r)=>t.length>0&&(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"var(--muted)",marginBottom:4},children:e}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:t.map(e=>(0,n.jsx)("span",{style:{fontSize:11.5,fontFamily:"var(--font-mono)",padding:"2px 8px",borderRadius:4,background:"".concat(r,"22"),color:r},children:e},e))})]},e);return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[u("Allowed tools added",s,"#16a34a"),u("Allowed tools removed",d,"#ef4444"),u("Denied tools added",c,"#ef4444"),u("Denied tools removed",p,"#16a34a")]})}function q(e){let{snapshot:t,current:r,allMcps:o}=e,a=e=>{var t,r;return null!=(r=null==(t=o.find(t=>t.id===e))?void 0:t.name)?r:e},l=new Set(r?r.mcpIds:[]),i=new Set(t.mcpIds),s=[...l].filter(e=>!i.has(e)),d=[...i].filter(e=>!l.has(e));return s.length||d.length?(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[s.length>0&&(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"#16a34a",marginBottom:4},children:"Added"}),s.map(e=>(0,n.jsxs)("div",{style:{fontSize:12.5,color:"#16a34a"},children:["+ ",a(e)]},e))]}),d.length>0&&(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"#ef4444",marginBottom:4},children:"Removed"}),d.map(e=>(0,n.jsxs)("div",{style:{fontSize:12.5,color:"#ef4444"},children:["- ",a(e)]},e))]})]}):(0,n.jsx)("p",{style:{fontSize:13,color:"var(--subtle)",margin:0},children:"No MCP changes."})}let Z={skills:{bg:"rgba(59,130,246,0.12)",color:"#3b82f6"},permissions:{bg:"rgba(234,179,8,0.12)",color:"#ca8a04"},mcps:{bg:"rgba(168,85,247,0.12)",color:"#a855f7"},"claude-md":{bg:"rgba(236,72,153,0.12)",color:"#ec4899"},manual:{bg:"rgba(22,163,74,0.12)",color:"#16a34a"}};function V(e){var t,r;let{trigger:o}=e,a=null!=(t=Z[o])?t:{bg:"var(--surface-2)",color:"var(--muted)"};return(0,n.jsx)("span",{style:{fontSize:10.5,fontWeight:600,padding:"3px 8px",borderRadius:6,background:a.bg,color:a.color,letterSpacing:"0.03em"},children:null!=(r=({skills:"Skills",permissions:"Tools",mcps:"MCPs","claude-md":"System Prompt",manual:"Manual",restrictions:"Channels"})[o])?r:o})}function Y(e){let{agentId:t,canEdit:r}=e,[a,l]=(0,o.useState)([]),[i,s]=(0,o.useState)(!0),[p,u]=(0,o.useState)(null),[f,g]=(0,o.useState)(null),[h,m]=(0,o.useState)("__current__"),[v,y]=(0,o.useState)(null),[b,j]=(0,o.useState)(null),[S,k]=(0,o.useState)([]),[w,C]=(0,o.useState)(!1),[z,T]=(0,o.useState)(!1),[B,R]=(0,o.useState)("");(0,o.useEffect)(()=>{Promise.all([fetch("/api/agents/".concat(t,"/snapshots")).then(e=>e.json()),fetch("/api/mcps").then(e=>e.json())]).then(e=>{let[t,r]=e;l(Array.isArray(t)?t:[]),k(r),s(!1)})},[t]),(0,o.useEffect)(()=>{"__current__"!==h||b||Promise.all([fetch("/api/agents/".concat(t,"/skills")).then(e=>e.json()),fetch("/api/agents/".concat(t,"/permissions")).then(e=>e.json()),fetch("/api/agents/".concat(t,"/mcps")).then(e=>e.json()),fetch("/api/agents/".concat(t,"/claude-md")).then(e=>e.text())]).then(e=>{var r,n;let[o,a,l,i]=e;j({id:"__current__",agentId:t,trigger:"manual",createdBy:"current",skillsJson:o.map(e=>({category:e.category,filename:e.filename,content:e.content,sort_order:e.sortOrder})),allowedTools:null!=(r=null==a?void 0:a.allowedTools)?r:[],deniedTools:null!=(n=null==a?void 0:a.deniedTools)?n:[],mcpIds:l.map(e=>e.id),compiledMd:null!=i?i:"",allowedChannels:[],createdAt:new Date})})},[t,h,b]),(0,o.useEffect)(()=>{if(!p)return void g(null);g(null),T(!0),fetch("/api/agents/".concat(t,"/snapshots/").concat(p)).then(e=>e.json()).then(e=>{g(e),T(!1)}).catch(()=>T(!1))},[t,p]),(0,o.useEffect)(()=>{if("__current__"===h)return void y(null);fetch("/api/agents/".concat(t,"/snapshots/").concat(h)).then(e=>e.json()).then(y)},[t,h]);let W=async()=>{var e;let r=null!=(e=window.prompt("Snapshot label (optional):"))?e:"",n=await fetch("/api/agents/".concat(t,"/snapshots"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({label:r||null})});if(n.ok){let e=await n.json();l(t=>[e,...t]),R("Snapshot created.")}},I=async e=>{window.confirm("Delete this snapshot?")&&(await fetch("/api/agents/".concat(t,"/snapshots/").concat(e),{method:"DELETE"}),l(t=>t.filter(t=>t.id!==e)),p===e&&(u(null),g(null)),R("Snapshot deleted."))},E=async e=>{if(!window.confirm("Restore to snapshot from ".concat(new Date(e.createdAt).toLocaleString(),"?\n\nThis will replace current skills, permissions, and MCPs.")))return;C(!0);let r=await fetch("/api/agents/".concat(t,"/snapshots/").concat(e.id,"/restore"),{method:"POST"});if(C(!1),r.ok)R("Restored. Agent is reloading.");else{let e=await r.json();R("Restore failed: ".concat(e.error))}},A=e=>{let t=new Date(e);return"".concat(t.toLocaleDateString()," ").concat(t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}))},F="__current__"===h?b:v;return i?(0,n.jsxs)("div",{style:{display:"flex",gap:20,minHeight:500},children:[(0,n.jsxs)("div",{style:{width:280,flexShrink:0,display:"flex",flexDirection:"column",gap:8},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:6},children:[(0,n.jsx)("div",{style:{width:70,height:13,borderRadius:5,background:"var(--surface-2)"}}),(0,n.jsx)("div",{style:{width:110,height:30,borderRadius:8,background:"var(--surface-2)"}})]}),[1,2,3,4].map(e=>(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:"var(--radius)",padding:"14px 16px",boxShadow:"var(--shadow-card)",opacity:1-(e-1)*.2},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:10},children:[(0,n.jsx)("div",{style:{width:70,height:18,borderRadius:6,background:"var(--surface-2)"}}),(0,n.jsx)("div",{style:{width:50,height:11,borderRadius:4,background:"var(--surface-2)"}})]}),(0,n.jsx)("div",{style:{width:"55%",height:11,borderRadius:4,background:"var(--surface-2)"}})]},e))]}),(0,n.jsx)("div",{style:{flex:1,background:"#fff",borderRadius:"var(--radius-lg)",boxShadow:"var(--shadow-card)",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)("div",{style:{fontSize:13,color:"var(--subtle)"},children:"Loading history…"})})]}):(0,n.jsxs)("div",{style:{display:"flex",gap:20,minHeight:500,alignItems:"flex-start"},children:[(0,n.jsxs)("div",{style:{width:280,flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12},children:[(0,n.jsxs)("span",{style:{fontSize:11,fontWeight:700,letterSpacing:"0.08em",color:"var(--subtle)",textTransform:"uppercase"},children:[a.length," snapshot",1!==a.length?"s":""]}),r&&(0,n.jsx)("button",{onClick:W,style:{background:"var(--accent)",color:"#fff",border:"none",borderRadius:"var(--radius-sm)",padding:"7px 13px",fontSize:12,fontWeight:600,cursor:"pointer",fontFamily:"var(--font-sans)",letterSpacing:"-0.01em",boxShadow:"var(--shadow-sm)",transition:"opacity 0.15s"},onMouseEnter:e=>e.currentTarget.style.opacity="0.85",onMouseLeave:e=>e.currentTarget.style.opacity="1",children:"+ Snapshot"})]}),B&&(0,n.jsx)("div",{style:{fontSize:12,color:"#16a34a",background:"#f0fdf4",border:"1px solid #bbf7d0",borderRadius:8,padding:"8px 12px",marginBottom:10},children:B}),0===a.length?(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:"var(--radius)",boxShadow:"var(--shadow-card)",padding:"28px 20px",textAlign:"center"},children:[(0,n.jsx)(d,{size:22,style:{marginBottom:10,color:"var(--border-2)"}}),(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"var(--text)",marginBottom:6},children:"No snapshots yet"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--muted)",lineHeight:1.6},children:"Snapshots are saved automatically when you change skills, MCPs, or permissions."})]}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:a.map(e=>{let t=e.id===p;return(0,n.jsxs)("div",{onClick:()=>{u(t?null:e.id),m("__current__"),y(null)},style:{background:"#fff",borderRadius:"var(--radius)",boxShadow:t?"0 0 0 2px var(--accent), var(--shadow-card)":"var(--shadow-card)",padding:"13px 15px",cursor:"pointer",transition:"box-shadow 0.15s"},onMouseEnter:e=>{t||(e.currentTarget.style.boxShadow="var(--shadow-hover)")},onMouseLeave:e=>{t||(e.currentTarget.style.boxShadow="var(--shadow-card)")},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:7},children:[(0,n.jsx)(V,{trigger:e.trigger}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--subtle)",fontFamily:"var(--font-mono)"},children:e.createdBy})]}),(0,n.jsx)("div",{style:{fontSize:12.5,fontWeight:500,color:"var(--text)",marginBottom:4*!!e.label},children:A(e.createdAt)}),e.label&&(0,n.jsx)("div",{style:{fontSize:11.5,color:"var(--muted)",fontStyle:"italic",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.label}),t&&r&&(0,n.jsxs)("div",{style:{display:"flex",gap:7,marginTop:11,paddingTop:11,borderTop:"1px solid var(--border)"},onClick:e=>e.stopPropagation(),children:[(0,n.jsx)("button",{onClick:()=>E(e),disabled:w,style:{flex:1,fontSize:12,padding:"6px 0",borderRadius:6,cursor:w?"not-allowed":"pointer",background:"#16a34a",color:"#fff",border:"none",fontFamily:"var(--font-sans)",fontWeight:600,transition:"opacity 0.15s"},onMouseEnter:e=>{w||(e.currentTarget.style.opacity="0.85")},onMouseLeave:e=>e.currentTarget.style.opacity="1",children:w?"Restoring…":"Restore"}),(0,n.jsx)("button",{onClick:()=>I(e.id),style:{fontSize:12,padding:"6px 12px",borderRadius:6,cursor:"pointer",background:"transparent",color:"var(--red)",border:"1.5px solid rgba(220,38,38,0.25)",fontFamily:"var(--font-sans)",fontWeight:500,transition:"all 0.15s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--red)",e.currentTarget.style.color="#fff",e.currentTarget.style.borderColor="var(--red)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--red)",e.currentTarget.style.borderColor="rgba(220,38,38,0.25)"},children:"Delete"})]})]},e.id)})})]}),z?(0,n.jsxs)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:"var(--radius)",boxShadow:"var(--shadow-card)",padding:"14px 18px",display:"flex",alignItems:"center",gap:12},children:[(0,n.jsx)("div",{style:{width:90,height:14,borderRadius:4,background:"var(--surface-2)"}}),(0,n.jsx)("div",{style:{flex:1,height:34,borderRadius:8,background:"var(--surface-2)"}})]}),[120,80,60,200].map((e,t)=>(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:"var(--radius)",boxShadow:"var(--shadow-card)",overflow:"hidden",opacity:1-.15*t},children:[(0,n.jsx)("div",{style:{padding:"12px 18px",borderBottom:"1px solid var(--border)"},children:(0,n.jsx)("div",{style:{width:70,height:11,borderRadius:4,background:"var(--surface-2)"}})}),(0,n.jsx)("div",{style:{padding:"16px 18px"},children:(0,n.jsx)("div",{style:{height:e,borderRadius:6,background:"var(--surface-2)"}})})]},t))]}):f?(0,n.jsxs)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:16},children:[(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:"var(--radius)",boxShadow:"var(--shadow-card)",padding:"14px 18px",display:"flex",alignItems:"center",gap:12},children:[(0,n.jsx)("span",{style:{fontSize:12,fontWeight:600,color:"var(--muted)",letterSpacing:"0.02em",whiteSpace:"nowrap"},children:"Compare with"}),(0,n.jsxs)("select",{value:h,onChange:e=>m(e.target.value),style:{flex:1,fontSize:13,padding:"7px 12px",borderRadius:8,border:"1.5px solid var(--border)",background:"var(--surface-2)",color:"var(--text)",fontFamily:"var(--font-sans)",outline:"none",cursor:"pointer"},onFocus:e=>e.currentTarget.style.borderColor="var(--accent)",onBlur:e=>e.currentTarget.style.borderColor="var(--border)",children:[(0,n.jsx)("option",{value:"__current__",children:"Current state"}),a.filter(e=>e.id!==p).map(e=>(0,n.jsxs)("option",{value:e.id,children:[A(e.createdAt)," — ",e.trigger,e.label?" \xb7 ".concat(e.label):""]},e.id))]})]}),F?[{title:"Skills",content:(0,n.jsx)(U,{snapshot:f,current:F})},{title:"Tools",content:(0,n.jsx)(J,{snapshot:f,current:F})},{title:"MCPs",content:(0,n.jsx)(q,{snapshot:f,current:F,allMcps:S})},{title:"System Prompt",content:(()=>{if(!f.compiledMd||!F.compiledMd)return(0,n.jsx)("p",{style:{fontSize:12.5,color:"var(--subtle)",margin:0},children:"Not available for this snapshot"});let e=x(f.compiledMd.trim(),F.compiledMd.trim());return e.some(e=>"same"!==e.type)?(0,n.jsx)("pre",{style:{margin:0,padding:"14px 16px",borderRadius:8,fontSize:12,fontFamily:"var(--font-mono)",background:"var(--surface-2)",border:"1px solid var(--border)",overflow:"auto",maxHeight:380,color:"var(--text)",lineHeight:1.7},children:e.map((e,t)=>(0,n.jsxs)("div",{style:{background:"add"===e.type?"rgba(34,197,94,0.12)":"remove"===e.type?"rgba(239,68,68,0.10)":"transparent",color:"add"===e.type?"#16a34a":"remove"===e.type?"#dc2626":"inherit",padding:"1px 6px",borderRadius:3,marginBottom:1},children:["add"===e.type?"+ ":"remove"===e.type?"- ":" ",e.line]},t))}):(0,n.jsx)("p",{style:{fontSize:12.5,color:"var(--subtle)",margin:0},children:"No changes"})})()}].map(e=>{let{title:t,content:r}=e;return(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:"var(--radius)",boxShadow:"var(--shadow-card)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{padding:"12px 18px",borderBottom:"1px solid var(--border)",fontSize:11,fontWeight:700,letterSpacing:"0.08em",color:"var(--muted)",textTransform:"uppercase"},children:t}),(0,n.jsx)("div",{style:{padding:"16px 18px"},children:r})]},t)}):(0,n.jsx)("div",{style:{background:"#fff",borderRadius:"var(--radius)",boxShadow:"var(--shadow-card)",padding:"24px 18px",textAlign:"center",color:"var(--subtle)",fontSize:13},children:"Loading comparison…"})]}):(0,n.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",background:"#fff",borderRadius:"var(--radius-lg)",boxShadow:"var(--shadow-card)",gap:10,padding:40},children:[(0,n.jsx)(c,{size:32,style:{color:"var(--border-2)"}}),(0,n.jsx)("div",{style:{fontSize:14,fontWeight:600,color:"var(--text)"},children:"Select a snapshot"}),(0,n.jsx)("div",{style:{fontSize:13,color:"var(--muted)",textAlign:"center",maxWidth:260,lineHeight:1.6},children:"Click any snapshot on the left to view what changed at that point in time."})]})]})}},4492:(e,t,r)=>{"use strict";r.d(t,{A:()=>i,O:()=>l});var n=r(4568),o=r(7620);let a=(0,o.createContext)({username:"",role:null,loading:!0,canEdit:!1,canManageUsers:!1,logout:async()=>{}});function l(e){let{children:t}=e,[r,l]=(0,o.useState)(""),[i,s]=(0,o.useState)(null),[d,c]=(0,o.useState)(!0);(0,o.useEffect)(()=>{fetch("/api/auth/me").then(e=>{if(!e.ok)throw Error();return e.json()}).then(e=>{l(e.username),s(e.role)}).catch(()=>{}).finally(()=>c(!1))},[]);let p=async()=>{await fetch("/api/auth/logout",{method:"POST"}),window.location.href="/login"};return(0,n.jsx)(a.Provider,{value:{username:r,role:i,loading:d,canEdit:"superadmin"===i||"admin"===i||"editor"===i,canManageUsers:"superadmin"===i||"admin"===i,logout:p},children:t})}function i(){return(0,o.useContext)(a)}},4843:(e,t,r)=>{Promise.resolve().then(r.bind(r,4029))},7541:(e,t,r)=>{"use strict";var n=r(3041);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},8546:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(7620),o=r(7509);function a(e){let{children:t}=e,[r,a]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{a(!0)},[]),r)?(0,o.createPortal)(t,document.body):null}}},e=>{e.O(0,[9664,587,18,7358],()=>e(e.s=4843)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5700],{1372:(e,t,r)=>{Promise.resolve().then(r.bind(r,9084))},2068:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(7620);let o=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim()};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let s=(0,n.forwardRef)((e,t)=>{let{color:r="currentColor",size:s=24,strokeWidth:i=2,absoluteStrokeWidth:l,className:d="",children:c,iconNode:p,...u}=e;return(0,n.createElement)("svg",{ref:t,...a,width:s,height:s,stroke:r,strokeWidth:l?24*Number(i)/Number(s):i,className:o("lucide",d),...u},[...p.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),i=(e,t)=>{let r=(0,n.forwardRef)((r,a)=>{let{className:i,...l}=r;return(0,n.createElement)(s,{ref:a,iconNode:t,className:o("lucide-".concat(e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),i),...l})});return r.displayName="".concat(e),r}},3637:(e,t,r)=>{"use strict";var n=Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]};Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)}(r(7851),t)},7541:(e,t,r)=>{"use strict";var n=r(3041);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},7851:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BOSS_ADDITIONAL_SCOPES=t.DEFAULT_SLACK_BOT_SCOPES=t.AGENT_EVENTS_CHANNEL=void 0,t.AGENT_EVENTS_CHANNEL="agent:events",t.DEFAULT_SLACK_BOT_SCOPES=["app_mentions:read","channels:history","channels:read","chat:write","chat:write.public","files:read","files:write","groups:history","groups:read","im:history","im:read","im:write","mpim:read","reactions:read","reactions:write","users:read"],t.BOSS_ADDITIONAL_SCOPES=["channels:read","groups:read"]},9084:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>g});var n=r(4568),o=r(7620),a=r(2068);let s=(0,a.A)("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),i=(0,a.A)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),l=(0,a.A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var d=r(7541),c=r(3637);let p={name:"",slug:"",description:"",persona:"",model:"claude-opus-4-6",isBoss:!1,reportsToIds:[],slackBotToken:"",slackAppToken:"",slackSigningSecret:"",mcpServerIds:[],skillTemplate:"blank",importPayload:null},u=[{value:"claude-opus-4-6",label:"Opus 4.6",sub:"Most capable"},{value:"claude-sonnet-4-6",label:"Sonnet 4.6",sub:"Balanced"},{value:"claude-haiku-4-5-20251001",label:"Haiku 4.5",sub:"Fastest"}],h=[{value:"blank",label:"Blank",desc:"Minimal identity only"},{value:"data-analyst",label:"Data Analyst",desc:"SQL, Redshift, metrics"},{value:"writer",label:"Writer",desc:"Content & summaries"},{value:"developer",label:"Developer",desc:"Code review & dev"}];function g(){let e=(0,d.useRouter)(),[t,r]=(0,o.useState)(0),[a,s]=(0,o.useState)(p),[i,l]=(0,o.useState)([]),[c,u]=(0,o.useState)([]),[h,g]=(0,o.useState)(!1),[f,b]=(0,o.useState)(""),y=c.filter(e=>e.isBoss);(0,o.useEffect)(()=>{fetch("/api/mcps").then(e=>e.json()).then(l),fetch("/api/agents").then(e=>e.json()).then(e=>{u(e)}).catch(()=>{})},[]);let j=e=>s(t=>({...t,...e})),k=a.isBoss?4:5,S=a.isBoss?["Name & Role","Slack App","Credentials","Review"]:["Name & Role","Slack App","Credentials","Tools","Review"],C=()=>0===t?!!(a.name&&a.slug):2!==t||!!(a.slackBotToken&&a.slackAppToken&&a.slackSigningSecret),w=async()=>{g(!0),b("");try{let r=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,reportsTo:a.isBoss?[]:a.reportsToIds})}),n=await r.json();if(!r.ok){var t;b(null!=(t=n.error)?t:"Failed to create agent");return}if(a.importPayload){let{claudeMd:e,skills:t}=a.importPayload;await fetch("/api/agents/".concat(n.id,"/claude-md"),{method:"PUT",headers:{"Content-Type":"text/plain"},body:e}),await Promise.all(t.map(e=>fetch("/api/agents/".concat(n.id,"/skills"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})))}e.push("/agents/".concat(n.slug))}finally{g(!1)}};return(0,n.jsxs)("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("div",{style:{padding:"18px 36px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",gap:12,background:"var(--surface)"},children:[(0,n.jsx)("a",{href:"/",style:{color:"var(--muted)",textDecoration:"none",fontSize:12},children:"← Agents"}),(0,n.jsx)("span",{style:{color:"var(--border-2)"},children:"/"}),(0,n.jsx)("span",{style:{fontSize:13,color:"var(--text)",fontWeight:500},children:"New Agent"})]}),(0,n.jsxs)("div",{style:{flex:1,display:"flex",padding:"40px 36px",gap:36,maxWidth:860,width:"100%"},children:[(0,n.jsx)("div",{style:{width:180,flexShrink:0},children:(0,n.jsx)("div",{style:{position:"sticky",top:40},children:S.map((e,o)=>(0,n.jsxs)("div",{onClick:()=>o<t&&r(o),style:{display:"flex",alignItems:"center",gap:10,padding:"9px 0",cursor:o<t?"pointer":"default"},children:[(0,n.jsx)("div",{style:{width:26,height:26,borderRadius:"50%",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",fontSize:o<t?11:12,fontWeight:600,background:o<t?"var(--accent)":o===t?"rgba(59,130,246,0.15)":"var(--border)",color:o<t?"#fff":o===t?"var(--accent)":"var(--subtle)",border:o===t?"1.5px solid var(--accent)":"1.5px solid transparent",transition:"all 0.2s"},children:o<t?"✓":o+1}),(0,n.jsx)("span",{style:{fontSize:13,fontWeight:o===t?600:400,color:o===t?"var(--text)":o<t?"var(--muted)":"var(--subtle)",transition:"color 0.2s"},children:e})]},o))})}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{background:"var(--surface)",borderRadius:"var(--radius-lg)",padding:"32px",boxShadow:"var(--shadow-card)"},className:"fade-up",children:[0===t&&(0,n.jsx)(x,{state:a,update:j,bosses:y}),1===t&&(0,n.jsx)(v,{state:a}),2===t&&(0,n.jsx)(m,{state:a,update:j}),3===t&&!a.isBoss&&(0,n.jsx)(B,{state:a,update:j,catalog:i}),(3===t&&a.isBoss||4===t)&&(0,n.jsx)(z,{state:a,update:j,catalog:i,agents:c})]},t),f&&(0,n.jsx)("div",{style:{marginTop:12,background:"rgba(239,68,68,0.1)",border:"1px solid rgba(239,68,68,0.3)",borderRadius:8,padding:"10px 14px",fontSize:13,color:"#f87171"},children:f}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginTop:16},children:[(0,n.jsx)("button",{onClick:()=>r(e=>Math.max(e-1,0)),disabled:0===t,style:{background:"transparent",color:0===t?"var(--subtle)":"var(--muted)",border:"1.5px solid var(--border)",borderRadius:"var(--radius)",padding:"10px 20px",fontSize:14,fontWeight:500,cursor:0===t?"not-allowed":"pointer",fontFamily:"var(--font-sans)",transition:"border-color 0.15s, color 0.15s"},onMouseEnter:e=>{t>0&&(e.currentTarget.style.color="var(--text)",e.currentTarget.style.borderColor="var(--border-2)")},onMouseLeave:e=>{e.currentTarget.style.color="var(--muted)",e.currentTarget.style.borderColor="var(--border)"},children:"← Back"}),t<k-1?(0,n.jsx)("button",{onClick:()=>r(e=>Math.min(e+1,k-1)),disabled:!C(),style:{background:C()?"var(--accent)":"var(--border)",color:"#fff",border:"none",borderRadius:"var(--radius)",padding:"10px 24px",fontSize:14,fontWeight:600,cursor:C()?"pointer":"not-allowed",fontFamily:"var(--font-sans)",transition:"opacity 0.15s, transform 0.15s",boxShadow:C()?"var(--shadow-sm)":"none",letterSpacing:"-0.01em"},onMouseEnter:e=>{C()&&(e.currentTarget.style.opacity="0.88",e.currentTarget.style.transform="translateY(-1px)")},onMouseLeave:e=>{e.currentTarget.style.opacity="1",e.currentTarget.style.transform="translateY(0)"},children:"Continue →"}):(0,n.jsx)("button",{onClick:w,disabled:h||!a.slackBotToken||!a.slackAppToken||!a.slackSigningSecret,style:{background:h?"var(--border)":"#16a34a",color:"#fff",border:"none",borderRadius:"var(--radius)",padding:"10px 24px",fontSize:14,fontWeight:600,cursor:h?"not-allowed":"pointer",fontFamily:"var(--font-sans)",transition:"opacity 0.15s, transform 0.15s",boxShadow:h?"none":"var(--shadow-sm)",letterSpacing:"-0.01em"},onMouseEnter:e=>{h||(e.currentTarget.style.opacity="0.88",e.currentTarget.style.transform="translateY(-1px)")},onMouseLeave:e=>{e.currentTarget.style.opacity="1",e.currentTarget.style.transform="translateY(0)"},children:h?"Creating…":"Create Agent"})]})]})]})]})}function x(e){let{state:t,update:r,bosses:o}=e;return(0,n.jsxs)("div",{children:[(0,n.jsx)(A,{step:1,title:"Name your agent",desc:"Give it a name and decide if it leads a team or works as a specialist."}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:14,marginBottom:14},children:[(0,n.jsx)(I,{label:"Agent Name *",value:t.name,placeholder:"e.g. GILFOYLE",onChange:e=>r({name:e,slug:e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")})}),(0,n.jsx)(I,{label:"Slug *",value:t.slug,placeholder:"e.g. gilfoyle",hint:"Lowercase, hyphens only",onChange:e=>r({slug:e.toLowerCase().replace(/[^a-z0-9-]/g,"")})})]}),(0,n.jsx)(I,{label:"Description",value:t.description,placeholder:"Data warehouse NLQ, Redshift queries, business metrics",hint:"Used by the boss to decide when to delegate here.",onChange:e=>r({description:e})}),(0,n.jsx)(R,{label:"Persona",value:t.persona,placeholder:"You are GILFOYLE, a cynical but brilliant data engineer…",hint:"Injected into CLAUDE.md as the agent's identity and personality.",rows:3,onChange:e=>r({persona:e})}),(0,n.jsxs)("div",{style:{marginBottom:14},children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:8},children:"Model"}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:8},children:u.map(e=>(0,n.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:2,padding:"10px 12px",border:"1px solid ".concat(t.model===e.value?"var(--accent)":"var(--border)"),borderRadius:8,cursor:"pointer",background:t.model===e.value?"rgba(59,130,246,0.08)":"transparent",transition:"border-color 0.15s, background 0.15s"},children:[(0,n.jsx)("input",{type:"radio",name:"model",value:e.value,checked:t.model===e.value,onChange:()=>r({model:e.value}),style:{display:"none"}}),(0,n.jsx)("span",{style:{fontSize:12.5,fontWeight:600,color:t.model===e.value?"var(--accent)":"var(--text)"},children:e.label}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--subtle)"},children:e.sub})]},e.value))})]}),(0,n.jsx)("div",{style:{marginBottom:14},children:(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",border:"1px solid ".concat(t.isBoss?"var(--accent)":"var(--border)"),borderRadius:8,cursor:"pointer",background:t.isBoss?"rgba(59,130,246,0.08)":"transparent",transition:"all 0.15s"},children:[(0,n.jsx)("input",{type:"checkbox",checked:t.isBoss,onChange:e=>r({isBoss:e.target.checked,reportsToIds:[]}),style:{accentColor:"var(--accent)",width:14,height:14}}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:t.isBoss?"var(--accent)":"var(--text)"},children:"This agent is a Boss"}),(0,n.jsx)("div",{style:{fontSize:11.5,color:"var(--subtle)"},children:"Boss agents orchestrate specialists. Their CLAUDE.md is auto-generated from the team."})]})]})}),!t.isBoss&&(0,n.jsxs)("div",{style:{marginBottom:14},children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:6},children:"Reports to"}),0===o.length?(0,n.jsx)("div",{style:{border:"1px dashed var(--border)",borderRadius:8,padding:"12px 14px",fontSize:12.5,color:"var(--subtle)"},children:"No boss agents yet — create a boss first, or mark this agent as a boss above."}):(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:10,overflow:"hidden"},children:o.map((e,a)=>(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:12,padding:"10px 14px",cursor:"pointer",borderBottom:a<o.length-1?"1px solid var(--border)":"none",background:t.reportsToIds.includes(e.id)?"rgba(59,130,246,0.06)":"transparent",transition:"background 0.12s"},children:[(0,n.jsx)("input",{type:"checkbox",checked:t.reportsToIds.includes(e.id),onChange:()=>{var n;return n=e.id,void r({reportsToIds:t.reportsToIds.includes(n)?t.reportsToIds.filter(e=>e!==n):[...t.reportsToIds,n]})},style:{accentColor:"var(--accent)",width:14,height:14}}),(0,n.jsx)("span",{style:{fontSize:13,color:"var(--text)"},children:e.name})]},e.id))}),t.reportsToIds.length>0&&(0,n.jsxs)("p",{style:{margin:"5px 0 0",fontSize:11,color:"var(--subtle)"},children:["This agent will appear in the team registry of ",t.reportsToIds.length," boss",t.reportsToIds.length>1?"es":"","."]})]})]})}function f(e){let{value:t,onChange:r,compact:a}=e,[s,i]=(0,o.useState)(""),l=(0,o.useRef)(null),d=e=>{var t;let n=null==(t=e.target.files)?void 0:t[0];if(!n)return;e.target.value="",i("");let o=new FileReader;o.onload=e=>{try{var t;let n=JSON.parse(null==(t=e.target)?void 0:t.result);if("string"!=typeof n.claudeMd||!Array.isArray(n.skills))return void i("Invalid file — must contain claudeMd (string) and skills (array)");if("number"!=typeof n.version)return void i("Invalid file — missing version field");r(n)}catch(e){i("Could not parse file — must be valid JSON")}},o.readAsText(n)};return a?(0,n.jsxs)("div",{children:[t?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"#7c3aed"},children:"Config loaded"}),(0,n.jsxs)("div",{style:{fontSize:11.5,color:"var(--muted)"},children:[t.skills.length," skill",1!==t.skills.length?"s":""," \xb7 CLAUDE.md included"]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>{r(null),i("")},style:{background:"none",border:"none",cursor:"pointer",fontSize:11.5,color:"var(--muted)",padding:"3px 6px"},children:"Remove"})]}):(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"var(--text)",marginBottom:1},children:"Import config"}),(0,n.jsx)("div",{style:{fontSize:11.5,color:"var(--subtle)"},children:"Load CLAUDE.md + skills from an exported agent"}),s&&(0,n.jsx)("div",{style:{fontSize:11,color:"var(--danger)",marginTop:3},children:s})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>{var e;return null==(e=l.current)?void 0:e.click()},style:{display:"flex",alignItems:"center",gap:5,flexShrink:0,padding:"6px 12px",borderRadius:6,border:"1px solid var(--border-2)",background:"#fff",fontSize:12,fontWeight:500,color:"var(--muted)",cursor:"pointer"},children:[(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M8 2v9M4 7l4 4 4-4M2 13h12",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})}),"Choose file"]})]}),(0,n.jsx)("input",{ref:l,type:"file",accept:".json",style:{display:"none"},onChange:d})]}):(0,n.jsxs)("div",{style:{marginTop:20,padding:"14px 16px",borderRadius:10,border:"1.5px dashed ".concat(t?"#8b5cf6":"var(--border-2)"),background:t?"rgba(139,92,246,0.03)":"var(--surface)",transition:"all 0.2s"},children:[t?(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,justifyContent:"space-between"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,n.jsx)("div",{style:{width:32,height:32,borderRadius:8,flexShrink:0,background:"rgba(139,92,246,0.1)",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 16 16",fill:"none",children:[(0,n.jsx)("path",{d:"M9 2H4a1 1 0 00-1 1v10a1 1 0 001 1h8a1 1 0 001-1V6L9 2z",stroke:"#8b5cf6",strokeWidth:"1.4",strokeLinejoin:"round"}),(0,n.jsx)("path",{d:"M9 2v4h4",stroke:"#8b5cf6",strokeWidth:"1.4",strokeLinejoin:"round"})]})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:500,color:"var(--text)"},children:"Config file loaded"}),(0,n.jsxs)("div",{style:{fontSize:11.5,color:"var(--muted)"},children:[t.skills.length," skill",1!==t.skills.length?"s":""," \xb7 CLAUDE.md included",t.exportedAt&&" \xb7 ".concat(new Date(t.exportedAt).toLocaleDateString())]})]})]}),(0,n.jsx)("button",{type:"button",onClick:()=>{r(null),i("")},style:{background:"none",border:"none",cursor:"pointer",fontSize:11.5,color:"var(--muted)",padding:"4px 8px",borderRadius:5},children:"Remove"})]}):(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:500,color:"var(--text)",marginBottom:2},children:"Import from existing config"}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--muted)"},children:"Load CLAUDE.md + skills from a previously exported agent"}),s&&(0,n.jsx)("div",{style:{fontSize:11.5,color:"var(--danger)",marginTop:4},children:s})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>{var e;return null==(e=l.current)?void 0:e.click()},style:{display:"flex",alignItems:"center",gap:6,flexShrink:0,padding:"7px 14px",borderRadius:7,border:"1.5px solid var(--border-2)",background:"#fff",fontSize:12.5,fontWeight:500,color:"var(--muted)",cursor:"pointer",transition:"all 0.15s"},onMouseEnter:e=>{e.currentTarget.style.borderColor="#8b5cf6",e.currentTarget.style.color="var(--text)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border-2)",e.currentTarget.style.color="var(--muted)"},children:[(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M8 2v9M4 7l4 4 4-4M2 13h12",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})}),"Choose file"]})]}),(0,n.jsx)("input",{ref:l,type:"file",accept:".json",style:{display:"none"},onChange:d})]})}function v(e){let{state:t}=e,[r,a]=(0,o.useState)(!1),s=t.name?JSON.stringify(function(e){var t;let r=[...new Set(e.isBoss?[...c.DEFAULT_SLACK_BOT_SCOPES,...c.BOSS_ADDITIONAL_SCOPES]:[...c.DEFAULT_SLACK_BOT_SCOPES])];return{display_information:{name:e.name,description:null!=(t=e.description)?t:"".concat(e.name," — Claude Code AI agent"),background_color:"#1a1a1a"},features:{bot_user:{display_name:e.name,always_online:!0},app_home:{home_tab_enabled:!1,messages_tab_enabled:!0,messages_tab_read_only_enabled:!1}},oauth_config:{scopes:{bot:r}},settings:{event_subscriptions:{bot_events:["app_mention","message.channels","message.groups","message.im","member_joined_channel"]},interactivity:{is_enabled:!1},socket_mode_enabled:!0,token_rotation_enabled:!1,org_deploy_enabled:!1}}}({name:t.name,description:t.description,isBoss:t.isBoss}),null,2):"{}";return(0,n.jsxs)("div",{children:[(0,n.jsx)(A,{step:2,title:"Create a Slack app",desc:"Paste this manifest into Slack — it configures everything automatically in about 2 minutes."}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:0,marginBottom:20},children:[{n:1,title:"Open api.slack.com/apps",body:(0,n.jsxs)(n.Fragment,{children:["Click ",(0,n.jsx)(T,{children:"Create New App"})," → ",(0,n.jsx)(T,{children:"From a manifest"})," and select your workspace."]})},{n:2,title:"Paste the manifest",body:(0,n.jsxs)(n.Fragment,{children:["Switch to the ",(0,n.jsx)(T,{children:"JSON"})," tab, paste the manifest below, click ",(0,n.jsx)(T,{children:"Next"})," → ",(0,n.jsx)(T,{children:"Create"}),"."]})},{n:3,title:"Install to workspace",body:(0,n.jsxs)(n.Fragment,{children:["In the sidebar go to ",(0,n.jsx)(T,{children:"Install App"})," → ",(0,n.jsx)(T,{children:"Install to Workspace"})," → Allow. This generates your Bot Token — it won't appear until you install."]})}].map((e,t,r)=>{let{n:o,title:a,body:s}=e;return(0,n.jsxs)("div",{style:{display:"flex",gap:0},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",width:32,flexShrink:0},children:[(0,n.jsx)("div",{style:{width:26,height:26,borderRadius:"50%",flexShrink:0,background:"var(--accent)",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:11,fontWeight:700,zIndex:1},children:o}),t<r.length-1&&(0,n.jsx)("div",{style:{width:2,flex:1,background:"var(--border)",minHeight:20,marginTop:4}})]}),(0,n.jsxs)("div",{style:{paddingLeft:14,paddingBottom:20*(t<r.length-1),paddingTop:3},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"var(--text)",marginBottom:3},children:a}),(0,n.jsx)("div",{style:{fontSize:12.5,color:"var(--muted)",lineHeight:1.65},children:s})]})]},o)})}),(0,n.jsxs)("div",{style:{background:"var(--surface-2)",border:"1.5px solid var(--border)",borderRadius:"var(--radius)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"10px 16px",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("span",{style:{fontSize:11.5,color:"var(--muted)",fontFamily:"var(--font-mono)"},children:[t.name||"agent","-manifest.json"]}),(0,n.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},style:{background:r?"#dcfce7":"var(--accent)",color:r?"#16a34a":"#fff",border:"none",cursor:"pointer",fontSize:12,fontWeight:600,fontFamily:"var(--font-sans)",padding:"5px 12px",borderRadius:6,transition:"all 0.15s"},children:r?"✓ Copied!":"Copy manifest"})]}),(0,n.jsx)("pre",{style:{margin:0,padding:"16px",fontSize:11.5,color:"var(--accent)",fontFamily:"var(--font-mono)",overflow:"auto",maxHeight:260,lineHeight:1.6},children:s})]})]})}function m(e){let{state:t,update:r}=e;return(0,n.jsxs)("div",{children:[(0,n.jsx)(A,{step:3,title:"Add your tokens",desc:"Three values from your Slack app — paste each one below."}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsx)(b,{label:"Bot Token",prefix:"xoxb-",path:["OAuth & Permissions","Bot User OAuth Token"],screenshot:(0,n.jsx)(S,{}),placeholder:"xoxb-...",value:t.slackBotToken,onChange:e=>r({slackBotToken:e})}),(0,n.jsx)(b,{label:"App-Level Token",prefix:"xapp-",path:["Basic Information","App-Level Tokens"],note:(0,n.jsxs)(n.Fragment,{children:["Click ",(0,n.jsx)("strong",{children:"Generate Token and Scopes"}),", add scope ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:11,background:"rgba(59,130,246,0.08)",color:"var(--accent)",padding:"1px 6px",borderRadius:4},children:"connections:write"}),", then generate."]}),screenshot:(0,n.jsx)(C,{}),placeholder:"xapp-...",value:t.slackAppToken,onChange:e=>r({slackAppToken:e})}),(0,n.jsx)(b,{label:"Signing Secret",prefix:"",path:["Basic Information","App Credentials","Signing Secret"],screenshot:(0,n.jsx)(w,{}),placeholder:"abc123def...",value:t.slackSigningSecret,onChange:e=>r({slackSigningSecret:e})})]})]})}function b(e){let{label:t,prefix:r,path:a,note:l,screenshot:d,placeholder:c,value:p,onChange:u}=e,[h,g]=(0,o.useState)(!1),[x,f]=(0,o.useState)(!1),v=p.length>0,m=r?p.startsWith(r):p.length>=8;return(0,n.jsxs)("div",{style:{borderRadius:"var(--radius)",border:"1.5px solid ".concat(v?m?"#86efac":"#fca5a5":"var(--border)"),background:"#fff",overflow:"hidden",transition:"border-color 0.2s"},children:[(0,n.jsxs)("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,minWidth:0},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:700,color:"var(--text)",flexShrink:0},children:t}),(0,n.jsx)("div",{style:{display:"flex",alignItems:"center",gap:5,overflow:"hidden"},children:a.map((e,t)=>(0,n.jsxs)(o.Fragment,{children:[t>0&&(0,n.jsx)("span",{style:{fontSize:11,color:"var(--border-2)"},children:"›"}),(0,n.jsx)("span",{style:{fontSize:11.5,whiteSpace:"nowrap",color:t===a.length-1?"var(--muted)":"var(--subtle)",fontWeight:t===a.length-1?500:400},children:e})]},t))})]}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,flexShrink:0},children:[d&&(0,n.jsx)("button",{type:"button",onClick:()=>f(e=>!e),style:{background:x?"var(--surface-2)":"none",border:"1px solid var(--border)",borderRadius:5,padding:"3px 8px",cursor:"pointer",color:"var(--muted)",fontSize:11,fontWeight:500,fontFamily:"var(--font-sans)",transition:"all 0.15s"},children:x?"Hide guide":"Where?"}),v&&(0,n.jsx)("span",{style:{fontSize:12,fontWeight:700,color:m?"#16a34a":"#ef4444"},children:m?"✓":"✗"})]})]}),x&&d&&(0,n.jsx)("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--border)",background:"var(--surface-2)"},children:d}),l&&(0,n.jsx)("div",{style:{padding:"8px 16px",borderBottom:"1px solid var(--border)",fontSize:12,color:"var(--muted)",background:"var(--surface-2)",lineHeight:1.6},children:l}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0 4px 0 16px",gap:6},children:[(0,n.jsx)("input",{type:h?"text":"password",value:p,onChange:e=>u(e.target.value),placeholder:c,style:{flex:1,background:"transparent",border:"none",padding:"12px 0",color:"var(--text)",fontSize:13,fontFamily:p?"var(--font-mono)":"var(--font-sans)",outline:"none"}}),(0,n.jsx)("button",{type:"button",onClick:()=>g(e=>!e),style:{background:"none",border:"none",cursor:"pointer",color:"var(--subtle)",fontSize:12,padding:"8px",fontFamily:"var(--font-sans)",lineHeight:1},children:h?(0,n.jsx)(s,{size:14}):(0,n.jsx)(i,{size:14})})]})]})}let y={wrap:{borderRadius:8,overflow:"hidden",border:"1px solid #e0e0e0",fontFamily:"Lato, -apple-system, sans-serif",fontSize:12},chrome:{background:"#f1f1f1",padding:"6px 10px",borderBottom:"1px solid #ddd",display:"flex",alignItems:"center",gap:8},urlBar:{flex:1,background:"#fff",border:"1px solid #ddd",borderRadius:4,padding:"3px 8px",fontSize:10.5,color:"#555",fontFamily:"monospace",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},sectionTitle:{fontSize:12,fontWeight:700,color:"#1d1c1d",marginBottom:10},token:{fontSize:11,fontFamily:"monospace",color:"#1d1c1d",letterSpacing:1},greenBtn:{background:"#007a5a",color:"#fff",border:"none",borderRadius:4,padding:"5px 10px",fontSize:11,fontWeight:700,cursor:"default",boxShadow:"0 0 0 3px rgba(0,122,90,0.25)"},badge:{background:"#e8f5f0",color:"#007a5a",border:"1px solid #b8dfd4",borderRadius:3,padding:"1px 6px",fontSize:10.5,fontWeight:600},highlight:{outline:"2.5px solid #007a5a",outlineOffset:2,borderRadius:4}};function j(e){let{url:t}=e;return(0,n.jsxs)("div",{style:y.chrome,children:[(0,n.jsx)("div",{style:{display:"flex",gap:4},children:["#ff5f57","#febc2e","#28c840"].map(e=>(0,n.jsx)("div",{style:{width:8,height:8,borderRadius:"50%",background:e}},e))}),(0,n.jsx)("div",{style:y.urlBar,children:t})]})}function k(e){let{url:t,activeNav:r,children:o}=e;return(0,n.jsxs)("div",{style:y.wrap,children:[(0,n.jsx)(j,{url:t}),(0,n.jsxs)("div",{style:{display:"flex",background:"#fff"},children:[(0,n.jsx)("div",{style:{width:148,background:"#f8f8f8",borderRight:"1px solid #e0e0e0",padding:"10px 0",flexShrink:0},children:["Basic Information","Socket Mode","Install App","OAuth & Permissions","Event Subscriptions","App Manifest"].map(e=>(0,n.jsx)("div",{style:{padding:"5px 12px",fontSize:11,cursor:"default",background:e===r?"#e8e8e8":"transparent",color:e===r?"#1d1c1d":"#616061",fontWeight:e===r?700:400,borderLeft:e===r?"2px solid #007a5a":"2px solid transparent"},children:e},e))}),(0,n.jsx)("div",{style:{flex:1,padding:"14px 16px",minWidth:0},children:o})]})]})}function S(){return(0,n.jsxs)(k,{url:"api.slack.com/apps/A.../oauth",activeNav:"OAuth & Permissions",children:[(0,n.jsxs)("div",{style:{background:"#fff8e6",border:"1px solid #f5c842",borderRadius:5,padding:"7px 10px",marginBottom:10,fontSize:11,color:"#7a5c00",lineHeight:1.5,display:"flex",alignItems:"flex-start",gap:6},children:[(0,n.jsx)(l,{size:12,style:{flexShrink:0,marginTop:1}}),(0,n.jsxs)("span",{children:["Token only appears after ",(0,n.jsx)("strong",{children:"Install to Workspace"})," (sidebar → Install App)"]})]}),(0,n.jsx)("div",{style:y.sectionTitle,children:"OAuth Tokens"}),(0,n.jsxs)("div",{style:{border:"1px solid #e8e8e8",borderRadius:5,overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{padding:"8px 10px",background:"#fafafa",borderBottom:"1px solid #e8e8e8"},children:[(0,n.jsx)("div",{style:{fontSize:11,color:"#616061",marginBottom:1},children:"Bot User OAuth Token"}),(0,n.jsx)("div",{style:{...y.token,fontSize:10.5},children:"xoxb-••••••••••••-••••••••••••-••••••••••••"}),(0,n.jsx)("div",{style:{fontSize:10,color:"#616061",marginTop:2},children:"Access Level: Workspace"})]}),(0,n.jsx)("div",{style:{padding:"7px 10px",display:"flex",justifyContent:"flex-end"},children:(0,n.jsx)("button",{style:{...y.greenBtn,...y.highlight},children:"Copy"})})]})]})}function C(){return(0,n.jsxs)(k,{url:"api.slack.com/apps/A.../general",activeNav:"Basic Information",children:[(0,n.jsx)("div",{style:y.sectionTitle,children:"App-Level Tokens"}),(0,n.jsx)("div",{style:{fontSize:11,color:"#616061",marginBottom:10,lineHeight:1.5},children:"App-level tokens represent your app across organizations."}),(0,n.jsx)("div",{style:{marginBottom:10},children:(0,n.jsx)("button",{style:{...y.greenBtn,...y.highlight},children:"Generate Token and Scopes"})}),(0,n.jsxs)("div",{style:{border:"1px solid #e8e8e8",borderRadius:5,padding:"8px 10px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#1d1c1d",marginBottom:4},children:"SlackHive"}),(0,n.jsx)("span",{style:y.badge,children:"connections:write"})]}),(0,n.jsx)("div",{style:y.token,children:"xapp-••••••••••••"})]})]})}function w(){return(0,n.jsxs)(k,{url:"api.slack.com/apps/A.../general",activeNav:"Basic Information",children:[(0,n.jsx)("div",{style:y.sectionTitle,children:"App Credentials"}),(0,n.jsx)("div",{style:{fontSize:11,color:"#616061",marginBottom:10,lineHeight:1.5},children:"These credentials allow your app to access the Slack API. Keep them secret."}),[{label:"App ID",value:"A0AN••••••9",mono:!0},{label:"Client ID",value:"9186••••••••••••••••",mono:!0},{label:"Client Secret",value:"••••••••••",mono:!0}].map(e=>(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",padding:"5px 0",borderBottom:"1px solid #f0f0f0",fontSize:11,color:"#616061"},children:[(0,n.jsx)("span",{children:e.label}),(0,n.jsx)("span",{style:{fontFamily:"monospace",color:"#1d1c1d"},children:e.value})]},e.label)),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 10px",marginTop:6,border:"1px solid #e8e8e8",borderRadius:5,...y.highlight},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#1d1c1d",marginBottom:2},children:"Signing Secret"}),(0,n.jsx)("div",{style:y.token,children:"••••••••••••••••••••••••"})]}),(0,n.jsx)("button",{style:y.greenBtn,children:"Show"})]})]})}function T(e){let{children:t}=e;return(0,n.jsx)("kbd",{style:{display:"inline-block",fontFamily:"var(--font-sans)",fontSize:11.5,fontWeight:600,background:"var(--surface-3)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:5,padding:"1px 7px",lineHeight:1.7,whiteSpace:"nowrap"},children:t})}function B(e){let{state:t,update:r,catalog:o}=e;return(0,n.jsxs)("div",{children:[(0,n.jsx)(A,{step:4,title:"Tools & Skills",desc:"Attach MCP servers and pick a starting skill template. You can change these anytime."}),(0,n.jsxs)("div",{style:{marginBottom:22},children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:8,letterSpacing:"0.06em",textTransform:"uppercase"},children:"MCP Servers"}),0===o.length?(0,n.jsxs)("div",{style:{border:"1px dashed var(--border)",borderRadius:8,padding:"16px",fontSize:12.5,color:"var(--subtle)",textAlign:"center"},children:["No MCP servers yet — you can add them after creation in ",(0,n.jsx)("strong",{style:{color:"var(--muted)"},children:"Settings → MCP Catalog"})]}):(0,n.jsx)("div",{style:{border:"1px solid var(--border)",borderRadius:10,overflow:"hidden"},children:o.map((e,a)=>(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:12,padding:"11px 14px",cursor:e.enabled?"pointer":"not-allowed",borderBottom:a<o.length-1?"1px solid var(--border)":"none",opacity:e.enabled?1:.4,transition:"background 0.12s"},onMouseEnter:t=>{e.enabled&&(t.currentTarget.style.background="rgba(255,255,255,0.03)")},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:[(0,n.jsx)("input",{type:"checkbox",checked:t.mcpServerIds.includes(e.id),onChange:()=>{var n;return n=e.id,void r({mcpServerIds:t.mcpServerIds.includes(n)?t.mcpServerIds.filter(e=>e!==n):[...t.mcpServerIds,n]})},disabled:!e.enabled,style:{accentColor:"var(--accent)",width:14,height:14}}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,n.jsx)("span",{style:{fontSize:13,fontWeight:500,color:"var(--text)"},children:e.name}),(0,n.jsx)("span",{style:{fontSize:10.5,fontFamily:"var(--font-mono)",color:"var(--muted)",background:"var(--border)",padding:"1px 6px",borderRadius:4},children:e.type})]}),e.description&&(0,n.jsx)("p",{style:{margin:0,fontSize:11.5,color:"var(--subtle)"},children:e.description})]})]},e.id))})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:8,letterSpacing:"0.06em",textTransform:"uppercase"},children:"Skill Template"}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[h.map(e=>{let o=t.skillTemplate===e.value&&!t.importPayload;return(0,n.jsxs)("label",{style:{padding:"12px 14px",border:"1px solid ".concat(o?"var(--accent)":"var(--border)"),borderRadius:8,cursor:"pointer",background:o?"rgba(59,130,246,0.08)":"transparent",transition:"all 0.15s"},children:[(0,n.jsx)("input",{type:"radio",name:"template",value:e.value,checked:o,onChange:()=>r({skillTemplate:e.value,importPayload:null}),style:{display:"none"}}),(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,color:o?"var(--accent)":"var(--text)",marginBottom:2},children:e.label}),(0,n.jsx)("div",{style:{fontSize:11.5,color:"var(--subtle)"},children:e.desc})]},e.value)}),(()=>{let e=!!t.importPayload;return(0,n.jsx)("div",{style:{padding:"12px 14px",border:"1px solid ".concat(e?"#8b5cf6":"var(--border)"),borderRadius:8,background:e?"rgba(139,92,246,0.08)":"transparent",transition:"all 0.15s",gridColumn:"span 2"},children:(0,n.jsx)(f,{value:t.importPayload,onChange:e=>r({importPayload:e}),compact:!0})})})()]})]})]})}function z(e){var t,r;let{state:o,update:a,catalog:s,agents:i}=e,l=i.filter(e=>o.reportsToIds.includes(e.id)),d=s.filter(e=>o.mcpServerIds.includes(e.id)),c=o.importPayload?"Import (".concat(o.importPayload.skills.length," skills)"):null!=(r=null==(t=h.find(e=>e.value===o.skillTemplate))?void 0:t.label)?r:o.skillTemplate,p=o.isBoss?"—":l.length>0?l.map(e=>e.name).join(", "):"None";return(0,n.jsxs)("div",{children:[(0,n.jsx)(A,{step:o.isBoss?4:5,title:"Looks good?",desc:"Review the details below, then hit Create Agent to launch."}),(0,n.jsx)("div",{style:{background:"var(--surface-2)",border:"1px solid var(--border)",borderRadius:10,overflow:"hidden",marginBottom:18},children:[{label:"Name",value:o.name,mono:!1},{label:"Slug",value:"@".concat(o.slug),mono:!0},{label:"Model",value:o.model,mono:!0},{label:"Role",value:o.isBoss?"Boss (orchestrator)":"Specialist",mono:!1},{label:"Reports to",value:p,mono:!1},{label:"Description",value:o.description||"—",mono:!1},{label:"Bot Token",value:"".concat(o.slackBotToken.slice(0,12),"…"),mono:!0},{label:"App Token",value:"".concat(o.slackAppToken.slice(0,12),"…"),mono:!0},{label:"Signing Secret",value:"••••••••",mono:!0},...!o.isBoss?[{label:"MCPs",value:d.length>0?d.map(e=>e.name).join(", "):"None",mono:!1},{label:"Skill Template",value:c,mono:!1}]:[{label:"Skills",value:"Auto-generated from team registry",mono:!1}]].map((e,t,r)=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:12,padding:"10px 16px",borderBottom:t<r.length-1?"1px solid var(--border)":"none"},children:[(0,n.jsx)("span",{style:{width:130,flexShrink:0,fontSize:12,color:"var(--subtle)"},children:e.label}),(0,n.jsx)("span",{style:{fontSize:13,color:"var(--text)",fontFamily:e.mono?"var(--font-mono)":"var(--font-sans)"},children:e.value})]},e.label))}),(0,n.jsx)("div",{style:{background:"#f0fdf4",border:"1px solid #bbf7d0",borderRadius:"var(--radius)",padding:"14px 16px",fontSize:13,color:"#15803d",lineHeight:1.65},children:"Once created, the runner picks up the agent automatically and connects to Slack. Manage skills, MCPs, and channel permissions from the agent detail page."})]})}function A(e){let{step:t,title:r,desc:o}=e;return(0,n.jsxs)("div",{style:{marginBottom:22},children:[(0,n.jsxs)("div",{style:{fontSize:11,fontWeight:600,color:"var(--accent)",letterSpacing:"0.08em",textTransform:"uppercase",marginBottom:4},children:["Step ",t]}),(0,n.jsx)("h2",{style:{margin:"0 0 4px",fontSize:18,fontWeight:700,color:"var(--text)",letterSpacing:"-0.02em"},children:r}),(0,n.jsx)("p",{style:{margin:0,fontSize:13,color:"var(--muted)"},children:o})]})}function I(e){let{label:t,value:r,onChange:o,placeholder:a,hint:s,type:i="text"}=e;return(0,n.jsxs)("div",{style:{marginBottom:14},children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:5},children:t}),(0,n.jsx)("input",{type:i,value:r,onChange:e=>o(e.target.value),placeholder:a,style:{width:"100%",background:"var(--surface-2)",border:"1.5px solid var(--border)",borderRadius:"var(--radius)",padding:"10px 14px",color:"var(--text)",fontSize:14,fontFamily:"var(--font-sans)",outline:"none",transition:"border-color 0.15s"},onFocus:e=>e.currentTarget.style.borderColor="var(--accent)",onBlur:e=>e.currentTarget.style.borderColor="var(--border)"}),s&&(0,n.jsx)("p",{style:{margin:"5px 0 0",fontSize:12,color:"var(--subtle)"},children:s})]})}function R(e){let{label:t,value:r,onChange:o,placeholder:a,hint:s,rows:i=3}=e;return(0,n.jsxs)("div",{style:{marginBottom:14},children:[(0,n.jsx)("label",{style:{display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:5},children:t}),(0,n.jsx)("textarea",{value:r,onChange:e=>o(e.target.value),placeholder:a,rows:i,style:{width:"100%",background:"var(--surface-2)",border:"1.5px solid var(--border)",borderRadius:"var(--radius)",padding:"10px 14px",color:"var(--text)",fontSize:14,fontFamily:"var(--font-sans)",outline:"none",resize:"vertical",transition:"border-color 0.15s",lineHeight:1.55},onFocus:e=>e.currentTarget.style.borderColor="var(--accent)",onBlur:e=>e.currentTarget.style.borderColor="var(--border)"}),s&&(0,n.jsx)("p",{style:{margin:"5px 0 0",fontSize:12,color:"var(--subtle)"},children:s})]})}}},e=>{e.O(0,[587,18,7358],()=>e(e.s=1372)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
package/apps/web/.next/static/chunks/app/api/agents/[id]/memories/[memId]/route-07f0f73ac9839899.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
package/apps/web/.next/static/chunks/app/api/agents/[id]/permissions/route-07f0f73ac9839899.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
package/apps/web/.next/static/chunks/app/api/agents/[id]/restrictions/route-07f0f73ac9839899.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
package/apps/web/.next/static/chunks/app/api/agents/[id]/skills/[skillId]/route-07f0f73ac9839899.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/[sid]/route-07f0f73ac9839899.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148,169,723,1732,1807,2e3,2148,2231,2450,2849,2920,3004,3083,3180,4145,4350,4400,4571,4622,4860,5177,5915,6381,6554,6742,6858,7157,7574,7758,8489,8673,9223,9515,9561,9796],{1680:()=>{}},_=>{_.O(0,[587,18,7358],()=>_(_.s=1680)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5531],{2068:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(7620);let l=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim()};var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,n.forwardRef)((e,t)=>{let{color:r="currentColor",size:a=24,strokeWidth:s=2,absoluteStrokeWidth:i,className:d="",children:c,iconNode:u,...h}=e;return(0,n.createElement)("svg",{ref:t,...o,width:a,height:a,stroke:r,strokeWidth:i?24*Number(s)/Number(a):s,className:l("lucide",d),...h},[...u.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),s=(e,t)=>{let r=(0,n.forwardRef)((r,o)=>{let{className:s,...i}=r;return(0,n.createElement)(a,{ref:o,iconNode:t,className:l("lucide-".concat(e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),s),...i})});return r.displayName="".concat(e),r}},2215:(e,t,r)=>{Promise.resolve().then(r.bind(r,9827))},4492:(e,t,r)=>{"use strict";r.d(t,{A:()=>s,O:()=>a});var n=r(4568),l=r(7620);let o=(0,l.createContext)({username:"",role:null,loading:!0,canEdit:!1,canManageUsers:!1,logout:async()=>{}});function a(e){let{children:t}=e,[r,a]=(0,l.useState)(""),[s,i]=(0,l.useState)(null),[d,c]=(0,l.useState)(!0);(0,l.useEffect)(()=>{fetch("/api/auth/me").then(e=>{if(!e.ok)throw Error();return e.json()}).then(e=>{a(e.username),i(e.role)}).catch(()=>{}).finally(()=>c(!1))},[]);let u=async()=>{await fetch("/api/auth/logout",{method:"POST"}),window.location.href="/login"};return(0,n.jsx)(o.Provider,{value:{username:r,role:s,loading:d,canEdit:"superadmin"===s||"admin"===s||"editor"===s,canManageUsers:"superadmin"===s||"admin"===s,logout:u},children:t})}function s(){return(0,l.useContext)(o)}},8546:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(7620),l=r(7509);function o(e){let{children:t}=e,[r,o]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{o(!0)},[]),r)?(0,l.createPortal)(t,document.body):null}},9827:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(4568),l=r(7620),o=r(4492),a=r(8546),s=r(2068);let i=(0,s.A)("CalendarClock",[["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M17.5 17.5 16 16.3V14",key:"akvzfd"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]),d=(0,s.A)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]),c=(0,s.A)("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),u=[{label:"Every hour",cron:"0 * * * *"},{label:"Every 6 hours",cron:"0 */6 * * *"},{label:"Daily at 8 AM",cron:"0 8 * * *"},{label:"Daily at 9 AM",cron:"0 9 * * *"},{label:"Mon-Fri at 9 AM",cron:"0 9 * * 1-5"},{label:"Weekly Mon 9 AM",cron:"0 9 * * 1"}];function h(e){let t=e.split(" ");if(5!==t.length)return e;let[r,n,l,o,a]=t;return"0"===r&&"*"===n?"Every hour":"0"===r&&n.startsWith("*/")?"Every ".concat(n.slice(2)," hours"):"0"===r&&"1-5"===a&&"*"===l&&"*"===o?"Weekdays at ".concat(n,":00"):"0"===r&&"1"===a&&"*"===l&&"*"===o?"Mondays at ".concat(n,":00"):"0"===r&&"*"===a&&"*"===l&&"*"===o?"Daily at ".concat(n,":00"):"*"!==l&&"*"===o?"Day ".concat(l," at ").concat(n,":").concat(r.padStart(2,"0")):e}function p(){let{canEdit:e}=(0,o.A)(),[t,r]=(0,l.useState)([]),[a,s]=(0,l.useState)([]),[u,p]=(0,l.useState)(!0),[g,f]=(0,l.useState)(!1),[y,v]=(0,l.useState)(null),[b,m]=(0,l.useState)(new Set),[j,k]=(0,l.useState)({}),S=()=>{p(!0),Promise.all([fetch("/api/jobs").then(e=>e.json()),fetch("/api/agents").then(e=>e.json())]).then(e=>{let[t,n]=e;r(t),s(n)}).catch(()=>{}).finally(()=>p(!1))};(0,l.useEffect)(()=>{S()},[]);let w=async e=>{let t=new Set(b);if(t.has(e))t.delete(e);else if(t.add(e),!j[e]){let t=await fetch("/api/jobs/".concat(e,"/runs")),r=await t.json();k(t=>({...t,[e]:r}))}m(t)},C=async e=>{await fetch("/api/jobs/".concat(e.id),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:!e.enabled})}),S()},z=async e=>{confirm('Delete job "'.concat(e.name,'"?'))&&(await fetch("/api/jobs/".concat(e.id),{method:"DELETE"}),S())};return(0,n.jsxs)("div",{className:"fade-up",style:{padding:"36px 40px"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:24},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{style:{margin:0,fontSize:22,fontWeight:700,color:"var(--text)",letterSpacing:"-0.02em"},children:"Scheduled Jobs"}),(0,n.jsx)("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--muted)"},children:"Recurring tasks executed by any agent on a cron schedule."})]}),e&&(0,n.jsxs)("button",{onClick:()=>{v(null),f(!0)},style:{display:"inline-flex",alignItems:"center",gap:6,background:"var(--accent)",color:"#fff",padding:"9px 18px",borderRadius:8,fontSize:13,fontWeight:500,border:"none",cursor:"pointer",fontFamily:"var(--font-sans)"},children:[(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M8 3v10M3 8h10",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})}),"New Job"]})]}),u?(0,n.jsx)("p",{style:{color:"var(--muted)",fontSize:13},children:"Loading..."}):0===t.length?(0,n.jsxs)("div",{style:{textAlign:"center",padding:"60px 20px",border:"1px solid var(--border)",borderRadius:12,background:"#fff"},children:[(0,n.jsx)(i,{size:32,style:{marginBottom:12,color:"var(--border-2)"}}),(0,n.jsx)("p",{style:{margin:"0 0 4px",fontSize:16,fontWeight:600,color:"var(--text)"},children:"No scheduled jobs"}),(0,n.jsx)("p",{style:{margin:0,fontSize:13,color:"var(--muted)",maxWidth:300,marginInline:"auto"},children:e?"Create a recurring task for the boss agent to execute on a schedule.":"No jobs have been configured yet."})]}):(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:t.map(t=>{var r,l,o,s,i;return(0,n.jsxs)("div",{style:{background:"#fff",border:"1px solid var(--border)",borderRadius:12,boxShadow:"var(--shadow-sm)",overflow:"hidden"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,padding:"16px 20px"},children:[(0,n.jsx)("div",{style:{width:8,height:8,borderRadius:"50%",flexShrink:0,background:t.enabled?(null==(r=t.lastRun)?void 0:r.status)==="error"?"#dc2626":(null==(l=t.lastRun)?void 0:l.status)==="success"?"#059669":(null==(o=t.lastRun)?void 0:o.status)==="running"?"#2563eb":"var(--border-2)":"var(--border-2)"}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,n.jsx)("span",{style:{fontSize:14,fontWeight:600,color:"var(--text)"},children:t.name}),!t.enabled&&(0,n.jsx)("span",{style:{fontSize:10,fontWeight:600,color:"var(--subtle)",background:"var(--surface-2)",padding:"1px 6px",borderRadius:4,textTransform:"uppercase",letterSpacing:"0.04em"},children:"Paused"})]}),(0,n.jsxs)("div",{style:{fontSize:12,color:"var(--muted)",marginTop:2,display:"flex",gap:12,flexWrap:"wrap"},children:[(0,n.jsx)("span",{children:h(t.cronSchedule)}),t.agentId&&(()=>{let e=a.find(e=>e.id===t.agentId);return e?(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[(0,n.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:e.isBoss?"var(--accent)":"var(--muted)",display:"inline-block"}}),e.name]}):null})(),(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:["dm"===t.targetType?(0,n.jsx)(d,{size:11}):(0,n.jsx)(c,{size:11}),"dm"===t.targetType?"DM":"Channel",": ",(0,n.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:t.targetId})]})]})]}),(0,n.jsx)("div",{style:{textAlign:"right",flexShrink:0},children:t.lastRun?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:600,color:"success"===t.lastRun.status?"#059669":"error"===t.lastRun.status?"#dc2626":"#2563eb",textTransform:"uppercase"},children:t.lastRun.status}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--subtle)"},children:new Date(t.lastRun.startedAt).toLocaleString()})]}):(0,n.jsx)("div",{style:{fontSize:11,color:"var(--subtle)"},children:"Never run"})}),(0,n.jsxs)("div",{style:{display:"flex",gap:6,flexShrink:0},children:[(0,n.jsx)("button",{onClick:()=>w(t.id),title:"Run history",style:{background:"none",border:"1px solid var(--border)",borderRadius:6,width:30,height:30,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",color:"var(--muted)",transition:"color 0.12s, border-color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.borderColor="var(--border-2)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--muted)",e.currentTarget.style.borderColor="var(--border)"},children:(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M2 3h12M2 7h12M2 11h8",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})})}),e&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{onClick:()=>C(t),title:t.enabled?"Pause":"Enable",style:{background:"none",border:"1px solid var(--border)",borderRadius:6,width:30,height:30,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",color:t.enabled?"#059669":"var(--subtle)",transition:"color 0.12s"},children:t.enabled?(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M6 3v10M10 3v10",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}):(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M4 3l9 5-9 5V3z",fill:"currentColor"})})}),(0,n.jsx)("button",{onClick:()=>{v(t),f(!0)},title:"Edit",style:{background:"none",border:"1px solid var(--border)",borderRadius:6,width:30,height:30,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",color:"var(--muted)"},children:(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"})})}),(0,n.jsx)("button",{onClick:()=>z(t),title:"Delete",style:{background:"none",border:"1px solid var(--border)",borderRadius:6,width:30,height:30,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",color:"#dc2626",opacity:.6},children:(0,n.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",children:(0,n.jsx)("path",{d:"M3 4h10M6 4V2h4v2M5 4v9h6V4",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})})})]})]})]}),(0,n.jsxs)("div",{style:{padding:"0 20px 14px",fontSize:12,color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[(0,n.jsx)("span",{style:{color:"var(--subtle)",fontSize:11},children:"Prompt:"})," ",t.prompt]}),b.has(t.id)&&(0,n.jsxs)("div",{style:{borderTop:"1px solid var(--border)",background:"var(--surface-2)"},children:[(0,n.jsx)("div",{style:{padding:"10px 20px",fontSize:11,fontWeight:600,color:"var(--muted)",letterSpacing:"0.04em",textTransform:"uppercase"},children:"Run History"}),0===(null!=(s=j[t.id])?s:[]).length?(0,n.jsx)("div",{style:{padding:"12px 20px",fontSize:12,color:"var(--subtle)"},children:"No runs yet"}):(null!=(i=j[t.id])?i:[]).slice(0,10).map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10,padding:"10px 20px",borderTop:"1px solid var(--border)",fontSize:12},children:[(0,n.jsx)("div",{style:{width:6,height:6,borderRadius:"50%",marginTop:5,flexShrink:0,background:"success"===e.status?"#059669":"error"===e.status?"#dc2626":"#2563eb"}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:10,color:"var(--muted)"},children:[(0,n.jsx)("span",{style:{fontWeight:600,textTransform:"uppercase",color:"success"===e.status?"#059669":"error"===e.status?"#dc2626":"#2563eb"},children:e.status}),(0,n.jsx)("span",{children:new Date(e.startedAt).toLocaleString()}),e.finishedAt&&(0,n.jsxs)("span",{style:{color:"var(--subtle)"},children:["(",Math.round((new Date(e.finishedAt).getTime()-new Date(e.startedAt).getTime())/1e3),"s)"]})]}),e.output&&(0,n.jsx)("pre",{style:{margin:"4px 0 0",fontSize:11,color:"var(--text)",whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"var(--font-mono)",maxHeight:100,overflow:"auto",background:"#fff",padding:"6px 8px",borderRadius:6,border:"1px solid var(--border)"},children:e.output.slice(0,500)}),e.error&&(0,n.jsx)("div",{style:{margin:"4px 0 0",fontSize:11,color:"#dc2626"},children:e.error})]})]},e.id))]})]},t.id)})}),g&&(0,n.jsx)(x,{job:y,agents:a,onClose:()=>{f(!1),v(null)},onSaved:()=>{f(!1),v(null),S()}})]})}function x(e){var t,r,o,s,i,p,x,y,v;let{job:b,agents:m,onClose:j,onSaved:k}=e,S=!!b,[w,C]=(0,l.useState)(null!=(o=null!=(r=null==b?void 0:b.agentId)?r:null==(t=m[0])?void 0:t.id)?o:""),[z,M]=(0,l.useState)(null!=(s=null==b?void 0:b.name)?s:""),[R,W]=(0,l.useState)(null!=(i=null==b?void 0:b.prompt)?i:""),[T,A]=(0,l.useState)(null!=(p=null==b?void 0:b.cronSchedule)?p:"0 8 * * *"),[I,E]=(0,l.useState)(null!=(x=null==b?void 0:b.targetType)?x:"channel"),[N,D]=(0,l.useState)(null!=(y=null==b?void 0:b.targetId)?y:""),[B,L]=(0,l.useState)(null==(v=null==b?void 0:b.enabled)||v),[F,P]=(0,l.useState)(!1),[O,H]=(0,l.useState)(""),J=async()=>{if(!w||!z||!R||!T||!N)return void H("All fields are required");P(!0),H("");try{let e={agentId:w,name:z,prompt:R,cronSchedule:T,targetType:I,targetId:N,enabled:B},t=S?await fetch("/api/jobs/".concat(b.id),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}):await fetch("/api/jobs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();H(e.error||"Failed");return}k()}finally{P(!1)}};return(0,n.jsx)(a.Z,{children:(0,n.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,background:"rgba(0,0,0,0.4)",display:"flex",alignItems:"flex-start",justifyContent:"center",zIndex:9999,padding:"40px 16px",overflowY:"auto",backdropFilter:"blur(2px)"},children:(0,n.jsxs)("div",{style:{background:"#fff",borderRadius:14,border:"1px solid var(--border)",padding:28,width:480,maxWidth:"100%",boxShadow:"var(--shadow-lg)",display:"flex",flexDirection:"column",gap:16,flexShrink:0},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,n.jsx)("h3",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--text)"},children:S?"Edit Job":"New Scheduled Job"}),(0,n.jsx)("button",{onClick:j,style:{background:"none",border:"none",color:"var(--muted)",fontSize:18,cursor:"pointer"},children:"\xd7"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:g,children:"Agent"}),(0,n.jsxs)("select",{value:w,onChange:e=>C(e.target.value),style:f,children:[0===m.length&&(0,n.jsx)("option",{value:"",children:"No agents available"}),m.map(e=>(0,n.jsxs)("option",{value:e.id,children:[e.name,e.isBoss?" (Boss)":""]},e.id))]}),(0,n.jsx)("p",{style:{margin:"4px 0 0",fontSize:11,color:"var(--subtle)"},children:"The agent that will receive and execute this prompt."})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:g,children:"Name"}),(0,n.jsx)("input",{type:"text",value:z,onChange:e=>M(e.target.value),placeholder:"e.g. Daily Booking Report",style:f})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:g,children:"Prompt"}),(0,n.jsx)("textarea",{value:R,onChange:e=>W(e.target.value),placeholder:"What should this agent do? e.g. Generate a summary of yesterday's bookings with key metrics",rows:3,style:{...f,resize:"vertical",fontFamily:"var(--font-sans)"}}),(0,n.jsx)("p",{style:{margin:"4px 0 0",fontSize:11,color:"var(--subtle)"},children:"Sent to the agent on each scheduled run."})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:g,children:"Schedule"}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,marginBottom:8},children:u.map(e=>(0,n.jsx)("button",{onClick:()=>A(e.cron),style:{padding:"4px 10px",borderRadius:6,fontSize:11,fontWeight:500,border:T===e.cron?"1px solid var(--accent)":"1px solid var(--border)",background:T===e.cron?"rgba(23,23,23,0.06)":"#fff",color:T===e.cron?"var(--text)":"var(--muted)",cursor:"pointer",fontFamily:"var(--font-sans)"},children:e.label},e.cron))}),(0,n.jsx)("input",{type:"text",value:T,onChange:e=>A(e.target.value),placeholder:"0 8 * * *",style:{...f,fontFamily:"var(--font-mono)"}}),(0,n.jsxs)("p",{style:{margin:"4px 0 0",fontSize:11,color:"var(--subtle)"},children:["Cron expression: minute hour day month weekday — ",(0,n.jsx)("span",{style:{color:"var(--text)"},children:h(T)})]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{style:g,children:"Deliver to"}),(0,n.jsx)("div",{style:{display:"flex",gap:8,marginBottom:8},children:["channel","dm"].map(e=>(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:6,padding:"6px 12px",border:I===e?"1px solid var(--accent)":"1px solid var(--border)",borderRadius:7,cursor:"pointer",fontSize:13,background:I===e?"rgba(23,23,23,0.06)":"#fff",color:I===e?"var(--text)":"var(--muted)"},children:[(0,n.jsx)("input",{type:"radio",name:"targetType",checked:I===e,onChange:()=>E(e),style:{display:"none"}}),(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5},children:["channel"===e?(0,n.jsx)(c,{size:13}):(0,n.jsx)(d,{size:13}),"channel"===e?"Channel":"DM"]})]},e))}),(0,n.jsx)("input",{type:"text",value:N,onChange:e=>D(e.target.value),placeholder:"channel"===I?"Channel ID (e.g. C0ANTCQ918U)":"User ID (e.g. U095GQAM6PL)",style:f})]}),(0,n.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:B,onChange:e=>L(e.target.checked),style:{accentColor:"var(--accent)",width:14,height:14}}),(0,n.jsx)("span",{style:{fontSize:13,color:"var(--text)"},children:"Enabled"})]}),O&&(0,n.jsx)("div",{style:{fontSize:12,color:"#dc2626",background:"rgba(220,38,38,0.06)",padding:"6px 10px",borderRadius:6},children:O}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,justifyContent:"flex-end"},children:[(0,n.jsx)("button",{onClick:j,style:{padding:"8px 16px",borderRadius:7,border:"1px solid var(--border)",background:"#fff",fontSize:13,cursor:"pointer",fontFamily:"var(--font-sans)"},children:"Cancel"}),(0,n.jsx)("button",{onClick:J,disabled:F,style:{padding:"8px 18px",borderRadius:7,border:"none",background:"var(--accent)",color:"#fff",fontSize:13,fontWeight:500,cursor:"pointer",fontFamily:"var(--font-sans)"},children:F?"Saving...":S?"Save Changes":"Create Job"})]})]})})})}let g={display:"block",fontSize:12,fontWeight:500,color:"var(--muted)",marginBottom:5},f={width:"100%",padding:"8px 12px",borderRadius:7,border:"1px solid var(--border)",fontSize:13,outline:"none",boxSizing:"border-box",fontFamily:"var(--font-sans)",color:"var(--text)"}}},e=>{e.O(0,[587,18,7358],()=>e(e.s=2215)),_N_E=e.O()}]);
|