gemmate-srs
The Executa (Anna plugin) behind the GemMate Anna App. A single long-running process that speaks JSON-RPC 2.0 over stdio and exposes the study engine the app's UI calls into.
Tools
| Method | What it does |
|---|---|
deck.create / deck.list / deck.delete |
Deck management |
card.add / card.list / card.update / card.delete |
Card management |
study.session |
Open a review session for a deck (due cards first) |
study.grade |
Grade recall 0–5 and compute the next interval via SM-2 |
study.stats |
Deck-level counters |
cards.generate |
Generate flashcards for a topic, persist them to a deck |
quiz.generate |
Generate four-option multiple-choice questions |
mindmap.generate |
Extract a hierarchical concept tree from notes |
solve.steps |
Step-by-step derivation with a final answer and check |
Scheduling, deck and card state live in Anna Persistent Storage (APS), never in the iframe, so progress survives window close, reload and device changes.
SM-2 scheduling
Implements the standard SuperMemo-2 update:
quality >= 3→ first pass sets interval 1 day, second sets 6 days, theninterval = round(interval * EF)withroundmatching Dart'sdouble.round()(half away from zero) — not Python's banker's rounding.quality < 3→ repetitions reset to 0, interval back to 1 day.EF' = max(1.3, EF + (0.1 - (5 - q) * (0.08 + (5 - q) * 0.02))), applied on every grade including failures, which is what the original GemMate Dart implementation does and what existing review history expects.
LLM use
The four generation tools call the host LLM through Anna sampling
(sampling/createMessage). They are additive: review, deck and card management
never touch the LLM, so a user who declines the sampling grant still gets a
fully working spaced-repetition app.
Development
uv sync --extra test
uv run pytest -q
uv run gemmate-srs # the plugin loop; reads JSON-RPC frames on stdin
Distribution
Declared in executa.json as distribution.type = "uv". The platform installs
it with uv tool install gemmate-srs and launches the gemmate-srs console
script.
Release files for gemmate-srs 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gemmate_srs-0.1.0.tar.gz | 34.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gemmate_srs-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:62.2 kB
Release files / gemmate_srs-0.1.0.tar.gz
| Download URL | gemmate_srs-0.1.0.tar.gz |
|---|---|
| Size | 34.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
24eb75295f6027affa37e0f1db1abd2a3cc0edca62e38b044b768d5a7849805c
|
|
BLAKE2b-256 checksum How to use checksums |
a6b8f62d83255bba5ecec505addbb01cdb64472c6f27f81b0f2b0a9e44833654
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / gemmate_srs-0.1.0-py3-none-any.whl
| Download URL | gemmate_srs-0.1.0-py3-none-any.whl |
|---|---|
| Size | 27.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78e283a1006ea2b34d74cfe9f98e4478c0bef66cd64ffdf15a82711419da80bd
|
|
BLAKE2b-256 checksum How to use checksums |
dcbebdfc21eff0449d17c7d2060106ad9c91df25141b9391156c3637b89b97bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|