6a0f3982e8
Fills out Quartz's NIP-34 implementation so clients can build and parse every spec-defined event kind, not just repository announcements and issues. Kind 30617 (Repository Announcement): - Multi-value web/clone accessors and builders - relays, maintainers, hashtags, earliestUniqueCommit, isPersonalFork - New tag classes: RelaysTag, MaintainersTag, EucTag - New build() overload covering every optional tag Kind 30618 (Repository State): new GitRepositoryStateEvent with refs/heads, refs/tags, HEAD, and a RefTag/HeadTag pair. Kind 1617 (Patch): rewrite builder to use the eventTemplate DSL with required a/r/p tags, optional commit/parent-commit/commit-pgp-sig/ committer/root/root-revision markers, and a reply() helper that adds NIP-10 marked e-tags pointing at a prior patch. Kind 1618/1619 (Pull Request + Update): new GitPullRequestEvent and GitPullRequestUpdateEvent with c/clone/branch-name/merge-base tags and NIP-22 E/P parent references for updates. Kinds 1630/1631/1632/1633 (Status Open/Applied/Closed/Draft): new GitStatusEvent base + four subclasses sharing a GitStatusBuilders DSL. Applied status carries merge-commit, applied-as-commits, and q tags for the specific patch events that were merged. Kind 10317 (User Grasp List): new UserGraspListEvent replaceable list of g tags (websocket URLs in preference order) for discovering grasp hosting servers. NIP-51 Kind 10017 (Git Authors List): now uses a dedicated GitAuthorTag class with optional petname (NIP-02 follow-list 4th element) instead of the mute-list UserTag, so round-tripping follow lists no longer drops petnames. All new event kinds are registered in EventFactory. Spotless-clean and compiles via :quartz:compileKotlinJvm. https://claude.ai/code/session_018Fz3AeEdGkeFoeHBKuMwbH