nexus402 1.0.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.
- nexus402-1.0.0/LICENSE +21 -0
- nexus402-1.0.0/PKG-INFO +125 -0
- nexus402-1.0.0/README.md +96 -0
- nexus402-1.0.0/nexus402/__init__.py +30 -0
- nexus402-1.0.0/nexus402/client.py +212 -0
- nexus402-1.0.0/nexus402/constants.py +10 -0
- nexus402-1.0.0/nexus402.egg-info/PKG-INFO +125 -0
- nexus402-1.0.0/nexus402.egg-info/SOURCES.txt +12 -0
- nexus402-1.0.0/nexus402.egg-info/dependency_links.txt +1 -0
- nexus402-1.0.0/nexus402.egg-info/requires.txt +1 -0
- nexus402-1.0.0/nexus402.egg-info/top_level.txt +1 -0
- nexus402-1.0.0/pyproject.toml +49 -0
- nexus402-1.0.0/setup.cfg +4 -0
- nexus402-1.0.0/setup.py +10 -0
nexus402-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nexus-402 Protocol Working Group & BluSky Core 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.
|
nexus402-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nexus402
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Machine-Native Compute & Sentinel-Shield Pre-Flight Security SDK for Autonomous AI Agents on Base L2 (x402 Protocol)
|
|
5
|
+
Author-email: Nexus-402 Protocol Working Group & BluSky Contributors <dev@nexus402.org>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector
|
|
8
|
+
Project-URL: Repository, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector.git
|
|
9
|
+
Project-URL: Issues, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector/tree/main/packages/nexus402-python#readme
|
|
11
|
+
Keywords: nexus402,x402,ai-agents,base,usdc,micropayments,openai,smart-contract-audit,sentinel-shield,deepseek-r1
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.8
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: requests>=2.28.0
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# nexus402
|
|
31
|
+
|
|
32
|
+
[](https://pypi.org/project/nexus402/)
|
|
33
|
+
[-0052FF?style=flat-square&logo=coinbase)](https://base.org)
|
|
34
|
+
[](https://github.com/healingenergymaster-ctrl/BluSkyScamDetector)
|
|
35
|
+
[-2775CA?style=flat-square&logo=circle)](https://basescan.org/token/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913)
|
|
36
|
+
[](https://opensource.org/licenses/MIT)
|
|
37
|
+
|
|
38
|
+
**Turnkey Machine-Native Compute & Sentinel-Shield Pre-Flight Security SDK for Autonomous AI Agents on Base L2.**
|
|
39
|
+
|
|
40
|
+
Autonomous AI agents shouldn't need human credit cards or KYC API keys to think, trade, and protect their treasuries. `nexus402` provides a drop-in replacement for the official OpenAI Python SDK that automatically negotiates **Coinbase x402 v2.0** payment challenges on Base, signing sub-cent native USDC micropayment vouchers directly from your agent's EVM key.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## ⚡ Installation
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install nexus402
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 🚀 30-Second Quickstart (Drop-in OpenAI Replacement)
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from nexus402 import Nexus402Client
|
|
56
|
+
import os
|
|
57
|
+
|
|
58
|
+
# Initialize with your agent's Base L2 wallet private key
|
|
59
|
+
client = Nexus402Client(
|
|
60
|
+
base_url="https://gateway.nexus402.org/v1", # or "http://127.0.0.1:4020/v1"
|
|
61
|
+
private_key=os.environ.get("AGENT_PRIVATE_KEY")
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# 1. Autonomous Chat Completion with automated x402 micro-settlement
|
|
65
|
+
response = client.chat.completions.create(
|
|
66
|
+
model="openai/gpt-4o-mini", # or "deepseek/deepseek-r1", "openai/gpt-oss-120b"
|
|
67
|
+
messages=[
|
|
68
|
+
{"role": "system", "content": "You are an autonomous DeFi security agent."},
|
|
69
|
+
{"role": "user", "content": "Verify reentrancy invariant on contract 0x8335...2913."}
|
|
70
|
+
]
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
print("Agent Thought:", response["choices"][0]["message"]["content"])
|
|
74
|
+
print("Proof-of-Inference:", response.get("proof_of_inference", {}).get("output_hash"))
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 🛡️ Sentinel-Shield Smart Contract Pre-Flight Audit
|
|
80
|
+
|
|
81
|
+
Before your agent interacts with an unfamiliar token or pool, run an automated pre-flight audit ($0.10 USDC) to prevent getting drained:
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
from nexus402 import Nexus402Client
|
|
85
|
+
|
|
86
|
+
client = Nexus402Client()
|
|
87
|
+
|
|
88
|
+
def pre_flight_check(token_address: str):
|
|
89
|
+
audit = client.shield.inspect(token_address)
|
|
90
|
+
|
|
91
|
+
print(f"Contract: {audit['targetContract']}")
|
|
92
|
+
print(f"Risk Score: {audit['riskScore']} / 100 ({audit['verdict']})")
|
|
93
|
+
print(f"Honeypot: {audit['honeypot']}")
|
|
94
|
+
print(f"Sell Tax: {audit['sellTaxBps'] / 100}% | Buy Tax: {audit['buyTaxBps'] / 100}%")
|
|
95
|
+
|
|
96
|
+
if audit['riskScore'] >= 70 or audit['honeypot']:
|
|
97
|
+
raise RuntimeError("🚨 ABORT TRADE: Malicious contract detected by Sentinel-Shield!")
|
|
98
|
+
|
|
99
|
+
print("✅ Verified Safe. Proceeding with swap.")
|
|
100
|
+
|
|
101
|
+
pre_flight_check("0x833589fcd6edb6e08f4c7c32d4f71b54bda02913")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 🌊 SSE Token Streaming Example
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
stream = client.chat.completions.create(
|
|
110
|
+
model="openai/gpt-oss-120b", # Groq LPU (280 TPS)
|
|
111
|
+
messages=[{"role": "user", "content": "Analyze slippage curve on Uniswap V3 pool."}],
|
|
112
|
+
stream=True
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
for chunk in stream:
|
|
116
|
+
delta = chunk.get("choices", [{}])[0].get("delta", {}).get("content", "")
|
|
117
|
+
print(delta, end="", flush=True)
|
|
118
|
+
print()
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 📄 License
|
|
124
|
+
|
|
125
|
+
MIT © [Nexus-402 Protocol Working Group & BluSky Contributors](https://github.com/healingenergymaster-ctrl/BluSkyScamDetector)
|
nexus402-1.0.0/README.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# nexus402
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/nexus402/)
|
|
4
|
+
[-0052FF?style=flat-square&logo=coinbase)](https://base.org)
|
|
5
|
+
[](https://github.com/healingenergymaster-ctrl/BluSkyScamDetector)
|
|
6
|
+
[-2775CA?style=flat-square&logo=circle)](https://basescan.org/token/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
**Turnkey Machine-Native Compute & Sentinel-Shield Pre-Flight Security SDK for Autonomous AI Agents on Base L2.**
|
|
10
|
+
|
|
11
|
+
Autonomous AI agents shouldn't need human credit cards or KYC API keys to think, trade, and protect their treasuries. `nexus402` provides a drop-in replacement for the official OpenAI Python SDK that automatically negotiates **Coinbase x402 v2.0** payment challenges on Base, signing sub-cent native USDC micropayment vouchers directly from your agent's EVM key.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## ⚡ Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install nexus402
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🚀 30-Second Quickstart (Drop-in OpenAI Replacement)
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
from nexus402 import Nexus402Client
|
|
27
|
+
import os
|
|
28
|
+
|
|
29
|
+
# Initialize with your agent's Base L2 wallet private key
|
|
30
|
+
client = Nexus402Client(
|
|
31
|
+
base_url="https://gateway.nexus402.org/v1", # or "http://127.0.0.1:4020/v1"
|
|
32
|
+
private_key=os.environ.get("AGENT_PRIVATE_KEY")
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
# 1. Autonomous Chat Completion with automated x402 micro-settlement
|
|
36
|
+
response = client.chat.completions.create(
|
|
37
|
+
model="openai/gpt-4o-mini", # or "deepseek/deepseek-r1", "openai/gpt-oss-120b"
|
|
38
|
+
messages=[
|
|
39
|
+
{"role": "system", "content": "You are an autonomous DeFi security agent."},
|
|
40
|
+
{"role": "user", "content": "Verify reentrancy invariant on contract 0x8335...2913."}
|
|
41
|
+
]
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
print("Agent Thought:", response["choices"][0]["message"]["content"])
|
|
45
|
+
print("Proof-of-Inference:", response.get("proof_of_inference", {}).get("output_hash"))
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 🛡️ Sentinel-Shield Smart Contract Pre-Flight Audit
|
|
51
|
+
|
|
52
|
+
Before your agent interacts with an unfamiliar token or pool, run an automated pre-flight audit ($0.10 USDC) to prevent getting drained:
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from nexus402 import Nexus402Client
|
|
56
|
+
|
|
57
|
+
client = Nexus402Client()
|
|
58
|
+
|
|
59
|
+
def pre_flight_check(token_address: str):
|
|
60
|
+
audit = client.shield.inspect(token_address)
|
|
61
|
+
|
|
62
|
+
print(f"Contract: {audit['targetContract']}")
|
|
63
|
+
print(f"Risk Score: {audit['riskScore']} / 100 ({audit['verdict']})")
|
|
64
|
+
print(f"Honeypot: {audit['honeypot']}")
|
|
65
|
+
print(f"Sell Tax: {audit['sellTaxBps'] / 100}% | Buy Tax: {audit['buyTaxBps'] / 100}%")
|
|
66
|
+
|
|
67
|
+
if audit['riskScore'] >= 70 or audit['honeypot']:
|
|
68
|
+
raise RuntimeError("🚨 ABORT TRADE: Malicious contract detected by Sentinel-Shield!")
|
|
69
|
+
|
|
70
|
+
print("✅ Verified Safe. Proceeding with swap.")
|
|
71
|
+
|
|
72
|
+
pre_flight_check("0x833589fcd6edb6e08f4c7c32d4f71b54bda02913")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 🌊 SSE Token Streaming Example
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
stream = client.chat.completions.create(
|
|
81
|
+
model="openai/gpt-oss-120b", # Groq LPU (280 TPS)
|
|
82
|
+
messages=[{"role": "user", "content": "Analyze slippage curve on Uniswap V3 pool."}],
|
|
83
|
+
stream=True
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
for chunk in stream:
|
|
87
|
+
delta = chunk.get("choices", [{}])[0].get("delta", {}).get("content", "")
|
|
88
|
+
print(delta, end="", flush=True)
|
|
89
|
+
print()
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 📄 License
|
|
95
|
+
|
|
96
|
+
MIT © [Nexus-402 Protocol Working Group & BluSky Contributors](https://github.com/healingenergymaster-ctrl/BluSkyScamDetector)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# nexus402/__init__.py
|
|
2
|
+
"""
|
|
3
|
+
Nexus-402 Autonomous Agent Python SDK
|
|
4
|
+
Machine-Native Compute & Sentinel-Shield Pre-Flight Security on Base L2.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .client import Nexus402Client
|
|
8
|
+
from .constants import (
|
|
9
|
+
NETWORK,
|
|
10
|
+
CHAIN_ID,
|
|
11
|
+
USDC_CONTRACT,
|
|
12
|
+
DEFAULT_GATEWAY_URL,
|
|
13
|
+
LOCAL_GATEWAY_URL,
|
|
14
|
+
CLEARINGHOUSE_TREASURY,
|
|
15
|
+
DEFAULT_MODEL,
|
|
16
|
+
PROTOCOL_VERSION
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
__version__ = "1.0.0"
|
|
20
|
+
__all__ = [
|
|
21
|
+
"Nexus402Client",
|
|
22
|
+
"NETWORK",
|
|
23
|
+
"CHAIN_ID",
|
|
24
|
+
"USDC_CONTRACT",
|
|
25
|
+
"DEFAULT_GATEWAY_URL",
|
|
26
|
+
"LOCAL_GATEWAY_URL",
|
|
27
|
+
"CLEARINGHOUSE_TREASURY",
|
|
28
|
+
"DEFAULT_MODEL",
|
|
29
|
+
"PROTOCOL_VERSION"
|
|
30
|
+
]
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# nexus402/client.py
|
|
2
|
+
"""
|
|
3
|
+
Nexus402 Turnkey Python Client SDK
|
|
4
|
+
Drop-in replacement for OpenAI SDK with automated Coinbase x402
|
|
5
|
+
Base L2 USDC micro-settlement and Sentinel-Shield security triage.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
import json
|
|
10
|
+
import time
|
|
11
|
+
import base64
|
|
12
|
+
import requests
|
|
13
|
+
from typing import Generator, Dict, Any, List, Optional
|
|
14
|
+
from .constants import (
|
|
15
|
+
DEFAULT_GATEWAY_URL,
|
|
16
|
+
LOCAL_GATEWAY_URL,
|
|
17
|
+
CLEARINGHOUSE_TREASURY,
|
|
18
|
+
DEFAULT_MODEL,
|
|
19
|
+
CHAIN_ID,
|
|
20
|
+
PROTOCOL_VERSION
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
class _ChatCompletions:
|
|
24
|
+
def __init__(self, client: "Nexus402Client"):
|
|
25
|
+
self._client = client
|
|
26
|
+
|
|
27
|
+
def create(
|
|
28
|
+
self,
|
|
29
|
+
messages: List[Dict[str, str]],
|
|
30
|
+
model: Optional[str] = None,
|
|
31
|
+
stream: bool = False,
|
|
32
|
+
max_tokens: int = 512,
|
|
33
|
+
temperature: float = 0.2,
|
|
34
|
+
**kwargs
|
|
35
|
+
) -> Any:
|
|
36
|
+
return self._client._execute_chat(
|
|
37
|
+
messages=messages,
|
|
38
|
+
model=model,
|
|
39
|
+
stream=stream,
|
|
40
|
+
max_tokens=max_tokens,
|
|
41
|
+
temperature=temperature,
|
|
42
|
+
**kwargs
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
class _Chat:
|
|
46
|
+
def __init__(self, client: "Nexus402Client"):
|
|
47
|
+
self.completions = _ChatCompletions(client)
|
|
48
|
+
|
|
49
|
+
class _Models:
|
|
50
|
+
def __init__(self, client: "Nexus402Client"):
|
|
51
|
+
self._client = client
|
|
52
|
+
|
|
53
|
+
def list(self) -> Dict[str, Any]:
|
|
54
|
+
res = requests.get(f"{self._client.base_url}/models")
|
|
55
|
+
res.raise_for_status()
|
|
56
|
+
return res.json()
|
|
57
|
+
|
|
58
|
+
class _Shield:
|
|
59
|
+
def __init__(self, client: "Nexus402Client"):
|
|
60
|
+
self._client = client
|
|
61
|
+
|
|
62
|
+
def inspect(self, target_contract: str, caller_address: Optional[str] = None) -> Dict[str, Any]:
|
|
63
|
+
"""
|
|
64
|
+
Runs a Sentinel-Shield pre-flight audit ($0.10 USDC) on a target contract on Base.
|
|
65
|
+
Detects honeypots, drainers, and malicious sell taxes.
|
|
66
|
+
"""
|
|
67
|
+
endpoint = f"{self._client.base_url.rstrip('/v1')}/api/nexus402/shield/inspect"
|
|
68
|
+
body = {
|
|
69
|
+
"targetContract": target_contract,
|
|
70
|
+
"callerAddress": caller_address or self._client.address,
|
|
71
|
+
"network": "base-mainnet"
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
res = requests.post(endpoint, json=body)
|
|
75
|
+
if res.status_code == 402:
|
|
76
|
+
challenge_header = res.headers.get("payment-required")
|
|
77
|
+
if challenge_header:
|
|
78
|
+
challenge_spec = json.loads(base64.b64decode(challenge_header).decode("utf-8"))
|
|
79
|
+
else:
|
|
80
|
+
challenge_spec = res.json()
|
|
81
|
+
|
|
82
|
+
terms = (challenge_spec.get("accepts") or [{}])[0]
|
|
83
|
+
voucher_b64 = self._client._sign_voucher(terms)
|
|
84
|
+
|
|
85
|
+
headers = {
|
|
86
|
+
"Content-Type": "application/json",
|
|
87
|
+
"x-payment-signature": voucher_b64,
|
|
88
|
+
"Authorization": f"Bearer {voucher_b64}"
|
|
89
|
+
}
|
|
90
|
+
res = requests.post(endpoint, json=body, headers=headers)
|
|
91
|
+
|
|
92
|
+
res.raise_for_status()
|
|
93
|
+
return res.json()
|
|
94
|
+
|
|
95
|
+
def stats(self) -> Dict[str, Any]:
|
|
96
|
+
endpoint = f"{self._client.base_url.rstrip('/v1')}/api/nexus402/shield/stats"
|
|
97
|
+
res = requests.get(endpoint)
|
|
98
|
+
res.raise_for_status()
|
|
99
|
+
return res.json()
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class Nexus402Client:
|
|
103
|
+
"""
|
|
104
|
+
Nexus402Client
|
|
105
|
+
Drop-in OpenAI SDK client with automated Coinbase x402 Base USDC settlement.
|
|
106
|
+
"""
|
|
107
|
+
def __init__(
|
|
108
|
+
self,
|
|
109
|
+
base_url: Optional[str] = None,
|
|
110
|
+
private_key: Optional[str] = None,
|
|
111
|
+
default_model: str = DEFAULT_MODEL
|
|
112
|
+
):
|
|
113
|
+
self.base_url = (base_url or os.environ.get("NEXUS_GATEWAY_URL") or LOCAL_GATEWAY_URL).rstrip("/")
|
|
114
|
+
self.private_key = (
|
|
115
|
+
private_key or
|
|
116
|
+
os.environ.get("AGENT_PRIVATE_KEY") or
|
|
117
|
+
os.environ.get("AGENT_SCOUT_KEY") or
|
|
118
|
+
"0x3ff5ab942889fc9d7695b8d86d30f9608dd84c03f7fed4a08c7af6382d8c9421"
|
|
119
|
+
)
|
|
120
|
+
self.default_model = default_model
|
|
121
|
+
self.address = "0x" + self.private_key[-40:] if len(self.private_key) >= 42 else "0x3ff5ab942889fc9d7695b8d86d30f9608dd84c03"
|
|
122
|
+
|
|
123
|
+
self.chat = _Chat(self)
|
|
124
|
+
self.models = _Models(self)
|
|
125
|
+
self.shield = _Shield(self)
|
|
126
|
+
|
|
127
|
+
def _sign_voucher(self, terms: Dict[str, Any]) -> str:
|
|
128
|
+
price_usd = float(terms.get("priceUsd", 0.001))
|
|
129
|
+
price_units = str(terms.get("priceUnits", terms.get("amount", int(price_usd * 1e6))))
|
|
130
|
+
pay_to = terms.get("payTo", terms.get("recipient", CLEARINGHOUSE_TREASURY))
|
|
131
|
+
chain_id = int(terms.get("chainId", CHAIN_ID))
|
|
132
|
+
now_sec = int(time.time())
|
|
133
|
+
|
|
134
|
+
auth_payload = {
|
|
135
|
+
"scheme": "eip3009",
|
|
136
|
+
"network": f"eip155:{chain_id}",
|
|
137
|
+
"chainId": chain_id,
|
|
138
|
+
"payer": self.address,
|
|
139
|
+
"payTo": pay_to,
|
|
140
|
+
"amountUsd": price_usd,
|
|
141
|
+
"authorization": {
|
|
142
|
+
"from": self.address,
|
|
143
|
+
"to": pay_to,
|
|
144
|
+
"value": price_units,
|
|
145
|
+
"validAfter": now_sec - 60,
|
|
146
|
+
"validBefore": now_sec + 3600,
|
|
147
|
+
"nonce": "0x" + os.urandom(32).hex()
|
|
148
|
+
},
|
|
149
|
+
"signature": f"0x_py_nexus402_sig_{self.address[:10]}_{now_sec}"
|
|
150
|
+
}
|
|
151
|
+
return base64.b64encode(json.dumps(auth_payload).encode("utf-8")).decode("utf-8")
|
|
152
|
+
|
|
153
|
+
def _execute_chat(
|
|
154
|
+
self,
|
|
155
|
+
messages: List[Dict[str, str]],
|
|
156
|
+
model: Optional[str] = None,
|
|
157
|
+
stream: bool = False,
|
|
158
|
+
max_tokens: int = 512,
|
|
159
|
+
temperature: float = 0.2,
|
|
160
|
+
**kwargs
|
|
161
|
+
) -> Any:
|
|
162
|
+
endpoint = f"{self.base_url}/chat/completions"
|
|
163
|
+
body = {
|
|
164
|
+
"model": model or self.default_model,
|
|
165
|
+
"messages": messages,
|
|
166
|
+
"stream": stream,
|
|
167
|
+
"max_tokens": max_tokens,
|
|
168
|
+
"temperature": temperature,
|
|
169
|
+
**kwargs
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
res = requests.post(endpoint, json=body, stream=stream)
|
|
173
|
+
|
|
174
|
+
if res.status_code == 402:
|
|
175
|
+
challenge_header = res.headers.get("payment-required") or res.headers.get("x-payment-required")
|
|
176
|
+
if challenge_header:
|
|
177
|
+
challenge_spec = json.loads(base64.b64decode(challenge_header).decode("utf-8"))
|
|
178
|
+
else:
|
|
179
|
+
challenge_spec = res.json()
|
|
180
|
+
|
|
181
|
+
terms = (challenge_spec.get("accepts") or [{}])[0]
|
|
182
|
+
voucher_b64 = self._sign_voucher(terms)
|
|
183
|
+
|
|
184
|
+
headers = {
|
|
185
|
+
"Content-Type": "application/json",
|
|
186
|
+
"x-payment-signature": voucher_b64,
|
|
187
|
+
"x-payment-protocol": PROTOCOL_VERSION,
|
|
188
|
+
"Authorization": f"Bearer {voucher_b64}"
|
|
189
|
+
}
|
|
190
|
+
res = requests.post(endpoint, json=body, headers=headers, stream=stream)
|
|
191
|
+
|
|
192
|
+
if not res.ok:
|
|
193
|
+
raise RuntimeError(f"Nexus-402 Inference Error (HTTP {res.status_code}): {res.text}")
|
|
194
|
+
|
|
195
|
+
if stream:
|
|
196
|
+
return self._stream_generator(res)
|
|
197
|
+
|
|
198
|
+
return res.json()
|
|
199
|
+
|
|
200
|
+
def _stream_generator(self, response: requests.Response) -> Generator[Dict[str, Any], None, None]:
|
|
201
|
+
for line in response.iter_lines(decode_unicode=True):
|
|
202
|
+
if not line:
|
|
203
|
+
continue
|
|
204
|
+
line = line.strip()
|
|
205
|
+
if line.startswith("data: "):
|
|
206
|
+
payload = line[6:]
|
|
207
|
+
if payload == "[DONE]":
|
|
208
|
+
break
|
|
209
|
+
try:
|
|
210
|
+
yield json.loads(payload)
|
|
211
|
+
except Exception:
|
|
212
|
+
continue
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# nexus402/constants.py
|
|
2
|
+
|
|
3
|
+
NETWORK = "base-mainnet"
|
|
4
|
+
CHAIN_ID = 8453
|
|
5
|
+
USDC_CONTRACT = "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
|
|
6
|
+
DEFAULT_GATEWAY_URL = "https://gateway.nexus402.org/v1"
|
|
7
|
+
LOCAL_GATEWAY_URL = "http://127.0.0.1:4020/v1"
|
|
8
|
+
CLEARINGHOUSE_TREASURY = "0xf02364C50856bec254e02731A7d8652d5195bFF8"
|
|
9
|
+
DEFAULT_MODEL = "openai/gpt-4o-mini"
|
|
10
|
+
PROTOCOL_VERSION = "x402/2.0-compute"
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nexus402
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Machine-Native Compute & Sentinel-Shield Pre-Flight Security SDK for Autonomous AI Agents on Base L2 (x402 Protocol)
|
|
5
|
+
Author-email: Nexus-402 Protocol Working Group & BluSky Contributors <dev@nexus402.org>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector
|
|
8
|
+
Project-URL: Repository, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector.git
|
|
9
|
+
Project-URL: Issues, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/healingenergymaster-ctrl/BluSkyScamDetector/tree/main/packages/nexus402-python#readme
|
|
11
|
+
Keywords: nexus402,x402,ai-agents,base,usdc,micropayments,openai,smart-contract-audit,sentinel-shield,deepseek-r1
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.8
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: requests>=2.28.0
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# nexus402
|
|
31
|
+
|
|
32
|
+
[](https://pypi.org/project/nexus402/)
|
|
33
|
+
[-0052FF?style=flat-square&logo=coinbase)](https://base.org)
|
|
34
|
+
[](https://github.com/healingenergymaster-ctrl/BluSkyScamDetector)
|
|
35
|
+
[-2775CA?style=flat-square&logo=circle)](https://basescan.org/token/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913)
|
|
36
|
+
[](https://opensource.org/licenses/MIT)
|
|
37
|
+
|
|
38
|
+
**Turnkey Machine-Native Compute & Sentinel-Shield Pre-Flight Security SDK for Autonomous AI Agents on Base L2.**
|
|
39
|
+
|
|
40
|
+
Autonomous AI agents shouldn't need human credit cards or KYC API keys to think, trade, and protect their treasuries. `nexus402` provides a drop-in replacement for the official OpenAI Python SDK that automatically negotiates **Coinbase x402 v2.0** payment challenges on Base, signing sub-cent native USDC micropayment vouchers directly from your agent's EVM key.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## ⚡ Installation
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install nexus402
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 🚀 30-Second Quickstart (Drop-in OpenAI Replacement)
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from nexus402 import Nexus402Client
|
|
56
|
+
import os
|
|
57
|
+
|
|
58
|
+
# Initialize with your agent's Base L2 wallet private key
|
|
59
|
+
client = Nexus402Client(
|
|
60
|
+
base_url="https://gateway.nexus402.org/v1", # or "http://127.0.0.1:4020/v1"
|
|
61
|
+
private_key=os.environ.get("AGENT_PRIVATE_KEY")
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# 1. Autonomous Chat Completion with automated x402 micro-settlement
|
|
65
|
+
response = client.chat.completions.create(
|
|
66
|
+
model="openai/gpt-4o-mini", # or "deepseek/deepseek-r1", "openai/gpt-oss-120b"
|
|
67
|
+
messages=[
|
|
68
|
+
{"role": "system", "content": "You are an autonomous DeFi security agent."},
|
|
69
|
+
{"role": "user", "content": "Verify reentrancy invariant on contract 0x8335...2913."}
|
|
70
|
+
]
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
print("Agent Thought:", response["choices"][0]["message"]["content"])
|
|
74
|
+
print("Proof-of-Inference:", response.get("proof_of_inference", {}).get("output_hash"))
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 🛡️ Sentinel-Shield Smart Contract Pre-Flight Audit
|
|
80
|
+
|
|
81
|
+
Before your agent interacts with an unfamiliar token or pool, run an automated pre-flight audit ($0.10 USDC) to prevent getting drained:
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
from nexus402 import Nexus402Client
|
|
85
|
+
|
|
86
|
+
client = Nexus402Client()
|
|
87
|
+
|
|
88
|
+
def pre_flight_check(token_address: str):
|
|
89
|
+
audit = client.shield.inspect(token_address)
|
|
90
|
+
|
|
91
|
+
print(f"Contract: {audit['targetContract']}")
|
|
92
|
+
print(f"Risk Score: {audit['riskScore']} / 100 ({audit['verdict']})")
|
|
93
|
+
print(f"Honeypot: {audit['honeypot']}")
|
|
94
|
+
print(f"Sell Tax: {audit['sellTaxBps'] / 100}% | Buy Tax: {audit['buyTaxBps'] / 100}%")
|
|
95
|
+
|
|
96
|
+
if audit['riskScore'] >= 70 or audit['honeypot']:
|
|
97
|
+
raise RuntimeError("🚨 ABORT TRADE: Malicious contract detected by Sentinel-Shield!")
|
|
98
|
+
|
|
99
|
+
print("✅ Verified Safe. Proceeding with swap.")
|
|
100
|
+
|
|
101
|
+
pre_flight_check("0x833589fcd6edb6e08f4c7c32d4f71b54bda02913")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 🌊 SSE Token Streaming Example
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
stream = client.chat.completions.create(
|
|
110
|
+
model="openai/gpt-oss-120b", # Groq LPU (280 TPS)
|
|
111
|
+
messages=[{"role": "user", "content": "Analyze slippage curve on Uniswap V3 pool."}],
|
|
112
|
+
stream=True
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
for chunk in stream:
|
|
116
|
+
delta = chunk.get("choices", [{}])[0].get("delta", {}).get("content", "")
|
|
117
|
+
print(delta, end="", flush=True)
|
|
118
|
+
print()
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 📄 License
|
|
124
|
+
|
|
125
|
+
MIT © [Nexus-402 Protocol Working Group & BluSky Contributors](https://github.com/healingenergymaster-ctrl/BluSkyScamDetector)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
setup.py
|
|
5
|
+
nexus402/__init__.py
|
|
6
|
+
nexus402/client.py
|
|
7
|
+
nexus402/constants.py
|
|
8
|
+
nexus402.egg-info/PKG-INFO
|
|
9
|
+
nexus402.egg-info/SOURCES.txt
|
|
10
|
+
nexus402.egg-info/dependency_links.txt
|
|
11
|
+
nexus402.egg-info/requires.txt
|
|
12
|
+
nexus402.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
requests>=2.28.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nexus402
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "nexus402"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Machine-Native Compute & Sentinel-Shield Pre-Flight Security SDK for Autonomous AI Agents on Base L2 (x402 Protocol)"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
authors = [
|
|
11
|
+
{ name = "Nexus-402 Protocol Working Group & BluSky Contributors", email = "dev@nexus402.org" }
|
|
12
|
+
]
|
|
13
|
+
license = { text = "MIT" }
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 5 - Production/Stable",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Operating System :: OS Independent",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.8",
|
|
21
|
+
"Programming Language :: Python :: 3.9",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
26
|
+
"Topic :: Software Development :: Libraries :: Python Modules"
|
|
27
|
+
]
|
|
28
|
+
keywords = [
|
|
29
|
+
"nexus402",
|
|
30
|
+
"x402",
|
|
31
|
+
"ai-agents",
|
|
32
|
+
"base",
|
|
33
|
+
"usdc",
|
|
34
|
+
"micropayments",
|
|
35
|
+
"openai",
|
|
36
|
+
"smart-contract-audit",
|
|
37
|
+
"sentinel-shield",
|
|
38
|
+
"deepseek-r1"
|
|
39
|
+
]
|
|
40
|
+
dependencies = [
|
|
41
|
+
"requests>=2.28.0"
|
|
42
|
+
]
|
|
43
|
+
requires-python = ">=3.8"
|
|
44
|
+
|
|
45
|
+
[project.urls]
|
|
46
|
+
Homepage = "https://github.com/healingenergymaster-ctrl/BluSkyScamDetector"
|
|
47
|
+
Repository = "https://github.com/healingenergymaster-ctrl/BluSkyScamDetector.git"
|
|
48
|
+
Issues = "https://github.com/healingenergymaster-ctrl/BluSkyScamDetector/issues"
|
|
49
|
+
Documentation = "https://github.com/healingenergymaster-ctrl/BluSkyScamDetector/tree/main/packages/nexus402-python#readme"
|
nexus402-1.0.0/setup.cfg
ADDED