osintengine 1.0.2__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.
Files changed (103) hide show
  1. osintengine-1.0.2.dist-info/METADATA +311 -0
  2. osintengine-1.0.2.dist-info/RECORD +103 -0
  3. osintengine-1.0.2.dist-info/WHEEL +5 -0
  4. osintengine-1.0.2.dist-info/entry_points.txt +2 -0
  5. osintengine-1.0.2.dist-info/licenses/LICENSE +202 -0
  6. osintengine-1.0.2.dist-info/top_level.txt +2 -0
  7. src/watson/__init__.py +10 -0
  8. src/watson/agent/__init__.py +96 -0
  9. src/watson/agents/__init__.py +101 -0
  10. src/watson/agents/protocol.py +196 -0
  11. src/watson/auth/__init__.py +68 -0
  12. src/watson/auth/store.py +145 -0
  13. src/watson/conversation.py +68 -0
  14. src/watson/core/__init__.py +0 -0
  15. src/watson/core/models.py +96 -0
  16. src/watson/ethics.py +205 -0
  17. src/watson/exports.py +182 -0
  18. src/watson/graph/__init__.py +69 -0
  19. src/watson/graph/entities.py +207 -0
  20. src/watson/graph/graph.py +489 -0
  21. src/watson/graph/osint_framework.py +266 -0
  22. src/watson/graph/relationships.py +116 -0
  23. src/watson/graph/transforms.py +787 -0
  24. src/watson/infra/__init__.py +43 -0
  25. src/watson/infra/cache.py +171 -0
  26. src/watson/infra/ratelimit.py +125 -0
  27. src/watson/infra/resilience.py +239 -0
  28. src/watson/infra/retry.py +186 -0
  29. src/watson/metrics.py +128 -0
  30. src/watson/opsec/__init__.py +290 -0
  31. src/watson/orchestration/__init__.py +23 -0
  32. src/watson/orchestration/engine.py +5587 -0
  33. src/watson/orchestration/executor.py +96 -0
  34. src/watson/orchestration/intent.py +139 -0
  35. src/watson/orchestration/intent_classifier.py +45 -0
  36. src/watson/orchestration/llm_config.py +160 -0
  37. src/watson/orchestration/resolution.py +555 -0
  38. src/watson/orchestration/scraper.py +94 -0
  39. src/watson/orchestration/synthesis.py +726 -0
  40. src/watson/orchestration/target_profile.py +748 -0
  41. src/watson/persistence/__init__.py +18 -0
  42. src/watson/persistence/models.py +161 -0
  43. src/watson/persistence/store.py +230 -0
  44. src/watson/pipeline/__init__.py +16 -0
  45. src/watson/pipeline/pre_synthesis.py +621 -0
  46. src/watson/search.py +103 -0
  47. src/watson/serializers/stix.py +451 -0
  48. src/watson/tools/__init__.py +31 -0
  49. src/watson/tools/base.py +97 -0
  50. src/watson/tools/blockchain.py +359 -0
  51. src/watson/tools/captcha.py +276 -0
  52. src/watson/tools/conflict.py +107 -0
  53. src/watson/tools/corporate.py +287 -0
  54. src/watson/tools/darkweb.py +144 -0
  55. src/watson/tools/geolocation.py +347 -0
  56. src/watson/tools/image_video.py +108 -0
  57. src/watson/tools/marinetraffic.py +142 -0
  58. src/watson/tools/people.py +476 -0
  59. src/watson/tools/registry.py +56 -0
  60. src/watson/tools/satellite.py +118 -0
  61. src/watson/tools/scraper.py +745 -0
  62. src/watson/tools/shodan.py +129 -0
  63. src/watson/tools/social_media.py +160 -0
  64. src/watson/tools/websites.py +291 -0
  65. src/watson/tools/wikidata.py +398 -0
  66. src/watson/utils/__init__.py +1 -0
  67. src/watson/utils/helpers.py +49 -0
  68. src/watson/utils/http.py +119 -0
  69. src/watson/verification/__init__.py +245 -0
  70. watson/__init__.py +6 -0
  71. watson/agents/__init__.py +20 -0
  72. watson/agents/base.py +103 -0
  73. watson/agents/direct.py +225 -0
  74. watson/agents/hermes.py +275 -0
  75. watson/agents/hermes_mcp.py +292 -0
  76. watson/api_keys.py +176 -0
  77. watson/browser_scraper.py +481 -0
  78. watson/cli.py +836 -0
  79. watson/crossref.py +175 -0
  80. watson/ethics.py +20 -0
  81. watson/graph.py +406 -0
  82. watson/mcp_server.py +601 -0
  83. watson/memory.py +552 -0
  84. watson/neo4j_graph.py +124 -0
  85. watson/opsec/__init__.py +307 -0
  86. watson/reporter.py +537 -0
  87. watson/scheduler.py +486 -0
  88. watson/serializers/stix.py +451 -0
  89. watson/terminal.py +410 -0
  90. watson/toolkit.py +252 -0
  91. watson/toolkit_api.py +347 -0
  92. watson/toolkit_automation.py +95 -0
  93. watson/toolkit_registry.py +345 -0
  94. watson/verification/__init__.py +251 -0
  95. watson/web/__init__.py +1 -0
  96. watson/web/app.py +1650 -0
  97. watson/web/middleware.py +301 -0
  98. watson/web/static/assets/index-B7hPOc0z.js +278 -0
  99. watson/web/static/assets/index-CJ6FP8Mp.css +1 -0
  100. watson/web/static/assets/watson-logo-Dk9tawHb.png +0 -0
  101. watson/web/static/index.html +14 -0
  102. watson/web/templates/chat.html +2 -0
  103. watson/web/templates/investigation-map.html +429 -0
