Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
254 commits
Select commit Hold shift + click to select a range
7f4d96c
feat: add configurable concurrent verification workers
jeewoo-lee Apr 5, 2026
bfed081
feat: add retry with backoff for sandbox creation failures
jeewoo-lee Apr 5, 2026
9072cab
fix: retry sandbox creation indefinitely with capped backoff
jeewoo-lee Apr 5, 2026
a4fdd1d
fix: stop sandbox when delete is forbidden to free CPU quota
jeewoo-lee Apr 5, 2026
36bf7e9
fix: restore fork checkout and HIVE_SETUP_CMD in verify_run
jeewoo-lee Apr 5, 2026
18fdd73
merge: resolve conflicts with deployment branch
jeewoo-lee Apr 5, 2026
e9d9590
Merge pull request #49 from rllm-org/verify-runs
jeewoo-lee Apr 5, 2026
4db5c7c
fix: restore /verify-old endpoint lost in merge
jeewoo-lee Apr 5, 2026
d3d118f
Merge pull request #50 from rllm-org/verify-runs
jeewoo-lee Apr 5, 2026
e38af94
fix: allow task_repo_sha fallback in /verify-old for forks without ba…
jeewoo-lee Apr 5, 2026
719bb77
Merge pull request #51 from rllm-org/verify-runs
jeewoo-lee Apr 5, 2026
13b95a5
docs: revamp hive and hive-setup skills for private tasks
Chanbinski Apr 5, 2026
6530e76
feat: add public/private type filter to task list
Chanbinski Apr 5, 2026
39b1f7d
docs: update skills with --public/--private task list flags
Chanbinski Apr 5, 2026
0cc7f4f
fix: ask public/private before showing task list in setup skill
Chanbinski Apr 5, 2026
e1f7000
feat: verification UI + context endpoint support
jeewoo-lee Apr 5, 2026
cfd1731
Merge pull request #52 from rllm-org/verify-runs
jeewoo-lee Apr 5, 2026
9333eb7
feat: graph tooltip verification status + verified leaderboard via API
jeewoo-lee Apr 5, 2026
94c6998
feat: add version string to skills with auto-update check
Chanbinski Apr 5, 2026
11dd6c6
Merge pull request #53 from rllm-org/verify-runs
jeewoo-lee Apr 5, 2026
15c5177
fix: improve skill version check to stop and prompt update
Chanbinski Apr 5, 2026
b737a5f
fix: graph verified filter uses run.verified instead of context limit
jeewoo-lee Apr 6, 2026
d33dee4
Merge pull request #54 from rllm-org/verify-runs
jeewoo-lee Apr 6, 2026
fbffa8a
chore: bump version to 0.2.5
Chanbinski Apr 6, 2026
380b850
fix(ui): fix View all tasks button scroll target
Chanbinski Apr 6, 2026
e834bad
feat: add terminal sandbox backend for interactive Daytona workspaces
jeewoo-lee Apr 6, 2026
a23dc2b
docs: rewrite api.md and cli.md to match actual codebase
Chanbinski Apr 6, 2026
47d3a04
docs: rewrite api.md and cli.md to match actual codebase
Chanbinski Apr 6, 2026
bc0b32a
docs: add task id SERIAL refactor proposal
Chanbinski Apr 7, 2026
472d4b7
refactor(tasks): switch task addressing to {owner}/{slug}
Chanbinski Apr 7, 2026
8ca2af4
docs: add api-new.md and cli-new.md drafts for owner/slug routing
Chanbinski Apr 7, 2026
f696c01
feat: live terminal sandbox with persistent sessions and improved UX
jeewoo-lee Apr 7, 2026
b58282e
chore: clean up dead code from terminal sandbox
jeewoo-lee Apr 7, 2026
9cd5b66
fix: update terminal tests for auth_none SSH and reusable tickets
jeewoo-lee Apr 7, 2026
ed59e82
feat(users): add handles, replace UUID in URLs
Chanbinski2 Apr 7, 2026
c42c9ae
Merge branch 'id-refactor' into staging
Chanbinski2 Apr 7, 2026
5ddb1d5
fix(ui): use task slug/owner for hero task selection
Chanbinski2 Apr 7, 2026
3c92f82
fix(db): reorder task migration to swap PK before re-adding FKs
Chanbinski2 Apr 7, 2026
b4b82ab
fix(ui): show handle as primary identity, drop URL hints
Chanbinski2 Apr 7, 2026
fd6eb27
docs(api,cli): rewrite to match owner/slug + handles, clarify hive/
Chanbinski2 Apr 7, 2026
376cd17
fix(server): resolve owner/slug in /feed?task= filter
Chanbinski2 Apr 7, 2026
cdf22f6
fix(ui): coerce savedAt to boolean to stop rendering 0
Chanbinski2 Apr 7, 2026
ac914e5
docs(skills): update for owner/slug + handles, clarify hive/
Chanbinski2 Apr 7, 2026
b516faa
fix(cli,db): hive task list crash, login shows handle, db migration
Chanbinski2 Apr 7, 2026
59292b1
fix(server): return 403 for any private-task push branch rejection
Chanbinski2 Apr 7, 2026
3ce8efc
refactor: simplify sandbox bootstrap and set HIVE_SERVER
jeewoo-lee Apr 7, 2026
4d9fd42
feat(sandbox): add Daytona terminal sandbox with owner/slug routing
Chanbinski2 Apr 7, 2026
7b642ea
Merge branch 'merge-terminal-sandbox' into staging
Chanbinski2 Apr 7, 2026
ffeddac
docs(api): add Sandbox section and sandbox env vars
Chanbinski2 Apr 7, 2026
95585f4
chore(sandbox): pull bootstrap skills from staging branch
Chanbinski2 Apr 7, 2026
035b110
chore(sandbox): install hive CLI from staging git branch
Chanbinski2 Apr 7, 2026
0ea17e1
feat(ui): redesign task page with left rail nav and inline terminal
Chanbinski2 Apr 7, 2026
40b8291
feat(terminal): auto-open default shell and tighten empty state
Chanbinski2 Apr 7, 2026
4bdde1f
feat(settings): redesign settings tab and add GitHub row
Chanbinski2 Apr 7, 2026
23ef042
feat(terminal): restyle reconnect bar and add beta banner
Chanbinski2 Apr 7, 2026
142612f
merge staging, accept staging for all conflicts
jeewoo-lee Apr 7, 2026
d31a111
feat(terminal): persist sessions across page navigations
jeewoo-lee Apr 7, 2026
5b5c9d3
fix(ui): create-task modal sends 'slug' and uses Slug labels
Chanbinski2 Apr 7, 2026
47588b5
feat(ui): hide Sandbox tab on public tasks
Chanbinski2 Apr 7, 2026
22be449
chore(github): log response body on add_deploy_key failure
Chanbinski2 Apr 7, 2026
d83798a
fix(cli): correct error messages and help text for auth commands
Chanbinski2 Apr 7, 2026
69104c6
chore(github): print add_deploy_key failure body to stderr
Chanbinski2 Apr 7, 2026
46a3acf
chore(github): remove add_deploy_key diagnostic logging
Chanbinski2 Apr 7, 2026
abb2db0
perf(terminal): drop SSH recv timeout from 250ms to 20ms
Chanbinski2 Apr 7, 2026
c12453c
fix(terminal): batch writes per frame and cap URL buffer to prevent f…
jeewoo-lee Apr 7, 2026
e57a8ba
fix(terminal): write first message immediately, only batch during bursts
jeewoo-lee Apr 7, 2026
774ef10
feat(sandbox): install opencode during bootstrap
jeewoo-lee Apr 8, 2026
7958f04
fix(sandbox): symlink opencode to /usr/local/bin so it's on PATH
jeewoo-lee Apr 8, 2026
2420855
fix(sandbox): install opencode via npm alongside claude code
jeewoo-lee Apr 8, 2026
e9710b7
fix(sandbox): correct opencode npm package name to opencode-ai
jeewoo-lee Apr 8, 2026
5bc8c93
chore(ui): update sandbox beta banner to mention opencode
jeewoo-lee Apr 8, 2026
2934136
fix(terminal): fit to full size on open using ResizeObserver
jeewoo-lee Apr 8, 2026
bd3bc39
fix(terminal): use absolute positioning for full-size terminal panes
jeewoo-lee Apr 8, 2026
d2f36a9
fix(terminal): refit after 150ms delay for layout to settle
jeewoo-lee Apr 8, 2026
699dd26
fix(terminal): absolute position xterm container + retry fit until st…
jeewoo-lee Apr 8, 2026
920512a
fix(terminal): use absolute inset-0 on root — h-full doesn't resolve …
jeewoo-lee Apr 8, 2026
77753d7
feat(server): add channels and messages with dual agent/user auth
Chanbinski2 Apr 9, 2026
f2b658a
feat(cli): add hive chat and hive channel commands
Chanbinski2 Apr 9, 2026
10b6a2d
feat(ui): replace task page with Slack-style chat panel
Chanbinski2 Apr 9, 2026
ad21f0f
docs: rewrite api/cli/skill docs around chat-based collab
Chanbinski2 Apr 9, 2026
5586361
Merge pull request #56 from rllm-org/slack
Chanbinski2 Apr 9, 2026
dd90932
chore(cli): remove legacy feed, skill, item, search commands
Chanbinski2 Apr 9, 2026
f57969f
fix(ui): serialize chat mentions as @<id> in markdown
Chanbinski2 Apr 9, 2026
f63ee20
fix(ui): group chat messages by author kind+id, not agent_id
Chanbinski2 Apr 9, 2026
cd9a210
feat(chat): show user profile pictures in messages
Chanbinski2 Apr 9, 2026
d47aa91
docs(skills): emphasize reading chat and writing conversationally
Chanbinski2 Apr 9, 2026
d3cef12
feat(chat): show user avatars in thread reply previews
Chanbinski2 Apr 9, 2026
fc4f805
docs(skills): require sentence case in chat messages
Chanbinski2 Apr 9, 2026
c400859
fix(ui): parse markdown when editing chat messages
Chanbinski2 Apr 9, 2026
b537627
feat(inbox): agent mentions inbox + mention dispatcher
signalrush Apr 10, 2026
07f886c
feat(dispatcher): async mention dispatcher with Dockerfile support
signalrush Apr 10, 2026
019fa68
add dispatcher start script for Railway
signalrush Apr 10, 2026
3a97e04
add Dockerfiles for Railway deployment
signalrush Apr 10, 2026
696abc8
bust docker cache for staging deploy
signalrush Apr 10, 2026
9f6c78a
add cache bust ARG to force rebuild
signalrush Apr 10, 2026
25d90a2
bump version to bust docker cache
signalrush Apr 10, 2026
baab473
fix version format
signalrush Apr 10, 2026
a9da3bc
add openssh-client to Docker image for ssh-keygen
signalrush Apr 10, 2026
16cc308
add agent heartbeat (mention dispatcher)
signalrush Apr 11, 2026
e727000
fix: install git in heartbeat Dockerfile for pip git+ installs
signalrush Apr 11, 2026
8dcebe2
fix: use python:3.12-slim base for hive-agent Dockerfile
signalrush Apr 11, 2026
9cb1004
fix: copy dockerfiles/ into heartbeat container
signalrush Apr 11, 2026
63798e8
move hive-agent.Dockerfile next to agent_heartbeat.py
signalrush Apr 11, 2026
867bba7
rename to Dockerfile.hive-agent
signalrush Apr 11, 2026
0926e27
remove unrelated files and unused dockerfiles/
signalrush Apr 11, 2026
612b0bd
add AGENT_HIVE_SERVER env var for sandbox-reachable URL
signalrush Apr 11, 2026
46d0e09
add migrate + verifier to Dockerfile.api
signalrush Apr 11, 2026
6911530
feat(server): agent type system with auto-detected harness and model
Chanbinski2 Apr 11, 2026
25bb35f
feat(ui): redesign agent and user profiles with harness/model info
Chanbinski2 Apr 11, 2026
90ed4ca
fix(ui): hide owner badge on cloud agent profiles
Chanbinski2 Apr 11, 2026
663b93e
fix(ui): Enter completes mention instead of sending message
Chanbinski2 Apr 11, 2026
59992f5
feat(ui): add online/offline status indicator to agent profiles
Chanbinski2 Apr 11, 2026
6738b56
feat(server): task-scoped agents endpoint + fix last_seen_at serializ…
Chanbinski2 Apr 12, 2026
b2bf8cd
feat(ui): agents sidebar section with presence indicators
Chanbinski2 Apr 12, 2026
52bc1a1
fix(heartbeat): cache-bust agent-sdk pip install so main moves trigge…
signalrush Apr 12, 2026
4d94a27
feat(mentions): auto-trigger agents on thread follow-ups without re-m…
jeewoo-lee Apr 12, 2026
d92f53c
Default user sandbox Daytona snapshot to dayton-large
jeewoo-lee Apr 12, 2026
90de67c
Stop tracking .next build traces; gitignore .next/
jeewoo-lee Apr 12, 2026
9bd1120
Fix Daytona snapshot default spelling: daytona-large
jeewoo-lee Apr 12, 2026
83e6702
Allow retry after sandbox creation failure in task terminal UI
jeewoo-lee Apr 12, 2026
aa2dfd5
Fix delete task confirm to match API slug-only parameter
jeewoo-lee Apr 12, 2026
f348992
Fix task delete: cascade channels, items, sandboxes, inbox cursors
jeewoo-lee Apr 12, 2026
d7bd575
feat(chat): add rich artifact rendering for code, tables, charts, dia…
Chanbinski2 Apr 13, 2026
45bc9e0
docs(skill): add structured results formatting guide
Chanbinski2 Apr 13, 2026
475fc5f
fix(chat): restore mention pill rendering in react-markdown
Chanbinski2 Apr 13, 2026
705ae52
feat(api): add user search endpoint and validate user mentions
Chanbinski2 Apr 13, 2026
e0e25a8
feat(chat): support user mentions with distinct styling
Chanbinski2 Apr 13, 2026
5930c65
fix(chat): show user mention pills as gray in editor immediately
Chanbinski2 Apr 13, 2026
b9f7a9e
feat(chat): orange mention pills for cloud agents
Chanbinski2 Apr 13, 2026
e3f761e
chore: remove legacy feed, posts, kanban, skills, search code
Chanbinski2 Apr 15, 2026
d4c66e2
fix: prevent cloud agent ownership and restrict profile panel to chan…
Chanbinski2 Apr 15, 2026
8490067
style(ui): use rectangular avatars for agents consistently
Chanbinski2 Apr 15, 2026
b371b64
style(ui): unify agent avatar radius across profile and mention dropdown
Chanbinski2 Apr 15, 2026
b06e1ac
chore: add dev setup script and update CLAUDE.md
Chanbinski2 Apr 15, 2026
67bfd28
feat(agent-chat): backend proxy over rllm-org/agent-sdk
jeewoo-lee Apr 15, 2026
8b31fb1
fix(agent-chat): serialize datetimes + add client-side SSE parser
jeewoo-lee Apr 15, 2026
b695713
feat(agent-chat ui): Zed-style chat panel behind NEXT_PUBLIC_HIVE_AGE…
jeewoo-lee Apr 15, 2026
4be1784
test(agent-chat): exercise proxy routing, auth, DB mapping, SSE pass-…
jeewoo-lee Apr 15, 2026
c59ecc2
docs(agent-chat): document the agent-sdk proxy endpoints and design c…
jeewoo-lee Apr 15, 2026
d1cecf3
fix(private-tasks): list user's own repos instead of App-installation…
jeewoo-lee Apr 16, 2026
ec52871
Revert "fix(private-tasks): list user's own repos instead of App-inst…
jeewoo-lee Apr 16, 2026
026a26f
fix(auth): allow GitHub disconnect without a password
jeewoo-lee Apr 16, 2026
fdf1a1f
fs design
signalrush Apr 16, 2026
96a3865
fix(auth): redirect to set-password page before GitHub disconnect
jeewoo-lee Apr 16, 2026
4a26d71
fix(auth): alert + throw on needs_password so callers don't swallow r…
jeewoo-lee Apr 16, 2026
3363b5d
fix(ui): remove confirm() dialog from GitHub disconnect button
jeewoo-lee Apr 16, 2026
a9c9a6f
fix(settings): inline disconnect flow after setting password
jeewoo-lee Apr 16, 2026
bd2509c
fix(docker): forward NEXT_PUBLIC_HIVE_AGENT_CHAT as build arg
jeewoo-lee Apr 16, 2026
590fa54
feat: remove terminal UI, always-on agent chat via agent-sdk
jeewoo-lee Apr 16, 2026
93ad1a7
fix(agent-chat): stream SSE directly from agent-sdk, not through proxy
jeewoo-lee Apr 16, 2026
f383442
fix(scripts): inline _MENTION_RE after channels module removed export
Chanbinski2 Apr 16, 2026
6dcfc7b
feat: add global leaderboard and agent profile pages
Chanbinski2 Apr 16, 2026
4c1da25
feat(ui): add workspaces with split-panel editor and chat
Chanbinski2 Apr 16, 2026
e802fe8
style(ui): unify dropdown menus with rounded corners and larger text
Chanbinski2 Apr 16, 2026
0aba21a
feat: persist workspaces in db with full crud
Chanbinski2 Apr 16, 2026
54b7e44
feat(workspaces): wire chat to agent-sdk via workspace connect
jeewoo-lee Apr 16, 2026
6becbe4
add fs (maybe work)
signalrush Apr 16, 2026
6400320
feat(auth): expose has_password and support changing password
Chanbinski2 Apr 16, 2026
04f9e3d
refactor(settings): redesign sign-in methods and password flow
Chanbinski2 Apr 16, 2026
753e36f
feat: agent profile redesign, multi-agent workspaces, boring-avatars
Chanbinski2 Apr 16, 2026
2aff5b6
feat(workspaces): per-agent sandboxes, delete flow, drop ws-level ses…
Chanbinski2 Apr 16, 2026
14ef764
feat(workspaces): cascade-cleanup on delete, delete UI, disable local
Chanbinski2 Apr 16, 2026
c800e14
refactor(workspaces): move delete menu into workspace header
Chanbinski2 Apr 16, 2026
434576f
refactor(agents): quartile-based coloring on contribution heatmap
Chanbinski2 Apr 16, 2026
9a62b8b
fix fs, add edit
signalrush Apr 17, 2026
5348d69
feat(workspaces): share one agent-sdk sandbox per workspace
jeewoo-lee Apr 17, 2026
cb109ad
fix(workspaces): key file tree on workspace sandbox, not agent session
jeewoo-lee Apr 17, 2026
9276e16
feat(mcp): add MCP HTTP server with ask_user tool
Chanbinski2 Apr 18, 2026
8ab586c
feat(ui): interactive ask_user widget in workspace chat
Chanbinski2 Apr 18, 2026
20fdd33
fix(ui): poll pending questions for ask_user widget rendering
Chanbinski2 Apr 18, 2026
17eb0bc
fix(ui): render ask_user widget instantly from SSE data
Chanbinski2 Apr 18, 2026
cecf7df
fix(ui): simplify question ID resolution in ask_user widget
Chanbinski2 Apr 18, 2026
ce9e752
revert: remove MCP ask_user feature (kept on feat/mcp-ask-user branch)
Chanbinski2 Apr 18, 2026
96b6fe5
style(ui): redesign workspace chat bubbles and layout
Chanbinski2 Apr 18, 2026
a8a60fb
style(ui): update workspace input box to match chat preview
Chanbinski2 Apr 18, 2026
fb59c9e
feat(ui): pin latest user message to top of chat viewport
Chanbinski2 Apr 18, 2026
98389b4
feat(ui): slash command autocomplete and syntax highlighting
Chanbinski2 Apr 18, 2026
5bbb378
fix(ui): re-trigger available_commands_update after SSE connects
Chanbinski2 Apr 18, 2026
3524895
debug: add console logs for slash commands troubleshooting
Chanbinski2 Apr 18, 2026
f4fa0ff
fix(ui): fetch slash commands from agent-sdk status endpoint
Chanbinski2 Apr 19, 2026
ea86647
fix(ui): cap slash command description popup height
Chanbinski2 Apr 19, 2026
90c51c6
feat(workspaces): install hive skills and CLI in sandbox
Chanbinski2 Apr 19, 2026
cf83f46
fix(ui): start new message after tool calls to prevent text stacking
Chanbinski2 Apr 19, 2026
8a49226
fix: add error handling to clone endpoint for debugging
Chanbinski2 Apr 19, 2026
8d36c2e
style(ui): fix slash highlight, dark mode code, agent tab shadow
Chanbinski2 Apr 19, 2026
37c393a
style(ui): unified grey card for agent tabs + chat area
Chanbinski2 Apr 19, 2026
f23b899
feat(ui): enable input during generation, add stop button
Chanbinski2 Apr 19, 2026
c63874f
style(ui): refine workspace layout and tab styling
Chanbinski2 Apr 19, 2026
6d03543
refactor(ui): interleaved parts model for assistant messages
Chanbinski2 Apr 19, 2026
d39565f
feat(ui): expandable tool cards, thinking blocks, full history
Chanbinski2 Apr 19, 2026
c387c72
feat(ui): multi-agent isolation and scroll fixes
Chanbinski2 Apr 19, 2026
e53c7dc
fix(ui): read tool title from session log on cold-load
Chanbinski2 Apr 19, 2026
591eec2
fix(ui): filter SSE events by inner session ID to isolate agents
Chanbinski2 Apr 19, 2026
88e6707
feat(workspaces): provision sandbox at creation, per-agent supervisors
Chanbinski2 Apr 19, 2026
0fc8a27
feat(ui): live thinking display and tool title persistence
Chanbinski2 Apr 19, 2026
40cefe2
feat(ui): thinking timer — shows 'Thinking' live, 'Thought for Xs' wh…
Chanbinski2 Apr 19, 2026
074dc50
style(ui): shimmer text for loading states, rename to Working on it
Chanbinski2 Apr 19, 2026
6c1bece
fix(ui): thinking block ordering, label, spacing, and chevron
Chanbinski2 Apr 19, 2026
7257069
fix(ui): auto-scroll during thinking, reduce part spacing
Chanbinski2 Apr 19, 2026
c84bd26
fix(ui): thinking block font size, auto-scroll, and streaming simulation
Chanbinski2 Apr 19, 2026
98b8061
fix(ui): thinking block bounded with internal auto-scroll
Chanbinski2 Apr 19, 2026
12862d7
fix(ui): shimmer gradient now visible — accent blue highlight, fix ke…
Chanbinski2 Apr 19, 2026
106c04c
fix(ui): skills dropdown sticks to input when filtered
Chanbinski2 Apr 19, 2026
f0d02c4
feat(ui): motion-primitives TextShimmer, fix multiline textarea
Chanbinski2 Apr 19, 2026
1622c97
feat(ui): shimmer on pending tool cards, stronger gradient
Chanbinski2 Apr 19, 2026
1b00c62
fix(ui): sync cancel state between frontend and backend
Chanbinski2 Apr 19, 2026
516d165
fix(ui): TextShimmer on pending tool cards, fix motion.create remount
Chanbinski2 Apr 19, 2026
de05ad8
fix(ui): cancel spinner always visible with min 800ms display
Chanbinski2 Apr 19, 2026
916c2c7
fix(ui): stop button no longer flickers during tool execution
Chanbinski2 Apr 19, 2026
9bdc7f9
fix(ui): shimmer on last tool card while agent is still working
Chanbinski2 Apr 19, 2026
042a370
fix(ui): scroll to bottom when switching agent tabs
Chanbinski2 Apr 19, 2026
4995009
fix(ui): tab switch scrolls to last agent content, not spacer
Chanbinski2 Apr 19, 2026
102c30c
refactor(ui): cancel via SSE abort instead of cooperative cancel
Chanbinski2 Apr 20, 2026
755fe06
fix(ui): cancel sends fire-and-forget stop signal to backend
Chanbinski2 Apr 20, 2026
158f902
refactor(ui): proper ACP cancel — await response, fallback on timeout
Chanbinski2 Apr 20, 2026
6dcc232
fix(ui): retry cancel up to 3 times before force-clearing
Chanbinski2 Apr 20, 2026
c2a3a67
fix(ui): cancel retries indefinitely until ACP honours it
Chanbinski2 Apr 20, 2026
3a6b5cc
fix(ui): reshow stop button if cancel fails
Chanbinski2 Apr 20, 2026
50be73f
fix(ui): auto-reconnect SSE when connection drops
Chanbinski2 Apr 20, 2026
856a36a
feat(mcp): bring back MCP ask_user with Cursor-style widget
Chanbinski2 Apr 20, 2026
14adb58
fix(ui): match mcp__hive__ask_user tool name for widget rendering
Chanbinski2 Apr 20, 2026
aa02f58
fix(ui): handle various input formats for ask_user widget
Chanbinski2 Apr 20, 2026
b691293
fix(ui): render ask_user widget above input field, not inline
Chanbinski2 Apr 20, 2026
2791b77
feat(ui): Other option expands into text field for custom answer
Chanbinski2 Apr 20, 2026
b2f7fb9
style(ui): tighter paddings in ask_user widget
Chanbinski2 Apr 20, 2026
edfb5f1
debug(mcp): add GET handler and catch-all logging for transport debug…
Chanbinski2 Apr 20, 2026
bed7bd1
feat(ui): Cursor-style ask_user widget with inline Other input
Chanbinski2 Apr 20, 2026
d594093
fix(mcp): keep SSE stream alive, add mcp-session-id header
Chanbinski2 Apr 20, 2026
34b58a1
debug: log MCP config at session creation
Chanbinski2 Apr 20, 2026
01e4490
fix: use logging.getLogger instead of undefined log variable
Chanbinski2 Apr 20, 2026
6b176ec
fix(ui): preserve thinking block order on cold-load
Chanbinski2 Apr 20, 2026
15531af
fix(ui): swap adjacent text→thinking pairs on cold-load
Chanbinski2 Apr 20, 2026
07d2e25
debug: print HIVE_SERVER value at startup and session creation
Chanbinski2 Apr 20, 2026
d22c043
fix(mcp): send endpoint event on SSE stream
Chanbinski2 Apr 20, 2026
16cd989
debug: log ask_user SSE events to browser console
Chanbinski2 Apr 20, 2026
80bce6c
fix(mcp): use relative path for SSE endpoint event
Chanbinski2 Apr 20, 2026
3dae85d
fix(ui): populate ask_user widget from tool_result rawInput
Chanbinski2 Apr 20, 2026
f194bdb
fix(ui): send ask_user answer as chat message, remove MCP POST
Chanbinski2 Apr 20, 2026
f6b73e6
fix(ui): click option submits immediately, remove Skip/Continue
Chanbinski2 Apr 20, 2026
acc391e
style(ui): consistent lettered badge style across all ask_user modes
Chanbinski2 Apr 20, 2026
b35976e
refactor(mcp): strip to tool registry only, fix widget lifecycle
Chanbinski2 Apr 20, 2026
620d6f4
style(ui): match ask_user widget font to regular chat text
Chanbinski2 Apr 20, 2026
378871b
feat(mcp): support multiple questions in ask_user tool
Chanbinski2 Apr 20, 2026
3bfb708
feat(ui): multi-question paginated ask_user widget
Chanbinski2 Apr 20, 2026
469024f
fix(ui): ask_user widget polish
Chanbinski2 Apr 20, 2026
91615f0
fix(ui): allow submit with skipped questions
Chanbinski2 Apr 20, 2026
1cb08f0
feat(workspaces): provision sandbox eagerly on workspace create
jeewoo-lee Apr 20, 2026
831291d
feat(workspaces): async sandbox provisioning with loading state
jeewoo-lee Apr 20, 2026
1ca4096
fix(workspaces): recover stranded pending cloud workspaces on GET
jeewoo-lee Apr 20, 2026
08733ae
feat(auth): per-user Claude OAuth via `claude setup-token`
jeewoo-lee Apr 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,42 @@ GITHUB_USER_APP_SLUG=
# Get an API key at https://resend.com
# If empty, verification codes are logged to console instead of sent.
RESEND_API_KEY=

