assay-lua 0.10.3

General-purpose enhanced Lua runtime. Batteries-included scripting, automation, and web services.
Documentation
#!/usr/bin/assay

local gmail = require("assay.gmail")
local triage = require("assay.email_triage")
local openclaw = require("assay.openclaw")

local gc = gmail.client({
  credentials_file = env.get("GMAIL_CREDENTIALS_FILE"),
  token_file = env.get("GMAIL_TOKEN_FILE"),
})

local oc = openclaw.client()
local emails = gc:search(env.get("GMAIL_QUERY") or "is:unread newer_than:2d", { max = 20 })
local buckets = triage.categorize(emails)

local lines = {
  "Email triage results",
  "needs_action=" .. #buckets.needs_action,
  "needs_reply=" .. #buckets.needs_reply,
  "fyi=" .. #buckets.fyi,
}

if #buckets.needs_action > 0 then
  lines[#lines + 1] = "top_action=" .. (buckets.needs_action[1].subject or buckets.needs_action[1].snippet or "(no subject)")
end

oc:notify(env.get("OPENCLAW_NOTIFY_TARGET") or "ops", table.concat(lines, "\n"))
log.info(table.concat(lines, " | "))