fix: persist builder deepagent files
All checks were successful
build / build (push) Successful in 31s
All checks were successful
build / build (push) Successful in 31s
This commit is contained in:
@@ -16,6 +16,7 @@ class BuilderContext:
|
||||
bucket: str
|
||||
cp_jwt: str | None = None
|
||||
settings: Settings | None = None
|
||||
project_prefix: str | None = None
|
||||
# Optional caller-provided LLM creds (when the outer platform Card
|
||||
# declares llm_provisioning=caller_provided). Falls back to settings.
|
||||
llm_base_url: str | None = None
|
||||
@@ -128,6 +129,58 @@ def build_agent_builder(ctx: BuilderContext) -> Any:
|
||||
api_key=ctx.llm_api_key or settings.litellm_key,
|
||||
temperature=0.0,
|
||||
)
|
||||
return create_deep_agent(
|
||||
model=model, tools=tools, system_prompt=SYSTEM_PROMPT,
|
||||
kwargs: dict[str, Any] = {
|
||||
"model": model,
|
||||
"tools": tools,
|
||||
"system_prompt": SYSTEM_PROMPT,
|
||||
}
|
||||
backend = _build_project_backend(ctx, settings=settings)
|
||||
if backend is not None:
|
||||
kwargs["backend"] = backend
|
||||
return create_deep_agent(**kwargs)
|
||||
|
||||
|
||||
def _build_project_backend(ctx: BuilderContext, *, settings: Settings) -> Any | None:
|
||||
"""Persist DeepAgents built-in file tools into this project directory.
|
||||
|
||||
The explicit builder tools remain the preferred path, but this prevents
|
||||
a model-selected DeepAgents ``write_file`` from disappearing into
|
||||
LangGraph state. Scope it to the project prefix, not the whole bucket.
|
||||
"""
|
||||
if not ctx.project_prefix:
|
||||
return None
|
||||
prefix = ctx.project_prefix.strip("/")
|
||||
if not prefix:
|
||||
return None
|
||||
try:
|
||||
from a2a_pack import Grant, WorkspaceAccess, WorkspaceMode
|
||||
from a2a_pack.deepagents import WorkspaceBackend
|
||||
from a2a_pack.workspace import MinIOWorkspaceClient
|
||||
except Exception: # noqa: BLE001
|
||||
return None
|
||||
|
||||
workspace = MinIOWorkspaceClient(
|
||||
bucket=ctx.bucket,
|
||||
endpoint_url=settings.minio_endpoint,
|
||||
access_key_id=settings.minio_access_key,
|
||||
secret_access_key=settings.minio_secret_key,
|
||||
access=WorkspaceAccess.dynamic(
|
||||
max_files=2000,
|
||||
allowed_modes=(WorkspaceMode.READ_ONLY, WorkspaceMode.READ_WRITE_OVERLAY),
|
||||
require_reason=False,
|
||||
),
|
||||
issuer="agent-builder",
|
||||
)
|
||||
workspace.install_grant(
|
||||
Grant(
|
||||
grant_id=f"agent-builder-{prefix.replace('/', '-')}",
|
||||
issuer="agent-builder",
|
||||
audience="agent-builder",
|
||||
bucket=ctx.bucket,
|
||||
mode=WorkspaceMode.READ_WRITE_OVERLAY,
|
||||
allow_patterns=(f"{prefix}/**", "outputs/**"),
|
||||
deny_patterns=(),
|
||||
outputs_prefix=None,
|
||||
)
|
||||
)
|
||||
return WorkspaceBackend(workspace)
|
||||
|
||||
Reference in New Issue
Block a user