Compare commits

...

2 Commits

Author SHA1 Message Date
73adb01572 Merge pull request 'feat(ledger): add demo CLI for append/verify/show' (#2) from shadowmo/Cognition-OS:feature/ledger-prototype into main
Some checks failed
CI / build (1.20, ubuntu-latest) (push) Has been cancelled
CI / release-checks (push) Has been cancelled
Reviewed-on: #2
2026-02-28 06:08:41 +00:00
shadowmo
9af1c89b71 feat(ledger): add demo CLI for append/verify/show 2026-02-28 00:08:08 -06:00

56
cmd/ledger-demo/main.go Normal file
View File

@@ -0,0 +1,56 @@
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")
}
}