@@ -0,0 +1,311 @@
1
+ Metadata-Version: 2.4
2
+ Name: osintengine
3
+ Version: 1.0.2
4
+ Summary: The OSINT investigation engine — 7-phase pipeline, persistent knowledge graph, community intelligence
5
+ Author-email: Lorenzo Baron <baron.lorenzo99@gmail.com>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/Lorenzobaron99/watson-osint
8
+ Project-URL: Documentation, https://github.com/Lorenzobaron99/watson-osint#readme
9
+ Project-URL: Bug Tracker, https://github.com/Lorenzobaron99/watson-osint/issues
10
+ Project-URL: Repository, https://github.com/Lorenzobaron99/watson-osint
11
+ Keywords: osint,investigation,intelligence,graph,open-source,due-diligence,security,research
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Information Technology
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: Intended Audience :: Legal Industry
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Security
22
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
23
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
24
+ Classifier: Operating System :: OS Independent
25
+ Requires-Python: >=3.10
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: aiohttp>=3.9
29
+ Requires-Dist: fastapi<1,>=0.109
30
+ Requires-Dist: uvicorn[standard]>=0.27
31
+ Requires-Dist: pydantic>=2.0
32
+ Requires-Dist: httpx>=0.26
33
+ Requires-Dist: ddgs>=5.0
34
+ Requires-Dist: python-multipart>=0.0.6
35
+ Requires-Dist: jinja2>=3.1
36
+ Provides-Extra: dev
37
+ Requires-Dist: pytest>=8.0; extra == "dev"
38
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
39
+ Requires-Dist: build>=1.0; extra == "dev"
40
+ Provides-Extra: web
41
+ Provides-Extra: tools
42
+ Requires-Dist: dnspython>=2.6; extra == "tools"
43
+ Requires-Dist: fpdf2>=2.7; extra == "tools"
44
+ Requires-Dist: playwright>=1.40; extra == "tools"
45
+ Requires-Dist: Pillow>=10.0; extra == "tools"
46
+ Provides-Extra: full
47
+ Requires-Dist: dnspython>=2.6; extra == "full"
48
+ Requires-Dist: fpdf2>=2.7; extra == "full"
49
+ Requires-Dist: playwright>=1.40; extra == "full"
50
+ Requires-Dist: Pillow>=10.0; extra == "full"
51
+ Requires-Dist: gliner>=0.2; extra == "full"
52
+ Requires-Dist: neo4j>=5.0; extra == "full"
53
+ Requires-Dist: redis>=5.0; extra == "full"
54
+ Requires-Dist: certifi>=2024; extra == "full"
55
+ Dynamic: license-file
56
+
57
+ # 🕵️ Watson — The OSINT Investigation Engine
58
+
59
+ <p align="center">
60
+ <img src="watson/web/static/assets/watson-logo-Dk9tawHb.png" alt="Watson" width="120">
61
+ </p>
62
+
63
+ <p align="center">
64
+ <strong>Stop searching. Start investigating.</strong>
65
+ </p>
66
+
67
+ <p align="center">
68
+ <a href="https://pypi.org/project/osintengine/"><img src="https://img.shields.io/badge/pypi-v1.0.2-blue" alt="PyPI"></a>
69
+ <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python"></a>
70
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPLv3-green" alt="License"></a>
71
+ <a href="https://github.com/Lorenzobaron99/watson-osint"><img src="https://img.shields.io/badge/status-active-brightgreen" alt="Status"></a>
72
+ </p>
73
+
74
+ ---
75
+
76
+ **Watson doesn't just look things up. It investigates.**
77
+
78
+ Most tools give you a search bar. Watson gives you a forensics lab. It runs a 7-phase intelligence pipeline across 16+ data sources, cross-references every finding, builds a persistent knowledge graph that remembers across cases, and produces a structured intelligence brief — not a list of links.
79
+
80
+ One target. One command. A dossier that would take an analyst hours.
81
+
82
+ ---
83
+
84
+ ## The difference between searching and investigating
85
+
86
+ | You type... | Most tools return... | Watson returns... |
87
+ |---|---|---|
88
+ | "Paolo Trecate" | Wikipedia link, maybe a news article | Employment history, board positions, corporate registrations, domain ownerships, sanctions screening, adverse media, timeline of professional milestones, entity relationship graph |
89
+ | "example.com" | WHOIS record | Domain history, SSL certificates, subdomains, DNS records, IP geolocation, hosting provider, Wayback snapshots, linked social accounts, VirusTotal reputation |
90
+ | "crypto-wallet-0x..." | Nothing useful | Transaction graph, exchange links, associated addresses, risk scoring, dark web mentions |
91
+
92
+ **Watson doesn't just find what you asked for. It finds what you didn't know to ask.**
93
+
94
+ ---
95
+
96
+ ## Quick Start
97
+
98
+ ```bash
99
+ pip install osintengine
100
+
101
+ # First-time setup (60 seconds)
102
+ watson onboard
103
+
104
+ # Start investigating
105
+ watson web
106
+ ```
107
+
108
+ Open http://localhost:8777. Type a name. Watch the investigation unfold in real time.
109
+
110
+ **No API key?** Watson's free tier works immediately — Wikidata, crt.sh, Wayback Machine, DuckDuckGo, ICIJ Offshore Leaks, and more run without any keys. Add an LLM key for intelligence synthesis (DeepSeek offers a [free tier](https://platform.deepseek.com/api_keys)).
111
+
112
+ ---
113
+
114
+ ## How It Works
115
+
116
+ ### The 7-Phase Pipeline
117
+
118
+ Watson doesn't guess. It follows a deterministic methodology refined across hundreds of real cases:
119
+
120
+ ```
121
+ investigate("target")
122
+
123
+
124
+ ┌──────────────────────────────────────┐
125
+ │ PHASE 1 · CLASSIFY │
126
+ │ Person? Company? Domain? Wallet? │
127
+ │ Checks knowledge graph for priors │
128
+ │ Selects investigation strategy │
129
+ └──────────────┬───────────────────────┘
130
+
131
+ ┌──────────────────────────────────────┐
132
+ │ PHASE 2 · SURFACE │
133
+ │ Wikipedia, Wikidata, DDG dorking │
134
+ │ crt.sh certificates, Wayback history │
135
+ │ WHOIS, DNS, SSL, URLscan │
136
+ │ Social media presence, news mentions │
137
+ └──────────────┬───────────────────────┘
138
+
139
+ ┌──────────────────────────────────────┐
140
+ │ PHASE 3 · PIVOT │
141
+ │ Email → accounts across platforms │
142
+ │ Username → 300+ site presence check │
143
+ │ Breach data, credential exposure │
144
+ │ Identifier chaining — Bazzell method │
145
+ └──────────────┬───────────────────────┘
146
+
147
+ ┌──────────────────────────────────────┐
148
+ │ PHASE 4 · DEEP │
149
+ │ OpenSanctions, Interpol, OFAC │
150
+ │ OpenCorporates, SEC EDGAR │
151
+ │ ICIJ Offshore Leaks, OCCRP Aleph │
152
+ │ Court records, financial registries │
153
+ │ VirusTotal domain/IP reputation │
154
+ └──────────────┬───────────────────────┘
155
+
156
+ ┌──────────────────────────────────────┐
157
+ │ PHASE 5 · DARK (auto-escalated) │
158
+ │ Ransomware checks, dark web mentions │
159
+ │ Triggered by criminal/financial signals│
160
+ │ Skipped for clean targets │
161
+ └──────────────┬───────────────────────┘
162
+
163
+ ┌──────────────────────────────────────┐
164
+ │ PHASE 6 · ANALYZE │
165
+ │ Cross-reference all phases │
166
+ │ Entity resolution & deduplication │
167
+ │ Identity correlation scoring │
168
+ │ Source tiering: PRIMARY→UNVERIFIED │
169
+ │ LLM synthesis → structured brief │
170
+ └──────────────┬───────────────────────┘
171
+
172
+ ┌──────────────────────────────────────┐
173
+ │ PHASE 7 · REPORT │
174
+ │ Markdown dossier saved to disk │
175
+ │ Exec summary + risk themes │
176
+ │ Timeline of key events │
177
+ │ Evidence gaps flagged │
178
+ │ Entities indexed in knowledge graph │
179
+ │ Opt-in: publish to community graph │
180
+ └──────────────────────────────────────┘
181
+ ```
182
+
183
+ ### Every finding is verified
184
+
185
+ Watson doesn't trust anything blindly. Each finding gets:
186
+
187
+ - **Source tier**: PRIMARY (court records, sanctions) → SECONDARY (news, corporate registries) → TERTIARY (Wikipedia, social media) → UNVERIFIED
188
+ - **HTTP verification**: Every URL is reachability-checked
189
+ - **Confidence scoring**: Weighted by source authority and corroboration across independent sources
190
+ - **Chain of custody**: Every finding links back to exactly where it came from
191
+
192
+ ---
193
+
194
+ ## What Makes Watson Different
195
+
196
+ ### 🧠 Cross-case memory
197
+
198
+ Watson remembers. Case #47 automatically surfaces connections from Case #12. Investigate a person who appeared in a previous company's due diligence? Watson flags it before you even ask.
199
+
200
+ ```
201
+ $ watson investigate "John Smith"
202
+ ⚠️ Prior findings: This person appeared in Case #12 (Acme Corp due diligence, 3 months ago)
203
+ — Board member at 2 companies
204
+ — Mentioned in OFAC advisory
205
+ — Already verified: email j.smith@acme.com
206
+ Continuing with fresh investigation...
207
+ ```
208
+
209
+ ### 🌐 Community knowledge graph
210
+
211
+ Watson ships with an MCP server. Opt-in to publish your findings (per-case consent, never automatic) and search across all published investigations:
212
+
213
+ ```
214
+ watson_search("John Smith") → 3 cases, 12 entities, 8 connections
215
+ watson_traverse("Acme Corp") → Board → Subsidiaries → Adverse media
216
+ watson_context("example.com") → 2 prior investigations of this domain
217
+ ```
218
+
219
+ Run your own instance or connect to a community graph. Collective intelligence without sacrificing privacy.
220
+
221
+ ### 🔌 Model and agent agnostic
222
+
223
+ Watson doesn't lock you in. Bring your own LLM — any OpenAI-compatible API works:
224
+
225
+ ```bash
226
+ # DeepSeek (free tier available)
227
+ export WATSON_API_KEY=sk-...
228
+ export WATSON_MODEL=deepseek-chat
229
+
230
+ # Anthropic Claude
231
+ export WATSON_API_KEY=sk-ant-...
232
+ export WATSON_MODEL=claude-sonnet-4
233
+ export WATSON_API_BASE=https://api.anthropic.com/v1
234
+
235
+ # Or any provider: OpenAI, Groq, Gemini, local Ollama...
236
+ ```
237
+
238
+ Watson auto-detects available agent runtimes (Hermes, Direct) and appears in onboarding. Add a new adapter in ~80 lines — it just works.
239
+
240
+ ---
241
+
242
+ ## Investigation Modes
243
+
244
+ | Mode | Duration | What it does | When to use |
245
+ |---|---|---|---|
246
+ | `background_check` | 30–60s | Classify + Surface | Quick identity/domain verification |
247
+ | `due_diligence` | 2–5 min | + Pivot + Deep | Business verification, adverse media, KYC |
248
+ | `deep_investigation` | 5–15 min | All 7 phases | Full dossier, criminal/legal, dark web |
249
+ | `twin_connection` | 3–8 min | Dedicated relational pipeline | Find hidden connections between two targets |
250
+
251
+ ---
252
+
253
+ ## Data Sources
254
+
255
+ ### Free (no keys required)
256
+ crt.sh · URLscan.io · Wayback Machine · DuckDuckGo · Wikipedia · Wikidata · ICIJ Offshore Leaks · OCCRP Aleph · BuiltWith · Instant Username Search · OpenSky Network · FlightAware
257
+
258
+ ### Optional (individually configurable)
259
+ | Service | What it does | Cost |
260
+ |---|---|---|
261
+ | OpenSanctions | Sanctions, PEP, entities | $0–50/mo |
262
+ | OpenCorporates | Global company registries | ~$50/mo |
263
+ | VirusTotal | Domain/IP reputation | $0–50/mo |
264
+ | HIBP | Breach/credential exposure | $4/mo |
265
+
266
+ All paid APIs are optional. Watson is fully functional on free sources alone.
267
+
268
+ ---
269
+
270
+ ## Project Structure
271
+
272
+ ```
273
+ watson-osint/
274
+ ├── src/watson/ # Core investigation engine
275
+ │ ├── orchestration/
276
+ │ │ ├── engine.py # 7-phase pipeline (5,500+ lines)
277
+ │ │ ├── synthesis.py # LLM report generation
278
+ │ │ ├── resolution.py # Entity resolution & dedup
279
+ │ │ └── target_profile.py # Target classification
280
+ │ ├── tools/ # 17 specialized investigation tools
281
+ │ │ ├── people.py # Person lookup, HIBP, breach data
282
+ │ │ ├── corporate.py # Company registries, sanctions
283
+ │ │ ├── websites.py # Domain, WHOIS, SSL, subdomain
284
+ │ │ ├── blockchain.py # Wallet analysis, exchange links
285
+ │ │ ├── darkweb.py # Ransomware, dark web indicators
286
+ │ │ ├── social_media.py # Social presence, account linking
287
+ │ │ └── ... # Shodan, MarineTraffic, satellite, etc.
288
+ │ ├── graph/ # Knowledge graph engine
289
+ │ └── infra/ # Caching, rate limiting, retry logic
290
+ ├── watson/ # Web app, CLI, toolkit
291
+ │ ├── web/app.py # FastAPI application (port 8777)
292
+ │ ├── cli.py # Terminal interface
293
+ │ ├── agents/ # Pluggable agent adapters
294
+ │ └── mcp_server.py # Community graph MCP server
295
+ ├── frontend/ # React UI (Vite + Tailwind)
296
+ ├── tests/ # Integration & unit tests
297
+ └── deploy.sh # One-command production deploy
298
+ ```
299
+
300
+ ---
301
+
302
+ ## License
303
+
304
+ **Apache License 2.0** — free for any use, private or commercial. Includes explicit patent protection for all contributors and users. Must retain copyright and license notices. No network-use trigger — deploy Watson internally, in the cloud, or embedded in your product without concern.
305
+
306
+ ---
307
+
308
+ <p align="center">
309
+ <em>"When you have eliminated the impossible, whatever remains, however improbable, must be the truth."</em><br>
310
+ — Sherlock Holmes
311
+ </p>
@@ -0,0 +1,103 @@
1
+ osintengine-1.0.2.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
2
+ src/watson/__init__.py,sha256=6J2dOz8E66LPWRfPv61YmAUt-b7EzJDX9-NQqWE8jeQ,304
3
+ src/watson/conversation.py,sha256=bdyQiepgCXIId3atxEPMqpUs7fCdVv-05JvFGpdfWRM,2473
4
+ src/watson/ethics.py,sha256=jhuzNYt042_0pPOpWn0fJt8UBC9PWvoI1HziEpcU2xA,7649
5
+ src/watson/exports.py,sha256=l9MS6h-i2xr9fPDNOBOf1l_9rgJ-DdSNXfxONfbuRhM,6497
6
+ src/watson/metrics.py,sha256=JuOoi-Vl7GcGrnIdnTDCFq8S9mwr6OFH4HXx6oBMp6k,4388
7
+ src/watson/search.py,sha256=cwduAg0M6K9_M3JJ7Ey2fjHqx1C_3k-Y__4OKcDhSOg,3238
8
+ src/watson/agent/__init__.py,sha256=-8TpnPAnzYTujNNvv2_2aCTLyYrS15ESWrv3wG1fm4A,3568
9
+ src/watson/agents/__init__.py,sha256=r21Rwyrp1RfDBYIrJ4YiLeUKA7aeBS6daPa6CP1n_r0,3852
10
+ src/watson/agents/protocol.py,sha256=rVuDQ094B8EfBJ5uR0VmS-VD6-IUOL0YTyR00GmA-Qk,6684
11
+ src/watson/auth/__init__.py,sha256=vkzMkTU3sI5qzZWtf14zCAa7YXMDC8NtCkfSvxfkC30,2361
12
+ src/watson/auth/store.py,sha256=TS5NM6lK3ANbzt89bjutjAeP7G6vxr3xN-x6FbmwEm4,4944
13
+ src/watson/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ src/watson/core/models.py,sha256=lA5Wald1YhoAKesWferjsO4F6dGd70MciFKi6jkRsCM,2708
15
+ src/watson/graph/__init__.py,sha256=iR8W4wT9RAs1iJdx5sbZ_3QtrzsSFxijiopgbqKrFKQ,1650
16
+ src/watson/graph/entities.py,sha256=SaTcEPOAB5ua5oaSe-l8XtOtwZ-87pPfIOeCUwU--lk,6440
17
+ src/watson/graph/graph.py,sha256=6LBNmy995qYeTXX7JhNnW4NPCWdCpxIMXD4x4mDpCLU,21709
18
+ src/watson/graph/osint_framework.py,sha256=D-LhsjUz7aPQoT2UmWJY9d_QCCqqkj16XlqI7a1-Xaw,9788
19
+ src/watson/graph/relationships.py,sha256=H3jVBv0TB-5T7XQb0wy_dgwUrca03DswHkd-7HqFq0g,4061
20
+ src/watson/graph/transforms.py,sha256=APFWnsoH17hTEdxtx8vpkCGPdYbyODTbORBXcZCS1Mw,27983
21
+ src/watson/infra/__init__.py,sha256=vgGfz0tYFGUrTXn-gNu9p0PjjUBV7UL63L_3s0Nmz0Q,793
22
+ src/watson/infra/cache.py,sha256=cVlCp-egWEC6iN8VhGLteieESqXb39i50w6miyn_lBY,6100
23
+ src/watson/infra/ratelimit.py,sha256=DhoeZUaIrC4rGpEhy2eZwZPADDEPpoJ0IVBME-_gPz8,4460
24
+ src/watson/infra/resilience.py,sha256=_rAVIF1z7aOsZDtBEEspv_xg4RXvvgv4LCrfFgIGTOE,8060
25
+ src/watson/infra/retry.py,sha256=lgUKipn4X-Ma9pU_niU0LU0ZdgpwLDrcCSYncjE6_9w,6892
26
+ src/watson/opsec/__init__.py,sha256=JbKOK-9E-BHKJW4ypbFUB_FfJGswEuP5owaBM3paD6s,11282
27
+ src/watson/orchestration/__init__.py,sha256=hHK2cot34ORuuc_kqtBUAbrimArL5FwcunUENyDjNaw,635
28
+ src/watson/orchestration/engine.py,sha256=-4ixnwKCtUeIQshtGjdt8st7KB5LsioXod8WnAdsP0o,271155
29
+ src/watson/orchestration/executor.py,sha256=DeDAMviraajibOYyIWrwlFsUcvNeQrdW8vw3pMdVPYk,3110
30
+ src/watson/orchestration/intent.py,sha256=ZpuUIURsCshccbIJZqWKnThaiv6QYYOCcme8lh8KG58,5724
31
+ src/watson/orchestration/intent_classifier.py,sha256=jJTBowrLB5IAsAinLMJiAwxIjR275pS-quBBmFZpJLM,1546
32
+ src/watson/orchestration/llm_config.py,sha256=OWwvtplbsxcGCY-pF-K2dqE5_O07rfZiDN49WmuFp-g,6051
33
+ src/watson/orchestration/resolution.py,sha256=jdjQHu4FxFePswOZF2gcn-JEI25s3UqUfAEb65jZnF4,21498
34
+ src/watson/orchestration/scraper.py,sha256=V_QBlaNoZAgzDt-j17O0D3t6I9lQL98BOJ5IWloGb6U,3304
35
+ src/watson/orchestration/synthesis.py,sha256=OuWEMRGiXB8bmaG-8ov9u--X79amhhgNp_hHSgIXu20,33213
36
+ src/watson/orchestration/target_profile.py,sha256=YHXM6Xdo0x5A5yCmWFswdCQQ1keyPMTmoC54EwWV5cE,28518
37
+ src/watson/persistence/__init__.py,sha256=xHS0Bc89mu1nzWiBi3fVPdsfSK4nskmo5H7CCE4gaHg,371
38
+ src/watson/persistence/models.py,sha256=UEtIxTNlO5og062o1hS3-8hTFAqGSR3cKolOVjHs0Mg,5540
39
+ src/watson/persistence/store.py,sha256=-m_aqeGIjlCIkwSH148kejDlE33T9kr-AvKpgO_7lsc,9762
40
+ src/watson/pipeline/__init__.py,sha256=1wc8oppAvNWtobIUQuwwoimRmAE7mf2WoVCXdLB2UYc,532
41
+ src/watson/pipeline/pre_synthesis.py,sha256=jyX8AiUsYCw114PPU2MGbGShGuRSWx59UnW9VcKsEbc,25505
42
+ src/watson/serializers/stix.py,sha256=8NxdauQ7_LKqeSdqBZLXLI0d0BbIv15RxptOQZF7qY4,15934
43
+ src/watson/tools/__init__.py,sha256=R23diRdzL4SvX6NdPdkGN-JWiqNxye0P3KD9kTzsjOM,621
44
+ src/watson/tools/base.py,sha256=zHLgqnUy32SMWUL8BoiQM4Z-IrZ9YT7B6nAAmNPPdg8,3505
45
+ src/watson/tools/blockchain.py,sha256=YCy6QLuaDkPBdMH6dfBrquPj_VaqOLUoy6ycZXj1AD0,15757
46
+ src/watson/tools/captcha.py,sha256=Q1TU56o2j-IhVS1IeYnfkMB26wn9l5GteB_q7jV6THg,9702
47
+ src/watson/tools/conflict.py,sha256=CLYS_8VJzdH4RHVl-rWEjiEJGIkCKJzciC5bs4EOAd8,4039
48
+ src/watson/tools/corporate.py,sha256=gZj-fovvtj-g0pPjAIzSRqtk5fcDi7aTNma9pFrvXWg,12103
49
+ src/watson/tools/darkweb.py,sha256=0ZlIKobdDzYXB5lSxN3UJuGILPNWBoV1gP1MPQAJ3GE,5267
50
+ src/watson/tools/geolocation.py,sha256=NdqE7NGYDFS02yN78ArUdiIy2u7LxaduAx6wzbOB0j0,13920
51
+ src/watson/tools/image_video.py,sha256=jwcukS3JE_EdAtvlixf5pQurzVUOpVlxGe5E6iwRUU0,4456
52
+ src/watson/tools/marinetraffic.py,sha256=wqB6wtU2jF7xSCasDtbSe8m5_fZlJcZuJkdj3nERObA,5441
53
+ src/watson/tools/people.py,sha256=GFCQpqsb28Gpn2NIzlk6pecwGHgmLbt4RCsI-No1rOA,21999
54
+ src/watson/tools/registry.py,sha256=EPS2AkXnjtDU9Tl54k6QfojXfKlJ8NBXIceitCmk4E8,1682
55
+ src/watson/tools/satellite.py,sha256=fnYg-gs2khgxj9-Uw5-Mdb6i8o9QUs3h2HW2ejPLLSU,4463
56
+ src/watson/tools/scraper.py,sha256=pg7ZRJtevDn8wzHli5ABBmhi-5yK2vmwmbYe7rIEVeg,31681
57
+ src/watson/tools/shodan.py,sha256=so3BXelNNuBXc5rFybRYD_dXLpeqKl0fB0spw7R4ROA,4851
58
+ src/watson/tools/social_media.py,sha256=p7BMiJ5ghEUSfH8Lx3ucL5pE26FamwJYnikh_KR4ZjE,6311
59
+ src/watson/tools/websites.py,sha256=hy3Md65LeuLMmzx0SU0P45TMggreFvJKTO14sNHF8Js,13630
60
+ src/watson/tools/wikidata.py,sha256=TrO0wV393XMLoZErpwt2rO0E31M2ZwdL9UDLMxLsB0w,14790
61
+ src/watson/utils/__init__.py,sha256=ghksXfMwMaYno0t9ZZ5dGf9R49_IfwhT5BHXiUVVU6A,25
62
+ src/watson/utils/helpers.py,sha256=FCaZYN5HGYmvJ-ruI1fgdbF9TuKMf9uFCu635Atd4DA,1603
63
+ src/watson/utils/http.py,sha256=E0t4_iDBOWC9XBlGEqsD4ypMIYUb53XoS1SffVahuPw,4416
64
+ src/watson/verification/__init__.py,sha256=9bFVXmNClRIoAUAFSSTip05urwvHP8vUfg1X3DDevH8,10093
65
+ watson/__init__.py,sha256=rRdhNn-R6zs9eITiRXMLnJ8Wo9MNORosFGMcXmwOZik,125
66
+ watson/api_keys.py,sha256=9PfxNTelsWI_2mi7er3ZJi026ou1XrB4MqJDPFi5ww8,6152
67
+ watson/browser_scraper.py,sha256=g-cPmo_2mbt3T3wV8e3Isroen5y30MIiyxyHW9N7-WE,21192
68
+ watson/cli.py,sha256=nbYOA7INPf_-dWySk_6fXDB1EvoAkkZ7W7qOW4i2mCM,35107
69
+ watson/crossref.py,sha256=ghr1x8ZzAYCwy7wWpYzkcaA4QY3U3msyzHfe_93mgNw,7549
70
+ watson/ethics.py,sha256=4Ya6XFGmxZKGtiqu0WEatn8xKCaXZeSJ7ncIp02NXTA,541
71
+ watson/graph.py,sha256=HXc6ORhOggD-TQMb8JFwkJ5UtHflZszE9OnYJP3DU3E,14341
72
+ watson/mcp_server.py,sha256=ajNFfbZ5nAjSjZI7SKIQH_Jz_9z-Xm6KJmXVa-nGxUI,21321
73
+ watson/memory.py,sha256=ahyglMd1b9TvYoX56BBUXb3JsHqhsezi4QZVasNYKc0,20351
74
+ watson/neo4j_graph.py,sha256=qa29SqNDHakLDcqiGhvrLx53_cAU54pkS9UWaZSn5IA,5026
75
+ watson/reporter.py,sha256=Jk3-Kd6J84cA5-PJpvD1Lv9SBbCbWO5NzpzP6doyHaw,22347
76
+ watson/scheduler.py,sha256=jzlF2EVA10-gXLHefHM_6FfJ0MjUUJcL69fKEdFFCCU,17489
77
+ watson/terminal.py,sha256=54p3gXKWHP95aZ9jsbfBdF9O6awitUPlFOcS_vkDvqk,13493
78
+ watson/toolkit.py,sha256=GQ_Ac09QfaEZwUtqNcBcPPg--M87eKkDh49-iwHXq1Y,16479
79
+ watson/toolkit_api.py,sha256=7kG0TXnbGXUw-Vt9DRLb6RlRAiSmPXAC1pjsUmbJlcM,14607
80
+ watson/toolkit_automation.py,sha256=rn66TbdL_SnXjgf5elhtKy9xCJWgrsmsMJ7fGBHBePQ,3719
81
+ watson/toolkit_registry.py,sha256=UB_MHKkvzQC4o6IBwDMF2QcqNLgWOcEKEflqvYW6mIQ,15797
82
+ watson/agents/__init__.py,sha256=lwxB9ngkwBbBGqxaF08C64tv8zBmTtJRzauioHtpffk,624
83
+ watson/agents/base.py,sha256=Vw1SP_Qd0GVVlS8WSV-yTxA9f2jeComVVHLToiUbZCI,2669
84
+ watson/agents/direct.py,sha256=wJilmbtvh1VsbhJ3WNVc2wZM2YbF9Tnf7QmskUu4jik,8494
85
+ watson/agents/hermes.py,sha256=uHXx8etHHYq4I2Yl2mWI-9mOoJ4D-D7Bj6gzCjSOKRg,9987
86
+ watson/agents/hermes_mcp.py,sha256=-Ty64rvpg2L8pQA3-EAZEL5bP__pMm1XbZGipWcUri4,10439
87
+ watson/opsec/__init__.py,sha256=SkMDRD78UeD22ozXJvRjm7vGSlb-l1KjrgVuGNMju4g,12306
88
+ watson/serializers/stix.py,sha256=8NxdauQ7_LKqeSdqBZLXLI0d0BbIv15RxptOQZF7qY4,15934
89
+ watson/verification/__init__.py,sha256=5WfOAvQuRBUqQ6l-boG1EUT6-kMi4t4xljGviN1P39M,10355
90
+ watson/web/__init__.py,sha256=RJzCIjIVOtLXLIfp9iQS8QyaMNxjSQmdGuloHml53-k,44
91
+ watson/web/app.py,sha256=28DjKT476nz2VXpU-xIgYCU3Mh-cfSGZWOl2AmEngu4,67723
92
+ watson/web/middleware.py,sha256=PpSQ12iqImBZ3W3u4Ee4TDacAuCPju-5RxiiSWbZ708,10649
93
+ watson/web/static/index.html,sha256=oM1uPT4c8AlJP2uyZBI_MZyXSQH9pXchlkBR34F0aY4,423
94
+ watson/web/static/assets/index-B7hPOc0z.js,sha256=SPAMleG8hur90iR7fZwvKSXKKwPms3kP9IgPK3sR7pk,309091
95
+ watson/web/static/assets/index-CJ6FP8Mp.css,sha256=TrVAUwXAT4nrHM8K0vsC9zTeOh8rwZgelIbQCmyE_Ks,56571
96
+ watson/web/static/assets/watson-logo-Dk9tawHb.png,sha256=CNYz8tdu-v5gnksDCtW2tcAYtf8KklhHyTBOtYbl56g,176077
97
+ watson/web/templates/chat.html,sha256=2e6YQM-Dr43cjNLRb3EErqnZFvMleGlgRKwEP5UrfaY,101
98
+ watson/web/templates/investigation-map.html,sha256=x4FObsxJBGPk8ONP4bBjqdI_LVib9bTvBs3WlQvQpf8,14838
99
+ osintengine-1.0.2.dist-info/METADATA,sha256=rQSs8UanauaD1d6jFXclaKkDCQvqcBBqqw5kr5ijjww,14225
100
+ osintengine-1.0.2.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
101
+ osintengine-1.0.2.dist-info/entry_points.txt,sha256=_tGLu5lXDeCnsBOJLFFp-vmbhvwu_tZbnQY1FLitDr0,49
102
+ osintengine-1.0.2.dist-info/top_level.txt,sha256=x2o6MHw3kQi3DKHWGMSjqKgJ5usknrDVy0N1qWuQOU0,11
103
+ osintengine-1.0.2.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ watson = watson.cli:main_entry
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,2 @@
1
+ src
2
+ watson
src/watson/__init__.py ADDED
@@ -0,0 +1,10 @@
1
+ """Watson — OSINT Research Agent.
2
+
3
+ "When you have eliminated the impossible,
4
+ whatever remains, however improbable,
5
+ must be the truth." — Sherlock Holmes
6
+
7
+ Autonomous open-source intelligence with 338 Bellingcat tools.
8
+ Knowledge graph, lead tracking, recursive investigation.
9
+ """
10
+ __version__ = "1.0.2"