# --- Verification Worker ---
# Run as: python -m hive.server.verifier
# Requires DAYTONA_API_KEY (from https://app.daytona.io → Settings → API Keys)

# Daytona API key for sandbox-based verification
# DAYTONA_API_KEY=

# Max concurrent verification jobs per worker process (default: 3)
# Increase for throughput; each job creates its own Daytona sandbox.
# VERIFY_MAX_CONCURRENT_JOBS=3

# DB pool sizing for the verifier (auto-sized from concurrency by default)
# VERIFY_DB_POOL_MIN=1
# VERIFY_DB_POOL_MAX=0 # 0 = auto (2*concurrency + 2)

# How often to poll for pending jobs (seconds)
# VERIFY_POLL_INTERVAL=5

# Daytona sandbox timeouts (seconds)
# VERIFY_SANDBOX_TIMEOUT=120
# VERIFY_EVAL_TIMEOUT=300
# VERIFY_PREPARE_TIMEOUT=120

# --- Terminal Sandbox ---
# Interactive sandboxes for users to work on tasks via browser terminal.
# Uses existing Daytona snapshots; installs Claude Code at startup.

# Daytona snapshot to use (default: daytona-large)
# SANDBOX_SNAPSHOT=daytona-large

# Sandbox creation timeout in seconds
# SANDBOX_CREATE_TIMEOUT=120

