Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion .github/workflows/e2e-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ on:
- 'helm/**'
jobs:
e2e-test:
timeout-minutes: 25
runs-on: ubuntu-latest
env:
AGENTSTACK__HOME: ${{ github.workspace }}/.agentstack
Expand All @@ -49,7 +50,7 @@ jobs:
- run: mise run agentstack-server:test:e2e
env:
LLM_API_BASE: "${{ secrets.OPENAI_API_BASE }}"
LLM_MODEL: "${{ secrets.OPENAI_MODEL }}"
LLM_MODEL: "${{ vars.OPENAI_MODEL }}"
LLM_API_KEY: "${{ secrets.OPENAI_API_KEY }}"
# LLM_API_BASE: "https://api.groq.com/openai/v1"
# LLM_MODEL: "groq:groq/compound"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/integration-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ on:
- 'apps/agentstack-cli/**'
jobs:
integration-test:
timeout-minutes: 25
runs-on: ubuntu-latest
steps:
- name: Maximize build space
Expand Down
7 changes: 7 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Agent Stack

## GitHub Operations

Use `gh` command for GitHub operations.

Repo: `i-am-bee/agentstack`
1 change: 1 addition & 0 deletions agents/chat/.vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
{
"name": "agent-chat",
"type": "debugpy",
"justMyCode": false,
"request": "launch",
"program": "${workspaceFolder}/src/chat/agent.py",
"console": "integratedTerminal"
Expand Down
2 changes: 1 addition & 1 deletion agents/chat/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.13-alpine3.22
FROM python:3.13-slim
ARG RELEASE_VERSION="main"
COPY ./agents/chat/ /app/agents/chat
COPY ./apps/agentstack-sdk-py/ /app/apps/agentstack-sdk-py/
Expand Down
2 changes: 1 addition & 1 deletion agents/chat/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ authors = [
]
requires-python = ">=3.13,<3.14"
dependencies = [
"beeai-framework[duckduckgo,wikipedia,a2a]>=0.1.70",
"beeai-framework[duckduckgo,wikipedia,a2a]==0.1.70",
"tiktoken>=0.12.0", # constraint for beeai-framework dependency (first version with musl arm64 wheel)
"fastuuid>=0.14.0", # constraint for beeai-framework dependency (first version with musl arm64 wheel)
"openai>=1.107.1",
Expand Down
50 changes: 19 additions & 31 deletions agents/chat/src/chat/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,71 +2,58 @@
# SPDX-License-Identifier: Apache-2.0
import logging
import os
from typing import Annotated
from textwrap import dedent
from typing import Annotated

from a2a.types import (
AgentSkill,
Message,
)
from beeai_framework.agents.requirement.utils._tool import FinalAnswerTool
from beeai_framework.errors import FrameworkError
from pydantic import BaseModel

from agentstack_sdk.a2a.extensions import (
AgentDetail,
AgentDetailContributor,
AgentDetailTool,
BaseExtensionServer,
BaseExtensionSpec,
CitationExtensionServer,
CitationExtensionSpec,
ErrorExtensionParams,
ErrorExtensionServer,
ErrorExtensionSpec,
TrajectoryExtensionServer,
TrajectoryExtensionSpec,
LLMServiceExtensionServer,
LLMServiceExtensionSpec,
TrajectoryExtensionServer,
TrajectoryExtensionSpec,
)

# Monkey-patch to remove FormExtensionSpec which no longer exists
# TODO: remove after next release
import agentstack_sdk.a2a.extensions as agentstack_extensions
from chat.tools.files.file_reader import FileReaderTool

agentstack_extensions.FormExtensionSpec = BaseExtensionSpec
agentstack_extensions.FormExtensionServer = BaseExtensionServer
agentstack_extensions.TextField = BaseModel

from agentstack_sdk.a2a.extensions.services.platform import (
PlatformApiExtensionServer,
PlatformApiExtensionSpec,
)
from agentstack_sdk.a2a.types import AgentArtifact, AgentMessage
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.middleware.platform_auth_backend import PlatformAuthBackend
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore
from beeai_framework.adapters.agentstack.backend.chat import AgentStackChatModel
from beeai_framework.agents.requirement import RequirementAgent
from beeai_framework.agents.requirement.events import (
RequirementAgentSuccessEvent,
RequirementAgentFinalAnswerEvent,
RequirementAgentSuccessEvent,
)
from beeai_framework.agents.requirement.utils._tool import FinalAnswerTool
from beeai_framework.backend import AssistantMessage, ChatModelParameters
from beeai_framework.errors import FrameworkError
from beeai_framework.middleware.trajectory import GlobalTrajectoryMiddleware
from beeai_framework.tools import Tool, AnyTool
from beeai_framework.tools import AnyTool, Tool
from beeai_framework.tools.search.duckduckgo import DuckDuckGoSearchTool
from beeai_framework.tools.search.wikipedia import WikipediaTool
from beeai_framework.tools.weather import OpenMeteoTool
from beeai_framework.backend import ChatModelParameters, AssistantMessage
from agentstack_sdk.a2a.extensions.services.platform import (
PlatformApiExtensionServer,
PlatformApiExtensionSpec,
)
from agentstack_sdk.a2a.types import AgentMessage, AgentArtifact
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from openinference.instrumentation.beeai import BeeAIInstrumentor

from chat.helpers.citations import extract_citations
from chat.helpers.trajectory import TrajectoryContent
from chat.tools.files.file_creator import FileCreatorTool, FileCreatorToolOutput
from chat.tools.files.file_reader import FileReaderTool
from chat.tools.files.utils import extract_files, to_framework_message

from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

BeeAIInstrumentor().instrument()

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -300,6 +287,7 @@ def serve():
port=int(os.getenv("PORT", 8000)),
configure_telemetry=True,
context_store=PlatformContextStore(),
auth_backend=PlatformAuthBackend(),
)
except KeyboardInterrupt:
pass
Expand Down
Loading