Skip to content

Commit 6a8286d

Browse files
Merge pull request #5462 from aden-hive/feat/open-hive
Feat/open hive
2 parents b002037 + 680024f commit 6a8286d

File tree

125 files changed

+22718
-20622
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+22718
-20622
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ coverage/
4646

4747
# TypeScript
4848
*.tsbuildinfo
49+
vite.config.d.ts
4950

5051
# Python
5152
__pycache__/

Makefile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: lint format check test install-hooks help
1+
.PHONY: lint format check test install-hooks help frontend-install frontend-dev frontend-build
22

33
help: ## Show this help
44
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
@@ -26,3 +26,12 @@ test: ## Run all tests
2626
install-hooks: ## Install pre-commit hooks
2727
uv pip install pre-commit
2828
pre-commit install
29+
30+
frontend-install: ## Install frontend npm packages
31+
cd core/frontend && npm install
32+
33+
frontend-dev: ## Start frontend dev server
34+
cd core/frontend && npm run dev
35+
36+
frontend-build: ## Build frontend for production
37+
cd core/frontend && npm run build

core/framework/agents/credential_tester/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
pause_nodes,
2525
requires_account_selection,
2626
skip_credential_validation,
27-
skip_guardian,
2827
terminal_nodes,
2928
)
3029
from .config import default_config
@@ -48,7 +47,6 @@
4847
"pause_nodes",
4948
"requires_account_selection",
5049
"skip_credential_validation",
51-
"skip_guardian",
5250
"terminal_nodes",
5351
# Internal list helpers (exposed for testing)
5452
"_list_aden_accounts",

core/framework/agents/credential_tester/agent.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,6 @@ def list_connected_accounts() -> list[dict]:
210210
skip_credential_validation = True
211211
"""Don't validate credentials at load time — we don't know which provider yet."""
212212

213-
skip_guardian = True
214-
"""Don't attach the Hive Coder guardian — this is a standalone utility agent."""
215-
216213
requires_account_selection = True
217214
"""Signal TUI to show account picker before starting the agent."""
218215

core/framework/agents/hive_coder/agent.py

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@
1212
from framework.runtime.execution_stream import EntryPointSpec
1313

1414
from .config import default_config, metadata
15-
from .nodes import coder_node
15+
from .nodes import coder_node, queen_node
16+
17+
# ticket_receiver is no longer needed — the queen runs as an independent
18+
# GraphExecutor and receives escalation tickets via inject_event().
19+
# Keeping the import commented for reference:
20+
# from .ticket_receiver import TICKET_RECEIVER_ENTRY_POINT
1621

1722
# Goal definition
1823
goal = Goal(
@@ -90,7 +95,8 @@
9095
],
9196
)
9297

93-
# Nodes — single coder node (guardian is now auto-attached by the framework)
98+
# Nodes: primary coder node only. The queen runs as an independent
99+
# GraphExecutor with queen_node — not as part of this graph.
94100
nodes = [coder_node]
95101

96102
# No edges needed — single forever-alive event_loop node
@@ -102,7 +108,8 @@
102108
pause_nodes = []
103109
terminal_nodes = [] # Forever-alive: loops until user exits
104110

105-
# No async entry points — guardian is now auto-attached via attach_guardian()
111+
# No async entry points needed — the queen is now an independent executor,
112+
# not a secondary graph receiving events via add_graph().
106113
async_entry_points = []
107114

108115
# Module-level variables read by AgentRunner.load()
@@ -125,12 +132,48 @@
125132
}
126133

127134

135+
# ---------------------------------------------------------------------------
136+
# Queen graph — runs as an independent persistent conversation in the TUI.
137+
# Loaded by _load_judge_and_queen() in app.py, NOT by AgentRunner.
138+
# ---------------------------------------------------------------------------
139+
140+
queen_goal = Goal(
141+
id="queen-manager",
142+
name="Queen Manager",
143+
description=(
144+
"Manage the worker agent lifecycle and serve as the user's primary "
145+
"interactive interface. Triage health escalations from the judge."
146+
),
147+
success_criteria=[],
148+
constraints=[],
149+
)
150+
151+
queen_graph = GraphSpec(
152+
id="queen-graph",
153+
goal_id=queen_goal.id,
154+
version="1.0.0",
155+
entry_node="queen",
156+
entry_points={"start": "queen"},
157+
terminal_nodes=[],
158+
pause_nodes=[],
159+
nodes=[queen_node],
160+
edges=[],
161+
conversation_mode="continuous",
162+
loop_config={
163+
"max_iterations": 200,
164+
"max_tool_calls_per_turn": 10,
165+
"max_history_tokens": 32000,
166+
},
167+
)
168+
169+
128170
class HiveCoderAgent:
129171
"""
130172
Hive Coder — builds Hive agent packages from natural language.
131173
132174
Single-node architecture: the coder runs in a continuous while(true) loop.
133-
The guardian watchdog is auto-attached by the framework in TUI mode.
175+
The queen runs as an independent GraphExecutor (loaded by the TUI via
176+
_load_judge_and_queen), not as part of this graph.
134177
"""
135178

136179
def __init__(self, config=None):

core/framework/agents/hive_coder/guardian.py

Lines changed: 0 additions & 96 deletions
This file was deleted.

0 commit comments

Comments
 (0)