kunchenguid--no-mistakes
26f897c1ec
release / release-please (push) Failing after 1m49s
docs / build (push) Failing after 6m34s
release / build-and-upload (arm64, linux) (push) Has been cancelled
release / build-and-upload (arm64, windows) (push) Has been cancelled
release / build-darwin (amd64, darwin) (push) Has been cancelled
release / checksums (push) Has been cancelled
release / finalize (push) Has been cancelled
release / build-darwin (arm64, darwin) (push) Has been cancelled
release / build-and-upload (amd64, linux) (push) Has been cancelled
release / build-and-upload (amd64, windows) (push) Has been cancelled
docs / deploy (push) Has been cancelled
50 行
1.0 KiB
Go
50 行
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
// logMu guards appends to $FAKEAGENT_LOG. The fake agent stays
|
|
// single-process per invocation, but opencode runs as a long-lived server
|
|
// that handles concurrent message POSTs from a single test, so the lock
|
|
// keeps log lines from interleaving.
|
|
var logMu sync.Mutex
|
|
|
|
type invocation struct {
|
|
Time string `json:"time"`
|
|
Agent string `json:"agent"`
|
|
Args []string `json:"args"`
|
|
Prompt string `json:"prompt"`
|
|
CWD string `json:"cwd,omitempty"`
|
|
}
|
|
|
|
func logInvocation(agent, prompt string, args []string) {
|
|
path := os.Getenv("FAKEAGENT_LOG")
|
|
if path == "" {
|
|
return
|
|
}
|
|
cwd, _ := os.Getwd()
|
|
rec := invocation{
|
|
Time: time.Now().UTC().Format(time.RFC3339Nano),
|
|
Agent: agent,
|
|
Args: args,
|
|
Prompt: prompt,
|
|
CWD: cwd,
|
|
}
|
|
data, err := json.Marshal(rec)
|
|
if err != nil {
|
|
return
|
|
}
|
|
logMu.Lock()
|
|
defer logMu.Unlock()
|
|
f, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0o644)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer f.Close()
|
|
f.Write(append(data, '\n'))
|
|
}
|