Download apps/vis/server/src/routes/blobs.ts from SaylorTwift/kimi-code: direct link, hf CLI and curl.
- Browser
- Download file 1.55 kB
-
https://huggingface.co/SaylorTwift/kimi-code/resolve/main/apps/vis/server/src/routes/blobs.ts
- Command line
-
hf download hf://SaylorTwift/kimi-code/apps/vis/server/src/routes/blobs.ts
-
curl -L -o blobs.ts https://huggingface.co/SaylorTwift/kimi-code/resolve/main/apps/vis/server/src/routes/blobs.ts
1.55 kB
| import { Hono } from 'hono'; | |
| import { join } from 'node:path'; | |
| import { readFile } from 'node:fs/promises'; | |
| import { KIMI_CODE_HOME } from '../config'; | |
| import { isSafeAgentId, readSessionDetail } from '../lib/session-store'; | |
| import { isSafeBlobHash } from '../lib/blob-resolver'; | |
| export function blobsRoute(home: string = KIMI_CODE_HOME): Hono { | |
| const r = new Hono(); | |
| r.get('/:id/blobs/:hash', async (c) => { | |
| const id = c.req.param('id'); | |
| const agentId = c.req.query('agent') ?? 'main'; | |
| const hash = c.req.param('hash'); | |
| if (!isSafeAgentId(agentId)) { | |
| return c.json({ error: 'invalid agent id', code: 'BAD_REQUEST' }, 400); | |
| } | |
| if (!isSafeBlobHash(hash)) { | |
| return c.json({ error: 'invalid blob hash', code: 'BAD_REQUEST' }, 400); | |
| } | |
| const detail = await readSessionDetail(home, id); | |
| if (!detail) { | |
| return c.json({ error: 'session not found', code: 'NOT_FOUND' }, 404); | |
| } | |
| const agent = detail.agents.find((a) => a.agentId === agentId); | |
| if (!agent) { | |
| return c.json( | |
| { error: `agent "${agentId}" not found`, code: 'NOT_FOUND' }, | |
| 404, | |
| ); | |
| } | |
| const blobPath = join(agent.homedir, 'blobs', hash); | |
| let content: Buffer; | |
| try { | |
| content = await readFile(blobPath); | |
| } catch { | |
| return c.json({ error: 'blob not found', code: 'NOT_FOUND' }, 404); | |
| } | |
| const mimeType = c.req.query('mime') ?? 'application/octet-stream'; | |
| return new Response(content, { | |
| headers: { 'content-type': mimeType }, | |
| }); | |
| }); | |
| return r; | |
| } | |