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.
Files changed (534) hide show
  1. package/cli/dist/index.js +15786 -52
  2. package/package.json +9 -3
  3. package/.dockerignore +0 -14
  4. package/.env.example +0 -44
  5. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -65
  6. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  7. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -38
  8. package/.github/PULL_REQUEST_TEMPLATE.md +0 -27
  9. package/.github/dependabot.yml +0 -20
  10. package/.github/workflows/audit.yml +0 -149
  11. package/.github/workflows/ci.yml +0 -135
  12. package/CHANGELOG.md +0 -52
  13. package/CODE_OF_CONDUCT.md +0 -37
  14. package/CONTRIBUTING.md +0 -204
  15. package/SECURITY.md +0 -47
  16. package/apps/runner/Dockerfile +0 -33
  17. package/apps/runner/dist/__tests__/channel-restrictions.test.d.ts +0 -8
  18. package/apps/runner/dist/__tests__/channel-restrictions.test.js +0 -63
  19. package/apps/runner/dist/__tests__/channel-restrictions.test.js.map +0 -1
  20. package/apps/runner/dist/__tests__/claude-handler-resolve.test.d.ts +0 -20
  21. package/apps/runner/dist/__tests__/claude-handler-resolve.test.js +0 -178
  22. package/apps/runner/dist/__tests__/claude-handler-resolve.test.js.map +0 -1
  23. package/apps/runner/dist/__tests__/compile-claude-md.test.d.ts +0 -13
  24. package/apps/runner/dist/__tests__/compile-claude-md.test.js +0 -144
  25. package/apps/runner/dist/__tests__/compile-claude-md.test.js.map +0 -1
  26. package/apps/runner/dist/__tests__/memory-sync.test.d.ts +0 -11
  27. package/apps/runner/dist/__tests__/memory-sync.test.js +0 -56
  28. package/apps/runner/dist/__tests__/memory-sync.test.js.map +0 -1
  29. package/apps/runner/dist/__tests__/slack-file-support.test.d.ts +0 -9
  30. package/apps/runner/dist/__tests__/slack-file-support.test.js +0 -271
  31. package/apps/runner/dist/__tests__/slack-file-support.test.js.map +0 -1
  32. package/apps/runner/dist/__tests__/slack-formatting.test.d.ts +0 -12
  33. package/apps/runner/dist/__tests__/slack-formatting.test.js +0 -400
  34. package/apps/runner/dist/__tests__/slack-formatting.test.js.map +0 -1
  35. package/apps/runner/dist/__tests__/thread-context.test.d.ts +0 -12
  36. package/apps/runner/dist/__tests__/thread-context.test.js +0 -182
  37. package/apps/runner/dist/__tests__/thread-context.test.js.map +0 -1
  38. package/apps/runner/dist/agent-runner.d.ts +0 -118
  39. package/apps/runner/dist/agent-runner.js +0 -352
  40. package/apps/runner/dist/agent-runner.js.map +0 -1
  41. package/apps/runner/dist/claude-handler.d.ts +0 -122
  42. package/apps/runner/dist/claude-handler.js +0 -402
  43. package/apps/runner/dist/claude-handler.js.map +0 -1
  44. package/apps/runner/dist/compile-claude-md.d.ts +0 -59
  45. package/apps/runner/dist/compile-claude-md.js +0 -291
  46. package/apps/runner/dist/compile-claude-md.js.map +0 -1
  47. package/apps/runner/dist/correction-handler.d.ts +0 -46
  48. package/apps/runner/dist/correction-handler.js +0 -162
  49. package/apps/runner/dist/correction-handler.js.map +0 -1
  50. package/apps/runner/dist/correction-manager.d.ts +0 -53
  51. package/apps/runner/dist/correction-manager.js +0 -241
  52. package/apps/runner/dist/correction-manager.js.map +0 -1
  53. package/apps/runner/dist/db.d.ts +0 -193
  54. package/apps/runner/dist/db.js +0 -492
  55. package/apps/runner/dist/db.js.map +0 -1
  56. package/apps/runner/dist/index.d.ts +0 -9
  57. package/apps/runner/dist/index.js +0 -43
  58. package/apps/runner/dist/index.js.map +0 -1
  59. package/apps/runner/dist/job-scheduler.d.ts +0 -57
  60. package/apps/runner/dist/job-scheduler.js +0 -150
  61. package/apps/runner/dist/job-scheduler.js.map +0 -1
  62. package/apps/runner/dist/logger.d.ts +0 -32
  63. package/apps/runner/dist/logger.js +0 -52
  64. package/apps/runner/dist/logger.js.map +0 -1
  65. package/apps/runner/dist/mcp-process-manager.d.ts +0 -38
  66. package/apps/runner/dist/mcp-process-manager.js +0 -189
  67. package/apps/runner/dist/mcp-process-manager.js.map +0 -1
  68. package/apps/runner/dist/memory-mcp.d.ts +0 -14
  69. package/apps/runner/dist/memory-mcp.js +0 -88
  70. package/apps/runner/dist/memory-mcp.js.map +0 -1
  71. package/apps/runner/dist/memory-watcher.d.ts +0 -78
  72. package/apps/runner/dist/memory-watcher.js +0 -220
  73. package/apps/runner/dist/memory-watcher.js.map +0 -1
  74. package/apps/runner/dist/slack-handler.d.ts +0 -120
  75. package/apps/runner/dist/slack-handler.js +0 -843
  76. package/apps/runner/dist/slack-handler.js.map +0 -1
  77. package/apps/runner/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  78. package/apps/runner/package.json +0 -42
  79. package/apps/runner/src/__tests__/channel-restrictions.test.ts +0 -75
  80. package/apps/runner/src/__tests__/claude-handler-resolve.test.ts +0 -160
  81. package/apps/runner/src/__tests__/compile-claude-md.test.ts +0 -139
  82. package/apps/runner/src/__tests__/memory-sync.test.ts +0 -59
  83. package/apps/runner/src/__tests__/slack-file-support.test.ts +0 -376
  84. package/apps/runner/src/__tests__/slack-formatting.test.ts +0 -495
  85. package/apps/runner/src/__tests__/thread-context.test.ts +0 -215
  86. package/apps/runner/src/agent-runner.ts +0 -397
  87. package/apps/runner/src/claude-handler.ts +0 -475
  88. package/apps/runner/src/compile-claude-md.ts +0 -283
  89. package/apps/runner/src/correction-handler.ts +0 -191
  90. package/apps/runner/src/correction-manager.ts +0 -285
  91. package/apps/runner/src/db.ts +0 -604
  92. package/apps/runner/src/index.ts +0 -46
  93. package/apps/runner/src/job-scheduler.ts +0 -165
  94. package/apps/runner/src/logger.ts +0 -49
  95. package/apps/runner/src/mcp-process-manager.ts +0 -195
  96. package/apps/runner/src/memory-mcp.ts +0 -85
  97. package/apps/runner/src/memory-watcher.ts +0 -215
  98. package/apps/runner/src/slack-handler.ts +0 -929
  99. package/apps/runner/tsconfig.json +0 -17
  100. package/apps/runner/vitest.config.mts +0 -17
  101. package/apps/web/.eslintrc.json +0 -3
  102. package/apps/web/.next/app-build-manifest.json +0 -323
  103. package/apps/web/.next/app-path-routes-manifest.json +0 -46
  104. package/apps/web/.next/build-manifest.json +0 -33
  105. package/apps/web/.next/cache/.previewinfo +0 -1
  106. package/apps/web/.next/cache/.rscinfo +0 -1
  107. package/apps/web/.next/cache/webpack/client-production/0.pack +0 -0
  108. package/apps/web/.next/cache/webpack/client-production/1.pack +0 -0
  109. package/apps/web/.next/cache/webpack/client-production/2.pack +0 -0
  110. package/apps/web/.next/cache/webpack/client-production/3.pack +0 -0
  111. package/apps/web/.next/cache/webpack/client-production/4.pack +0 -0
  112. package/apps/web/.next/cache/webpack/client-production/index.pack +0 -0
  113. package/apps/web/.next/cache/webpack/client-production/index.pack.old +0 -0
  114. package/apps/web/.next/cache/webpack/edge-server-production/0.pack +0 -0
  115. package/apps/web/.next/cache/webpack/edge-server-production/1.pack +0 -0
  116. package/apps/web/.next/cache/webpack/edge-server-production/index.pack +0 -0
  117. package/apps/web/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  118. package/apps/web/.next/cache/webpack/server-production/0.pack +0 -0
  119. package/apps/web/.next/cache/webpack/server-production/1.pack +0 -0
  120. package/apps/web/.next/cache/webpack/server-production/2.pack +0 -0
  121. package/apps/web/.next/cache/webpack/server-production/index.pack +0 -0
  122. package/apps/web/.next/cache/webpack/server-production/index.pack.old +0 -0
  123. package/apps/web/.next/diagnostics/build-diagnostics.json +0 -6
  124. package/apps/web/.next/diagnostics/framework.json +0 -1
  125. package/apps/web/.next/package.json +0 -1
  126. package/apps/web/.next/react-loadable-manifest.json +0 -1
  127. package/apps/web/.next/server/app/_not-found/page.js +0 -2
  128. package/apps/web/.next/server/app/_not-found/page.js.nft.json +0 -1
  129. package/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
  130. package/apps/web/.next/server/app/agents/[slug]/page.js +0 -4
  131. package/apps/web/.next/server/app/agents/[slug]/page.js.nft.json +0 -1
  132. package/apps/web/.next/server/app/agents/[slug]/page_client-reference-manifest.js +0 -1
  133. package/apps/web/.next/server/app/agents/new/page.js +0 -2
  134. package/apps/web/.next/server/app/agents/new/page.js.nft.json +0 -1
  135. package/apps/web/.next/server/app/agents/new/page_client-reference-manifest.js +0 -1
  136. package/apps/web/.next/server/app/api/agents/[id]/access/route.js +0 -1
  137. package/apps/web/.next/server/app/api/agents/[id]/access/route.js.nft.json +0 -1
  138. package/apps/web/.next/server/app/api/agents/[id]/access/route_client-reference-manifest.js +0 -1
  139. package/apps/web/.next/server/app/api/agents/[id]/claude-md/route.js +0 -6
  140. package/apps/web/.next/server/app/api/agents/[id]/claude-md/route.js.nft.json +0 -1
  141. package/apps/web/.next/server/app/api/agents/[id]/claude-md/route_client-reference-manifest.js +0 -1
  142. package/apps/web/.next/server/app/api/agents/[id]/logs/route.js +0 -3
  143. package/apps/web/.next/server/app/api/agents/[id]/logs/route.js.nft.json +0 -1
  144. package/apps/web/.next/server/app/api/agents/[id]/logs/route_client-reference-manifest.js +0 -1
  145. package/apps/web/.next/server/app/api/agents/[id]/manifest/route.js +0 -1
  146. package/apps/web/.next/server/app/api/agents/[id]/manifest/route.js.nft.json +0 -1
  147. package/apps/web/.next/server/app/api/agents/[id]/manifest/route_client-reference-manifest.js +0 -1
  148. package/apps/web/.next/server/app/api/agents/[id]/mcps/route.js +0 -1
  149. package/apps/web/.next/server/app/api/agents/[id]/mcps/route.js.nft.json +0 -1
  150. package/apps/web/.next/server/app/api/agents/[id]/mcps/route_client-reference-manifest.js +0 -1
  151. package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route.js +0 -1
  152. package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route.js.nft.json +0 -1
  153. package/apps/web/.next/server/app/api/agents/[id]/memories/[memId]/route_client-reference-manifest.js +0 -1
  154. package/apps/web/.next/server/app/api/agents/[id]/memories/route.js +0 -1
  155. package/apps/web/.next/server/app/api/agents/[id]/memories/route.js.nft.json +0 -1
  156. package/apps/web/.next/server/app/api/agents/[id]/memories/route_client-reference-manifest.js +0 -1
  157. package/apps/web/.next/server/app/api/agents/[id]/permissions/route.js +0 -1
  158. package/apps/web/.next/server/app/api/agents/[id]/permissions/route.js.nft.json +0 -1
  159. package/apps/web/.next/server/app/api/agents/[id]/permissions/route_client-reference-manifest.js +0 -1
  160. package/apps/web/.next/server/app/api/agents/[id]/reload/route.js +0 -1
  161. package/apps/web/.next/server/app/api/agents/[id]/reload/route.js.nft.json +0 -1
  162. package/apps/web/.next/server/app/api/agents/[id]/reload/route_client-reference-manifest.js +0 -1
  163. package/apps/web/.next/server/app/api/agents/[id]/restrictions/route.js +0 -1
  164. package/apps/web/.next/server/app/api/agents/[id]/restrictions/route.js.nft.json +0 -1
  165. package/apps/web/.next/server/app/api/agents/[id]/restrictions/route_client-reference-manifest.js +0 -1
  166. package/apps/web/.next/server/app/api/agents/[id]/route.js +0 -33
  167. package/apps/web/.next/server/app/api/agents/[id]/route.js.nft.json +0 -1
  168. package/apps/web/.next/server/app/api/agents/[id]/route_client-reference-manifest.js +0 -1
  169. package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route.js +0 -1
  170. package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route.js.nft.json +0 -1
  171. package/apps/web/.next/server/app/api/agents/[id]/skills/[skillId]/route_client-reference-manifest.js +0 -1
  172. package/apps/web/.next/server/app/api/agents/[id]/skills/route.js +0 -1
  173. package/apps/web/.next/server/app/api/agents/[id]/skills/route.js.nft.json +0 -1
  174. package/apps/web/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +0 -1
  175. package/apps/web/.next/server/app/api/agents/[id]/slack-info/route.js +0 -1
  176. package/apps/web/.next/server/app/api/agents/[id]/slack-info/route.js.nft.json +0 -1
  177. package/apps/web/.next/server/app/api/agents/[id]/slack-info/route_client-reference-manifest.js +0 -1
  178. package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route.js +0 -1
  179. package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route.js.nft.json +0 -1
  180. package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/restore/route_client-reference-manifest.js +0 -1
  181. package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route.js +0 -1
  182. package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route.js.nft.json +0 -1
  183. package/apps/web/.next/server/app/api/agents/[id]/snapshots/[sid]/route_client-reference-manifest.js +0 -1
  184. package/apps/web/.next/server/app/api/agents/[id]/snapshots/route.js +0 -1
  185. package/apps/web/.next/server/app/api/agents/[id]/snapshots/route.js.nft.json +0 -1
  186. package/apps/web/.next/server/app/api/agents/[id]/snapshots/route_client-reference-manifest.js +0 -1
  187. package/apps/web/.next/server/app/api/agents/[id]/start/route.js +0 -1
  188. package/apps/web/.next/server/app/api/agents/[id]/start/route.js.nft.json +0 -1
  189. package/apps/web/.next/server/app/api/agents/[id]/start/route_client-reference-manifest.js +0 -1
  190. package/apps/web/.next/server/app/api/agents/[id]/stop/route.js +0 -1
  191. package/apps/web/.next/server/app/api/agents/[id]/stop/route.js.nft.json +0 -1
  192. package/apps/web/.next/server/app/api/agents/[id]/stop/route_client-reference-manifest.js +0 -1
  193. package/apps/web/.next/server/app/api/agents/route.js +0 -91
  194. package/apps/web/.next/server/app/api/agents/route.js.nft.json +0 -1
  195. package/apps/web/.next/server/app/api/agents/route_client-reference-manifest.js +0 -1
  196. package/apps/web/.next/server/app/api/auth/login/route.js +0 -1
  197. package/apps/web/.next/server/app/api/auth/login/route.js.nft.json +0 -1
  198. package/apps/web/.next/server/app/api/auth/login/route_client-reference-manifest.js +0 -1
  199. package/apps/web/.next/server/app/api/auth/logout/route.js +0 -1
  200. package/apps/web/.next/server/app/api/auth/logout/route.js.nft.json +0 -1
  201. package/apps/web/.next/server/app/api/auth/logout/route_client-reference-manifest.js +0 -1
  202. package/apps/web/.next/server/app/api/auth/me/route.js +0 -1
  203. package/apps/web/.next/server/app/api/auth/me/route.js.nft.json +0 -1
  204. package/apps/web/.next/server/app/api/auth/me/route_client-reference-manifest.js +0 -1
  205. package/apps/web/.next/server/app/api/auth/users/[id]/route.js +0 -1
  206. package/apps/web/.next/server/app/api/auth/users/[id]/route.js.nft.json +0 -1
  207. package/apps/web/.next/server/app/api/auth/users/[id]/route_client-reference-manifest.js +0 -1
  208. package/apps/web/.next/server/app/api/auth/users/route.js +0 -1
  209. package/apps/web/.next/server/app/api/auth/users/route.js.nft.json +0 -1
  210. package/apps/web/.next/server/app/api/auth/users/route_client-reference-manifest.js +0 -1
  211. package/apps/web/.next/server/app/api/env-vars/[key]/route.js +0 -1
  212. package/apps/web/.next/server/app/api/env-vars/[key]/route.js.nft.json +0 -1
  213. package/apps/web/.next/server/app/api/env-vars/[key]/route_client-reference-manifest.js +0 -1
  214. package/apps/web/.next/server/app/api/env-vars/route.js +0 -1
  215. package/apps/web/.next/server/app/api/env-vars/route.js.nft.json +0 -1
  216. package/apps/web/.next/server/app/api/env-vars/route_client-reference-manifest.js +0 -1
  217. package/apps/web/.next/server/app/api/jobs/[id]/route.js +0 -1
  218. package/apps/web/.next/server/app/api/jobs/[id]/route.js.nft.json +0 -1
  219. package/apps/web/.next/server/app/api/jobs/[id]/route_client-reference-manifest.js +0 -1
  220. package/apps/web/.next/server/app/api/jobs/[id]/runs/route.js +0 -1
  221. package/apps/web/.next/server/app/api/jobs/[id]/runs/route.js.nft.json +0 -1
  222. package/apps/web/.next/server/app/api/jobs/[id]/runs/route_client-reference-manifest.js +0 -1
  223. package/apps/web/.next/server/app/api/jobs/route.js +0 -1
  224. package/apps/web/.next/server/app/api/jobs/route.js.nft.json +0 -1
  225. package/apps/web/.next/server/app/api/jobs/route_client-reference-manifest.js +0 -1
  226. package/apps/web/.next/server/app/api/mcps/[id]/route.js +0 -1
  227. package/apps/web/.next/server/app/api/mcps/[id]/route.js.nft.json +0 -1
  228. package/apps/web/.next/server/app/api/mcps/[id]/route_client-reference-manifest.js +0 -1
  229. package/apps/web/.next/server/app/api/mcps/[id]/test/route.js +0 -1
  230. package/apps/web/.next/server/app/api/mcps/[id]/test/route.js.nft.json +0 -1
  231. package/apps/web/.next/server/app/api/mcps/[id]/test/route_client-reference-manifest.js +0 -1
  232. package/apps/web/.next/server/app/api/mcps/route.js +0 -1
  233. package/apps/web/.next/server/app/api/mcps/route.js.nft.json +0 -1
  234. package/apps/web/.next/server/app/api/mcps/route_client-reference-manifest.js +0 -1
  235. package/apps/web/.next/server/app/api/settings/route.js +0 -1
  236. package/apps/web/.next/server/app/api/settings/route.js.nft.json +0 -1
  237. package/apps/web/.next/server/app/api/settings/route_client-reference-manifest.js +0 -1
  238. package/apps/web/.next/server/app/icon.svg/route.js +0 -1
  239. package/apps/web/.next/server/app/icon.svg/route.js.nft.json +0 -1
  240. package/apps/web/.next/server/app/jobs/page.js +0 -2
  241. package/apps/web/.next/server/app/jobs/page.js.nft.json +0 -1
  242. package/apps/web/.next/server/app/jobs/page_client-reference-manifest.js +0 -1
  243. package/apps/web/.next/server/app/login/page.js +0 -2
  244. package/apps/web/.next/server/app/login/page.js.nft.json +0 -1
  245. package/apps/web/.next/server/app/login/page_client-reference-manifest.js +0 -1
  246. package/apps/web/.next/server/app/page.js +0 -2
  247. package/apps/web/.next/server/app/page.js.nft.json +0 -1
  248. package/apps/web/.next/server/app/page_client-reference-manifest.js +0 -1
  249. package/apps/web/.next/server/app/settings/env-vars/page.js +0 -2
  250. package/apps/web/.next/server/app/settings/env-vars/page.js.nft.json +0 -1
  251. package/apps/web/.next/server/app/settings/env-vars/page_client-reference-manifest.js +0 -1
  252. package/apps/web/.next/server/app/settings/mcps/page.js +0 -2
  253. package/apps/web/.next/server/app/settings/mcps/page.js.nft.json +0 -1
  254. package/apps/web/.next/server/app/settings/mcps/page_client-reference-manifest.js +0 -1
  255. package/apps/web/.next/server/app/settings/page.js +0 -2
  256. package/apps/web/.next/server/app/settings/page.js.nft.json +0 -1
  257. package/apps/web/.next/server/app/settings/page_client-reference-manifest.js +0 -1
  258. package/apps/web/.next/server/app-paths-manifest.json +0 -46
  259. package/apps/web/.next/server/chunks/1157.js +0 -9
  260. package/apps/web/.next/server/chunks/2287.js +0 -1
  261. package/apps/web/.next/server/chunks/3444.js +0 -1
  262. package/apps/web/.next/server/chunks/383.js +0 -6
  263. package/apps/web/.next/server/chunks/4012.js +0 -58
  264. package/apps/web/.next/server/chunks/6791.js +0 -1
  265. package/apps/web/.next/server/chunks/7171.js +0 -1
  266. package/apps/web/.next/server/chunks/8819.js +0 -22
  267. package/apps/web/.next/server/edge-runtime-webpack.js +0 -2
  268. package/apps/web/.next/server/edge-runtime-webpack.js.map +0 -1
  269. package/apps/web/.next/server/interception-route-rewrite-manifest.js +0 -1
  270. package/apps/web/.next/server/middleware-build-manifest.js +0 -1
  271. package/apps/web/.next/server/middleware-manifest.json +0 -32
  272. package/apps/web/.next/server/middleware-react-loadable-manifest.js +0 -1
  273. package/apps/web/.next/server/next-font-manifest.js +0 -1
  274. package/apps/web/.next/server/next-font-manifest.json +0 -1
  275. package/apps/web/.next/server/pages/_app.js +0 -1
  276. package/apps/web/.next/server/pages/_app.js.nft.json +0 -1
  277. package/apps/web/.next/server/pages/_document.js +0 -1
  278. package/apps/web/.next/server/pages/_document.js.nft.json +0 -1
  279. package/apps/web/.next/server/pages/_error.js +0 -19
  280. package/apps/web/.next/server/pages/_error.js.nft.json +0 -1
  281. package/apps/web/.next/server/pages-manifest.json +0 -5
  282. package/apps/web/.next/server/server-reference-manifest.js +0 -1
  283. package/apps/web/.next/server/server-reference-manifest.json +0 -1
  284. package/apps/web/.next/server/src/middleware.js +0 -14
  285. package/apps/web/.next/server/src/middleware.js.map +0 -1
  286. package/apps/web/.next/server/webpack-runtime.js +0 -1
  287. package/apps/web/.next/static/chunks/18-90b700ea37b686a2.js +0 -1
  288. package/apps/web/.next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
  289. package/apps/web/.next/static/chunks/9664-af80478aa73ba424.js +0 -1
  290. package/apps/web/.next/static/chunks/app/_not-found/page-b9cee17ed89ca24a.js +0 -1
  291. package/apps/web/.next/static/chunks/app/agents/[slug]/page-18369fc3fe1a9a7b.js +0 -1
  292. package/apps/web/.next/static/chunks/app/agents/new/page-bf11cf8901c7e2cd.js +0 -1
  293. package/apps/web/.next/static/chunks/app/api/agents/[id]/access/route-07f0f73ac9839899.js +0 -1
  294. package/apps/web/.next/static/chunks/app/api/agents/[id]/claude-md/route-07f0f73ac9839899.js +0 -1
  295. package/apps/web/.next/static/chunks/app/api/agents/[id]/logs/route-07f0f73ac9839899.js +0 -1
  296. package/apps/web/.next/static/chunks/app/api/agents/[id]/manifest/route-07f0f73ac9839899.js +0 -1
  297. package/apps/web/.next/static/chunks/app/api/agents/[id]/mcps/route-07f0f73ac9839899.js +0 -1
  298. package/apps/web/.next/static/chunks/app/api/agents/[id]/memories/[memId]/route-07f0f73ac9839899.js +0 -1
  299. package/apps/web/.next/static/chunks/app/api/agents/[id]/memories/route-07f0f73ac9839899.js +0 -1
  300. package/apps/web/.next/static/chunks/app/api/agents/[id]/permissions/route-07f0f73ac9839899.js +0 -1
  301. package/apps/web/.next/static/chunks/app/api/agents/[id]/reload/route-07f0f73ac9839899.js +0 -1
  302. package/apps/web/.next/static/chunks/app/api/agents/[id]/restrictions/route-07f0f73ac9839899.js +0 -1
  303. package/apps/web/.next/static/chunks/app/api/agents/[id]/route-07f0f73ac9839899.js +0 -1
  304. package/apps/web/.next/static/chunks/app/api/agents/[id]/skills/[skillId]/route-07f0f73ac9839899.js +0 -1
  305. package/apps/web/.next/static/chunks/app/api/agents/[id]/skills/route-07f0f73ac9839899.js +0 -1
  306. package/apps/web/.next/static/chunks/app/api/agents/[id]/slack-info/route-07f0f73ac9839899.js +0 -1
  307. package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/[sid]/restore/route-07f0f73ac9839899.js +0 -1
  308. package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/[sid]/route-07f0f73ac9839899.js +0 -1
  309. package/apps/web/.next/static/chunks/app/api/agents/[id]/snapshots/route-07f0f73ac9839899.js +0 -1
  310. package/apps/web/.next/static/chunks/app/api/agents/[id]/start/route-07f0f73ac9839899.js +0 -1
  311. package/apps/web/.next/static/chunks/app/api/agents/[id]/stop/route-07f0f73ac9839899.js +0 -1
  312. package/apps/web/.next/static/chunks/app/api/agents/route-07f0f73ac9839899.js +0 -1
  313. package/apps/web/.next/static/chunks/app/api/auth/login/route-07f0f73ac9839899.js +0 -1
  314. package/apps/web/.next/static/chunks/app/api/auth/logout/route-07f0f73ac9839899.js +0 -1
  315. package/apps/web/.next/static/chunks/app/api/auth/me/route-07f0f73ac9839899.js +0 -1
  316. package/apps/web/.next/static/chunks/app/api/auth/users/[id]/route-07f0f73ac9839899.js +0 -1
  317. package/apps/web/.next/static/chunks/app/api/auth/users/route-07f0f73ac9839899.js +0 -1
  318. package/apps/web/.next/static/chunks/app/api/env-vars/[key]/route-07f0f73ac9839899.js +0 -1
  319. package/apps/web/.next/static/chunks/app/api/env-vars/route-07f0f73ac9839899.js +0 -1
  320. package/apps/web/.next/static/chunks/app/api/jobs/[id]/route-07f0f73ac9839899.js +0 -1
  321. package/apps/web/.next/static/chunks/app/api/jobs/[id]/runs/route-07f0f73ac9839899.js +0 -1
  322. package/apps/web/.next/static/chunks/app/api/jobs/route-07f0f73ac9839899.js +0 -1
  323. package/apps/web/.next/static/chunks/app/api/mcps/[id]/route-07f0f73ac9839899.js +0 -1
  324. package/apps/web/.next/static/chunks/app/api/mcps/[id]/test/route-07f0f73ac9839899.js +0 -1
  325. package/apps/web/.next/static/chunks/app/api/mcps/route-07f0f73ac9839899.js +0 -1
  326. package/apps/web/.next/static/chunks/app/api/settings/route-07f0f73ac9839899.js +0 -1
  327. package/apps/web/.next/static/chunks/app/jobs/page-f5aa89a47c50efd8.js +0 -1
  328. package/apps/web/.next/static/chunks/app/layout-2079f4964aa7314e.js +0 -1
  329. package/apps/web/.next/static/chunks/app/login/layout-07f0f73ac9839899.js +0 -1
  330. package/apps/web/.next/static/chunks/app/login/page-aa259283dc38e8f9.js +0 -1
  331. package/apps/web/.next/static/chunks/app/page-e83437b608104dff.js +0 -1
  332. package/apps/web/.next/static/chunks/app/settings/env-vars/page-06479dbdfb78b76b.js +0 -1
  333. package/apps/web/.next/static/chunks/app/settings/mcps/page-75650686ed6490c7.js +0 -1
  334. package/apps/web/.next/static/chunks/app/settings/page-e1e62fc41ff6cddd.js +0 -1
  335. package/apps/web/.next/static/chunks/framework-811407f832a33072.js +0 -1
  336. package/apps/web/.next/static/chunks/main-3f1cddbdd67b1546.js +0 -1
  337. package/apps/web/.next/static/chunks/main-app-cebd8a6a5ccbf72d.js +0 -1
  338. package/apps/web/.next/static/chunks/pages/_app-50fa07b56b2d29ac.js +0 -1
  339. package/apps/web/.next/static/chunks/pages/_error-fed8688bdd23f211.js +0 -1
  340. package/apps/web/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  341. package/apps/web/.next/static/chunks/webpack-6c05566dba553c97.js +0 -1
  342. package/apps/web/.next/static/css/15371687405525e2.css +0 -5
  343. package/apps/web/.next/static/ikfNbLhuw7jntn35bz0lk/_buildManifest.js +0 -1
  344. package/apps/web/.next/static/ikfNbLhuw7jntn35bz0lk/_ssgManifest.js +0 -1
  345. package/apps/web/.next/trace +0 -5
  346. package/apps/web/.next/types/app/agents/[slug]/page.ts +0 -84
  347. package/apps/web/.next/types/app/agents/new/page.ts +0 -84
  348. package/apps/web/.next/types/app/api/agents/[id]/access/route.ts +0 -347
  349. package/apps/web/.next/types/app/api/agents/[id]/claude-md/route.ts +0 -347
  350. package/apps/web/.next/types/app/api/agents/[id]/logs/route.ts +0 -347
  351. package/apps/web/.next/types/app/api/agents/[id]/manifest/route.ts +0 -347
  352. package/apps/web/.next/types/app/api/agents/[id]/mcps/route.ts +0 -347
  353. package/apps/web/.next/types/app/api/agents/[id]/memories/[memId]/route.ts +0 -347
  354. package/apps/web/.next/types/app/api/agents/[id]/memories/route.ts +0 -347
  355. package/apps/web/.next/types/app/api/agents/[id]/permissions/route.ts +0 -347
  356. package/apps/web/.next/types/app/api/agents/[id]/reload/route.ts +0 -347
  357. package/apps/web/.next/types/app/api/agents/[id]/restrictions/route.ts +0 -347
  358. package/apps/web/.next/types/app/api/agents/[id]/route.ts +0 -347
  359. package/apps/web/.next/types/app/api/agents/[id]/skills/[skillId]/route.ts +0 -347
  360. package/apps/web/.next/types/app/api/agents/[id]/skills/route.ts +0 -347
  361. package/apps/web/.next/types/app/api/agents/[id]/slack-info/route.ts +0 -347
  362. package/apps/web/.next/types/app/api/agents/[id]/snapshots/[sid]/restore/route.ts +0 -347
  363. package/apps/web/.next/types/app/api/agents/[id]/snapshots/[sid]/route.ts +0 -347
  364. package/apps/web/.next/types/app/api/agents/[id]/snapshots/route.ts +0 -347
  365. package/apps/web/.next/types/app/api/agents/[id]/start/route.ts +0 -347
  366. package/apps/web/.next/types/app/api/agents/[id]/stop/route.ts +0 -347
  367. package/apps/web/.next/types/app/api/agents/route.ts +0 -347
  368. package/apps/web/.next/types/app/api/auth/login/route.ts +0 -347
  369. package/apps/web/.next/types/app/api/auth/logout/route.ts +0 -347
  370. package/apps/web/.next/types/app/api/auth/me/route.ts +0 -347
  371. package/apps/web/.next/types/app/api/auth/users/[id]/route.ts +0 -347
  372. package/apps/web/.next/types/app/api/auth/users/route.ts +0 -347
  373. package/apps/web/.next/types/app/api/env-vars/[key]/route.ts +0 -347
  374. package/apps/web/.next/types/app/api/env-vars/route.ts +0 -347
  375. package/apps/web/.next/types/app/api/jobs/[id]/route.ts +0 -347
  376. package/apps/web/.next/types/app/api/jobs/[id]/runs/route.ts +0 -347
  377. package/apps/web/.next/types/app/api/jobs/route.ts +0 -347
  378. package/apps/web/.next/types/app/api/mcps/[id]/route.ts +0 -347
  379. package/apps/web/.next/types/app/api/mcps/[id]/test/route.ts +0 -347
  380. package/apps/web/.next/types/app/api/mcps/route.ts +0 -347
  381. package/apps/web/.next/types/app/api/settings/route.ts +0 -347
  382. package/apps/web/.next/types/app/jobs/page.ts +0 -84
  383. package/apps/web/.next/types/app/login/layout.ts +0 -84
  384. package/apps/web/.next/types/app/login/page.ts +0 -84
  385. package/apps/web/.next/types/app/page.ts +0 -84
  386. package/apps/web/.next/types/app/settings/env-vars/page.ts +0 -84
  387. package/apps/web/.next/types/app/settings/mcps/page.ts +0 -84
  388. package/apps/web/.next/types/app/settings/page.ts +0 -84
  389. package/apps/web/.next/types/cache-life.d.ts +0 -141
  390. package/apps/web/.next/types/package.json +0 -1
  391. package/apps/web/.next/types/routes.d.ts +0 -114
  392. package/apps/web/.next/types/validator.ts +0 -448
  393. package/apps/web/Dockerfile +0 -37
  394. package/apps/web/next-env.d.ts +0 -6
  395. package/apps/web/next.config.js +0 -6
  396. package/apps/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
  397. package/apps/web/package.json +0 -48
  398. package/apps/web/postcss.config.js +0 -3
  399. package/apps/web/public/logo.svg +0 -17
  400. package/apps/web/src/app/agents/[slug]/page.tsx +0 -2235
  401. package/apps/web/src/app/agents/new/page.tsx +0 -1161
  402. package/apps/web/src/app/api/agents/[id]/access/route.ts +0 -76
  403. package/apps/web/src/app/api/agents/[id]/claude-md/route.ts +0 -111
  404. package/apps/web/src/app/api/agents/[id]/logs/route.ts +0 -84
  405. package/apps/web/src/app/api/agents/[id]/manifest/route.ts +0 -32
  406. package/apps/web/src/app/api/agents/[id]/mcps/route.ts +0 -73
  407. package/apps/web/src/app/api/agents/[id]/memories/[memId]/route.ts +0 -31
  408. package/apps/web/src/app/api/agents/[id]/memories/route.ts +0 -56
  409. package/apps/web/src/app/api/agents/[id]/permissions/route.ts +0 -74
  410. package/apps/web/src/app/api/agents/[id]/reload/route.ts +0 -33
  411. package/apps/web/src/app/api/agents/[id]/restrictions/route.ts +0 -85
  412. package/apps/web/src/app/api/agents/[id]/route.ts +0 -81
  413. package/apps/web/src/app/api/agents/[id]/skills/[skillId]/route.ts +0 -52
  414. package/apps/web/src/app/api/agents/[id]/skills/route.ts +0 -80
  415. package/apps/web/src/app/api/agents/[id]/slack-info/route.ts +0 -38
  416. package/apps/web/src/app/api/agents/[id]/snapshots/[sid]/restore/route.ts +0 -61
  417. package/apps/web/src/app/api/agents/[id]/snapshots/[sid]/route.ts +0 -53
  418. package/apps/web/src/app/api/agents/[id]/snapshots/route.ts +0 -84
  419. package/apps/web/src/app/api/agents/[id]/start/route.ts +0 -35
  420. package/apps/web/src/app/api/agents/[id]/stop/route.ts +0 -35
  421. package/apps/web/src/app/api/agents/route.ts +0 -99
  422. package/apps/web/src/app/api/auth/login/route.ts +0 -39
  423. package/apps/web/src/app/api/auth/logout/route.ts +0 -21
  424. package/apps/web/src/app/api/auth/me/route.ts +0 -24
  425. package/apps/web/src/app/api/auth/users/[id]/route.ts +0 -48
  426. package/apps/web/src/app/api/auth/users/route.ts +0 -63
  427. package/apps/web/src/app/api/env-vars/[key]/route.ts +0 -66
  428. package/apps/web/src/app/api/env-vars/route.ts +0 -59
  429. package/apps/web/src/app/api/jobs/[id]/route.ts +0 -51
  430. package/apps/web/src/app/api/jobs/[id]/runs/route.ts +0 -24
  431. package/apps/web/src/app/api/jobs/route.ts +0 -42
  432. package/apps/web/src/app/api/mcps/[id]/route.ts +0 -60
  433. package/apps/web/src/app/api/mcps/[id]/test/route.ts +0 -195
  434. package/apps/web/src/app/api/mcps/route.ts +0 -72
  435. package/apps/web/src/app/api/settings/route.ts +0 -42
  436. package/apps/web/src/app/globals.css +0 -124
  437. package/apps/web/src/app/icon.svg +0 -17
  438. package/apps/web/src/app/jobs/page.tsx +0 -543
  439. package/apps/web/src/app/layout-shell.tsx +0 -89
  440. package/apps/web/src/app/layout.tsx +0 -18
  441. package/apps/web/src/app/login/layout.tsx +0 -9
  442. package/apps/web/src/app/login/page.tsx +0 -150
  443. package/apps/web/src/app/page.tsx +0 -573
  444. package/apps/web/src/app/settings/env-vars/page.tsx +0 -216
  445. package/apps/web/src/app/settings/mcps/page.tsx +0 -763
  446. package/apps/web/src/app/settings/page.tsx +0 -528
  447. package/apps/web/src/app/sidebar.tsx +0 -345
  448. package/apps/web/src/lib/__tests__/api-guard.test.ts +0 -189
  449. package/apps/web/src/lib/__tests__/auth.test.ts +0 -262
  450. package/apps/web/src/lib/__tests__/boss-registry.test.ts +0 -323
  451. package/apps/web/src/lib/__tests__/compile.test.ts +0 -161
  452. package/apps/web/src/lib/__tests__/db-agent-hierarchy.test.ts +0 -136
  453. package/apps/web/src/lib/__tests__/db-env-vars.test.ts +0 -216
  454. package/apps/web/src/lib/__tests__/db-restrictions.test.ts +0 -117
  455. package/apps/web/src/lib/__tests__/db.integration.test.ts +0 -271
  456. package/apps/web/src/lib/__tests__/diff.test.ts +0 -102
  457. package/apps/web/src/lib/__tests__/mcp-mask.test.ts +0 -274
  458. package/apps/web/src/lib/__tests__/skill-templates.test.ts +0 -237
  459. package/apps/web/src/lib/__tests__/slack-manifest.test.ts +0 -105
  460. package/apps/web/src/lib/api-guard.ts +0 -68
  461. package/apps/web/src/lib/auth-context.tsx +0 -71
  462. package/apps/web/src/lib/auth.ts +0 -128
  463. package/apps/web/src/lib/boss-registry.ts +0 -90
  464. package/apps/web/src/lib/compile.ts +0 -51
  465. package/apps/web/src/lib/db.ts +0 -1196
  466. package/apps/web/src/lib/diff.ts +0 -43
  467. package/apps/web/src/lib/mcp-mask.ts +0 -91
  468. package/apps/web/src/lib/portal.tsx +0 -23
  469. package/apps/web/src/lib/skill-templates.ts +0 -148
  470. package/apps/web/src/lib/slack-manifest.ts +0 -85
  471. package/apps/web/src/middleware.ts +0 -68
  472. package/apps/web/tailwind.config.js +0 -6
  473. package/apps/web/tsconfig.json +0 -23
  474. package/apps/web/vitest.config.mts +0 -21
  475. package/cli/.claude/settings.local.json +0 -6
  476. package/cli/node_modules/.package-lock.json +0 -427
  477. package/cli/node_modules/commander/LICENSE +0 -22
  478. package/cli/node_modules/commander/Readme.md +0 -1157
  479. package/cli/node_modules/commander/esm.mjs +0 -16
  480. package/cli/node_modules/commander/index.js +0 -24
  481. package/cli/node_modules/commander/lib/argument.js +0 -149
  482. package/cli/node_modules/commander/lib/command.js +0 -2509
  483. package/cli/node_modules/commander/lib/error.js +0 -39
  484. package/cli/node_modules/commander/lib/help.js +0 -520
  485. package/cli/node_modules/commander/lib/option.js +0 -330
  486. package/cli/node_modules/commander/lib/suggestSimilar.js +0 -101
  487. package/cli/node_modules/commander/package-support.json +0 -16
  488. package/cli/node_modules/commander/package.json +0 -84
  489. package/cli/node_modules/commander/typings/esm.d.mts +0 -3
  490. package/cli/node_modules/commander/typings/index.d.ts +0 -969
  491. package/cli/package-lock.json +0 -449
  492. package/cli/package.json +0 -44
  493. package/cli/src/commands/init.ts +0 -514
  494. package/cli/src/commands/manage.ts +0 -115
  495. package/cli/src/index.ts +0 -63
  496. package/cli/tsconfig.json +0 -14
  497. package/docker-compose.yml +0 -122
  498. package/docs/agents/boss-agents.mdx +0 -108
  499. package/docs/agents/creating-agents.mdx +0 -132
  500. package/docs/agents/memory.mdx +0 -113
  501. package/docs/agents/tools.mdx +0 -103
  502. package/docs/configuration/env-vars.mdx +0 -166
  503. package/docs/configuration/mcp-servers.mdx +0 -203
  504. package/docs/configuration/slack-app.mdx +0 -175
  505. package/docs/docs.json +0 -79
  506. package/docs/favicon.svg +0 -17
  507. package/docs/features/history.mdx +0 -60
  508. package/docs/features/import-export.mdx +0 -77
  509. package/docs/features/logs.mdx +0 -131
  510. package/docs/features/multi-workspace.mdx +0 -90
  511. package/docs/features/scheduled-jobs.mdx +0 -231
  512. package/docs/features/users.mdx +0 -92
  513. package/docs/introduction.mdx +0 -160
  514. package/docs/logo/dark.svg +0 -17
  515. package/docs/logo/light.svg +0 -17
  516. package/docs/logo/wide-dark.svg +0 -12
  517. package/docs/logo/wide-light.svg +0 -12
  518. package/docs/quickstart.mdx +0 -270
  519. package/docs/self-hosting/docker.mdx +0 -151
  520. package/docs/self-hosting/production.mdx +0 -176
  521. package/packages/shared/dist/index.d.ts +0 -8
  522. package/packages/shared/dist/index.d.ts.map +0 -1
  523. package/packages/shared/dist/index.js +0 -24
  524. package/packages/shared/dist/index.js.map +0 -1
  525. package/packages/shared/dist/types.d.ts +0 -584
  526. package/packages/shared/dist/types.d.ts.map +0 -1
  527. package/packages/shared/dist/types.js +0 -39
  528. package/packages/shared/dist/types.js.map +0 -1
  529. package/packages/shared/package.json +0 -15
  530. package/packages/shared/src/db/schema.sql +0 -354
  531. package/packages/shared/src/index.ts +0 -8
  532. package/packages/shared/src/types.ts +0 -683
  533. package/packages/shared/tsconfig.json +0 -17
  534. package/scripts/dev.sh +0 -45
