Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
7d416f5
translate korean
LunaStev Jan 24, 2026
e75253f
add missed
LunaStev Jan 24, 2026
e2f3879
fix: align AnthropicProvider.complete with LLMProvider (response_format)
AysunItai Jan 24, 2026
ce39cb7
feat(skills): add support for setting `api_key` and `api_base`
RussellLuo Jan 25, 2026
c454870
add code-first agent example and isolate core dependencies
Jan 25, 2026
715df54
chore: remove generated agent logs and ignore them
Jan 25, 2026
8fe51a8
fix: remove duplicate web_search tool registration
himanshu748 Jan 25, 2026
86686fc
docs: update skills directory structure to match actual output
himanshu748 Jan 25, 2026
073be1f
docs: clarify that exports/ is user-generated, not included in repo
charan2456 Jan 25, 2026
a5fcb89
feat(file_system_toolkits): add encoding and max_size params to view_…
yumosx Jan 25, 2026
8333ba6
fix(docs): remove hardcoded path and add venv troubleshooting
Koushith Jan 25, 2026
491e658
fix(graph): implement exponential backoff for node retries
vakrahul Jan 25, 2026
1527a05
fix(graph): Respect node_spec.max_retries configuration
Jan 25, 2026
48b38e5
Fix: Unsanitized expression evaluation needs fix to use the safe eval…
Shamanth-8 Jan 25, 2026
8297837
fix(runtime): execution stream memory leak
fermano Jan 25, 2026
05b18fb
fix(tools): remove duplicate registration of web search tool
nihalmorshed Jan 25, 2026
57781c5
docs(README): update tool names and descriptions in README inside "to…
nihalmorshed Jan 25, 2026
f0c9d4e
fix(llm): use LiteLLMProvider instead of hardcoded AnthropicProvider
guillermop2002 Jan 25, 2026
7f3bc81
fix(runtime): execution stream memory leak -- adjust gitignore
fermano Jan 25, 2026
df7b950
fix(graph): check entire string for code indicators in hallucination …
Pradyumn-Tendulkar Jan 25, 2026
e009de1
"Claude PR Assistant workflow"
bryanadenhq Jan 25, 2026
7ed5006
"Claude Code Review workflow"
bryanadenhq Jan 25, 2026
08beffe
added claude issue triage workflow
bryanadenhq Jan 25, 2026
c53acfd
set model
bryanadenhq Jan 25, 2026
b9b0c2c
Merge pull request #451 from adenhq/add-claude-github-actions-1769383…
TimothyZhang7 Jan 25, 2026
3ee380d
Merge pull request #166 from LunaStev/translate/korean
RichardTang-Aden Jan 25, 2026
70693f4
Merge pull request #231 from himanshu748/docs/update-skills-directory…
bryanadenhq Jan 25, 2026
f0deedb
Merge pull request #174 from AysunItai/fix/anthropic-provider-respons…
RichardTang-Aden Jan 26, 2026
e8c9cc6
chore: use GITHUB_TOKEN in action
TimothyZhang7 Jan 26, 2026
14faca3
fix: remove oidc token permission check
TimothyZhang7 Jan 26, 2026
7e630b9
Merge pull request #259 from charan2456/fix/docs-exports-clarification
bryanadenhq Jan 26, 2026
9d1b1ab
Merge pull request #187 from RussellLuo/improve-runtime-config
RichardTang-Aden Jan 26, 2026
995ab8f
fix: allow triage for all issues
TimothyZhang7 Jan 26, 2026
126bbf1
Merge pull request #228 from himanshu748/fix/remove-duplicate-web-sea…
bryanadenhq Jan 26, 2026
1b47d1c
Merge remote-tracking branch 'upstream/main' into graph
yumosx Jan 26, 2026
5c2288f
Merge pull request #397 from Tahir-yamin/fix/respect-node-max-retries
bryanadenhq Jan 26, 2026
9859dc6
chore: fixed python tests
bryanadenhq Jan 26, 2026
28b0b62
Merge pull request #470 from adenhq/chore-fix-python-tests
bryanadenhq Jan 26, 2026
53aebd5
docs: add issue assignment for contributors
Jan 26, 2026
e6af1f6
Merge pull request #427 from guillermop2002/fix/remove-hardcoded-anth…
TimothyZhang7 Jan 26, 2026
acaa89f
Merge pull request #434 from nihalmorshed/documentation/fix-tool-name…
TimothyZhang7 Jan 26, 2026
5923147
chore(graph): fix lint issues in retry backoff loggings
vakrahul Jan 26, 2026
0653519
verifying
vakrahul Jan 26, 2026
7004fff
Merge pull request #402 from Shamanth-8/fix/rce-safe-eval
bryanadenhq Jan 26, 2026
1a7ed9c
style: fix F821 undefined name and E501 line length errors
vakrahul Jan 26, 2026
2f7cf3b
chore: remove the outdated architecture documentation
Jan 26, 2026
80f938a
Fix validate warning for model-specific API keys
Jan 26, 2026
4eac1b9
Merge pull request #475 from aiSynergy37/fix/validate-api-key-warning
TimothyZhang7 Jan 26, 2026
89dbc63
test(file_system): add tests for file viewing edge cases
yumosx Jan 26, 2026
35ef467
Merge pull request #361 from Koushith/fix/docs-hardcoded-path-and-venv
RichardTang-Aden Jan 26, 2026
854a867
Merge pull request #293 from yumosx/graph
bryanadenhq Jan 26, 2026
fa5d505
Merge pull request #447 from pradyten/fix/hallucination-detection-ful…
RichardTang-Aden Jan 26, 2026
7351675
Merge pull request #222 from Chrishabh2002/feat/manual-agent-codefirst
RichardTang-Aden Jan 26, 2026
ae37d98
docs: architecture readme
TimothyZhang7 Jan 26, 2026
0233065
Merge pull request #489 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
5168ed3
fix(tools): validate Content-Type in web_scrape tool (Closes #487)
gaurav-code098 Jan 26, 2026
d558bf4
feat(tools): add CSV tools with DuckDB SQL support
Hundao Jan 26, 2026
af3b8b1
Fix: Add MockLLMProvider to enable mock mode execution
savankansagara1 Jan 26, 2026
1c78174
fix(llm): correct type annotation from lowercase `callable` to `Calla…
Kira714 Jan 26, 2026
d900f38
fix(executor): add type validation for session state memory
Kira714 Jan 26, 2026
734fe1e
fix(runtime): use safe dictionary access in trigger_and_wait()
Kira714 Jan 26, 2026
6934b33
fix(stream): avoid private Semaphore._value attribute access
Kira714 Jan 26, 2026
b2acfb5
change the file tool register bug
Ranxin2023 Jan 26, 2026
8a86787
Merge branch 'main' of https://github.com/Ranxin2023/hive
Ranxin2023 Jan 26, 2026
7e65ab0
Revert local Claude settings
Ranxin2023 Jan 26, 2026
5b46132
docs(readme): fix broken architecture documentation link
subhampanja28 Jan 26, 2026
46bdedc
ruff check fix
bryanadenhq Jan 26, 2026
dae6321
Fix race condition in ConcurrentStorage.stop() causing data loss
Jan 26, 2026
6d7d472
docs: clarify Windows environment expectations and WSL recommendation
ayush123-bit Jan 26, 2026
40e39d2
docs(llm): add DeepSeek models support documentation and examples
SoulSniper-V2 Jan 26, 2026
6ae38b6
chore(actions): automated bot
TimothyZhang7 Jan 26, 2026
aa34131
Merge pull request #791 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
0bbe2d5
Merge pull request #444 from fermano/fix/executionstream-oom
bryanadenhq Jan 26, 2026
f3c9c59
Merge pull request #610 from Kira714/fix/semaphore-private-access
bryanadenhq Jan 26, 2026
d1cfef5
fix: issue dedupe action
TimothyZhang7 Jan 26, 2026
7d462ff
feat(actions): auto dedupe workflow
TimothyZhang7 Jan 26, 2026
2f852a7
Merge branch 'adenhq:main' into main
TimothyZhang7 Jan 26, 2026
551e648
Merge pull request #810 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
ac64660
chore: enforce pr requirement
TimothyZhang7 Jan 26, 2026
a6bda96
Merge branch 'adenhq:main' into main
TimothyZhang7 Jan 26, 2026
751715b
Merge pull request #822 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
7fe21d9
fix: pr requirements
TimothyZhang7 Jan 26, 2026
5c266d6
Merge branch 'adenhq:main' into main
TimothyZhang7 Jan 26, 2026
95c481a
Merge pull request #824 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
6834dcf
fix: backfill pr requirements
TimothyZhang7 Jan 26, 2026
051aa4f
Merge pull request #840 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
4575540
fix: pr requirements
TimothyZhang7 Jan 26, 2026
1165858
Merge branch 'adenhq:main' into main
TimothyZhang7 Jan 26, 2026
4852d7f
Merge pull request #842 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
414d86f
Merge pull request #672 from subham-panja/docs/fix-architecture-link
bryanadenhq Jan 26, 2026
cbd34db
Merge pull request #665 from Ranxin2023/main
bryanadenhq Jan 26, 2026
0a7aa62
Merge pull request #608 from Kira714/fix/agent-runtime-keyerror
bryanadenhq Jan 26, 2026
8c39dad
Merge pull request #605 from Kira714/fix/session-state-dict-validatio…
bryanadenhq Jan 26, 2026
9be036a
Merge pull request #602 from Kira714/fix/callable-type-annotation-599
bryanadenhq Jan 26, 2026
a180d78
Merge pull request #782 from ayush123-bit/docs/windows-environment-cl…
bryanadenhq Jan 26, 2026
82c32e8
refactor(mcp): replace print() with logging in setup scripts
Aryanycoder Jan 26, 2026
e0544a5
fix: pr requirements
TimothyZhang7 Jan 26, 2026
b6a77ff
Merge branch 'adenhq:main' into main
TimothyZhang7 Jan 26, 2026
3279686
Merge pull request #858 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
236e8e8
fix: explain the pr requirement
TimothyZhang7 Jan 26, 2026
59db8f9
Merge branch 'adenhq:main' into main
TimothyZhang7 Jan 26, 2026
63010d4
Merge pull request #861 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
8516eba
feat(testing): add configurable LLM provider to LLMJudge
pradyten Jan 26, 2026
4f3d34d
fix: consolidate dedupe and triage
TimothyZhang7 Jan 26, 2026
e1346ae
fix: include actual status check in pr requirements
TimothyZhang7 Jan 26, 2026
07077db
Merge branch 'adenhq:main' into main
TimothyZhang7 Jan 26, 2026
39a2a34
Merge pull request #874 from TimothyZhang7/main
TimothyZhang7 Jan 26, 2026
22358a2
Merge branch 'main' into fix/ruff-tests
bryanadenhq Jan 26, 2026
d9c696a
fixed all linter errors
bryanadenhq Jan 26, 2026
ed25ef7
Merge pull request #762 from vishalharkal15/fix/concurrent-storage-ra…
TimothyZhang7 Jan 26, 2026
81ad85d
Merge pull request #876 from adenhq/fix/ruff-tests
bryanadenhq Jan 26, 2026
60f2e67
feat(validation): add Pydantic model validation for LLM outputs
Himanshu-ABES Jan 25, 2026
69ad0be
Merge branch 'main' into feat/llm-judge-configurable-provider
pradyten Jan 26, 2026
798f3cf
Merge pull request #349 from Himanshu-ABES/feat/pydantic-llm-validation
acho-dev Jan 26, 2026
0a8c30c
Merge pull request #788 from SoulSniper-V2/feat/add-deepseek-docs
RichardTang-Aden Jan 26, 2026
396e5c3
Merge pull request #528 from gaurav-code098/fix/web-scrape-content-type
bryanadenhq Jan 26, 2026
25fabd8
Merge pull request #576 from savankansagara1/fix/mock-mode-llm-provider
bryanadenhq Jan 26, 2026
d064c98
fixed linter
bryanadenhq Jan 26, 2026
5cf25c6
Merge pull request #906 from adenhq/fix/ruff-tests
bryanadenhq Jan 26, 2026
9230ac6
Merge pull request #871 from pradyten/feat/llm-judge-configurable-pro…
bryanadenhq Jan 26, 2026
f3df70e
fix: add consistent JSON validation error handling in agent_builder_s…
Mate0101 Jan 26, 2026
b07aff1
Merge branch 'adenhq:main' into fix/json-validation-error-handling
JohnnyWalker010 Jan 26, 2026
2b86046
fix(types): correct type annotation from lowercase 'callable' to 'Cal…
not-anas-ali Jan 27, 2026
8523324
fix(graph): add logging for JSON parsing failures in worker_node
saboor2632 Jan 27, 2026
0cf9e39
docs(tools): fix tool name in README table (execute_command → execute…
adionit7 Jan 27, 2026
e57cad7
ci: make Validate Agent Exports skip clearly when exports/ is missing…
adionit7 Jan 27, 2026
e846ad6
refactor: implement provider-agnostic logic for test templates
Jan 27, 2026
1631d01
merge: resolve conflicts in executor.pyx
vakrahul Jan 27, 2026
fc36a5e
docs: remove outdated Docker Compose references
adionit7 Jan 27, 2026
68264b5
style: fix linting issues in output_cleaner.py
vakrahul Jan 27, 2026
ed88129
Merge pull request #927 from saboor2632/fix/worker-node-json-logging
bryanadenhq Jan 27, 2026
3eb964e
Merge pull request #933 from adionit7/docs/fix-execute-command-tool-n…
bryanadenhq Jan 27, 2026
b0435a1
Merge branch 'adenhq:main' into refactor/provider-agnostic-prompts
TanujaNair03 Jan 27, 2026
8525aec
Merge pull request #934 from adionit7/fix/validate-exports-skip-when-…
bryanadenhq Jan 27, 2026
6d025c8
Merge pull request #946 from not-anas-ali/fix/callable-type-annotations
bryanadenhq Jan 27, 2026
a122345
fix(graph): restore node.max_retries and fix type check per review
vakrahul Jan 27, 2026
03910d5
Merge branch 'main' into fix/graph-retry-backoff
vakrahul Jan 27, 2026
e59bb2d
style: fix linting issues (whitespace and newline)
Jan 27, 2026
500876d
style: add required trailing newline to prompts.py
Jan 27, 2026
bc8cdfd
Merge pull request #941 from vakrahul/fix/graph-retry-backoff
bryanadenhq Jan 27, 2026
39831cf
feat: parallel execution framework
TimothyZhang7 Jan 27, 2026
330fbb1
feature(credentials): credential store arch
TimothyZhang7 Jan 27, 2026
d1e6101
Merge pull request #1007 from TimothyZhang7/feature/credential-manage…
TimothyZhang7 Jan 27, 2026
a4b0c66
Merge pull request #558 from Hundao/feature/csv-tools
Hundao Jan 27, 2026
6acdb65
Merge pull request #948 from TanujaNair03/refactor/provider-agnostic-…
Hundao Jan 27, 2026
407816d
style: fix ruff quote style violations (Q000)
AryanyAI Jan 27, 2026
3605f37
refactor: make LLMJudge provider-agnostic with OpenAI support (#1103)
Jan 27, 2026
598cc8b
refactor: provider-agnostic LLMJudge with ruff styling fixes (#1103)
Jan 27, 2026
9d39c09
Merge pull request #973 from AryanyAI/refactor/logging-mcp-scripts
Hundao Jan 27, 2026
a59d6ac
refactor(tools): add multi-provider support to web_search tool (#795)
vrijmetse Jan 27, 2026
112b1ba
fix(memory): patch ConcurrentStorage leak with WeakValueDictionary (I…
Jan 27, 2026
0381a5c
Merge branch 'adenhq:main' into fix/concurrent-storage-file-locks-leak
Tahir-yamin Jan 27, 2026
197f4f9
Merge pull request #1353 from Tahir-yamin/fix/concurrent-storage-file…
TimothyZhang7 Jan 27, 2026
e1bea18
Merge pull request #1113 from TanujaNair03/refactor/llm-judge-agnostic
TimothyZhang7 Jan 27, 2026
c441494
Merge pull request #1368 from adenhq/main
TimothyZhang7 Jan 27, 2026
8923011
fix(list_dir): add isdir check before listing
Jan 27, 2026
f6c5c5c
Merge branch 'main' into feature/parallel-fanout
TimothyZhang7 Jan 27, 2026
e61bdfc
test(arch): fanout/fanin
TimothyZhang7 Jan 27, 2026
075e917
fix: retry logic broken by merge conflict
TimothyZhang7 Jan 27, 2026
9c28284
Merge pull request #1428 from TimothyZhang7/feature/parallel-fanout
TimothyZhang7 Jan 27, 2026
d8496c4
fix: linter
TimothyZhang7 Jan 27, 2026
e4f451e
fix: lint issues with new enforcement
TimothyZhang7 Jan 27, 2026
5d79a70
fix: precommit hooks for different pyproject
TimothyZhang7 Jan 27, 2026
ad968a0
Merge pull request #1458 from TimothyZhang7/release/v_0_3_0
TimothyZhang7 Jan 27, 2026
8695f3f
chore: fix ruff
RichardTang-Aden Jan 28, 2026
9ef3628
feat: allow micro fixes be passed as a PR
RichardTang-Aden Jan 28, 2026
688451b
Merge pull request #1521 from adenhq/feat--allow-Micro-fixes-to-excluded
bryanadenhq Jan 28, 2026
1199c02
feat: allow micro fixes be passed as a PR
RichardTang-Aden Jan 28, 2026
1e6c5b8
fix: CI issues
RichardTang-Aden Jan 28, 2026
ba2889f
chore: allow excluding doc PRs
RichardTang-Aden Jan 28, 2026
a8eb712
Merge branch 'main' into chore--ruff-fix
RichardTang-Aden Jan 28, 2026
3bbecad
config: add .gitattributes for cross-platform line ending consistency…
Emart29 Jan 28, 2026
8316e7c
Merge pull request #1523 from adenhq/chore--ruff-fix
RichardTang-Aden Jan 28, 2026
aca66d6
Merge pull request #1530 from adenhq/staging
TimothyZhang7 Jan 28, 2026
b66eec1
chore: fix lint issues
TimothyZhang7 Jan 28, 2026
9e0c24c
Merge pull request #1532 from TimothyZhang7/main
TimothyZhang7 Jan 28, 2026
9d98f9f
docs: update the claude code skill instruction
RichardTang-Aden Jan 28, 2026
5051f44
Merge branch 'adenhq:main' into main
RichardTang-Aden Jan 28, 2026
6d03934
Merge pull request #1535 from RichardTang-Aden/main
acho-dev Jan 28, 2026
095dd05
Merge pull request #1173 from JohnnyWalker010/fix/json-validation-err…
bryanadenhq Jan 28, 2026
2a049df
Merge pull request #1540 from jaffarkeikei/fix/list-dir-isdir-check
bryanadenhq Jan 28, 2026
bfb1a81
Merge pull request #944 from adionit7/docs/remove-docker-compose-refe…
bryanadenhq Jan 28, 2026
e4c95c7
fixed ruff format --check
bryanadenhq Jan 28, 2026
f30f42a
Merge pull request #1577 from adenhq/fix/ruff-tests1
bryanadenhq Jan 28, 2026
dce5151
chore: add specific return type hints to file_system_toolkits functions
devin-ai-integration[bot] Jan 28, 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
15 changes: 15 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write|NotebookEdit",
"hooks": [
{
"type": "command",
"command": "ruff check --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null; ruff format \"$CLAUDE_FILE_PATH\" 2>/dev/null; true"
}
]
}
]
}
}
8 changes: 7 additions & 1 deletion .claude/skills/building-agents-construction/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,8 @@ class RuntimeConfig:
model: str = "cerebras/zai-glm-4.7"
temperature: float = 0.7
max_tokens: int = 4096
api_key: str | None = None
api_base: str | None = None

default_config = RuntimeConfig()

Expand Down Expand Up @@ -972,7 +974,11 @@ class {agent_class_name}:
llm = None
if not mock_mode:
# LiteLLMProvider uses environment variables for API keys
llm = LiteLLMProvider(model=self.config.model)
llm = LiteLLMProvider(
model=self.config.model,
api_key=self.config.api_key,
api_base=self.config.api_base,
)

self._graph = GraphSpec(
id="{agent_name}-graph",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,10 @@ async def _interactive_shell(verbose=False):
try:
while True:
try:
topic = await asyncio.get_event_loop().run_in_executor(None, input, "Topic> ")
if topic.lower() in ['quit', 'exit', 'q']:
topic = await asyncio.get_event_loop().run_in_executor(
None, input, "Topic> "
)
if topic.lower() in ["quit", "exit", "q"]:
click.echo("Goodbye!")
break

Expand All @@ -130,7 +132,11 @@ async def _interactive_shell(verbose=False):
click.echo(f"\nReport saved to: {output['file_path']}\n")
if "final_report" in output:
click.echo("\n--- Report Preview ---\n")
preview = output["final_report"][:500] + "..." if len(output.get("final_report", "")) > 500 else output.get("final_report", "")
preview = (
output["final_report"][:500] + "..."
if len(output.get("final_report", "")) > 500
else output.get("final_report", "")
)
click.echo(preview)
click.echo("\n")
else:
Expand All @@ -142,6 +148,7 @@ async def _interactive_shell(verbose=False):
except Exception as e:
click.echo(f"Error: {e}", err=True)
import traceback

traceback.print_exc()
finally:
await agent.stop()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Agent graph construction for Online Research Agent."""

from framework.graph import EdgeSpec, EdgeCondition, Goal, SuccessCriterion, Constraint
from framework.graph.edge import GraphSpec
from framework.graph.executor import ExecutionResult
Expand All @@ -8,6 +9,16 @@
from framework.runner.tool_registry import ToolRegistry

from .config import default_config, metadata
from .nodes import (
parse_query_node,
search_sources_node,
fetch_content_node,
evaluate_sources_node,
synthesize_findings_node,
write_report_node,
quality_check_node,
save_report_node,
)

# Goal definition
goal = Goal(
Expand Down Expand Up @@ -78,17 +89,6 @@
),
],
)
# Import nodes
from .nodes import (
parse_query_node,
search_sources_node,
fetch_content_node,
evaluate_sources_node,
synthesize_findings_node,
write_report_node,
quality_check_node,
save_report_node,
)

# Node list
nodes = [
Expand Down Expand Up @@ -195,13 +195,15 @@ def _build_entry_point_specs(self) -> list[EntryPointSpec]:
trigger_type = "manual"
name = ep_id.replace("-", " ").title()

specs.append(EntryPointSpec(
id=ep_id,
name=name,
entry_node=node_id,
trigger_type=trigger_type,
isolation_level="shared",
))
specs.append(
EntryPointSpec(
id=ep_id,
name=name,
entry_node=node_id,
trigger_type=trigger_type,
isolation_level="shared",
)
)
return specs

def _create_runtime(self, mock_mode=False) -> AgentRuntime:
Expand All @@ -226,14 +228,21 @@ def _create_runtime(self, mock_mode=False) -> AgentRuntime:
for server_name, server_config in mcp_servers.items():
server_config["name"] = server_name
# Resolve relative cwd paths
if "cwd" in server_config and not Path(server_config["cwd"]).is_absolute():
if (
"cwd" in server_config
and not Path(server_config["cwd"]).is_absolute()
):
server_config["cwd"] = str(agent_dir / server_config["cwd"])
tool_registry.register_mcp_server(server_config)

llm = None
if not mock_mode:
# LiteLLMProvider uses environment variables for API keys
llm = LiteLLMProvider(model=self.config.model)
llm = LiteLLMProvider(
model=self.config.model,
api_key=self.config.api_key,
api_base=self.config.api_base,
)

self._graph = GraphSpec(
id="online-research-agent-graph",
Expand Down Expand Up @@ -294,7 +303,9 @@ async def trigger(
"""
if self._runtime is None or not self._runtime.is_running:
raise RuntimeError("Agent runtime not started. Call start() first.")
return await self._runtime.trigger(entry_point, input_data, correlation_id, session_state=session_state)
return await self._runtime.trigger(
entry_point, input_data, correlation_id, session_state=session_state
)

async def trigger_and_wait(
self,
Expand All @@ -317,9 +328,13 @@ async def trigger_and_wait(
"""
if self._runtime is None or not self._runtime.is_running:
raise RuntimeError("Agent runtime not started. Call start() first.")
return await self._runtime.trigger_and_wait(entry_point, input_data, timeout, session_state=session_state)
return await self._runtime.trigger_and_wait(
entry_point, input_data, timeout, session_state=session_state
)

async def run(self, context: dict, mock_mode=False, session_state=None) -> ExecutionResult:
async def run(
self, context: dict, mock_mode=False, session_state=None
) -> ExecutionResult:
"""
Run the agent (convenience method for simple single execution).

Expand All @@ -338,7 +353,9 @@ async def run(self, context: dict, mock_mode=False, session_state=None) -> Execu
else:
entry_point = "start"

result = await self.trigger_and_wait(entry_point, context, session_state=session_state)
result = await self.trigger_and_wait(
entry_point, context, session_state=session_state
)
return result or ExecutionResult(success=False, error="Execution timeout")
finally:
await self.stop()
Expand Down Expand Up @@ -400,7 +417,9 @@ def validate(self):
# Validate entry points
for ep_id, node_id in self.entry_points.items():
if node_id not in node_ids:
errors.append(f"Entry point '{ep_id}' references unknown node '{node_id}'")
errors.append(
f"Entry point '{ep_id}' references unknown node '{node_id}'"
)

return {
"valid": len(errors) == 0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Runtime configuration."""

from dataclasses import dataclass


Expand All @@ -7,10 +8,13 @@ class RuntimeConfig:
model: str = "groq/moonshotai/kimi-k2-instruct-0905"
temperature: float = 0.7
max_tokens: int = 16384
api_key: str | None = None
api_base: str | None = None


default_config = RuntimeConfig()


# Agent metadata
@dataclass
class AgentMetadata:
Expand Down
Loading