feat(phase7): grow corpus, MCP write-tools+auth, /metrics observability
CI / typecheck + build (turbo) (push) Canceled after 0s

- content/: +5 real docs (caddy, bullmq, mcp-streamable-http, postgres-fts,
  cloudflare-525 writeup) across docs/writeups/notes. Reindexed: 9 docs, 17
  chunks, 5 revisions (was 4 docs).
- apps/mcp: add write-tools index_document/reindex_all/restore_revision (require
  x-webhook-secret) + queue_status (public). createMcpServer(authSecret?) threads
  the HTTP header; stdio keeps writes open (trusted local).
- apps/api: GET /metrics (Prometheus text: uptime + queue job gauges).
- Caddy: expose /metrics on wiki. domain -> :4020.
Verified live: /metrics 200; MCP tools/list -> 10; index_document unauth -> error,
auth -> enqueues + worker drains; typecheck green.
This commit is contained in:
asepharyana committed 2026-08-20 10:04:16 +07:00
1 parent 76ed91c468
commit 53d636af0e
12 files changed
+524 -4

No files matched your search

+5 -2
View File
@@ -32,9 +32,12 @@ const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse
return;
}
// Stateless: fresh server + transport per request.
// Stateless: fresh server + transport per request. The x-webhook-secret header
// (if present) is threaded into the server so write tools can require it.
const rawSecret = req.headers["x-webhook-secret"];
const authSecret = Array.isArray(rawSecret) ? rawSecret[0] : rawSecret;
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
const server = createMcpServer();
const server = createMcpServer(authSecret);
await server.connect(transport);
await transport.handleRequest(req, res);
});