old-website-finder 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 (33) hide show
  1. old_website_finder-1.1.0/LICENSE +21 -0
  2. old_website_finder-1.1.0/PKG-INFO +225 -0
  3. old_website_finder-1.1.0/README.md +182 -0
  4. old_website_finder-1.1.0/pyproject.toml +76 -0
  5. old_website_finder-1.1.0/setup.cfg +4 -0
  6. old_website_finder-1.1.0/src/old_website_finder/__init__.py +3 -0
  7. old_website_finder-1.1.0/src/old_website_finder/analysis/__init__.py +3 -0
  8. old_website_finder-1.1.0/src/old_website_finder/analysis/llm_analyst.py +310 -0
  9. old_website_finder-1.1.0/src/old_website_finder/auth/__init__.py +4 -0
  10. old_website_finder-1.1.0/src/old_website_finder/auth/login.py +191 -0
  11. old_website_finder-1.1.0/src/old_website_finder/auth/providers.py +149 -0
  12. old_website_finder-1.1.0/src/old_website_finder/auth/store.py +378 -0
  13. old_website_finder-1.1.0/src/old_website_finder/cli.py +611 -0
  14. old_website_finder-1.1.0/src/old_website_finder/config.py +79 -0
  15. old_website_finder-1.1.0/src/old_website_finder/discovery/__init__.py +4 -0
  16. old_website_finder-1.1.0/src/old_website_finder/discovery/fetcher.py +185 -0
  17. old_website_finder-1.1.0/src/old_website_finder/discovery/scorer.py +260 -0
  18. old_website_finder-1.1.0/src/old_website_finder/discovery/sources.py +160 -0
  19. old_website_finder-1.1.0/src/old_website_finder/home.py +146 -0
  20. old_website_finder-1.1.0/src/old_website_finder/llm/__init__.py +3 -0
  21. old_website_finder-1.1.0/src/old_website_finder/llm/router.py +247 -0
  22. old_website_finder-1.1.0/src/old_website_finder/models.py +194 -0
  23. old_website_finder-1.1.0/src/old_website_finder/pipeline/__init__.py +3 -0
  24. old_website_finder-1.1.0/src/old_website_finder/pipeline/daily.py +238 -0
  25. old_website_finder-1.1.0/src/old_website_finder/py.typed +0 -0
  26. old_website_finder-1.1.0/src/old_website_finder/storage.py +224 -0
  27. old_website_finder-1.1.0/src/old_website_finder/ui.py +106 -0
  28. old_website_finder-1.1.0/src/old_website_finder.egg-info/PKG-INFO +225 -0
  29. old_website_finder-1.1.0/src/old_website_finder.egg-info/SOURCES.txt +31 -0
  30. old_website_finder-1.1.0/src/old_website_finder.egg-info/dependency_links.txt +1 -0
  31. old_website_finder-1.1.0/src/old_website_finder.egg-info/entry_points.txt +3 -0
  32. old_website_finder-1.1.0/src/old_website_finder.egg-info/requires.txt +16 -0
  33. old_website_finder-1.1.0/src/old_website_finder.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Old Website Finder contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,225 @@
