Python API
AAAX's public Python API is intentionally compact. The objects still use the
name Strategy, but conceptually a strategy is the shell session: a mounted
resource table plus an optional top-level command.
Strategy
from aaax import Strategy
Constructor:
Strategy(
name: str,
*,
description: str = "",
resources=(),
runner=None,
metadata=None,
)
Common methods:
strategy.tactic(name, **kwargs)strategy.channel(name, **kwargs)strategy.service(name, **kwargs)strategy.package(name, **kwargs)strategy.snapshot(name, **kwargs)strategy.resource(kind, name, **kwargs)strategy.add_resource(resource, handler=None)strategy.use_package(path, prefix=None, store=None, bind=True)strategy.runner(fn)await strategy.arun(input_value=None, context=None)await strategy.invoke_resource(name, input_value=None, context=None)
Models
from aaax import StrategyResource, StrategyInfo
from aaax import StrategyRunRequest, StrategyRunResponse
StrategyResource describes one mounted resource. StrategyInfo describes a
full shell session. StrategyRunRequest and StrategyRunResponse are the HTTP
envelopes.
Loading
from aaax import load_strategy, strategy_from_package
load_strategy(target) accepts:
- a directory containing
strategy.py; - a directory containing
aaax.py; - a directory containing
psi.toml; - a direct Python file;
- a direct
psi.tomlfile; - a
module:attributetarget.
strategy_from_package(path, name=None, prefix=None, store=None, bind=True)
creates a shell directly from one PsiHub package.
Package Composition
from aaax import add_package
add_package(strategy, path, prefix=None, store=None, bind=True) mutates and
returns the given strategy.
FastAPI
from aaax import create_strategy_app
app = create_strategy_app(strategy)
The app stores the original strategy at app.state.aaax_strategy.