revlo-cli 0.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 (47) hide show
  1. revlo_cli-0.1.0/.gitignore +10 -0
  2. revlo_cli-0.1.0/PKG-INFO +30 -0
  3. revlo_cli-0.1.0/README.md +0 -0
  4. revlo_cli-0.1.0/pyproject.toml +62 -0
  5. revlo_cli-0.1.0/revlo/__init__.py +1 -0
  6. revlo_cli-0.1.0/revlo/__main__.py +5 -0
  7. revlo_cli-0.1.0/revlo/agents/__init__.py +15 -0
  8. revlo_cli-0.1.0/revlo/agents/definitions.py +78 -0
  9. revlo_cli-0.1.0/revlo/cli.py +572 -0
  10. revlo_cli-0.1.0/revlo/config.py +9 -0
  11. revlo_cli-0.1.0/revlo/datasheet/__init__.py +29 -0
  12. revlo_cli-0.1.0/revlo/datasheet/cache.py +142 -0
  13. revlo_cli-0.1.0/revlo/datasheet/extractor.py +116 -0
  14. revlo_cli-0.1.0/revlo/datasheet/models.py +45 -0
  15. revlo_cli-0.1.0/revlo/datasheet/normalizer.py +163 -0
  16. revlo_cli-0.1.0/revlo/datasheet/pdf.py +339 -0
  17. revlo_cli-0.1.0/revlo/datasheet/pipeline.py +276 -0
  18. revlo_cli-0.1.0/revlo/datasheet/resolver.py +183 -0
  19. revlo_cli-0.1.0/revlo/parser/__init__.py +18 -0
  20. revlo_cli-0.1.0/revlo/parser/connectivity.py +273 -0
  21. revlo_cli-0.1.0/revlo/parser/models.py +61 -0
  22. revlo_cli-0.1.0/revlo/parser/netlist.py +142 -0
  23. revlo_cli-0.1.0/revlo/parser/schematic.py +790 -0
  24. revlo_cli-0.1.0/revlo/report/__init__.py +5 -0
  25. revlo_cli-0.1.0/revlo/report/markdown.py +96 -0
  26. revlo_cli-0.1.0/revlo/reviewer/__init__.py +29 -0
  27. revlo_cli-0.1.0/revlo/reviewer/chunker.py +165 -0
  28. revlo_cli-0.1.0/revlo/reviewer/engine.py +290 -0
  29. revlo_cli-0.1.0/revlo/reviewer/models.py +69 -0
  30. revlo_cli-0.1.0/revlo/reviewer/prompts.py +272 -0
  31. revlo_cli-0.1.0/revlo/skills/__init__.py +11 -0
  32. revlo_cli-0.1.0/revlo/skills/base_ee_knowledge.md +61 -0
  33. revlo_cli-0.1.0/revlo/skills/bom_lifecycle_review.md +97 -0
  34. revlo_cli-0.1.0/revlo/skills/ee_review.md +338 -0
  35. revlo_cli-0.1.0/revlo/skills/ic_pin_config_review.md +97 -0
  36. revlo_cli-0.1.0/revlo/skills/interface_grounding_review.md +106 -0
  37. revlo_cli-0.1.0/revlo/skills/orchestrator.md +126 -0
  38. revlo_cli-0.1.0/revlo/skills/pcb_layout_review.md +101 -0
  39. revlo_cli-0.1.0/revlo/skills/power_supply_review.md +97 -0
  40. revlo_cli-0.1.0/revlo/skills/signal_integrity_review.md +94 -0
  41. revlo_cli-0.1.0/revlo/storage.py +214 -0
  42. revlo_cli-0.1.0/revlo/tui/__init__.py +5 -0
  43. revlo_cli-0.1.0/revlo/tui/app.py +952 -0
  44. revlo_cli-0.1.0/revlo/tui/chat.py +390 -0
  45. revlo_cli-0.1.0/revlo/tui/revlo.tcss +258 -0
  46. revlo_cli-0.1.0/revlo/tui/tools.py +269 -0
  47. revlo_cli-0.1.0/revlo/ui.py +248 -0
