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.
- old_website_finder-1.1.0/LICENSE +21 -0
- old_website_finder-1.1.0/PKG-INFO +225 -0
- old_website_finder-1.1.0/README.md +182 -0
- old_website_finder-1.1.0/pyproject.toml +76 -0
- old_website_finder-1.1.0/setup.cfg +4 -0
- old_website_finder-1.1.0/src/old_website_finder/__init__.py +3 -0
- old_website_finder-1.1.0/src/old_website_finder/analysis/__init__.py +3 -0
- old_website_finder-1.1.0/src/old_website_finder/analysis/llm_analyst.py +310 -0
- old_website_finder-1.1.0/src/old_website_finder/auth/__init__.py +4 -0
- old_website_finder-1.1.0/src/old_website_finder/auth/login.py +191 -0
- old_website_finder-1.1.0/src/old_website_finder/auth/providers.py +149 -0
- old_website_finder-1.1.0/src/old_website_finder/auth/store.py +378 -0
- old_website_finder-1.1.0/src/old_website_finder/cli.py +611 -0
- old_website_finder-1.1.0/src/old_website_finder/config.py +79 -0
- old_website_finder-1.1.0/src/old_website_finder/discovery/__init__.py +4 -0
- old_website_finder-1.1.0/src/old_website_finder/discovery/fetcher.py +185 -0
- old_website_finder-1.1.0/src/old_website_finder/discovery/scorer.py +260 -0
- old_website_finder-1.1.0/src/old_website_finder/discovery/sources.py +160 -0
- old_website_finder-1.1.0/src/old_website_finder/home.py +146 -0
- old_website_finder-1.1.0/src/old_website_finder/llm/__init__.py +3 -0
- old_website_finder-1.1.0/src/old_website_finder/llm/router.py +247 -0
- old_website_finder-1.1.0/src/old_website_finder/models.py +194 -0
- old_website_finder-1.1.0/src/old_website_finder/pipeline/__init__.py +3 -0
- old_website_finder-1.1.0/src/old_website_finder/pipeline/daily.py +238 -0
- old_website_finder-1.1.0/src/old_website_finder/py.typed +0 -0
- old_website_finder-1.1.0/src/old_website_finder/storage.py +224 -0
- old_website_finder-1.1.0/src/old_website_finder/ui.py +106 -0
- old_website_finder-1.1.0/src/old_website_finder.egg-info/PKG-INFO +225 -0
- old_website_finder-1.1.0/src/old_website_finder.egg-info/SOURCES.txt +31 -0
- old_website_finder-1.1.0/src/old_website_finder.egg-info/dependency_links.txt +1 -0
- old_website_finder-1.1.0/src/old_website_finder.egg-info/entry_points.txt +3 -0
- old_website_finder-1.1.0/src/old_website_finder.egg-info/requires.txt +16 -0
- 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"]
|