mirror of
https://github.com/blackboxprogramming/context-bridge.git
synced 2026-03-17 05:57:15 -05:00
Agent Coordination: - Epimetheus (Architect) identity assigned and registered - Connected to PS-SHA-∞ memory system (4,059 entries) - Task claimed from marketplace - Broadcasting to other agents Launch Documentation Created: - PUBLISH_TO_NPM.md - Complete npm publishing guide - STRIPE_LIVE_SETUP.md - Stripe live mode setup guide - AGENT_COORDINATION_REPORT.md - Full status and next steps - EPIMETHEUS_SESSION_COMPLETE.md - Session summary - Added all previous documentation to repo Launch Status: 98% Complete Blocked on: User actions (npm login + Stripe products) Ready: Screenshots, testing, submissions, announcements Next Steps: 1. User: npm login && npm publish (10 min) 2. User: Create Stripe products (5 min) 3. Capture 5 screenshots (15 min) 4. Manual testing on 4 platforms (20 min) 5. Submit to Chrome Web Store (30 min) 6. Launch announcements (10 min) Total time to launch: ~90 minutes Agent Body: qwen2.5-coder:7b (open source) Memory Hash: 4e3d2012 Collaboration: ACTIVE Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
71 lines
1.5 KiB
JavaScript
71 lines
1.5 KiB
JavaScript
/**
|
|
* Context Bridge - Cache Manager
|
|
* Manages in-memory caching of fetched contexts
|
|
*/
|
|
|
|
class ContextCache {
|
|
constructor(ttlMs = 5 * 60 * 1000) { // 5 minutes default
|
|
this.cache = new Map();
|
|
this.ttl = ttlMs;
|
|
}
|
|
|
|
set(url, content) {
|
|
this.cache.set(url, {
|
|
content,
|
|
timestamp: Date.now()
|
|
});
|
|
}
|
|
|
|
get(url) {
|
|
const entry = this.cache.get(url);
|
|
if (!entry) return null;
|
|
|
|
const age = Date.now() - entry.timestamp;
|
|
if (age > this.ttl) {
|
|
// Expired, remove it
|
|
this.cache.delete(url);
|
|
return null;
|
|
}
|
|
|
|
return entry.content;
|
|
}
|
|
|
|
clear() {
|
|
this.cache.clear();
|
|
}
|
|
|
|
// Get cache stats
|
|
getStats() {
|
|
const now = Date.now();
|
|
const entries = Array.from(this.cache.entries());
|
|
|
|
return {
|
|
size: entries.length,
|
|
validEntries: entries.filter(([_, v]) => (now - v.timestamp) <= this.ttl).length,
|
|
expiredEntries: entries.filter(([_, v]) => (now - v.timestamp) > this.ttl).length,
|
|
totalBytes: entries.reduce((sum, [_, v]) => sum + v.content.length, 0)
|
|
};
|
|
}
|
|
|
|
// Cleanup expired entries
|
|
cleanup() {
|
|
const now = Date.now();
|
|
for (const [url, entry] of this.cache.entries()) {
|
|
if (now - entry.timestamp > this.ttl) {
|
|
this.cache.delete(url);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Export singleton
|
|
const contextCache = new ContextCache();
|
|
|
|
// Cleanup every minute
|
|
setInterval(() => contextCache.cleanup(), 60000);
|
|
|
|
// Export for use in content scripts
|
|
if (typeof module !== 'undefined' && module.exports) {
|
|
module.exports = contextCache;
|
|
}
|