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
This commit is contained in:
@@ -9,6 +9,14 @@ import (
|
||||
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)
|
||||
@@ -20,5 +28,5 @@ func Repository() (string, error) {
|
||||
if _, err := rand.Read(value[6:]); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return "RP_" + encoding.EncodeToString(value), nil
|
||||
return prefix + encoding.EncodeToString(value), nil
|
||||
}
|
||||
|
||||
@@ -21,3 +21,13 @@ func TestRepository(t *testing.T) {
|
||||
t.Fatal("generated duplicate IDs")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrompt(t *testing.T) {
|
||||
id, err := Prompt()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.HasPrefix(id, "PM_") || len(id) != 29 {
|
||||
t.Fatalf("unexpected prompt ID %q", id)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user