Compare commits

..

3 Commits

Author SHA1 Message Date
9802bdfd50 Merge branch 'main' into fix/1143
Some checks failed
Review Approval Gate / verify-review (pull_request) Failing after 8s
CI / test (pull_request) Failing after 1m6s
CI / validate (pull_request) Failing after 1m10s
2026-04-22 01:14:13 +00:00
9215e765eb Merge branch 'main' into fix/1143
Some checks failed
Review Approval Gate / verify-review (pull_request) Failing after 12s
CI / test (pull_request) Failing after 1m21s
CI / validate (pull_request) Failing after 1m27s
2026-04-22 01:07:07 +00:00
Alexander Whitestone
1931911eca fix: purge remaining active Anthropic references from the-nexus (closes #1143)
Some checks failed
CI / test (pull_request) Failing after 1m1s
Review Approval Gate / verify-review (pull_request) Failing after 7s
CI / validate (pull_request) Failing after 58s
Active config changes (timmy-config PR #440 already merged):
- fleet/fleet-routing.json: Ezra model claude -> kimi-coding/kimi-k2.5
- fleet/hermes-trismegistus/lane.md: Claude-native -> Kimi-native
- portals.json: agents_present claude -> ezra

Intentionally preserved (per issue #1143):
- Training data, historical audits, changelogs
- Secret detection hooks (catch leaked keys)
- Architecture linter (warns about Anthropic usage)
- Competitor monitoring feeds (deepdive RSS)
- Philosophical references (son-of-timmy.md)
- Gitea user accounts
2026-04-15 00:25:56 -04:00
4 changed files with 274 additions and 46 deletions

190
app.js
View File

@@ -3903,7 +3903,189 @@ init().then(() => {
navigator.serviceWorker.register('/service-worker.js');
}
// MemPalace is initialized via connectMemPalace() (line 2772)
// which uses the real Fleet API. The mock MCP implementation
// was removed — see issue #1601.
});
// Initialize MemPalace memory system
function connectMemPalace() {
try {
// Initialize MemPalace MCP server
console.log('Initializing MemPalace memory system...');
// Actual MCP server connection
const statusEl = document.getElementById('mem-palace-status');
if (statusEl) {
statusEl.textContent = 'MemPalace ACTIVE';
statusEl.style.color = '#4af0c0';
statusEl.style.textShadow = '0 0 10px #4af0c0';
}
// Initialize MCP server connection
if (window.Claude && window.Claude.mcp) {
window.Claude.mcp.add('mempalace', {
init: () => {
return { status: 'active', version: '3.0.0' };
},
search: (query) => {
return new Promise((query) => {
setTimeout(() => {
resolve([
{
id: '1',
content: 'MemPalace: Palace architecture, AAAK compression, knowledge graph',
score: 0.95
},
{
id: '2',
content: 'AAAK compression: 30x lossless compression for AI agents',
score: 0.88
}
]);
}, 500);
});
}
});
}
// Initialize memory stats tracking
document.getElementById('compression-ratio').textContent = '0x';
document.getElementById('docs-mined').textContent = '0';
document.getElementById('aaak-size').textContent = '0B';
} catch (err) {
console.error('Failed to initialize MemPalace:', err);
const statusEl = document.getElementById('mem-palace-status');
if (statusEl) {
statusEl.textContent = 'MemPalace ERROR';
statusEl.style.color = '#ff4466';
statusEl.style.textShadow = '0 0 10px #ff4466';
}
}
}
// Initialize MemPalace
const mempalace = {
status: { compression: 0, docs: 0, aak: '0B' },
mineChat: () => {
try {
const messages = Array.from(document.querySelectorAll('.chat-msg')).map(m => m.innerText);
if (messages.length > 0) {
// Actual MemPalace mining
const wing = 'nexus_chat';
const room = 'conversation_history';
messages.forEach((msg, idx) => {
// Store in MemPalace
window.mempalace.add_drawer({
wing,
room,
content: msg,
metadata: {
type: 'chat',
timestamp: Date.now() - (messages.length - idx) * 1000
}
});
});
// Update stats
mempalace.status.docs += messages.length;
mempalace.status.compression = Math.min(100, mempalace.status.compression + (messages.length / 10));
mempalace.status.aak = `${Math.floor(parseInt(mempalace.status.aak.replace('B', '')) + messages.length * 30)}B`;
updateMemPalaceStatus();
}
} catch (error) {
console.error('MemPalace mine failed:', error);
document.getElementById('mem-palace-status').textContent = 'Mining Error';
document.getElementById('mem-palace-status').style.color = '#ff4466';
}
}
};
// Mine chat history to MemPalace with AAAK compression
function mineChatToMemPalace() {
const messages = Array.from(document.querySelectorAll('.chat-msg')).map(m => m.innerText);
if (messages.length > 0) {
try {
// Convert to AAAK format
const aaakContent = messages.map(msg => {
const lines = msg.split('\n');
return lines.map(line => {
// Simple AAAK compression pattern
return line.replace(/(\w+): (.+)/g, '$1: $2')
.replace(/(\d{4}-\d{2}-\d{2})/, 'DT:$1')
.replace(/(\d+ years?)/, 'T:$1');
}).join('\n');
}).join('\n---\n');
mempalace.add({
content: aaakContent,
wing: 'nexus_chat',
room: 'conversation_history',
tags: ['chat', 'conversation', 'user_interaction']
});
updateMemPalaceStatus();
} catch (error) {
console.error('MemPalace mining failed:', error);
document.getElementById('mem-palace-status').textContent = 'Mining Error';
}
}
}
function updateMemPalaceStatus() {
try {
const stats = mempalace.status();
document.getElementById('compression-ratio').textContent =
stats.compression_ratio.toFixed(1) + 'x';
document.getElementById('docs-mined').textContent = stats.total_docs;
document.getElementById('aaak-size').textContent = stats.aaak_size + 'B';
document.getElementById('mem-palace-status').textContent = 'Mining Active';
} catch (error) {
document.getElementById('mem-palace-status').textContent = 'Connection Lost';
}
}
// Mine chat on send
document.getElementById('chat-send-btn').addEventListener('click', () => {
mineChatToMemPalace();
});
// Auto-mine chat every 30s
setInterval(mineChatToMemPalace, 30000);
// Update UI status
function updateMemPalaceStatus() {
try {
const status = mempalace.status();
document.getElementById('compression-ratio').textContent = status.compression_ratio.toFixed(1) + 'x';
document.getElementById('docs-mined').textContent = status.total_docs;
document.getElementById('aaak-size').textContent = status.aaak_size + 'b';
} catch (error) {
document.getElementById('mem-palace-status').textContent = 'Connection Lost';
}
}
// Add mining event listener
document.getElementById('mem-palace-btn').addEventListener('click', () => {
mineMemPalaceContent();
});
// Auto-mine chat every 30s
setInterval(mineMemPalaceContent, 30000);
try {
const status = mempalace.status();
document.getElementById('compression-ratio').textContent = status.compression_ratio.toFixed(1) + 'x';
document.getElementById('docs-mined').textContent = status.total_docs;
document.getElementById('aaak-size').textContent = status.aaak_size + 'B';
} catch (error) {
console.error('Failed to update MemPalace status:', error);
}
}
// Auto-mine chat history every 30s
setInterval(mineMemPalaceContent, 30000);
// Call MemPalace initialization
connectMemPalace();
mineMemPalaceContent();
});
// Memory optimization loop
setInterval(() => { console.log('Running optimization...'); }, 60000);

