Channels And Services
AAAX makes channels and services available through the same shell boundary as tactics. This lets a mounted package expose both "do work" and "share state" operations without inventing a separate API surface.
Channels
A package channel:
[channels.events]
form = "log"
description = "Application event stream."
becomes:
- a
channelresource in/resources; - an item in
/channels; - a local SSSN channel in the bound store;
- an append/query HTTP endpoint.
Append:
curl -X POST http://127.0.0.1:8400/channels/events/events \
-H 'content-type: application/json' \
-d '{"input": {"kind": "record", "payload": {"id": "a1"}}}'
Query:
curl 'http://127.0.0.1:8400/channels/events/events?after_cursor=0&limit=100'
Channel Operations
The generic resource invocation path also supports channel operations:
curl -X POST http://127.0.0.1:8400/resources/events/invoke \
-H 'content-type: application/json' \
-d '{"input": {"op": "info"}}'
Supported operations are:
infoappendquery
The HTTP convenience endpoints set op for you.
Services
A service can point at a single tactic:
[services.api]
tactic = "echo"
transport = "fastapi"
description = "HTTP-facing echo service."
AAAX imports it as a service resource. If the tactic is locally bound, the
service resource uses the same handler:
curl -X POST http://127.0.0.1:8400/resources/api/invoke \
-H 'content-type: application/json' \
-d '{"input": {"text": "hello"}}'
This is intentionally conservative. AAAX does not launch arbitrary service processes from a manifest. It exposes the shell-facing resource boundary and lets deployment or agent tooling decide how far to go.