Go SDK
Full reference for the NotiLens Go SDK. Requires Go 1.19+.
Installation
Install
go get github.com/notilens/sdk-go
Setup
Initialize
import notilens "github.com/notilens/sdk-go"
nl, err := notilens.Init("my-app", notilens.Options{
Token: "YOUR_TOKEN",
Secret: "YOUR_SECRET",
})
// Or use environment variables: NOTILENS_TOKEN / NOTILENS_SECRET
nl, err := notilens.Init("my-app")Task Lifecycle
Task Events
Real-world uses: wrap an AI research agent (start → progress → complete/fail), a nightly invoice import (loop per batch → complete), or a user-triggered export (start → output_generated → complete).
run := nl.Task("email")
run.Queue()
run.Start()
run.Progress("Fetching records...")
run.Loop("Processing batch 2")
run.Retry()
run.Pause("Rate limited")
run.Resume("Resuming")
run.Wait("Awaiting tool")
run.Error("Non-fatal error")
run.Complete("All done")
run.Fail("Unrecoverable")
run.Timeout("Exceeded 30s")
run.Cancel("User cancelled")
run.Terminate("OOM")Metrics
Metrics
Real-world uses: track LLM token spend across a multi-step run. Monitor records in a nightly ETL — NotiLens alerts if count drops vs baseline. Watch API error rate across runs.
run.Metric("tokens", 350)
run.Metric("tokens", 210) // now 560
run.Metric("cost", 0.0012)
run.Metric("model", "gpt-4")
run.ResetMetrics("tokens")
run.ResetMetrics()Full Example
Complete Working Example
import notilens "github.com/notilens/sdk-go"
nl, _ := notilens.Init("summarizer", notilens.Options{Token: "TOKEN", Secret: "SECRET"})
run := nl.Task("report")
run.Start()
defer func() {
if r := recover(); r != nil {
run.Fail(fmt.Sprintf("%v", r))
}
}()
run.Progress("Fetching PDF")
result := llm.Complete(prompt)
run.Metric("tokens", result.Usage.TotalTokens)
run.Metric("cost", result.Usage.Cost)
run.OutputGenerated("Summary ready")
run.Complete("Done")
force_send
ForceSend Parameter
Controls whether a notification bypasses ML-based filtering (true) or routes through it (false).
| Method | Default |
|---|---|
Notify() · Fail() · Timeout() · Terminate() | true |
InputRequired() · OutputGenerated() · OutputFailed() | true |
| All other task lifecycle methods | false — ML filtered |
Override
run.Progress("Fetching...", notilens.WithForceSend(true))
run.Fail("Error", notilens.WithForceSend(false))
nl.Notify("order.placed", "Done", notilens.WithForceSend(false))