Add a pause that holds an agent after its current step
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package hookcmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
const Timeout = 7 * 24 * 60 * 60
|
||||
|
||||
type Func func(ctx context.Context, input json.RawMessage) (map[string]any, error)
|
||||
|
||||
func Command(url string) string {
|
||||
return "curl -sS --data-binary @- " + url
|
||||
}
|
||||
|
||||
func Handler(hooks map[string]Func) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
event := r.PathValue("event")
|
||||
fn := hooks[event]
|
||||
if fn == nil {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
body, err := io.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
out, err := fn(r.Context(), body)
|
||||
if err != nil {
|
||||
slog.Error("hook failed", "event", event, "err", err)
|
||||
out = map[string]any{}
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(out)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user