AURA Analyzer
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 to id:: block in info/people.aura
@track/id → opens tracks/id.aura
@genre/slug → jumps to slug:: block in meta/genres.aura
- In-file nodes (
@verse/one) → jumps to verse/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
github.com/hamiorg/analyzer
License
MIT
| |