{"packages":{"fragjan-check-contains":[{"tier":"free","version":"0.1.3+d80f1857","description":"fragjan primitive: check if a file contains or does not contain a pattern","latest":{"fragjan":true},"released":"2026-05-27","supports":{"fragjan":{"min":"0.1.3"}},"requires":{"system":{"lua":{"min":5.1}}}},{"tier":"free","version":"0.1.2+60af72cd","description":"fragjan primitive: check if a file contains or does not contain a pattern","latest":{"fragjan":false},"released":"2026-05-19","supports":{"fragjan":{"min":"0.1.3"}},"requires":{"system":{"lua":{"min":5.1}}}},{"tier":"free","version":"0.1.1+b61170f5","description":"fragjan primitive: check if a file contains or does not contain a pattern","latest":{"fragjan":false},"released":"2026-05-19","supports":{"fragjan":{"min":"0.1.3"}},"requires":{"system":{"lua":{"min":5.1}}}},{"tier":"free","version":"0.1.0+4e20f780","description":"fragjan primitive: check if a file contains or does not contain a pattern","latest":{"fragjan":false},"released":"2026-05-19","supports":{"fragjan":{"min":"0.1.3"}},"requires":{"system":{"lua":{"min":5.1}}}}],"http-server":[{"tier":"free","version":"0.2.0+77253d3d","description":"Generic TCP-based HTTP server with URL param routing and static file serving","latest":{"openbookregister":true},"released":"2026-04-22","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"requires":{"system":{"socket":{"min":3.0}}}},{"tier":"free","version":"0.1.3+81faed66","description":"Generic TCP-based HTTP server with URL param routing and static file serving","latest":{"openbookregister":false},"released":"2026-04-14","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"requires":{"system":{"socket":{"min":3}}}},{"tier":"free","version":"0.1.2+eb857c68","description":"Generic TCP-based HTTP server with URL param routing and static file serving","latest":{"openbookregister":false},"released":"2026-04-14","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"requires":{"system":{"socket":{"min":3}}}},{"tier":"free","version":"0.1.1+c696c6cf","description":"Generic TCP-based HTTP server with URL param routing and static file serving","latest":{"openbookregister":false},"released":"2026-04-14","supports":{"openbookregister":{"max":"<2.0.0","min":"0.1.0"}},"requires":{"system":{"lua-socket":{"min":3}}}},{"tier":"free","version":"0.1.0+ca749c8a","description":"Generic TCP-based HTTP server with URL param routing and static file serving","latest":{},"released":"2026-04-14","supports":{},"requires":{"system":{"lua-socket":{"min":3}}}},{"tier":"free","version":"0.1.0+ca749c8a-dirty","description":"Generic TCP-based HTTP server with URL param routing and static file serving","latest":{},"released":"2026-04-14","supports":{},"requires":{"system":{"lua-socket":{"min":3}}}}],"federation-sync":[{"tier":"free","version":"0.1.0+56f7ba6d","description":"Block-based federation sync protocol for DAW instances","latest":{"steurjan":true,"redan":true,"kaupapi":true,"raidjan":true,"obr":true},"released":"2026-05-03","supports":{"steurjan":{"max":"<2.0.0","min":"0.1.0"},"redan":{"max":"<2.0.0","min":"0.1.0"},"kaupapi":{"max":"<2.0.0","min":"0.1.0"},"raidjan":{"max":"<2.0.0","min":"0.1.0"},"obr":{"max":"<2.0.0","min":"0.1.0"}},"requires":{"system":[]}}],"fragjan-check-linecount":[{"tier":"free","version":"0.1.1+880e75e3","description":"fragjan primitive: count lines in a file","latest":{"fragjan":true},"released":"2026-05-19","supports":{"fragjan":{"min":"0.1.0"}},"requires":{"system":{"lua":{"min":5.1}}}},{"tier":"free","version":"0.1.0+e89ecf2d","description":"fragjan primitive: count lines in a file","latest":{"fragjan":false},"released":"2026-05-18","supports":{"fragjan":{"min":"0.1.0"}},"requires":{"system":{"lua":{"min":5.1}}}}],"product":[{"tier":"free","version":"0.2.0+69bf06a6","description":"Shared product module -- validation, category resolution, price lookup, bundle expansion","latest":{"raidjan":true,"redan":true,"kaupapi":true,"steurjan":true,"stapul":true},"released":"2026-05-03","supports":{"raidjan":{"max":"<2.0.0","min":"0.1.0"},"redan":