@altopelago/aeon-tonic
v0.9.0
Published
AES-in materialization boundary scaffold.
Readme
@altopelago/aeon-tonic
AES-in materialization boundary scaffold.
This package currently exposes a minimal materialize() API.
At the moment it passes AES through unchanged and preserves the optional annotation stream when present.
It does not yet build a materialized document.
Quick Start
import { materialize } from '@altopelago/aeon-tonic';
const result = materialize({
aes: [],
});
console.log(result.aes);Current Behavior
- returns the input
aesunchanged - preserves
annotationswhen provided - does not currently populate
document - does not currently populate
metaunless future phases add materialization diagnostics
When To Use This Package
Use @altopelago/aeon-tonic only if you want the explicit materialization boundary package surface.
If you need:
- compile-only behavior, use
@altopelago/aeon-core - validation over AES, use
@altopelago/aeos-core - an orchestrated end-to-end runtime, use
@altopelago/aeon-runtime
API
import type { AssignmentEvent } from '@altopelago/aeon-aes';
import type { AnnotationRecord } from '@altopelago/aeon-annotation-stream';
export interface TonicInput {
aes: readonly AssignmentEvent[];
annotations?: readonly AnnotationRecord[];
}
export interface TonicResult {
aes: readonly AssignmentEvent[];
annotations?: readonly AnnotationRecord[];
document?: unknown;
meta?: {
errors?: readonly { message: string; code?: string }[];
warnings?: readonly { message: string; code?: string }[];
};
}export function materialize(input: TonicInput): TonicResult;Annotation contract
annotationsis an optional parallel channel and may be absent.- Annotation records are non-authoritative metadata and MUST NOT change AES semantics.
- Materialization behavior MUST remain deterministic whether
annotationsis present or omitted.
Current Example Output
{
"aes": [
{
"path": { "segments": [{ "type": "root" }, { "type": "member", "key": "a" }] },
"key": "a",
"value": { "type": "NumberLiteral", "raw": "1", "value": "1" },
"span": { "start": { "line": 1, "column": 1, "offset": 0 }, "end": { "line": 1, "column": 6, "offset": 5 } }
}
],
"annotations": [
{
"kind": "doc",
"form": "line",
"raw": "//# docs",
"span": {
"start": { "line": 1, "column": 1, "offset": 0 },
"end": { "line": 1, "column": 9, "offset": 8 }
},
"target": { "kind": "path", "path": "$.a" }
}
]
}