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.
Files changed (48) hide show
  1. aethel_cli-1.1.0/MANIFEST.in +3 -0
  2. aethel_cli-1.1.0/PKG-INFO +68 -0
  3. aethel_cli-1.1.0/README.md +55 -0
  4. aethel_cli-1.1.0/aethel/__init__.py +10 -0
  5. aethel_cli-1.1.0/aethel/cli.py +802 -0
  6. aethel_cli-1.1.0/aethel/config.py +185 -0
  7. aethel_cli-1.1.0/aethel/linter.py +973 -0
  8. aethel_cli-1.1.0/aethel/markers.py +131 -0
  9. aethel_cli-1.1.0/aethel/session.py +227 -0
  10. aethel_cli-1.1.0/aethel/templates/.agents/plugins/aethel-plugin/plugin.json +5 -0
  11. aethel_cli-1.1.0/aethel/templates/.agents/plugins/aethel-plugin/skills/proposal-analysis/SKILL.md +128 -0
  12. aethel_cli-1.1.0/aethel/templates/AETHEL.md.template +149 -0
  13. aethel_cli-1.1.0/aethel/templates/AETHEL_ONBOARDING.md.template +65 -0
  14. aethel_cli-1.1.0/aethel/templates/AGENTS.md.template +18 -0
  15. aethel_cli-1.1.0/aethel/templates/CLAUDE.md.template +13 -0
  16. aethel_cli-1.1.0/aethel/templates/CONTEXT.md.template +24 -0
  17. aethel_cli-1.1.0/aethel/templates/GEMINI.md.template +13 -0
  18. aethel_cli-1.1.0/aethel/templates/aethel.toml.template +91 -0
  19. aethel_cli-1.1.0/aethel/templates/gitattributes.template +1 -0
  20. aethel_cli-1.1.0/aethel/templates/knowledge/README.md +23 -0
  21. aethel_cli-1.1.0/aethel/templates/knowledge/decisions/0001-record-architecture-decisions.md +22 -0
  22. aethel_cli-1.1.0/aethel/templates/recipes/javascript/.eslintrc.json +18 -0
  23. aethel_cli-1.1.0/aethel/templates/recipes/javascript/AETHEL_RECIPE_ADDENDUM.md +8 -0
  24. aethel_cli-1.1.0/aethel/templates/recipes/python/.ruff.toml +16 -0
  25. aethel_cli-1.1.0/aethel/templates/recipes/python/AETHEL_RECIPE_ADDENDUM.md +8 -0
  26. aethel_cli-1.1.0/aethel/templates/recipes/python/semgrep-rules.yaml +82 -0
  27. aethel_cli-1.1.0/aethel_cli.egg-info/PKG-INFO +68 -0
  28. aethel_cli-1.1.0/aethel_cli.egg-info/SOURCES.txt +46 -0
  29. aethel_cli-1.1.0/aethel_cli.egg-info/dependency_links.txt +1 -0
  30. aethel_cli-1.1.0/aethel_cli.egg-info/entry_points.txt +2 -0
  31. aethel_cli-1.1.0/aethel_cli.egg-info/top_level.txt +1 -0
  32. aethel_cli-1.1.0/pyproject.toml +56 -0
  33. aethel_cli-1.1.0/setup.cfg +4 -0
  34. aethel_cli-1.1.0/tests/test_annotation.py +80 -0
  35. aethel_cli-1.1.0/tests/test_bootstrap.py +73 -0
  36. aethel_cli-1.1.0/tests/test_cli.py +140 -0
  37. aethel_cli-1.1.0/tests/test_config.py +177 -0
  38. aethel_cli-1.1.0/tests/test_console_encoding.py +61 -0
  39. aethel_cli-1.1.0/tests/test_doctor.py +109 -0
  40. aethel_cli-1.1.0/tests/test_eject.py +187 -0
  41. aethel_cli-1.1.0/tests/test_linter.py +317 -0
  42. aethel_cli-1.1.0/tests/test_packaging.py +87 -0
  43. aethel_cli-1.1.0/tests/test_reachability.py +67 -0
  44. aethel_cli-1.1.0/tests/test_release_smoke.py +124 -0
  45. aethel_cli-1.1.0/tests/test_report_lang.py +78 -0
  46. aethel_cli-1.1.0/tests/test_scenario_projects.py +96 -0
  47. aethel_cli-1.1.0/tests/test_session.py +115 -0
  48. aethel_cli-1.1.0/tests/test_version.py +31 -0
@@ -0,0 +1,3 @@
1
+ graft aethel/templates
2
+ global-exclude */.ruff_cache/*
3
+ global-exclude */__pycache__/*
@@ -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"