No description
  • TypeScript 58.7%
  • Python 33.9%
  • Svelte 6%
  • CSS 1.1%
  • JavaScript 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
BlackHat-Magic 15a5ed5d01
Some checks failed
/ deploy (push) Failing after 2m18s
chore/ci: add previews block for Worker Preview deployments
wrangler preview requires a top-level previews block and URL-safe
preview names, so add empty previews objects and sanitize branch
slashes when naming previews.
2026-10-06 15:22:43 -07:00
.forgejo/workflows chore/ci: add previews block for Worker Preview deployments 2026-10-06 15:22:43 -07:00
.github chore: add CONTRIBUTING.md, issue templates, PR template 2026-06-25 05:55:09 -07:00
clue chore/ci: add previews block for Worker Preview deployments 2026-10-06 15:22:43 -07:00
docs fix/clue-activity: address review findings 2026-08-31 13:31:31 -07:00
evaluator chore: rename ambiguous directory to 2026-09-13 22:40:20 -07:00
language feat/wasm: make webassembly version 2026-09-25 19:13:37 -07:00
presence feat/presence: readd Python presence container 2026-08-21 20:47:03 -07:00
scripts chore/bun: switch interaction tooling to Bun 2026-08-16 16:56:29 -07:00
tests feat/wasm: make webassembly version 2026-09-25 19:13:37 -07:00
wasm/web feat/wasm: make webassembly version 2026-09-25 19:13:37 -07:00
workers chore/ci: add previews block for Worker Preview deployments 2026-10-06 15:22:43 -07:00
.env.example docs/cloudflare: add deployment guide and command registration 2026-08-16 15:18:29 -07:00
.gitignore chore/cloudflare: use canonical Python Worker config 2026-08-16 15:23:00 -07:00
.python-version feat/cloudflare: add bounded Python evaluator core 2026-08-16 03:44:55 -07:00
CONTRIBUTING.md chore: add CONTRIBUTING.md, issue templates, PR template 2026-06-25 05:55:09 -07:00
evaluator_worker.py chore: rename ambiguous directory to 2026-09-13 22:40:20 -07:00
LICENSE.md first commit 2023-09-16 03:02:54 -07:00
pyproject.toml chore: rename ambiguous directory to 2026-09-13 22:40:20 -07:00
README.md chore: fix README formatting, remove old clue.py 2026-09-13 22:35:41 -07:00
uv.lock chore: version bump 2026-08-16 18:57:04 -07:00

Agathos-Bot

Tabletop game tools powered by the Agathos language

Overview

Agathos provides a custom dice language for tabletop game tools. Its Discord deployment runs on two Cloudflare Workers: a private Python evaluator and a public TypeScript interaction Worker.

Goals

N/A

Features

  • Arbitrary dice rolling
  • list comprehension equivalent in custom language
  • Clue
  • Chess
  • Checkers
  • Catan?
  • Risk?
  • Card Games
  • TTRPG VTT?
  • Other classic/popular board games?

Dice Language

Expressions support dice arithmetic, list comprehensions, arrays, and unary d20 advantage/disadvantage. For example, [d20 for i in 0:5] evaluates five rolls with compact dice details. Unary +d20 gives advantage, and -d20 gives disadvantage.

Drop modifiers use l for lowest and h for highest, such as 4d6l1 to drop the lowest die or 10d8h2 to drop the highest two dice. Modifiers can be chained left to right, with each modifier applying to the remaining active dice, for example 4d6l1h1.

Deployment

Agathos is deployed as two Cloudflare Workers: the private Python evaluator (agathos-evaluator) and the public TypeScript Discord interaction Worker (agathos-interactions). The evaluator is reached by Service Binding and does not need Discord credentials. Deploy the evaluator first, then the interaction Worker, and configure Discord's Interactions Endpoint URL to the public Worker only after signed PING validation succeeds.

See docs/cloudflare.md for local development, tests, secrets, command registration, endpoint configuration, deployment, and rollback instructions.