VS Code extension for .aura files — the human-readable authoring language for ATOM/HAMI media annotation.
Features
Syntax Highlighting
Full TextMate grammar covering all AURA constructs:
- Sigils:
::,->,@,##,--,|,?,!,~,+,>>,* - Content and support node types (
verse/one::,chorus/two::,line/one::, etc.) - Reference paths (
@person/p4xt9k2,@genre/electronic,@access/open) - Time literals (
22s,1m10s,00:04:32~00:07:18) - Boolean literals (
live/dark) - Media kinds (
audio::music,video::movie) - Quoted strings, IDs, dates, versions
Real-time Linting
All 7 compiler lint rules fire as squiggly underlines:
| Code | Severity | Description |
|---|---|---|
| W001 | Warning | true/false — prefer live/dark |
| W002 | Warning | Deprecated keys (thumbnail, artwork) |
| W003 | Warning | Interval-indexed node missing time field |
| W004 | Warning | manifest:: missing name |
| W005 | Warning | manifest:: missing creator/author |
| W006 | Warning | Unknown key (strict mode, configurable) |
| E001 | Error | Required field (!) absent |
Inlay Type Hints (Gray)
Inline gray annotations — inspired by Rust Analyzer:
- After namespace openers:
verse/one:: ‹Macro · content› - After
@person/id:-> @person/p4xt9k2 ‹Mario Aleka› - After time expressions:
-> 22s~1m10s ‹[22.0, 70.0, 48.0]› - After
@genre/slug:-> @genre/electronic ‹Electronic›
Hover Definitions
Hover over any reference to see its definition:
@person/p4xt9k2→ person definition (name, roles, country)@track/t7xab3c→ track manifest fields@genre/electronic→ genre node (name, parent, tags)@access/gated→ access level description- Standard keys (
time,creator,text) → key documentation live/dark→ boolean meaning with analogy
Go-to-Definition
F12 or Ctrl+Click on any reference:
@person/id→ jumps toid::block ininfo/people.aura@track/id→ openstracks/id.aura@genre/slug→ jumps toslug::block inmeta/genres.aura- In-file nodes (
@verse/one) → jumps toverse/one::in current file
Auto-completion
- After
@→ all reference domains with descriptions - After
@domain/→ entity IDs from project symbols - Inside a namespace body → standard AURA keys
- For boolean fields →
live/dark - For
kind ->→ all media kinds - For
access ->→ all@access/levels
Settings
| Setting | Default | Description |
|---|---|---|
aura.strict |
false |
Enable W006 warnings for unknown keys |
aura.inlayHints.enabled |
true |
Enable inlay hints |
aura.inlayHints.showNodeType |
true |
Show node granularity after :: |
aura.inlayHints.showResolvedRefs |
true |
Show resolved names after @domain/id |
aura.inlayHints.showTimeTriple |
true |
Show [start, end, duration] after time expressions |
AURA Language Quick Reference
AURA (Adaptive Universal Relational Annotations) is the human-readable authoring layer for the Hami engine.
schema::
root -> https://hami.aduki.org/aura/1.0
kind -> audio::music
lang -> en-US
annotator -> @annotator/p9xb3mn
manifest::
name ! -> "Signal Loss"
creator ! -> @person/p4xt9k2
released -> 2024-11-01
access -> @access/open
verse/one::
time -> 22s~1m10s
lines::
line/one::
text -> "The signal drops at the edge of the grid"
time -> 22s~25.4s
speaker -> @person/p4xt9k2
chorus/one::
time -> 1m10s~1m50s
lines::
line/one::
text -> "Find me where the frequency breaks"
time -> 1m10s~1m16s
Full language documentation: hamiorg.github.io/aura
Requirements
- VS Code
^1.85.0 - Node.js
>=18(for the language server process)
Repository
License
MIT