anki-agent-toolkit 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- anki_agent_toolkit-0.1.0.dist-info/METADATA +150 -0
- anki_agent_toolkit-0.1.0.dist-info/RECORD +23 -0
- anki_agent_toolkit-0.1.0.dist-info/WHEEL +4 -0
- anki_agent_toolkit-0.1.0.dist-info/entry_points.txt +2 -0
- anki_agent_toolkit-0.1.0.dist-info/licenses/LICENSE +17 -0
- ankicli/__init__.py +6 -0
- ankicli/app/catalog.py +1188 -0
- ankicli/app/credentials.py +370 -0
- ankicli/app/errors.py +165 -0
- ankicli/app/ios_audio_migration.py +644 -0
- ankicli/app/models.py +44 -0
- ankicli/app/output.py +44 -0
- ankicli/app/profiles.py +164 -0
- ankicli/app/quality_matrix.py +789 -0
- ankicli/app/releases.py +59 -0
- ankicli/app/services.py +1787 -0
- ankicli/app/study.py +1380 -0
- ankicli/backends/ankiconnect.py +659 -0
- ankicli/backends/base.py +344 -0
- ankicli/backends/python_anki.py +1623 -0
- ankicli/main.py +1611 -0
- ankicli/pytest_plugin.py +92 -0
- ankicli/runtime.py +155 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: anki-agent-toolkit
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Local-first, automation-grade Anki collection management CLI
|
|
5
|
+
License-Expression: AGPL-3.0-or-later
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
8
|
+
Requires-Python: >=3.11
|
|
9
|
+
Requires-Dist: anki==25.9.2
|
|
10
|
+
Requires-Dist: keyring<26,>=25
|
|
11
|
+
Requires-Dist: pydantic<3,>=2.7
|
|
12
|
+
Requires-Dist: typer<1,>=0.12
|
|
13
|
+
Provides-Extra: dev
|
|
14
|
+
Requires-Dist: pyinstaller<7,>=6.13; extra == 'dev'
|
|
15
|
+
Requires-Dist: pytest<9,>=8.3; extra == 'dev'
|
|
16
|
+
Requires-Dist: pyyaml<7,>=6; extra == 'dev'
|
|
17
|
+
Requires-Dist: ruff<0.12,>=0.11; extra == 'dev'
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# ankicli
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
Docs and product site: [takhoffman.github.io/ankicli](https://takhoffman.github.io/ankicli/)
|
|
25
|
+
|
|
26
|
+
Standalone agent skills: [agent skills](https://takhoffman.github.io/ankicli/docs/agent-skills/)
|
|
27
|
+
|
|
28
|
+
Goal-driven study: [learning plans](https://takhoffman.github.io/ankicli/docs/learning-plans/)
|
|
29
|
+
|
|
30
|
+
`ankicli` is a local-first Anki CLI for humans who want to install and supervise a safe, scriptable
|
|
31
|
+
control surface for agent harnesses like Claude, Codex, OpenClaw, and custom automation.
|
|
32
|
+
|
|
33
|
+
Installed by humans. Operated by agents.
|
|
34
|
+
|
|
35
|
+
Supported platforms: macOS, Windows, and Linux.
|
|
36
|
+
|
|
37
|
+
License: AGPL-3.0-or-later.
|
|
38
|
+
|
|
39
|
+
## Why It Exists
|
|
40
|
+
|
|
41
|
+
Use `ankicli` when you want:
|
|
42
|
+
|
|
43
|
+
- a terminal-native Anki control surface that agents can drive safely
|
|
44
|
+
- a human-friendly install and verification path
|
|
45
|
+
- profile-aware local collection access
|
|
46
|
+
- explicit dry-run, confirmation, backup, and sync-preflight flows
|
|
47
|
+
- stable JSON output for automation instead of fragile desktop UI scripting
|
|
48
|
+
|
|
49
|
+
## Install
|
|
50
|
+
|
|
51
|
+
macOS and Linux:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
curl -fsSL https://raw.githubusercontent.com/Takhoffman/ankicli/main/scripts/install.sh | sh
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Windows:
|
|
58
|
+
|
|
59
|
+
```powershell
|
|
60
|
+
irm https://raw.githubusercontent.com/Takhoffman/ankicli/main/scripts/install.ps1 | iex
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Fallback package path:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pipx install ankicli
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Verify
|
|
70
|
+
|
|
71
|
+
Run these before handing `ankicli` to an agent:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
ankicli --version
|
|
75
|
+
ankicli --json doctor env
|
|
76
|
+
ankicli --json doctor backend
|
|
77
|
+
ankicli --json profile list
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## First Steps
|
|
81
|
+
|
|
82
|
+
Inspect the local environment and confirm the target profile before real work:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
ankicli --json profile default
|
|
86
|
+
ankicli --json --profile "User 1" collection info
|
|
87
|
+
ankicli --json --profile "User 1" search preview --kind notes --query 'deck:Default' --limit 5
|
|
88
|
+
ankicli --json --profile "User 1" note add-tags --id 123 --tag review --dry-run
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## What You Can Do
|
|
92
|
+
|
|
93
|
+
- inspect profiles, collections, decks, models, tags, cards, and media
|
|
94
|
+
- search and preview notes/cards before changing anything
|
|
95
|
+
- mutate notes and card state with explicit dry-run and confirmation paths
|
|
96
|
+
- create local backups and run explicit restore flows
|
|
97
|
+
- inspect auth state and run sync preflight before real sync work
|
|
98
|
+
- run local tutor-style study sessions from the terminal
|
|
99
|
+
|
|
100
|
+
## Safety Defaults
|
|
101
|
+
|
|
102
|
+
- Prefer `--json` for scripts and agents.
|
|
103
|
+
- Use `--dry-run` first on write-capable commands.
|
|
104
|
+
- Prefer `--profile` for normal local usage and `--collection` for explicit low-level targeting.
|
|
105
|
+
- Use `sync status` as the safe preflight before running a real sync.
|
|
106
|
+
- Sync is not backup. Use `backup create` or the built-in auto-backup flow when rollback matters.
|
|
107
|
+
- Riskier local `python-anki` writes create an automatic pre-mutation backup unless you pass
|
|
108
|
+
`--no-auto-backup`.
|
|
109
|
+
- Real `note delete`, `card suspend`, and `card unsuspend` require `--yes`.
|
|
110
|
+
|
|
111
|
+
## Docs
|
|
112
|
+
|
|
113
|
+
- Product site: [takhoffman.github.io/ankicli](https://takhoffman.github.io/ankicli/)
|
|
114
|
+
- Agent skills: [agent skills](https://takhoffman.github.io/ankicli/docs/agent-skills/)
|
|
115
|
+
- Learning plans: [learning plans](https://takhoffman.github.io/ankicli/docs/learning-plans/)
|
|
116
|
+
- Recipes: [recipes](https://takhoffman.github.io/ankicli/docs/recipes/)
|
|
117
|
+
- CLI guide: [cli guide](https://takhoffman.github.io/ankicli/docs/cli-guide/)
|
|
118
|
+
- Common tasks: [common tasks](https://takhoffman.github.io/ankicli/docs/common-tasks/)
|
|
119
|
+
- Quickstart: [quickstart](https://takhoffman.github.io/ankicli/docs/quickstart/)
|
|
120
|
+
- Install guide: [install](https://takhoffman.github.io/ankicli/install/)
|
|
121
|
+
- Profiles and collections: [profiles and collections](https://takhoffman.github.io/ankicli/docs/profiles-and-collections/)
|
|
122
|
+
- Sync and backups: [sync and backups](https://takhoffman.github.io/ankicli/docs/sync-and-backups/)
|
|
123
|
+
- Study mode: [study](https://takhoffman.github.io/ankicli/docs/study/)
|
|
124
|
+
- Troubleshooting: [troubleshooting](https://takhoffman.github.io/ankicli/docs/troubleshooting/)
|
|
125
|
+
|
|
126
|
+
Every major docs page is designed to be readable by humans and easy to copy into an LLM chat.
|
|
127
|
+
|
|
128
|
+
## License
|
|
129
|
+
|
|
130
|
+
`ankicli` is licensed under `AGPL-3.0-or-later`. It depends on the upstream Anki runtime, which is
|
|
131
|
+
also AGPL-licensed. See [LICENSE](/Users/thoffman/ankicli/LICENSE).
|
|
132
|
+
|
|
133
|
+
## For Contributors And Advanced Backend Work
|
|
134
|
+
|
|
135
|
+
The top-level README is intentionally product-oriented. Contributor and backend-contract detail still
|
|
136
|
+
exists, but it lives in deeper docs and repo files:
|
|
137
|
+
|
|
138
|
+
- CLI and backend contract: [`docs/spec.md`](/Users/thoffman/ankicli/docs/spec.md)
|
|
139
|
+
- Release/install workflows: [product site](https://takhoffman.github.io/ankicli/)
|
|
140
|
+
- Source and workflows: [repository](https://github.com/Takhoffman/ankicli)
|
|
141
|
+
|
|
142
|
+
Common contributor commands:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
uv sync --extra dev --frozen
|
|
146
|
+
PYTEST_PLUGINS=ankicli.pytest_plugin uv run pytest -c pyproject.toml -m "unit or smoke" --proof-report /tmp/ankicli-proof-report.json
|
|
147
|
+
uv run ruff check .
|
|
148
|
+
uv build
|
|
149
|
+
uv run pytest -m distribution
|
|
150
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
ankicli/__init__.py,sha256=MBuf1Qb991QenBBPRwZTc1ivQHU5MJm0pn5SWQ2cxCA,74
|
|
2
|
+
ankicli/main.py,sha256=XYHN3Z9SdJ57OuhFauVC6OFK0Vx6KnZ4VcGo6fLmJcg,51880
|
|
3
|
+
ankicli/pytest_plugin.py,sha256=28UAf6_X9r4sGLSSzxSCiA8T7Spwc85qX4T_TeReaXk,3388
|
|
4
|
+
ankicli/runtime.py,sha256=jThMLZnIaqOCmbTQwQVj3ml3MWaES3imFQToTimmwLs,4579
|
|
5
|
+
ankicli/app/catalog.py,sha256=RKjCqJvb7EGdbyGU8hjB67kN1_mM7PvONBY8Wdn2-sg,43980
|
|
6
|
+
ankicli/app/credentials.py,sha256=RDpITdgEb0-Fw3BIVuC7I9_fnfhCxN7Dww69bT1pDno,12565
|
|
7
|
+
ankicli/app/errors.py,sha256=9MtzJ8xyh-BiksyRvDvm9IWIlptmLYkaaH3pevGh6FM,3237
|
|
8
|
+
ankicli/app/ios_audio_migration.py,sha256=ROsGWuKn38kUKSnZyOQF06T1J8iagEh_w3Rfx69DG8w,22527
|
|
9
|
+
ankicli/app/models.py,sha256=2_ZRifwEP8v1QlN0jSq5VgrtDpwgR0lEJOY-4DPadLM,1284
|
|
10
|
+
ankicli/app/output.py,sha256=9_CBq_zbHJh8m3Sjv4R8Kki6lIZdGDYtcQOKn8zIa6Q,1172
|
|
11
|
+
ankicli/app/profiles.py,sha256=dR_TDI_rrA9mLT_KI3b1jic142JWzmHh453Ms8AuGHs,5640
|
|
12
|
+
ankicli/app/quality_matrix.py,sha256=Ik0_WWxaKtcwvDt6AhrkIBQ7uf85jLlJVGSrn61Cqs8,30887
|
|
13
|
+
ankicli/app/releases.py,sha256=oeTlxacauy3nNmhnzW_5UWTu7gr1g1hqCsAq4Oq3Ulk,1456
|
|
14
|
+
ankicli/app/services.py,sha256=sDwaSw2Io3IRUleVX9C_qf3df8R1kn-SvcxPZn0wgo0,63400
|
|
15
|
+
ankicli/app/study.py,sha256=tKx3n5NIM2zt6z7jY21G78S628JOiv8V5su2EzWhNuQ,52529
|
|
16
|
+
ankicli/backends/ankiconnect.py,sha256=Xk0oTApJ7iXJ5UHPWX5r3chUpW4ipDFYPbEpUbDzCY4,21650
|
|
17
|
+
ankicli/backends/base.py,sha256=SCYsvqupQZoNu4kEHOIyosqjDg5jMZ0t5VmwhhK-lyo,7935
|
|
18
|
+
ankicli/backends/python_anki.py,sha256=Ap9WtyyKbxH1QTjmXCoZ4xwNhBy0FpbVc0DdR6WKrgY,63090
|
|
19
|
+
anki_agent_toolkit-0.1.0.dist-info/METADATA,sha256=hrS4sB0_3KQMis8A5zcdVZ0M7K2El5oBW_lMgq2hyXE,5564
|
|
20
|
+
anki_agent_toolkit-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
21
|
+
anki_agent_toolkit-0.1.0.dist-info/entry_points.txt,sha256=rS5WVyPO6uT9TmvEGUaSLst8hXi9CLgwNXZcekrPIjQ,45
|
|
22
|
+
anki_agent_toolkit-0.1.0.dist-info/licenses/LICENSE,sha256=W3CLvDwrYdpWB2Gj7TCtfewPryux4v2K7ZYkvF3f4Ak,573
|
|
23
|
+
anki_agent_toolkit-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
GNU AFFERO GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 19 November 2007
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
Copyright (C) 2026 ankicli contributors
|
|
7
|
+
|
|
8
|
+
This repository is licensed under the GNU Affero General Public License,
|
|
9
|
+
version 3 or, at your option, any later version.
|
|
10
|
+
|
|
11
|
+
`ankicli` depends on and distributes the upstream Anki runtime, which is
|
|
12
|
+
licensed under the GNU Affero General Public License, version 3 or later.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU Affero General Public License
|
|
15
|
+
along with this program. If not, see:
|
|
16
|
+
|
|
17
|
+
https://www.gnu.org/licenses/agpl-3.0.txt
|