package main import ( "encoding/json" "flag" "fmt" "os" "time" "shadowmo/Cognition-OS/runtime/ledger" ) func main() { path := flag.String("file", "ledger-demo.jsonl", "path to ledger file") op := flag.String("op", "append", "operation: append|verify|show") flag.Parse() l, err := ledger.Open(*path) if err != nil { fmt.Fprintln(os.Stderr, "open error:", err) os.Exit(1) } defer l.Close() switch *op { case "append": payload := map[string]interface{}{ "msg": fmt.Sprintf("demo event at %s", time.Now().Format(time.RFC3339)), } h, err := l.Append("demo_event", payload) if err != nil { fmt.Fprintln(os.Stderr, "append error:", err) os.Exit(1) } fmt.Println("appended hash:", h) case "verify": if err := l.Verify(); err != nil { fmt.Fprintln(os.Stderr, "verify failed:", err) os.Exit(2) } fmt.Println("ledger verified ok") case "show": f, err := os.Open(*path) if err != nil { fmt.Fprintln(os.Stderr, "open:", err); os.Exit(1) } defer f.Close() dec := json.NewDecoder(f) for { var e map[string]interface{} if err := dec.Decode(&e); err != nil { break } b, _ := json.MarshalIndent(e, "", " ") fmt.Println(string(b)) } default: fmt.Fprintln(os.Stderr, "unknown op") } }