Common Patterns
@requires_sandbox("main")
async def my_tool(param: str, tool_context: ToolContext) -> dict:
from aigise import get_aigise_session
from aigise.utils.agent_utils import get_aigise_session_id_from_context
session_id = get_aigise_session_id_from_context(tool_context)
session = get_aigise_session(session_id)
sandbox = session.sandboxes.get_sandbox("main")
# ... use sandbox ...
@requires_sandbox("main", "joern")
async def analyze_code(path: str, tool_context: ToolContext) -> dict:
session_id = get_aigise_session_id_from_context(tool_context)
session = get_aigise_session(session_id)
main_sandbox = session.sandboxes.get_sandbox("main")
joern_sandbox = session.sandboxes.get_sandbox("joern")
# ... use both sandboxes ...
# Tools are automatically loaded from:
# - src/aigise/sandbox_scripts/bash_tools/
# - ~/.local/plugins/aigise/tools/
# Each tool directory should have SKILL.md with metadata
Pattern: Agent Composition
def mk_agent(aigise_session_id: str) -> AigiseAgent:
sub_agent = AigiseAgent(...)
sub_agent_tool = AgentTool(agent=sub_agent)
root_agent = AigiseAgent(
tools=[sub_agent_tool, ...],
sub_agents=[...]
)
return root_agent
See Also