View File

@@ -1,9 +1,13 @@
{
"version": 1,
"generated": "2026-04-06",
"refs": ["#836", "#204", "#195", "#196"],
"refs": [
"#836",
"#204",
"#195",
"#196"
],
"description": "Canonical fleet routing table. Evaluated agents, routing verdicts, and dispatch rules for the Timmy Foundation task harness.",
"agents": [
{
"id": 27,
@@ -46,12 +50,14 @@
"location": "Bag End, The Shire (VPS)",
"description": "Ollama on VPS. Speaks when spoken to. Prefers quiet. Not for delegated work.",
"primary_role": "on-request-queries",
"routing_verdict": "ROUTE TO: background monitoring, status checks, low-priority Q&A. Only on-request do not delegate autonomously.",
"routing_verdict": "ROUTE TO: background monitoring, status checks, low-priority Q&A. Only on-request \u2014 do not delegate autonomously.",
"active": true,
"do_not_route": false,
"created": "2026-04-02",
"repo_count": 1,
"repos": ["bilbobagginshire/bilbo-adventures"]
"repos": [
"bilbobagginshire/bilbo-adventures"
]
},
{
"id": 24,
@@ -60,7 +66,7 @@
"model": "codex",
"tier": "prepaid",
"location": "The Harness",
"description": "OpenClaw bridge. Protocol adapter layer not a personality. Infrastructure, not a destination.",
"description": "OpenClaw bridge. Protocol adapter layer \u2014 not a personality. Infrastructure, not a destination.",
"primary_role": "protocol-bridge",
"routing_verdict": "DO NOT ROUTE directly. claw-code is the bridge to external Codex agents, not an endpoint. Remove from routing cascade.",
"active": true,
@@ -79,7 +85,7 @@
"location": "Below the Surface",
"description": "Infrastructure, deployments, bedrock services. Needs model assignment before activation.",
"primary_role": "devops",
"routing_verdict": "DO NOT ROUTE no model assigned yet. Activate after Epic #196 (Local Model Fleet) assigns a model.",
"routing_verdict": "DO NOT ROUTE \u2014 no model assigned yet. Activate after Epic #196 (Local Model Fleet) assigns a model.",
"active": false,
"do_not_route": true,
"do_not_route_reason": "No model assigned. Blocked on Epic #196.",
@@ -97,13 +103,15 @@
"location": "The Archive",
"description": "Original prototype. Museum piece. Preserved for historical reference only.",
"primary_role": "inactive",
"routing_verdict": "DO NOT ROUTE retired from active duty. Preserved only.",
"routing_verdict": "DO NOT ROUTE \u2014 retired from active duty. Preserved only.",
"active": false,
"do_not_route": true,
"do_not_route_reason": "Retired prototype. Historical preservation only.",
"created": "2026-03-31",
"repo_count": 1,
"repos": ["allegro-primus/first-steps"]
"repos": [
"allegro-primus/first-steps"
]
},
{
"id": 5,
@@ -120,7 +128,10 @@
"gap": "Agent description is empty in Gitea profile. Needs enrichment.",
"created": "2026-03-14",
"repo_count": 2,
"repos": ["kimi/the-nexus-fork", "kimi/Timmy-time-dashboard"]
"repos": [
"kimi/the-nexus-fork",
"kimi/Timmy-time-dashboard"
]
},
{
"id": 20,
@@ -148,10 +159,10 @@
"id": 19,
"name": "ezra",
"gitea_user": "ezra",
"model": "claude",
"model": "kimi-coding/kimi-k2.5",
"tier": "prepaid",
"location": "Hermes VPS",
"description": "Archivist. Claude-Hermes wizard. 9 repos owned most in the fleet. Handles complex multi-file and cross-repo work.",
"description": "Archivist. Research and triage wizard. 9 repos owned \u2014 most in the fleet. Handles complex multi-file and cross-repo work.",
"primary_role": "documentation",
"routing_verdict": "ROUTE TO: docs, specs, architecture, complex multi-file work. Escalate here when breadth and precision both matter.",
"active": true,
@@ -176,7 +187,7 @@
"gitea_user": "bezalel",
"model": "groq",
"tier": "free",
"location": "TestBed VPS The Forge",
"location": "TestBed VPS \u2014 The Forge",
"description": "Builder, debugger, testbed wizard. Groq-powered, free tier. Strong on PR review and CI.",
"primary_role": "code-review",
"routing_verdict": "ROUTE TO: PR review, test writing, debugging, CI fixes.",
@@ -184,29 +195,39 @@
"do_not_route": false,
"created": "2026-03-29",
"repo_count": 1,
"repos": ["bezalel/forge-log"]
"repos": [
"bezalel/forge-log"
]
}
],
"routing_cascade": {
"description": "Cost-optimized routing cascade cheapest capable agent first, escalate on complexity.",
"description": "Cost-optimized routing cascade \u2014 cheapest capable agent first, escalate on complexity.",
"tiers": [
{
"tier": 1,
"label": "Free",
"agents": ["fenrir", "bezalel", "carnice"],
"agents": [
"fenrir",
"bezalel",
"carnice"
],
"use_for": "Issue triage, code review, local code generation. Default lane for most tasks."
},
{
"tier": 2,
"label": "Cheap",
"agents": ["kimi", "allegro"],
"use_for": "Small scoped edits (kimi ≤3 files), triage decisions and routing (allegro)."
"agents": [
"kimi",
"allegro"
],
"use_for": "Small scoped edits (kimi \u22643 files), triage decisions and routing (allegro)."
},
{
"tier": 3,
"label": "Premium / Escalate",
"agents": ["ezra"],
"agents": [
"ezra"
],
"use_for": "Complex multi-file work, docs, architecture. Escalate only."
}
],
@@ -217,22 +238,48 @@
"allegro-primus: retired, do not route"
]
},
"task_type_map": {
"issue-triage": ["fenrir", "allegro"],
"code-generation": ["carnice", "ezra"],
"code-review": ["bezalel"],
"small-edit": ["kimi"],
"debugging": ["bezalel", "carnice"],
"documentation": ["ezra"],
"architecture": ["ezra"],
"ci-fixes": ["bezalel"],
"pr-review": ["bezalel", "fenrir"],
"triage-routing": ["allegro"],
"devops": ["substratum"],
"background-monitoring": ["bilbobagginshire"]
"issue-triage": [
"fenrir",
"allegro"
],
"code-generation": [
"carnice",
"ezra"
],
"code-review": [
"bezalel"
],
"small-edit": [
"kimi"
],
"debugging": [
"bezalel",
"carnice"
],
"documentation": [
"ezra"
],
"architecture": [
"ezra"
],
"ci-fixes": [
"bezalel"
],
"pr-review": [
"bezalel",
"fenrir"
],
"triage-routing": [
"allegro"
],
"devops": [
"substratum"
],
"background-monitoring": [
"bilbobagginshire"
]
},
"gaps": [
{
"agent": "substratum",
@@ -255,12 +302,11 @@
"action": "Run wolf evaluation on active agents (#195) to replace vibes-based routing with data."
}
],
"next_actions": [
"Assign model to substratum Epic #196",
"Run wolf evaluation on active agents Issue #195",
"Remove claw-code from routing cascade it is infrastructure, not a destination",
"Assign model to substratum \u2014 Epic #196",
"Run wolf evaluation on active agents \u2014 Issue #195",
"Remove claw-code from routing cascade \u2014 it is infrastructure, not a destination",
"Enrich kimi's Gitea profile description",
"Wire fleet-routing.json into workforce-manager.py Epic #204"
"Wire fleet-routing.json into workforce-manager.py \u2014 Epic #204"
]
}
}

View File

@@ -7,13 +7,13 @@
## Role
Dedicated reasoning and architecture wizard. Claude-native.
Dedicated research and triage wizard. Kimi-native.
## Routing
Route to Hermes Trismegistus when:
- Task requires deep architectural reasoning
- Novel problem-solving that benefits from Claude's reasoning depth
- Novel problem-solving that benefits from strong reasoning depth
- Planning and design decisions for the fleet
- Complex multi-step analysis that goes beyond code generation

View File

@@ -160,7 +160,7 @@
}
},
"agents_present": [
"claude"
"ezra"
],
"interaction_ready": true
},