xworkmate-bridge/main.go
2026-04-22 12:28:16 +08:00

74 lines
1.5 KiB
Go

package main
import (
"encoding/json"
"fmt"
"os"
"xworkmate-bridge/internal/acp"
"xworkmate-bridge/internal/geminiadapter"
"xworkmate-bridge/internal/hermesadapter"
"xworkmate-bridge/internal/toolbridge"
)
var (
buildCommit = ""
buildVersion = "v1.0-beta2"
buildDate = ""
)
func main() {
if len(os.Args) > 1 {
switch os.Args[1] {
case "-v", "--version":
if err := printBridgeVersionInfo(); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
return
}
}
if len(os.Args) > 1 && os.Args[1] == "serve" {
if err := acp.Serve(os.Args[2:]); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
return
}
if len(os.Args) > 1 && os.Args[1] == "acp-stdio" {
acp.RunStdio(os.Stdin, os.Stdout)
return
}
if len(os.Args) > 1 && os.Args[1] == "gemini-acp-adapter" {
if err := geminiadapter.Serve(os.Args[2:]); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
return
}
if len(os.Args) > 1 && os.Args[1] == "hermes-acp-adapter" {
if err := hermesadapter.Serve(os.Args[2:]); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
return
}
toolbridge.Run(os.Stdin, os.Stdout)
}
func printBridgeVersionInfo() error {
payload := map[string]any{
"status": "ok",
"commit": buildCommit,
"version": buildVersion,
"build-date": buildDate,
}
encoded, err := json.Marshal(payload)
if err != nil {
return err
}
_, err = os.Stdout.Write(append(encoded, '\n'))
return err
}