package/CONTRIBUTING.md DELETED
@@ -1,204 +0,0 @@
1
- # Contributing to SlackHive
2
-
3
- Thank you for your interest in contributing to SlackHive! This document covers everything you need to get started. For a general introduction to contributing on GitHub, see the [GitHub contributing guide](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project).
4
-
5
- ---
6
-
7
- ## Table of Contents
8
-
9
- - [Prerequisites](#prerequisites)
10
- - [Local Development Setup](#local-development-setup)
11
- - [Repository Structure](#repository-structure)
12
- - [Branch Naming](#branch-naming)
13
- - [Commit Style](#commit-style)
14
- - [Pull Request Process](#pull-request-process)
15
- - [Code Standards](#code-standards)
16
- - [Reporting Bugs and Requesting Features](#reporting-bugs-and-requesting-features)
17
-
18
- ---
19
-
20
- ## Prerequisites
21
-
22
- Before you begin, ensure the following tools are installed:
23
-
24
- | Tool | Minimum Version | Notes |
25
- |------|----------------|-------|
26
- | [Docker](https://docs.docker.com/get-docker/) | 24+ | Required for running Postgres, Redis, and the full stack |
27
- | [Docker Compose](https://docs.docker.com/compose/install/) | v2.20+ | Bundled with Docker Desktop |
28
- | [Node.js](https://nodejs.org/) | 20+ | Used for running apps locally outside Docker |
29
- | [git](https://git-scm.com/) | 2.38+ | |
30
-
31
- > **Note:** Never run `npm`/`node` directly on your host machine for production-style testing — always use Docker or `docker compose` for infrastructure services (Postgres, Redis).
32
-
33
- ---
34
-
35
- ## Local Development Setup
36
-
37
- ### 1. Fork and clone the repository
38
-
39
- ```bash
40
- # Fork via GitHub UI, then clone your fork
41
- git clone https://github.com/<your-username>/slackhive.git
42
- cd slackhive
43
-
44
- # Add the upstream remote
45
- git remote add upstream https://github.com/pelago-labs/slackhive.git
46
- ```
47
-
48
- ### 2. Set up environment variables
49
-
50
- Each app has its own `.env` file. Start from the provided examples:
51
-
52
- ```bash
53
- cp apps/web/.env.example apps/web/.env
54
- cp apps/runner/.env.example apps/runner/.env
55
- ```
56
-
57
- Edit each `.env` with your Slack app credentials, Anthropic API key, and other required values. Refer to the `README.md` for a description of each variable.
58
-
59
- ### 3. Start infrastructure services
60
-
61
- ```bash
62
- docker compose up postgres redis -d
63
- ```
64
-
65
- This starts Postgres and Redis in the background. They will be available on their default ports.
66
-
67
- ### 4. Install dependencies
68
-
69
- ```bash
70
- npm install
71
- ```
72
-
73
- This installs dependencies for all workspaces (`apps/web`, `apps/runner`, `packages/shared`, `cli`) via npm workspaces.
74
-
75
- ### 5. Build the shared package
76
-
77
- The shared package must be built before dependent apps can start:
78
-
79
- ```bash
80
- npm run build --workspace=packages/shared
81
- ```
82
-
83
- ### 6. Run database migrations
84
-
85
- ```bash
86
- # Inside the web app
87
- cd apps/web && npx prisma migrate dev
88
- ```
89
-
90
- ### 7. Start the development servers
91
-
92
- Open separate terminals for each app:
93
-
94
- ```bash
95
- # Terminal 1 — Next.js web app
96
- cd apps/web && npm run dev
97
-
98
- # Terminal 2 — Node runner
99
- cd apps/runner && npm run dev
100
- ```
101
-
102
- The web app is available at [http://localhost:3000](http://localhost:3000) by default.
103
-
104
- ---
105
-
106
- ## Repository Structure
107
-
108
- ```
109
- slackhive/
110
- ├── apps/
111
- │ ├── web/ # Next.js web application (dashboard, API routes)
112
- │ └── runner/ # Node.js agent runner
113
- ├── packages/
114
- │ └── shared/ # Shared TypeScript types and utilities
115
- ├── cli/ # SlackHive CLI tool
116
- ├── scripts/ # Development helper scripts
117
- └── docker-compose.yml
118
- ```
119
-
120
- ---
121
-
122
- ## Branch Naming
123
-
124
- Use the following prefixes for all branches, branched from `main`:
125
-
126
- | Prefix | Use for |
127
- |--------|---------|
128
- | `feat/` | New features (e.g., `feat/agent-memory-viewer`) |
129
- | `fix/` | Bug fixes (e.g., `fix/slack-oauth-redirect`) |
130
- | `chore/` | Maintenance, deps, tooling (e.g., `chore/update-prisma`) |
131
- | `docs/` | Documentation only (e.g., `docs/setup-guide`) |
132
-
133
- ---
134
-
135
- ## Commit Style
136
-
137
- SlackHive uses [Conventional Commits](https://www.conventionalcommits.org/). Each commit message must follow this format:
138
-
139
- ```
140
- <type>(<optional scope>): <short description>
141
-
142
- [optional body]
143
-
144
- [optional footer]
145
- ```
146
-
147
- **Types:**
148
-
149
- | Type | Description |
150
- |------|-------------|
151
- | `feat` | A new feature |
152
- | `fix` | A bug fix |
153
- | `chore` | Build process, tooling, or dependency updates |
154
- | `docs` | Documentation changes only |
155
- | `refactor` | Code change that is neither a fix nor a feature |
156
- | `test` | Adding or updating tests |
157
- | `perf` | Performance improvements |
158
- | `ci` | CI configuration changes |
159
-
160
- **Examples:**
161
-
162
- ```
163
- feat(web): add per-agent write access control toggle
164
- fix(runner): resolve race condition in job scheduler
165
- chore: upgrade Prisma to 5.14
166
- docs: add CONTRIBUTING guide
167
- ```
168
-
169
- Keep the subject line under 72 characters and use the imperative mood ("add", not "added" or "adds").
170
-
171
- ---
172
-
173
- ## Pull Request Process
174
-
175
- 1. **Fork** the repository and create your branch from `main`.
176
- 2. **Implement** your changes following the code standards below.
177
- 3. **Test** your changes locally with `docker compose up postgres redis -d` and the dev servers running.
178
- 4. **Push** your branch to your fork.
179
- 5. **Open a PR** against the `main` branch of `pelago-labs/slackhive`.
180
- 6. Fill in the **PR template** completely, including screenshots for any UI changes.
181
- 7. Address any review feedback.
182
-
183
- PRs should be focused — one logical change per PR. Large refactors should be discussed in a GitHub Discussion or Issue first.
184
-
185
- **Merging:** Maintainers merge PRs using squash-and-merge to keep the commit history clean.
186
-
187
- ---
188
-
189
- ## Code Standards
190
-
191
- - **TypeScript** — all code must be fully typed; avoid `any` unless strictly necessary.
192
- - **Docstrings** — use [TSDoc](https://tsdoc.org/) / JSDoc-style comments for all exported functions, classes, and types (Google-style param/return descriptions).
193
- - **Formatting** — the project uses ESLint and Prettier. Run `npm run lint` in the relevant workspace before submitting.
194
- - **No secrets** — never commit API keys, tokens, or credentials. Use `.env` files (already `.gitignore`d).
195
-
196
- ---
197
-
198
- ## Reporting Bugs and Requesting Features
199
-
200
- - **Bugs:** Open a [bug report issue](https://github.com/pelago-labs/slackhive/issues/new?template=bug_report.yml).
201
- - **Features:** Open a [feature request issue](https://github.com/pelago-labs/slackhive/issues/new?template=feature_request.yml).
202
- - **Questions / discussions:** Use [GitHub Discussions](https://github.com/pelago-labs/slackhive/discussions).
203
-
204
- Please do **not** use public issues to report security vulnerabilities. See [SECURITY.md](SECURITY.md) for the responsible disclosure process.
package/SECURITY.md DELETED
@@ -1,47 +0,0 @@
1
- # Security Policy
2
-
3
- ## Supported Versions
4
-
5
- Only the latest release of SlackHive receives security fixes.
6
-
7
- | Version | Supported |
8
- |---------|-----------|
9
- | 0.1.x (latest) | ✅ |
10
- | < 0.1.x | ❌ |
11
-
12
- ## Reporting a Vulnerability
13
-
14
- **Please do not report security vulnerabilities through public GitHub issues.**
15
-
16
- Instead, use [GitHub's private security advisory feature](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability) to report vulnerabilities confidentially:
17
-
18
- 1. Go to the [Security tab](https://github.com/pelago-labs/slackhive/security/advisories/new) of this repository
19
- 2. Click **"Report a vulnerability"**
20
- 3. Fill in the details
21
-
22
- Alternatively, email **conduct@slackhive.dev** with the subject line `[SECURITY] <brief description>`.
23
-
24
- ## Response Timeline
25
-
26
- | Stage | Target |
27
- |-------|--------|
28
- | Acknowledgement | Within 48 hours |
29
- | Initial assessment | Within 5 business days |
30
- | Patch for critical issues | Within 14 days |
31
- | Patch for moderate issues | Within 30 days |
32
-
33
- ## Scope
34
-
35
- Issues we consider in-scope:
36
-
37
- - Authentication bypass or session hijacking
38
- - SQL injection or data exposure
39
- - SSRF via MCP server configuration
40
- - Privilege escalation between user roles
41
- - Secrets leaked in logs or API responses
42
-
43
- Out of scope:
44
-
45
- - Vulnerabilities in third-party dependencies (report to upstream)
46
- - Rate limiting / DoS on self-hosted instances
47
- - Issues requiring physical access to the host
@@ -1,33 +0,0 @@
1
- FROM node:20-alpine AS base
2
- WORKDIR /app
3
- RUN apk add --no-cache curl
4
-
5
- # Install deps
6
- FROM base AS deps
7
- COPY package.json package-lock.json ./
8
- COPY packages/shared/package.json ./packages/shared/
9
- COPY apps/runner/package.json ./apps/runner/
10
- RUN npm ci
11
-
12
- # Build
13
- FROM deps AS builder
14
- COPY packages/shared ./packages/shared
15
- COPY apps/runner ./apps/runner
16
- RUN cd packages/shared && npx tsc --skipLibCheck || true
17
- RUN cd apps/runner && npx tsc --skipLibCheck || true
18
-
19
- # Runtime — lean image, no build tools
20
- FROM node:20-alpine AS runner
21
- ENV NODE_ENV=production
22
- WORKDIR /app
23
- # Install git, Python, pip and graphify for Bash-enabled agents
24
- RUN apk add --no-cache bash git python3 py3-pip
25
- COPY --from=builder /app/node_modules ./node_modules
26
- # Create claude wrapper that uses the SDK's bundled CLI
27
- RUN printf '#!/bin/sh\ncd /app/node_modules/@anthropic-ai/claude-agent-sdk && exec node cli.js "$@"\n' > /usr/local/bin/claude && \
28
- chmod +x /usr/local/bin/claude
29
- COPY --from=builder /app/packages/shared ./packages/shared
30
- COPY --from=builder /app/apps/runner ./apps/runner
31
- COPY --from=builder /app/package.json ./
32
-
33
- CMD ["node", "apps/runner/dist/index.js"]
@@ -1,8 +0,0 @@
1
- /**
2
- * @fileoverview Unit tests for isChannelRestricted in slack-handler.ts.
3
- *
4
- * Pure function — no mocks needed.
5
- *
6
- * @module runner/__tests__/channel-restrictions.test
7
- */
8
- export {};
@@ -1,63 +0,0 @@
1
- "use strict";
2
- /**
3
- * @fileoverview Unit tests for isChannelRestricted in slack-handler.ts.
4
- *
5
- * Pure function — no mocks needed.
6
- *
7
- * @module runner/__tests__/channel-restrictions.test
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const vitest_1 = require("vitest");
11
- const slack_handler_1 = require("../slack-handler");
12
- // ─── Helpers ──────────────────────────────────────────────────────────────────
13
- function makeRestriction(allowedChannels) {
14
- return {
15
- id: 'r-001',
16
- agentId: 'a-001',
17
- allowedChannels,
18
- updatedAt: new Date(),
19
- };
20
- }
21
- // ─── isChannelRestricted ──────────────────────────────────────────────────────
22
- (0, vitest_1.describe)('isChannelRestricted', () => {
23
- (0, vitest_1.it)('returns false when restrictions is null', () => {
24
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_ANY', null)).toBe(false);
25
- });
26
- (0, vitest_1.it)('returns false when allowedChannels is empty (unrestricted)', () => {
27
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_ANY', makeRestriction([]))).toBe(false);
28
- });
29
- (0, vitest_1.it)('returns false when channel is in the allowedChannels list', () => {
30
- const r = makeRestriction(['C_ALLOWED', 'C_OTHER']);
31
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_ALLOWED', r)).toBe(false);
32
- });
33
- (0, vitest_1.it)('returns true when channel is NOT in the allowedChannels list', () => {
34
- const r = makeRestriction(['C_ALLOWED']);
35
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_BLOCKED', r)).toBe(true);
36
- });
37
- (0, vitest_1.it)('returns true for a DM channel not in the allowedChannels list', () => {
38
- const r = makeRestriction(['C_ALLOWED']);
39
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('D_DM_CHANNEL', r)).toBe(true);
40
- });
41
- (0, vitest_1.it)('returns false for a DM channel that is explicitly in the allowedChannels list', () => {
42
- const r = makeRestriction(['D_DM_CHANNEL', 'C_ALLOWED']);
43
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('D_DM_CHANNEL', r)).toBe(false);
44
- });
45
- (0, vitest_1.it)('is case-sensitive — does not match wrong case', () => {
46
- const r = makeRestriction(['C_abc123']);
47
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_ABC123', r)).toBe(true);
48
- });
49
- (0, vitest_1.it)('handles a single-channel allowlist correctly — allowed', () => {
50
- const r = makeRestriction(['C_ONLY']);
51
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_ONLY', r)).toBe(false);
52
- });
53
- (0, vitest_1.it)('handles a single-channel allowlist correctly — blocked', () => {
54
- const r = makeRestriction(['C_ONLY']);
55
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_OTHER', r)).toBe(true);
56
- });
57
- (0, vitest_1.it)('returns false when allowedChannels has many entries and channel matches one', () => {
58
- const channels = ['C_1', 'C_2', 'C_3', 'C_4', 'C_5'];
59
- const r = makeRestriction(channels);
60
- (0, vitest_1.expect)((0, slack_handler_1.isChannelRestricted)('C_3', r)).toBe(false);
61
- });
62
- });
63
- //# sourceMappingURL=channel-restrictions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel-restrictions.test.js","sourceRoot":"","sources":["../../src/__tests__/channel-restrictions.test.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * @fileoverview Unit tests for ClaudeHandler.resolveServerConfig and resolveEnvRefs.
3
- *
4
- * Tests cover:
5
- * - envRefs resolution: subprocess env var is set from the env vars store value
6
- * - envRefs missing key: warning logged, key omitted
7
- * - Inline env + envRefs merged: both contribute to the resolved env object
8
- * - envRefs stripped from the returned config (SDK doesn't understand it)
9
- * - tsSource: source written to disk, config rewritten to use tsx
10
- * - Plain stdio config without envRefs returned unchanged
11
- *
12
- * ClaudeHandler is instantiated with a minimal Agent and no MCP servers so the
13
- * constructor side-effects (port hashing, McpProcessManager) are contained.
14
- * The private methods are accessed via `(handler as any)` to avoid exposing them.
15
- *
16
- * No database, no Slack, no filesystem writes for the non-tsSource tests.
17
- *
18
- * @module runner/__tests__/claude-handler-resolve.test
19
- */
20
- export {};
@@ -1,178 +0,0 @@
1
- "use strict";
2
- /**
3
- * @fileoverview Unit tests for ClaudeHandler.resolveServerConfig and resolveEnvRefs.
4
- *
5
- * Tests cover:
6
- * - envRefs resolution: subprocess env var is set from the env vars store value
7
- * - envRefs missing key: warning logged, key omitted
8
- * - Inline env + envRefs merged: both contribute to the resolved env object
9
- * - envRefs stripped from the returned config (SDK doesn't understand it)
10
- * - tsSource: source written to disk, config rewritten to use tsx
11
- * - Plain stdio config without envRefs returned unchanged
12
- *
13
- * ClaudeHandler is instantiated with a minimal Agent and no MCP servers so the
14
- * constructor side-effects (port hashing, McpProcessManager) are contained.
15
- * The private methods are accessed via `(handler as any)` to avoid exposing them.
16
- *
17
- * No database, no Slack, no filesystem writes for the non-tsSource tests.
18
- *
19
- * @module runner/__tests__/claude-handler-resolve.test
20
- */
21
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- var desc = Object.getOwnPropertyDescriptor(m, k);
24
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
- desc = { enumerable: true, get: function() { return m[k]; } };
26
- }
27
- Object.defineProperty(o, k2, desc);
28
- }) : (function(o, m, k, k2) {
29
- if (k2 === undefined) k2 = k;
30
- o[k2] = m[k];
31
- }));
32
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
- Object.defineProperty(o, "default", { enumerable: true, value: v });
34
- }) : function(o, v) {
35
- o["default"] = v;
36
- });
37
- var __importStar = (this && this.__importStar) || (function () {
38
- var ownKeys = function(o) {
39
- ownKeys = Object.getOwnPropertyNames || function (o) {
40
- var ar = [];
41
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
- return ar;
43
- };
44
- return ownKeys(o);
45
- };
46
- return function (mod) {
47
- if (mod && mod.__esModule) return mod;
48
- var result = {};
49
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
- __setModuleDefault(result, mod);
51
- return result;
52
- };
53
- })();
54
- Object.defineProperty(exports, "__esModule", { value: true });
55
- const fs = __importStar(require("fs"));
56
- const path = __importStar(require("path"));
57
- const os = __importStar(require("os"));
58
- const vitest_1 = require("vitest");
59
- const claude_handler_js_1 = require("../claude-handler.js");
60
- // ─── Helpers ─────────────────────────────────────────────────────────────────
61
- function makeAgent(overrides = {}) {
62
- return {
63
- id: 'agent-1',
64
- name: 'Test Agent',
65
- slug: 'test-agent',
66
- description: '',
67
- slackBotToken: 'xoxb-test',
68
- slackAppToken: 'xapp-test',
69
- slackSigningSecret: 'secret',
70
- model: 'claude-opus-4-6',
71
- status: 'stopped',
72
- enabled: true,
73
- isBoss: false,
74
- reportsTo: [],
75
- claudeMd: '',
76
- createdBy: 'system',
77
- createdAt: new Date(),
78
- updatedAt: new Date(),
79
- ...overrides,
80
- };
81
- }
82
- function makeHandler(envVarValues = {}, workDir = '/tmp/test-handler') {
83
- return new claude_handler_js_1.ClaudeHandler(makeAgent(), [], null, workDir, envVarValues);
84
- }
85
- // ─── resolveServerConfig — envRefs ───────────────────────────────────────────
86
- (0, vitest_1.describe)('resolveServerConfig — envRefs resolution', () => {
87
- (0, vitest_1.it)('resolves an envRef to the store value', () => {
88
- const handler = makeHandler({ REDSHIFT_DATABASE_URL: 'postgres://host/db' });
89
- const config = {
90
- command: 'node',
91
- args: ['server.js'],
92
- envRefs: { DATABASE_URL: 'REDSHIFT_DATABASE_URL' },
93
- };
94
- const result = handler.resolveServerConfig('my-mcp', config);
95
- const env = result.env;
96
- (0, vitest_1.expect)(env.DATABASE_URL).toBe('postgres://host/db');
97
- });
98
- (0, vitest_1.it)('strips envRefs from the resolved config', () => {
99
- const handler = makeHandler({ MY_KEY: 'my-value' });
100
- const config = { command: 'node', args: [], envRefs: { ENV_KEY: 'MY_KEY' } };
101
- const result = handler.resolveServerConfig('srv', config);
102
- (0, vitest_1.expect)(result.envRefs).toBeUndefined();
103
- });
104
- (0, vitest_1.it)('merges inline env with resolved envRefs', () => {
105
- const handler = makeHandler({ STORE_KEY: 'store-value' });
106
- const config = {
107
- command: 'node',
108
- args: [],
109
- env: { INLINE_VAR: 'inline-value' },
110
- envRefs: { REF_VAR: 'STORE_KEY' },
111
- };
112
- const result = handler.resolveServerConfig('srv', config);
113
- const env = result.env;
114
- (0, vitest_1.expect)(env.INLINE_VAR).toBe('inline-value');
115
- (0, vitest_1.expect)(env.REF_VAR).toBe('store-value');
116
- });
117
- (0, vitest_1.it)('omits the key when the store entry does not exist', () => {
118
- const handler = makeHandler({}); // empty store
119
- const config = { command: 'node', args: [], envRefs: { MISSING: 'NOT_IN_STORE' } };
120
- const result = handler.resolveServerConfig('srv', config);
121
- const env = (result.env ?? {});
122
- (0, vitest_1.expect)('MISSING' in env).toBe(false);
123
- });
124
- (0, vitest_1.it)('returns config unchanged when envRefs is absent', () => {
125
- const handler = makeHandler({ KEY: 'val' });
126
- const config = { command: 'node', args: ['s.js'], env: { LOCAL: 'x' } };
127
- const result = handler.resolveServerConfig('srv', config);
128
- (0, vitest_1.expect)(result).toEqual(config);
129
- });
130
- (0, vitest_1.it)('returns config unchanged when envRefs is an empty object', () => {
131
- const handler = makeHandler({ KEY: 'val' });
132
- const config = { command: 'node', args: [], envRefs: {} };
133
- const result = handler.resolveServerConfig('srv', config);
134
- (0, vitest_1.expect)(result).toEqual(config);
135
- });
136
- });
137
- // ─── resolveServerConfig — tsSource ──────────────────────────────────────────
138
- (0, vitest_1.describe)('resolveServerConfig — tsSource rewrites to tsx', () => {
139
- let tmpDir;
140
- (0, vitest_1.afterEach)(() => {
141
- if (tmpDir && fs.existsSync(tmpDir)) {
142
- fs.rmSync(tmpDir, { recursive: true, force: true });
143
- }
144
- });
145
- (0, vitest_1.it)('writes tsSource to disk and sets command to tsx', () => {
146
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-handler-test-'));
147
- const handler = makeHandler({}, tmpDir);
148
- const src = 'console.log("hello from ts mcp");';
149
- const config = { command: 'ignored', args: [], tsSource: src };
150
- const result = handler.resolveServerConfig('my-ts-mcp', config);
151
- (0, vitest_1.expect)(result.command).toBe('/app/node_modules/.bin/tsx');
152
- (0, vitest_1.expect)(Array.isArray(result.args)).toBe(true);
153
- const scriptPath = result.args[0];
154
- (0, vitest_1.expect)(scriptPath).toContain('my-ts-mcp.ts');
155
- (0, vitest_1.expect)(fs.readFileSync(scriptPath, 'utf8')).toBe(src);
156
- });
157
- (0, vitest_1.it)('strips tsSource from the resolved config', () => {
158
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-handler-test-'));
159
- const handler = makeHandler({}, tmpDir);
160
- const config = { command: 'ignored', args: [], tsSource: '// source' };
161
- const result = handler.resolveServerConfig('srv', config);
162
- (0, vitest_1.expect)(result.tsSource).toBeUndefined();
163
- });
164
- (0, vitest_1.it)('merges envRefs when tsSource is present', () => {
165
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-handler-test-'));
166
- const handler = makeHandler({ DB_URL: 'postgres://host/db' }, tmpDir);
167
- const config = {
168
- command: 'ignored',
169
- args: [],
170
- tsSource: '// source',
171
- envRefs: { DATABASE_URL: 'DB_URL' },
172
- };
173
- const result = handler.resolveServerConfig('srv', config);
174
- const env = result.env;
175
- (0, vitest_1.expect)(env.DATABASE_URL).toBe('postgres://host/db');
176
- });
177
- });
178
- //# sourceMappingURL=claude-handler-resolve.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-handler-resolve.test.js","sourceRoot":"","sources":["../../src/__tests__/claude-handler-resolve.test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * @fileoverview Unit tests for compile-claude-md helpers.
3
- *
4
- * Tests cover:
5
- * - CLAUDE.md contains proactive /recall instruction
6
- * - CLAUDE.md contains pattern-based memory-save guidance
7
- * - CLAUDE.md does NOT contain the old "Only save when user explicitly guides" wording
8
- * - materializeMemoryFiles writes MEMORY.md index + individual files
9
- * - sanitizeFilename is not exported but indirectly tested via materializeMemoryFiles
10
- *
11
- * @module runner/__tests__/compile-claude-md.test
12
- */
13
- export {};