All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Rebrand: aipartnerup → aiperceivable
Initial release. Axum integration for the apcore AI-Perceivable Core ecosystem, feature-aligned with fastapi-apcore.
AxumApcore— Unified entry point: init, scan, register, call, stream, exportApcoreSettings— Configuration fromAPCORE_*environment variables with validationap_handler!macro — Declarative route metadata registration at compile timeAxumApcoreError—thiserror-based error enum withIntoResponsefor Axum handlers
ApContext— AxumFromRequestPartsextractor for apcoreContext<Value>RequestIdentity— Identity struct for auth middleware to inject into request extensionsAxumContextFactory— Creates apcore contexts from Axum request parts with W3Ctraceparentsupport
NativeAxumScanner— Scans routes from the compile-time metadata registry (RouteMetadata)OpenAPIScanner— Scans routes from utoipa-generated OpenAPI specs (feature =openapi)AxumScannertrait — Extensible scanner interface with include/exclude regex filtersget_scanner()— Factory function for scanner selection by source name
call()— Execute a module by ID with optional contextcall_anonymous()— Execute with a default anonymous identitystream()— Execute with streaming output (vec-wrapped)cancellable_call()— Execute with timeout and cooperative cancellation viaCancelTokenregister_handler()— Register callable handler functions for target strings- Executor uses
tokio::sync::Mutexfor safe async lock holding
TaskManager— Async task submission with concurrency and total limitssubmit_task()— Background execution viatokio::spawnget_task_status()/get_task_result()— Poll task lifecyclecancel_task()— Cancel running tasks viaCancelTokenlist_tasks()— List tasks with optional status filtercleanup()— Remove completed/failed/cancelled tasks by age
get_registry()/get_executor()— Thread-safe singleton management viaOnceLockAxumRegistryWriter— Registers scanned modules into both query registry and executor registryAxumDiscoverer— Discovers modules from YAML binding filesAxumModuleValidator— Validates module IDs (length, reserved words, segment format)setup_observability()— Configures tracing, metrics, and error history from settings
create_mcp_server()— Create an MCP server from the registry (stdio, streamable-http, SSE)to_openai_tools()— Export modules as OpenAI-compatible tool definitions
scan— Scan routes and output to registry or YAMLserve— Start an MCP server exposing registered modulesexport— Export modules as OpenAI tool definitionstasks— List, cancel, and clean up async tasks
basic— Full Axum app withap_handler!,ApContext, and server startuphandler_registration— Register handlers, call withcall()andcall_anonymous()async_tasks— Submit, poll, cancel, and list background tasksopenapi_scanner— Scan OpenAPI specs with include/exclude filtersmcp_server— Create MCP server and export OpenAI tools
- 67 unit tests across all modules
- 10 integration tests covering end-to-end flow, task management, context extraction, and scanner filters
- All tests pass with
cargo test --all-features