cookbook/05_agent_os/TEST_PROMPT.md
Thoroughly test the complete AgentOS curriculum: root basic.py and numbered
lessons 01_getting_started through 24_showcase.
AGENTS.mdcookbook/STYLE_GUIDE.mdcookbook/05_agent_os/README.mdDo not infer behavior from filenames or old test results. Verify parameters,
client methods, endpoints, form fields, and response shapes against
libs/agno/agno before changing an example.
.venvs/demo/bin/python.venvdirenv allow when available./cookbook/scripts/run_pgvector.sh./cookbook/scripts/run_surrealdb.shWhen using a development environment from a different checkout or worktree,
set PYTHONPATH=<current-worktree>/libs/agno so imports resolve to the source
being tested rather than another editable installation.
Use tmp/ only for runtime artifacts. Remove generated databases,
__pycache__, and temporary server output when the run is complete.
Every Python file needs a dated entry in the nearest TEST_LOG with:
Status: PASSTest mode: LIVE or Test mode: CONSTRUCTION_SMOKECONSTRUCTION_SMOKE is reserved for credential-gated examples. It must prove
imports, object construction, app construction, and the expected registered
route. State which credentials were missing and what was not exercised.
Never leave a final FAIL, MANUAL, PENDING, unexecuted placeholder, or
fabricated success entry.
For each credentials-free server, boot it, assert GET /health returns 200,
inspect GET /config, and terminate it. For every client/server pair, run both
halves and record both observations.
basic.py: verify /health, /config, the agno-assist agent, and
MCP tool discovery.full_os.py: verify the agent, team, workflow, knowledge, sessions, and
config surfaces are present.run_over_http.py: start full_os.py, then observe config discovery, a
non-streaming run, SSE events, and the persisted session.basic.py: verify the OS-level SQLite database is inherited by the agent
and auto-provisioned.postgres.py: start pgvector and test both the sync and async database
variants.surreal.py: start SurrealDB and observe a real persisted session./databases/{id}/migrate._server.py on port 7778.OS_SECURITY_KEY modes where directed.background=true plus stream=false return 202 with a database,
then poll the nested run route with session_id.checkpoint="tool-batch", list checkpoints, and continue from a
selected message_index.requires_* pauses from
persistent @approval records./approvals; confirm an audit
approval is paired with a real HITL flag.base_app is the real constructor parameter, middleware ordering is
documented as LIFO, and response middleware uses no private Starlette type.OS_SECURITY_KEY./config from both the Python and YAML examples.db_ids match the constructed databases./health, /config, and workflow
metadata, then run the paired REST/SSE client./workflows/ws; do not treat
agent or team SSE as WebSocket coverage./health, /config, and its
registered knowledge source./knowledge/content, poll its status, list and search
it, delete it, and verify the deleted content is no longer readable./learnings.ScheduleManager paths using page, not offset, and
verify the SchedulerTools agent creates the intended default schedule./traces,
fetch their detail trees, and traverse nested spans./traces/filter-schema, advanced FilterExpr search, split trace-store
routing with an explicit db_id, and /metrics refresh/readback.mcp_server= surface and
inspect its registered MCP route.continue_run and cancel_run rather than leaving lifecycle calls as
commented examples./a2a./health, inspect /config,
and verify its AG-UI status route.POST {prefix}/agui and
GET /status.external_execution tools from real backend
HITL with requires_confirmation.auth_test to return synthetic bot identity, and verify /health,
/config, plus each exact events and interactions route pair./health, /config, each status route, and each POST webhook route.quoted_responses, group mention filtering, session keys, media limits, and
distinct webhook prefixes for multiple bots./health, /config, status, GET verification challenge, and POST webhook
routes.WHATSAPP_APP_SECRET.OS_SECURITY_KEY, observe an unauthenticated
run rejected, and pass the key through arun(auth_token=...).--demo
client.FactoryPermissionError return HTTP 403.GET /registry, then create, read, update, and delete a component
through /components; verify the sync-database requirement is documented./health and /config, and run the Agent
through the REST API.system-info skill, call
get_skill_script(..., execute=True), and return real script output.SKILL.md and its scripts but no nested
cookbook README or TEST_LOG.OS_SECURITY_KEY./config exposes
the two distinct Agents and finance Team, and live runs exercise RAG,
web/finance research, and Team coordination.AccuracyEval from demo.py and record its observed
result; do not leave the evaluation commented out or replace it with a stub..venv/bin/pytest cookbook/scripts/tests/test_check_cookbook_pattern.py
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/01_getting_started --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/02_databases --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/03_python_client --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/04_run_lifecycle --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/05_human_in_the_loop --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/06_customize --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/07_security --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/08_os_config --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/09_serving_workflows --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/10_knowledge --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/11_learnings --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/12_scheduler --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/13_observability --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/14_mcp --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/15_a2a --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/16_agui --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/17_slack --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/18_telegram --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/19_whatsapp --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/20_remote --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/21_factories --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/22_studio --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/23_skills --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os/24_showcase --recursive
.venvs/demo/bin/python cookbook/scripts/check_cookbook_pattern.py \
--base-dir cookbook/05_agent_os --recursive
source .venv/bin/activate
./scripts/format.sh
./scripts/validate.sh
git diff --check
Also reject stale models, deprecated AgentOS/MCP names, emojis, and non-final test statuses in the root and lessons 01–24. Verify exactly 132 Python files, exactly 24 numbered top-level lessons, no unnumbered topic directory, and all 363 migration rows. Report exact commands, observed results, live-versus-construction coverage, and any library follow-up.