@astro-minimax/ai 0.9.0 → 0.9.3
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 +108 -18
- package/dist/cache/global-cache.d.ts +6 -2
- package/dist/cache/global-cache.d.ts.map +1 -1
- package/dist/cache/global-cache.js +24 -9
- package/dist/cache/index.d.ts +7 -6
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +12 -4
- package/dist/cache/injection-cache.d.ts +36 -0
- package/dist/cache/injection-cache.d.ts.map +1 -0
- package/dist/cache/injection-cache.js +90 -0
- package/dist/cache/kv-adapter.d.ts.map +1 -1
- package/dist/cache/kv-adapter.js +2 -1
- package/dist/cache/memory-adapter.d.ts.map +1 -1
- package/dist/cache/memory-adapter.js +2 -1
- package/dist/cache/response-cache.d.ts +10 -5
- package/dist/cache/response-cache.d.ts.map +1 -1
- package/dist/cache/response-cache.js +18 -6
- package/dist/components/AIChatContainer.d.ts +2 -2
- package/dist/components/AIChatContainer.d.ts.map +1 -1
- package/dist/components/AIChatContainer.js +8 -920
- package/dist/components/ChatInput.d.ts +15 -0
- package/dist/components/ChatInput.d.ts.map +1 -0
- package/dist/components/ChatInput.js +72 -0
- package/dist/components/ChatPanel.d.ts +1 -1
- package/dist/components/ChatPanel.d.ts.map +1 -1
- package/dist/components/ChatPanel.js +210 -672
- package/dist/components/CodeBlock.d.ts +31 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.js +143 -0
- package/dist/components/MarkmapBlock.d.ts +4 -0
- package/dist/components/MarkmapBlock.d.ts.map +1 -0
- package/dist/components/MarkmapBlock.js +180 -0
- package/dist/components/MermaidBlock.d.ts +4 -0
- package/dist/components/MermaidBlock.d.ts.map +1 -0
- package/dist/components/MermaidBlock.js +193 -0
- package/dist/components/MessageBubble.d.ts +21 -0
- package/dist/components/MessageBubble.d.ts.map +1 -0
- package/dist/components/MessageBubble.js +233 -0
- package/dist/components/ReasoningBlock.d.ts +6 -0
- package/dist/components/ReasoningBlock.d.ts.map +1 -0
- package/dist/components/ReasoningBlock.js +11 -0
- package/dist/components/RichText.d.ts +41 -0
- package/dist/components/RichText.d.ts.map +1 -0
- package/dist/components/RichText.js +202 -0
- package/dist/components/VizShared.d.ts +57 -0
- package/dist/components/VizShared.d.ts.map +1 -0
- package/dist/components/VizShared.js +233 -0
- package/dist/components/tool-auto-continue.d.ts +5 -0
- package/dist/components/tool-auto-continue.d.ts.map +1 -0
- package/dist/components/tool-auto-continue.js +33 -0
- package/dist/constants.d.ts +61 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +72 -0
- package/dist/data/index.d.ts +4 -3
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +4 -10
- package/dist/data/knowledge-types.d.ts +8 -0
- package/dist/data/knowledge-types.d.ts.map +1 -0
- package/dist/data/knowledge-types.js +14 -0
- package/dist/data/metadata-loader.d.ts +4 -28
- package/dist/data/metadata-loader.d.ts.map +1 -1
- package/dist/data/metadata-loader.js +11 -34
- package/dist/data/types.d.ts +17 -2
- package/dist/data/types.d.ts.map +1 -1
- package/dist/extensions/index.d.ts +5 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +24 -0
- package/dist/extensions/injector.d.ts +14 -0
- package/dist/extensions/injector.d.ts.map +1 -0
- package/dist/extensions/injector.js +146 -0
- package/dist/extensions/loader.d.ts +5 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +45 -0
- package/dist/extensions/registry.d.ts +4 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +144 -0
- package/dist/extensions/types.d.ts +126 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +0 -0
- package/dist/fact-registry/prompt-injector.d.ts +1 -1
- package/dist/fact-registry/prompt-injector.d.ts.map +1 -1
- package/dist/fact-registry/prompt-injector.js +2 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/intelligence/citation-guard.d.ts +2 -13
- package/dist/intelligence/citation-guard.d.ts.map +1 -1
- package/dist/intelligence/citation-guard.js +52 -23
- package/dist/intelligence/evidence-analysis.d.ts +24 -16
- package/dist/intelligence/evidence-analysis.d.ts.map +1 -1
- package/dist/intelligence/evidence-analysis.js +118 -20
- package/dist/intelligence/evidence-budget.d.ts +13 -0
- package/dist/intelligence/evidence-budget.d.ts.map +1 -0
- package/dist/intelligence/evidence-budget.js +49 -0
- package/dist/intelligence/index.d.ts +10 -4
- package/dist/intelligence/index.d.ts.map +1 -1
- package/dist/intelligence/index.js +27 -3
- package/dist/intelligence/keyword-extract.d.ts +1 -1
- package/dist/intelligence/keyword-extract.d.ts.map +1 -1
- package/dist/intelligence/keyword-extract.js +5 -9
- package/dist/intelligence/request-interpretation.d.ts +40 -0
- package/dist/intelligence/request-interpretation.d.ts.map +1 -0
- package/dist/intelligence/request-interpretation.js +71 -0
- package/dist/intelligence/response-templates.d.ts +1 -0
- package/dist/intelligence/response-templates.d.ts.map +1 -1
- package/dist/intelligence/response-templates.js +13 -0
- package/dist/prompt/dynamic-layer.d.ts +1 -5
- package/dist/prompt/dynamic-layer.d.ts.map +1 -1
- package/dist/prompt/dynamic-layer.js +145 -9
- package/dist/prompt/prompt-builder.d.ts +1 -1
- package/dist/prompt/prompt-builder.d.ts.map +1 -1
- package/dist/prompt/prompt-builder.js +5 -1
- package/dist/prompt/semi-static-layer.d.ts +1 -1
- package/dist/prompt/semi-static-layer.d.ts.map +1 -1
- package/dist/prompt/semi-static-layer.js +22 -12
- package/dist/prompt/static-layer.d.ts.map +1 -1
- package/dist/prompt/static-layer.js +37 -4
- package/dist/prompt/types.d.ts +9 -4
- package/dist/prompt/types.d.ts.map +1 -1
- package/dist/provider-manager/base.d.ts +5 -1
- package/dist/provider-manager/base.d.ts.map +1 -1
- package/dist/provider-manager/base.js +22 -2
- package/dist/provider-manager/config.d.ts.map +1 -1
- package/dist/provider-manager/config.js +3 -2
- package/dist/provider-manager/index.d.ts +1 -1
- package/dist/provider-manager/index.d.ts.map +1 -1
- package/dist/provider-manager/index.js +1 -2
- package/dist/provider-manager/manager.d.ts +10 -1
- package/dist/provider-manager/manager.d.ts.map +1 -1
- package/dist/provider-manager/manager.js +26 -10
- package/dist/provider-manager/openai.d.ts +2 -2
- package/dist/provider-manager/openai.d.ts.map +1 -1
- package/dist/provider-manager/openai.js +19 -4
- package/dist/provider-manager/types.d.ts +18 -38
- package/dist/provider-manager/types.d.ts.map +1 -1
- package/dist/provider-manager/workers.d.ts +2 -2
- package/dist/provider-manager/workers.d.ts.map +1 -1
- package/dist/provider-manager/workers.js +15 -4
- package/dist/query/followup.d.ts +7 -0
- package/dist/query/followup.d.ts.map +1 -0
- package/dist/query/followup.js +46 -0
- package/dist/query/intent.d.ts +6 -0
- package/dist/query/intent.d.ts.map +1 -0
- package/dist/query/intent.js +137 -0
- package/dist/query/types.d.ts +8 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query/types.js +0 -0
- package/dist/search/hybrid-search.d.ts +111 -0
- package/dist/search/hybrid-search.d.ts.map +1 -0
- package/dist/search/hybrid-search.js +326 -0
- package/dist/search/index.d.ts +11 -9
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +46 -10
- package/dist/search/scoring.d.ts +18 -0
- package/dist/search/scoring.d.ts.map +1 -0
- package/dist/search/{search-utils.js → scoring.js} +14 -27
- package/dist/search/search-api.d.ts +16 -1
- package/dist/search/search-api.d.ts.map +1 -1
- package/dist/search/search-api.js +118 -15
- package/dist/search/search-index.d.ts +2 -2
- package/dist/search/search-index.d.ts.map +1 -1
- package/dist/search/search-index.js +4 -2
- package/dist/search/session-cache.d.ts +4 -10
- package/dist/search/session-cache.d.ts.map +1 -1
- package/dist/search/session-cache.js +12 -45
- package/dist/search/types.d.ts +28 -0
- package/dist/search/types.d.ts.map +1 -1
- package/dist/search/vector-reranker.d.ts +3 -3
- package/dist/search/vector-reranker.d.ts.map +1 -1
- package/dist/search/vector-reranker.js +14 -2
- package/dist/server/chat-handler.d.ts +86 -1
- package/dist/server/chat-handler.d.ts.map +1 -1
- package/dist/server/chat-handler.js +835 -401
- package/dist/server/chat-message-utils.d.ts +6 -0
- package/dist/server/chat-message-utils.d.ts.map +1 -0
- package/dist/server/chat-message-utils.js +40 -0
- package/dist/server/chat-utils.d.ts +30 -0
- package/dist/server/chat-utils.d.ts.map +1 -0
- package/dist/server/chat-utils.js +88 -0
- package/dist/server/dev-server.js +238 -101
- package/dist/server/env-config.d.ts +22 -0
- package/dist/server/env-config.d.ts.map +1 -0
- package/dist/server/env-config.js +25 -0
- package/dist/server/errors.d.ts +1 -0
- package/dist/server/errors.d.ts.map +1 -1
- package/dist/server/errors.js +14 -7
- package/dist/server/index.d.ts +2 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -25
- package/dist/server/metadata-init.d.ts +10 -5
- package/dist/server/metadata-init.d.ts.map +1 -1
- package/dist/server/metadata-init.js +78 -34
- package/dist/server/notify.d.ts +12 -11
- package/dist/server/notify.d.ts.map +1 -1
- package/dist/server/notify.js +46 -48
- package/dist/server/prompt-runtime.d.ts +60 -0
- package/dist/server/prompt-runtime.d.ts.map +1 -0
- package/dist/server/prompt-runtime.js +284 -0
- package/dist/server/stream-helpers.d.ts +30 -16
- package/dist/server/stream-helpers.d.ts.map +1 -1
- package/dist/server/stream-helpers.js +152 -15
- package/dist/server/types.d.ts +47 -12
- package/dist/server/types.d.ts.map +1 -1
- package/dist/structured-output/generator.d.ts +6 -0
- package/dist/structured-output/generator.d.ts.map +1 -0
- package/dist/structured-output/generator.js +164 -0
- package/dist/structured-output/index.d.ts +4 -0
- package/dist/structured-output/index.d.ts.map +1 -0
- package/dist/structured-output/index.js +6 -0
- package/dist/structured-output/schemas/evidence.d.ts +88 -0
- package/dist/structured-output/schemas/evidence.d.ts.map +1 -0
- package/dist/structured-output/schemas/evidence.js +65 -0
- package/dist/structured-output/types.d.ts +69 -0
- package/dist/structured-output/types.d.ts.map +1 -0
- package/dist/structured-output/types.js +0 -0
- package/dist/tools/action-tools.d.ts +63 -0
- package/dist/tools/action-tools.d.ts.map +1 -0
- package/dist/tools/action-tools.js +158 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +30 -0
- package/dist/utils/i18n.d.ts +1 -1
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +1 -1
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +36 -0
- package/dist/utils/text.d.ts +11 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +87 -0
- package/dist/utils/url.d.ts +19 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +13 -0
- package/package.json +46 -12
- package/dist/intelligence/intent-detect.d.ts +0 -40
- package/dist/intelligence/intent-detect.d.ts.map +0 -1
- package/dist/intelligence/intent-detect.js +0 -93
- package/dist/providers/index.d.ts +0 -2
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -5
- package/dist/search/search-utils.d.ts +0 -47
- package/dist/search/search-utils.d.ts.map +0 -1
- package/dist/stream/index.d.ts +0 -3
- package/dist/stream/index.d.ts.map +0 -1
- package/dist/stream/index.js +0 -8
- package/dist/stream/mock-stream.d.ts +0 -12
- package/dist/stream/mock-stream.d.ts.map +0 -1
- package/dist/stream/mock-stream.js +0 -26
- package/dist/stream/response.d.ts +0 -10
- package/dist/stream/response.d.ts.map +0 -1
- package/dist/stream/response.js +0 -21
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { tokenize, normalizeText } from "../search/search-utils.js";
|
|
2
|
-
import { SESSION_CACHE_TTL_MS } from "../search/session-cache.js";
|
|
3
|
-
const MAX_FOLLOW_UP_LENGTH = 48;
|
|
4
|
-
const INTENT_KEYWORDS = {
|
|
5
|
-
setup: ["\u642D\u5EFA", "\u521B\u5EFA", "\u5B89\u88C5", "install", "setup", "create", "init", "scaffold", "\u65B0\u5EFA", "\u5F00\u59CB"],
|
|
6
|
-
config: ["\u914D\u7F6E", "\u8BBE\u7F6E", "config", "settings", "\u73AF\u5883\u53D8\u91CF", ".env", "wrangler", "tsconfig", "\u4E3B\u9898\u8272", "\u989C\u8272"],
|
|
7
|
-
content: ["\u6587\u7AE0", "\u535A\u5BA2", "\u5199\u4F5C", "markdown", "mdx", "\u6807\u7B7E", "\u5206\u7C7B", "\u6458\u8981", "\u5C01\u9762", "\u7FFB\u8BD1"],
|
|
8
|
-
feature: ["\u529F\u80FD", "\u7279\u6027", "feature", "\u652F\u6301", "AI", "RAG", "\u641C\u7D22", "\u8BC4\u8BBA", "RSS", "\u6697\u8272", "\u6DF1\u8272"],
|
|
9
|
-
deployment: ["\u90E8\u7F72", "deploy", "cloudflare", "vercel", "netlify", "build", "\u6784\u5EFA", "CI", "CD"],
|
|
10
|
-
troubleshooting: ["\u62A5\u9519", "\u9519\u8BEF", "error", "bug", "\u95EE\u9898", "\u4E0D\u5DE5\u4F5C", "\u5931\u8D25", "fail", "\u4FEE\u590D", "fix"],
|
|
11
|
-
general: []
|
|
12
|
-
};
|
|
13
|
-
function classifyIntent(query) {
|
|
14
|
-
const q = query.toLowerCase();
|
|
15
|
-
const scores = {};
|
|
16
|
-
for (const [intent, keywords] of Object.entries(INTENT_KEYWORDS)) {
|
|
17
|
-
if (intent === "general") continue;
|
|
18
|
-
const score = keywords.reduce((acc, kw) => acc + (q.includes(kw.toLowerCase()) ? 1 : 0), 0);
|
|
19
|
-
if (score > 0) scores[intent] = score;
|
|
20
|
-
}
|
|
21
|
-
const sorted = Object.entries(scores).sort((a, b) => b[1] - a[1]);
|
|
22
|
-
return sorted[0]?.[0] || "general";
|
|
23
|
-
}
|
|
24
|
-
function countKeywordHits(text, keywords) {
|
|
25
|
-
if (!text) return 0;
|
|
26
|
-
const lower = text.toLowerCase();
|
|
27
|
-
return keywords.reduce((hits, kw) => hits + (lower.includes(kw.toLowerCase()) ? 1 : 0), 0);
|
|
28
|
-
}
|
|
29
|
-
function isRecent(dateTime) {
|
|
30
|
-
if (!dateTime || !Number.isFinite(dateTime)) return false;
|
|
31
|
-
return Date.now() - dateTime <= 365 * 24 * 60 * 60 * 1e3;
|
|
32
|
-
}
|
|
33
|
-
function rankArticlesByIntent(query, articles) {
|
|
34
|
-
const intent = classifyIntent(query);
|
|
35
|
-
if (intent === "general" || articles.length <= 1) return articles;
|
|
36
|
-
const keywords = INTENT_KEYWORDS[intent];
|
|
37
|
-
if (!keywords.length) return articles;
|
|
38
|
-
const scored = articles.map((article, index) => {
|
|
39
|
-
const titleHit = countKeywordHits(article.title, keywords) > 0 ? 3 : 0;
|
|
40
|
-
const categoryHit = (article.categories ?? []).some((c) => countKeywordHits(c, keywords) > 0) ? 2 : 0;
|
|
41
|
-
const summaryHit = countKeywordHits(article.summary, keywords) > 0 ? 2 : 0;
|
|
42
|
-
const keyPointHit = article.keyPoints.some((kp) => countKeywordHits(kp, keywords) > 0) ? 1 : 0;
|
|
43
|
-
const recentHit = isRecent(article.dateTime) ? 1 : 0;
|
|
44
|
-
return { article, index, score: titleHit + categoryHit + summaryHit + keyPointHit + recentHit };
|
|
45
|
-
});
|
|
46
|
-
const maxScore = Math.max(...scored.map((s) => s.score), 0);
|
|
47
|
-
if (maxScore === 0) return articles;
|
|
48
|
-
scored.sort((a, b) => b.score - a.score || a.index - b.index);
|
|
49
|
-
return scored.map((s) => s.article);
|
|
50
|
-
}
|
|
51
|
-
function isLikelyFollowUp(message) {
|
|
52
|
-
const text = message.trim();
|
|
53
|
-
if (!text || text.length > MAX_FOLLOW_UP_LENGTH) return false;
|
|
54
|
-
const hasTerminalPunctuation = /[??!!。.…]$/.test(text);
|
|
55
|
-
const wordCount = text.split(/\s+/).filter(Boolean).length;
|
|
56
|
-
if (text.length <= 16) return true;
|
|
57
|
-
if (!/\s/.test(text) && text.length <= 24) return true;
|
|
58
|
-
return hasTerminalPunctuation && wordCount <= 6 && text.length <= 36;
|
|
59
|
-
}
|
|
60
|
-
function hasNewSignificantTokens(currentQuery, cachedQuery) {
|
|
61
|
-
const currentTokens = new Set(tokenize(currentQuery));
|
|
62
|
-
const cachedTokens = new Set(tokenize(cachedQuery));
|
|
63
|
-
const newTokens = [...currentTokens].filter((t) => !cachedTokens.has(t) && t.length >= 2);
|
|
64
|
-
return newTokens.length > 0;
|
|
65
|
-
}
|
|
66
|
-
function hasQueryOverlap(currentQuery, cachedQuery) {
|
|
67
|
-
const currentTokens = tokenize(currentQuery);
|
|
68
|
-
const cachedNorm = normalizeText(cachedQuery);
|
|
69
|
-
if (!currentTokens.length || !cachedNorm) return false;
|
|
70
|
-
return currentTokens.some((t) => cachedNorm.includes(t));
|
|
71
|
-
}
|
|
72
|
-
function shouldReuseSearchContext(params) {
|
|
73
|
-
const { latestText, cachedContext, userTurnCount, now } = params;
|
|
74
|
-
if (!cachedContext) return false;
|
|
75
|
-
if (userTurnCount <= 1) return false;
|
|
76
|
-
if (now - cachedContext.updatedAt > SESSION_CACHE_TTL_MS) return false;
|
|
77
|
-
if (!isLikelyFollowUp(latestText)) return false;
|
|
78
|
-
if (!hasQueryOverlap(latestText, cachedContext.query)) return false;
|
|
79
|
-
if (hasNewSignificantTokens(latestText, cachedContext.query)) return false;
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
function buildLocalSearchQuery(latestText) {
|
|
83
|
-
return tokenize(latestText).join(" ");
|
|
84
|
-
}
|
|
85
|
-
export {
|
|
86
|
-
buildLocalSearchQuery,
|
|
87
|
-
classifyIntent,
|
|
88
|
-
hasNewSignificantTokens,
|
|
89
|
-
hasQueryOverlap,
|
|
90
|
-
isLikelyFollowUp,
|
|
91
|
-
rankArticlesByIntent,
|
|
92
|
-
shouldReuseSearchContext
|
|
93
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/providers/index.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Text normalization and tokenization utilities for search.
|
|
3
|
-
*/
|
|
4
|
-
import type { IDFMap } from './idf.js';
|
|
5
|
-
/**
|
|
6
|
-
* Normalizes text for search: lowercase, remove punctuation, normalize whitespace.
|
|
7
|
-
*/
|
|
8
|
-
export declare function normalizeText(text: string): string;
|
|
9
|
-
/**
|
|
10
|
-
* Splits a query into normalized tokens (handles both Chinese and Latin text).
|
|
11
|
-
*/
|
|
12
|
-
export declare function tokenize(text: string): string[];
|
|
13
|
-
/**
|
|
14
|
-
* Removes tokens that are substrings of longer tokens (avoids redundant matching).
|
|
15
|
-
*/
|
|
16
|
-
export declare function dedupeByContainment(terms: string[]): string[];
|
|
17
|
-
/**
|
|
18
|
-
* Computes a relevance score for a document against query tokens.
|
|
19
|
-
*
|
|
20
|
-
* When an IDF map is provided, each token's contribution is weighted by its
|
|
21
|
-
* inverse document frequency — rare terms contribute more, common terms less.
|
|
22
|
-
* Falls back to uniform weighting when IDF is unavailable.
|
|
23
|
-
*/
|
|
24
|
-
export declare function scoreDocument(tokens: string[], doc: {
|
|
25
|
-
title: string;
|
|
26
|
-
content: string;
|
|
27
|
-
excerpt: string;
|
|
28
|
-
keyPoints: string[];
|
|
29
|
-
categories: string[];
|
|
30
|
-
tags: string[];
|
|
31
|
-
}, idfMap?: IDFMap | null): number;
|
|
32
|
-
/**
|
|
33
|
-
* Filters out low-relevance results relative to the top score.
|
|
34
|
-
*/
|
|
35
|
-
export declare function filterLowRelevance<T extends {
|
|
36
|
-
score: number;
|
|
37
|
-
}>(results: T[], relativeThreshold?: number, minAbsoluteScore?: number): T[];
|
|
38
|
-
/**
|
|
39
|
-
* Selects the best "anchor terms" from the query — terms that are specific
|
|
40
|
-
* enough to be meaningful but appear in enough results to be useful.
|
|
41
|
-
*/
|
|
42
|
-
export declare function pickAnchorTerms(query: string, candidates: Array<{
|
|
43
|
-
title: string;
|
|
44
|
-
keyPoints: string[];
|
|
45
|
-
categories: string[];
|
|
46
|
-
}>, maxTerms?: number, minTermLength?: number): string[];
|
|
47
|
-
//# sourceMappingURL=search-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-utils.d.ts","sourceRoot":"","sources":["../../src/search/search-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS7D;AAYD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EAAE,EAChB,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,EACnH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC5D,OAAO,EAAE,CAAC,EAAE,EACZ,iBAAiB,SAAO,EACxB,gBAAgB,SAAI,GACnB,CAAC,EAAE,CAML;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAC/E,QAAQ,SAAI,EACZ,aAAa,SAAI,GAChB,MAAM,EAAE,CAuBV"}
|
package/dist/stream/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/stream/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface MockStreamOptions {
|
|
2
|
-
question: string;
|
|
3
|
-
lang?: string;
|
|
4
|
-
/** Delay range per character chunk in ms [min, max] */
|
|
5
|
-
delayRange?: [number, number];
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Streams a mock response character-by-character as a ReadableStream<string>.
|
|
9
|
-
* Simulates natural typing speed with variable delays.
|
|
10
|
-
*/
|
|
11
|
-
export declare function streamMockResponse(options: MockStreamOptions): ReadableStream<string>;
|
|
12
|
-
//# sourceMappingURL=mock-stream.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-stream.d.ts","sourceRoot":"","sources":["../../src/stream/mock-stream.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,CAoBrF"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { getMockResponse } from "../providers/mock.js";
|
|
2
|
-
function streamMockResponse(options) {
|
|
3
|
-
const { question, lang = "zh", delayRange = [12, 35] } = options;
|
|
4
|
-
const text = getMockResponse(question, lang);
|
|
5
|
-
const [minDelay, maxDelay] = delayRange;
|
|
6
|
-
let index = 0;
|
|
7
|
-
return new ReadableStream({
|
|
8
|
-
async pull(controller) {
|
|
9
|
-
if (index >= text.length) {
|
|
10
|
-
controller.close();
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const chunkSize = Math.random() < 0.25 ? 2 : 1;
|
|
14
|
-
const chunk = text.slice(index, index + chunkSize);
|
|
15
|
-
index += chunkSize;
|
|
16
|
-
controller.enqueue(chunk);
|
|
17
|
-
await sleep(minDelay + Math.random() * (maxDelay - minDelay));
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
function sleep(ms) {
|
|
22
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
23
|
-
}
|
|
24
|
-
export {
|
|
25
|
-
streamMockResponse
|
|
26
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Common CORS + SSE headers for chat API responses.
|
|
3
|
-
*/
|
|
4
|
-
export declare const STREAM_HEADERS: HeadersInit;
|
|
5
|
-
export declare const JSON_HEADERS: HeadersInit;
|
|
6
|
-
/**
|
|
7
|
-
* Creates a standard error JSON response.
|
|
8
|
-
*/
|
|
9
|
-
export declare function errorResponse(message: string, status?: number): Response;
|
|
10
|
-
//# sourceMappingURL=response.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/stream/response.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WAK5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,WAG1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,QAAQ,CAKrE"}
|
package/dist/stream/response.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
const STREAM_HEADERS = {
|
|
2
|
-
"Content-Type": "text/event-stream",
|
|
3
|
-
"Cache-Control": "no-cache",
|
|
4
|
-
"Connection": "keep-alive",
|
|
5
|
-
"Access-Control-Allow-Origin": "*"
|
|
6
|
-
};
|
|
7
|
-
const JSON_HEADERS = {
|
|
8
|
-
"Content-Type": "application/json",
|
|
9
|
-
"Access-Control-Allow-Origin": "*"
|
|
10
|
-
};
|
|
11
|
-
function errorResponse(message, status = 500) {
|
|
12
|
-
return new Response(JSON.stringify({ error: message }), {
|
|
13
|
-
status,
|
|
14
|
-
headers: JSON_HEADERS
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
export {
|
|
18
|
-
JSON_HEADERS,
|
|
19
|
-
STREAM_HEADERS,
|
|
20
|
-
errorResponse
|
|
21
|
-
};
|