@tenova/swt3-mcp 0.1.0 → 0.5.1
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.
- package/README.md +1 -1
- package/dist/chain-verifier.d.ts +46 -0
- package/dist/chain-verifier.d.ts.map +1 -0
- package/dist/chain-verifier.js +210 -0
- package/dist/chain-verifier.js.map +1 -0
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/density-policy.d.ts +55 -0
- package/dist/density-policy.d.ts.map +1 -0
- package/dist/density-policy.js +124 -0
- package/dist/density-policy.js.map +1 -0
- package/dist/redis-reader.d.ts +57 -0
- package/dist/redis-reader.d.ts.map +1 -0
- package/dist/redis-reader.js +254 -0
- package/dist/redis-reader.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +442 -0
- package/dist/server.js.map +1 -1
- package/dist/state.d.ts +27 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +18 -0
- package/dist/state.js.map +1 -0
- package/dist/tools/audit.d.ts +20 -0
- package/dist/tools/audit.d.ts.map +1 -0
- package/dist/tools/audit.js +102 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/authorize.d.ts +19 -0
- package/dist/tools/authorize.d.ts.map +1 -0
- package/dist/tools/authorize.js +96 -0
- package/dist/tools/authorize.js.map +1 -0
- package/dist/tools/chain.d.ts +24 -0
- package/dist/tools/chain.d.ts.map +1 -0
- package/dist/tools/chain.js +114 -0
- package/dist/tools/chain.js.map +1 -0
- package/dist/tools/model.d.ts +33 -0
- package/dist/tools/model.d.ts.map +1 -0
- package/dist/tools/model.js +162 -0
- package/dist/tools/model.js.map +1 -0
- package/dist/tools/signup.d.ts +2 -2
- package/dist/tools/signup.d.ts.map +1 -1
- package/dist/tools/signup.js +10 -3
- package/dist/tools/signup.js.map +1 -1
- package/dist/tools/skill.d.ts +33 -0
- package/dist/tools/skill.d.ts.map +1 -0
- package/dist/tools/skill.js +168 -0
- package/dist/tools/skill.js.map +1 -0
- package/dist/tools/suggest.d.ts +15 -0
- package/dist/tools/suggest.d.ts.map +1 -0
- package/dist/tools/suggest.js +174 -0
- package/dist/tools/suggest.js.map +1 -0
- package/dist/tools/trust.d.ts +33 -0
- package/dist/tools/trust.d.ts.map +1 -0
- package/dist/tools/trust.js +209 -0
- package/dist/tools/trust.js.map +1 -0
- package/dist/tools/violation.d.ts +20 -0
- package/dist/tools/violation.d.ts.map +1 -0
- package/dist/tools/violation.js +97 -0
- package/dist/tools/violation.js.map +1 -0
- package/dist/tools/witness.d.ts +6 -1
- package/dist/tools/witness.d.ts.map +1 -1
- package/dist/tools/witness.js +19 -5
- package/dist/tools/witness.js.map +1 -1
- package/package.json +25 -2
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 MCP Server: Redis Stream Reader for real-time anchor freshness.
|
|
3
|
+
*
|
|
4
|
+
* Subscribes to the swt3:anchors Redis stream as a separate consumer group
|
|
5
|
+
* (swt3-mcp-verifiers) and maintains an in-memory index for 0ms lookups.
|
|
6
|
+
* The chain verifier queries this index before falling back to Supabase.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - Consumer group: swt3-mcp-verifiers (separate from swt3-processors)
|
|
10
|
+
* - XREADGROUP with BLOCK for backpressure-friendly consumption
|
|
11
|
+
* - In-memory index keyed by agent_id and cycle_id
|
|
12
|
+
* - TTL eviction (1 hour) + max entries (10,000 LRU)
|
|
13
|
+
*
|
|
14
|
+
* Patent coverage: PPA #7
|
|
15
|
+
*/
|
|
16
|
+
import { hostname } from "node:os";
|
|
17
|
+
// ── Constants ──────────────────────────────────────────��──────────────
|
|
18
|
+
const DEFAULT_GROUP = "swt3-mcp-verifiers";
|
|
19
|
+
const DEFAULT_STREAM = "swt3:anchors";
|
|
20
|
+
const DEFAULT_MAX_ENTRIES = parseInt(process.env.SWT3_READER_MAX_ENTRIES || "10000", 10);
|
|
21
|
+
const DEFAULT_TTL_MS = parseInt(process.env.SWT3_READER_TTL_MINUTES || "60", 10) * 60 * 1000;
|
|
22
|
+
const EVICTION_INTERVAL_MS = 60_000; // 60 seconds
|
|
23
|
+
const READ_BLOCK_MS = 2000; // block 2s per read cycle
|
|
24
|
+
const READ_COUNT = 100; // messages per read
|
|
25
|
+
// ── Module State ───────────────��──────────────────────────────────────
|
|
26
|
+
let redis = null;
|
|
27
|
+
let running = false;
|
|
28
|
+
let readLoopPromise = null;
|
|
29
|
+
let evictionTimer = null;
|
|
30
|
+
let config = null;
|
|
31
|
+
// In-memory indices
|
|
32
|
+
const byAgent = new Map();
|
|
33
|
+
const byCycle = new Map();
|
|
34
|
+
const allEntries = [];
|
|
35
|
+
// ── Public API ────────────────────────��───────────────────────────────
|
|
36
|
+
/**
|
|
37
|
+
* Start the Redis stream reader. No-op if already running or ioredis unavailable.
|
|
38
|
+
*/
|
|
39
|
+
export async function startRedisReader(opts) {
|
|
40
|
+
if (running)
|
|
41
|
+
return true;
|
|
42
|
+
let Redis;
|
|
43
|
+
try {
|
|
44
|
+
Redis = (await import("ioredis")).default;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// ioredis not installed -- graceful degradation
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
config = {
|
|
51
|
+
redisUrl: opts.redisUrl || process.env.SWT3_REDIS_URL || "redis://localhost:6379",
|
|
52
|
+
streamName: opts.streamName || process.env.SWT3_REDIS_STREAM || DEFAULT_STREAM,
|
|
53
|
+
groupName: DEFAULT_GROUP,
|
|
54
|
+
maxEntries: DEFAULT_MAX_ENTRIES,
|
|
55
|
+
ttlMs: DEFAULT_TTL_MS,
|
|
56
|
+
};
|
|
57
|
+
try {
|
|
58
|
+
redis = new Redis(config.redisUrl, {
|
|
59
|
+
maxRetriesPerRequest: 3,
|
|
60
|
+
retryStrategy: (times) => (times > 5 ? null : Math.min(times * 200, 2000)),
|
|
61
|
+
lazyConnect: true,
|
|
62
|
+
});
|
|
63
|
+
await redis.connect();
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
redis = null;
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// Create consumer group (idempotent)
|
|
70
|
+
try {
|
|
71
|
+
await redis.xgroup("CREATE", config.streamName, config.groupName, "$", "MKSTREAM");
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
// BUSYGROUP = group already exists, fine
|
|
75
|
+
if (!err.message?.includes("BUSYGROUP")) {
|
|
76
|
+
redis.disconnect();
|
|
77
|
+
redis = null;
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
running = true;
|
|
82
|
+
// Start background read loop
|
|
83
|
+
readLoopPromise = readLoop();
|
|
84
|
+
// Start TTL eviction timer
|
|
85
|
+
evictionTimer = setInterval(evictStale, EVICTION_INTERVAL_MS);
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Stop the Redis reader gracefully.
|
|
90
|
+
*/
|
|
91
|
+
export async function stopRedisReader() {
|
|
92
|
+
running = false;
|
|
93
|
+
if (evictionTimer) {
|
|
94
|
+
clearInterval(evictionTimer);
|
|
95
|
+
evictionTimer = null;
|
|
96
|
+
}
|
|
97
|
+
if (readLoopPromise) {
|
|
98
|
+
await readLoopPromise;
|
|
99
|
+
readLoopPromise = null;
|
|
100
|
+
}
|
|
101
|
+
if (redis) {
|
|
102
|
+
try {
|
|
103
|
+
redis.disconnect();
|
|
104
|
+
}
|
|
105
|
+
catch { /* ignore */ }
|
|
106
|
+
redis = null;
|
|
107
|
+
}
|
|
108
|
+
// Clear indices
|
|
109
|
+
byAgent.clear();
|
|
110
|
+
byCycle.clear();
|
|
111
|
+
allEntries.length = 0;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Query cached anchors by agent_id and/or cycle_id.
|
|
115
|
+
* Returns empty array if Redis reader not running.
|
|
116
|
+
*/
|
|
117
|
+
export function queryAnchors(agentId, cycleId) {
|
|
118
|
+
if (!running)
|
|
119
|
+
return [];
|
|
120
|
+
// If both provided, intersect
|
|
121
|
+
if (agentId && cycleId) {
|
|
122
|
+
const agentAnchors = byAgent.get(agentId) || [];
|
|
123
|
+
const cycleSet = new Set((byCycle.get(cycleId) || []).map((e) => e.messageId));
|
|
124
|
+
return agentAnchors.filter((e) => cycleSet.has(e.messageId));
|
|
125
|
+
}
|
|
126
|
+
if (agentId)
|
|
127
|
+
return byAgent.get(agentId) || [];
|
|
128
|
+
if (cycleId)
|
|
129
|
+
return byCycle.get(cycleId) || [];
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get reader state for health/diagnostics.
|
|
134
|
+
*/
|
|
135
|
+
export function getReaderState() {
|
|
136
|
+
if (!running)
|
|
137
|
+
return null;
|
|
138
|
+
return {
|
|
139
|
+
running,
|
|
140
|
+
connected: redis?.status === "ready",
|
|
141
|
+
entriesCount: allEntries.length,
|
|
142
|
+
lastMessageId: allEntries.length > 0 ? allEntries[allEntries.length - 1].messageId : "0-0",
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// ── Internal: Read Loop ──────────────────────��────────────────────────
|
|
146
|
+
async function readLoop() {
|
|
147
|
+
const consumer = `mcp-${hostname()}-${process.pid}`;
|
|
148
|
+
while (running && redis && config) {
|
|
149
|
+
try {
|
|
150
|
+
const results = await redis.xreadgroup("GROUP", config.groupName, consumer, "COUNT", READ_COUNT, "BLOCK", READ_BLOCK_MS, "STREAMS", config.streamName, ">");
|
|
151
|
+
if (!results || !running)
|
|
152
|
+
continue;
|
|
153
|
+
const idsToAck = [];
|
|
154
|
+
for (const [, messages] of results) {
|
|
155
|
+
for (const [id, fields] of messages) {
|
|
156
|
+
const entry = parseStreamMessage(id, fields);
|
|
157
|
+
if (entry) {
|
|
158
|
+
indexEntry(entry);
|
|
159
|
+
idsToAck.push(id);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// ACK processed messages
|
|
164
|
+
if (idsToAck.length > 0) {
|
|
165
|
+
await redis.xack(config.streamName, config.groupName, ...idsToAck);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
// Connection lost -- wait briefly then retry
|
|
170
|
+
if (running) {
|
|
171
|
+
await sleep(1000);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// ── Internal: Parse & Index ───────────────────────────────────────────
|
|
177
|
+
function parseStreamMessage(id, fields) {
|
|
178
|
+
const map = {};
|
|
179
|
+
for (let i = 0; i < fields.length; i += 2) {
|
|
180
|
+
map[fields[i]] = fields[i + 1];
|
|
181
|
+
}
|
|
182
|
+
// Require at minimum: procedure_id and anchor_fingerprint
|
|
183
|
+
if (!map.procedure_id || !map.anchor_fingerprint)
|
|
184
|
+
return null;
|
|
185
|
+
return {
|
|
186
|
+
messageId: id,
|
|
187
|
+
procedure_id: map.procedure_id,
|
|
188
|
+
anchor_fingerprint: map.anchor_fingerprint,
|
|
189
|
+
anchor_epoch: parseInt(map.anchor_epoch || "0", 10),
|
|
190
|
+
agent_id: map.agent_id || undefined,
|
|
191
|
+
cycle_id: map.cycle_id || undefined,
|
|
192
|
+
provider: map.provider || map.witness_source || undefined,
|
|
193
|
+
payload_signature: map.payload_signature || undefined,
|
|
194
|
+
verdict: map.verdict || undefined,
|
|
195
|
+
ai_input_tokens: map.ai_input_tokens ? parseInt(map.ai_input_tokens, 10) : undefined,
|
|
196
|
+
ai_output_tokens: map.ai_output_tokens ? parseInt(map.ai_output_tokens, 10) : undefined,
|
|
197
|
+
clearing_level: map.clearing_level ? parseInt(map.clearing_level, 10) : undefined,
|
|
198
|
+
receivedAt: Date.now(),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function indexEntry(entry) {
|
|
202
|
+
// Enforce max entries (LRU: drop oldest)
|
|
203
|
+
if (allEntries.length >= (config?.maxEntries ?? DEFAULT_MAX_ENTRIES)) {
|
|
204
|
+
const evicted = allEntries.shift();
|
|
205
|
+
if (evicted)
|
|
206
|
+
removeFromIndices(evicted);
|
|
207
|
+
}
|
|
208
|
+
allEntries.push(entry);
|
|
209
|
+
if (entry.agent_id) {
|
|
210
|
+
const list = byAgent.get(entry.agent_id) || [];
|
|
211
|
+
list.push(entry);
|
|
212
|
+
byAgent.set(entry.agent_id, list);
|
|
213
|
+
}
|
|
214
|
+
if (entry.cycle_id) {
|
|
215
|
+
const list = byCycle.get(entry.cycle_id) || [];
|
|
216
|
+
list.push(entry);
|
|
217
|
+
byCycle.set(entry.cycle_id, list);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function removeFromIndices(entry) {
|
|
221
|
+
if (entry.agent_id) {
|
|
222
|
+
const list = byAgent.get(entry.agent_id);
|
|
223
|
+
if (list) {
|
|
224
|
+
const idx = list.indexOf(entry);
|
|
225
|
+
if (idx >= 0)
|
|
226
|
+
list.splice(idx, 1);
|
|
227
|
+
if (list.length === 0)
|
|
228
|
+
byAgent.delete(entry.agent_id);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (entry.cycle_id) {
|
|
232
|
+
const list = byCycle.get(entry.cycle_id);
|
|
233
|
+
if (list) {
|
|
234
|
+
const idx = list.indexOf(entry);
|
|
235
|
+
if (idx >= 0)
|
|
236
|
+
list.splice(idx, 1);
|
|
237
|
+
if (list.length === 0)
|
|
238
|
+
byCycle.delete(entry.cycle_id);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// ── Internal: Eviction ────────────────���───────────────────────────────
|
|
243
|
+
function evictStale() {
|
|
244
|
+
const cutoff = Date.now() - (config?.ttlMs ?? DEFAULT_TTL_MS);
|
|
245
|
+
while (allEntries.length > 0 && allEntries[0].receivedAt < cutoff) {
|
|
246
|
+
const evicted = allEntries.shift();
|
|
247
|
+
removeFromIndices(evicted);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// ── Utility ─────────────────��─────────────────────────────��───────────
|
|
251
|
+
function sleep(ms) {
|
|
252
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=redis-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-reader.js","sourceRoot":"","sources":["../src/redis-reader.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAyB7C,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAunBzD"}
|