@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
package/dist/server/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { UIMessage } from
|
|
2
|
-
import type { ProviderManagerEnv } from
|
|
3
|
-
import type { CacheEnv } from
|
|
1
|
+
import type { UIMessage } from "ai";
|
|
2
|
+
import type { ProviderManagerEnv } from "../provider-manager/types.js";
|
|
3
|
+
import type { CacheEnv } from "../cache/types.js";
|
|
4
4
|
export interface ChatContext {
|
|
5
|
-
scope:
|
|
5
|
+
scope: "global" | "article";
|
|
6
6
|
article?: ArticleChatContext;
|
|
7
7
|
}
|
|
8
8
|
export interface ArticleChatContext {
|
|
@@ -20,9 +20,27 @@ export interface ChatRequestBody {
|
|
|
20
20
|
messages: UIMessage[];
|
|
21
21
|
lang?: string;
|
|
22
22
|
}
|
|
23
|
-
export interface
|
|
23
|
+
export interface AiCacheEnv {
|
|
24
|
+
AI_CACHE_ENABLED?: boolean | string;
|
|
25
|
+
AI_CACHE_TTL?: number | string;
|
|
26
|
+
AI_CACHE_PLAYBACK_DELAY?: number | string;
|
|
27
|
+
AI_CACHE_CHUNK_SIZE?: number | string;
|
|
28
|
+
AI_CACHE_THINKING_DELAY?: number | string;
|
|
29
|
+
}
|
|
30
|
+
export interface AiTimeoutEnv {
|
|
31
|
+
AI_TIMEOUT_REQUEST?: number | string;
|
|
32
|
+
AI_TIMEOUT_KEYWORD?: number | string;
|
|
33
|
+
AI_TIMEOUT_EVIDENCE?: number | string;
|
|
34
|
+
AI_TIMEOUT_LLM?: number | string;
|
|
35
|
+
}
|
|
36
|
+
export interface AiHealthEnv {
|
|
37
|
+
AI_HEALTH_THRESHOLD?: number | string;
|
|
38
|
+
AI_HEALTH_RECOVERY_TTL?: number | string;
|
|
39
|
+
}
|
|
40
|
+
export interface ChatHandlerEnv extends ProviderManagerEnv, CacheEnv, AiCacheEnv, AiTimeoutEnv, AiHealthEnv {
|
|
24
41
|
SITE_AUTHOR?: string;
|
|
25
42
|
SITE_URL?: string;
|
|
43
|
+
SITE_LANG?: string;
|
|
26
44
|
[key: string]: unknown;
|
|
27
45
|
}
|
|
28
46
|
export interface ChatHandlerOptions {
|
|
@@ -30,7 +48,7 @@ export interface ChatHandlerOptions {
|
|
|
30
48
|
request: Request;
|
|
31
49
|
waitUntil?: (promise: Promise<unknown>) => void;
|
|
32
50
|
}
|
|
33
|
-
export type ChatStatusStage =
|
|
51
|
+
export type ChatStatusStage = "search" | "answer" | "complete";
|
|
34
52
|
export interface ChatStatusData {
|
|
35
53
|
stage: ChatStatusStage;
|
|
36
54
|
message: string;
|
|
@@ -38,7 +56,7 @@ export interface ChatStatusData {
|
|
|
38
56
|
done: boolean;
|
|
39
57
|
at: number;
|
|
40
58
|
}
|
|
41
|
-
export declare function createChatStatusData(partial: Omit<ChatStatusData,
|
|
59
|
+
export declare function createChatStatusData(partial: Omit<ChatStatusData, "done" | "at"> & {
|
|
42
60
|
done?: boolean;
|
|
43
61
|
}): ChatStatusData;
|
|
44
62
|
export declare function isChatStatusData(value: unknown): value is ChatStatusData;
|
|
@@ -49,11 +67,28 @@ export interface ChatErrorResponse {
|
|
|
49
67
|
retryAfter?: number;
|
|
50
68
|
}
|
|
51
69
|
export interface MetadataConfig {
|
|
52
|
-
|
|
53
|
-
authorContext: unknown;
|
|
54
|
-
voiceProfile: unknown;
|
|
55
|
-
factRegistry?: unknown;
|
|
56
|
-
vectorIndex?: unknown;
|
|
70
|
+
knowledgeBundle: unknown;
|
|
57
71
|
siteUrl?: string;
|
|
58
72
|
}
|
|
73
|
+
export interface NotifyArticleRef {
|
|
74
|
+
title: string;
|
|
75
|
+
url?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface NotifyModelInfo {
|
|
78
|
+
name: string;
|
|
79
|
+
provider?: string;
|
|
80
|
+
apiHost?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface NotifyTokenUsage {
|
|
83
|
+
total: number;
|
|
84
|
+
input: number;
|
|
85
|
+
output: number;
|
|
86
|
+
}
|
|
87
|
+
export interface PhaseTiming {
|
|
88
|
+
total: number;
|
|
89
|
+
keywordExtraction?: number;
|
|
90
|
+
search?: number;
|
|
91
|
+
evidenceAnalysis?: number;
|
|
92
|
+
generation?: number;
|
|
93
|
+
}
|
|
59
94
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAIlD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAID,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAIlD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAID,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,uBAAuB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,cACf,SAAQ,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACjD;AAID,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE,cAAc,CAMhB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAQxE;AAID,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Core generator for structured output with fallback support.
|
|
3
|
+
*/
|
|
4
|
+
import type { StructuredOutputResult, GenerateStructuredOptions } from './types.js';
|
|
5
|
+
export declare function generateStructured<T>(options: GenerateStructuredOptions<T>): Promise<StructuredOutputResult<T>>;
|
|
6
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/structured-output/generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,sBAAsB,EACtB,yBAAyB,EAG1B,MAAM,YAAY,CAAC;AA6CpB,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAkIpC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { TIMEOUTS } from "../constants.js";
|
|
2
|
+
const DEFAULT_TIMEOUT_MS = TIMEOUTS.EVIDENCE_ANALYSIS;
|
|
3
|
+
const DEFAULT_MAX_OUTPUT_TOKENS = 500;
|
|
4
|
+
const DEFAULT_TEMPERATURE = 0;
|
|
5
|
+
function toTokenStats(usage) {
|
|
6
|
+
if (!usage) return void 0;
|
|
7
|
+
return {
|
|
8
|
+
inputTokens: usage.inputTokens ?? 0,
|
|
9
|
+
outputTokens: usage.outputTokens ?? 0,
|
|
10
|
+
totalTokens: usage.totalTokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function extractJsonFromText(text) {
|
|
14
|
+
const trimmed = text.trim();
|
|
15
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(trimmed);
|
|
18
|
+
} catch {
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const codeBlockMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
22
|
+
if (codeBlockMatch) {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.parse(codeBlockMatch[1].trim());
|
|
25
|
+
} catch {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const jsonMatch = trimmed.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);
|
|
29
|
+
if (jsonMatch) {
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(jsonMatch[1]);
|
|
32
|
+
} catch {
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function validateWithSchema(data, schema) {
|
|
38
|
+
const result = schema.safeParse(data);
|
|
39
|
+
if (result.success) {
|
|
40
|
+
return result.data;
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
async function generateStructured(options) {
|
|
45
|
+
const {
|
|
46
|
+
config,
|
|
47
|
+
provider,
|
|
48
|
+
systemPrompt,
|
|
49
|
+
userPrompt,
|
|
50
|
+
abortSignal
|
|
51
|
+
} = options;
|
|
52
|
+
const {
|
|
53
|
+
schema,
|
|
54
|
+
schemaName = "output",
|
|
55
|
+
schemaDescription,
|
|
56
|
+
fallbackParser,
|
|
57
|
+
repairStrategy = "lenient",
|
|
58
|
+
timeoutMs = DEFAULT_TIMEOUT_MS,
|
|
59
|
+
maxOutputTokens = DEFAULT_MAX_OUTPUT_TOKENS,
|
|
60
|
+
temperature = DEFAULT_TEMPERATURE
|
|
61
|
+
} = config;
|
|
62
|
+
const allowTextRepair = repairStrategy !== "none";
|
|
63
|
+
const allowFallbackParser = repairStrategy === "lenient";
|
|
64
|
+
const timeoutController = new AbortController();
|
|
65
|
+
const timeoutId = setTimeout(() => timeoutController.abort(), timeoutMs);
|
|
66
|
+
const abortHandler = () => timeoutController.abort();
|
|
67
|
+
if (abortSignal) {
|
|
68
|
+
if (abortSignal.aborted) {
|
|
69
|
+
clearTimeout(timeoutId);
|
|
70
|
+
return {
|
|
71
|
+
data: null,
|
|
72
|
+
success: false,
|
|
73
|
+
status: "timeout",
|
|
74
|
+
fallbackUsed: false,
|
|
75
|
+
error: "Request already aborted"
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
abortSignal.addEventListener("abort", abortHandler, { once: true });
|
|
79
|
+
}
|
|
80
|
+
let status = "request_error";
|
|
81
|
+
let rawText = "";
|
|
82
|
+
let usage;
|
|
83
|
+
try {
|
|
84
|
+
const result = await provider.generateObject({
|
|
85
|
+
schema,
|
|
86
|
+
schemaName,
|
|
87
|
+
schemaDescription,
|
|
88
|
+
systemPrompt,
|
|
89
|
+
userPrompt,
|
|
90
|
+
temperature,
|
|
91
|
+
maxOutputTokens,
|
|
92
|
+
abortSignal: timeoutController.signal
|
|
93
|
+
});
|
|
94
|
+
clearTimeout(timeoutId);
|
|
95
|
+
usage = toTokenStats(result.usage);
|
|
96
|
+
const validated = validateWithSchema(result.object, schema);
|
|
97
|
+
if (validated !== null) {
|
|
98
|
+
return {
|
|
99
|
+
data: validated,
|
|
100
|
+
success: true,
|
|
101
|
+
status: "success",
|
|
102
|
+
fallbackUsed: false,
|
|
103
|
+
rawText: JSON.stringify(result.object),
|
|
104
|
+
usage
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
status = "schema_error";
|
|
108
|
+
rawText = JSON.stringify(result.object);
|
|
109
|
+
} catch (error) {
|
|
110
|
+
clearTimeout(timeoutId);
|
|
111
|
+
if (timeoutController.signal.aborted || error instanceof Error && error.name === "AbortError") {
|
|
112
|
+
status = "timeout";
|
|
113
|
+
}
|
|
114
|
+
} finally {
|
|
115
|
+
if (abortSignal) {
|
|
116
|
+
abortSignal.removeEventListener("abort", abortHandler);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (allowTextRepair) {
|
|
120
|
+
try {
|
|
121
|
+
const textResult = await provider.generateText({
|
|
122
|
+
systemPrompt,
|
|
123
|
+
userPrompt,
|
|
124
|
+
temperature,
|
|
125
|
+
maxOutputTokens,
|
|
126
|
+
abortSignal: timeoutController.signal
|
|
127
|
+
});
|
|
128
|
+
rawText = textResult.text;
|
|
129
|
+
usage = toTokenStats(textResult.usage);
|
|
130
|
+
const extracted = extractJsonFromText(rawText);
|
|
131
|
+
if (extracted) {
|
|
132
|
+
const validated = validateWithSchema(extracted, schema);
|
|
133
|
+
if (validated !== null) {
|
|
134
|
+
return { data: validated, success: true, status: "success_repaired", fallbackUsed: true, rawText, usage };
|
|
135
|
+
}
|
|
136
|
+
status = "schema_error";
|
|
137
|
+
} else {
|
|
138
|
+
status = "parse_error";
|
|
139
|
+
}
|
|
140
|
+
if (fallbackParser && allowFallbackParser) {
|
|
141
|
+
const fallbackData = fallbackParser(rawText);
|
|
142
|
+
if (fallbackData) {
|
|
143
|
+
const validated = validateWithSchema(fallbackData, schema);
|
|
144
|
+
if (validated !== null) {
|
|
145
|
+
return { data: validated, success: true, status: "success_repaired", fallbackUsed: true, rawText, usage };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
} catch {
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
data: null,
|
|
154
|
+
success: false,
|
|
155
|
+
status,
|
|
156
|
+
fallbackUsed: false,
|
|
157
|
+
rawText,
|
|
158
|
+
error: status === "timeout" ? "Request timed out" : `Failed to generate valid ${schemaName}`,
|
|
159
|
+
usage
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export {
|
|
163
|
+
generateStructured
|
|
164
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/structured-output/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const QuestionTypeSchema: z.ZodEnum<{
|
|
3
|
+
unknown: "unknown";
|
|
4
|
+
count: "count";
|
|
5
|
+
fact: "fact";
|
|
6
|
+
list: "list";
|
|
7
|
+
opinion: "opinion";
|
|
8
|
+
recommendation: "recommendation";
|
|
9
|
+
timeline: "timeline";
|
|
10
|
+
mixed: "mixed";
|
|
11
|
+
}>;
|
|
12
|
+
export declare const ConfidenceLevelSchema: z.ZodEnum<{
|
|
13
|
+
high: "high";
|
|
14
|
+
medium: "medium";
|
|
15
|
+
low: "low";
|
|
16
|
+
}>;
|
|
17
|
+
export declare const CountModeSchema: z.ZodEnum<{
|
|
18
|
+
exact: "exact";
|
|
19
|
+
unknown: "unknown";
|
|
20
|
+
at_least: "at_least";
|
|
21
|
+
}>;
|
|
22
|
+
export declare const EvidenceEntitySchema: z.ZodObject<{
|
|
23
|
+
name: z.ZodString;
|
|
24
|
+
relation: z.ZodString;
|
|
25
|
+
status: z.ZodString;
|
|
26
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
countMode: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
exact: "exact";
|
|
29
|
+
unknown: "unknown";
|
|
30
|
+
at_least: "at_least";
|
|
31
|
+
}>>;
|
|
32
|
+
note: z.ZodOptional<z.ZodString>;
|
|
33
|
+
evidenceUrls: z.ZodArray<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export declare const EvidenceFindingSchema: z.ZodObject<{
|
|
36
|
+
claim: z.ZodString;
|
|
37
|
+
confidence: z.ZodEnum<{
|
|
38
|
+
high: "high";
|
|
39
|
+
medium: "medium";
|
|
40
|
+
low: "low";
|
|
41
|
+
}>;
|
|
42
|
+
evidenceUrls: z.ZodArray<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
export declare const EvidenceAnalysisSchema: z.ZodObject<{
|
|
45
|
+
questionType: z.ZodEnum<{
|
|
46
|
+
unknown: "unknown";
|
|
47
|
+
count: "count";
|
|
48
|
+
fact: "fact";
|
|
49
|
+
list: "list";
|
|
50
|
+
opinion: "opinion";
|
|
51
|
+
recommendation: "recommendation";
|
|
52
|
+
timeline: "timeline";
|
|
53
|
+
mixed: "mixed";
|
|
54
|
+
}>;
|
|
55
|
+
directAnswer: z.ZodString;
|
|
56
|
+
entities: z.ZodArray<z.ZodObject<{
|
|
57
|
+
name: z.ZodString;
|
|
58
|
+
relation: z.ZodString;
|
|
59
|
+
status: z.ZodString;
|
|
60
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
countMode: z.ZodOptional<z.ZodEnum<{
|
|
62
|
+
exact: "exact";
|
|
63
|
+
unknown: "unknown";
|
|
64
|
+
at_least: "at_least";
|
|
65
|
+
}>>;
|
|
66
|
+
note: z.ZodOptional<z.ZodString>;
|
|
67
|
+
evidenceUrls: z.ZodArray<z.ZodString>;
|
|
68
|
+
}, z.core.$strip>>;
|
|
69
|
+
keyFindings: z.ZodArray<z.ZodObject<{
|
|
70
|
+
claim: z.ZodString;
|
|
71
|
+
confidence: z.ZodEnum<{
|
|
72
|
+
high: "high";
|
|
73
|
+
medium: "medium";
|
|
74
|
+
low: "low";
|
|
75
|
+
}>;
|
|
76
|
+
evidenceUrls: z.ZodArray<z.ZodString>;
|
|
77
|
+
}, z.core.$strip>>;
|
|
78
|
+
uncertainties: z.ZodArray<z.ZodString>;
|
|
79
|
+
recommendedUrls: z.ZodArray<z.ZodString>;
|
|
80
|
+
}, z.core.$strip>;
|
|
81
|
+
export type QuestionType = z.infer<typeof QuestionTypeSchema>;
|
|
82
|
+
export type ConfidenceLevel = z.infer<typeof ConfidenceLevelSchema>;
|
|
83
|
+
export type CountMode = z.infer<typeof CountModeSchema>;
|
|
84
|
+
export type EvidenceEntity = z.infer<typeof EvidenceEntitySchema>;
|
|
85
|
+
export type EvidenceFinding = z.infer<typeof EvidenceFindingSchema>;
|
|
86
|
+
export type EvidenceAnalysis = z.infer<typeof EvidenceAnalysisSchema>;
|
|
87
|
+
export declare const EVIDENCE_ANALYSIS_SYSTEM_PROMPT = "\u4F60\u662F\u68C0\u7D22\u8BC1\u636E\u5206\u6790\u5668\u3002\u628A evidence pack \u6574\u7406\u6210 JSON \u7ED3\u8BBA\uFF0C\u4E0D\u5199\u6700\u7EC8\u56DE\u7B54\u3002\n\n\u89C4\u5219\uFF1A\n- \u53EA\u7528 evidence pack \u4E2D\u7684\u4E8B\u5B9E\uFF0C\u7981\u6B62\u8865\u5145\n- \u53EA\u8F93\u51FA JSON\uFF0C\u4E0D\u8981 Markdown\n- evidenceUrls \u5FC5\u987B\u9010\u5B57\u7528 evidence pack \u7ED9\u51FA\u7684\u5B8C\u6574 URL\n- \u8BC1\u636E\u4E0D\u8DB3\u65F6\u7528 uncertainties \u8BF4\u660E\uFF0C\u4E0D\u8981\u786C\u731C\n- \u805A\u5408\u7C7B\u95EE\u9898\uFF08\u53BB\u8FC7/\u8BFB\u8FC7/\u8DD1\u8FC7\u51E0\u6B21\uFF09\uFF1A\u53BB\u91CD\u3001\u533A\u5206 visited/planned/mentioned\n- \u540C\u4E00\u4E8B\u4EF6\u591A\u7BC7\u6587\u7AE0\u4E0D\u7B49\u4E8E\u591A\u6B21\n- countMode \u4F18\u5148 at_least \u6216 unknown\uFF0C\u9664\u975E\u8BC1\u636E\u660E\u786E\u5199\u4E86\u603B\u6570\n- entities\u22646 note\u7B80\u77ED\uFF1BkeyFindings\u22644\uFF1BrecommendedUrls\u22643\n\n\u8F93\u51FAJSON\u683C\u5F0F\uFF1A\n{\n \"questionType\": \"fact|list|count|timeline|recommendation|opinion|mixed|unknown\",\n \"directAnswer\": \"\u4E00\u53E5\u8BDD\u7ED3\u8BBA\",\n \"entities\": [{\"name\":\"\",\"relation\":\"\",\"status\":\"\",\"count\":2,\"countMode\":\"exact|at_least|unknown\",\"note\":\"\",\"evidenceUrls\":[]}],\n \"keyFindings\": [{\"claim\":\"\",\"confidence\":\"high|medium|low\",\"evidenceUrls\":[]}],\n \"uncertainties\": [],\n \"recommendedUrls\": []\n}";
|
|
88
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/structured-output/schemas/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;EAS7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;EAAoC,CAAC;AAEvE,eAAO,MAAM,eAAe;;;;EAA2C,CAAC;AAExE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;iBAQ/B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;iBAIhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOjC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,+BAA+B,s7CAoB1C,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const QuestionTypeSchema = z.enum([
|
|
3
|
+
"fact",
|
|
4
|
+
"list",
|
|
5
|
+
"count",
|
|
6
|
+
"timeline",
|
|
7
|
+
"recommendation",
|
|
8
|
+
"opinion",
|
|
9
|
+
"mixed",
|
|
10
|
+
"unknown"
|
|
11
|
+
]);
|
|
12
|
+
const ConfidenceLevelSchema = z.enum(["high", "medium", "low"]);
|
|
13
|
+
const CountModeSchema = z.enum(["exact", "at_least", "unknown"]);
|
|
14
|
+
const EvidenceEntitySchema = z.object({
|
|
15
|
+
name: z.string(),
|
|
16
|
+
relation: z.string(),
|
|
17
|
+
status: z.string(),
|
|
18
|
+
count: z.number().int().positive().optional(),
|
|
19
|
+
countMode: CountModeSchema.optional(),
|
|
20
|
+
note: z.string().optional(),
|
|
21
|
+
evidenceUrls: z.array(z.string())
|
|
22
|
+
});
|
|
23
|
+
const EvidenceFindingSchema = z.object({
|
|
24
|
+
claim: z.string(),
|
|
25
|
+
confidence: ConfidenceLevelSchema,
|
|
26
|
+
evidenceUrls: z.array(z.string())
|
|
27
|
+
});
|
|
28
|
+
const EvidenceAnalysisSchema = z.object({
|
|
29
|
+
questionType: QuestionTypeSchema,
|
|
30
|
+
directAnswer: z.string(),
|
|
31
|
+
entities: z.array(EvidenceEntitySchema).max(6),
|
|
32
|
+
keyFindings: z.array(EvidenceFindingSchema).max(4),
|
|
33
|
+
uncertainties: z.array(z.string()).max(6),
|
|
34
|
+
recommendedUrls: z.array(z.string()).max(3)
|
|
35
|
+
});
|
|
36
|
+
const EVIDENCE_ANALYSIS_SYSTEM_PROMPT = `\u4F60\u662F\u68C0\u7D22\u8BC1\u636E\u5206\u6790\u5668\u3002\u628A evidence pack \u6574\u7406\u6210 JSON \u7ED3\u8BBA\uFF0C\u4E0D\u5199\u6700\u7EC8\u56DE\u7B54\u3002
|
|
37
|
+
|
|
38
|
+
\u89C4\u5219\uFF1A
|
|
39
|
+
- \u53EA\u7528 evidence pack \u4E2D\u7684\u4E8B\u5B9E\uFF0C\u7981\u6B62\u8865\u5145
|
|
40
|
+
- \u53EA\u8F93\u51FA JSON\uFF0C\u4E0D\u8981 Markdown
|
|
41
|
+
- evidenceUrls \u5FC5\u987B\u9010\u5B57\u7528 evidence pack \u7ED9\u51FA\u7684\u5B8C\u6574 URL
|
|
42
|
+
- \u8BC1\u636E\u4E0D\u8DB3\u65F6\u7528 uncertainties \u8BF4\u660E\uFF0C\u4E0D\u8981\u786C\u731C
|
|
43
|
+
- \u805A\u5408\u7C7B\u95EE\u9898\uFF08\u53BB\u8FC7/\u8BFB\u8FC7/\u8DD1\u8FC7\u51E0\u6B21\uFF09\uFF1A\u53BB\u91CD\u3001\u533A\u5206 visited/planned/mentioned
|
|
44
|
+
- \u540C\u4E00\u4E8B\u4EF6\u591A\u7BC7\u6587\u7AE0\u4E0D\u7B49\u4E8E\u591A\u6B21
|
|
45
|
+
- countMode \u4F18\u5148 at_least \u6216 unknown\uFF0C\u9664\u975E\u8BC1\u636E\u660E\u786E\u5199\u4E86\u603B\u6570
|
|
46
|
+
- entities\u22646 note\u7B80\u77ED\uFF1BkeyFindings\u22644\uFF1BrecommendedUrls\u22643
|
|
47
|
+
|
|
48
|
+
\u8F93\u51FAJSON\u683C\u5F0F\uFF1A
|
|
49
|
+
{
|
|
50
|
+
"questionType": "fact|list|count|timeline|recommendation|opinion|mixed|unknown",
|
|
51
|
+
"directAnswer": "\u4E00\u53E5\u8BDD\u7ED3\u8BBA",
|
|
52
|
+
"entities": [{"name":"","relation":"","status":"","count":2,"countMode":"exact|at_least|unknown","note":"","evidenceUrls":[]}],
|
|
53
|
+
"keyFindings": [{"claim":"","confidence":"high|medium|low","evidenceUrls":[]}],
|
|
54
|
+
"uncertainties": [],
|
|
55
|
+
"recommendedUrls": []
|
|
56
|
+
}`;
|
|
57
|
+
export {
|
|
58
|
+
ConfidenceLevelSchema,
|
|
59
|
+
CountModeSchema,
|
|
60
|
+
EVIDENCE_ANALYSIS_SYSTEM_PROMPT,
|
|
61
|
+
EvidenceAnalysisSchema,
|
|
62
|
+
EvidenceEntitySchema,
|
|
63
|
+
EvidenceFindingSchema,
|
|
64
|
+
QuestionTypeSchema
|
|
65
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { TokenUsageStats } from '../intelligence/types.js';
|
|
3
|
+
export type { TokenUsageStats } from '../intelligence/types.js';
|
|
4
|
+
export type StructuredOutputStatus = 'success' | 'success_repaired' | 'schema_error' | 'parse_error' | 'request_error' | 'timeout';
|
|
5
|
+
export interface StructuredOutputConfig<T> {
|
|
6
|
+
schema: z.ZodSchema<T>;
|
|
7
|
+
schemaName?: string;
|
|
8
|
+
schemaDescription?: string;
|
|
9
|
+
fallbackParser?: (rawText: string) => T | null;
|
|
10
|
+
repairStrategy?: 'strict' | 'lenient' | 'none';
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
maxOutputTokens?: number;
|
|
13
|
+
temperature?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface RepairResult<T> {
|
|
16
|
+
data: T | null;
|
|
17
|
+
success: boolean;
|
|
18
|
+
repairsApplied: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface StructuredOutputResult<T> {
|
|
21
|
+
data: T | null;
|
|
22
|
+
success: boolean;
|
|
23
|
+
status: StructuredOutputStatus;
|
|
24
|
+
fallbackUsed: boolean;
|
|
25
|
+
rawText?: string;
|
|
26
|
+
error?: string;
|
|
27
|
+
usage?: TokenUsageStats;
|
|
28
|
+
}
|
|
29
|
+
export interface StructuredOutputProvider {
|
|
30
|
+
generateObject<T>(options: {
|
|
31
|
+
schema: z.ZodSchema<T>;
|
|
32
|
+
schemaName?: string;
|
|
33
|
+
schemaDescription?: string;
|
|
34
|
+
systemPrompt: string;
|
|
35
|
+
userPrompt: string;
|
|
36
|
+
temperature?: number;
|
|
37
|
+
maxOutputTokens?: number;
|
|
38
|
+
abortSignal?: AbortSignal;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
object: T;
|
|
41
|
+
usage?: {
|
|
42
|
+
inputTokens?: number;
|
|
43
|
+
outputTokens?: number;
|
|
44
|
+
totalTokens?: number;
|
|
45
|
+
};
|
|
46
|
+
}>;
|
|
47
|
+
generateText(options: {
|
|
48
|
+
systemPrompt: string;
|
|
49
|
+
userPrompt: string;
|
|
50
|
+
temperature?: number;
|
|
51
|
+
maxOutputTokens?: number;
|
|
52
|
+
abortSignal?: AbortSignal;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
text: string;
|
|
55
|
+
usage?: {
|
|
56
|
+
inputTokens?: number;
|
|
57
|
+
outputTokens?: number;
|
|
58
|
+
totalTokens?: number;
|
|
59
|
+
};
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
62
|
+
export interface GenerateStructuredOptions<T> {
|
|
63
|
+
config: StructuredOutputConfig<T>;
|
|
64
|
+
provider: StructuredOutputProvider;
|
|
65
|
+
systemPrompt: string;
|
|
66
|
+
userPrompt: string;
|
|
67
|
+
abortSignal?: AbortSignal;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/structured-output/types.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type Tool } from "ai";
|
|
2
|
+
export declare const toggleThemeTool: Tool<{
|
|
3
|
+
theme: "system" | "light" | "dark";
|
|
4
|
+
}, never>;
|
|
5
|
+
export declare const navigateToArticleTool: Tool<{
|
|
6
|
+
slug: string;
|
|
7
|
+
sectionId?: string | undefined;
|
|
8
|
+
lang?: "zh" | "en" | undefined;
|
|
9
|
+
}, never>;
|
|
10
|
+
export declare const scrollToSectionTool: Tool<{
|
|
11
|
+
sectionId: string;
|
|
12
|
+
highlight?: boolean | undefined;
|
|
13
|
+
behavior?: "smooth" | "instant" | undefined;
|
|
14
|
+
}, never>;
|
|
15
|
+
export declare const toggleReadingModeTool: Tool<{
|
|
16
|
+
enabled?: boolean | undefined;
|
|
17
|
+
fontSize?: "md" | "sm" | "lg" | "xl" | undefined;
|
|
18
|
+
fontFamily?: string | undefined;
|
|
19
|
+
}, never>;
|
|
20
|
+
export declare const highlightTextTool: Tool<{
|
|
21
|
+
text?: string | undefined;
|
|
22
|
+
selector?: string | undefined;
|
|
23
|
+
style?: "info" | "success" | "accent" | "warning" | undefined;
|
|
24
|
+
duration?: number | undefined;
|
|
25
|
+
scrollIntoView?: boolean | undefined;
|
|
26
|
+
}, never>;
|
|
27
|
+
export declare const setPreferenceTool: Tool<{
|
|
28
|
+
key: string;
|
|
29
|
+
value: unknown;
|
|
30
|
+
}, never>;
|
|
31
|
+
interface SearchResultItem {
|
|
32
|
+
title: string;
|
|
33
|
+
url: string;
|
|
34
|
+
excerpt: string;
|
|
35
|
+
categories: string[];
|
|
36
|
+
tags: string[];
|
|
37
|
+
keyPoints: string[];
|
|
38
|
+
dateTime: number;
|
|
39
|
+
lang: string;
|
|
40
|
+
score?: number;
|
|
41
|
+
}
|
|
42
|
+
export declare const searchArticlesTool: Tool<{
|
|
43
|
+
query: string;
|
|
44
|
+
limit: number;
|
|
45
|
+
includeProjects: boolean;
|
|
46
|
+
}, {
|
|
47
|
+
articles: SearchResultItem[];
|
|
48
|
+
projects: {
|
|
49
|
+
name: string;
|
|
50
|
+
url: string;
|
|
51
|
+
description: string;
|
|
52
|
+
}[];
|
|
53
|
+
}>;
|
|
54
|
+
type AnyTool = Tool;
|
|
55
|
+
export declare function registerTool(name: string, definition: AnyTool): void;
|
|
56
|
+
export declare function unregisterTool(name: string): void;
|
|
57
|
+
export declare function getAllTools(): Record<string, AnyTool>;
|
|
58
|
+
export declare const allTools: Record<string, AnyTool>;
|
|
59
|
+
export type ToolName = string;
|
|
60
|
+
export declare function getClientSideTools(): string[];
|
|
61
|
+
export declare function getServerSideTools(): string[];
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=action-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-tools.d.ts","sourceRoot":"","sources":["../../src/tools/action-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC;AAIrC,eAAO,MAAM,eAAe;;SAU1B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;SAoBhC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;SAoB9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;SAgBhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;SAwB5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;SAS5B,CAAC;AAEH,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB;;;;;cAqBjB,gBAAgB,EAAE;cAClB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE;EAwBhE,CAAC;AAYH,KAAK,OAAO,GAAG,IAAI,CAAC;AAGpB,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAEpE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErD;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAgB,CAAC;AAE9D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAY9B,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAO7C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAO7C"}
|