slackhive 0.1.41 → 0.1.43
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/cli/dist/index.js +15786 -52
- package/package.json +9 -3
- package/.dockerignore +0 -14
- package/.env.example +0 -44
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -65
- package/.github/ISSUE_TEMPLATE/config.yml +0 -5
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -38
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -27
- package/.github/dependabot.yml +0 -20
- package/.github/workflows/audit.yml +0 -149
- package/.github/workflows/ci.yml +0 -135
- package/CHANGELOG.md +0 -52
- package/CODE_OF_CONDUCT.md +0 -37
- package/CONTRIBUTING.md +0 -204
- package/SECURITY.md +0 -47
- package/apps/runner/Dockerfile +0 -33
- package/apps/runner/dist/__tests__/channel-restrictions.test.d.ts +0 -8
- package/apps/runner/dist/__tests__/channel-restrictions.test.js +0 -63
- package/apps/runner/dist/__tests__/channel-restrictions.test.js.map +0 -1
- package/apps/runner/dist/__tests__/claude-handler-resolve.test.d.ts +0 -20
- package/apps/runner/dist/__tests__/claude-handler-resolve.test.js +0 -178
- package/apps/runner/dist/__tests__/claude-handler-resolve.test.js.map +0 -1
- package/apps/runner/dist/__tests__/compile-claude-md.test.d.ts +0 -13
- package/apps/runner/dist/__tests__/compile-claude-md.test.js +0 -144
- package/apps/runner/dist/__tests__/compile-claude-md.test.js.map +0 -1
- package/apps/runner/dist/__tests__/memory-sync.test.d.ts +0 -11
- package/apps/runner/dist/__tests__/memory-sync.test.js +0 -56
- package/apps/runner/dist/__tests__/memory-sync.test.js.map +0 -1
- package/apps/runner/dist/__tests__/slack-file-support.test.d.ts +0 -9
- package/apps/runner/dist/__tests__/slack-file-support.test.js +0 -271
- package/apps/runner/dist/__tests__/slack-file-support.test.js.map +0 -1
- package/apps/runner/dist/__tests__/slack-formatting.test.d.ts +0 -12
- package/apps/runner/dist/__tests__/slack-formatting.test.js +0 -400
- package/apps/runner/dist/__tests__/slack-formatting.test.js.map +0 -1
- package/apps/runner/dist/__tests__/thread-context.test.d.ts +0 -12
- package/apps/runner/dist/__tests__/thread-context.test.js +0 -182
- package/apps/runner/dist/__tests__/thread-context.test.js.map +0 -1
- package/apps/runner/dist/agent-runner.d.ts +0 -118
- package/apps/runner/dist/agent-runner.js +0 -352
- package/apps/runner/dist/agent-runner.js.map +0 -1
- package/apps/runner/dist/claude-handler.d.ts +0 -122
- package/apps/runner/dist/claude-handler.js +0 -402
- package/apps/runner/dist/claude-handler.js.map +0 -1
- package/apps/runner/dist/compile-claude-md.d.ts +0 -59
- package/apps/runner/dist/compile-claude-md.js +0 -291
- package/apps/runner/dist/compile-claude-md.js.map +0 -1
- package/apps/runner/dist/correction-handler.d.ts +0 -46
- package/apps/runner/dist/correction-handler.js +0 -162
- package/apps/runner/dist/correction-handler.js.map +0 -1
- package/apps/runner/dist/correction-manager.d.ts +0 -53
- package/apps/runner/dist/correction-manager.js +0 -241
- package/apps/runner/dist/correction-manager.js.map +0 -1
- package/apps/runner/dist/db.d.ts +0 -193
- package/apps/runner/dist/db.js +0 -492
- package/apps/runner/dist/db.js.map +0 -1
- package/apps/runner/dist/index.d.ts +0 -9
- package/apps/runner/dist/index.js +0 -43
- package/apps/runner/dist/index.js.map +0 -1
- package/apps/runner/dist/job-scheduler.d.ts +0 -57
- package/apps/runner/dist/job-scheduler.js +0 -150
- package/apps/runner/dist/job-scheduler.js.map +0 -1
- package/apps/runner/dist/logger.d.ts +0 -32
- package/apps/runner/dist/logger.js +0 -52
- package/apps/runner/dist/logger.js.map +0 -1
- package/apps/runner/dist/mcp-process-manager.d.ts +0 -38
- package/apps/runner/dist/mcp-process-manager.js +0 -189
- package/apps/runner/dist/mcp-process-manager.js.map +0 -1
- package/apps/runner/dist/memory-mcp.d.ts +0 -14
- package/apps/runner/dist/memory-mcp.js +0 -88
- package/apps/runner/dist/memory-mcp.js.map +0 -1
- package/apps/runner/dist/memory-watcher.d.ts +0 -78
- package/apps/runner/dist/memory-watcher.js +0 -220
- package/apps/runner/dist/memory-watcher.js.map +0 -1
- package/apps/runner/dist/slack-handler.d.ts +0 -120
- package/apps/runner/dist/slack-handler.js +0 -843
- package/apps/runner/dist/slack-handler.js.map +0 -1
- package/apps/runner/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
- package/apps/runner/package.json +0 -42
- package/apps/runner/src/__tests__/channel-restrictions.test.ts +0 -75
- package/apps/runner/src/__tests__/claude-handler-resolve.test.ts +0 -160
- package/apps/runner/src/__tests__/compile-claude-md.test.ts +0 -139
- package/apps/runner/src/__tests__/memory-sync.test.ts +0 -59
- package/apps/runner/src/__tests__/slack-file-support.test.ts +0 -376
- package/apps/runner/src/__tests__/slack-formatting.test.ts +0 -495
- package/apps/runner/src/__tests__/thread-context.test.ts +0 -215
- package/apps/runner/src/agent-runner.ts +0 -397
- package/apps/runner/src/claude-handler.ts +0 -475
- package/apps/runner/src/compile-claude-md.ts +0 -283
- package/apps/runner/src/correction-handler.ts +0 -191
- package/apps/runner/src/correction-manager.ts +0 -285
- package/apps/runner/src/db.ts +0 -604
- package/apps/runner/src/index.ts +0 -46
- package/apps/runner/src/job-scheduler.ts +0 -165
- package/apps/runner/src/logger.ts +0 -49
- package/apps/runner/src/mcp-process-manager.ts +0 -195
- package/apps/runner/src/memory-mcp.ts +0 -85
- package/apps/runner/src/memory-watcher.ts +0 -215
- package/apps/runner/src/slack-handler.ts +0 -929
- package/apps/runner/tsconfig.json +0 -17
- package/apps/runner/vitest.config.mts +0 -17
- package/apps/web/.eslintrc.json +0 -3
- package/apps/web/.next/app-build-manifest.json +0 -323
- package/apps/web/.next/app-path-routes-manifest.json +0 -46
- package/apps/web/.next/build-manifest.json +0 -33
- package/apps/web/.next/cache/.previewinfo +0 -1
- package/apps/web/.next/cache/.rscinfo +0 -1
- 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 +0 -6
- package/apps/web/.next/diagnostics/framework.json +0 -1
- package/apps/web/.next/package.json +0 -1
- package/apps/web/.next/react-loadable-manifest.json +0 -1
- package/apps/web/.next/server/app/_not-found/page.js +0 -2
- package/apps/web/.next/server/app/_not-found/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/agents/[slug]/page.js +0 -4
- package/apps/web/.next/server/app/agents/[slug]/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/agents/[slug]/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/agents/new/page.js +0 -2
- package/apps/web/.next/server/app/agents/new/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/agents/new/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/access/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/access/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/access/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/claude-md/route.js +0 -6
- package/apps/web/.next/server/app/api/agents/[id]/claude-md/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/claude-md/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/logs/route.js +0 -3
- package/apps/web/.next/server/app/api/agents/[id]/logs/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/logs/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/manifest/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/manifest/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/manifest/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/mcps/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/mcps/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/mcps/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/memories/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/memories/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/memories/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/permissions/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/permissions/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/permissions/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/reload/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/reload/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/reload/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/restrictions/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/restrictions/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/restrictions/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/route.js +0 -33
- package/apps/web/.next/server/app/api/agents/[id]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/skills/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/skills/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/slack-info/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/slack-info/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/slack-info/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/snapshots/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/start/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/start/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/start/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/stop/route.js +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/stop/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/[id]/stop/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/agents/route.js +0 -91
- package/apps/web/.next/server/app/api/agents/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/agents/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/auth/login/route.js +0 -1
- package/apps/web/.next/server/app/api/auth/login/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/auth/login/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/auth/logout/route.js +0 -1
- package/apps/web/.next/server/app/api/auth/logout/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/auth/logout/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/auth/me/route.js +0 -1
- package/apps/web/.next/server/app/api/auth/me/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/auth/me/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/auth/users/[id]/route.js +0 -1
- package/apps/web/.next/server/app/api/auth/users/[id]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/auth/users/[id]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/auth/users/route.js +0 -1
- package/apps/web/.next/server/app/api/auth/users/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/auth/users/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/env-vars/[key]/route.js +0 -1
- package/apps/web/.next/server/app/api/env-vars/[key]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/env-vars/[key]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/env-vars/route.js +0 -1
- package/apps/web/.next/server/app/api/env-vars/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/env-vars/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/jobs/[id]/route.js +0 -1
- package/apps/web/.next/server/app/api/jobs/[id]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/jobs/[id]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/jobs/[id]/runs/route.js +0 -1
- package/apps/web/.next/server/app/api/jobs/[id]/runs/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/jobs/[id]/runs/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/jobs/route.js +0 -1
- package/apps/web/.next/server/app/api/jobs/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/jobs/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/mcps/[id]/route.js +0 -1
- package/apps/web/.next/server/app/api/mcps/[id]/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/mcps/[id]/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/mcps/[id]/test/route.js +0 -1
- package/apps/web/.next/server/app/api/mcps/[id]/test/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/mcps/[id]/test/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/mcps/route.js +0 -1
- package/apps/web/.next/server/app/api/mcps/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/mcps/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/api/settings/route.js +0 -1
- package/apps/web/.next/server/app/api/settings/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/api/settings/route_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/icon.svg/route.js +0 -1
- package/apps/web/.next/server/app/icon.svg/route.js.nft.json +0 -1
- package/apps/web/.next/server/app/jobs/page.js +0 -2
- package/apps/web/.next/server/app/jobs/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/jobs/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/login/page.js +0 -2
- package/apps/web/.next/server/app/login/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/login/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/page.js +0 -2
- package/apps/web/.next/server/app/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/settings/env-vars/page.js +0 -2
- package/apps/web/.next/server/app/settings/env-vars/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/settings/env-vars/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/settings/mcps/page.js +0 -2
- package/apps/web/.next/server/app/settings/mcps/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/settings/mcps/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app/settings/page.js +0 -2
- package/apps/web/.next/server/app/settings/page.js.nft.json +0 -1
- package/apps/web/.next/server/app/settings/page_client-reference-manifest.js +0 -1
- package/apps/web/.next/server/app-paths-manifest.json +0 -46
- package/apps/web/.next/server/chunks/1157.js +0 -9
- package/apps/web/.next/server/chunks/2287.js +0 -1
- package/apps/web/.next/server/chunks/3444.js +0 -1
- package/apps/web/.next/server/chunks/383.js +0 -6
- package/apps/web/.next/server/chunks/4012.js +0 -58
- package/apps/web/.next/server/chunks/6791.js +0 -1
- package/apps/web/.next/server/chunks/7171.js +0 -1
- package/apps/web/.next/server/chunks/8819.js +0 -22
- package/apps/web/.next/server/edge-runtime-webpack.js +0 -2
- package/apps/web/.next/server/edge-runtime-webpack.js.map +0 -1
- package/apps/web/.next/server/interception-route-rewrite-manifest.js +0 -1
- package/apps/web/.next/server/middleware-build-manifest.js +0 -1
- package/apps/web/.next/server/middleware-manifest.json +0 -32
- package/apps/web/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/apps/web/.next/server/next-font-manifest.js +0 -1
- package/apps/web/.next/server/next-font-manifest.json +0 -1
- package/apps/web/.next/server/pages/_app.js +0 -1
- package/apps/web/.next/server/pages/_app.js.nft.json +0 -1
- package/apps/web/.next/server/pages/_document.js +0 -1
- package/apps/web/.next/server/pages/_document.js.nft.json +0 -1
- package/apps/web/.next/server/pages/_error.js +0 -19
- package/apps/web/.next/server/pages/_error.js.nft.json +0 -1
- package/apps/web/.next/server/pages-manifest.json +0 -5
- package/apps/web/.next/server/server-reference-manifest.js +0 -1
- package/apps/web/.next/server/server-reference-manifest.json +0 -1
- package/apps/web/.next/server/src/middleware.js +0 -14
- package/apps/web/.next/server/src/middleware.js.map +0 -1
- package/apps/web/.next/server/webpack-runtime.js +0 -1
- package/apps/web/.next/static/chunks/18-90b700ea37b686a2.js +0 -1
- package/apps/web/.next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
- package/apps/web/.next/static/chunks/9664-af80478aa73ba424.js +0 -1
- package/apps/web/.next/static/chunks/app/_not-found/page-b9cee17ed89ca24a.js +0 -1
- package/apps/web/.next/static/chunks/app/agents/[slug]/page-18369fc3fe1a9a7b.js +0 -1
- package/apps/web/.next/static/chunks/app/agents/new/page-bf11cf8901c7e2cd.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/access/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/claude-md/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/logs/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/manifest/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/mcps/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/memories/[memId]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/memories/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/permissions/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/reload/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/restrictions/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/skills/[skillId]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/skills/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/slack-info/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/[sid]/restore/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/[sid]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/start/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/[id]/stop/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/agents/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/auth/login/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/auth/logout/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/auth/me/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/auth/users/[id]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/auth/users/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/env-vars/[key]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/env-vars/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/jobs/[id]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/jobs/[id]/runs/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/jobs/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/mcps/[id]/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/mcps/[id]/test/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/mcps/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/api/settings/route-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/jobs/page-f5aa89a47c50efd8.js +0 -1
- package/apps/web/.next/static/chunks/app/layout-2079f4964aa7314e.js +0 -1
- package/apps/web/.next/static/chunks/app/login/layout-07f0f73ac9839899.js +0 -1
- package/apps/web/.next/static/chunks/app/login/page-aa259283dc38e8f9.js +0 -1
- package/apps/web/.next/static/chunks/app/page-e83437b608104dff.js +0 -1
- package/apps/web/.next/static/chunks/app/settings/env-vars/page-06479dbdfb78b76b.js +0 -1
- package/apps/web/.next/static/chunks/app/settings/mcps/page-75650686ed6490c7.js +0 -1
- package/apps/web/.next/static/chunks/app/settings/page-e1e62fc41ff6cddd.js +0 -1
- package/apps/web/.next/static/chunks/framework-811407f832a33072.js +0 -1
- package/apps/web/.next/static/chunks/main-3f1cddbdd67b1546.js +0 -1
- package/apps/web/.next/static/chunks/main-app-cebd8a6a5ccbf72d.js +0 -1
- package/apps/web/.next/static/chunks/pages/_app-50fa07b56b2d29ac.js +0 -1
- package/apps/web/.next/static/chunks/pages/_error-fed8688bdd23f211.js +0 -1
- package/apps/web/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/apps/web/.next/static/chunks/webpack-6c05566dba553c97.js +0 -1
- package/apps/web/.next/static/css/15371687405525e2.css +0 -5
- package/apps/web/.next/static/ikfNbLhuw7jntn35bz0lk/_buildManifest.js +0 -1
- package/apps/web/.next/static/ikfNbLhuw7jntn35bz0lk/_ssgManifest.js +0 -1
- package/apps/web/.next/trace +0 -5
- package/apps/web/.next/types/app/agents/[slug]/page.ts +0 -84
- package/apps/web/.next/types/app/agents/new/page.ts +0 -84
- package/apps/web/.next/types/app/api/agents/[id]/access/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/claude-md/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/logs/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/manifest/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/mcps/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/memories/[memId]/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/memories/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/permissions/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/reload/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/restrictions/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/skills/[skillId]/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/skills/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/slack-info/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/snapshots/[sid]/restore/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/snapshots/[sid]/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/snapshots/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/start/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/[id]/stop/route.ts +0 -347
- package/apps/web/.next/types/app/api/agents/route.ts +0 -347
- package/apps/web/.next/types/app/api/auth/login/route.ts +0 -347
- package/apps/web/.next/types/app/api/auth/logout/route.ts +0 -347
- package/apps/web/.next/types/app/api/auth/me/route.ts +0 -347
- package/apps/web/.next/types/app/api/auth/users/[id]/route.ts +0 -347
- package/apps/web/.next/types/app/api/auth/users/route.ts +0 -347
- package/apps/web/.next/types/app/api/env-vars/[key]/route.ts +0 -347
- package/apps/web/.next/types/app/api/env-vars/route.ts +0 -347
- package/apps/web/.next/types/app/api/jobs/[id]/route.ts +0 -347
- package/apps/web/.next/types/app/api/jobs/[id]/runs/route.ts +0 -347
- package/apps/web/.next/types/app/api/jobs/route.ts +0 -347
- package/apps/web/.next/types/app/api/mcps/[id]/route.ts +0 -347
- package/apps/web/.next/types/app/api/mcps/[id]/test/route.ts +0 -347
- package/apps/web/.next/types/app/api/mcps/route.ts +0 -347
- package/apps/web/.next/types/app/api/settings/route.ts +0 -347
- package/apps/web/.next/types/app/jobs/page.ts +0 -84
- package/apps/web/.next/types/app/login/layout.ts +0 -84
- package/apps/web/.next/types/app/login/page.ts +0 -84
- package/apps/web/.next/types/app/page.ts +0 -84
- package/apps/web/.next/types/app/settings/env-vars/page.ts +0 -84
- package/apps/web/.next/types/app/settings/mcps/page.ts +0 -84
- package/apps/web/.next/types/app/settings/page.ts +0 -84
- package/apps/web/.next/types/cache-life.d.ts +0 -141
- package/apps/web/.next/types/package.json +0 -1
- package/apps/web/.next/types/routes.d.ts +0 -114
- package/apps/web/.next/types/validator.ts +0 -448
- package/apps/web/Dockerfile +0 -37
- package/apps/web/next-env.d.ts +0 -6
- package/apps/web/next.config.js +0 -6
- package/apps/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
- package/apps/web/package.json +0 -48
- package/apps/web/postcss.config.js +0 -3
- package/apps/web/public/logo.svg +0 -17
- package/apps/web/src/app/agents/[slug]/page.tsx +0 -2235
- package/apps/web/src/app/agents/new/page.tsx +0 -1161
- package/apps/web/src/app/api/agents/[id]/access/route.ts +0 -76
- package/apps/web/src/app/api/agents/[id]/claude-md/route.ts +0 -111
- package/apps/web/src/app/api/agents/[id]/logs/route.ts +0 -84
- package/apps/web/src/app/api/agents/[id]/manifest/route.ts +0 -32
- package/apps/web/src/app/api/agents/[id]/mcps/route.ts +0 -73
- package/apps/web/src/app/api/agents/[id]/memories/[memId]/route.ts +0 -31
- package/apps/web/src/app/api/agents/[id]/memories/route.ts +0 -56
- package/apps/web/src/app/api/agents/[id]/permissions/route.ts +0 -74
- package/apps/web/src/app/api/agents/[id]/reload/route.ts +0 -33
- package/apps/web/src/app/api/agents/[id]/restrictions/route.ts +0 -85
- package/apps/web/src/app/api/agents/[id]/route.ts +0 -81
- package/apps/web/src/app/api/agents/[id]/skills/[skillId]/route.ts +0 -52
- package/apps/web/src/app/api/agents/[id]/skills/route.ts +0 -80
- package/apps/web/src/app/api/agents/[id]/slack-info/route.ts +0 -38
- package/apps/web/src/app/api/agents/[id]/snapshots/[sid]/restore/route.ts +0 -61
- package/apps/web/src/app/api/agents/[id]/snapshots/[sid]/route.ts +0 -53
- package/apps/web/src/app/api/agents/[id]/snapshots/route.ts +0 -84
- package/apps/web/src/app/api/agents/[id]/start/route.ts +0 -35
- package/apps/web/src/app/api/agents/[id]/stop/route.ts +0 -35
- package/apps/web/src/app/api/agents/route.ts +0 -99
- package/apps/web/src/app/api/auth/login/route.ts +0 -39
- package/apps/web/src/app/api/auth/logout/route.ts +0 -21
- package/apps/web/src/app/api/auth/me/route.ts +0 -24
- package/apps/web/src/app/api/auth/users/[id]/route.ts +0 -48
- package/apps/web/src/app/api/auth/users/route.ts +0 -63
- package/apps/web/src/app/api/env-vars/[key]/route.ts +0 -66
- package/apps/web/src/app/api/env-vars/route.ts +0 -59
- package/apps/web/src/app/api/jobs/[id]/route.ts +0 -51
- package/apps/web/src/app/api/jobs/[id]/runs/route.ts +0 -24
- package/apps/web/src/app/api/jobs/route.ts +0 -42
- package/apps/web/src/app/api/mcps/[id]/route.ts +0 -60
- package/apps/web/src/app/api/mcps/[id]/test/route.ts +0 -195
- package/apps/web/src/app/api/mcps/route.ts +0 -72
- package/apps/web/src/app/api/settings/route.ts +0 -42
- package/apps/web/src/app/globals.css +0 -124
- package/apps/web/src/app/icon.svg +0 -17
- package/apps/web/src/app/jobs/page.tsx +0 -543
- package/apps/web/src/app/layout-shell.tsx +0 -89
- package/apps/web/src/app/layout.tsx +0 -18
- package/apps/web/src/app/login/layout.tsx +0 -9
- package/apps/web/src/app/login/page.tsx +0 -150
- package/apps/web/src/app/page.tsx +0 -573
- package/apps/web/src/app/settings/env-vars/page.tsx +0 -216
- package/apps/web/src/app/settings/mcps/page.tsx +0 -763
- package/apps/web/src/app/settings/page.tsx +0 -528
- package/apps/web/src/app/sidebar.tsx +0 -345
- package/apps/web/src/lib/__tests__/api-guard.test.ts +0 -189
- package/apps/web/src/lib/__tests__/auth.test.ts +0 -262
- package/apps/web/src/lib/__tests__/boss-registry.test.ts +0 -323
- package/apps/web/src/lib/__tests__/compile.test.ts +0 -161
- package/apps/web/src/lib/__tests__/db-agent-hierarchy.test.ts +0 -136
- package/apps/web/src/lib/__tests__/db-env-vars.test.ts +0 -216
- package/apps/web/src/lib/__tests__/db-restrictions.test.ts +0 -117
- package/apps/web/src/lib/__tests__/db.integration.test.ts +0 -271
- package/apps/web/src/lib/__tests__/diff.test.ts +0 -102
- package/apps/web/src/lib/__tests__/mcp-mask.test.ts +0 -274
- package/apps/web/src/lib/__tests__/skill-templates.test.ts +0 -237
- package/apps/web/src/lib/__tests__/slack-manifest.test.ts +0 -105
- package/apps/web/src/lib/api-guard.ts +0 -68
- package/apps/web/src/lib/auth-context.tsx +0 -71
- package/apps/web/src/lib/auth.ts +0 -128
- package/apps/web/src/lib/boss-registry.ts +0 -90
- package/apps/web/src/lib/compile.ts +0 -51
- package/apps/web/src/lib/db.ts +0 -1196
- package/apps/web/src/lib/diff.ts +0 -43
- package/apps/web/src/lib/mcp-mask.ts +0 -91
- package/apps/web/src/lib/portal.tsx +0 -23
- package/apps/web/src/lib/skill-templates.ts +0 -148
- package/apps/web/src/lib/slack-manifest.ts +0 -85
- package/apps/web/src/middleware.ts +0 -68
- package/apps/web/tailwind.config.js +0 -6
- package/apps/web/tsconfig.json +0 -23
- package/apps/web/vitest.config.mts +0 -21
- package/cli/.claude/settings.local.json +0 -6
- package/cli/node_modules/.package-lock.json +0 -427
- package/cli/node_modules/commander/LICENSE +0 -22
- package/cli/node_modules/commander/Readme.md +0 -1157
- package/cli/node_modules/commander/esm.mjs +0 -16
- package/cli/node_modules/commander/index.js +0 -24
- package/cli/node_modules/commander/lib/argument.js +0 -149
- package/cli/node_modules/commander/lib/command.js +0 -2509
- package/cli/node_modules/commander/lib/error.js +0 -39
- package/cli/node_modules/commander/lib/help.js +0 -520
- package/cli/node_modules/commander/lib/option.js +0 -330
- package/cli/node_modules/commander/lib/suggestSimilar.js +0 -101
- package/cli/node_modules/commander/package-support.json +0 -16
- package/cli/node_modules/commander/package.json +0 -84
- package/cli/node_modules/commander/typings/esm.d.mts +0 -3
- package/cli/node_modules/commander/typings/index.d.ts +0 -969
- package/cli/package-lock.json +0 -449
- package/cli/package.json +0 -44
- package/cli/src/commands/init.ts +0 -514
- package/cli/src/commands/manage.ts +0 -115
- package/cli/src/index.ts +0 -63
- package/cli/tsconfig.json +0 -14
- package/docker-compose.yml +0 -122
- package/docs/agents/boss-agents.mdx +0 -108
- package/docs/agents/creating-agents.mdx +0 -132
- package/docs/agents/memory.mdx +0 -113
- package/docs/agents/tools.mdx +0 -103
- package/docs/configuration/env-vars.mdx +0 -166
- package/docs/configuration/mcp-servers.mdx +0 -203
- package/docs/configuration/slack-app.mdx +0 -175
- package/docs/docs.json +0 -79
- package/docs/favicon.svg +0 -17
- package/docs/features/history.mdx +0 -60
- package/docs/features/import-export.mdx +0 -77
- package/docs/features/logs.mdx +0 -131
- package/docs/features/multi-workspace.mdx +0 -90
- package/docs/features/scheduled-jobs.mdx +0 -231
- package/docs/features/users.mdx +0 -92
- package/docs/introduction.mdx +0 -160
- package/docs/logo/dark.svg +0 -17
- package/docs/logo/light.svg +0 -17
- package/docs/logo/wide-dark.svg +0 -12
- package/docs/logo/wide-light.svg +0 -12
- package/docs/quickstart.mdx +0 -270
- package/docs/self-hosting/docker.mdx +0 -151
- package/docs/self-hosting/production.mdx +0 -176
- package/packages/shared/dist/index.d.ts +0 -8
- package/packages/shared/dist/index.d.ts.map +0 -1
- package/packages/shared/dist/index.js +0 -24
- package/packages/shared/dist/index.js.map +0 -1
- package/packages/shared/dist/types.d.ts +0 -584
- package/packages/shared/dist/types.d.ts.map +0 -1
- package/packages/shared/dist/types.js +0 -39
- package/packages/shared/dist/types.js.map +0 -1
- package/packages/shared/package.json +0 -15
- package/packages/shared/src/db/schema.sql +0 -354
- package/packages/shared/src/index.ts +0 -8
- package/packages/shared/src/types.ts +0 -683
- package/packages/shared/tsconfig.json +0 -17
- package/scripts/dev.sh +0 -45
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview Claude Code SDK session manager for a single agent.
|
|
4
|
-
*
|
|
5
|
-
* Each agent has ONE ClaudeHandler shared across all Slack conversations.
|
|
6
|
-
* Each Slack thread gets its own isolated working directory so Claude's
|
|
7
|
-
* memory files (written to .claude/memory/ inside cwd) are per-thread.
|
|
8
|
-
*
|
|
9
|
-
* Directory layout:
|
|
10
|
-
* /tmp/agents/{slug}/ ← agent root (CLAUDE.md lives here)
|
|
11
|
-
* /tmp/agents/{slug}/sessions/{key}/ ← per-thread cwd
|
|
12
|
-
* CLAUDE.md ← copy of agent CLAUDE.md (skills)
|
|
13
|
-
* .claude/memory/ ← per-thread memory files
|
|
14
|
-
*
|
|
15
|
-
* @module runner/claude-handler
|
|
16
|
-
*/
|
|
17
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
-
}
|
|
23
|
-
Object.defineProperty(o, k2, desc);
|
|
24
|
-
}) : (function(o, m, k, k2) {
|
|
25
|
-
if (k2 === undefined) k2 = k;
|
|
26
|
-
o[k2] = m[k];
|
|
27
|
-
}));
|
|
28
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
-
}) : function(o, v) {
|
|
31
|
-
o["default"] = v;
|
|
32
|
-
});
|
|
33
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
-
var ownKeys = function(o) {
|
|
35
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
-
var ar = [];
|
|
37
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
return ownKeys(o);
|
|
41
|
-
};
|
|
42
|
-
return function (mod) {
|
|
43
|
-
if (mod && mod.__esModule) return mod;
|
|
44
|
-
var result = {};
|
|
45
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
-
__setModuleDefault(result, mod);
|
|
47
|
-
return result;
|
|
48
|
-
};
|
|
49
|
-
})();
|
|
50
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.ClaudeHandler = void 0;
|
|
52
|
-
const fs = __importStar(require("fs"));
|
|
53
|
-
const path = __importStar(require("path"));
|
|
54
|
-
const crypto = __importStar(require("crypto"));
|
|
55
|
-
const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
|
|
56
|
-
const db_1 = require("./db");
|
|
57
|
-
const logger_1 = require("./logger");
|
|
58
|
-
const mcp_process_manager_js_1 = require("./mcp-process-manager.js");
|
|
59
|
-
const SESSION_MAX_AGE_MS = 30 * 60 * 1_000;
|
|
60
|
-
const SESSION_CLEANUP_INTERVAL_MS = 10 * 60 * 1_000;
|
|
61
|
-
class ClaudeHandler {
|
|
62
|
-
agent;
|
|
63
|
-
mcpServers;
|
|
64
|
-
permissions;
|
|
65
|
-
workDir;
|
|
66
|
-
sessionsDir;
|
|
67
|
-
log;
|
|
68
|
-
envVarValues;
|
|
69
|
-
mcpManager;
|
|
70
|
-
/** In-memory cache: sessionKey → Claude session ID */
|
|
71
|
-
sessionCache = new Map();
|
|
72
|
-
cleanupTimer = null;
|
|
73
|
-
/**
|
|
74
|
-
* @param {Agent} agent - The agent configuration record.
|
|
75
|
-
* @param {McpServer[]} mcpServers - MCP servers assigned to this agent.
|
|
76
|
-
* @param {Permission | null} permissions - Tool allow/deny lists, or null for defaults.
|
|
77
|
-
* @param {string} workDir - Root working directory for this agent (e.g. `/tmp/agents/{slug}`).
|
|
78
|
-
* @param {Record<string, string>} envVarValues - Platform env vars for resolving MCP envRefs.
|
|
79
|
-
*/
|
|
80
|
-
constructor(agent, mcpServers, permissions, workDir, envVarValues = {}) {
|
|
81
|
-
this.agent = agent;
|
|
82
|
-
this.mcpServers = mcpServers;
|
|
83
|
-
this.permissions = permissions;
|
|
84
|
-
this.workDir = workDir;
|
|
85
|
-
this.sessionsDir = path.join(workDir, 'sessions');
|
|
86
|
-
this.log = (0, logger_1.agentLogger)(agent.slug);
|
|
87
|
-
this.envVarValues = envVarValues;
|
|
88
|
-
// Allocate a stable port range per agent (14000 + slot * 50)
|
|
89
|
-
const slugHash = agent.slug.split('').reduce((acc, c) => acc + c.charCodeAt(0), 0);
|
|
90
|
-
const basePort = 14000 + (slugHash % 200) * 50;
|
|
91
|
-
this.mcpManager = new mcp_process_manager_js_1.McpProcessManager(agent.slug, workDir, basePort);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Sets up the sessions directory and starts the periodic stale-session cleanup timer.
|
|
95
|
-
* Must be called once before any `streamQuery` calls.
|
|
96
|
-
*
|
|
97
|
-
* @returns {void}
|
|
98
|
-
*/
|
|
99
|
-
initialize() {
|
|
100
|
-
fs.mkdirSync(this.sessionsDir, { recursive: true });
|
|
101
|
-
this.cleanupTimer = setInterval(() => this.runSessionCleanup(), SESSION_CLEANUP_INTERVAL_MS);
|
|
102
|
-
this.log.debug('ClaudeHandler initialized', { workDir: this.workDir, sessionsDir: this.sessionsDir });
|
|
103
|
-
// Start persistent MCP proxies for all stdio servers
|
|
104
|
-
this.startMcpProxies().catch((err) => this.log.error('Failed to start MCP proxies', { error: err.message }));
|
|
105
|
-
}
|
|
106
|
-
async startMcpProxies() {
|
|
107
|
-
const stdioServers = this.mcpServers.filter((s) => s.type === 'stdio' || (!('url' in s.config) && ('command' in s.config)));
|
|
108
|
-
await Promise.all(stdioServers.map((s) => this.mcpManager
|
|
109
|
-
.startServer(s.name, s.config, this.envVarValues)
|
|
110
|
-
.catch((err) => this.log.error('MCP proxy start failed', { server: s.name, error: err.message }))));
|
|
111
|
-
this.log.info('Agent started', {
|
|
112
|
-
mcpServers: this.mcpServers.map((s) => s.name),
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Stops the cleanup timer and clears the in-memory session cache.
|
|
117
|
-
* Called when the agent is stopped or reloaded.
|
|
118
|
-
*
|
|
119
|
-
* @returns {void}
|
|
120
|
-
*/
|
|
121
|
-
destroy() {
|
|
122
|
-
if (this.cleanupTimer) {
|
|
123
|
-
clearInterval(this.cleanupTimer);
|
|
124
|
-
this.cleanupTimer = null;
|
|
125
|
-
}
|
|
126
|
-
this.sessionCache.clear();
|
|
127
|
-
this.mcpManager.stopAll().catch(() => { });
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Derives a deterministic session key from Slack identifiers.
|
|
131
|
-
* The key is used as both a DB lookup key and a working-directory name.
|
|
132
|
-
*
|
|
133
|
-
* @param {string} userId - Slack user ID (e.g. `U12345678`).
|
|
134
|
-
* @param {string} channelId - Slack channel or DM ID.
|
|
135
|
-
* @param {string} [threadTs] - Thread timestamp; omit for top-level DMs.
|
|
136
|
-
* @returns {string} Composite key: `{userId}-{channelId}-{threadTs|'direct'}`.
|
|
137
|
-
*/
|
|
138
|
-
getSessionKey(userId, channelId, threadTs) {
|
|
139
|
-
return `${userId}-${channelId}-${threadTs ?? 'direct'}`;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Returns the isolated working directory for a session.
|
|
143
|
-
* Creates it on first access and copies CLAUDE.md from the agent root.
|
|
144
|
-
*/
|
|
145
|
-
getSessionWorkDir(sessionKey) {
|
|
146
|
-
// Sanitize key for use as a directory name
|
|
147
|
-
const safeName = sessionKey.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
148
|
-
const sessionDir = path.join(this.sessionsDir, safeName);
|
|
149
|
-
if (!fs.existsSync(sessionDir)) {
|
|
150
|
-
fs.mkdirSync(sessionDir, { recursive: true });
|
|
151
|
-
// Copy CLAUDE.md into the session dir so the SDK reads it as project instructions
|
|
152
|
-
const agentClaudeMd = path.join(this.workDir, 'CLAUDE.md');
|
|
153
|
-
if (fs.existsSync(agentClaudeMd)) {
|
|
154
|
-
fs.copyFileSync(agentClaudeMd, path.join(sessionDir, 'CLAUDE.md'));
|
|
155
|
-
}
|
|
156
|
-
// Copy .claude/commands/ (skill slash commands) into the session dir
|
|
157
|
-
const agentCommandsDir = path.join(this.workDir, '.claude', 'commands');
|
|
158
|
-
if (fs.existsSync(agentCommandsDir)) {
|
|
159
|
-
const sessionCommandsDir = path.join(sessionDir, '.claude', 'commands');
|
|
160
|
-
fs.mkdirSync(sessionCommandsDir, { recursive: true });
|
|
161
|
-
for (const file of fs.readdirSync(agentCommandsDir)) {
|
|
162
|
-
fs.copyFileSync(path.join(agentCommandsDir, file), path.join(sessionCommandsDir, file));
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
// Create memory dir for per-thread memory files (outside .claude/ to avoid SDK sensitive-file blocking)
|
|
166
|
-
fs.mkdirSync(path.join(sessionDir, 'memory'), { recursive: true });
|
|
167
|
-
this.log.debug('Session work dir created', { sessionKey, sessionDir });
|
|
168
|
-
}
|
|
169
|
-
return sessionDir;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Streams a Claude Code SDK query for the given session and yields raw SDK messages.
|
|
173
|
-
*
|
|
174
|
-
* Session resumption: If a Claude session ID exists for this `sessionKey` (in-memory
|
|
175
|
-
* cache or persisted in DB), the query resumes that conversation. On a stale-session
|
|
176
|
-
* error the handler transparently retries once as a fresh session.
|
|
177
|
-
*
|
|
178
|
-
* Callers should check `abortController.signal.aborted` between yields and break early
|
|
179
|
-
* if the user has sent a new message (the Slack handler cancels in-flight requests this way).
|
|
180
|
-
*
|
|
181
|
-
* @param {string} prompt - The user message to send to Claude.
|
|
182
|
-
* @param {string} sessionKey - Session key from {@link getSessionKey}.
|
|
183
|
-
* @param {AbortController} [abortController] - Optional controller to cancel the stream.
|
|
184
|
-
* @yields {SDKMessage} Raw messages from the Claude Code SDK.
|
|
185
|
-
* @throws {Error} On unrecoverable SDK errors (re-thrown after logging).
|
|
186
|
-
*/
|
|
187
|
-
async *streamQuery(prompt, sessionKey, abortController) {
|
|
188
|
-
// Compute current MCP hash to detect config changes
|
|
189
|
-
const currentMcpHash = crypto
|
|
190
|
-
.createHash('sha1')
|
|
191
|
-
.update(JSON.stringify(this.mcpServers.map((s) => ({ name: s.name, config: s.config }))))
|
|
192
|
-
.digest('hex');
|
|
193
|
-
// Resolve existing Claude session ID — invalidate if MCPs changed
|
|
194
|
-
let claudeSessionId = this.sessionCache.get(sessionKey);
|
|
195
|
-
if (!claudeSessionId) {
|
|
196
|
-
const persisted = await (0, db_1.getSession)(this.agent.id, sessionKey);
|
|
197
|
-
if (persisted?.claudeSessionId) {
|
|
198
|
-
if (persisted.mcpHash && persisted.mcpHash !== currentMcpHash) {
|
|
199
|
-
this.log.info('MCP config changed, starting fresh session', { sessionKey });
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
claudeSessionId = persisted.claudeSessionId;
|
|
203
|
-
this.sessionCache.set(sessionKey, claudeSessionId);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
const sessionWorkDir = this.getSessionWorkDir(sessionKey);
|
|
208
|
-
const options = this.buildSdkOptions(sessionWorkDir, claudeSessionId, abortController);
|
|
209
|
-
this.log.debug('Streaming query', {
|
|
210
|
-
sessionKey,
|
|
211
|
-
resume: claudeSessionId ? 'yes' : 'new',
|
|
212
|
-
cwd: sessionWorkDir,
|
|
213
|
-
mcpServers: this.mcpServers.map((m) => m.name),
|
|
214
|
-
});
|
|
215
|
-
let newSessionId;
|
|
216
|
-
// Wrap array content into an AsyncIterable<SDKUserMessage> for multimodal prompts
|
|
217
|
-
const sdkPrompt = Array.isArray(prompt)
|
|
218
|
-
? (async function* () {
|
|
219
|
-
yield {
|
|
220
|
-
type: 'user',
|
|
221
|
-
message: { role: 'user', content: prompt },
|
|
222
|
-
parent_tool_use_id: null,
|
|
223
|
-
};
|
|
224
|
-
})()
|
|
225
|
-
: prompt;
|
|
226
|
-
// Stream directly for real-time progressive updates.
|
|
227
|
-
// If the session is stale, we catch the error before any messages are yielded
|
|
228
|
-
// and transparently retry as a fresh session.
|
|
229
|
-
const stream = async function* (opts) {
|
|
230
|
-
yield* (0, claude_agent_sdk_1.query)({ prompt: sdkPrompt, options: opts });
|
|
231
|
-
};
|
|
232
|
-
let activeOptions = options;
|
|
233
|
-
let retried = false;
|
|
234
|
-
outer: while (true) {
|
|
235
|
-
try {
|
|
236
|
-
for await (const message of stream(activeOptions)) {
|
|
237
|
-
if (message.type === 'system' && message.subtype === 'init') {
|
|
238
|
-
newSessionId = message.session_id;
|
|
239
|
-
if (newSessionId) {
|
|
240
|
-
this.sessionCache.set(sessionKey, newSessionId);
|
|
241
|
-
await (0, db_1.upsertSession)(this.agent.id, sessionKey, newSessionId, currentMcpHash);
|
|
242
|
-
this.log.debug('Session created', { sessionKey, sessionId: newSessionId, cwd: sessionWorkDir });
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
yield message;
|
|
246
|
-
}
|
|
247
|
-
break; // completed successfully
|
|
248
|
-
}
|
|
249
|
-
catch (err) {
|
|
250
|
-
const errMsg = err instanceof Error ? err.message : String(err);
|
|
251
|
-
// Retry once on stale session — only if we haven't already retried
|
|
252
|
-
if (!retried && claudeSessionId && (errMsg.includes('No conversation found') || errMsg.includes('session') || errMsg.includes('exited with code 1'))) {
|
|
253
|
-
this.log.warn('Stale session, retrying as new', { sessionKey, staleSessionId: claudeSessionId });
|
|
254
|
-
this.sessionCache.delete(sessionKey);
|
|
255
|
-
claudeSessionId = undefined;
|
|
256
|
-
newSessionId = undefined;
|
|
257
|
-
const freshOptions = { ...activeOptions };
|
|
258
|
-
delete freshOptions.resume;
|
|
259
|
-
activeOptions = freshOptions;
|
|
260
|
-
retried = true;
|
|
261
|
-
continue outer;
|
|
262
|
-
}
|
|
263
|
-
this.log.error('Claude query failed', { sessionKey, error: errMsg });
|
|
264
|
-
throw err;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
await (0, db_1.upsertSession)(this.agent.id, sessionKey, newSessionId ?? claudeSessionId, currentMcpHash);
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Resolves a raw MCP server config from the DB into one ready for the SDK:
|
|
271
|
-
* - Merges envRefs (references to platform env vars) into the env object
|
|
272
|
-
* - For inline TypeScript MCPs (tsSource): writes the source to disk and
|
|
273
|
-
* rewrites config to use `tsx <scriptPath>`
|
|
274
|
-
*
|
|
275
|
-
* @param {string} serverName - MCP server name, used for the script filename.
|
|
276
|
-
* @param {McpServerConfig} config - Raw config from the DB.
|
|
277
|
-
* @returns {McpServerConfig} Resolved config safe to pass to the SDK.
|
|
278
|
-
*/
|
|
279
|
-
resolveServerConfig(serverName, config, serverType) {
|
|
280
|
-
const c = config;
|
|
281
|
-
if (c.tsSource) {
|
|
282
|
-
const scriptDir = path.join(this.workDir, '.mcp-scripts');
|
|
283
|
-
const scriptPath = path.join(scriptDir, `${serverName}.ts`);
|
|
284
|
-
fs.mkdirSync(scriptDir, { recursive: true });
|
|
285
|
-
fs.writeFileSync(scriptPath, c.tsSource, 'utf8');
|
|
286
|
-
const resolvedEnv = this.resolveEnvRefs(c);
|
|
287
|
-
return {
|
|
288
|
-
command: '/app/node_modules/.bin/tsx',
|
|
289
|
-
args: [scriptPath],
|
|
290
|
-
env: { NODE_PATH: '/app/node_modules', ...resolvedEnv },
|
|
291
|
-
};
|
|
292
|
-
}
|
|
293
|
-
if (c.envRefs && Object.keys(c.envRefs).length > 0) {
|
|
294
|
-
const resolvedEnv = this.resolveEnvRefs(c);
|
|
295
|
-
const { envRefs: _, tsSource: __, ...rest } = c;
|
|
296
|
-
const resolved = { ...rest };
|
|
297
|
-
// Inject type so the SDK can distinguish HTTP/SSE from stdio
|
|
298
|
-
if (serverType === 'http' || serverType === 'sse')
|
|
299
|
-
resolved.type = serverType;
|
|
300
|
-
// For HTTP/SSE servers, resolve envRefs into headers
|
|
301
|
-
if (resolved.headers && typeof resolved.headers === 'object') {
|
|
302
|
-
const resolvedHeaders = {};
|
|
303
|
-
for (const [key, value] of Object.entries(resolved.headers)) {
|
|
304
|
-
const envKey = c.envRefs[key];
|
|
305
|
-
if (envKey && this.envVarValues[envKey]) {
|
|
306
|
-
resolvedHeaders[key] = value ? `${value}${this.envVarValues[envKey]}` : this.envVarValues[envKey];
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
resolvedHeaders[key] = value;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
resolved.headers = resolvedHeaders;
|
|
313
|
-
}
|
|
314
|
-
if (Object.keys(resolvedEnv).length > 0)
|
|
315
|
-
resolved.env = resolvedEnv;
|
|
316
|
-
return resolved;
|
|
317
|
-
}
|
|
318
|
-
// Passthrough — inject type for HTTP/SSE so SDK recognises the transport
|
|
319
|
-
if (serverType === 'http' || serverType === 'sse') {
|
|
320
|
-
return { ...config, type: serverType };
|
|
321
|
-
}
|
|
322
|
-
return config;
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Merges inline env with resolved envRefs into a single env object.
|
|
326
|
-
*/
|
|
327
|
-
resolveEnvRefs(c) {
|
|
328
|
-
const merged = { ...(c.env ?? {}) };
|
|
329
|
-
const refs = (c.envRefs ?? {});
|
|
330
|
-
for (const [subKey, storeKey] of Object.entries(refs)) {
|
|
331
|
-
const val = this.envVarValues[storeKey];
|
|
332
|
-
if (val !== undefined) {
|
|
333
|
-
merged[subKey] = val;
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
this.log.warn('MCP envRef not found in env vars store', { serverName: 'unknown', storeKey, subKey });
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
return merged;
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Builds the options object passed to the Claude Code SDK `query()` call.
|
|
343
|
-
*
|
|
344
|
-
* Merges agent permissions (allowed/denied tools) with MCP server prefixes
|
|
345
|
-
* so that only explicitly permitted tools are available to the agent.
|
|
346
|
-
* Default allowed tool is `['Read']` when no permissions are configured.
|
|
347
|
-
*
|
|
348
|
-
* @param {string} sessionWorkDir - Per-session working directory path.
|
|
349
|
-
* @param {string | undefined} claudeSessionId - Existing session ID to resume, or undefined for a new session.
|
|
350
|
-
* @param {AbortController} [abortController] - Optional abort controller injected into SDK options.
|
|
351
|
-
* @returns {Record<string, unknown>} Options object for `query({ prompt, options })`.
|
|
352
|
-
*/
|
|
353
|
-
buildSdkOptions(sessionWorkDir, claudeSessionId, abortController) {
|
|
354
|
-
const options = {
|
|
355
|
-
permissionMode: 'acceptEdits',
|
|
356
|
-
settingSources: ['project'],
|
|
357
|
-
cwd: sessionWorkDir,
|
|
358
|
-
abortController: abortController ?? new AbortController(),
|
|
359
|
-
};
|
|
360
|
-
const baseAllowed = this.permissions?.allowedTools?.length
|
|
361
|
-
? this.permissions.allowedTools
|
|
362
|
-
: [];
|
|
363
|
-
const denied = this.permissions?.deniedTools ?? [];
|
|
364
|
-
const mcpToolPrefixes = this.mcpServers.map((s) => `mcp__${s.name}`);
|
|
365
|
-
// Read and Write are always available — Read for reading memory/skill files, Write for saving memories.
|
|
366
|
-
// These cannot be overridden by agent permissions.
|
|
367
|
-
const alwaysAllowed = ['Read', 'Write'];
|
|
368
|
-
const availableTools = [...new Set([...alwaysAllowed, ...baseAllowed, ...mcpToolPrefixes])].filter((tool) => !denied.includes(tool));
|
|
369
|
-
// `tools` controls which tools the model can see/use; `allowedTools` controls auto-execution.
|
|
370
|
-
options.tools = availableTools;
|
|
371
|
-
options.allowedTools = availableTools;
|
|
372
|
-
if (this.mcpServers.length > 0) {
|
|
373
|
-
options.mcpServers = Object.fromEntries(this.mcpServers.map((server) => [server.name, this.resolveServerConfig(server.name, server.config, server.type)]));
|
|
374
|
-
this.log.debug('MCP servers configured', { servers: this.mcpServers.map((s) => s.name) });
|
|
375
|
-
}
|
|
376
|
-
if (claudeSessionId) {
|
|
377
|
-
options.resume = claudeSessionId;
|
|
378
|
-
}
|
|
379
|
-
return options;
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Deletes sessions inactive longer than SESSION_MAX_AGE_MS from the DB
|
|
383
|
-
* and clears the in-memory cache so stale IDs are not accidentally reused.
|
|
384
|
-
* Runs on an interval set in {@link initialize}; failures are logged and swallowed.
|
|
385
|
-
*
|
|
386
|
-
* @returns {Promise<void>}
|
|
387
|
-
*/
|
|
388
|
-
async runSessionCleanup() {
|
|
389
|
-
try {
|
|
390
|
-
const deleted = await (0, db_1.cleanupStaleSessions)(this.agent.id, SESSION_MAX_AGE_MS);
|
|
391
|
-
if (deleted > 0) {
|
|
392
|
-
this.log.info('Cleaned up stale sessions', { count: deleted });
|
|
393
|
-
this.sessionCache.clear();
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
catch (error) {
|
|
397
|
-
this.log.warn('Session cleanup failed', { error });
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
exports.ClaudeHandler = ClaudeHandler;
|
|
402
|
-
//# sourceMappingURL=claude-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-handler.js","sourceRoot":"","sources":["../src/claude-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Agent workspace compiler for the runner service.
|
|
3
|
-
*
|
|
4
|
-
* Writes two things to the agent's temporary working directory:
|
|
5
|
-
*
|
|
6
|
-
* 1. CLAUDE.md — the agent's main instruction/identity file.
|
|
7
|
-
* Source: agents.claude_md column (or auto-generated for boss agents).
|
|
8
|
-
* Memories are appended at the end.
|
|
9
|
-
*
|
|
10
|
-
* 2. .claude/commands/{filename} — Claude Code slash commands.
|
|
11
|
-
* Source: skills table rows for this agent.
|
|
12
|
-
* Each skill becomes an invokable /<filename> command.
|
|
13
|
-
*
|
|
14
|
-
* Directory layout:
|
|
15
|
-
* /tmp/agents/{slug}/
|
|
16
|
-
* CLAUDE.md ← identity + memories
|
|
17
|
-
* .claude/
|
|
18
|
-
* commands/
|
|
19
|
-
* {filename}.md ← one file per skill
|
|
20
|
-
* memory/
|
|
21
|
-
* {type}_{name}.md ← materialized memory files
|
|
22
|
-
*
|
|
23
|
-
* @module runner/compile-claude-md
|
|
24
|
-
*/
|
|
25
|
-
import type { Agent, Memory } from '@slackhive/shared';
|
|
26
|
-
/**
|
|
27
|
-
* Returns the temporary working directory path for an agent.
|
|
28
|
-
*
|
|
29
|
-
* @param {string} slug - Agent slug (e.g., "gilfoyle").
|
|
30
|
-
* @returns {string} Absolute path to the agent's temp workspace.
|
|
31
|
-
*/
|
|
32
|
-
export declare function getAgentWorkDir(slug: string): string;
|
|
33
|
-
/**
|
|
34
|
-
* Returns the path to the CLAUDE.md file for an agent.
|
|
35
|
-
*
|
|
36
|
-
* @param {string} slug - Agent slug.
|
|
37
|
-
* @returns {string} Absolute path to CLAUDE.md.
|
|
38
|
-
*/
|
|
39
|
-
export declare function getClaudeMdPath(slug: string): string;
|
|
40
|
-
/**
|
|
41
|
-
* Compiles the agent workspace: writes CLAUDE.md and skill command files.
|
|
42
|
-
*
|
|
43
|
-
* - CLAUDE.md = agent.claudeMd (identity/instructions) + memory system + memories
|
|
44
|
-
* - .claude/commands/{filename}.md = one file per skill (Claude Code slash commands)
|
|
45
|
-
*
|
|
46
|
-
* For boss agents, CLAUDE.md is auto-generated from the team registry instead of
|
|
47
|
-
* agent.claudeMd (the boss-registry.ts module sets this before calling compileClaudeMd).
|
|
48
|
-
*
|
|
49
|
-
* @param {Agent} agent - The agent to compile for.
|
|
50
|
-
* @param {string} [overrideClaudeMd] - Optional override for CLAUDE.md content (used by boss registry).
|
|
51
|
-
* @returns {Promise<string>} The path to the agent's working directory (pass as cwd to SDK).
|
|
52
|
-
* @throws {Error} If writing to the filesystem fails.
|
|
53
|
-
*/
|
|
54
|
-
export declare function compileClaudeMd(agent: Agent, overrideClaudeMd?: string): Promise<string>;
|
|
55
|
-
/**
|
|
56
|
-
* Materializes memory files from the database to the agent's temp workspace.
|
|
57
|
-
* These files are read by the /recall skill when the agent needs past context.
|
|
58
|
-
*/
|
|
59
|
-
export declare function materializeMemoryFiles(agent: Agent, memories: Memory[]): void;
|