{"packages":{"federation-sync":[{"released":"2026-05-03","description":"Block-based federation sync protocol for DAW instances","tier":"free","version":"0.1.0+56f7ba6d","supports":{"redan":{"max":"<2.0.0","min":"0.1.0"},"obr":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"0.1.0"},"raidjan":{"max":"<2.0.0","min":"0.1.0"},"kaupapi":{"max":"<2.0.0","min":"0.1.0"}},"latest":{"redan":true,"obr":true,"steurjan":true,"raidjan":true,"kaupapi":true},"requires":{"system":[]}}],"fragjan-check-listvalues":[{"released":"2026-05-26","description":"Validate table literal values against allowed or forbidden list","tier":"free","version":"0.1.3+4fda08f2","supports":{"fragjan":{"min":"0.2.0"}},"latest":{"fragjan":true},"requires":{"system":[]}},{"released":"2026-05-26","description":"Validate table literal values against allowed or forbidden list","tier":"free","version":"0.1.2+5a1ea021","supports":{"fragjan":{"min":"0.2.0"}},"latest":{"fragjan":false},"requires":{"system":[]}},{"released":"2026-05-26","description":"Validate table literal values against allowed or forbidden list","tier":"free","version":"0.1.1+2b52665d","supports":{"fragjan":{"min":"0.2.0"}},"latest":{"fragjan":false},"requires":{"system":[]}}],"fragjan-check-contains":[{"released":"2026-05-27","description":"fragjan primitive: check if a file contains or does not contain a pattern","tier":"free","version":"0.1.5+a223b94f","supports":{"fragjan":{"min":"0.1.3"}},"latest":{"fragjan":true},"requires":{"system":{"lua":{"min":5.1}}}},{"released":"2026-05-27","description":"fragjan primitive: check if a file contains or does not contain a pattern","tier":"free","version":"0.1.4+0ba69437","supports":{"fragjan":{"min":"0.1.3"}},"latest":{"fragjan":false},"requires":{"system":{"lua":{"min":5.1}}}},{"released":"2026-05-27","description":"fragjan primitive: check if a file contains or does not contain a pattern","tier":"free","version":"0.1.3+d80f1857","supports":{"fragjan":{"min":"0.1.3"}},"latest":{"fragjan":false},"requires":{"system":{"lua":{"min":5.1}}}},{"released":"2026-05-19","description":"fragjan primitive: check if a file contains or does not contain a pattern","tier":"free","version":"0.1.2+60af72cd","supports":{"fragjan":{"min":"0.1.3"}},"latest":{"fragjan":false},"requires":{"system":{"lua":{"min":5.1}}}},{"released":"2026-05-19","description":"fragjan primitive: check if a file contains or does not contain a pattern","tier":"free","version":"0.1.1+b61170f5","supports":{"fragjan":{"min":"0.1.3"}},"latest":{"fragjan":false},"requires":{"system":{"lua":{"min":5.1}}}},{"released":"2026-05-19","description":"fragjan primitive: check if a file contains or does not contain a pattern","tier":"free","version":"0.1.0+4e20f780","supports":{"fragjan":{"min":"0.1.3"}},"latest":{"fragjan":false},"requires":{"system":{"lua":{"min":5.1}}}}],"daw-modul-product":[{"released":"2026-05-01","description":"Shared product module -- validation, category resolution, price lookup, bundle expansion","tier":"free","version":"0.1.1+b7154039","supports":{"redan":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"0.1.0"},"raidjan":{"max":"<2.0.0","min":"0.1.0"},"kaupapi":{"max":"<2.0.0","min":"0.1.0"},"stapul":{"max":"<2.0.0","min":"0.1.0"}},"latest":{"redan":true,"steurjan":true,"raidjan":true,"kaupapi":true,"stapul":true},"requires":{"system":[]}}],"storage-sqlite":[{"released":"2026-04-22","description":"SQLite storage backend","tier":"free","version":"0.2.0+de4d5c96","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"1.0.0"}},"latest":{"openbookregister":true,"steurjan":true},"requires":{"system":{"sqlite3-lua":{"one-of":{"lua-sql-sqlite3":{"min":"0.9.0"},"lsqlite3":{"min":"0.9.0"}}}}}},{"released":"2026-04-17","description":"SQLite storage backend","tier":"free","version":"0.1.3+b47cc6aa","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"1.0.0"}},"latest":{"openbookregister":false,"steurjan":false},"requires":{"system":{"sqlite3-lua":{"one-of":{"lua-sql-sqlite3":{"min":"