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.
- revlo_cli-0.1.0/.gitignore +10 -0
- revlo_cli-0.1.0/PKG-INFO +30 -0
- revlo_cli-0.1.0/README.md +0 -0
- revlo_cli-0.1.0/pyproject.toml +62 -0
- revlo_cli-0.1.0/revlo/__init__.py +1 -0
- revlo_cli-0.1.0/revlo/__main__.py +5 -0
- revlo_cli-0.1.0/revlo/agents/__init__.py +15 -0
- revlo_cli-0.1.0/revlo/agents/definitions.py +78 -0
- revlo_cli-0.1.0/revlo/cli.py +572 -0
- revlo_cli-0.1.0/revlo/config.py +9 -0
- revlo_cli-0.1.0/revlo/datasheet/__init__.py +29 -0
- revlo_cli-0.1.0/revlo/datasheet/cache.py +142 -0
- revlo_cli-0.1.0/revlo/datasheet/extractor.py +116 -0
- revlo_cli-0.1.0/revlo/datasheet/models.py +45 -0
- revlo_cli-0.1.0/revlo/datasheet/normalizer.py +163 -0
- revlo_cli-0.1.0/revlo/datasheet/pdf.py +339 -0
- revlo_cli-0.1.0/revlo/datasheet/pipeline.py +276 -0
- revlo_cli-0.1.0/revlo/datasheet/resolver.py +183 -0
- revlo_cli-0.1.0/revlo/parser/__init__.py +18 -0
- revlo_cli-0.1.0/revlo/parser/connectivity.py +273 -0
- revlo_cli-0.1.0/revlo/parser/models.py +61 -0
- revlo_cli-0.1.0/revlo/parser/netlist.py +142 -0
- revlo_cli-0.1.0/revlo/parser/schematic.py +790 -0
- revlo_cli-0.1.0/revlo/report/__init__.py +5 -0
- revlo_cli-0.1.0/revlo/report/markdown.py +96 -0
- revlo_cli-0.1.0/revlo/reviewer/__init__.py +29 -0
- revlo_cli-0.1.0/revlo/reviewer/chunker.py +165 -0
- revlo_cli-0.1.0/revlo/reviewer/engine.py +290 -0
- revlo_cli-0.1.0/revlo/reviewer/models.py +69 -0
- revlo_cli-0.1.0/revlo/reviewer/prompts.py +272 -0
- revlo_cli-0.1.0/revlo/skills/__init__.py +11 -0
- revlo_cli-0.1.0/revlo/skills/base_ee_knowledge.md +61 -0
- revlo_cli-0.1.0/revlo/skills/bom_lifecycle_review.md +97 -0
- revlo_cli-0.1.0/revlo/skills/ee_review.md +338 -0
- revlo_cli-0.1.0/revlo/skills/ic_pin_config_review.md +97 -0
- revlo_cli-0.1.0/revlo/skills/interface_grounding_review.md +106 -0
- revlo_cli-0.1.0/revlo/skills/orchestrator.md +126 -0
- revlo_cli-0.1.0/revlo/skills/pcb_layout_review.md +101 -0
- revlo_cli-0.1.0/revlo/skills/power_supply_review.md +97 -0
- revlo_cli-0.1.0/revlo/skills/signal_integrity_review.md +94 -0
- revlo_cli-0.1.0/revlo/storage.py +214 -0
- revlo_cli-0.1.0/revlo/tui/__init__.py +5 -0
- revlo_cli-0.1.0/revlo/tui/app.py +952 -0
- revlo_cli-0.1.0/revlo/tui/chat.py +390 -0
- revlo_cli-0.1.0/revlo/tui/revlo.tcss +258 -0
- revlo_cli-0.1.0/revlo/tui/tools.py +269 -0
- revlo_cli-0.1.0/revlo/ui.py +248 -0
revlo_cli-0.1.0/PKG-INFO
ADDED
|
@@ -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,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
|