Files
GitHop/services/control-plane/internal/ids/ids.go
T
Hop fee4f6dd31 Add a secure repository Prompts review surface and prompt metadata API
Hop-State: A_06FN6MRSHG4B64ZV13086G8
Hop-Proposal: R_06FN6MQDE14FFNR65H1D28G
Hop-Task: T_06FN6J8ECE1Z9XQ5PQ3Z3D8
Hop-Attempt: AT_06FN6J8ECC1SC794JMZ0TF8
2026-07-11 15:36:22 -07:00

33 lines
742 B
Go

package ids
import (
"crypto/rand"
"encoding/base32"
"time"
)
var encoding = base32.NewEncoding("0123456789ABCDEFGHJKMNPQRSTVWXYZ").WithPadding(base32.NoPadding)
func Repository() (string, error) {
return newID("RP_")
}
func Prompt() (string, error) {
return newID("PM_")
}
func newID(prefix string) (string, error) {
value := make([]byte, 16)
milliseconds := uint64(time.Now().UnixMilli())
value[0] = byte(milliseconds >> 40)
value[1] = byte(milliseconds >> 32)
value[2] = byte(milliseconds >> 24)
value[3] = byte(milliseconds >> 16)
value[4] = byte(milliseconds >> 8)
value[5] = byte(milliseconds)
if _, err := rand.Read(value[6:]); err != nil {
return "", err
}
return prefix + encoding.EncodeToString(value), nil
}