{"packages":{"git":[{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-24","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":true},"version":"1.0.9+4a244af3"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-23","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.8+b1d364d6"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-22","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.7+ce04a3db"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-18","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.6+421b7bc3"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-18","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.5+f1f408ed"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-18","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.4+9d9dc1ba"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-16","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.3+8f74be4f"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-16","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.2+e9ea50cc"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-16","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.1+4b8784fb"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-16","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"1.0.0+e69ea947-dirty"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-11","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"0.2.4+20b37df9"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-10","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"0.2.3+9f0c258a"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-10","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"0.2.2+69947086"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-05-10","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"0.2.1+d72bb814"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-04-18","requires":{"system":{"git":{"min":2.0}}},"latest":{"steurjan":false},"version":"0.2.0+f7281c13"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-04-03","requires":{"system":{"git":{"min":2}}},"latest":{"steurjan":false},"version":"0.1.6+b4f9258c"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Git VCS adapter for DAW projects","released":"2026-03-24","requires":{"system":{"git":{"min":2}}},"latest":{"steurjan":false,"kaupapi":true},"version":"0.1.5+6fe653cc"}],"fragjan-check-linecount":[{"tier":"free","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"supports":{"fragjan":{"min":"0.1.0"}},"latest":{"fragjan":true},"description":"fragjan primitive: count lines in a file","version":"0.1.3+0338d557"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: count lines in a file","released":"2026-05-19","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.1+880e75e3"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: count lines in a file","released":"2026-05-18","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.0+e89ecf2d"}],"fragjan-check-linepattern":[{"tier":"free","released":"2026-05-27","description":"fragjan primitive: match pattern on a line, with optional line-level exclusion","supports":{"fragjan":{"min":"0.2.0"}},"latest":{"fragjan":true},"requires":{"system":{"lua":{"min":5.1}}},"version":"0.1.2+5920794a"},{"tier":"free","supports":{"fragjan":{"min":"0.2.0"}},"description":"fragjan primitive: match pattern on a line, with optional line-level exclusion","released":"2026-05-26","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.1+09b9c01b"}],"fragjan-check-list-values":[{"tier":"free","supports":{"fragjan":{"min":"0.2.0"}},"description":"Validate table literal values against allowed or forbidden list","released":"2026-05-26","requires":{"system":[]},"latest":{"fragjan":true},"version":"0.1.0+61e08ab6"}],"tax-calc":[{"tier":"free","supports":{"steurjan":{"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"},"raidjan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Decimal-accurate net/gross price calculation for DAW systems","released":"2026-05-01","requires":{"system":[]},"latest":{"steurjan":true,"kaupapi":true,"stapul":true,"raidjan":true},"version":"0.1.1+ace89389"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"1.0.0"}},"description":"One-line description","released":"2026-05-01","requires":{"system":[]},"latest":{"steurjan":false},"version":"0.1.0+3097a54a"}],"http-server":[{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"Generic TCP-based HTTP server with URL param routing and static file serving","released":"2026-04-22","requires":{"system":{"socket":{"min":3.0}}},"latest":{"openbookregister":true},"version":"0.2.0+77253d3d"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"Generic TCP-based HTTP server with URL param routing and static file serving","released":"2026-04-14","requires":{"system":{"socket":{"min":3}}},"latest":{"openbookregister":false},"version":"0.1.3+81faed66"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"Generic TCP-based HTTP server with URL param routing and static file serving","released":"2026-04-14","requires":{"system":{"socket":{"min":3}}},"latest":{"openbookregister":false},"version":"0.1.2+eb857c68"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"Generic TCP-based HTTP server with URL param routing and static file serving","released":"2026-04-14","requires":{"system":{"lua-socket":{"min":3}}},"latest":{"openbookregister":false},"version":"0.1.1+c696c6cf"},{"tier":"free","supports":{},"description":"Generic TCP-based HTTP server with URL param routing and static file serving","released":"2026-04-14","requires":{"system":{"lua-socket":{"min":3}}},"latest":{},"version":"0.1.0+ca749c8a"},{"tier":"free","supports":{},"description":"Generic TCP-based HTTP server with URL param routing and static file serving","released":"2026-04-14","requires":{"system":{"lua-socket":{"min":3}}},"latest":{},"version":"0.1.0+ca749c8a-dirty"}],"product":[{"tier":"free","supports":{"kaupapi":{"max":"<2.0.0","min":"0.1.0"},"stapul":{"max":"<2.0.0","min":"0.1.0"},"raidjan":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"0.1.0"},"redan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Shared product module -- validation, category resolution, price lookup, bundle expansion","released":"2026-05-03","requires":{"system":[]},"latest":{"kaupapi":true,"stapul":true,"raidjan":true,"steurjan":true,"redan":true},"version":"0.2.0+69bf06a6"},{"tier":"free","supports":{"kaupapi":{"max":"<2.0.0","min":"0.1.0"},"stapul":{"max":"<2.0.0","min":"0.1.0"},"raidjan":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"0.1.0"},"redan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Shared product module -- validation, category resolution, price lookup, bundle expansion","released":"2026-05-03","requires":{"system":[]},"latest":{"kaupapi":false,"stapul":false,"raidjan":false,"steurjan":false,"redan":false},"version":"0.1.2+570bdf80"}],"daw-modul-product":[{"tier":"free","supports":{"kaupapi":{"max":"<2.0.0","min":"0.1.0"},"stapul":{"max":"<2.0.0","min":"0.1.0"},"raidjan":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"0.1.0"},"redan":{"max":"<2.0.0","min":"0.1.0"}},"description":"Shared product module -- validation, category resolution, price lookup, bundle expansion","released":"2026-05-01","requires":{"system":[]},"latest":{"kaupapi":true,"stapul":true,"raidjan":true,"steurjan":true,"redan":true},"version":"0.1.1+b7154039"}],"storage-pg":[{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"PostgreSQL storage backend for DAW projects","released":"2026-04-24","requires":{"system":{"postgresql":{"min":17.0},"pg-backend":{"one-of":{"pgmoon":{"min":1.12},"lua-sql-postgresql":{"min":2.6}}}}},"latest":{"openbookregister":true},"version":"0.3.0+833cfe38"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"PostgreSQL storage backend for DAW projects","released":"2026-04-24","requires":{"system":{"postgresql":{"min":17.0},"pg-backend":{"one-of":{"pgmoon":{"min":1.12},"lua-sql-postgresql":{"min":2.6}}}}},"latest":{"openbookregister":false},"version":"0.2.0+0531bc3c-dirty"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"PostgreSQL storage backend for DAW projects","released":"2026-04-13","requires":{"system":{"postgresql":{"min":17},"pg-backend":{"one-of":{"pgmoon":{"min":1.12},"lua-sql-postgresql":{"min":2.6}}}}},"latest":{"openbookregister":false},"version":"0.2.0+e6c1a475"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"PostgreSQL storage backend for DAW projects","released":"2026-04-12","requires":{"system":{"psql":{"min":17},"libpq":{"min":17}}},"latest":{"openbookregister":false},"version":"0.1.1+cd594238"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"PostgreSQL storage backend for DAW projects","released":"2026-04-12","requires":{"system":{}},"latest":{"openbookregister":false},"version":"0.1.0+e9622390-dirty"}],"fragjan-check-listvalues":[{"tier":"free","supports":{"fragjan":{"min":"0.2.0"}},"description":"Validate table literal values against allowed or forbidden list","released":"2026-05-26","requires":{"system":[]},"latest":{"fragjan":true},"version":"0.1.3+4fda08f2"},{"tier":"free","supports":{"fragjan":{"min":"0.2.0"}},"description":"Validate table literal values against allowed or forbidden list","released":"2026-05-26","requires":{"system":[]},"latest":{"fragjan":false},"version":"0.1.2+5a1ea021"},{"tier":"free","supports":{"fragjan":{"min":"0.2.0"}},"description":"Validate table literal values against allowed or forbidden list","released":"2026-05-26","requires":{"system":[]},"latest":{"fragjan":false},"version":"0.1.1+2b52665d"}],"storage-sqlite":[{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"1.0.0"},"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"SQLite storage backend","released":"2026-04-22","requires":{"system":{"sqlite3-lua":{"one-of":{"lua-sql-sqlite3":{"min":"0.9.0"},"lsqlite3":{"min":"0.9.0"}}}}},"latest":{"steurjan":true,"openbookregister":true},"version":"0.2.0+de4d5c96"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"1.0.0"},"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"SQLite storage backend","released":"2026-04-17","requires":{"system":{"sqlite3-lua":{"one-of":{"lua-sql-sqlite3":{"min":"0.9.0"},"lsqlite3":{"min":"0.9.0"}}}}},"latest":{"steurjan":false,"openbookregister":false},"version":"0.1.3+b47cc6aa"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"SQLite storage backend","released":"2026-04-17","requires":{"system":{"lua-sql-sqlite3":{"min":"0.9.0"}}},"latest":{"openbookregister":false},"version":"0.1.2+2ea11433"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"SQLite storage backend","released":"2026-04-17","requires":{"system":{"luasqlite3":{"min":"0.9.0"}}},"latest":{"openbookregister":false},"version":"0.1.1+243bf884"},{"tier":"free","supports":{"steurjan":{"max":"<2.0.0","min":"1.0.0"},"openbookregister":{"max":"<2.0.0","min":"1.0.0"}},"description":"SQLite storage backend","released":"2026-04-17","requires":{"system":{"luasqlite3":{"min":"0.9.0"}}},"latest":{"steurjan":false,"openbookregister":false},"version":"0.1.0+65568170"}],"fragjan-check-exists":[{"tier":"free","supports":{"fragjan":{"min":"0.1.2"}},"description":"fragjan primitive: check if a file or directory exists in a project","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":true},"version":"0.1.3+981615c3"},{"tier":"free","supports":{"fragjan":{"min":"0.1.2"}},"description":"fragjan primitive: check if a file or directory exists in a project","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.2+89db1135"},{"tier":"free","supports":{"fragjan":{"min":"0.1.2"}},"description":"fragjan primitive: check if a file or directory exists in a project","released":"2026-05-23","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.1+d6d3ba9a"},{"tier":"free","supports":{"fragjan":{"min":"0.1.2"}},"description":"fragjan primitive: check if a file or directory exists in a project","released":"2026-05-19","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.0+6ea950a6"}],"federation-sync":[{"tier":"free","supports":{"kaupapi":{"max":"<2.0.0","min":"0.1.0"},"raidjan":{"max":"<2.0.0","min":"0.1.0"},"steurjan":{"max":"<2.0.0","min":"0.1.0"},"redan":{"max":"<2.0.0","min":"0.1.0"},"obr":{"max":"<2.0.0","min":"0.1.0"}},"description":"Block-based federation sync protocol for DAW instances","released":"2026-05-03","requires":{"system":[]},"latest":{"kaupapi":true,"raidjan":true,"steurjan":true,"redan":true,"obr":true},"version":"0.1.0+56f7ba6d"}],"fragjan-check-contains":[{"tier":"free","supports":{"fragjan":{"min":"0.1.3"}},"description":"fragjan primitive: check if a file contains or does not contain a pattern","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":true},"version":"0.1.5+a223b94f"},{"tier":"free","supports":{"fragjan":{"min":"0.1.3"}},"description":"fragjan primitive: check if a file contains or does not contain a pattern","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.4+0ba69437"},{"tier":"free","supports":{"fragjan":{"min":"0.1.3"}},"description":"fragjan primitive: check if a file contains or does not contain a pattern","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.3+d80f1857"},{"tier":"free","supports":{"fragjan":{"min":"0.1.3"}},"description":"fragjan primitive: check if a file contains or does not contain a pattern","released":"2026-05-19","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.2+60af72cd"},{"tier":"free","supports":{"fragjan":{"min":"0.1.3"}},"description":"fragjan primitive: check if a file contains or does not contain a pattern","released":"2026-05-19","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.1+b61170f5"},{"tier":"free","supports":{"fragjan":{"min":"0.1.3"}},"description":"fragjan primitive: check if a file contains or does not contain a pattern","released":"2026-05-19","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.0+4e20f780"}],"auth":[{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"Authentication for DAW projects -- API key auth, JWT (no cookies)","released":"2026-04-24","requires":{"system":{"openssl":{"min":3.0}}},"latest":{"openbookregister":true},"version":"0.2.0+bedb8476"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"Authentication for DAW projects -- API key auth, JWT (no cookies)","released":"2026-04-14","requires":{"system":{"openssl":{"min":3}}},"latest":{"openbookregister":false},"version":"0.1.0+a905842c"}],"fragjan-check-markdown":[{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: extract structured content from Markdown files","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":true},"version":"0.1.1+1b35432c"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: extract structured content from Markdown files","released":"2026-05-24","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.0+4906b51e"}],"fragjan-check-pattern":[{"tier":"free","released":"2026-05-27","description":"fragjan primitive: search for a pattern in a file","supports":{"fragjan":{"min":"0.1.0"}},"requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":true},"version":"0.1.6+f7bc85d1"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: search for a pattern in a file","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.5+a223b94f"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: search for a pattern in a file","released":"2026-05-27","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.3+d80f1857"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: search for a pattern in a file","released":"2026-05-19","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.2+ef98877a"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: search for a pattern in a file","released":"2026-05-19","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.1+0eaf02b0"},{"tier":"free","supports":{"fragjan":{"min":"0.1.0"}},"description":"fragjan primitive: search for a pattern in a file","released":"2026-05-18","requires":{"system":{"lua":{"min":5.1}}},"latest":{"fragjan":false},"version":"0.1.0+b370900b"}],"api":[{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"API layer for DAW HTTP services -- CORS, rate-limiting, JSON helpers, auth hook","released":"2026-04-24","requires":{"system":[]},"latest":{"openbookregister":true},"version":"0.2.0+f6586377"},{"tier":"free","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"description":"API layer for DAW HTTP services -- CORS, rate-limiting, JSON helpers, auth hook","released":"2026-04-14","requires":{"system":{}},"latest":{"openbookregister":false},"version":"0.1.0+7d291211"}]}}