Sovereign Nexus: Inject Nostr Agent & L402 Client Logic
Some checks failed
CI / validate (pull_request) Failing after 4s
Some checks failed
CI / validate (pull_request) Failing after 4s
This commit is contained in:
64
app.js
64
app.js
@@ -500,6 +500,66 @@ class AdaptiveCalibrator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ═══ NOSTR AGENT REGISTRATION ═══
|
||||||
|
class NostrAgent {
|
||||||
|
constructor(pubkey) {
|
||||||
|
this.pubkey = pubkey;
|
||||||
|
this.relays = ['wss://relay.damus.io', 'wss://nos.lol'];
|
||||||
|
}
|
||||||
|
|
||||||
|
async announce(metadata) {
|
||||||
|
console.log(`[NOSTR] Announcing agent ${this.pubkey}...`);
|
||||||
|
const event = {
|
||||||
|
kind: 0,
|
||||||
|
pubkey: this.pubkey,
|
||||||
|
created_at: Math.floor(Date.now() / 1000),
|
||||||
|
tags: [],
|
||||||
|
content: JSON.stringify(metadata),
|
||||||
|
id: 'mock_id',
|
||||||
|
sig: 'mock_sig'
|
||||||
|
};
|
||||||
|
|
||||||
|
this.relays.forEach(url => {
|
||||||
|
console.log(`[NOSTR] Publishing to ${url}: `, event);
|
||||||
|
});
|
||||||
|
|
||||||
|
const container = document.getElementById('nostr-log-content');
|
||||||
|
if (container) {
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.className = 'nostr-entry';
|
||||||
|
div.innerHTML = `<span class="nostr-pubkey">[${this.pubkey.substring(0,8)}...]</span> <span class="nostr-status">ANNOUNCED</span>`;
|
||||||
|
container.prepend(div);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ═══ L402 CLIENT LOGIC ═══
|
||||||
|
class L402Client {
|
||||||
|
async fetchWithL402(url) {
|
||||||
|
console.log(`[L402] Fetching ${url}...`);
|
||||||
|
const response = await fetch(url);
|
||||||
|
|
||||||
|
if (response.status === 402) {
|
||||||
|
const authHeader = response.headers.get('WWW-Authenticate');
|
||||||
|
console.log(`[L402] Challenge received: ${authHeader}`);
|
||||||
|
|
||||||
|
const container = document.getElementById('l402-log-content');
|
||||||
|
if (container) {
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.className = 'l402-entry';
|
||||||
|
div.innerHTML = `<span class="l402-status">CHALLENGE</span> <span class="l402-msg">Payment Required</span>`;
|
||||||
|
container.prepend(div);
|
||||||
|
}
|
||||||
|
return { status: 402, challenge: authHeader };
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.json();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let nostrAgent, l402Client;
|
||||||
|
|
||||||
let metaLayer, neuroBridge, cbr, symbolicPlanner, knowledgeGraph, blackboard, symbolicEngine, calibrator;
|
let metaLayer, neuroBridge, cbr, symbolicPlanner, knowledgeGraph, blackboard, symbolicEngine, calibrator;
|
||||||
let agentFSMs = {};
|
let agentFSMs = {};
|
||||||
|
|
||||||
@@ -511,6 +571,9 @@ function setupGOFAI() {
|
|||||||
cbr = new CaseBasedReasoner();
|
cbr = new CaseBasedReasoner();
|
||||||
neuroBridge = new NeuroSymbolicBridge(symbolicEngine, blackboard);
|
neuroBridge = new NeuroSymbolicBridge(symbolicEngine, blackboard);
|
||||||
metaLayer = new MetaReasoningLayer(symbolicPlanner, blackboard);
|
metaLayer = new MetaReasoningLayer(symbolicPlanner, blackboard);
|
||||||
|
nostrAgent = new NostrAgent("npub1...");
|
||||||
|
l402Client = new L402Client();
|
||||||
|
nostrAgent.announce({ name: "Timmy Nexus Agent", capabilities: ["GOFAI", "L402"] });
|
||||||
calibrator = new AdaptiveCalibrator('nexus-v1', { base_rate: 0.05 });
|
calibrator = new AdaptiveCalibrator('nexus-v1', { base_rate: 0.05 });
|
||||||
|
|
||||||
// Setup initial facts
|
// Setup initial facts
|
||||||
@@ -538,6 +601,7 @@ function updateGOFAI(delta, elapsed) {
|
|||||||
|
|
||||||
// Simulate calibration update
|
// Simulate calibration update
|
||||||
calibrator.update({ input_tokens: 100, complexity_score: 0.5 }, 0.06);
|
calibrator.update({ input_tokens: 100, complexity_score: 0.5 }, 0.06);
|
||||||
|
if (Math.random() > 0.95) l402Client.fetchWithL402("http://localhost:8080/api/cost-estimate");
|
||||||
}
|
}
|
||||||
|
|
||||||
metaLayer.track(startTime);
|
metaLayer.track(startTime);
|
||||||
|
|||||||
Reference in New Issue
Block a user