feat: add reader methods to all DVM request events for server processing
Each request event now exposes typed reader methods so DVM servers can extract inputs, parameters, and configuration from incoming requests: - inputs() returns List<InputTag> with value, type, relay, marker - Kind-specific readers like language(), model(), searchQuery(), pow(), etc. - Shared TagArrayExt with dvmParam(), dvmParamAll(), dvmParamValues() Also adds readers to existing 5300/5301 events (dvmPubKey, user, relays). https://claude.ai/code/session_017aamEDeRtQ2H9u5U9B5F1C
This commit is contained in:
+15
@@ -28,6 +28,9 @@ import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@Stable
|
||||
@@ -40,6 +43,18 @@ class NIP90ContentDiscoveryRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun dvmPubKey(): HexKey? = tags.firstOrNull { it.size >= 2 && it[0] == "p" }?.get(1)
|
||||
|
||||
fun relays() = tags.relays()
|
||||
|
||||
fun params() = tags.params()
|
||||
|
||||
fun user(): String? = tags.dvmParam("user")
|
||||
|
||||
fun maxResults(): String? = tags.dvmParam("max_results")
|
||||
|
||||
companion object {
|
||||
const val KIND = 5300
|
||||
const val ALT = "NIP90 Content Discovery request"
|
||||
|
||||
+16
@@ -26,7 +26,11 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -39,6 +43,18 @@ class NIP90ContentSearchRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun searchQuery(): String? = tags.firstInputByType("text")?.value
|
||||
|
||||
fun users(): String? = tags.dvmParam("users")
|
||||
|
||||
fun since(): Long? = tags.dvmParam("since")?.toLongOrNull()
|
||||
|
||||
fun until(): Long? = tags.dvmParam("until")?.toLongOrNull()
|
||||
|
||||
fun maxResults(): Int? = tags.dvmParam("max_results")?.toIntOrNull()
|
||||
|
||||
companion object {
|
||||
const val KIND = 5302
|
||||
const val ALT = "NIP90 Content Search request"
|
||||
|
||||
+11
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParamAll
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -39,6 +42,14 @@ class NIP90EventCountRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun relays(): List<String> = tags.dvmParamAll("relay")
|
||||
|
||||
fun groups(): List<String> = tags.dvmParamAll("group")
|
||||
|
||||
fun filterJson(): String = content
|
||||
|
||||
companion object {
|
||||
const val KIND = 5400
|
||||
const val ALT = "NIP90 Event Count request"
|
||||
|
||||
+9
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -39,6 +42,12 @@ class NIP90EventPowDelegationRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun eventJsons(): List<String> = inputs().filter { it.type == "text" }.map { it.value }
|
||||
|
||||
fun pow(): Int? = tags.dvmParam("pow")?.toIntOrNull()
|
||||
|
||||
companion object {
|
||||
const val KIND = 5970
|
||||
const val ALT = "NIP90 Event PoW Delegation request"
|
||||
|
||||
+9
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParamValues
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -39,6 +42,12 @@ class NIP90EventPublishScheduleRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun eventJsons(): List<String> = inputs().filter { it.type == "text" }.map { it.value }
|
||||
|
||||
fun relays(): List<String> = tags.dvmParamValues("relays") ?: emptyList()
|
||||
|
||||
companion object {
|
||||
const val KIND = 5905
|
||||
const val ALT = "NIP90 Event Publish Schedule request"
|
||||
|
||||
+7
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputEvent
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@Immutable
|
||||
@@ -38,6 +41,10 @@ class NIP90EventTimestampingRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun eventIdToStamp(): HexKey? = tags.firstInputByType("event")?.value
|
||||
|
||||
companion object {
|
||||
const val KIND = 5900
|
||||
const val ALT = "NIP90 Event Timestamping request"
|
||||
|
||||
+20
@@ -26,8 +26,12 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputUrl
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -40,6 +44,22 @@ class NIP90ImageGenerationRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun prompt(): String? = tags.firstInputByType("text")?.value
|
||||
|
||||
fun sourceImageUrl(): String? = tags.firstInputByType("url")?.value
|
||||
|
||||
fun model(): String? = tags.dvmParam("model")
|
||||
|
||||
fun lora(): String? = tags.dvmParam("lora")
|
||||
|
||||
fun ratio(): String? = tags.dvmParam("ratio")
|
||||
|
||||
fun size(): String? = tags.dvmParam("size")
|
||||
|
||||
fun negativePrompt(): String? = tags.dvmParam("negative_prompt")
|
||||
|
||||
companion object {
|
||||
const val KIND = 5100
|
||||
const val ALT = "NIP90 Image Generation request"
|
||||
|
||||
+7
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputUrl
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@Immutable
|
||||
@@ -38,6 +41,10 @@ class NIP90ImageToVideoRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun imageUrl(): String? = tags.firstInputByType("url")?.value
|
||||
|
||||
companion object {
|
||||
const val KIND = 5202
|
||||
const val ALT = "NIP90 Image-to-Video request"
|
||||
|
||||
+7
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputUrl
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@Immutable
|
||||
@@ -38,6 +41,10 @@ class NIP90MalwareScanRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun fileUrl(): String? = tags.firstInputByType("url")?.value
|
||||
|
||||
companion object {
|
||||
const val KIND = 5500
|
||||
const val ALT = "NIP90 Malware Scan request"
|
||||
|
||||
+7
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@Immutable
|
||||
@@ -38,6 +41,10 @@ class NIP90OpReturnRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun text(): String? = tags.firstInputByType("text")?.value
|
||||
|
||||
companion object {
|
||||
const val KIND = 5901
|
||||
const val ALT = "NIP90 OP_RETURN Creation request"
|
||||
|
||||
+10
@@ -26,7 +26,11 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -39,6 +43,12 @@ class NIP90PeopleSearchRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun searchQuery(): String? = tags.firstInputByType("text")?.value
|
||||
|
||||
fun maxResults(): Int? = tags.dvmParam("max_results")?.toIntOrNull()
|
||||
|
||||
companion object {
|
||||
const val KIND = 5303
|
||||
const val ALT = "NIP90 People Search request"
|
||||
|
||||
+10
@@ -26,8 +26,12 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputEvent
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.output
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.outputMimeType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -40,6 +44,12 @@ class NIP90SummarizationRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun outputMimeType(): String? = tags.outputMimeType()
|
||||
|
||||
fun length(): String? = tags.dvmParam("length")
|
||||
|
||||
companion object {
|
||||
const val KIND = 5001
|
||||
const val ALT = "NIP90 Summarization request"
|
||||
|
||||
@@ -24,4 +24,18 @@ import com.vitorpamplona.quartz.nip01Core.core.TagArray
|
||||
|
||||
fun TagArray.inputs() = mapNotNull(InputTag::parse)
|
||||
|
||||
fun TagArray.firstInputByType(type: String) = inputs().firstOrNull { it.type == type }
|
||||
|
||||
fun TagArray.outputMimeType() = firstNotNullOfOrNull(OutputTag::parse)?.mimeType
|
||||
|
||||
fun TagArray.dvmParams(): List<Pair<String, List<String>>> =
|
||||
filter { it.size >= 3 && it[0] == "param" }
|
||||
.map { it[1] to it.drop(2) }
|
||||
|
||||
fun TagArray.dvmParam(key: String): String? = firstOrNull { it.size >= 3 && it[0] == "param" && it[1] == key }?.getOrNull(2)
|
||||
|
||||
fun TagArray.dvmParamValues(key: String): List<String>? = firstOrNull { it.size >= 3 && it[0] == "param" && it[1] == key }?.drop(2)
|
||||
|
||||
fun TagArray.dvmParamAll(key: String): List<String> =
|
||||
filter { it.size >= 3 && it[0] == "param" && it[1] == key }
|
||||
.mapNotNull { it.getOrNull(2) }
|
||||
|
||||
+15
@@ -26,8 +26,13 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParamValues
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputUrl
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.output
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.outputMimeType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -40,6 +45,16 @@ class NIP90TextExtractionRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun outputMimeType(): String? = tags.outputMimeType()
|
||||
|
||||
fun rangeStart(): String? = tags.dvmParamValues("range")?.getOrNull(0)
|
||||
|
||||
fun rangeEnd(): String? = tags.dvmParamValues("range")?.getOrNull(1)
|
||||
|
||||
fun alignment(): String? = tags.dvmParam("alignment")
|
||||
|
||||
companion object {
|
||||
const val KIND = 5000
|
||||
const val ALT = "NIP90 Text Extraction request"
|
||||
|
||||
+20
@@ -26,8 +26,12 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputPrompt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.output
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.outputMimeType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -40,6 +44,22 @@ class NIP90TextGenerationRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun outputMimeType(): String? = tags.outputMimeType()
|
||||
|
||||
fun model(): String? = tags.dvmParam("model")
|
||||
|
||||
fun maxTokens(): Int? = tags.dvmParam("max_tokens")?.toIntOrNull()
|
||||
|
||||
fun temperature(): Double? = tags.dvmParam("temperature")?.toDoubleOrNull()
|
||||
|
||||
fun topK(): Int? = tags.dvmParam("top_k")?.toIntOrNull()
|
||||
|
||||
fun topP(): Double? = tags.dvmParam("top_p")?.toDoubleOrNull()
|
||||
|
||||
fun frequencyPenalty(): Double? = tags.dvmParam("frequency_penalty")?.toDoubleOrNull()
|
||||
|
||||
companion object {
|
||||
const val KIND = 5050
|
||||
const val ALT = "NIP90 Text Generation request"
|
||||
|
||||
+10
@@ -26,7 +26,11 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.firstInputByType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputText
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -39,6 +43,12 @@ class NIP90TextToSpeechRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun text(): String? = tags.firstInputByType("text")?.value
|
||||
|
||||
fun language(): String? = tags.dvmParam("language")
|
||||
|
||||
companion object {
|
||||
const val KIND = 5250
|
||||
const val ALT = "NIP90 Text-to-Speech request"
|
||||
|
||||
+7
@@ -26,7 +26,10 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputEvent
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -39,6 +42,10 @@ class NIP90TranslationRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun language(): String? = tags.dvmParam("language")
|
||||
|
||||
companion object {
|
||||
const val KIND = 5002
|
||||
const val ALT = "NIP90 Translation request"
|
||||
|
||||
+9
@@ -26,6 +26,9 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@Immutable
|
||||
@@ -37,6 +40,12 @@ class NIP90UserDiscoveryRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun dvmPubKey(): HexKey? = tags.firstOrNull { it.size >= 2 && it[0] == "p" }?.get(1)
|
||||
|
||||
fun user(): String? = tags.dvmParam("user")
|
||||
|
||||
companion object {
|
||||
const val KIND = 5301
|
||||
const val ALT = "NIP90 User Discovery request"
|
||||
|
||||
+12
@@ -26,8 +26,12 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParamValues
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputUrl
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.output
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.outputMimeType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -40,6 +44,14 @@ class NIP90VideoConversionRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun outputMimeType(): String? = tags.outputMimeType()
|
||||
|
||||
fun rangeStart(): String? = tags.dvmParamValues("range")?.getOrNull(0)
|
||||
|
||||
fun rangeEnd(): String? = tags.dvmParamValues("range")?.getOrNull(1)
|
||||
|
||||
companion object {
|
||||
const val KIND = 5200
|
||||
const val ALT = "NIP90 Video Conversion request"
|
||||
|
||||
+17
@@ -26,8 +26,13 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
|
||||
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
|
||||
import com.vitorpamplona.quartz.nip31Alts.alt
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.InputTag
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParam
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.dvmParamValues
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputUrl
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.inputs
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.output
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.outputMimeType
|
||||
import com.vitorpamplona.quartz.nip90Dvms.tags.param
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
@@ -40,6 +45,18 @@ class NIP90VideoTranslationRequestEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : Event(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun inputs(): List<InputTag> = tags.inputs()
|
||||
|
||||
fun outputMimeType(): String? = tags.outputMimeType()
|
||||
|
||||
fun language(): String? = tags.dvmParam("language")
|
||||
|
||||
fun subtitle(): String? = tags.dvmParam("subtitle")
|
||||
|
||||
fun rangeStart(): String? = tags.dvmParamValues("range")?.getOrNull(0)
|
||||
|
||||
fun rangeEnd(): String? = tags.dvmParamValues("range")?.getOrNull(1)
|
||||
|
||||
companion object {
|
||||
const val KIND = 5201
|
||||
const val ALT = "NIP90 Video Translation request"
|
||||
|
||||
Reference in New Issue
Block a user