1
+ Metadata-Version: 2.4
2
+ Name: old-website-finder
3
+ Version: 1.1.0
4
+ Summary: Hermes-style CLI agent that finds outdated Uzbekistan websites and runs deep upgrade analysis (Grok/GPT/Claude/Gemini)
5
+ Author: Old Website Finder
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/FarrukhDevloper/owf/OldWebsiteFinder
8
+ Project-URL: Repository, https://github.com/FarrukhDevloper/owf/OldWebsiteFinder
9
+ Project-URL: Issues, https://github.com/FarrukhDevloper/owf/issues
10
+ Project-URL: Documentation, https://github.com/FarrukhDevloper/owf#readme
11
+ Keywords: cli,agent,uzbekistan,website,modernization,audit,grok,openai,claude,gemini
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Internet :: WWW/HTTP
22
+ Classifier: Topic :: Software Development :: Quality Assurance
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: openai>=1.60.0
28
+ Requires-Dist: httpx>=0.27.0
29
+ Requires-Dist: beautifulsoup4>=4.12.0
30
+ Requires-Dist: lxml>=5.0.0
31
+ Requires-Dist: python-dotenv>=1.0.0
32
+ Requires-Dist: pydantic>=2.5.0
33
+ Requires-Dist: pydantic-settings>=2.1.0
34
+ Requires-Dist: rich>=13.7.0
35
+ Requires-Dist: typer>=0.12.0
36
+ Requires-Dist: tenacity>=8.2.0
37
+ Requires-Dist: apscheduler>=3.10.0
38
+ Requires-Dist: PyYAML>=6.0.0
39
+ Provides-Extra: dev
40
+ Requires-Dist: build>=1.2.0; extra == "dev"
41
+ Requires-Dist: twine>=5.0.0; extra == "dev"
42
+ Dynamic: license-file
43
+
44
+ # Old Website Finder Agent (`owf`)
45
+
46
+ Hermes-uslubidagi **professional CLI agent** — O‘zbekiston ichidagi eskirgan veb-saytlarni topadi, deep analysis qiladi, multi-provider LLM orqali tashxis qo‘yadi.
47
+
48
+ ## Install (public)
49
+
50
+ ```bash
51
+ # PyPI (nom publish qilingandan keyin)
52
+ pip install old-website-finder
53
+
54
+ # yoki pipx (tavsiya — global CLI)
55
+ pipx install old-website-finder
56
+
57
+ # yoki to‘g‘ridan-to‘g‘ri GitHubdan
58
+ pip install git+https://github.com/FarrukhDevloper/owf/OldWebsiteFinder.git
59
+ ```
60
+
61
+ ```bash
62
+ owf --version
63
+ owf setup
64
+ owf daily
65
+ ```
66
+
67
+ Batafsil: [PUBLISH.md](./PUBLISH.md)
68
+
69
+ ```
70
+ owf # banner + status
71
+ owf setup # interaktiv sozlash
72
+ owf auth add grok # API key yoki OAuth
73
+ owf daily # kunlik skan + analysis
74
+ ```
75
+
76
+ ## Imkoniyatlar
77
+
78
+ | Modul | Buyruqlar |
79
+ |-------|-----------|
80
+ | **Setup** | `owf setup`, `owf doctor`, `owf status` |
81
+ | **Auth pool** | `owf auth add/list/remove/status/logout` |
82
+ | **Model** | `owf model`, `owf providers`, `owf config` |
83
+ | **Agent** | `owf daily`, `owf analyze`, `owf schedule` |
84
+ | **Tarix** | `owf history`, `owf show`, `owf runs` |
85
+
86
+ ### Multi-provider LLM
87
+
88
+ | Provider | ID | Auth |
89
+ |----------|-----|------|
90
+ | xAI / Grok | `grok` | API key + OAuth token |
91
+ | OpenAI / GPT | `openai` | API key + OAuth token |
92
+ | Anthropic / Claude | `claude` | API key + OAuth token |
93
+ | Google / Gemini | `gemini` | API key + OAuth token |
94
+ | Custom OpenAI-compat | `custom` | API key + base URL |
95
+
96
+ Credentiallar: `~/.owf/auth.json` (Hermes-style pool)
97
+ Config: `~/.owf/config.yaml`
98
+
99
+ > **OAuth haqida:** CLI brauzerni ochadi va **access token / API key** ni xavfsiz saqlaydi.
100
+ > ChatGPT Pro yoki Claude.ai consumer session OAuth rasmiy third-party client talab qiladi — shuning uchun bu yerda **API key + Bearer OAuth token** modeli ishlatiladi (Hermes `auth add` UX).
101
+
102
+ ## O‘rnatish
103
+
104
+ ```powershell
105
+ cd "C:\New projects\Agents\OldWebsiteFinder"
106
+ python -m venv .venv
107
+ .\.venv\Scripts\Activate.ps1
108
+ pip install -r requirements.txt
109
+ pip install -e .
110
+ ```
111
+
112
+ ## Tezkor start (Hermes kabi)
113
+
114
+ ```powershell
115
+ owf setup
116
+ # yoki
117
+ owf auth add grok
118
+ owf auth add openai --api-key sk-...
119
+ owf auth add claude --type oauth
120
+ owf auth add gemini
121
+
122
+ owf model
123
+ owf status
124
+ owf doctor
125
+
126
+ owf daily -n 3
127
+ owf analyze https://example.uz --provider claude
128
+ ```
129
+
130
+ ### Auth misollar
131
+
132
+ ```powershell
133
+ # Interaktiv (brauzer ochiladi)
134
+ owf auth add grok
135
+ owf auth add openai
136
+ owf auth add claude
137
+ owf auth add gemini
138
+
139
+ # Non-interactive
140
+ owf auth add grok --api-key xai-...
141
+ owf auth add openai --api-key sk-...
142
+ owf auth add claude --api-key sk-ant-...
143
+ owf auth add gemini --api-key AIza...
144
+ owf auth add claude --access-token eyJ... --type oauth
145
+
146
+ owf auth list
147
+ owf auth remove grok 1
148
+ owf auth logout openai
149
+ ```
150
+
151
+ ### Model / config
152
+
153
+ ```powershell
154
+ owf model -p grok -m grok-4.5
155
+ owf model -p claude -m claude-sonnet-4-20250514
156
+ owf config show
157
+ owf config set agent.daily_analysis_limit 10
158
+ owf config set fallback.providers "openai,claude"
159
+ ```
160
+
161
+ Env orqali ham ishlaydi (pool bo‘sh bo‘lsa):
162
+
163
+ ```
164
+ XAI_API_KEY=
165
+ OPENAI_API_KEY=
166
+ ANTHROPIC_API_KEY=
167
+ GEMINI_API_KEY=
168
+ ```
169
+
170
+ ## Agent pipeline
171
+
172
+ 1. **Discovery** — `.uz` seed + `data/seed_sites.txt`
173
+ 2. **Tech scan** — HTTPS, eski PHP/jQuery, table layout, CMS, security headers
174
+ 3. **Priority score** — upgrade ehtiyoj × auditoriya proxy
175
+ 4. **Deep analysis** — tanlangan LLM (Grok/GPT/Claude/Gemini)
176
+ 5. **Persist** — SQLite + `reports/YYYY-MM-DD/*.md|json`
177
+
178
+ ## CLI reference
179
+
180
+ ```
181
+ owf banner + status dashboard
182
+ owf setup setup wizard
183
+ owf doctor health check
184
+ owf status component status
185
+ owf providers LLM provider ro‘yxati
186
+ owf auth add <provider> credential qo‘shish
187
+ owf auth list pool
188
+ owf auth remove <p> <ref> o‘chirish
189
+ owf auth logout [provider] tozalash
190
+ owf model provider/model picker
191
+ owf config show|set|edit|path
192
+ owf daily [-n N] [-p provider] [-m model]
193
+ owf analyze URL
194
+ owf history [--date YYYY-MM-DD]
195
+ owf show <analysis_id>
196
+ owf runs
197
+ owf schedule --hour 9
198
+ ```
199
+
200
+ ## Fayl tuzilmasi
201
+
202
+ ```
203
+ ~/.owf/
204
+ auth.json # credential pool
205
+ config.yaml # model, limits, fallback
206
+ .env # optional secrets
207
+ reports/ # optional home reports
208
+ logs/
209
+
210
+ src/old_website_finder/
211
+ cli.py # Hermes-style commands
212
+ ui.py # banner / panels
213
+ home.py # ~/.owf
214
+ auth/ # providers, store, login
215
+ llm/ # multi-provider router
216
+ discovery/ # scan + score
217
+ analysis/ # deep analysis
218
+ pipeline/ # daily orchestrator
219
+ ```
220
+
221
+ ## Eslatma
222
+
223
+ - Agent **read-only** — saytlarni o‘zgartirmaydi.
224
+ - Auditoriya bahosi proxy (analytics emas).
225
+ - Productionda `data/seed_sites.txt` ni kengaytiring.
@@ -0,0 +1,182 @@
1
+ # Old Website Finder Agent (`owf`)
2
+
3
+ Hermes-uslubidagi **professional CLI agent** — O‘zbekiston ichidagi eskirgan veb-saytlarni topadi, deep analysis qiladi, multi-provider LLM orqali tashxis qo‘yadi.
4
+
5
+ ## Install (public)
6
+
7
+ ```bash
8
+ # PyPI (nom publish qilingandan keyin)
9
+ pip install old-website-finder
10
+
11
+ # yoki pipx (tavsiya — global CLI)
12
+ pipx install old-website-finder
13
+
14
+ # yoki to‘g‘ridan-to‘g‘ri GitHubdan
15
+ pip install git+https://github.com/FarrukhDevloper/owf/OldWebsiteFinder.git
16
+ ```
17
+
18
+ ```bash
19
+ owf --version
20
+ owf setup
21
+ owf daily
22
+ ```
23
+
24
+ Batafsil: [PUBLISH.md](./PUBLISH.md)
25
+
26
+ ```
27
+ owf # banner + status
28
+ owf setup # interaktiv sozlash
29
+ owf auth add grok # API key yoki OAuth
30
+ owf daily # kunlik skan + analysis
31
+ ```
32
+
33
+ ## Imkoniyatlar
34
+
35
+ | Modul | Buyruqlar |
36
+ |-------|-----------|
37
+ | **Setup** | `owf setup`, `owf doctor`, `owf status` |
38
+ | **Auth pool** | `owf auth add/list/remove/status/logout` |
39
+ | **Model** | `owf model`, `owf providers`, `owf config` |
40
+ | **Agent** | `owf daily`, `owf analyze`, `owf schedule` |
41
+ | **Tarix** | `owf history`, `owf show`, `owf runs` |
42
+
43
+ ### Multi-provider LLM
44
+
45
+ | Provider | ID | Auth |
46
+ |----------|-----|------|
47
+ | xAI / Grok | `grok` | API key + OAuth token |
48
+ | OpenAI / GPT | `openai` | API key + OAuth token |
49
+ | Anthropic / Claude | `claude` | API key + OAuth token |
50
+ | Google / Gemini | `gemini` | API key + OAuth token |
51
+ | Custom OpenAI-compat | `custom` | API key + base URL |
52
+
53
+ Credentiallar: `~/.owf/auth.json` (Hermes-style pool)
54
+ Config: `~/.owf/config.yaml`
55
+
56
+ > **OAuth haqida:** CLI brauzerni ochadi va **access token / API key** ni xavfsiz saqlaydi.
57
+ > ChatGPT Pro yoki Claude.ai consumer session OAuth rasmiy third-party client talab qiladi — shuning uchun bu yerda **API key + Bearer OAuth token** modeli ishlatiladi (Hermes `auth add` UX).
58
+
59
+ ## O‘rnatish
60
+
61
+ ```powershell
62
+ cd "C:\New projects\Agents\OldWebsiteFinder"
63
+ python -m venv .venv
64
+ .\.venv\Scripts\Activate.ps1
65
+ pip install -r requirements.txt
66
+ pip install -e .
67
+ ```
68
+
69
+ ## Tezkor start (Hermes kabi)
70
+
71
+ ```powershell
72
+ owf setup
73
+ # yoki
74
+ owf auth add grok
75
+ owf auth add openai --api-key sk-...
76
+ owf auth add claude --type oauth
77
+ owf auth add gemini
78
+
79
+ owf model
80
+ owf status
81
+ owf doctor
82
+
83
+ owf daily -n 3
84
+ owf analyze https://example.uz --provider claude
85
+ ```
86
+
87
+ ### Auth misollar
88
+
89
+ ```powershell
90
+ # Interaktiv (brauzer ochiladi)
91
+ owf auth add grok
92
+ owf auth add openai
93
+ owf auth add claude
94
+ owf auth add gemini
95
+
96
+ # Non-interactive
97
+ owf auth add grok --api-key xai-...
98
+ owf auth add openai --api-key sk-...
99
+ owf auth add claude --api-key sk-ant-...
100
+ owf auth add gemini --api-key AIza...
101
+ owf auth add claude --access-token eyJ... --type oauth
102
+
103
+ owf auth list
104
+ owf auth remove grok 1
105
+ owf auth logout openai
106
+ ```
107
+
108
+ ### Model / config
109
+
110
+ ```powershell
111
+ owf model -p grok -m grok-4.5
112
+ owf model -p claude -m claude-sonnet-4-20250514
113
+ owf config show
114
+ owf config set agent.daily_analysis_limit 10
115
+ owf config set fallback.providers "openai,claude"
116
+ ```
117
+
118
+ Env orqali ham ishlaydi (pool bo‘sh bo‘lsa):
119
+
120
+ ```
121
+ XAI_API_KEY=
122
+ OPENAI_API_KEY=
123
+ ANTHROPIC_API_KEY=
124
+ GEMINI_API_KEY=
125
+ ```
126
+
127
+ ## Agent pipeline
128
+
129
+ 1. **Discovery** — `.uz` seed + `data/seed_sites.txt`
130
+ 2. **Tech scan** — HTTPS, eski PHP/jQuery, table layout, CMS, security headers
131
+ 3. **Priority score** — upgrade ehtiyoj × auditoriya proxy
132
+ 4. **Deep analysis** — tanlangan LLM (Grok/GPT/Claude/Gemini)
133
+ 5. **Persist** — SQLite + `reports/YYYY-MM-DD/*.md|json`
134
+
135
+ ## CLI reference
136
+
137
+ ```
138
+ owf banner + status dashboard
139
+ owf setup setup wizard
140
+ owf doctor health check
141
+ owf status component status
142
+ owf providers LLM provider ro‘yxati
143
+ owf auth add <provider> credential qo‘shish
144
+ owf auth list pool
145
+ owf auth remove <p> <ref> o‘chirish
146
+ owf auth logout [provider] tozalash
147
+ owf model provider/model picker
148
+ owf config show|set|edit|path
149
+ owf daily [-n N] [-p provider] [-m model]
150
+ owf analyze URL
151
+ owf history [--date YYYY-MM-DD]
152
+ owf show <analysis_id>
153
+ owf runs
154
+ owf schedule --hour 9
155
+ ```
156
+
157
+ ## Fayl tuzilmasi
158
+
159
+ ```
160
+ ~/.owf/
161
+ auth.json # credential pool
162
+ config.yaml # model, limits, fallback
163
+ .env # optional secrets
164
+ reports/ # optional home reports
165
+ logs/
166
+
167
+ src/old_website_finder/
168
+ cli.py # Hermes-style commands
169
+ ui.py # banner / panels
170
+ home.py # ~/.owf
171
+ auth/ # providers, store, login
172
+ llm/ # multi-provider router
173
+ discovery/ # scan + score
174
+ analysis/ # deep analysis
175
+ pipeline/ # daily orchestrator
176
+ ```
177
+
178
+ ## Eslatma
179
+
180
+ - Agent **read-only** — saytlarni o‘zgartirmaydi.
181
+ - Auditoriya bahosi proxy (analytics emas).
182
+ - Productionda `data/seed_sites.txt` ni kengaytiring.
@@ -0,0 +1,76 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "old-website-finder"
7
+ version = "1.1.0"
8
+ description = "Hermes-style CLI agent that finds outdated Uzbekistan websites and runs deep upgrade analysis (Grok/GPT/Claude/Gemini)"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "MIT" }
12
+ authors = [
13
+ { name = "Old Website Finder" },
14
+ ]
15
+ keywords = [
16
+ "cli",
17
+ "agent",
18
+ "uzbekistan",
19
+ "website",
20
+ "modernization",
21
+ "audit",
22
+ "grok",
23
+ "openai",
24
+ "claude",
25
+ "gemini",
26
+ ]
27
+ classifiers = [
28
+ "Development Status :: 4 - Beta",
29
+ "Environment :: Console",
30
+ "Intended Audience :: Developers",
31
+ "License :: OSI Approved :: MIT License",
32
+ "Operating System :: OS Independent",
33
+ "Programming Language :: Python :: 3",
34
+ "Programming Language :: Python :: 3.11",
35
+ "Programming Language :: Python :: 3.12",
36
+ "Programming Language :: Python :: 3.13",
37
+ "Topic :: Internet :: WWW/HTTP",
38
+ "Topic :: Software Development :: Quality Assurance",
39
+ "Typing :: Typed",
40
+ ]
41
+ dependencies = [
42
+ "openai>=1.60.0",
43
+ "httpx>=0.27.0",
44
+ "beautifulsoup4>=4.12.0",
45
+ "lxml>=5.0.0",
46
+ "python-dotenv>=1.0.0",
47
+ "pydantic>=2.5.0",
48
+ "pydantic-settings>=2.1.0",
49
+ "rich>=13.7.0",
50
+ "typer>=0.12.0",
51
+ "tenacity>=8.2.0",
52
+ "apscheduler>=3.10.0",
53
+ "PyYAML>=6.0.0",
54
+ ]
55
+
56
+ [project.optional-dependencies]
57
+ dev = [
58
+ "build>=1.2.0",
59
+ "twine>=5.0.0",
60
+ ]
61
+
62
+ [project.urls]
63
+ Homepage = "https://github.com/FarrukhDevloper/owf/OldWebsiteFinder"
64
+ Repository = "https://github.com/FarrukhDevloper/owf/OldWebsiteFinder"
65
+ Issues = "https://github.com/FarrukhDevloper/owf/issues"
66
+ Documentation = "https://github.com/FarrukhDevloper/owf#readme"
67
+
68
+ [project.scripts]
69
+ owf = "old_website_finder.cli:app"
70
+ old-website-finder = "old_website_finder.cli:app"
71
+
72
+ [tool.setuptools.packages.find]
73
+ where = ["src"]
74
+
75
+ [tool.setuptools.package-data]
76
+ old_website_finder = ["py.typed"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """Old Website Finder — Uzbekistan legacy website discovery & deep upgrade analysis agent."""
2
+
3
+ __version__ = "1.1.0"
@@ -0,0 +1,3 @@
1
+ from old_website_finder.analysis.llm_analyst import analyze_candidate
2
+
3
+ __all__ = ["analyze_candidate"]