diff --git a/nip90/.gitignore b/nip90/.gitignore new file mode 100644 index 0000000..28a0cdc --- /dev/null +++ b/nip90/.gitignore @@ -0,0 +1 @@ +data-vending-machines diff --git a/nip90/justfile b/nip90/justfile new file mode 100644 index 0000000..b483342 --- /dev/null +++ b/nip90/justfile @@ -0,0 +1,90 @@ +generate: dvm_repo + #!/usr/bin/env fish + echo 'package nip90 + + type Job struct { + InputKind int + OutputKind int + Name string + Description string + InputType string + Params []string + } + ' > kinds.go + for kindf in (ls data-vending-machines/kinds) + set file "data-vending-machines/kinds/$kindf" + + set kind (echo $kindf | ag -o '\d+') + set okind (echo $kind | jq -r '. + 1000') + set title (ag '^title:' $file | awk '{$1=""; sub(/^ +/, "", $0); print}' | string collect | string trim) + set desc (ag '^description:' $file | awk '{$1=""; sub(/^ +/, "", $0); print}' | string collect | string trim) + set inputtype (cat $file | ag -o '\["i",[^]]*]' | jq -r '.[2]') + + echo "var Job$kind = Job{ + InputKind: $kind, + OutputKind: $okind, + Name: \"$name\", + Description: \"$desc\", + InputType: \"$inputtype\", + Params: []string{" >> kinds.go + + for param in (fq ' + def drill_to_code: + if (type == "object" and .children) then + .children + | map(drill_to_code) + else + select + ( (type == "object") and (.type == "code") + ) + | .literal + end + ; + + .children + | . as $sections + | + ( $sections + | map(.type == "heading" and .children == ["Params"]) + | index(true) + ) as $startParams + | if $startParams == null + then [] + else + ( $sections[($startParams + 1):] + | map(.type == "heading" and .level == ($sections[$startParams].level)) + | index(true) + | . + $startParams + 1 + ) as $endParams + | ( $sections[($startParams + 1):$endParams] + | map + ( .children + | select(.) + | map(drill_to_code) + ) + | flatten + | select(. | length > 1) + | unique + ) + end + | .[] + ' -d markdown -r $file + ) + echo "\"$param\"", >> kinds.go + end + + echo "}, + } + " >> kinds.go + end + + go fmt kinds.go + +dvm_repo: + #!/usr/bin/env fish + if [ ! -d data-vending-machines ] + git clone https://github.com/nostr-protocol/data-vending-machines.git + end + cd data-vending-machines + git reset --hard HEAD + git pull diff --git a/nip90/kinds.go b/nip90/kinds.go new file mode 100644 index 0000000..237f92e --- /dev/null +++ b/nip90/kinds.go @@ -0,0 +1,224 @@ +package nip90 + +type Job struct { + InputKind int + OutputKind int + Name string + Description string + InputType string + Params []string +} + +var Job5000 = Job{ + InputKind: 5000, + OutputKind: 6000, + Name: "", + Description: "Job request to extract text from some kind of input.", + InputType: "", + Params: []string{ + "alignment", + "range", + "raw", + "segment", + "word", + }, +} + +var Job5001 = Job{ + InputKind: 5001, + OutputKind: 6001, + Name: "", + Description: "Summarize input(s)", + InputType: "", + Params: []string{ + "length", + "paragraphs", + "words", + }, +} + +var Job5002 = Job{ + InputKind: 5002, + OutputKind: 6002, + Name: "", + Description: "Translate input(s)", + InputType: "", + Params: []string{}, +} + +var Job5050 = Job{ + InputKind: 5050, + OutputKind: 6050, + Name: "", + Description: "Job request to generate text using AI models.", + InputType: "", + Params: []string{ + "frequency_penalty", + "max_tokens", + "model", + "temperature", + "top_k", + "top_p", + }, +} + +var Job5100 = Job{ + InputKind: 5100, + OutputKind: 6100, + Name: "", + Description: "Job request to generate Images using AI models.", + InputType: "", + Params: []string{ + "${width}x${height}", + "1024x768", + "512x512", + "lora", + "model", + "negative_prompt", + "ratio", + "size", + }, +} + +var Job5200 = Job{ + InputKind: 5200, + OutputKind: 6200, + Name: "", + Description: "Job request to convert a Video to another Format.", + InputType: "", + Params: []string{}, +} + +var Job5201 = Job{ + InputKind: 5201, + OutputKind: 6201, + Name: "", + Description: "Job request to translate video audio content into target language with or without subtitles.", + InputType: "", + Params: []string{ + "format", + "language", + "range", + "subtitle", + }, +} + +var Job5202 = Job{ + InputKind: 5202, + OutputKind: 6202, + Name: "", + Description: "Job request to convert a static Image to a a short animated video clip", + InputType: "", + Params: []string{}, +} + +var Job5250 = Job{ + InputKind: 5250, + OutputKind: 6250, + Name: "", + Description: "Job request to convert text input to an audio file.", + InputType: "", + Params: []string{}, +} + +var Job5300 = Job{ + InputKind: 5300, + OutputKind: 6300, + Name: "", + Description: "Job request to discover nostr-native content", + InputType: "", + Params: []string{}, +} + +var Job5301 = Job{ + InputKind: 5301, + OutputKind: 6301, + Name: "", + Description: "Job request to discover nostr pubkeys", + InputType: "", + Params: []string{}, +} + +var Job5302 = Job{ + InputKind: 5302, + OutputKind: 6302, + Name: "", + Description: "Job to search for notes based on a prompt", + InputType: "", + Params: []string{ + "max_results", + "since", + "until", + "users", + }, +} + +var Job5303 = Job{ + InputKind: 5303, + OutputKind: 6303, + Name: "", + Description: "Job to search for profiles based on a prompt", + InputType: "", + Params: []string{}, +} + +var Job5400 = Job{ + InputKind: 5400, + OutputKind: 6400, + Name: "", + Description: "Job request to count matching events", + InputType: "", + Params: []string{ + "content", + "group", + "pubkey", + "relay", + "reply", + "root", + }, +} + +var Job5500 = Job{ + InputKind: 5500, + OutputKind: 6500, + Name: "", + Description: "Job request to perform a Malware Scan on files.", + InputType: "url", + Params: []string{}, +} + +var Job5900 = Job{ + InputKind: 5900, + OutputKind: 6900, + Name: "", + Description: "NIP-03 Timestamping of nostr events", + InputType: "", + Params: []string{}, +} + +var Job5901 = Job{ + InputKind: 5901, + OutputKind: 6901, + Name: "", + Description: "Create a bitcoin transaction with an OP_RETURN", + InputType: "text", + Params: []string{}, +} + +var Job5905 = Job{ + InputKind: 5905, + OutputKind: 6905, + Name: "", + Description: "Schedule nostr events for future publishing", + InputType: "", + Params: []string{}, +} + +var Job5970 = Job{ + InputKind: 5970, + OutputKind: 6970, + Name: "", + Description: "Delegate PoW of an event to a provider.", + InputType: "", + Params: []string{}, +}