DeepSeek-Compatible Middleware Interface: A technical exploration project in Go, focusing on high-concurrency protocol adaptation. It serves as a reference implementation for converting diverse web protocols into standardized formats.
220 matches across 7 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | API.md | 256 | Authorization: Bearer your-api-key |
| HIGH | API.md | 498 | x-api-key: your-api-key |
| HIGH | API.md | 1287 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1300 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1313 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1326 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1338 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1351 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1379 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1395 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.md | 1411 | -H "x-api-key: your-api-key" \ |
| HIGH | API.md | 1425 | -H "x-api-key: your-api-key" \ |
| HIGH | API.md | 1448 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 255 | Authorization: Bearer your-api-key |
| HIGH | API.en.md | 493 | x-api-key: your-api-key |
| HIGH | API.en.md | 1279 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1292 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1305 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1318 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1330 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1343 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1371 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1387 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | API.en.md | 1403 | -H "x-api-key: your-api-key" \ |
| HIGH | API.en.md | 1417 | -H "x-api-key: your-api-key" \ |
| HIGH | API.en.md | 1440 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | config.example.json | 5 | "your-api-key-1", |
| HIGH | config.example.json | 6 | "your-api-key-2" |
| HIGH | config.example.json | 10 | "key": "your-api-key-1", |
| HIGH | config.example.json | 15 | "key": "your-api-key-2", |
| HIGH | docs/DEPLOY.md | 617 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | docs/DEPLOY.en.md | 607 | -H "Authorization: Bearer your-api-key" \ |
| HIGH | webui/src/utils/batchImportTemplates.js | 14 | keys: ['your-api-key'], |
| HIGH | webui/src/utils/batchImportTemplates.js | 26 | keys: ['your-api-key'], |
| HIGH | webui/src/components/BatchImport.jsx | 156 | placeholder={'{\n "keys": ["your-api-key"],\n "accounts": [\n {"email": "...", "password": |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | internal/sse/parser_edge_test.go | 5 | // ─── ParseDeepSeekSSELine edge cases ───────────────────────────────── |
| MEDIUM | internal/sse/parser_edge_test.go | 45 | // ─── shouldSkipPath edge cases ─────────────────────────────────────── |
| MEDIUM | internal/sse/parser_edge_test.go | 101 | // ─── ParseSSEChunkForContent edge cases ────────────────────────────── |
| MEDIUM | internal/sse/parser_edge_test.go | 215 | // ─── ParseSSEChunkForContent: fragments path with THINK type ───────── |
| MEDIUM | internal/sse/parser_edge_test.go | 307 | // ─── ParseSSEChunkForContent: response path with nested fragment ───── |
| MEDIUM | internal/sse/parser_edge_test.go | 351 | // ─── ParseSSEChunkForContent: map value with wrapped response ──────── |
| MEDIUM | internal/sse/parser_edge_test.go | 439 | // ─── ParseSSEChunkForContent: fragments/-1/content path ────────────── |
| MEDIUM | internal/sse/parser_edge_test.go | 452 | // ─── IsCitation edge cases ─────────────────────────────────────────── |
| MEDIUM | internal/sse/parser_edge_test.go | 472 | // ─── extractContentRecursive edge cases ────────────────────────────── |
| MEDIUM | internal/sse/consumer_edge_test.go | 11 | // ─── CollectStream edge cases ──────────────────────────────────────── |
| MEDIUM | internal/util/util_edge_test.go | 12 | // ─── EstimateTokens edge cases ─────────────────────────────────────── |
| MEDIUM | internal/util/util_edge_test.go | 62 | // ─── ToBool edge cases ─────────────────────────────────────────────── |
| MEDIUM | internal/util/util_edge_test.go | 88 | // ─── IntFrom edge cases ───────────────────────────────────────────── |
| MEDIUM | internal/util/util_edge_test.go | 120 | // ─── WriteJSON ─────────────────────────────────────────────────────── |
| MEDIUM | internal/util/util_edge_test.go | 150 | // ─── MessagesPrepare edge cases ────────────────────────────────────── |
| MEDIUM | internal/util/util_edge_test.go | 240 | // ─── normalizeContent edge cases ───────────────────────────────────── |
| MEDIUM | internal/util/util_edge_test.go | 295 | // ─── ConvertClaudeToDeepSeek edge cases ────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 10 | // ─── GetModelConfig edge cases ─────────────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 142 | // ─── lower function ────────────────────────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 163 | // ─── Config.MarshalJSON / UnmarshalJSON roundtrip ──────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 297 | // ─── Config.Clone ──────────────────────────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 340 | // ─── Account.Identifier edge cases ─────────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 363 | // ─── normalizeConfigInput ──────────────────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 386 | // ─── parseConfigString edge cases ──────────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 424 | // ─── Store methods ─────────────────────────────────────────────────── |
| MEDIUM | internal/config/config_edge_test.go | 671 | // ─── OpenAIModelsResponse / ClaudeModelsResponse ───────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 13 | // ─── extractCallerToken edge cases ─────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 71 | // ─── Context helpers ───────────────────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 89 | // ─── RefreshToken edge cases ───────────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 126 | // ─── MarkTokenInvalid edge cases ───────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 162 | // ─── SwitchAccount edge cases ──────────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 274 | // ─── Release edge cases ───────────────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 293 | // ─── JWT edge cases ────────────────────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 335 | // ─── VerifyAdminRequest edge cases ─────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 378 | // ─── Determine with login failure ──────────────────────────────────── |
| MEDIUM | internal/auth/auth_edge_test.go | 399 | // ─── Determine with target account ─────────────────────────────────── |
| MEDIUM | internal/httpapi/claude/handler_util_test.go | 8 | // ─── normalizeClaudeMessages ───────────────────────────────────────── |
| MEDIUM | internal/httpapi/claude/handler_util_test.go | 306 | // ─── buildClaudeToolPrompt ─────────────────────────────────────────── |
| MEDIUM | internal/httpapi/claude/handler_util_test.go | 388 | // ─── hasSystemMessage ──────────────────────────────────────────────── |
| MEDIUM | internal/httpapi/claude/handler_util_test.go | 423 | // ─── extractClaudeToolNames ────────────────────────────────────────── |
| MEDIUM | internal/httpapi/claude/handler_util_test.go | 487 | // ─── toMessageMaps ─────────────────────────────────────────────────── |
| MEDIUM | internal/httpapi/claude/handler_util_test.go | 521 | // ─── extractMessageContent ────────────────────────────────────────── |
| MEDIUM | internal/httpapi/claude/handler_util_test.go | 551 | // ─── cloneMap ──────────────────────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 11 | // ─── reverseAccounts ───────────────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 44 | // ─── intFromQuery edge cases ───────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 81 | // ─── nilIfEmpty ────────────────────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 95 | // ─── nilIfZero ─────────────────────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 115 | // ─── toStringSlice ─────────────────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 173 | // ─── toAccount edge cases ──────────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 205 | // ─── fieldString edge cases ────────────────────────────────────────── |
| MEDIUM | internal/httpapi/admin/shared/helpers_edge_test.go | 228 | // ─── statusOr ──────────────────────────────────────────────────────── |
| MEDIUM | internal/deepseek/client/deepseek_edge_test.go | 8 | // ─── toFloat64 edge cases ──────────────────────────────────────────── |
| MEDIUM | internal/deepseek/client/deepseek_edge_test.go | 46 | // ─── toInt64 edge cases ────────────────────────────────────────────── |
| MEDIUM | internal/deepseek/client/deepseek_edge_test.go | 78 | // ─── BuildPowHeader edge cases ─────────────────────────────────────── |
| MEDIUM | internal/deepseek/client/deepseek_edge_test.go | 108 | // ─── NewClient ─────────────────────────────────────────────────────── |
| MEDIUM | internal/account/pool_edge_test.go | 12 | // ─── Pool edge cases ───────────────────────────────────────────────── |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/node/chat-stream.test.js | 127 | async function runMockVercelStreamSequence(upstreamSequences, prepareOverrides = {}) { |
| LOW | internal/js/chat-stream/stream_emitter.js | 6 | function createChatCompletionEmitter({ res, sessionID, created, model, isClosed }) { |
| LOW | internal/js/chat-stream/sse_parse_impl.js | 457 | function filterLeakedContentFilterParts(parts) { |
| LOW | internal/js/chat-stream/sse_parse_impl.js | 479 | function stripLeakedContentFilterSuffix(text) { |
| LOW | internal/js/chat-stream/sse_parse_impl.js | 494 | function shouldDropCleanedLeakedChunk(cleaned) { |
| LOW | internal/js/chat-stream/sse_parse_impl.js | 515 | function hasContentFilterStatusValue(v) { |
| LOW | internal/js/chat-stream/sse_parse_impl.js | 544 | function extractAccumulatedTokenUsage(chunk) { |
| LOW | internal/js/chat-stream/sse_parse_impl.js | 624 | function stripReferenceMarkersText(text) { |
| LOW | internal/js/chat-stream/index.js | 89 | function isNodeStreamSupportedPath(rawURL) { |
| LOW | internal/js/chat-stream/toolcall_policy.js | 22 | function normalizePreparedToolNames(v) { |
| LOW | internal/js/chat-stream/toolcall_policy.js | 41 | function formatIncrementalToolCallDeltas(deltas, idStore) { |
| LOW | internal/js/chat-stream/toolcall_policy.js | 75 | function filterIncrementalToolCallDeltasByAllowed(deltas, allowedNames, seenNames) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 489 | function clonePayloadForEmptyOutputRetry(payload, parentMessageID) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 500 | function appendEmptyOutputRetrySuffix(prompt) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 508 | function usagePromptWithEmptyOutputRetry(originalPrompt, attempts) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 530 | function prepareContinueStateForNextRound(state) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 558 | function observeContinueDirectPatch(state, path, value) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 580 | function observeContinueResponseObject(state, response) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 594 | function observeContinueBatchPatches(state, parentPath, raw) { |
| LOW | internal/js/chat-stream/vercel_stream_impl.js | 656 | function upstreamEmptyOutputDetail(contentFilter, _text, thinking) { |
| LOW | internal/js/helpers/stream-tool-sieve/sieve.js | 167 | function splitSafeContentForToolDetection(state, s) { |
| LOW | internal/js/helpers/stream-tool-sieve/sieve.js | 275 | function shouldResetUnclosedMarkdownPrefix(state, prefix, suffix) { |
| LOW | internal/js/helpers/stream-tool-sieve/format.js | 5 | function formatOpenAIStreamToolCalls(calls, idStore, toolsRaw) { |
| LOW | internal/js/helpers/stream-tool-sieve/format.js | 21 | function normalizeParsedToolCallsForSchemas(calls, toolsRaw) { |
| LOW | internal/js/helpers/stream-tool-sieve/format.js | 80 | function normalizeToolValueWithSchema(value, schema) { |
| LOW | internal/js/helpers/stream-tool-sieve/format.js | 127 | function shouldCoerceSchemaToString(schema) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse.js | 78 | function parseStandaloneToolCallsDetailed(text, toolNames) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse.js | 141 | function shouldSkipToolCallParsingForCodeFenceExample(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/state.js | 25 | function resetIncrementalToolState(state) { |
| LOW | internal/js/helpers/stream-tool-sieve/state.js | 43 | function looksLikeToolExampleContext(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/state.js | 69 | function insideMarkdownCodeSpanWithState(state, text) { |
| LOW | internal/js/helpers/stream-tool-sieve/state.js | 77 | function updateMarkdownCodeSpanState(state, text) { |
| LOW | internal/js/helpers/stream-tool-sieve/state.js | 85 | function simulateMarkdownCodeSpanTicks(state, initialTicks, text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 869 | function toolMarkupPrefixContainsSlash(prefix) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 878 | function isToolMarkupTagTerminator(raw, idx) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 882 | function consumeToolMarkupNamePrefixOnce(raw, lower, idx) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 1280 | function normalizeCanonicalToolAttrKey(rawKey) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 1289 | function quoteCanonicalXMLAttrValue(rawValue) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 1293 | function removeToolMarkupIgnorables(rawValue) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 218 | function findToolCallElementBlocksOutsideIgnored(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 248 | function normalizeDSMLToolCallMarkup(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 268 | function containsCanonicalToolMarkup(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 272 | function containsToolCallWrapperSyntaxOutsideIgnored(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 313 | function containsToolMarkupSyntaxOutsideIgnored(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 351 | function replaceDSMLToolMarkupOutsideIgnored(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 386 | function parseMarkupSingleToolCall(block) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 455 | function findXmlStartTagOutsideCDATA(text, tag, from) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 483 | function findMatchingXmlEndTagOutsideCDATA(text, tag, from) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 649 | function findToolMarkupTagOutsideIgnored(text, from) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 674 | function findMatchingToolMarkupClose(text, openTag) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 702 | function findPartialToolMarkupStart(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 716 | function includeDuplicateLeadingLessThan(text, idx) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 742 | function isToolMarkupWhitespaceLike(ch) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 746 | function isPartialToolMarkupTagPrefix(text) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 785 | function consumeToolMarkupNamePrefix(raw, lower, idx) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 798 | function matchToolMarkupNameAfterArbitraryPrefix(raw, start) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 818 | function hasPartialToolMarkupNameAfterArbitraryPrefix(raw, start) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 834 | function hasDSMLNamePrefixOrPartial(raw, start) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 839 | function toolMarkupPrefixAllowsLocalName(prefix) { |
| LOW | internal/js/helpers/stream-tool-sieve/parse_payload.js | 853 | function toolMarkupPrefixAllowsLocalNameAt(raw, start, localStart) { |
| 37 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | tests/复杂场合测试.json | 77 | "content": "{\"error\":\"[java.lang.IllegalArgumentException] Search failed: no results found\\njava.lang.IllegalArg |
| CRITICAL | tests/复杂场合测试.json | 155 | "content": "{\"error\":\"[java.lang.IllegalArgumentException] Search failed: no results found\\njava.lang.IllegalArg |
| CRITICAL | tests/复杂场合测试.json | 231 | "content": "{\"error\":\"[java.lang.IllegalArgumentException] Search failed: no results found\\njava.lang.IllegalArg |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | API.md | 729 | "identifier": "user@example.com", |
| LOW | API.md | 730 | "email": "user@example.com", |
| LOW | API.md | 759 | {"email": "user@example.com", "password": "pwd", "token": ""} |
| LOW | API.md | 889 | "identifier": "user@example.com", |
| LOW | API.md | 890 | "email": "user@example.com", |
| LOW | API.md | 908 | {"email": "user@example.com", "password": "pwd"} |
| LOW | API.md | 979 | "account": "user@example.com", |
| LOW | API.md | 1014 | {"identifier":"user@example.com"} |
| LOW | API.md | 1035 | {"email": "user@example.com", "password": "pwd", "token": ""} |
| LOW | API.en.md | 723 | "identifier": "user@example.com", |
| LOW | API.en.md | 724 | "email": "user@example.com", |
| LOW | API.en.md | 753 | {"email": "user@example.com", "password": "pwd", "token": ""} |
| LOW | API.en.md | 878 | "identifier": "user@example.com", |
| LOW | API.en.md | 879 | "email": "user@example.com", |
| LOW | API.en.md | 899 | {"email": "user@example.com", "password": "pwd"} |
| LOW | API.en.md | 970 | "account": "user@example.com", |
| LOW | API.en.md | 1005 | {"identifier":"user@example.com"} |
| LOW | API.en.md | 1027 | {"email": "user@example.com", "password": "pwd", "token": ""} |
| LOW | internal/config/config_edge_test.go | 168 | Accounts: []Account{{Email: "user@example.com", Password: "pass", Token: "tok"}}, |
| LOW | internal/config/config_edge_test.go | 201 | if len(decoded.Accounts) != 1 || decoded.Accounts[0].Email != "user@example.com" { |
| LOW | internal/config/config_test.go | 364 | "accounts":[{"email":"user@example.com","password":"p"}] |
| LOW | internal/chathistory/store_test.go | 50 | AccountID: "user@example.com", |
| LOW | internal/httpapi/admin/handler_test.go | 16 | "email": "user@example.com", |
| LOW | internal/httpapi/admin/handler_test.go | 19 | if acc.Email != "user@example.com" { |
| LOW | …nal/httpapi/admin/history/handler_chat_history_test.go | 40 | AccountID: "user@example.com", |
| LOW | webui/src/features/account/AddAccountModal.jsx | 51 | placeholder="user@example.com" |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | internal/deepseek/client/client_continue.go | 34 | // The caller sees a single, seamless SSE stream. |
| MEDIUM | internal/toolcall/toolcalls_markup.go | 96 | // 2. If no CDATA, we still want to be robust. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …ternal/httpapi/openai/shared/leaked_output_sanitize.go | 21 |