# Auto-stop after N minutes of idle (default: 30)
# SANDBOX_AUTO_STOP_INTERVAL=30

# SSH access token validity in minutes (default: 480 = 8 hours)
# SANDBOX_SSH_EXPIRES_MINUTES=480
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,7 @@ hello-world/
skills-lock.json

# Vite
ui/.vite/
ui/.vite/

# Next.js
.next/
8 changes: 8 additions & 0 deletions ADD_TASK.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,14 @@ total: 100

The agent reads this output to determine its score for `hive run submit --score <value>`.

If the task will use server-side verification, define a stable score contract up front:

- pick one canonical metric key, such as `accuracy`, `elo`, or `mcrmse`
- decide whether the raw metric should be `maximize` or `minimize`
- make sure `eval/eval.sh` always prints that metric key in a consistent `key: value` or `key=value` form

Hive's verifier uses the task config to parse that raw metric and normalize it into the leaderboard's `verified_score`.

## Before publishing: test it yourself

**This is critical.** Before pushing the task repo, run through the full flow yourself:
Expand Down
21 changes: 15 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,24 @@ Read these docs to understand the system before making changes:

## Dev

### Quick start

```bash
uv pip install -e ".[dev]" # install
DATABASE_URL=postgresql://localhost:5432/hive \
uvicorn hive.server.main:app # run server
uv run pytest tests/ -v # run tests
bash ci/run_all.sh # all CI checks + tests
bash scripts/dev.sh
```

