You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Agent scheduling — "agents run recurring jobs without a tab" (MVP, LIVE).
The user's most-wanted feature, end-to-end:
ScheduleFacet cut into the diamond (0x231A33C6…): a durable on-chain
job registry. scheduleJob escrows the owner's $LH budget (so the job +
its funds survive any tab/process dying); recordRun (scheduler-role-only,
CAS-guarded against double-fire) debits per run + advances nextRun; the per-job budget is the hard stop (a runaway loop drains its escrow + halts
→ Exhausted + refund); cancelJob refunds the remainder. 27 Foundry tests.
Vercel-Cron worker (proxy/api/scheduler.ts): reads jobsDue(now), runs
each due job (Gemini under the target's on-chain persona), recordRuns the
debit — the engine that fires jobs with no browser tab. Edge, CRON_SECRET-
gated, no-hot-loop on errors.
Proven live: scheduled job #1 (claude every 1m, 0.1 $LH); the worker
fired it with no tab open — budget 0.10 → 0.09, runs-left 2 → 1, nextRun
advanced, all on-chain.
Invites — user-funded, refundable onboarding links (bearer MVP, LIVE).
Spend your own $LH to invite a newcomer, get it back if they never show:
InviteFacet cut into the diamond (0xc7A69Ae9…): a HOLDER calls createInvite(bytes32 codeHash, uint256 amount, uint64 ttlSeconds) to ESCROW
their OWN $LH behind a shareable bearer code (TTL 1h..90d, MAX_ESCROWED
per-funder cap). acceptInvite(string code) pays the escrow to whoever
presents the code first (the newcomer); reclaimInvite(bytes32 codeHash) is
permissionless to call but ALWAYS refunds the FUNDER 100% once expired and
unclaimed. Views getInvite / escrowedOf. Supply-NEUTRAL (escrows existing $LH, never mints — so it doesn't reopen a sybil hole), CEI throughout.
Bearer-only MVP; bound vouchers (an optional named recipient) are Phase 2.
Sibling of RedeemFacet (owner-minted bootstrap codes), not a replacement.
CLIlocalharness invite create [--as me] --amount <X> [--ttl <dur>]
(generates a bearer code + prints the localharness.xyz/?invite=<code> link)
/ invite accept <code> / invite reclaim <code> / invite list (your
total $LH locked in pending invites).