Skip to content

Commit 3d0aa27

Browse files
Merge branch 'main' into dependabot/pip/python-multipart-0.0.22
2 parents 2ca4253 + f0547f6 commit 3d0aa27

3 files changed

Lines changed: 43 additions & 4 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The Seclab Taskflow Agent framework was primarily designed to fit the iterative
2222

2323
Its design philosophy is centered around the belief that a prompt level focus of capturing vulnerability patterns will greatly improve and scale security research results as frontier model capabilities evolve over time.
2424

25-
While the maintainer himself primarily uses this framework as a code auditing tool it also serves as a more generic swiss army knife for exploring Agentic workflows. For example, the GitHub Security Lab also uses this framework for automated code scanning alert triage.
25+
At GitHub Security Lab, we primarily use this framework as a code auditing tool, but it can also serve as a more generic swiss army knife for exploring Agentic workflows. For example, we also use this framework for automated code scanning alert triage.
2626

2727
The framework includes a [CodeQL](https://codeql.github.com/) MCP server that can be used for Agentic code review, see the [CVE-2023-2283](examples/taskflows/CVE-2023-2283.yaml) taskflow for an example of how to have an Agent review C code using a CodeQL database ([demo video](https://www.youtube.com/watch?v=eRSPSVW8RMo)).
2828

src/seclab_taskflow_agent/__main__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
from .agent import DEFAULT_MODEL, TaskAgent, TaskAgentHooks, TaskRunHooks
2929
from .available_tools import AvailableTools
30+
from .banner import get_banner
3031
from .capi import get_AI_token, list_tool_call_models
3132
from .env_utils import TmpEnv
3233
from .mcp_utils import (
@@ -82,9 +83,8 @@ def parse_prompt_args(available_tools: AvailableTools, user_prompt: str | None =
8283
# parser.add_argument('remainder', nargs=argparse.REMAINDER, help="Remaining args")
8384
help_msg = parser.format_help()
8485
help_msg += "\nExamples:\n\n"
85-
help_msg += "`-p assistant explain modems to me please`\n"
86-
help_msg += "`-t example -g fruit=apples`\n"
87-
help_msg += "`-t example -g fruit=apples -g color=red`\n"
86+
help_msg += "`-p seclab_taskflow_agent.personalities.assistant explain modems to me please`\n"
87+
help_msg += "`-t examples.taskflows.example_globals -g fruit=apples`\n"
8888
try:
8989
args = parser.parse_known_args(user_prompt.split(" ") if user_prompt else None)
9090
except SystemExit as e:
@@ -677,4 +677,5 @@ async def _deploy_task_agents(resolved_agents, prompt):
677677
print(help_msg)
678678
sys.exit(1)
679679

680+
print(get_banner()) # print banner only before starting main event loop
680681
asyncio.run(main(available_tools, p, t, cli_globals, user_prompt), debug=True)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# SPDX-FileCopyrightText: 2026 GitHub
2+
# SPDX-License-Identifier: MIT
3+
4+
from .capi import get_AI_endpoint
5+
6+
def get_banner():
7+
api_endpoint = get_AI_endpoint()
8+
banner = f"""
9+
╔══════════════════════════════════════════════════════════════════╗
10+
║ ║
11+
║ ██████╗ ██╗████████╗██╗ ██╗██╗ ██╗██████╗ ║
12+
║ ██╔════╝ ██║╚══██╔══╝██║ ██║██║ ██║██╔══██╗ ║
13+
║ ██║ ███╗██║ ██║ ███████║██║ ██║██████╔╝ ║
14+
║ ██║ ██║██║ ██║ ██╔══██║██║ ██║██╔══██╗ ║
15+
║ ╚██████╔╝██║ ██║ ██║ ██║╚██████╔╝██████╔╝ ║
16+
║ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ║
17+
║ ║
18+
║ ███████╗███████╗ ██████╗██╗ ██╗██████╗ ██╗████████╗██╗ ██╗ ║
19+
║ ██╔════╝██╔════╝██╔════╝██║ ██║██╔══██╗██║╚══██╔══╝╚██╗ ██╔╝ ║
20+
║ ███████╗█████╗ ██║ ██║ ██║██████╔╝██║ ██║ ╚████╔╝ ║
21+
║ ╚════██║██╔══╝ ██║ ██║ ██║██╔══██╗██║ ██║ ╚██╔╝ ║
22+
║ ███████║███████╗╚██████╗╚██████╔╝██║ ██║██║ ██║ ██║ ║
23+
║ ╚══════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║
24+
║ ║
25+
║ ██╗ █████╗ ██████╗ ║
26+
║ ██║ ██╔══██╗██╔══██╗ ║
27+
║ ██║ ███████║██████╔╝ ║
28+
║ ██║ ██╔══██║██╔══██╗ ║
29+
║ ███████╗██║ ██║██████╔╝ ║
30+
║ ╚══════╝╚═╝ ╚═╝╚═════╝ ║
31+
║ ║
32+
║ TASKFLOW AGENT ║
33+
║ ║
34+
╠══════════════════════════════════════════════════════════════════╣
35+
║ AI API Endpoint: {api_endpoint:<48}
36+
╚══════════════════════════════════════════════════════════════════╝
37+
"""
38+
return banner

0 commit comments

Comments
 (0)