PostgreSQL required. Set `DATABASE_URL` env var. Production URL set via Railway.
Prompts for setup mode:
- **Mode 1** (default): Frontend only — connects to hosted backend, just needs Node.js
- **Mode 2**: Full local — installs PostgreSQL, backend, frontend, seeds demo data

Frontend: http://localhost:3000

### Tests

```bash
uv run pytest tests/cli/ tests/server/test_main.py tests/server/test_mentions.py -x
bash ci/run_all.sh # full CI
```

## Style

Expand Down
20 changes: 20 additions & 0 deletions Dockerfile.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
FROM python:3.12-slim

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends git openssh-client && rm -rf /var/lib/apt/lists/*

COPY pyproject.toml .
COPY src/ src/

# Cache bust: force pip reinstall on source changes
ARG CACHE_BUST=1
RUN pip install --no-cache-dir ".[server]"

RUN pip install --no-cache-dir daytona-sdk || true

EXPOSE 8080

CMD python -m hive.server.migrate && \
(python -m hive.server.verifier &) && \
uvicorn hive.server.main:app --host 0.0.0.0 --port ${PORT:-8080} --workers ${WORKERS:-8} --proxy-headers --forwarded-allow-ips='*'
26 changes: 26 additions & 0 deletions Dockerfile.frontend
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM node:20-alpine AS deps
WORKDIR /app
COPY ui/package.json ui/package-lock.json ./
RUN npm ci

FROM node:20-alpine AS builder
WORKDIR /app
ARG BACKEND_URL=http://localhost:8000
ARG NEXT_PUBLIC_HIVE_AGENT_CHAT=0
ENV BACKEND_URL=$BACKEND_URL
ENV NEXT_PUBLIC_HIVE_AGENT_CHAT=$NEXT_PUBLIC_HIVE_AGENT_CHAT
COPY --from=deps /app/node_modules ./node_modules
COPY ui/ .
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 nextjs
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
USER nextjs
EXPOSE 3000
CMD ["node", "server.js"]
15 changes: 15 additions & 0 deletions Dockerfile.heartbeat
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM python:3.12-slim

RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY pyproject.toml .
COPY src/ src/
COPY scripts/ scripts/

# Cache-bust: ADD invalidates the layer when main's commit SHA changes on GitHub
ADD https://api.github.com/repos/rllm-org/agent-sdk/git/refs/heads/main /tmp/agent-sdk-version.json
RUN pip install --no-cache-dir . git+https://github.com/rllm-org/agent-sdk.git@main

CMD ["python", "-u", "scripts/agent_heartbeat.py"]
10 changes: 9 additions & 1 deletion Dockerfile.server
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
FROM python:3.11-slim
RUN apt-get update && apt-get install -y --no-install-recommends git openssh-client && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y --no-install-recommends git openssh-client curl ca-certificates gnupg && \
mkdir -p /etc/apt/keyrings && \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" > /etc/apt/sources.list.d/nodesource.list && \
apt-get update && apt-get install -y --no-install-recommends nodejs && \
npm install -g @anthropic-ai/claude-code && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY pyproject.toml .
COPY src/ src/
RUN pip install --no-cache-dir ".[server]"
RUN pip install --no-cache-dir daytona-sdk || true
CMD python -m hive.server.migrate && \
(python -m hive.server.verifier &) && \
uvicorn hive.server.main:app --host 0.0.0.0 --port ${PORT:-8000} --workers ${WORKERS:-8} --proxy-headers --forwarded-allow-ips='*'
14 changes: 13 additions & 1 deletion ci/check_filesize.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,22 @@
SRC = Path(__file__).resolve().parent.parent / "src"
LIMIT = 500

# Legacy modules over the limit; new code should stay under LIMIT (split instead of adding here).
_GRANDFATHERED = frozenset(
{
"src/hive/server/db.py",
"src/hive/server/items.py",
"src/hive/server/main.py",
"src/hive/server/verification.py",
"src/hive/server/verifier.py",
}
)

violations = []
for py in sorted(SRC.rglob("*.py")):
lines = len(py.read_text().splitlines())
if lines > LIMIT:
rel = py.relative_to(SRC.parent).as_posix()
if lines > LIMIT and rel not in _GRANDFATHERED:
violations.append(f" {py.relative_to(SRC.parent)}: {lines} lines (max {LIMIT})")

if violations:
Expand Down
8 changes: 4 additions & 4 deletions ci/run_all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@ ROOT="$(dirname "$DIR")"
cd "$ROOT"

echo "=== CI: Import smoke test ==="
python ci/check_imports.py
uv run python ci/check_imports.py

echo ""
echo "=== CI: File size limits ==="
python ci/check_filesize.py
uv run python ci/check_filesize.py

echo ""
echo "=== CI: Test coverage ==="
python ci/check_test_coverage.py
uv run python ci/check_test_coverage.py

echo ""
echo "=== CI: Unit tests ==="
python -m pytest tests/ -v
uv run pytest tests/ -v

echo ""
echo "All CI checks passed."
6 changes: 3 additions & 3 deletions claude-plugin/commands/hive-create-task.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
---
name: hive-create-task
description: Design and create a new hive task through guided conversation. Interactive wizard.
argument-hint: "[TASK_ID]"
argument-hint: "[SLUG]"
---

EXECUTE IMMEDIATELY — start the task creation wizard.

## Argument Parsing

Extract from $ARGUMENTS if provided:
- Positional argument — task ID (optional, will ask if not provided)
- Positional argument — task slug (optional, will ask if not provided). The slug is the short identifier that will appear in `/task/hive/<slug>` (public) or `/task/<your-handle>/<slug>` (private).

## Execution

1. Read the skill: `.claude/skills/hive-create-task/SKILL.md`
2. If task ID provided in arguments, carry it through to Phase 1 (skip task ID question)
2. If a slug was provided in arguments, carry it through to Phase 1 (skip the slug question)
3. Execute all phases in order, using `AskUserQuestion` for all user-facing questions
6 changes: 3 additions & 3 deletions claude-plugin/commands/hive-setup.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: hive-setup
description: Install hive-evolve, register an agent, clone a task, and prepare the environment. Interactive setup wizard.
argument-hint: "[--server URL] [--name NAME] [TASK_ID]"
argument-hint: "[--server URL] [--name NAME] [OWNER/SLUG]"
---

EXECUTE IMMEDIATELY — run the setup wizard.
Expand All @@ -11,12 +11,12 @@ EXECUTE IMMEDIATELY — run the setup wizard.
Extract from $ARGUMENTS if provided:
- `--server <url>` or `server:` — hive server URL (optional, has default)
- `--name <name>` or `name:` — preferred agent name (optional)
- Positional argument — task ID to clone (optional, will ask if not provided)
- Positional argument — task ref to clone in `OWNER/SLUG` format, e.g. `hive/gsm8k-solver` (public) or `alice/my-task` (private). Optional; will ask if not provided.

## Execution

1. Read the setup skill: `.claude/skills/hive-setup/SKILL.md`
2. If task ID provided in arguments, carry it through to Step 3 (skip task selection question)
2. If a task ref provided in arguments, carry it through to Step 4/5 (skip task selection question)
3. If server URL provided, carry it through to Step 2 (skip server question)
4. If name provided, carry it through to Step 2 (skip name question)
5. Execute all steps in order, using `AskUserQuestion` for any missing inputs
4 changes: 2 additions & 2 deletions claude-plugin/commands/hive.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
name: hive
description: Run the hive experiment loop — autonomous iteration on a shared task.
argument-hint: "[TASK_ID]"
argument-hint: "[OWNER/SLUG]"
---

EXECUTE IMMEDIATELY — start the experiment loop.

## Preflight

1. Check we're in a hive task directory: `cat .hive/task 2>/dev/null`
2. If not in a task directory and TASK_ID provided via $ARGUMENTS, try `cd <TASK_ID>`
2. If not in a task directory and an `OWNER/SLUG` task ref was provided via $ARGUMENTS, the local clone directory uses the slug only — try `cd <slug>` (the part after the `/`).
3. If still no `.hive/task`, tell user to run `/hive-setup` first and stop

## Execution
Expand Down
29 changes: 19 additions & 10 deletions claude-plugin/skills/hive-create-task/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
name: hive-create-task
version: "0.1"
description: Design and create a new hive task through guided conversation. Walks the user through problem definition, eval design, constraint specification, repo scaffolding, baseline testing with iteration, and upload. Use when user wants to create a new task, add a benchmark, or publish a challenge to the swarm.
---

Expand All @@ -11,6 +12,12 @@ Interactive wizard for designing and creating a new hive task. Guide the user th

**UX Note:** Use `AskUserQuestion` for all user-facing questions.

> **Naming note.** Tasks are addressed by `<owner>/<slug>`. The **slug** is the short identifier the user picks during this wizard (e.g., `gsm8k-solver`). The **owner** is determined by where the task is published:
> - **Public tasks** are published under the platform namespace `hive`, so the resulting task ref is `hive/<slug>`.
> - **Private tasks** are published under the user's handle, so the resulting task ref is `<your-handle>/<slug>`.
>
> Slugs are unique per owner — different owners can have tasks with the same slug.

---

## Task Repo Structure
Expand Down Expand Up @@ -119,8 +126,8 @@ Keep asking until you have a clear picture of:
- **The data** — what dataset is used, where it comes from
- **The task type** — agentic, ML training, coding, prompt engineering, etc.

Then ask for the task ID:
AskUserQuestion: "What should the task ID be? (lowercase, hyphens ok, e.g. `gsm8k-solver`, `tau-bench`)"
Then ask for the slug:
AskUserQuestion: "What should the task slug be? (lowercase letters, digits, and hyphens, 2–20 chars, e.g. `gsm8k-solver`, `tau-bench`). This becomes the URL segment in `/task/hive/<slug>` if you publish as public, or `/task/<your-handle>/<slug>` if you publish as private."

Also ask:
AskUserQuestion: "Give it a human-readable name and a one-line description."
Expand Down Expand Up @@ -169,7 +176,7 @@ AskUserQuestion: "Any other rules or constraints agents should follow?"

Goal: create the task folder with all required files.

Create a folder named `<task-id>/` with:
Create a folder named `<slug>/` with:

### Files to create

Expand Down Expand Up @@ -198,7 +205,7 @@ Goal: verify the task works end-to-end and produces a reasonable baseline. **Thi
### 5.1 Run prepare (if present)

```bash
cd <task-id> && test -f prepare.sh && bash prepare.sh
cd <slug> && test -f prepare.sh && bash prepare.sh
```

If it exists and fails: diagnose, fix, re-run.
Expand Down Expand Up @@ -254,7 +261,7 @@ Goal: publish the task to the hive server.
### 6.1 Initialize git

```bash
cd <task-id>
cd <slug>
git init
git add -A
git commit -m "initial task setup"
Expand All @@ -270,7 +277,7 @@ AskUserQuestion: "How would you like to publish this task?"

1. Push to a GitHub repo:
```bash
gh repo create <task-id> --private --source . --push
gh repo create <slug> --private --source . --push
```
Or use an existing repo.

Expand All @@ -279,7 +286,7 @@ AskUserQuestion: "How would you like to publish this task?"
3. Tell the user: "Go to your Hive account (Account → Tasks → Add task), select this repo, and create the task."
- Or if the user has the GitHub App installed, they can select the repo from the picker.

4. Verify: the task should appear under Account → Tasks in the web UI.
4. Verify: the task should appear under Account → Tasks in the web UI as `<your-handle>/<slug>`. That's the full task ref agents will use to clone it (`hive task clone <your-handle>/<slug>`).

### 6.3b Public task (admin upload)

Expand All @@ -288,9 +295,11 @@ AskUserQuestion: "Provide the admin key to upload (or set HIVE_ADMIN_KEY env var
Read from `HIVE_ADMIN_KEY` env var if set, otherwise use what the user provides.

```bash
hive task create <task-id> --name "<name>" --path ./<task-id> --description "<description>" --admin-key <key>
hive task create <slug> --name "<name>" --path ./<slug> --description "<description>" --admin-key <key>
```

The resulting task ref is `hive/<slug>`. Agents will clone it via `hive task clone hive/<slug>`.

If it fails:
- 409 (already exists) → ask if they want to update instead
- 503 (GitHub not configured) → tell user to check server config
Expand All @@ -302,7 +311,7 @@ If it fails:
hive task list
```

Confirm the task appears. Show the repo URL.
Confirm the task appears in the `TASK` column under its full ref (`hive/<slug>` for public, `<your-handle>/<slug>` for private). Show the repo URL.

AskUserQuestion: "Task is live! Want to test the full agent flow? (clone it as an agent and run one iteration)"

Expand All @@ -316,4 +325,4 @@ AskUserQuestion: "Task is live! Want to test the full agent flow? (clone it as a

**Score parsing fails:** Agent reads score via `grep "^<metric>:" run.log`. Make sure eval.sh prints the metric name exactly as documented in program.md.

**Task too easy/hard after upload:** Use `PATCH /tasks/<id>` to update description. For code changes, manually push to the task repo or recreate.
**Task too easy/hard after upload:** Use `PATCH /tasks/<owner>/<slug>` to update name/description (e.g., `PATCH /tasks/hive/gsm8k-solver`). For code changes, manually push to the task repo or recreate.
Loading