Files
hive/scripts/debug_queen_prompt.py
2026-04-29 15:47:18 -07:00

187 lines
4.9 KiB
Python

#!/usr/bin/env python
"""Debug tool to print the queen's phase-specific prompts."""
from framework.agents.queen.nodes import (
_appendices,
_queen_behavior_always,
_queen_behavior_independent,
_queen_behavior_running,
_queen_character_core,
_queen_role_independent,
_queen_role_running,
_queen_tools_independent,
_queen_tools_running,
)
_DEFAULT_WORKER_IDENTITY = (
"\n\n# Worker Profile\n"
"No worker agent loaded. You are operating independently.\n"
"Design or build the agent to solve the user's problem "
"according to your current phase."
)
def print_planning_prompt(worker_identity: str | None = None) -> None:
"""Print the composed planning phase prompt."""
from framework.agents.queen.nodes import (
_planning_knowledge,
_queen_behavior_planning,
_queen_role_planning,
_queen_tools_planning,
)
wi = worker_identity or _DEFAULT_WORKER_IDENTITY
prompt = (
_queen_character_core
+ _queen_role_planning
+ _queen_tools_planning
+ _queen_behavior_always
+ _queen_behavior_planning
+ _planning_knowledge
+ wi
)
print("=" * 80)
print("QUEEN PLANNING PHASE PROMPT")
print("=" * 80)
print(prompt)
print("=" * 80)
print(f"\nTotal length: {len(prompt):,} characters")
def print_building_prompt(worker_identity: str | None = None) -> None:
"""Print the composed building phase prompt."""
from framework.agents.queen.nodes import (
_building_knowledge,
_gcu_building_section,
_queen_behavior_building,
_queen_phase_7,
_queen_role_building,
_queen_tools_building,
)
wi = worker_identity or _DEFAULT_WORKER_IDENTITY
prompt = (
_queen_character_core
+ _queen_role_building
+ _queen_tools_building
+ _queen_behavior_always
+ _queen_behavior_building
+ _building_knowledge
+ _gcu_building_section
+ _queen_phase_7
+ _appendices
+ wi
)
print("=" * 80)
print("QUEEN BUILDING PHASE PROMPT")
print("=" * 80)
print(prompt)
print("=" * 80)
print(f"\nTotal length: {len(prompt):,} characters")
def print_staging_prompt(worker_identity: str | None = None) -> None:
"""Print the composed staging phase prompt."""
from framework.agents.queen.nodes import (
_queen_behavior_staging,
_queen_role_staging,
_queen_tools_staging,
)
wi = worker_identity or _DEFAULT_WORKER_IDENTITY
prompt = (
_queen_character_core
+ _queen_role_staging
+ _queen_tools_staging
+ _queen_behavior_always
+ _queen_behavior_staging
+ wi
)
print("=" * 80)
print("QUEEN STAGING PHASE PROMPT")
print("=" * 80)
print(prompt)
print("=" * 80)
print(f"\nTotal length: {len(prompt):,} characters")
def print_running_prompt(worker_identity: str | None = None) -> None:
"""Print the composed running phase prompt.
Args:
worker_identity: Optional worker identity string. If None, shows
the "no worker loaded" placeholder.
"""
wi = worker_identity or _DEFAULT_WORKER_IDENTITY
prompt = (
_queen_character_core
+ _queen_role_running
+ _queen_tools_running
+ _queen_behavior_always
+ _queen_behavior_running
+ wi
)
print("=" * 80)
print("QUEEN RUNNING PHASE PROMPT")
print("=" * 80)
print(prompt)
print("=" * 80)
print(f"\nTotal length: {len(prompt):,} characters")
def print_independent_prompt() -> None:
"""Print the composed independent phase prompt."""
prompt = (
_queen_character_core
+ _queen_role_independent
+ _queen_tools_independent
+ _queen_behavior_always
+ _queen_behavior_independent
)
print("=" * 80)
print("QUEEN INDEPENDENT PHASE PROMPT")
print("=" * 80)
print(prompt)
print("=" * 80)
print(f"\nTotal length: {len(prompt):,} characters")
if __name__ == "__main__":
import sys
phase = sys.argv[1] if len(sys.argv) > 1 else "planning"
if phase == "all":
print_planning_prompt()
print("\n\n")
print_building_prompt()
print("\n\n")
print_staging_prompt()
print("\n\n")
print_running_prompt()
print("\n\n")
print_independent_prompt()
elif phase == "planning":
print_planning_prompt()
elif phase == "building":
print_building_prompt()
elif phase == "staging":
print_staging_prompt()
elif phase == "running":
print_running_prompt()
elif phase == "independent":
print_independent_prompt()
else:
print(f"Unknown phase: {phase}")
print("Usage: uv run scripts/debug_queen_prompt.py [planning|building|staging|running|independent|all]")
sys.exit(1)