app-classifier 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.
- app_classifier/__init__.py +66 -0
- app_classifier/agent.py +662 -0
- app_classifier/classifier.py +802 -0
- app_classifier/cli.py +93 -0
- app_classifier/data/web_server_cves.json +75 -0
- app_classifier/hosting.py +664 -0
- app_classifier/web_server_vulns.py +151 -0
- app_classifier-0.1.0.dist-info/METADATA +250 -0
- app_classifier-0.1.0.dist-info/RECORD +13 -0
- app_classifier-0.1.0.dist-info/WHEEL +5 -0
- app_classifier-0.1.0.dist-info/entry_points.txt +2 -0
- app_classifier-0.1.0.dist-info/licenses/LICENSE +21 -0
- app_classifier-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""app-classifier — pattern-based application functional-category inference.
|
|
2
|
+
|
|
3
|
+
Point it at a repo on disk, get back:
|
|
4
|
+
- what kind of app it is (e-commerce, blog, admin panel, REST API, etc.)
|
|
5
|
+
- a 2-3 sentence functional description
|
|
6
|
+
- hosting requirements (runtime, web server, databases, ports, env vars)
|
|
7
|
+
- detected HTTP routes + data models
|
|
8
|
+
- optional LLM-refined description (provider-agnostic — bring your own)
|
|
9
|
+
|
|
10
|
+
Quick start:
|
|
11
|
+
>>> from app_classifier import classify
|
|
12
|
+
>>> result = classify("./my-repo")
|
|
13
|
+
>>> print(result.summary)
|
|
14
|
+
'my-repo · python 3.11 · FastAPI · 23 HTTP route(s) · 5 data model(s) · DB: PostgreSQL'
|
|
15
|
+
>>> print(result.app_category, result.app_category_confidence)
|
|
16
|
+
'e-commerce' 0.78
|
|
17
|
+
>>> print(result.functional_description)
|
|
18
|
+
'my-repo is an e-commerce application. Primary functionality: online shopping. ...'
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from app_classifier.classifier import (
|
|
22
|
+
AppDescription,
|
|
23
|
+
DataModel,
|
|
24
|
+
RouteEntry,
|
|
25
|
+
classify,
|
|
26
|
+
classify_async,
|
|
27
|
+
describe_app, # alias for classify
|
|
28
|
+
llm_enrich_description,
|
|
29
|
+
)
|
|
30
|
+
from app_classifier.hosting import (
|
|
31
|
+
HostingReport,
|
|
32
|
+
Signal,
|
|
33
|
+
analyze_hosting_requirements,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
__version__ = "0.1.0"
|
|
37
|
+
|
|
38
|
+
__all__ = [
|
|
39
|
+
# Primary API
|
|
40
|
+
"classify",
|
|
41
|
+
"classify_async",
|
|
42
|
+
"describe_app",
|
|
43
|
+
"AppDescription",
|
|
44
|
+
"RouteEntry",
|
|
45
|
+
"DataModel",
|
|
46
|
+
# Hosting subsystem (re-exported for users who only want deployment data)
|
|
47
|
+
"analyze_hosting_requirements",
|
|
48
|
+
"HostingReport",
|
|
49
|
+
"Signal",
|
|
50
|
+
# LLM enrichment hook
|
|
51
|
+
"llm_enrich_description",
|
|
52
|
+
# Agentic mode — opt-in, requires an LLM provider
|
|
53
|
+
"classify_agentic",
|
|
54
|
+
"AgentClassificationResult",
|
|
55
|
+
"AgentStep",
|
|
56
|
+
"SubappClassification",
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
# Agentic API (imported lazily to keep `import app_classifier` cheap for
|
|
60
|
+
# users who only need the deterministic path)
|
|
61
|
+
from app_classifier.agent import (
|
|
62
|
+
AgentClassificationResult,
|
|
63
|
+
AgentStep,
|
|
64
|
+
SubappClassification,
|
|
65
|
+
classify_agentic,
|
|
66
|
+
)
|