Skip to content
Open
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
259 changes: 259 additions & 0 deletions a2as.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,259 @@
manifest:
version: "0.1.2"
schema: https://a2as.org/cert/schema
subject:
name: datasciencedisciple/expert-agent-engine
source: https://github.com/datasciencedisciple/expert-agent-engine
branch: main
commit: "8360d58b"
scope: [src/agent_factory.py, src/agents/__init__.py, src/config_loader.py, src/context.py, src/engine.py, src/output_manager.py]
issued:
by: A2AS.org
at: '2026-01-26T16:14:47Z'
signatures:
digest: sha256:nLR0VO5_f1enpAuG_0V34Vljr9byKWhn9GVnK6ICQaA
key: ed25519:LleC3I-E_9lF_Jv2DbS1IEo3dXMTZPl13wPASjDWx0U
sig: ed25519:bkXgg_x8VucZD9J4VCVdYU05vzcs5wL4GiGE6lsKGW_gBjlRstFV4PLoOfEf4ZgPp_-1ribfmuwO12W0GC5vAg

agents:
expert_agent:
type: instance
models: [config.openai_model]
params:
function: create_expert_agent
name: ExpertAgent
instructions: [expert_instructions]
user_agent:
type: instance
models: [config.openai_model]
params:
function: create_user_agent

models:
config.openai_model:
type: variable
agents: [user_agent, expert_agent]

imports:
Agent: agents.Agent
Any: typing.Any
AppConfig: src.config_loader.AppConfig
argparse: argparse
asyncio: asyncio
BaseModel: pydantic.BaseModel
ConfigLoaderError: src.config_loader.ConfigLoaderError
ConversationContext: src.context.ConversationContext
ConversationEngine: src.engine.ConversationEngine
ConversationHistory: src.conversation.ConversationHistory
create_expert_agent: src.agent_factory.create_expert_agent
create_user_agent: src.agent_factory.create_user_agent
dataclass: dataclasses.dataclass
datetime: datetime
Dict: typing.Dict
Field: pydantic.Field
field_validator: pydantic.field_validator
json: json
List: typing.List
load_config: src.config_loader.load_config
load_dotenv: dotenv.load_dotenv
logging: logging
openai: openai
Optional: typing.Optional
os: os
OutputManager: src.output_manager.OutputManager
Path: pathlib.Path
RunContextWrapper: agents.run_context.RunContextWrapper
Runner: agents.Runner
sys: sys
TYPE_CHECKING: typing.TYPE_CHECKING
ValidationError: pydantic.ValidationError
yaml: yaml

functions:
__init__:
type: sync
module: src.output_manager
args: [self, output_dir]
_ensure_output_dir_exists:
type: sync
module: src.output_manager
args: [self]
params:
returns: None
_get_user_agent_instructions:
type: sync
module: src.agent_factory
args: [context, agent]
params:
returns: str
_set_openai_key:
type: sync
module: src.agent_factory
args: [api_key]
create_expert_agent:
type: sync
module: src.agent_factory
args: [config]
params:
returns: Agent[ConversationContext]
create_user_agent:
type: sync
module: src.agent_factory
args: [config]
params:
returns: Agent[ConversationContext]
format_conversation:
type: sync
module: src.output_manager
args: [self, history]
params:
returns: str
generate_filename:
type: sync
module: src.output_manager
args: [self, prefix, extension]
params:
returns: str
generate_takeaways:
type: async
module: src.output_manager
args: [self, history, context, expert_agent, config]
params:
returns: str
get_expert_agent_instructions:
type: sync
module: src.config_loader
args: [self]
params:
returns: str
get_final_history:
type: sync
module: src.engine
args: [self]
params:
returns: ConversationHistory
get_user_agent_instructions:
type: sync
module: src.config_loader
args: [self]
params:
returns: str
history_file_must_exist:
type: sync
module: src.config_loader
args: [cls, v]
load_config:
type: sync
module: src.config_loader
args: [config_path_str]
params:
returns: AppConfig
main:
type: async
module: src.cli
output_dir_must_exist:
type: sync
module: src.config_loader
args: [cls, v]
parse_arguments:
type: sync
module: src.cli
run_conversation:
type: async
module: src.engine
args: [self]
params:
returns: ConversationHistory
save_takeaways:
type: sync
module: src.output_manager
args: [self, takeaways, transcript_filename]
params:
returns: Path
save_transcript:
type: sync
module: src.output_manager
args: [self, history, filename]
params:
returns: Path

variables:
OPENAI_API_KEY:
type: env
params:
caller: [os.getenv, os.environ]
path: [src.config_loader, src.agent_factory]

files:
args.config_file:
type: variable
actions: [read]
params:
caller: [Path]
config/dummy_config.json:
type: literal
actions: [read]
config/dummy_config.yaml:
type: literal
actions: [read]
config/dummy_config_no_key.yaml:
type: literal
actions: [read]
config/dummy_history.txt:
type: literal
actions: [read]
config/temp_factory_test_config.yaml:
type: literal
actions: [read]
config_path:
type: literal
actions: [read]
params:
caller: [Path(args.config_file), open, json.load, yaml.safe_load]
dummy_config_path:
type: literal
actions: [read, write, delete]
params:
caller: [Path('config/temp_factory_test_config.yaml'), dummy_config_path.parent.mkdir, dummy_config_path.write_text,
dummy_config_path.unlink]
dummy_history_path:
type: literal
actions: [read, write, delete]
params:
caller: [Path('config/dummy_history.txt'), dummy_history_path.touch, dummy_history_path.unlink]
dummy_json_path:
type: literal
actions: [read, write, delete]
params:
caller: [Path('config/dummy_config.json'), dummy_json_path.write_text, dummy_json_path.unlink]
dummy_output_dir:
type: literal
actions: [read, write, delete]
params:
caller: [Path(temp_factory_output), dummy_output_dir.mkdir, dummy_output_dir.rmdir]
dummy_output_path:
type: literal
actions: [read, write, delete]
params:
caller: [Path(temp_output), dummy_output_path.mkdir, dummy_output_path.rmdir]
dummy_yaml_no_key_path:
type: literal
actions: [read, write, delete]
params:
caller: [Path('config/dummy_config_no_key.yaml'), dummy_yaml_no_key_path.write_text, dummy_yaml_no_key_path.unlink]
dummy_yaml_path:
type: literal
actions: [read, write, delete]
params:
caller: [Path('config/dummy_config.yaml'), dummy_yaml_path.write_text, dummy_yaml_path.unlink]
file_path:
type: variable
actions: [write]
params:
caller: [open]
alias: [f]
output_dir:
type: variable
actions: [read]
params:
caller: [Path]