Release v0.9.0
What's Changed
Changed
- RAG
@aliases centralized inagentforge/mode_prefixes.py(shared bymode_routingandintent_classifier). - Botty engine reads
analysis_interval,max_frequency_seconds, anddismissal_cooldown_secondsfrom config. canvas.enabledandbotty.enabledinconfig.yamlnow gate Canvas init and the/ws/bottyroute (defaults remaintrue).prompt_lab.enabledgates Prompt Lab DB init and/api/prompt-lab/*endpoints;canvas.enabledalso gates the/api/canvas/*router (not just init).- Chat sessions are namespaced by
chat_sessions.source(web,kb, …): clients passoverrides.sourceand/or?source=on/ws/chat; worker auto-create reads the active job's overrides. Agent Chat listssource=webonly. web/server/api.pyimports hoisted to module top;sql_schema_toolstays lazy (private/gitignored module).- In-code RAG comments in
ws_endpoint.pynow treat@qdrantas canonical (@docs/@findas aliases). OllamaSettingsprofile resolution always delegates toagentforge.config.ConfigManager(removed duplicate_merge_profile_chainfallback).- Config loading consolidated:
app/config.pyandagentforge.config.ConfigManagerboth useload_merged_yaml()(framework-config + config.yaml + split profiles).ConfigManager.rawexposes the merged dict. When gitignored config files are absent,load_merged_yaml()falls back to the committed*.example.yamltemplates (CI / fresh clone). - Legacy per-product Google connector plugins (
gmail,google_drive,bigquery,youtube) removed; unifiedgoogleconnector only. Unmigrated SQLite rows are skipped at startup (seescripts/list-legacy-connections.py). - Knowledge Database content types are now
note,reference,documentation,document,cheatsheet, andsnippet(replacing the earliercode/command/url/config/error_solution/api_exampleset). Update clients and any indexed entries accordingly. custom_agents.yamlis gitignored (per-deployment, likeconfig.yaml); shipped template iscustom_agents.example.yamlwith example fallback in the loader.- RAG search mode:
@qdrantis canonical;@docsand@findare documented aliases (all three route to the same mode and can appear anywhere in a prompt). - Mode prefix detection extracted from
ws_endpoint.pytoweb/server/mode_routing.py. - Put.io / Premiumize (
cloud_tools) moved fromregister_core_toolstoregister_optional_tools(still registered byregister_all_toolswhen credentials are set).
Added
GET /knowledge/list: slim metadata listing for the browse view (no content body; optionallimit, default 2000).custom_agents.example.yamltemplate for custom agents (copy to gitignoredcustom_agents.yaml).scripts/list-legacy-connections.py: read-only audit of legacy per-product Google connector rows.tests/test_mode_routing.py: prefix stripping for@qdrant/@docs/@find.tests/test_config_loader.py: merged YAML parity betweenapp.configandagentforge.config.tests/test_feature_flags.py: defaultcanvas.enabled/botty.enabledsettings.tests/test_mode_prefixes.py,tests/test_botty_engine.py: shared RAG aliases and Botty rate limits.web/server/session_source.py,tests/test_session_source.py: shared sessionsourceresolution for WS and worker paths.
Removed
get_connector_config()(unused after unified Google OAuth cleanup).strip_agent_prefix()(unused after mode-routing extraction).translate_legacy_locality()(empty map; inlined at call sites).tools.shell.sudo_passwordstartup warning in the CLI (the key was already ignored; interactive sudo is the only path).AGENTFORGE_WORKER_LOCALITYenv fallback in worker role resolution (useAGENTFORGE_WORKER_ROLE).- Legacy
connectors.google.gmail.credentials_dirconfig path for OAuth client secrets (useconnectors.credentials_dirorGMAIL_CREDENTIALS_DIR).
Breaking
- Knowledge Database content type rename (see Changed above).
- Legacy per-product Google connector plugins removed (see Changed above).
- Chat session listing is scoped by
source; clients must passoverrides.source/?source=where appropriate.
Full changelog: https://github.com/bulletinmybeard/agent-forge/blob/master/CHANGELOG.md