@@ -0,0 +1,10 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
@@ -0,0 +1,30 @@
1
+ Metadata-Version: 2.4
2
+ Name: revlo-cli
3
+ Version: 0.1.0
4
+ Summary: AI-powered design review for KiCad schematics
5
+ Project-URL: Homepage, https://revlo.review
6
+ Project-URL: Repository, https://github.com/rebels-software/revlo-cli
7
+ Project-URL: Issues, https://github.com/rebels-software/revlo-cli/issues
8
+ Author: Bart Szczepanski
9
+ Author-email: Rebels Software <hello@rebels.software>
10
+ License-Expression: Apache-2.0
11
+ Keywords: eda,electronics,hardware,kicad,review,schematic
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Manufacturing
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: anthropic>=0.78.0
23
+ Requires-Dist: httpx>=0.28.1
24
+ Requires-Dist: kicad-sch-api>=0.5.6
25
+ Requires-Dist: kiutils>=1.4.8
26
+ Requires-Dist: pydantic>=2.12.5
27
+ Requires-Dist: pymupdf>=1.25.0
28
+ Requires-Dist: python-dotenv>=1.0.0
29
+ Requires-Dist: rich>=13.0.0
30
+ Requires-Dist: textual>=0.89.0
File without changes
@@ -0,0 +1,62 @@
1
+ [project]
2
+ name = "revlo-cli"
3
+ version = "0.1.0"
4
+ description = "AI-powered design review for KiCad schematics"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = "Apache-2.0"
8
+ authors = [
9
+ { name = "Bart Szczepanski" },
10
+ { name = "Rebels Software", email = "hello@rebels.software" },
11
+ ]
12
+ keywords = ["kicad", "eda", "schematic", "review", "electronics", "hardware"]
13
+ classifiers = [
14
+ "Development Status :: 3 - Alpha",
15
+ "Intended Audience :: Developers",
16
+ "Intended Audience :: Manufacturing",
17
+ "License :: OSI Approved :: Apache Software License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
22
+ "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
23
+ ]
24
+ dependencies = [
25
+ "anthropic>=0.78.0",
26
+ "httpx>=0.28.1",
27
+ "kicad-sch-api>=0.5.6",
28
+ "kiutils>=1.4.8",
29
+ "pydantic>=2.12.5",
30
+ "pymupdf>=1.25.0",
31
+ "python-dotenv>=1.0.0",
32
+ "rich>=13.0.0",
33
+ "textual>=0.89.0",
34
+ ]
35
+
36
+ [dependency-groups]
37
+ dev = [
38
+ "pytest>=9.0.2",
39
+ "pytest-asyncio>=1.3.0",
40
+ "ruff>=0.15.0",
41
+ ]
42
+
43
+ [project.scripts]
44
+ revlo = "revlo.cli:main"
45
+
46
+ [project.urls]
47
+ Homepage = "https://revlo.review"
48
+ Repository = "https://github.com/rebels-software/revlo-cli"
49
+ Issues = "https://github.com/rebels-software/revlo-cli/issues"
50
+
51
+ [build-system]
52
+ requires = ["hatchling"]
53
+ build-backend = "hatchling.build"
54
+
55
+ [tool.hatch.build.targets.wheel]
56
+ packages = ["revlo"]
57
+
58
+ [tool.hatch.build.targets.sdist]
59
+ exclude = ["tests/", "dist/", ".concierge/", "hello.py", "uv.lock", ".python-version"]
60
+
61
+ [tool.pytest.ini_options]
62
+ asyncio_mode = "auto"
@@ -0,0 +1 @@
1
+ __version__ = "0.1.0"
@@ -0,0 +1,5 @@
1
+ """Allow running revlo as a module: python -m revlo."""
2
+
3
+ from revlo.cli import main
4
+
5
+ main()
@@ -0,0 +1,15 @@
1
+ """Agent definitions for EE design review."""
2
+
3
+ from revlo.agents.definitions import (
4
+ AGENT_NAMES,
5
+ get_all_agent_definitions,
6
+ get_ee_system_prompt,
7
+ get_orchestrator_prompt,
8
+ )
9
+
10
+ __all__ = [
11
+ "AGENT_NAMES",
12
+ "get_all_agent_definitions",
13
+ "get_ee_system_prompt",
14
+ "get_orchestrator_prompt",
15
+ ]
@@ -0,0 +1,78 @@
1
+ """Specialist EE agent definitions.
2
+
3
+ The multi-agent Agent SDK dispatch has been replaced by a single direct
4
+ Claude API call using the comprehensive ``ee_review.md`` system prompt.
5
+
6
+ The old ``get_orchestrator_prompt()`` and ``get_all_agent_definitions()``
7
+ functions are kept for backward compatibility but are no longer used by
8
+ the review engine.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ from typing import Any
14
+
15
+ from revlo.skills import load_skill
16
+
17
+ # ---------------------------------------------------------------------------
18
+ # Agent name constants (kept for backward compat / reference)
19
+ # ---------------------------------------------------------------------------
20
+ AGENT_NAMES = [
21
+ "signal_integrity_review",
22
+ "ic_pin_config_review",
23
+ "bom_lifecycle_review",
24
+ "interface_grounding_review",
25
+ "power_supply_review",
26
+ "pcb_layout_review",
27
+ ]
28
+
29
+
30
+ # ---------------------------------------------------------------------------
31
+ # Public API
32
+ # ---------------------------------------------------------------------------
33
+ def get_ee_system_prompt() -> str:
34
+ """Return the comprehensive EE review system prompt."""
35
+ return load_skill("ee_review")
36
+
37
+
38
+ def get_orchestrator_prompt() -> str:
39
+ """Return the Team Lead orchestrator system prompt.
40
+
41
+ .. deprecated::
42
+ No longer used by the review engine. Kept for backward compatibility.
43
+ """
44
+ return load_skill("orchestrator")
45
+
46
+
47
+ def get_all_agent_definitions() -> dict[str, Any]:
48
+ """Build and return all specialist agent definition dicts.
49
+
50
+ .. deprecated::
51
+ No longer used by the review engine. The Agent SDK multi-agent
52
+ dispatch has been replaced by a single direct Claude API call.
53
+ Kept for backward compatibility.
54
+
55
+ Returns plain dicts instead of AgentDefinition objects to avoid
56
+ requiring the claude_agent_sdk dependency.
57
+ """
58
+ base_prompt = load_skill("base_ee_knowledge")
59
+ definitions: dict[str, dict[str, str]] = {}
60
+
61
+ _AGENT_DESCRIPTIONS = {
62
+ "signal_integrity_review": "Signal integrity specialist: pull-ups, termination, ESD, impedance",
63
+ "ic_pin_config_review": "IC pin config specialist: pin conflicts, boot, unused pins, debug",
64
+ "bom_lifecycle_review": "BOM lifecycle specialist: EOL, sourcing, values, packages",
65
+ "interface_grounding_review": "Interface and grounding specialist: USB, I2C, SPI, CAN, UART, ground planes",
66
+ "power_supply_review": "Power supply specialist: regulators, caps, protection, thermal",
67
+ "pcb_layout_review": "PCB layout specialist: trace width, ground plane, decoupling placement",
68
+ }
69
+
70
+ for name in AGENT_NAMES:
71
+ specialist_prompt = load_skill(name)
72
+ definitions[name] = {
73
+ "description": _AGENT_DESCRIPTIONS[name],
74
+ "prompt": base_prompt + "\n\n" + specialist_prompt,
75
+ "model": "sonnet",
76
+ }
77
+
78
+ return definitions