aethel-cli 1.1.0__tar.gz
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.
- aethel_cli-1.1.0/MANIFEST.in +3 -0
- aethel_cli-1.1.0/PKG-INFO +68 -0
- aethel_cli-1.1.0/README.md +55 -0
- aethel_cli-1.1.0/aethel/__init__.py +10 -0
- aethel_cli-1.1.0/aethel/cli.py +802 -0
- aethel_cli-1.1.0/aethel/config.py +185 -0
- aethel_cli-1.1.0/aethel/linter.py +973 -0
- aethel_cli-1.1.0/aethel/markers.py +131 -0
- aethel_cli-1.1.0/aethel/session.py +227 -0
- aethel_cli-1.1.0/aethel/templates/.agents/plugins/aethel-plugin/plugin.json +5 -0
- aethel_cli-1.1.0/aethel/templates/.agents/plugins/aethel-plugin/skills/proposal-analysis/SKILL.md +128 -0
- aethel_cli-1.1.0/aethel/templates/AETHEL.md.template +149 -0
- aethel_cli-1.1.0/aethel/templates/AETHEL_ONBOARDING.md.template +65 -0
- aethel_cli-1.1.0/aethel/templates/AGENTS.md.template +18 -0
- aethel_cli-1.1.0/aethel/templates/CLAUDE.md.template +13 -0
- aethel_cli-1.1.0/aethel/templates/CONTEXT.md.template +24 -0
- aethel_cli-1.1.0/aethel/templates/GEMINI.md.template +13 -0
- aethel_cli-1.1.0/aethel/templates/aethel.toml.template +91 -0
- aethel_cli-1.1.0/aethel/templates/gitattributes.template +1 -0
- aethel_cli-1.1.0/aethel/templates/knowledge/README.md +23 -0
- aethel_cli-1.1.0/aethel/templates/knowledge/decisions/0001-record-architecture-decisions.md +22 -0
- aethel_cli-1.1.0/aethel/templates/recipes/javascript/.eslintrc.json +18 -0
- aethel_cli-1.1.0/aethel/templates/recipes/javascript/AETHEL_RECIPE_ADDENDUM.md +8 -0
- aethel_cli-1.1.0/aethel/templates/recipes/python/.ruff.toml +16 -0
- aethel_cli-1.1.0/aethel/templates/recipes/python/AETHEL_RECIPE_ADDENDUM.md +8 -0
- aethel_cli-1.1.0/aethel/templates/recipes/python/semgrep-rules.yaml +82 -0
- aethel_cli-1.1.0/aethel_cli.egg-info/PKG-INFO +68 -0
- aethel_cli-1.1.0/aethel_cli.egg-info/SOURCES.txt +46 -0
- aethel_cli-1.1.0/aethel_cli.egg-info/dependency_links.txt +1 -0
- aethel_cli-1.1.0/aethel_cli.egg-info/entry_points.txt +2 -0
- aethel_cli-1.1.0/aethel_cli.egg-info/top_level.txt +1 -0
- aethel_cli-1.1.0/pyproject.toml +56 -0
- aethel_cli-1.1.0/setup.cfg +4 -0
- aethel_cli-1.1.0/tests/test_annotation.py +80 -0
- aethel_cli-1.1.0/tests/test_bootstrap.py +73 -0
- aethel_cli-1.1.0/tests/test_cli.py +140 -0
- aethel_cli-1.1.0/tests/test_config.py +177 -0
- aethel_cli-1.1.0/tests/test_console_encoding.py +61 -0
- aethel_cli-1.1.0/tests/test_doctor.py +109 -0
- aethel_cli-1.1.0/tests/test_eject.py +187 -0
- aethel_cli-1.1.0/tests/test_linter.py +317 -0
- aethel_cli-1.1.0/tests/test_packaging.py +87 -0
- aethel_cli-1.1.0/tests/test_reachability.py +67 -0
- aethel_cli-1.1.0/tests/test_release_smoke.py +124 -0
- aethel_cli-1.1.0/tests/test_report_lang.py +78 -0
- aethel_cli-1.1.0/tests/test_scenario_projects.py +96 -0
- aethel_cli-1.1.0/tests/test_session.py +115 -0
- aethel_cli-1.1.0/tests/test_version.py +31 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aethel-cli
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: Aethel: AI Context & Memory CLI Management Utility
|
|
5
|
+
Author: Aethel Team
|
|
6
|
+
Classifier: Programming Language :: Python :: 3
|
|
7
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.11
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# Aethel: AI Context & Knowledge Management System
|
|
15
|
+
|
|
16
|
+
Aethel is a lightweight, provider-agnostic context and prompt management boilerplate for AI
|
|
17
|
+
agents in solo-developer projects. It separates human-authored rules (Markdown) from an
|
|
18
|
+
AI-maintained Markdown knowledge layer — a curated index plus a tree of atomic topic files —
|
|
19
|
+
with no server or external runtime dependency.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 1. File Structure
|
|
24
|
+
|
|
25
|
+
* **`AETHEL.md`**: Canonical human-written orchestrator — decision routing, RNA-Blueprint plan templates, and critical coding taboos.
|
|
26
|
+
* **`AGENTS.md`**: Universal cross-agent entry point. Read natively by most coding agents; it redirects to `AETHEL.md`.
|
|
27
|
+
* **`GEMINI.md` / `CLAUDE.md`**: Thin redirect stubs (for tools that look for those names) pointing at `AGENTS.md` / `AETHEL.md`.
|
|
28
|
+
* **`CONTEXT.md`**: An [`llms.txt`](https://llmstxt.org/)-style index — an H1, a one-line summary, then H2 sections of annotated **inline** links into the knowledge tree. Curated, not exhaustive; kept under 150 lines.
|
|
29
|
+
* **`knowledge/`**: Atomic topic files (one layer / subsystem / bounded context each, `name` + `description` frontmatter). Detail lives here, not in the index. Design decisions are append-only ADRs under `knowledge/decisions/NNNN-*.md`.
|
|
30
|
+
* **`aethel.toml`** *(optional)*: Linter policy — required-header keywords, language rules, spec-sync, and `[knowledge]` index/orphan settings. Omit to use built-in defaults.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. The Markdown Knowledge Architecture
|
|
35
|
+
|
|
36
|
+
Structured knowledge is plain Markdown — there is nothing to install or wire up:
|
|
37
|
+
|
|
38
|
+
* The **index** (`CONTEXT.md`) maps the project. Each entry is one inline link to a topic file
|
|
39
|
+
with a one-line note.
|
|
40
|
+
* Each **topic file** under `knowledge/` is a single unit-of-change and unit-of-retrieval.
|
|
41
|
+
* **Decisions** are recorded as numbered ADRs under `knowledge/decisions/`.
|
|
42
|
+
|
|
43
|
+
The linter (`aethel lint` → `check_knowledge_index`) keeps the index honest: a relative inline
|
|
44
|
+
link that does not resolve on disk is an **error**; a `knowledge/*.md` file not reachable from
|
|
45
|
+
the index is an **orphan warning**. External (`http(s)`/`mailto`) links and `#anchors` are
|
|
46
|
+
ignored. Use inline links only — reference-style links and autolinks are intentionally not
|
|
47
|
+
parsed. Severities are configurable in `aethel.toml` under `[knowledge]`.
|
|
48
|
+
|
|
49
|
+
> Earlier versions stored structured knowledge in a Memory MCP server / `memory.json` graph.
|
|
50
|
+
> That layer has been retired in favour of this provider-agnostic Markdown architecture; see
|
|
51
|
+
> [knowledge/decisions/0001-retire-memory-graph.md](knowledge/decisions/0001-retire-memory-graph.md).
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 3. CLI
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
aethel init [path] # scaffold a workspace (AGENTS.md, AETHEL.md, CONTEXT.md, knowledge/, ...)
|
|
59
|
+
aethel init --recipe python # also deploy a stack-specific linter recipe
|
|
60
|
+
aethel update [path] # refresh the managed core block non-destructively
|
|
61
|
+
aethel eject [path] # mark the managed core block as sanctioned divergence
|
|
62
|
+
aethel eject [path] --undo # remove the eject stamp, restoring managed updates
|
|
63
|
+
aethel lint [path] # validate plan/checklist + knowledge-index integrity + hygiene
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`aethel init` also installs a Git pre-commit hook that runs the linter, including the spec-sync
|
|
67
|
+
drift guard (code staged without a spec update is flagged — Route C). Escape hatch for an
|
|
68
|
+
intentionally spec-irrelevant commit: `AETHEL_SKIP_SYNC=1 git commit ...`.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Aethel: AI Context & Knowledge Management System
|
|
2
|
+
|
|
3
|
+
Aethel is a lightweight, provider-agnostic context and prompt management boilerplate for AI
|
|
4
|
+
agents in solo-developer projects. It separates human-authored rules (Markdown) from an
|
|
5
|
+
AI-maintained Markdown knowledge layer — a curated index plus a tree of atomic topic files —
|
|
6
|
+
with no server or external runtime dependency.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. File Structure
|
|
11
|
+
|
|
12
|
+
* **`AETHEL.md`**: Canonical human-written orchestrator — decision routing, RNA-Blueprint plan templates, and critical coding taboos.
|
|
13
|
+
* **`AGENTS.md`**: Universal cross-agent entry point. Read natively by most coding agents; it redirects to `AETHEL.md`.
|
|
14
|
+
* **`GEMINI.md` / `CLAUDE.md`**: Thin redirect stubs (for tools that look for those names) pointing at `AGENTS.md` / `AETHEL.md`.
|
|
15
|
+
* **`CONTEXT.md`**: An [`llms.txt`](https://llmstxt.org/)-style index — an H1, a one-line summary, then H2 sections of annotated **inline** links into the knowledge tree. Curated, not exhaustive; kept under 150 lines.
|
|
16
|
+
* **`knowledge/`**: Atomic topic files (one layer / subsystem / bounded context each, `name` + `description` frontmatter). Detail lives here, not in the index. Design decisions are append-only ADRs under `knowledge/decisions/NNNN-*.md`.
|
|
17
|
+
* **`aethel.toml`** *(optional)*: Linter policy — required-header keywords, language rules, spec-sync, and `[knowledge]` index/orphan settings. Omit to use built-in defaults.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 2. The Markdown Knowledge Architecture
|
|
22
|
+
|
|
23
|
+
Structured knowledge is plain Markdown — there is nothing to install or wire up:
|
|
24
|
+
|
|
25
|
+
* The **index** (`CONTEXT.md`) maps the project. Each entry is one inline link to a topic file
|
|
26
|
+
with a one-line note.
|
|
27
|
+
* Each **topic file** under `knowledge/` is a single unit-of-change and unit-of-retrieval.
|
|
28
|
+
* **Decisions** are recorded as numbered ADRs under `knowledge/decisions/`.
|
|
29
|
+
|
|
30
|
+
The linter (`aethel lint` → `check_knowledge_index`) keeps the index honest: a relative inline
|
|
31
|
+
link that does not resolve on disk is an **error**; a `knowledge/*.md` file not reachable from
|
|
32
|
+
the index is an **orphan warning**. External (`http(s)`/`mailto`) links and `#anchors` are
|
|
33
|
+
ignored. Use inline links only — reference-style links and autolinks are intentionally not
|
|
34
|
+
parsed. Severities are configurable in `aethel.toml` under `[knowledge]`.
|
|
35
|
+
|
|
36
|
+
> Earlier versions stored structured knowledge in a Memory MCP server / `memory.json` graph.
|
|
37
|
+
> That layer has been retired in favour of this provider-agnostic Markdown architecture; see
|
|
38
|
+
> [knowledge/decisions/0001-retire-memory-graph.md](knowledge/decisions/0001-retire-memory-graph.md).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. CLI
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
aethel init [path] # scaffold a workspace (AGENTS.md, AETHEL.md, CONTEXT.md, knowledge/, ...)
|
|
46
|
+
aethel init --recipe python # also deploy a stack-specific linter recipe
|
|
47
|
+
aethel update [path] # refresh the managed core block non-destructively
|
|
48
|
+
aethel eject [path] # mark the managed core block as sanctioned divergence
|
|
49
|
+
aethel eject [path] --undo # remove the eject stamp, restoring managed updates
|
|
50
|
+
aethel lint [path] # validate plan/checklist + knowledge-index integrity + hygiene
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
`aethel init` also installs a Git pre-commit hook that runs the linter, including the spec-sync
|
|
54
|
+
drift guard (code staged without a spec update is flagged — Route C). Escape hatch for an
|
|
55
|
+
intentionally spec-irrelevant commit: `AETHEL_SKIP_SYNC=1 git commit ...`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Aethel Context & Memory CLI Package
|
|
2
|
+
|
|
3
|
+
# The pip package version (kept in sync with pyproject [project].version by a test).
|
|
4
|
+
__version__ = "1.1.0"
|
|
5
|
+
|
|
6
|
+
# The managed `aethel-core` block version. Stamped into the shipped template and
|
|
7
|
+
# compared by `check_core_consistency` to tell a stale workspace ("run aethel
|
|
8
|
+
# update") from a hand-edited one. Bumped only when the core block's rules change,
|
|
9
|
+
# independently of package patch releases — so it is a separate constant.
|
|
10
|
+
CORE_VERSION = "1.1.0"
|