@h-ai/ai 0.1.0-alpha8 → 1.0.0-beta.1
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.en.md +647 -0
- package/README.ja.md +647 -0
- package/README.md +477 -1693
- package/dist/ai-audio-types-4R5yUAVl.d.ts +614 -0
- package/dist/ai-audio-ws-protocol-nfhO0tOo.d.ts +7605 -0
- package/dist/browser.d.ts +8 -5
- package/dist/browser.js +3 -2
- package/dist/chunk-GMQFIWND.js +254 -0
- package/dist/chunk-GMQFIWND.js.map +1 -0
- package/dist/chunk-HEVXR252.js +965 -0
- package/dist/chunk-HEVXR252.js.map +1 -0
- package/dist/chunk-HYMP57AC.js +118 -0
- package/dist/chunk-HYMP57AC.js.map +1 -0
- package/dist/client/index.d.ts +63 -231
- package/dist/client/index.js +2 -1
- package/dist/index.d.ts +48 -15
- package/dist/index.js +6714 -1695
- package/dist/index.js.map +1 -1
- package/package.json +43 -21
- package/dist/ai-reasoning-types-YcmdAlAU.d.ts +0 -2813
- package/dist/ai-types-Dy8dOY4z.d.ts +0 -1095
- package/dist/api/index.d.ts +0 -628
- package/dist/api/index.js +0 -243
- package/dist/api/index.js.map +0 -1
- package/dist/chunk-5P2VX6FO.js +0 -462
- package/dist/chunk-5P2VX6FO.js.map +0 -1
- package/dist/chunk-ABP7RKIP.js +0 -311
- package/dist/chunk-ABP7RKIP.js.map +0 -1
|
@@ -0,0 +1,965 @@
|
|
|
1
|
+
import { HaiAIError } from './chunk-HYMP57AC.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import process from 'process';
|
|
4
|
+
import { core, err, ok } from '@h-ai/core';
|
|
5
|
+
import { ChunkOptionsSchema, CleanOptionsSchema } from '@h-ai/datapipe';
|
|
6
|
+
import { AUDIO_WS_PATH as AUDIO_WS_PATH$1, AudioFormatSchema as AudioFormatSchema$1, AudioWsClientMessageSchema as AudioWsClientMessageSchema$1, AudioWsDoneMessageSchema as AudioWsDoneMessageSchema$1, AudioWsStartMessageSchema as AudioWsStartMessageSchema$1, AudioWsTextMessageSchema as AudioWsTextMessageSchema$1 } from '@h-ai/api-contract';
|
|
7
|
+
|
|
8
|
+
var CompressionStrategySchema = z.enum(["summary", "sliding-window", "hybrid"]);
|
|
9
|
+
var EntityTypeSchema = z.enum(["person", "project", "concept", "organization", "location", "event", "other"]);
|
|
10
|
+
var MemoryTypeSchema = z.enum(["fact", "preference", "event", "entity", "instruction"]);
|
|
11
|
+
|
|
12
|
+
// messages/en-US.json
|
|
13
|
+
var en_US_default = {
|
|
14
|
+
ai_mcpInvalidToolSchema: "Invalid input schema for MCP tool: {name}",
|
|
15
|
+
ai_mcpInvalidToolInput: "Invalid input for MCP tool: {name}",
|
|
16
|
+
ai_mcpInvalidResource: "MCP resource must contain either valid text or blob: {uri}",
|
|
17
|
+
ai_mcpInvalidPrompt: "Invalid MCP prompt arguments or messages: {name}",
|
|
18
|
+
$schema: "https://inlang.com/schema/inlang-message-format",
|
|
19
|
+
ai_notInitialized: "AI service not initialized. Call ai.init() first.",
|
|
20
|
+
ai_initFailed: "Failed to initialize AI service: {error}",
|
|
21
|
+
ai_initInProgress: "AI service initialization is already in progress.",
|
|
22
|
+
ai_requestTimeout: "Request timeout",
|
|
23
|
+
ai_internalError: "Internal error: {error}",
|
|
24
|
+
ai_mcpToolNotFound: "MCP tool '{name}' not found",
|
|
25
|
+
ai_mcpToolFailed: "MCP tool '{name}' execution failed: {error}",
|
|
26
|
+
ai_mcpResourceNotFound: "MCP resource '{uri}' not found",
|
|
27
|
+
ai_mcpResourceFailed: "MCP resource '{uri}' read failed: {error}",
|
|
28
|
+
ai_mcpPromptNotFound: "MCP prompt '{name}' not found",
|
|
29
|
+
ai_mcpPromptMissingArg: "MCP prompt '{name}' missing required argument '{arg}'",
|
|
30
|
+
ai_mcpPromptFailed: "MCP prompt '{name}' execution failed: {error}",
|
|
31
|
+
ai_toolNotFound: "Tool '{name}' not found",
|
|
32
|
+
ai_toolInvalidJson: "Invalid JSON in tool call arguments",
|
|
33
|
+
ai_toolTimeout: "Tool '{name}' timed out or was cancelled after {ms}ms",
|
|
34
|
+
ai_toolAlreadyRegistered: "Tool '{name}' is already registered; use replace() to replace it explicitly",
|
|
35
|
+
ai_toolForbidden: "Tool '{name}' execution is not authorized",
|
|
36
|
+
ai_configError: "AI config validation failed: {error}",
|
|
37
|
+
ai_llmRecordFailed: "Chat record save failed: {error}",
|
|
38
|
+
ai_llmHistoryFailed: "Chat history query failed: {error}",
|
|
39
|
+
ai_generateObjectFailed: "Structured output parsing failed: {error}",
|
|
40
|
+
ai_generateObjectRepair: "The previous output could not be parsed into the required structure ({error}). Output only JSON conforming to the schema, with no extra text.",
|
|
41
|
+
ai_embeddingApiFailed: "Embedding API call failed: {error}",
|
|
42
|
+
ai_embeddingModelNotFound: "Embedding model '{model}' not found",
|
|
43
|
+
ai_embeddingInputTooLong: "Embedding input text exceeds maximum length",
|
|
44
|
+
ai_reasoningFailed: "Reasoning execution failed: {error}",
|
|
45
|
+
ai_reasoningMaxRounds: "Reasoning rounds limit reached ({rounds} rounds)",
|
|
46
|
+
ai_reasoningStrategyNotFound: "Reasoning strategy '{strategy}' not found",
|
|
47
|
+
ai_retrievalFailed: "Retrieval execution failed: {error}",
|
|
48
|
+
ai_retrievalSourceNotFound: "Retrieval source '{source}' not configured",
|
|
49
|
+
ai_ragFailed: "RAG execution failed: {error}",
|
|
50
|
+
ai_ragContextBuildFailed: "RAG context build failed: {error}",
|
|
51
|
+
ai_knowledgeSetupFailed: "Knowledge base setup failed: {error}",
|
|
52
|
+
ai_knowledgeIngestFailed: "Knowledge ingestion failed: {error}",
|
|
53
|
+
ai_knowledgeRetrieveFailed: "Knowledge retrieval failed: {error}",
|
|
54
|
+
ai_knowledgeEntityExtractFailed: "Entity extraction failed: {error}",
|
|
55
|
+
ai_knowledgeNotSetup: "Knowledge base not initialized. Call ai.knowledge.setup() first.",
|
|
56
|
+
ai_knowledgeCollectionNotFound: "Knowledge collection '{collection}' not found",
|
|
57
|
+
ai_memoryExtractFailed: "Memory extraction failed: {error}",
|
|
58
|
+
ai_memoryStoreFailed: "Memory storage failed: {error}",
|
|
59
|
+
ai_memoryRecallFailed: "Memory recall failed: {error}",
|
|
60
|
+
ai_memoryNotFound: "Memory entry '{id}' not found",
|
|
61
|
+
ai_memoryEphemeralFallbackDenied: "Memory provider 'mem0' cannot map vector backend '{backend}' to a persistent store. Use qdrant, or explicitly allow ephemeral fallback in development or E2E only.",
|
|
62
|
+
ai_memorySharedBackendRequired: "Production Mem0 memory requires an actual persistent qdrant backend; ephemeral fallback is restricted to development or explicit E2E.",
|
|
63
|
+
ai_memoryBackendLifecycleUnsupported: "Mem0 pgvector is unsupported: its SDK keeps a private PostgreSQL connection without a public close API. Use Mem0 Qdrant or native memory with pgvector.",
|
|
64
|
+
ai_memoryBackendConnectionRequired: "Mem0 backend '{backend}' requires complete connection settings before it can be treated as persistent.",
|
|
65
|
+
ai_memoryBackendSdkIncompatible: "Mem0 Qdrant requires @qdrant/js-client-rest 1.18.0 with the public search method. Install the tested peer version before starting.",
|
|
66
|
+
ai_memoryListIncomplete: "Mem0 cannot produce a complete list for more than {limit} subject candidates. Listing and filtered deletion were rejected without partial results or deletion.",
|
|
67
|
+
ai_memoryClearRequiresFilter: "clear() requires at least one filter (objectId / types / scope); to wipe all memories use ai.memory.admin.clearAll({ confirm: true })",
|
|
68
|
+
ai_memoryClearAllUnconfirmed: "admin.clearAll() requires explicit confirmation: pass { confirm: true }",
|
|
69
|
+
ai_memoryEnrichFailed: "Memory enrichment failed: {error}",
|
|
70
|
+
ai_memoryPromoteFailed: "Memory promotion (long-term consolidation) failed: {error}",
|
|
71
|
+
ai_personaNotFound: "Persona '{id}' not found",
|
|
72
|
+
ai_personaSaveFailed: "Persona save failed: {error}",
|
|
73
|
+
ai_contextCompressFailed: "Context compression failed: {error}",
|
|
74
|
+
ai_contextBudgetExceeded: "Protected context uses {tokens} tokens and cannot fit within the {budget}-token compression budget.",
|
|
75
|
+
ai_contextSummarizeFailed: "Context summarization failed: {error}",
|
|
76
|
+
ai_contextTokenEstimateFailed: "Token estimation failed: {error}",
|
|
77
|
+
ai_turnNotFound: "Conversation turn '{turnId}' not found",
|
|
78
|
+
ai_turnInvalidState: "Conversation turn '{turnId}' expired or was committed with different content",
|
|
79
|
+
ai_contextScopeRequired: "Context requires non-empty objectId and sessionId",
|
|
80
|
+
ai_contextBusy: "Context manager is busy: a generation is already in progress (concurrency='reject')",
|
|
81
|
+
ai_storeFailed: "Store operation failed: {error}",
|
|
82
|
+
ai_storeNotAvailable: "Store backend not available, degraded to memory mode",
|
|
83
|
+
ai_sessionNotFound: "Session '{id}' not found",
|
|
84
|
+
ai_sessionFailed: "Session operation failed: {error}",
|
|
85
|
+
ai_rerankApiFailed: "Rerank API call failed: {error}",
|
|
86
|
+
ai_rerankInvalidRequest: "Invalid rerank request: {reason}",
|
|
87
|
+
ai_fileParseFailed: "File parsing failed: {error}",
|
|
88
|
+
ai_fileUnsupportedFormat: "Unsupported file format: {mimeType}",
|
|
89
|
+
ai_fileOcrFailed: "OCR recognition failed: {error}",
|
|
90
|
+
ai_fileInvalidContent: "Invalid file content: {reason}",
|
|
91
|
+
ai_configMissingApiKey: "API Key is required for scenario '{scenario}'",
|
|
92
|
+
ai_audioNotInitialized: "Audio service not initialized. Call ai.init() first.",
|
|
93
|
+
ai_audioInvalidRequest: "Invalid audio request: {reason}",
|
|
94
|
+
ai_audioModelNotFound: "Audio model '{model}' not found. Register it in audio.models of ai.init().",
|
|
95
|
+
ai_audioMissingApiKey: "Audio provider '{provider}' is missing credentials (API Key or App/Access Key).",
|
|
96
|
+
ai_audioMissingBaseUrl: "Audio provider '{provider}' is missing an endpoint. Configure baseUrl in the model entry.",
|
|
97
|
+
ai_audioUnsupportedInput: "Provider '{provider}' does not support this input mode: {reason}",
|
|
98
|
+
ai_audioUpstreamError: "Audio upstream service error: {error}",
|
|
99
|
+
ai_audioProtocolError: "Audio protocol error: {error}",
|
|
100
|
+
ai_audioConnectionFailed: "Audio connection failed: {error}",
|
|
101
|
+
ai_audioTimeout: "Audio request timed out",
|
|
102
|
+
ai_audioInputTooLarge: "Input audio exceeds size limit ({limit} bytes)",
|
|
103
|
+
ai_audioCancelled: "Audio request was cancelled",
|
|
104
|
+
ai_imageInvalidRequest: "Image prompt must not be empty",
|
|
105
|
+
ai_imageInvalidSize: "Image width and height must be positive integers",
|
|
106
|
+
ai_imageInvalidReferenceImage: "Each reference image must contain non-empty bytes and a valid image MIME type",
|
|
107
|
+
ai_imageModelNotFound: "Image model '{model}' not found. Register it in image.models of ai.init().",
|
|
108
|
+
ai_imageMissingApiKey: "Image provider '{provider}' is missing an API key.",
|
|
109
|
+
ai_imageUpstreamError: "Image upstream service returned HTTP {status}",
|
|
110
|
+
ai_imageAuthenticationFailed: "Image upstream authentication failed (HTTP 401); check the API key",
|
|
111
|
+
ai_imagePaymentRequired: "Image upstream billing was rejected (HTTP 402); check the account balance or API key budget",
|
|
112
|
+
ai_imageAccessDenied: "Image upstream access was denied (HTTP 403); check API key permissions and model access",
|
|
113
|
+
ai_imageProtocolError: "Image provider returned an invalid response",
|
|
114
|
+
ai_imageRequestFailed: "Image generation request failed",
|
|
115
|
+
ai_imageCancelled: "Image generation request was cancelled",
|
|
116
|
+
ai_imageDownloadBlocked: "Image download URL or resolved address is not allowed",
|
|
117
|
+
ai_imageTooLarge: "Image bytes or image count exceeds the configured limit",
|
|
118
|
+
ai_imageTimeout: "Image generation or download timed out",
|
|
119
|
+
ai_a2aNotConfigured: "A2A service not configured. Provide 'a2a' config in ai.init().",
|
|
120
|
+
ai_a2aHandleFailed: "A2A request handling failed: {error}",
|
|
121
|
+
ai_a2aRemoteCallFailed: "A2A remote call to '{url}' failed: {error}",
|
|
122
|
+
ai_a2aAuthFailed: "A2A authentication failed: {error}",
|
|
123
|
+
ai_a2aListMessagesFailed: "A2A message listing failed. Please try again later",
|
|
124
|
+
ai_a2aMessageStoreFailed: "A2A message persistence failed. Reconcile the task outcome",
|
|
125
|
+
ai_contextMemoryTasksFailed: "{count} background memory extraction tasks failed and may have partially completed. Reconcile their effects; no automatic retry was performed",
|
|
126
|
+
ai_storeIndexMismatch: "AI store index definition does not match. Reconcile the database schema before retrying",
|
|
127
|
+
ai_sharedBackendRequired: "Production AI requires shared state; initialize shared database/vector services or inject a trusted provider declaring stateScope shared.",
|
|
128
|
+
ai_a2aStateUnavailable: "A2A shared state unavailable",
|
|
129
|
+
ai_a2aExecutionLost: "Execution ownership lost",
|
|
130
|
+
ai_a2aJournalLimit: "A2A execution journal limit exceeded",
|
|
131
|
+
ai_a2aLeaseExpired: "Execution lease expired",
|
|
132
|
+
ai_a2aUpdateConflict: "Concurrent A2A update conflict",
|
|
133
|
+
ai_a2aContextUnavailable: "Context is unavailable",
|
|
134
|
+
ai_a2aRuntimeClosed: "A2A runtime is closed",
|
|
135
|
+
ai_a2aInvalidMessage: "Invalid A2A message size or identifier",
|
|
136
|
+
ai_a2aIdempotencyConflict: "Idempotency message content changed",
|
|
137
|
+
ai_a2aTaskAdvanced: "A later message has already advanced this task",
|
|
138
|
+
ai_a2aTaskNotAccepting: "Task is not accepting a new message",
|
|
139
|
+
ai_a2aReceiptLimit: "A2A message receipt limit exceeded",
|
|
140
|
+
ai_a2aContextMismatch: "Context does not match task",
|
|
141
|
+
ai_a2aReferenceLimit: "Too many reference tasks",
|
|
142
|
+
ai_a2aEventTaskMismatch: "Execution event task identifier mismatch",
|
|
143
|
+
ai_a2aExecutionNotWritable: "Execution is no longer writable",
|
|
144
|
+
ai_a2aOutputLimit: "A2A output queue limit exceeded",
|
|
145
|
+
ai_a2aExecutionInterrupted: "A2A execution interrupted",
|
|
146
|
+
ai_a2aSubscriptionAdvanced: "A later message advanced the subscription",
|
|
147
|
+
ai_a2aExecutorAlreadyRegistered: "A2A executor is already registered; close AI before replacing it"
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// messages/ja-JP.json
|
|
151
|
+
var ja_JP_default = {
|
|
152
|
+
ai_mcpInvalidToolSchema: "MCP\u30C4\u30FC\u30EB\u306E\u5165\u529B\u30B9\u30AD\u30FC\u30DE\u304C\u7121\u52B9\u3067\u3059: {name}",
|
|
153
|
+
ai_mcpInvalidToolInput: "MCP\u30C4\u30FC\u30EB\u306E\u5165\u529B\u304C\u7121\u52B9\u3067\u3059: {name}",
|
|
154
|
+
ai_mcpInvalidResource: "MCP\u30EA\u30BD\u30FC\u30B9\u306B\u306F\u6709\u52B9\u306A\u30C6\u30AD\u30B9\u30C8\u307E\u305F\u306Fblob\u304C\u5FC5\u8981\u3067\u3059: {uri}",
|
|
155
|
+
ai_mcpInvalidPrompt: "MCP\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u5F15\u6570\u307E\u305F\u306F\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u7121\u52B9\u3067\u3059: {name}",
|
|
156
|
+
$schema: "https://inlang.com/schema/inlang-message-format",
|
|
157
|
+
ai_notInitialized: "AI\u30B5\u30FC\u30D3\u30B9\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5148\u306Bai.init()\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
158
|
+
ai_initFailed: "AI\u30B5\u30FC\u30D3\u30B9\u306E\u521D\u671F\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
159
|
+
ai_initInProgress: "AI\u30B5\u30FC\u30D3\u30B9\u306E\u521D\u671F\u5316\u306F\u65E2\u306B\u5B9F\u884C\u4E2D\u3067\u3059\u3002",
|
|
160
|
+
ai_requestTimeout: "\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F",
|
|
161
|
+
ai_internalError: "\u5185\u90E8\u30A8\u30E9\u30FC: {error}",
|
|
162
|
+
ai_mcpToolNotFound: "MCP\u30C4\u30FC\u30EB\u300C{name}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
163
|
+
ai_mcpToolFailed: "MCP\u30C4\u30FC\u30EB\u300C{name}\u300D\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
164
|
+
ai_mcpResourceNotFound: "MCP\u30EA\u30BD\u30FC\u30B9\u300C{uri}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
165
|
+
ai_mcpResourceFailed: "MCP\u30EA\u30BD\u30FC\u30B9\u300C{uri}\u300D\u306E\u8AAD\u307F\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
166
|
+
ai_mcpPromptNotFound: "MCP\u30D7\u30ED\u30F3\u30D7\u30C8\u300C{name}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
167
|
+
ai_mcpPromptMissingArg: "MCP\u30D7\u30ED\u30F3\u30D7\u30C8\u300C{name}\u300D\u306B\u5FC5\u9808\u5F15\u6570\u300C{arg}\u300D\u304C\u3042\u308A\u307E\u305B\u3093",
|
|
168
|
+
ai_mcpPromptFailed: "MCP\u30D7\u30ED\u30F3\u30D7\u30C8\u300C{name}\u300D\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
169
|
+
ai_toolNotFound: "\u30C4\u30FC\u30EB\u300C{name}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
170
|
+
ai_toolInvalidJson: "\u30C4\u30FC\u30EB\u547C\u3073\u51FA\u3057\u306E\u5F15\u6570\u306B\u7121\u52B9\u306AJSON\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059",
|
|
171
|
+
ai_toolTimeout: "\u30C4\u30FC\u30EB\u300C{name}\u300D\u306F{ms}ms\u5F8C\u306B\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u305F\u304B\u3001\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F",
|
|
172
|
+
ai_toolAlreadyRegistered: "\u30C4\u30FC\u30EB\u300C{name}\u300D\u306F\u767B\u9332\u6E08\u307F\u3067\u3059\u3002\u660E\u793A\u7684\u306B\u7F6E\u304D\u63DB\u3048\u308B\u306B\u306Freplace()\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
173
|
+
ai_toolForbidden: "\u30C4\u30FC\u30EB\u300C{name}\u300D\u306E\u5B9F\u884C\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
174
|
+
ai_configError: "AI\u8A2D\u5B9A\u306E\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
175
|
+
ai_llmRecordFailed: "\u30C1\u30E3\u30C3\u30C8\u8A18\u9332\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
176
|
+
ai_llmHistoryFailed: "\u30C1\u30E3\u30C3\u30C8\u5C65\u6B74\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
177
|
+
ai_generateObjectFailed: "\u69CB\u9020\u5316\u51FA\u529B\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
178
|
+
ai_generateObjectRepair: "\u524D\u306E\u51FA\u529B\u3092\u5FC5\u8981\u306A\u69CB\u9020\u306B\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08{error}\uFF09\u3002\u8FFD\u52A0\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3081\u305A\u3001\u30B9\u30AD\u30FC\u30DE\u306B\u6E96\u62E0\u3057\u305FJSON\u306E\u307F\u3092\u51FA\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
179
|
+
ai_embeddingApiFailed: "\u57CB\u3081\u8FBC\u307FAPI\u306E\u547C\u3073\u51FA\u3057\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
180
|
+
ai_embeddingModelNotFound: "\u57CB\u3081\u8FBC\u307F\u30E2\u30C7\u30EB\u300C{model}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
181
|
+
ai_embeddingInputTooLong: "\u57CB\u3081\u8FBC\u307F\u5165\u529B\u30C6\u30AD\u30B9\u30C8\u304C\u6700\u5927\u9577\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
|
|
182
|
+
ai_reasoningFailed: "\u63A8\u8AD6\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
183
|
+
ai_reasoningMaxRounds: "\u63A8\u8AD6\u56DE\u6570\u306E\u4E0A\u9650\u306B\u9054\u3057\u307E\u3057\u305F\uFF08{rounds}\u56DE\uFF09",
|
|
184
|
+
ai_reasoningStrategyNotFound: "\u63A8\u8AD6\u6226\u7565\u300C{strategy}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
185
|
+
ai_retrievalFailed: "\u691C\u7D22\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
186
|
+
ai_retrievalSourceNotFound: "\u691C\u7D22\u30BD\u30FC\u30B9\u300C{source}\u300D\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
187
|
+
ai_ragFailed: "RAG\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
188
|
+
ai_ragContextBuildFailed: "RAG\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u69CB\u7BC9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
189
|
+
ai_knowledgeSetupFailed: "\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306E\u8A2D\u5B9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
190
|
+
ai_knowledgeIngestFailed: "\u30CA\u30EC\u30C3\u30B8\u306E\u53D6\u308A\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
191
|
+
ai_knowledgeRetrieveFailed: "\u30CA\u30EC\u30C3\u30B8\u306E\u691C\u7D22\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
192
|
+
ai_knowledgeEntityExtractFailed: "\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\u62BD\u51FA\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
193
|
+
ai_knowledgeNotSetup: "\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5148\u306Bai.knowledge.setup()\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
194
|
+
ai_knowledgeCollectionNotFound: "\u30CA\u30EC\u30C3\u30B8\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u300C{collection}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
195
|
+
ai_memoryExtractFailed: "\u30E1\u30E2\u30EA\u30FC\u306E\u62BD\u51FA\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
196
|
+
ai_memoryStoreFailed: "\u30E1\u30E2\u30EA\u30FC\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
197
|
+
ai_memoryRecallFailed: "\u30E1\u30E2\u30EA\u30FC\u306E\u60F3\u8D77\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
198
|
+
ai_memoryNotFound: "\u30E1\u30E2\u30EA\u30FC\u30A8\u30F3\u30C8\u30EA\u30FC\u300C{id}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
199
|
+
ai_memoryEphemeralFallbackDenied: "\u30E1\u30E2\u30EA\u30FC\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC mem0 \u306F\u30D9\u30AF\u30C8\u30EB\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9 '{backend}' \u3092\u6C38\u7D9A\u30B9\u30C8\u30A2\u306B\u5BFE\u5FDC\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3002qdrant \u3092\u4F7F\u7528\u3059\u308B\u304B\u3001\u958B\u767A\u74B0\u5883\u307E\u305F\u306F E2E \u3067\u306E\u307F\u4E00\u6642\u4FDD\u5B58\u3078\u306E\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3092\u660E\u793A\u7684\u306B\u8A31\u53EF\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
200
|
+
ai_memorySharedBackendRequired: "\u672C\u756A\u74B0\u5883\u306E Mem0 \u30E1\u30E2\u30EA\u30FC\u306B\u306F\u3001\u6C38\u7D9A\u5316\u3055\u308C\u305F\u5B9F\u969B\u306E qdrant \u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059\u3002\u4E00\u6642\u30E1\u30E2\u30EA\u30FC\u3078\u306E\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u306F\u958B\u767A\u74B0\u5883\u307E\u305F\u306F\u660E\u793A\u7684\u306A E2E \u306B\u9650\u3089\u308C\u307E\u3059\u3002",
|
|
201
|
+
ai_memoryBackendLifecycleUnsupported: "Mem0 pgvector \u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002SDK \u304C PostgreSQL \u63A5\u7D9A\u3092\u5185\u90E8\u3067\u4FDD\u6301\u3057\u3001\u516C\u958B\u306E close API \u3092\u63D0\u4F9B\u3057\u3066\u3044\u307E\u305B\u3093\u3002Mem0 Qdrant\u3001\u307E\u305F\u306F pgvector \u3092\u4F7F\u3046 native \u30E1\u30E2\u30EA\u30FC\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
202
|
+
ai_memoryBackendConnectionRequired: "Mem0 \u30D0\u30C3\u30AF\u30A8\u30F3\u30C9 '{backend}' \u3092\u6C38\u7D9A\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u3068\u3057\u3066\u6271\u3046\u306B\u306F\u3001\u5B8C\u5168\u306A\u63A5\u7D9A\u8A2D\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002",
|
|
203
|
+
ai_memoryBackendSdkIncompatible: "Mem0 Qdrant \u306B\u306F\u516C\u958B\u306E search \u30E1\u30BD\u30C3\u30C9\u3092\u6301\u3064 @qdrant/js-client-rest 1.18.0 \u304C\u5FC5\u8981\u3067\u3059\u3002\u8D77\u52D5\u524D\u306B\u691C\u8A3C\u6E08\u307F\u306E peer \u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
204
|
+
ai_memoryListIncomplete: "Mem0 \u306F\u5BFE\u8C61\u5019\u88DC\u304C {limit} \u4EF6\u3092\u8D85\u3048\u308B\u5834\u5408\u3001\u5B8C\u5168\u306A\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3002\u4E00\u89A7\u53D6\u5F97\u3068\u6761\u4EF6\u4ED8\u304D\u524A\u9664\u3092\u62D2\u5426\u3057\u307E\u3057\u305F\u3002\u90E8\u5206\u7684\u306A\u7D50\u679C\u306E\u8FD4\u5374\u3084\u524A\u9664\u306F\u884C\u3063\u3066\u3044\u307E\u305B\u3093\u3002",
|
|
205
|
+
ai_memoryClearRequiresFilter: "clear()\u306B\u306F\u5C11\u306A\u304F\u3068\u30821\u3064\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\uFF08objectId / types / scope\uFF09\u304C\u5FC5\u8981\u3067\u3059\u3002\u3059\u3079\u3066\u306E\u30E1\u30E2\u30EA\u30FC\u3092\u6D88\u53BB\u3059\u308B\u306B\u306Fai.memory.admin.clearAll({ confirm: true })\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
206
|
+
ai_memoryClearAllUnconfirmed: "admin.clearAll()\u306B\u306F\u660E\u793A\u7684\u306A\u78BA\u8A8D\u304C\u5FC5\u8981\u3067\u3059: { confirm: true }\u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
207
|
+
ai_memoryEnrichFailed: "\u30E1\u30E2\u30EA\u30FC\u306E\u62E1\u5145\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
208
|
+
ai_memoryPromoteFailed: "\u30E1\u30E2\u30EA\u30FC\u306E\u6607\u683C\uFF08\u9577\u671F\u8A18\u61B6\u3078\u306E\u7D71\u5408\uFF09\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
209
|
+
ai_personaNotFound: "\u30DA\u30EB\u30BD\u30CA\u300C{id}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
210
|
+
ai_personaSaveFailed: "\u30DA\u30EB\u30BD\u30CA\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
211
|
+
ai_contextCompressFailed: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u5727\u7E2E\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
212
|
+
ai_contextBudgetExceeded: "\u4FDD\u8B77\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306F{tokens}\u30C8\u30FC\u30AF\u30F3\u3092\u4F7F\u7528\u3057\u3066\u304A\u308A\u3001{budget}\u30C8\u30FC\u30AF\u30F3\u306E\u5727\u7E2E\u4E88\u7B97\u306B\u53CE\u307E\u308A\u307E\u305B\u3093\u3002",
|
|
213
|
+
ai_contextSummarizeFailed: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u8981\u7D04\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
214
|
+
ai_contextTokenEstimateFailed: "\u30C8\u30FC\u30AF\u30F3\u6570\u306E\u63A8\u5B9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
215
|
+
ai_turnNotFound: "\u4F1A\u8A71\u30BF\u30FC\u30F3\u300C{turnId}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
216
|
+
ai_turnInvalidState: "\u4F1A\u8A71\u30BF\u30FC\u30F3 '{turnId}' \u306F\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u305F\u304B\u3001\u7570\u306A\u308B\u5185\u5BB9\u3067\u78BA\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059",
|
|
217
|
+
ai_contextScopeRequired: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u306F\u7A7A\u3067\u306A\u3044 objectId \u3068 sessionId \u304C\u5FC5\u8981\u3067\u3059",
|
|
218
|
+
ai_contextBusy: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30DE\u30CD\u30FC\u30B8\u30E3\u30FC\u306F\u4F7F\u7528\u4E2D\u3067\u3059\u3002\u65E2\u306B\u751F\u6210\u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u307E\u3059\uFF08concurrency='reject'\uFF09",
|
|
219
|
+
ai_storeFailed: "\u30B9\u30C8\u30A2\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
220
|
+
ai_storeNotAvailable: "\u30B9\u30C8\u30A2\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u3092\u5229\u7528\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30E1\u30E2\u30EA\u30FC\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048\u307E\u3057\u305F",
|
|
221
|
+
ai_sessionNotFound: "\u30BB\u30C3\u30B7\u30E7\u30F3\u300C{id}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
|
|
222
|
+
ai_sessionFailed: "\u30BB\u30C3\u30B7\u30E7\u30F3\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
223
|
+
ai_rerankApiFailed: "\u518D\u30E9\u30F3\u30AD\u30F3\u30B0API\u306E\u547C\u3073\u51FA\u3057\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
224
|
+
ai_rerankInvalidRequest: "\u518D\u30E9\u30F3\u30AD\u30F3\u30B0\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u7121\u52B9\u3067\u3059: {reason}",
|
|
225
|
+
ai_fileParseFailed: "\u30D5\u30A1\u30A4\u30EB\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
226
|
+
ai_fileUnsupportedFormat: "\u672A\u5BFE\u5FDC\u306E\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u3067\u3059: {mimeType}",
|
|
227
|
+
ai_fileOcrFailed: "OCR\u8A8D\u8B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
228
|
+
ai_fileInvalidContent: "\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u304C\u7121\u52B9\u3067\u3059: {reason}",
|
|
229
|
+
ai_configMissingApiKey: "\u30B7\u30CA\u30EA\u30AA\u300C{scenario}\u300D\u306B\u306FAPI\u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",
|
|
230
|
+
ai_audioNotInitialized: "\u97F3\u58F0\u30B5\u30FC\u30D3\u30B9\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5148\u306Bai.init()\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
231
|
+
ai_audioInvalidRequest: "\u97F3\u58F0\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u7121\u52B9\u3067\u3059: {reason}",
|
|
232
|
+
ai_audioModelNotFound: "\u97F3\u58F0\u30E2\u30C7\u30EB\u300C{model}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002ai.init()\u306Eaudio.models\u306B\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
233
|
+
ai_audioMissingApiKey: "\u97F3\u58F0\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u300C{provider}\u300D\u306B\u8A8D\u8A3C\u60C5\u5831\uFF08API\u30AD\u30FC\u307E\u305F\u306FApp/Access Key\uFF09\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
234
|
+
ai_audioMissingBaseUrl: "\u97F3\u58F0\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u300C{provider}\u300D\u306B\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30E2\u30C7\u30EB\u8A2D\u5B9A\u306EbaseUrl\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
235
|
+
ai_audioUnsupportedInput: "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u300C{provider}\u300D\u306F\u3053\u306E\u5165\u529B\u30E2\u30FC\u30C9\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093: {reason}",
|
|
236
|
+
ai_audioUpstreamError: "\u4E0A\u6D41\u97F3\u58F0\u30B5\u30FC\u30D3\u30B9\u306E\u30A8\u30E9\u30FC: {error}",
|
|
237
|
+
ai_audioProtocolError: "\u97F3\u58F0\u30D7\u30ED\u30C8\u30B3\u30EB\u30A8\u30E9\u30FC: {error}",
|
|
238
|
+
ai_audioConnectionFailed: "\u97F3\u58F0\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
239
|
+
ai_audioTimeout: "\u97F3\u58F0\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F",
|
|
240
|
+
ai_audioInputTooLarge: "\u5165\u529B\u97F3\u58F0\u304C\u30B5\u30A4\u30BA\u5236\u9650\uFF08{limit}\u30D0\u30A4\u30C8\uFF09\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
|
|
241
|
+
ai_audioCancelled: "\u97F3\u58F0\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F",
|
|
242
|
+
ai_imageInvalidRequest: "\u753B\u50CF\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",
|
|
243
|
+
ai_imageInvalidSize: "\u753B\u50CF\u306E\u5E45\u3068\u9AD8\u3055\u306F\u6B63\u306E\u6574\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",
|
|
244
|
+
ai_imageInvalidReferenceImage: "\u5404\u53C2\u7167\u753B\u50CF\u306B\u306F\u7A7A\u3067\u306A\u3044\u30D0\u30A4\u30C8\u5217\u3068\u6709\u52B9\u306A\u753B\u50CFMIME\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059",
|
|
245
|
+
ai_imageModelNotFound: "\u753B\u50CF\u30E2\u30C7\u30EB\u300C{model}\u300D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002ai.init()\u306Eimage.models\u306B\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
246
|
+
ai_imageMissingApiKey: "\u753B\u50CF\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u300C{provider}\u300D\u306BAPI\u30AD\u30FC\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
247
|
+
ai_imageUpstreamError: "\u4E0A\u6D41\u753B\u50CF\u30B5\u30FC\u30D3\u30B9\u304CHTTP {status}\u3092\u8FD4\u3057\u307E\u3057\u305F",
|
|
248
|
+
ai_imageAuthenticationFailed: "\u4E0A\u6D41\u753B\u50CF\u30B5\u30FC\u30D3\u30B9\u306E\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08HTTP 401\uFF09\u3002API\u30AD\u30FC\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
249
|
+
ai_imagePaymentRequired: "\u4E0A\u6D41\u753B\u50CF\u30B5\u30FC\u30D3\u30B9\u306E\u8AB2\u91D1\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\uFF08HTTP 402\uFF09\u3002\u6B8B\u9AD8\u307E\u305F\u306FAPI\u30AD\u30FC\u306E\u4E88\u7B97\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
250
|
+
ai_imageAccessDenied: "\u4E0A\u6D41\u753B\u50CF\u30B5\u30FC\u30D3\u30B9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\uFF08HTTP 403\uFF09\u3002API\u30AD\u30FC\u306E\u6A29\u9650\u3068\u30E2\u30C7\u30EB\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
251
|
+
ai_imageProtocolError: "\u753B\u50CF\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u7121\u52B9\u306A\u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u8FD4\u3057\u307E\u3057\u305F",
|
|
252
|
+
ai_imageRequestFailed: "\u753B\u50CF\u751F\u6210\u30EA\u30AF\u30A8\u30B9\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
253
|
+
ai_imageCancelled: "\u753B\u50CF\u751F\u6210\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F",
|
|
254
|
+
ai_imageDownloadBlocked: "\u753B\u50CF\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9 URL \u307E\u305F\u306F\u89E3\u6C7A\u3055\u308C\u305F\u30A2\u30C9\u30EC\u30B9\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
255
|
+
ai_imageTooLarge: "\u753B\u50CF\u306E\u30D0\u30A4\u30C8\u6570\u307E\u305F\u306F\u679A\u6570\u304C\u8A2D\u5B9A\u3055\u308C\u305F\u4E0A\u9650\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
|
|
256
|
+
ai_imageTimeout: "\u753B\u50CF\u306E\u751F\u6210\u307E\u305F\u306F\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F",
|
|
257
|
+
ai_a2aNotConfigured: "A2A\u30B5\u30FC\u30D3\u30B9\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002ai.init()\u3067\u300Ca2a\u300D\u8A2D\u5B9A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
258
|
+
ai_a2aHandleFailed: "A2A\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u51E6\u7406\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
259
|
+
ai_a2aRemoteCallFailed: "\u300C{url}\u300D\u3078\u306EA2A\u30EA\u30E2\u30FC\u30C8\u547C\u3073\u51FA\u3057\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
260
|
+
ai_a2aAuthFailed: "A2A\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
|
|
261
|
+
ai_a2aListMessagesFailed: "A2A \u30E1\u30C3\u30BB\u30FC\u30B8\u4E00\u89A7\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u3057\u3070\u3089\u304F\u3057\u3066\u304B\u3089\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
262
|
+
ai_a2aMessageStoreFailed: "A2A \u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u6C38\u7D9A\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u30BF\u30B9\u30AF\u306E\u7D50\u679C\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
263
|
+
ai_contextMemoryTasksFailed: "\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u30E1\u30E2\u30EA\u30FC\u62BD\u51FA\u30BF\u30B9\u30AF {count} \u4EF6\u304C\u5931\u6557\u3057\u3001\u4E00\u90E8\u304C\u5B8C\u4E86\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u5B9F\u969B\u306E\u5F71\u97FF\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u81EA\u52D5\u518D\u8A66\u884C\u306F\u884C\u3063\u3066\u3044\u307E\u305B\u3093",
|
|
264
|
+
ai_storeIndexMismatch: "AI \u30B9\u30C8\u30A2\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5B9A\u7FA9\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u518D\u8A66\u884C\u3059\u308B\u524D\u306B\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30B9\u30AD\u30FC\u30DE\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
265
|
+
ai_sharedBackendRequired: "\u672C\u756A\u74B0\u5883\u306E AI \u306B\u306F\u5171\u6709\u72B6\u614B\u304C\u5FC5\u8981\u3067\u3059\u3002\u5171\u6709\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3068\u30D9\u30AF\u30C8\u30EB\u30B5\u30FC\u30D3\u30B9\u3092\u521D\u671F\u5316\u3059\u308B\u304B\u3001stateScope \u304C shared \u306E\u4FE1\u983C\u3067\u304D\u308B\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
266
|
+
ai_a2aStateUnavailable: "A2A \u306E\u5171\u6709\u72B6\u614B\u3092\u5229\u7528\u3067\u304D\u307E\u305B\u3093",
|
|
267
|
+
ai_a2aExecutionLost: "\u5B9F\u884C\u306E\u6240\u6709\u6A29\u304C\u5931\u308F\u308C\u307E\u3057\u305F",
|
|
268
|
+
ai_a2aJournalLimit: "A2A \u5B9F\u884C\u30B8\u30E3\u30FC\u30CA\u30EB\u306E\u5BB9\u91CF\u4E0A\u9650\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
|
|
269
|
+
ai_a2aLeaseExpired: "\u5B9F\u884C\u30EA\u30FC\u30B9\u306E\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u307E\u3057\u305F",
|
|
270
|
+
ai_a2aUpdateConflict: "A2A \u306E\u5171\u6709\u72B6\u614B\u3067\u540C\u6642\u66F4\u65B0\u304C\u7AF6\u5408\u3057\u307E\u3057\u305F",
|
|
271
|
+
ai_a2aContextUnavailable: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u5229\u7528\u3067\u304D\u307E\u305B\u3093",
|
|
272
|
+
ai_a2aRuntimeClosed: "A2A \u30E9\u30F3\u30BF\u30A4\u30E0\u306F\u7D42\u4E86\u3057\u3066\u3044\u307E\u3059",
|
|
273
|
+
ai_a2aInvalidMessage: "A2A \u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u30B5\u30A4\u30BA\u307E\u305F\u306F\u8B58\u5225\u5B50\u304C\u7121\u52B9\u3067\u3059",
|
|
274
|
+
ai_a2aIdempotencyConflict: "\u540C\u3058\u51AA\u7B49\u30E1\u30C3\u30BB\u30FC\u30B8\u8B58\u5225\u5B50\u306E\u5185\u5BB9\u304C\u5909\u66F4\u3055\u308C\u3066\u3044\u307E\u3059",
|
|
275
|
+
ai_a2aTaskAdvanced: "\u5F8C\u7D9A\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u65E2\u306B\u3053\u306E\u30BF\u30B9\u30AF\u3092\u9032\u3081\u3066\u3044\u307E\u3059",
|
|
276
|
+
ai_a2aTaskNotAccepting: "\u30BF\u30B9\u30AF\u306F\u65B0\u3057\u3044\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u307E\u305B\u3093",
|
|
277
|
+
ai_a2aReceiptLimit: "A2A \u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u53D7\u9818\u8A18\u9332\u6570\u304C\u4E0A\u9650\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
|
|
278
|
+
ai_a2aContextMismatch: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u30BF\u30B9\u30AF\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093",
|
|
279
|
+
ai_a2aReferenceLimit: "\u53C2\u7167\u30BF\u30B9\u30AF\u6570\u304C\u4E0A\u9650\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
|
|
280
|
+
ai_a2aEventTaskMismatch: "\u5B9F\u884C\u30A4\u30D9\u30F3\u30C8\u306E\u30BF\u30B9\u30AF\u8B58\u5225\u5B50\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093",
|
|
281
|
+
ai_a2aExecutionNotWritable: "\u3053\u306E\u5B9F\u884C\u306B\u306F\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093",
|
|
282
|
+
ai_a2aOutputLimit: "A2A \u51FA\u529B\u30AD\u30E5\u30FC\u306E\u5BB9\u91CF\u4E0A\u9650\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
|
|
283
|
+
ai_a2aExecutionInterrupted: "A2A \u5B9F\u884C\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F\u3002\u5916\u90E8\u3078\u306E\u5F71\u97FF\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
284
|
+
ai_a2aSubscriptionAdvanced: "\u5F8C\u7D9A\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u30BF\u30B9\u30AF\u3092\u9032\u3081\u3066\u3044\u307E\u3059\u3002\u518D\u5EA6\u8CFC\u8AAD\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
285
|
+
ai_a2aExecutorAlreadyRegistered: "A2A \u5B9F\u884C\u5668\u306F\u65E2\u306B\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u7F6E\u304D\u63DB\u3048\u308B\u524D\u306B AI \u3092\u7D42\u4E86\u3057\u3066\u304F\u3060\u3055\u3044"
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
// messages/zh-CN.json
|
|
289
|
+
var zh_CN_default = {
|
|
290
|
+
ai_mcpInvalidToolSchema: "MCP \u5DE5\u5177\u8F93\u5165 Schema \u65E0\u6548\uFF1A{name}",
|
|
291
|
+
ai_mcpInvalidToolInput: "MCP \u5DE5\u5177\u8F93\u5165\u65E0\u6548\uFF1A{name}",
|
|
292
|
+
ai_mcpInvalidResource: "MCP \u8D44\u6E90\u5FC5\u987B\u4E14\u53EA\u80FD\u5305\u542B\u6709\u6548 text \u6216 blob\uFF1A{uri}",
|
|
293
|
+
ai_mcpInvalidPrompt: "MCP \u63D0\u793A\u8BCD\u53C2\u6570\u6216\u6D88\u606F\u65E0\u6548\uFF1A{name}",
|
|
294
|
+
$schema: "https://inlang.com/schema/inlang-message-format",
|
|
295
|
+
ai_notInitialized: "AI \u670D\u52A1\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 ai.init()",
|
|
296
|
+
ai_initFailed: "AI \u670D\u52A1\u521D\u59CB\u5316\u5931\u8D25\uFF1A{error}",
|
|
297
|
+
ai_initInProgress: "AI \u670D\u52A1\u6B63\u5728\u521D\u59CB\u5316\u4E2D\uFF0C\u8BF7\u52FF\u91CD\u590D\u8C03\u7528\u3002",
|
|
298
|
+
ai_requestTimeout: "\u8BF7\u6C42\u8D85\u65F6",
|
|
299
|
+
ai_internalError: "\u5185\u90E8\u9519\u8BEF\uFF1A{error}",
|
|
300
|
+
ai_mcpToolNotFound: "MCP \u5DE5\u5177 '{name}' \u672A\u627E\u5230",
|
|
301
|
+
ai_mcpToolFailed: "MCP \u5DE5\u5177 '{name}' \u6267\u884C\u5931\u8D25\uFF1A{error}",
|
|
302
|
+
ai_mcpResourceNotFound: "MCP \u8D44\u6E90 '{uri}' \u672A\u627E\u5230",
|
|
303
|
+
ai_mcpResourceFailed: "MCP \u8D44\u6E90 '{uri}' \u8BFB\u53D6\u5931\u8D25\uFF1A{error}",
|
|
304
|
+
ai_mcpPromptNotFound: "MCP \u63D0\u793A\u8BCD '{name}' \u672A\u627E\u5230",
|
|
305
|
+
ai_mcpPromptMissingArg: "MCP \u63D0\u793A\u8BCD '{name}' \u7F3A\u5C11\u5FC5\u9700\u53C2\u6570 '{arg}'",
|
|
306
|
+
ai_mcpPromptFailed: "MCP \u63D0\u793A\u8BCD '{name}' \u6267\u884C\u5931\u8D25\uFF1A{error}",
|
|
307
|
+
ai_toolNotFound: "\u5DE5\u5177 '{name}' \u672A\u627E\u5230",
|
|
308
|
+
ai_toolInvalidJson: "\u5DE5\u5177\u8C03\u7528\u53C2\u6570 JSON \u683C\u5F0F\u65E0\u6548",
|
|
309
|
+
ai_toolTimeout: "\u5DE5\u5177 '{name}' \u5728 {ms}ms \u540E\u8D85\u65F6\u6216\u88AB\u53D6\u6D88",
|
|
310
|
+
ai_toolAlreadyRegistered: "\u5DE5\u5177 '{name}' \u5DF2\u6CE8\u518C\uFF1B\u5982\u9700\u66FF\u6362\u8BF7\u663E\u5F0F\u8C03\u7528 replace()",
|
|
311
|
+
ai_toolForbidden: "\u5DE5\u5177 '{name}' \u672A\u83B7\u6267\u884C\u6388\u6743",
|
|
312
|
+
ai_configError: "AI \u914D\u7F6E\u6821\u9A8C\u5931\u8D25\uFF1A{error}",
|
|
313
|
+
ai_llmRecordFailed: "\u5BF9\u8BDD\u8BB0\u5F55\u4FDD\u5B58\u5931\u8D25\uFF1A{error}",
|
|
314
|
+
ai_llmHistoryFailed: "\u5BF9\u8BDD\u5386\u53F2\u67E5\u8BE2\u5931\u8D25\uFF1A{error}",
|
|
315
|
+
ai_generateObjectFailed: "\u7ED3\u6784\u5316\u8F93\u51FA\u89E3\u6790\u5931\u8D25\uFF1A{error}",
|
|
316
|
+
ai_generateObjectRepair: "\u4E0A\u4E00\u6B21\u8F93\u51FA\u65E0\u6CD5\u89E3\u6790\u4E3A\u8981\u6C42\u7684\u7ED3\u6784\uFF08{error}\uFF09\u3002\u8BF7\u53EA\u8F93\u51FA\u7B26\u5408 schema \u7684 JSON\uFF0C\u4E0D\u8981\u5305\u542B\u989D\u5916\u6587\u672C\u3002",
|
|
317
|
+
ai_embeddingApiFailed: "Embedding API \u8C03\u7528\u5931\u8D25\uFF1A{error}",
|
|
318
|
+
ai_embeddingModelNotFound: "Embedding \u6A21\u578B '{model}' \u672A\u627E\u5230",
|
|
319
|
+
ai_embeddingInputTooLong: "Embedding \u8F93\u5165\u6587\u672C\u8D85\u8FC7\u6700\u5927\u957F\u5EA6\u9650\u5236",
|
|
320
|
+
ai_reasoningFailed: "\u63A8\u7406\u6267\u884C\u5931\u8D25\uFF1A{error}",
|
|
321
|
+
ai_reasoningMaxRounds: "\u63A8\u7406\u8F6E\u6B21\u5DF2\u8FBE\u4E0A\u9650\uFF08{rounds} \u8F6E\uFF09",
|
|
322
|
+
ai_reasoningStrategyNotFound: "\u63A8\u7406\u7B56\u7565 '{strategy}' \u4E0D\u5B58\u5728",
|
|
323
|
+
ai_retrievalFailed: "\u68C0\u7D22\u6267\u884C\u5931\u8D25\uFF1A{error}",
|
|
324
|
+
ai_retrievalSourceNotFound: "\u68C0\u7D22\u6E90 '{source}' \u672A\u914D\u7F6E",
|
|
325
|
+
ai_ragFailed: "RAG \u6267\u884C\u5931\u8D25\uFF1A{error}",
|
|
326
|
+
ai_ragContextBuildFailed: "RAG \u4E0A\u4E0B\u6587\u6784\u5EFA\u5931\u8D25\uFF1A{error}",
|
|
327
|
+
ai_knowledgeSetupFailed: "\u77E5\u8BC6\u5E93\u521D\u59CB\u5316\u5931\u8D25\uFF1A{error}",
|
|
328
|
+
ai_knowledgeIngestFailed: "\u77E5\u8BC6\u5165\u5E93\u5931\u8D25\uFF1A{error}",
|
|
329
|
+
ai_knowledgeRetrieveFailed: "\u77E5\u8BC6\u68C0\u7D22\u5931\u8D25\uFF1A{error}",
|
|
330
|
+
ai_knowledgeEntityExtractFailed: "\u5B9E\u4F53\u63D0\u53D6\u5931\u8D25\uFF1A{error}",
|
|
331
|
+
ai_knowledgeNotSetup: "\u77E5\u8BC6\u5E93\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 ai.knowledge.setup()",
|
|
332
|
+
ai_knowledgeCollectionNotFound: "\u77E5\u8BC6\u96C6\u5408 '{collection}' \u4E0D\u5B58\u5728",
|
|
333
|
+
ai_memoryExtractFailed: "\u8BB0\u5FC6\u63D0\u53D6\u5931\u8D25\uFF1A{error}",
|
|
334
|
+
ai_memoryStoreFailed: "\u8BB0\u5FC6\u5B58\u50A8\u5931\u8D25\uFF1A{error}",
|
|
335
|
+
ai_memoryRecallFailed: "\u8BB0\u5FC6\u53EC\u56DE\u5931\u8D25\uFF1A{error}",
|
|
336
|
+
ai_memoryNotFound: "\u8BB0\u5FC6\u6761\u76EE '{id}' \u4E0D\u5B58\u5728",
|
|
337
|
+
ai_memoryEphemeralFallbackDenied: "\u8BB0\u5FC6 provider 'mem0' \u65E0\u6CD5\u5C06\u5411\u91CF\u540E\u7AEF '{backend}' \u6620\u5C04\u4E3A\u6301\u4E45\u5316\u5B58\u50A8\u3002\u8BF7\u6539\u7528 qdrant\uFF1B\u663E\u5F0F\u4E34\u65F6\u56DE\u9000\u4EC5\u9650\u5F00\u53D1\u6216 E2E\u3002",
|
|
338
|
+
ai_memorySharedBackendRequired: "\u751F\u4EA7 Mem0 \u8BB0\u5FC6\u5FC5\u987B\u8FDE\u63A5\u5B9E\u9645\u6301\u4E45\u5316\u7684 qdrant \u540E\u7AEF\uFF1B\u4E34\u65F6\u5185\u5B58\u56DE\u9000\u4EC5\u9650\u5F00\u53D1\u6216\u660E\u786E\u7684 E2E \u73AF\u5883\u3002",
|
|
339
|
+
ai_memoryBackendLifecycleUnsupported: "\u4E0D\u652F\u6301 Mem0 pgvector\uFF1ASDK \u79C1\u6709\u6301\u6709 PostgreSQL \u8FDE\u63A5\u4E14\u6CA1\u6709\u516C\u5F00\u5173\u95ED API\u3002\u8BF7\u6539\u7528 Mem0 Qdrant \u6216 native \u8BB0\u5FC6\u642D\u914D pgvector\u3002",
|
|
340
|
+
ai_memoryBackendConnectionRequired: "Mem0 \u540E\u7AEF '{backend}' \u5FC5\u987B\u63D0\u4F9B\u5B8C\u6574\u8FDE\u63A5\u914D\u7F6E\uFF0C\u624D\u80FD\u89C6\u4E3A\u6301\u4E45\u5316\u540E\u7AEF\u3002",
|
|
341
|
+
ai_memoryBackendSdkIncompatible: "Mem0 Qdrant \u9700\u8981\u63D0\u4F9B\u516C\u5F00 search \u65B9\u6CD5\u7684 @qdrant/js-client-rest 1.18.0\uFF0C\u8BF7\u5B89\u88C5\u53D7\u6D4B peer \u7248\u672C\u540E\u542F\u52A8\u3002",
|
|
342
|
+
ai_memoryListIncomplete: "Mem0 \u65E0\u6CD5\u5B8C\u6574\u5217\u51FA\u8D85\u8FC7 {limit} \u6761\u7684\u4E3B\u4F53\u5019\u9009\uFF0C\u5DF2\u62D2\u7EDD\u5217\u8868\u548C\u6309\u6761\u4EF6\u5220\u9664\uFF0C\u4E0D\u4F1A\u8FD4\u56DE\u90E8\u5206\u7ED3\u679C\u6216\u6267\u884C\u90E8\u5206\u5220\u9664\u3002",
|
|
343
|
+
ai_memoryClearRequiresFilter: "clear() \u81F3\u5C11\u9700\u4F20\u5165\u4E00\u4E2A\u8FC7\u6EE4\u6761\u4EF6\uFF08objectId / types / scope\uFF09\uFF1B\u8981\u6E05\u7A7A\u5168\u90E8\u8BB0\u5FC6\u8BF7\u4F7F\u7528 ai.memory.admin.clearAll({ confirm: true })",
|
|
344
|
+
ai_memoryClearAllUnconfirmed: "admin.clearAll() \u9700\u8981\u663E\u5F0F\u786E\u8BA4\uFF1A\u8BF7\u4F20\u5165 { confirm: true }",
|
|
345
|
+
ai_memoryEnrichFailed: "\u8BB0\u5FC6\u6CE8\u5165\u5931\u8D25\uFF1A{error}",
|
|
346
|
+
ai_memoryPromoteFailed: "\u8BB0\u5FC6\u56FA\u5316\uFF08\u957F\u671F\u5316\uFF09\u5931\u8D25\uFF1A{error}",
|
|
347
|
+
ai_personaNotFound: "\u89D2\u8272 '{id}' \u4E0D\u5B58\u5728",
|
|
348
|
+
ai_personaSaveFailed: "\u89D2\u8272\u4FDD\u5B58\u5931\u8D25\uFF1A{error}",
|
|
349
|
+
ai_contextCompressFailed: "\u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25\uFF1A{error}",
|
|
350
|
+
ai_contextBudgetExceeded: "\u53D7\u4FDD\u62A4\u4E0A\u4E0B\u6587\u5360\u7528 {tokens} \u4E2A Token\uFF0C\u65E0\u6CD5\u538B\u7F29\u5230 {budget} Token \u7684\u9884\u7B97\u5185\u3002",
|
|
351
|
+
ai_contextSummarizeFailed: "\u4E0A\u4E0B\u6587\u603B\u7ED3\u5931\u8D25\uFF1A{error}",
|
|
352
|
+
ai_contextTokenEstimateFailed: "Token \u4F30\u7B97\u5931\u8D25\uFF1A{error}",
|
|
353
|
+
ai_turnNotFound: "\u5BF9\u8BDD\u8F6E\u6B21 '{turnId}' \u4E0D\u5B58\u5728",
|
|
354
|
+
ai_turnInvalidState: "\u5BF9\u8BDD\u8F6E\u6B21 '{turnId}' \u5DF2\u5931\u6548\u6216\u5DF2\u6309\u5176\u4ED6\u5185\u5BB9\u63D0\u4EA4",
|
|
355
|
+
ai_contextScopeRequired: "\u4E0A\u4E0B\u6587\u5FC5\u987B\u914D\u7F6E\u975E\u7A7A\u7684 objectId \u548C sessionId",
|
|
356
|
+
ai_contextBusy: "\u4E0A\u4E0B\u6587\u7BA1\u7406\u5668\u6B63\u5FD9\uFF1A\u5DF2\u6709\u4E00\u4E2A\u751F\u6210\u6B63\u5728\u8FDB\u884C\uFF08concurrency='reject'\uFF09",
|
|
357
|
+
ai_storeFailed: "\u5B58\u50A8\u64CD\u4F5C\u5931\u8D25\uFF1A{error}",
|
|
358
|
+
ai_storeNotAvailable: "\u5B58\u50A8\u540E\u7AEF\u4E0D\u53EF\u7528\uFF0C\u5DF2\u964D\u7EA7\u4E3A\u5185\u5B58\u6A21\u5F0F",
|
|
359
|
+
ai_sessionNotFound: "\u4F1A\u8BDD '{id}' \u4E0D\u5B58\u5728",
|
|
360
|
+
ai_sessionFailed: "\u4F1A\u8BDD\u64CD\u4F5C\u5931\u8D25\uFF1A{error}",
|
|
361
|
+
ai_rerankApiFailed: "Rerank API \u8C03\u7528\u5931\u8D25\uFF1A{error}",
|
|
362
|
+
ai_rerankInvalidRequest: "Rerank \u8BF7\u6C42\u53C2\u6570\u65E0\u6548\uFF1A{reason}",
|
|
363
|
+
ai_fileParseFailed: "\u6587\u4EF6\u89E3\u6790\u5931\u8D25\uFF1A{error}",
|
|
364
|
+
ai_fileUnsupportedFormat: "\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u683C\u5F0F\uFF1A{mimeType}",
|
|
365
|
+
ai_fileOcrFailed: "OCR \u8BC6\u522B\u5931\u8D25\uFF1A{error}",
|
|
366
|
+
ai_fileInvalidContent: "\u6587\u4EF6\u5185\u5BB9\u65E0\u6548\uFF1A{reason}",
|
|
367
|
+
ai_configMissingApiKey: "\u573A\u666F '{scenario}' \u9700\u8981\u63D0\u4F9B API Key",
|
|
368
|
+
ai_audioNotInitialized: "Audio \u670D\u52A1\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 ai.init()",
|
|
369
|
+
ai_audioInvalidRequest: "\u8BED\u97F3\u8BF7\u6C42\u53C2\u6570\u65E0\u6548\uFF1A{reason}",
|
|
370
|
+
ai_audioModelNotFound: "\u8BED\u97F3\u6A21\u578B '{model}' \u672A\u627E\u5230\uFF0C\u8BF7\u5728 ai.init() \u7684 audio.models \u4E2D\u6CE8\u518C",
|
|
371
|
+
ai_audioMissingApiKey: "\u8BED\u97F3\u5E73\u53F0 '{provider}' \u7F3A\u5C11\u51ED\u636E\uFF08API Key \u6216 App/Access Key\uFF09",
|
|
372
|
+
ai_audioMissingBaseUrl: "\u8BED\u97F3\u5E73\u53F0 '{provider}' \u7F3A\u5C11\u7AEF\u70B9\u5730\u5740\uFF0C\u8BF7\u5728\u6A21\u578B\u6761\u76EE\u4E2D\u914D\u7F6E baseUrl",
|
|
373
|
+
ai_audioUnsupportedInput: "\u5E73\u53F0 '{provider}' \u4E0D\u652F\u6301\u6B64\u8F93\u5165\u65B9\u5F0F\uFF1A{reason}",
|
|
374
|
+
ai_audioUpstreamError: "\u8BED\u97F3\u4E0A\u6E38\u670D\u52A1\u9519\u8BEF\uFF1A{error}",
|
|
375
|
+
ai_audioProtocolError: "\u8BED\u97F3\u534F\u8BAE\u9519\u8BEF\uFF1A{error}",
|
|
376
|
+
ai_audioConnectionFailed: "\u8BED\u97F3\u8FDE\u63A5\u5931\u8D25\uFF1A{error}",
|
|
377
|
+
ai_audioTimeout: "\u8BED\u97F3\u8BF7\u6C42\u8D85\u65F6",
|
|
378
|
+
ai_audioInputTooLarge: "\u8F93\u5165\u97F3\u9891\u8D85\u8FC7\u5927\u5C0F\u4E0A\u9650\uFF08{limit} \u5B57\u8282\uFF09",
|
|
379
|
+
ai_audioCancelled: "\u8BED\u97F3\u8BF7\u6C42\u5DF2\u53D6\u6D88",
|
|
380
|
+
ai_imageInvalidRequest: "\u6587\u751F\u56FE\u63D0\u793A\u8BCD\u4E0D\u80FD\u4E3A\u7A7A",
|
|
381
|
+
ai_imageInvalidSize: "\u56FE\u7247\u5BBD\u9AD8\u5FC5\u987B\u4E3A\u6B63\u6574\u6570",
|
|
382
|
+
ai_imageInvalidReferenceImage: "\u53C2\u8003\u56FE\u5FC5\u987B\u5305\u542B\u975E\u7A7A\u56FE\u7247\u5B57\u8282\u548C\u6709\u6548\u7684\u56FE\u7247 MIME \u7C7B\u578B",
|
|
383
|
+
ai_imageModelNotFound: "\u6587\u751F\u56FE\u6A21\u578B '{model}' \u672A\u627E\u5230\uFF0C\u8BF7\u5728 ai.init() \u7684 image.models \u4E2D\u6CE8\u518C",
|
|
384
|
+
ai_imageMissingApiKey: "\u6587\u751F\u56FE\u5E73\u53F0 '{provider}' \u7F3A\u5C11 API Key",
|
|
385
|
+
ai_imageUpstreamError: "\u6587\u751F\u56FE\u4E0A\u6E38\u670D\u52A1\u8FD4\u56DE HTTP {status}",
|
|
386
|
+
ai_imageAuthenticationFailed: "\u6587\u751F\u56FE\u4E0A\u6E38\u670D\u52A1\u8BA4\u8BC1\u5931\u8D25\uFF08HTTP 401\uFF09\uFF0C\u8BF7\u68C0\u67E5 API Key",
|
|
387
|
+
ai_imagePaymentRequired: "\u6587\u751F\u56FE\u4E0A\u6E38\u670D\u52A1\u62D2\u7EDD\u8BA1\u8D39\uFF08HTTP 402\uFF09\uFF0C\u8BF7\u68C0\u67E5\u8D26\u6237\u4F59\u989D\u6216 API Key \u9884\u7B97",
|
|
388
|
+
ai_imageAccessDenied: "\u6587\u751F\u56FE\u4E0A\u6E38\u670D\u52A1\u62D2\u7EDD\u8BBF\u95EE\uFF08HTTP 403\uFF09\uFF0C\u8BF7\u68C0\u67E5 API Key \u6743\u9650\u53CA\u6A21\u578B\u8BBF\u95EE\u6743\u9650",
|
|
389
|
+
ai_imageProtocolError: "\u6587\u751F\u56FE\u5E73\u53F0\u8FD4\u56DE\u4E86\u65E0\u6548\u54CD\u5E94",
|
|
390
|
+
ai_imageRequestFailed: "\u6587\u751F\u56FE\u8BF7\u6C42\u5931\u8D25",
|
|
391
|
+
ai_imageCancelled: "\u6587\u751F\u56FE\u8BF7\u6C42\u5DF2\u53D6\u6D88",
|
|
392
|
+
ai_imageDownloadBlocked: "\u56FE\u7247\u4E0B\u8F7D URL \u6216\u89E3\u6790\u5730\u5740\u4E0D\u5728\u5141\u8BB8\u8303\u56F4\u5185",
|
|
393
|
+
ai_imageTooLarge: "\u56FE\u7247\u5B57\u8282\u6216\u56FE\u7247\u6570\u91CF\u8D85\u8FC7\u914D\u7F6E\u4E0A\u9650",
|
|
394
|
+
ai_imageTimeout: "\u56FE\u7247\u751F\u6210\u6216\u4E0B\u8F7D\u8D85\u65F6",
|
|
395
|
+
ai_a2aNotConfigured: "A2A \u670D\u52A1\u672A\u914D\u7F6E\uFF0C\u8BF7\u5728 ai.init() \u4E2D\u63D0\u4F9B 'a2a' \u914D\u7F6E\u3002",
|
|
396
|
+
ai_a2aHandleFailed: "A2A \u8BF7\u6C42\u5904\u7406\u5931\u8D25\uFF1A{error}",
|
|
397
|
+
ai_a2aRemoteCallFailed: "A2A \u8FDC\u7AEF\u8C03\u7528 '{url}' \u5931\u8D25\uFF1A{error}",
|
|
398
|
+
ai_a2aAuthFailed: "A2A \u8BA4\u8BC1\u5931\u8D25\uFF1A{error}",
|
|
399
|
+
ai_a2aListMessagesFailed: "A2A \u6D88\u606F\u67E5\u8BE2\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
|
|
400
|
+
ai_a2aMessageStoreFailed: "A2A \u6D88\u606F\u6301\u4E45\u5316\u5931\u8D25\uFF0C\u4EFB\u52A1\u7ED3\u679C\u9700\u8981\u6838\u5BF9",
|
|
401
|
+
ai_contextMemoryTasksFailed: "{count} \u4E2A\u540E\u53F0\u8BB0\u5FC6\u63D0\u53D6\u4EFB\u52A1\u5931\u8D25\uFF0C\u53EF\u80FD\u5DF2\u90E8\u5206\u6267\u884C\uFF1B\u8BF7\u6838\u5BF9\u5B9E\u9645\u72B6\u6001\uFF0C\u672A\u81EA\u52A8\u91CD\u8BD5",
|
|
402
|
+
ai_storeIndexMismatch: "AI \u5B58\u50A8\u7D22\u5F15\u7ED3\u6784\u4E0D\u5339\u914D\uFF0C\u8BF7\u6838\u5BF9\u6570\u636E\u5E93\u7ED3\u6784\u540E\u91CD\u8BD5",
|
|
403
|
+
ai_sharedBackendRequired: "\u751F\u4EA7AI\u5FC5\u987B\u4F7F\u7528\u5171\u4EAB\u72B6\u6001Provider\uFF1B\u8BF7\u5148\u521D\u59CB\u5316\u5171\u4EAB\u6570\u636E\u5E93\u548C\u5411\u91CF\u670D\u52A1\uFF0C\u6216\u6CE8\u5165\u58F0\u660EstateScope\u4E3Ashared\u7684\u53D7\u4FE1Provider\u3002",
|
|
404
|
+
ai_a2aStateUnavailable: "A2A \u5171\u4EAB\u72B6\u6001\u4E0D\u53EF\u7528",
|
|
405
|
+
ai_a2aExecutionLost: "\u6267\u884C\u6240\u6709\u6743\u5DF2\u5931\u6548",
|
|
406
|
+
ai_a2aJournalLimit: "A2A \u6267\u884C\u8BB0\u5F55\u5BB9\u91CF\u8D85\u9650",
|
|
407
|
+
ai_a2aLeaseExpired: "\u6267\u884C\u79DF\u7EA6\u5DF2\u8FC7\u671F",
|
|
408
|
+
ai_a2aUpdateConflict: "A2A \u5171\u4EAB\u72B6\u6001\u5E76\u53D1\u66F4\u65B0\u51B2\u7A81\uFF0C\u8BF7\u91CD\u8BD5",
|
|
409
|
+
ai_a2aContextUnavailable: "\u4E0A\u4E0B\u6587\u4E0D\u53EF\u7528",
|
|
410
|
+
ai_a2aRuntimeClosed: "A2A \u8FD0\u884C\u65F6\u5DF2\u5173\u95ED",
|
|
411
|
+
ai_a2aInvalidMessage: "A2A \u6D88\u606F\u5927\u5C0F\u3001\u8EAB\u4EFD\u6216\u6807\u8BC6\u4E0D\u7B26\u5408\u8981\u6C42",
|
|
412
|
+
ai_a2aIdempotencyConflict: "\u540C\u4E00\u5E42\u7B49\u6D88\u606F\u6807\u8BC6\u7684\u5185\u5BB9\u5DF2\u6539\u53D8",
|
|
413
|
+
ai_a2aTaskAdvanced: "\u4EFB\u52A1\u5DF2\u7531\u540E\u7EED\u6D88\u606F\u63A8\u8FDB\uFF0C\u8BF7\u67E5\u8BE2\u5F53\u524D\u72B6\u6001",
|
|
414
|
+
ai_a2aTaskNotAccepting: "\u4EFB\u52A1\u6B63\u5728\u6267\u884C\u3001\u53D6\u6D88\u6216\u5DF2\u7ED3\u675F\uFF0C\u4E0D\u80FD\u63A5\u53D7\u65B0\u6D88\u606F",
|
|
415
|
+
ai_a2aReceiptLimit: "A2A \u6D88\u606F\u56DE\u6267\u6570\u91CF\u8D85\u9650",
|
|
416
|
+
ai_a2aContextMismatch: "\u4E0A\u4E0B\u6587\u4E0E\u4EFB\u52A1\u4E0D\u5339\u914D",
|
|
417
|
+
ai_a2aReferenceLimit: "\u5F15\u7528\u4EFB\u52A1\u6570\u91CF\u8D85\u9650",
|
|
418
|
+
ai_a2aEventTaskMismatch: "\u6267\u884C\u4E8B\u4EF6\u4E0E\u4EFB\u52A1\u6807\u8BC6\u4E0D\u5339\u914D",
|
|
419
|
+
ai_a2aExecutionNotWritable: "\u5F53\u524D\u6267\u884C\u5DF2\u4E0D\u80FD\u5199\u5165",
|
|
420
|
+
ai_a2aOutputLimit: "A2A \u8F93\u51FA\u961F\u5217\u5BB9\u91CF\u8D85\u9650",
|
|
421
|
+
ai_a2aExecutionInterrupted: "A2A \u6267\u884C\u5DF2\u4E2D\u65AD\uFF0C\u987B\u6838\u5BF9\u5916\u90E8\u6548\u679C",
|
|
422
|
+
ai_a2aSubscriptionAdvanced: "\u540E\u7EED\u6D88\u606F\u5DF2\u63A8\u8FDB\u4EFB\u52A1\uFF0C\u8BF7\u91CD\u65B0\u8BA2\u9605",
|
|
423
|
+
ai_a2aExecutorAlreadyRegistered: "A2A \u6267\u884C\u5668\u5DF2\u6CE8\u518C\uFF0C\u66F4\u6362\u524D\u8BF7\u5173\u95ED AI"
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
// src/ai-i18n.ts
|
|
427
|
+
var aiM = core.i18n.createMessageGetter({
|
|
428
|
+
"zh-CN": zh_CN_default,
|
|
429
|
+
"en-US": en_US_default,
|
|
430
|
+
"ja-JP": ja_JP_default
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
// src/ai-config.ts
|
|
434
|
+
var OptionalSecretSchema = z.string().nullable().transform(
|
|
435
|
+
(value) => value === null || value.trim() === "" ? void 0 : value
|
|
436
|
+
).optional();
|
|
437
|
+
var ModelScenarioSchema = z.enum(["default", "chat", "reasoning", "plan", "execute", "extraction", "summary", "embedding", "rerank", "ocr", "fast"]);
|
|
438
|
+
var ApiTypeSchema = z.enum(["chat", "responses", "anthropic"]);
|
|
439
|
+
var ModelEntrySchema = z.object({
|
|
440
|
+
/** 模型唯一标识(用于 ModelResolver 解析) */
|
|
441
|
+
id: z.string(),
|
|
442
|
+
/** 模型名称(传给 API 的实际模型名) */
|
|
443
|
+
model: z.string(),
|
|
444
|
+
/** API 协议(可选,未指定时回退全局 `api`,再回退 `chat`;决定走 Chat Completions / Responses / Anthropic) */
|
|
445
|
+
api: ApiTypeSchema.optional(),
|
|
446
|
+
/** API Key 覆盖(可选,未提供时使用全局配置) */
|
|
447
|
+
apiKey: OptionalSecretSchema,
|
|
448
|
+
/** Base URL 覆盖(可选) */
|
|
449
|
+
baseUrl: z.url().optional(),
|
|
450
|
+
/** 最大 Token 数覆盖(可选) */
|
|
451
|
+
maxTokens: z.number().positive().optional(),
|
|
452
|
+
/** 温度覆盖(可选) */
|
|
453
|
+
temperature: z.number().min(0).max(2).optional(),
|
|
454
|
+
/** 超时覆盖(可选,毫秒) */
|
|
455
|
+
timeout: z.number().positive().optional()
|
|
456
|
+
});
|
|
457
|
+
var LLMConfigSchema = z.object({
|
|
458
|
+
/** 全局 API Key(各模型 fallback;未提供时回退到 `process.env.HAI_AI_LLM_APIKEY` 或 `process.env.OPENAI_API_KEY`) */
|
|
459
|
+
apiKey: OptionalSecretSchema,
|
|
460
|
+
/** 全局 API 基础 URL(各模型 fallback;未提供时回退到 `process.env.HAI_AI_LLM_BASEURL` 或 `process.env.OPENAI_BASE_URL`) */
|
|
461
|
+
baseUrl: z.url().optional(),
|
|
462
|
+
/** 默认模型名称(默认 `'gpt-4o-mini'`) */
|
|
463
|
+
model: z.string().optional().default("gpt-4o-mini"),
|
|
464
|
+
/** 全局 API 协议(各模型 fallback,默认 `'chat'`;可选 `chat` / `responses` / `anthropic`) */
|
|
465
|
+
api: ApiTypeSchema.optional().default("chat"),
|
|
466
|
+
/** 全局最大 Token 数(各模型 fallback,默认 `4096`) */
|
|
467
|
+
maxTokens: z.number().positive().optional().default(4096),
|
|
468
|
+
/** 全局采样温度(各模型 fallback,范围 `[0, 2]`,默认 `0.7`) */
|
|
469
|
+
temperature: z.number().min(0).max(2).optional().default(0.7),
|
|
470
|
+
/** 全局请求超时时间(各模型 fallback,毫秒,默认 `60000`) */
|
|
471
|
+
timeout: z.number().positive().optional().default(6e4),
|
|
472
|
+
/** 临时模型客户端缓存存活时间(毫秒,默认 `600000` = 10 分钟;超时后临时模型客户端实例失效并重建) */
|
|
473
|
+
tempModelCacheTtl: z.number().positive().optional().default(6e5),
|
|
474
|
+
/** 多模型配置列表(各字段可选,未指定时回退到全局默认值) */
|
|
475
|
+
models: z.array(ModelEntrySchema).optional(),
|
|
476
|
+
/** 场景模型映射(场景名 → 模型 ID 或直接模型名称,各场景均可选) */
|
|
477
|
+
scenarios: z.object(Object.fromEntries(ModelScenarioSchema.options.map((k) => [k, z.string().optional()]))).optional()
|
|
478
|
+
});
|
|
479
|
+
function resolveModelEntry(llmConfig, scenario, explicit, options) {
|
|
480
|
+
let entry;
|
|
481
|
+
let modelName;
|
|
482
|
+
if (explicit) {
|
|
483
|
+
entry = llmConfig.models?.find((m) => m.id === explicit || m.model === explicit);
|
|
484
|
+
modelName = entry?.model ?? explicit;
|
|
485
|
+
} else {
|
|
486
|
+
const modelId = llmConfig.scenarios?.[scenario] ?? llmConfig.scenarios?.default;
|
|
487
|
+
if (modelId) {
|
|
488
|
+
entry = llmConfig.models?.find((m) => m.id === modelId);
|
|
489
|
+
modelName = entry?.model ?? modelId;
|
|
490
|
+
} else {
|
|
491
|
+
modelName = llmConfig.model ?? "gpt-4o-mini";
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
const resolved = {
|
|
495
|
+
model: modelName,
|
|
496
|
+
api: entry?.api ?? llmConfig.api ?? "chat",
|
|
497
|
+
apiKey: entry?.apiKey ?? llmConfig.apiKey ?? (process.env.HAI_AI_LLM_APIKEY?.trim() || process.env.OPENAI_API_KEY),
|
|
498
|
+
baseUrl: entry?.baseUrl ?? llmConfig.baseUrl ?? (process.env.HAI_AI_LLM_BASEURL?.trim() || process.env.OPENAI_BASE_URL) ?? "https://api.openai.com/v1",
|
|
499
|
+
maxTokens: entry?.maxTokens ?? llmConfig.maxTokens ?? 4096,
|
|
500
|
+
temperature: entry?.temperature ?? llmConfig.temperature ?? 0.7,
|
|
501
|
+
timeout: entry?.timeout ?? llmConfig.timeout ?? 6e4
|
|
502
|
+
};
|
|
503
|
+
if (!resolved.apiKey) {
|
|
504
|
+
return err(HaiAIError.CONFIGURATION_ERROR, options?.missingApiKeyMessage ?? aiM("ai_configMissingApiKey", { params: { scenario } }));
|
|
505
|
+
}
|
|
506
|
+
return ok(resolved);
|
|
507
|
+
}
|
|
508
|
+
function resolveModelApi(llmConfig, explicitModel, tempApi) {
|
|
509
|
+
if (tempApi)
|
|
510
|
+
return tempApi;
|
|
511
|
+
const entry = explicitModel ? llmConfig.models?.find((m) => m.id === explicitModel || m.model === explicitModel) : void 0;
|
|
512
|
+
return entry?.api ?? llmConfig.api ?? "chat";
|
|
513
|
+
}
|
|
514
|
+
var MCPServerCapabilitiesSchema = z.object({
|
|
515
|
+
/** 是否支持工具调用(默认 `true`) */
|
|
516
|
+
tools: z.boolean().optional().default(true),
|
|
517
|
+
/** 是否支持资源访问(默认 `true`) */
|
|
518
|
+
resources: z.boolean().optional().default(true),
|
|
519
|
+
/** 是否支持提示词模板(默认 `true`) */
|
|
520
|
+
prompts: z.boolean().optional().default(true)
|
|
521
|
+
});
|
|
522
|
+
var MCPServerConfigSchema = z.object({
|
|
523
|
+
/** 服务器名称 */
|
|
524
|
+
name: z.string(),
|
|
525
|
+
/** 服务器版本(默认 `'1.0.0'`) */
|
|
526
|
+
version: z.string().optional().default("1.0.0"),
|
|
527
|
+
/** 服务器能力声明 */
|
|
528
|
+
capabilities: MCPServerCapabilitiesSchema.optional()
|
|
529
|
+
});
|
|
530
|
+
var MCPConfigSchema = z.object({
|
|
531
|
+
/** 服务器配置 */
|
|
532
|
+
server: MCPServerConfigSchema.optional()
|
|
533
|
+
});
|
|
534
|
+
var EmbeddingConfigSchema = z.object({
|
|
535
|
+
/** 向量维度(可选,部分模型支持指定维度) */
|
|
536
|
+
dimensions: z.number().int().positive().optional(),
|
|
537
|
+
/** 批量大小(单次请求最多处理的文本数,默认 100) */
|
|
538
|
+
batchSize: z.number().int().positive().default(100)
|
|
539
|
+
});
|
|
540
|
+
var KnowledgeConfigSchema = z.object({
|
|
541
|
+
/** 默认向量集合名(默认 'hai_ai_knowledge') */
|
|
542
|
+
collection: z.string().default("hai_ai_knowledge"),
|
|
543
|
+
/** 向量维度(默认 1536,需与 embedding 模型匹配) */
|
|
544
|
+
dimension: z.number().int().positive().default(1536),
|
|
545
|
+
/** 是否启用实体提取(默认 true) */
|
|
546
|
+
enableEntityExtraction: z.boolean().default(true),
|
|
547
|
+
/**
|
|
548
|
+
* 默认文本清洗选项
|
|
549
|
+
*
|
|
550
|
+
* 字段含义与 @h-ai/datapipe CleanOptionsInput 完全一致,
|
|
551
|
+
* 支持 removeHtml、removeUrls、normalizeWhitespace、customReplacements 等。
|
|
552
|
+
*/
|
|
553
|
+
cleanOptions: CleanOptionsSchema.default(CleanOptionsSchema.parse({})),
|
|
554
|
+
/**
|
|
555
|
+
* 默认分块选项
|
|
556
|
+
*
|
|
557
|
+
* 字段含义与 @h-ai/datapipe ChunkOptionsInput 完全一致,
|
|
558
|
+
* 支持 mode、maxSize、overlap、separator、markdownMinLevel 等完整选项。
|
|
559
|
+
* word 按非空白词计量,其余按 Unicode code point;上限包含分隔符及 overlap,且 overlap < maxSize。
|
|
560
|
+
* AI 默认 markdown/1500/200;导入覆盖预算时仍须满足约束,分块失败不会退回整篇文档。
|
|
561
|
+
*/
|
|
562
|
+
chunkOptions: ChunkOptionsSchema.default(ChunkOptionsSchema.parse({
|
|
563
|
+
mode: "markdown",
|
|
564
|
+
maxSize: 1500,
|
|
565
|
+
overlap: 200
|
|
566
|
+
})),
|
|
567
|
+
/** 实体查询命中的额外加权系数(默认 0.15,叠加到向量分数上) */
|
|
568
|
+
entityBoostWeight: z.number().min(0).max(1).default(0.15),
|
|
569
|
+
/** 自定义实体类型列表(不指定时使用内置默认类型) */
|
|
570
|
+
entityTypes: z.array(z.string()).optional(),
|
|
571
|
+
/** 自定义实体提取系统提示词(不指定时使用内置默认提示词) */
|
|
572
|
+
systemPrompt: z.string().optional()
|
|
573
|
+
});
|
|
574
|
+
var MemoryConfigSchema = z.object({
|
|
575
|
+
/** 记忆后端:native 使用框架原生存储与批量合并;mem0 将框架提取结果写入受支持的嵌入式 SDK 后端 */
|
|
576
|
+
provider: z.enum(["native", "mem0"]).default("native"),
|
|
577
|
+
/**
|
|
578
|
+
* 是否允许在配置了持久化向量后端但 mem0 无法映射时退回内存存储(默认 false)
|
|
579
|
+
*
|
|
580
|
+
* 仅影响 `provider='mem0'`:当前框架适配仅映射 qdrant;pgvector 的 SDK 连接无法公开关闭,所有环境拒绝。底层 vecdb 是
|
|
581
|
+
* lancedb / chroma / 未知后端时,默认 fail-fast(初始化失败),避免服务重启后记忆静默丢失;
|
|
582
|
+
* 仅当显式设为 true 时才在开发或明确 E2E 环境退回内存存储(数据不持久)。
|
|
583
|
+
* 生产始终要求实际持久化连接,不能通过此开关绕过共享状态要求。
|
|
584
|
+
*/
|
|
585
|
+
allowEphemeralFallback: z.boolean().default(false),
|
|
586
|
+
/**
|
|
587
|
+
* 单个主体(objectId)的最大记忆条数(默认 1000)
|
|
588
|
+
*
|
|
589
|
+
* native 淘汰按 objectId 分区触发:某个主体写入超过此上限时,只淘汰该主体自身
|
|
590
|
+
* 最低优先级的条目,不会波及其他主体的记忆。
|
|
591
|
+
*/
|
|
592
|
+
maxEntriesPerObject: z.number().int().positive().default(1e3),
|
|
593
|
+
/**
|
|
594
|
+
* 全局最大记忆条数(默认 100000)
|
|
595
|
+
*
|
|
596
|
+
* 跨所有主体的总量上限,作为整体保护阈值;超过时淘汰全局最低优先级条目。
|
|
597
|
+
*/
|
|
598
|
+
maxEntriesGlobal: z.number().int().positive().default(1e5),
|
|
599
|
+
/** 自定义记忆提取 systemPrompt(可选,覆盖内置默认提示词) */
|
|
600
|
+
systemPrompt: z.string().optional(),
|
|
601
|
+
/** 时间衰减系数(默认 0.95,每次检索乘以此系数调整 recency 权重) */
|
|
602
|
+
recencyDecay: z.number().min(0).max(1).default(0.95),
|
|
603
|
+
/** 是否启用向量检索(默认 true,关闭则仅使用关键词匹配) */
|
|
604
|
+
embeddingEnabled: z.boolean().default(true),
|
|
605
|
+
/** 检索时默认返回数量(默认 10) */
|
|
606
|
+
defaultTopK: z.number().int().positive().default(10),
|
|
607
|
+
/**
|
|
608
|
+
* 候选池倍数(默认 5)
|
|
609
|
+
*
|
|
610
|
+
* 检索时先从向量后端取回 `topK × candidateMultiplier` 条候选,再按 scope / 重要性等
|
|
611
|
+
* 条件在内存中过滤,最后截取 topK。用于修正「向量后端仅返回 topK,随后被 scope 过滤
|
|
612
|
+
* 掉大部分、导致同一主体下特定主题/角色记忆漏召回」的问题:候选池越大,scope 命中越充分。
|
|
613
|
+
*
|
|
614
|
+
* native provider 会对全部候选评分,故此值仅影响向量预取宽度;mem0 provider 无法下推
|
|
615
|
+
* scope,必须依赖更大的候选池才能保证 scope 内记忆被召回。
|
|
616
|
+
*/
|
|
617
|
+
candidateMultiplier: z.number().int().positive().default(5),
|
|
618
|
+
/** 写回 / 合并时检索相关记忆的数量(native 与 mem0 共用,默认 20) */
|
|
619
|
+
writebackRelatedTopK: z.number().int().positive().default(20)
|
|
620
|
+
});
|
|
621
|
+
var TokenConfigSchema = z.object({
|
|
622
|
+
/** Token 估算每字符系数(默认 0.25,即 4 字符 ≈ 1 token) */
|
|
623
|
+
tokenRatio: z.number().positive().default(0.25)
|
|
624
|
+
});
|
|
625
|
+
var SummaryConfigSchema = z.object({
|
|
626
|
+
/** 自定义摘要 systemPrompt(可选,覆盖内置默认提示词) */
|
|
627
|
+
systemPrompt: z.string().optional()
|
|
628
|
+
});
|
|
629
|
+
var CompressConfigSchema = z.object({
|
|
630
|
+
/** 默认压缩策略(默认 'hybrid') */
|
|
631
|
+
defaultStrategy: CompressionStrategySchema.default("hybrid"),
|
|
632
|
+
/** 默认 Token 预算(默认 0 表示取模型上限的 80%) */
|
|
633
|
+
defaultMaxTokens: z.number().int().min(0).default(0),
|
|
634
|
+
/** 默认保留最近消息数(默认 4) */
|
|
635
|
+
preserveLastN: z.number().int().min(0).default(4)
|
|
636
|
+
});
|
|
637
|
+
var FileConfigSchema = z.object({
|
|
638
|
+
/** OCR 系统提示词(可选,覆盖内置默认提示词) */
|
|
639
|
+
systemPrompt: z.string().optional()
|
|
640
|
+
});
|
|
641
|
+
var RetrievalSourceSchema = z.object({
|
|
642
|
+
/** 来源唯一标识 */
|
|
643
|
+
id: z.string(),
|
|
644
|
+
/** vecdb collection 名称 */
|
|
645
|
+
collection: z.string(),
|
|
646
|
+
/** 信源显示名 */
|
|
647
|
+
name: z.string().optional(),
|
|
648
|
+
/** 信源 URL / 路径 */
|
|
649
|
+
url: z.string().optional(),
|
|
650
|
+
/** 最大返回条数(默认 5) */
|
|
651
|
+
topK: z.number().int().positive().optional(),
|
|
652
|
+
/** 最低相似度 0~1(低于此值的结果被过滤) */
|
|
653
|
+
minScore: z.number().min(0).max(1).optional(),
|
|
654
|
+
/** 元数据过滤条件 */
|
|
655
|
+
filter: z.record(z.string(), z.unknown()).optional()
|
|
656
|
+
});
|
|
657
|
+
var RetrievalConfigSchema = z.object({
|
|
658
|
+
/** 预注册检索源列表 */
|
|
659
|
+
sources: z.array(RetrievalSourceSchema).optional()
|
|
660
|
+
});
|
|
661
|
+
var A2ASkillConfigSchema = z.object({
|
|
662
|
+
/** 技能 ID */
|
|
663
|
+
id: z.string(),
|
|
664
|
+
/** 技能名称 */
|
|
665
|
+
name: z.string(),
|
|
666
|
+
/** 技能描述 */
|
|
667
|
+
description: z.string().optional(),
|
|
668
|
+
/** 标签列表 */
|
|
669
|
+
tags: z.array(z.string()).optional()
|
|
670
|
+
});
|
|
671
|
+
var A2AConfigSchema = z.object({
|
|
672
|
+
/** 共享执行预算;最终提交同时受数据库租约与绝对执行期限约束。 */
|
|
673
|
+
execution: z.object({
|
|
674
|
+
/** 活跃执行租约毫秒数,默认30秒,范围1秒至1天。 */
|
|
675
|
+
leaseMs: z.number().int().min(1e3).max(864e5).default(3e4),
|
|
676
|
+
/** 共享事件/状态订阅轮询间隔毫秒数,默认250。 */
|
|
677
|
+
pollIntervalMs: z.number().int().min(10).max(5e3).default(250),
|
|
678
|
+
/** 单次执行绝对上限毫秒数,默认5分钟;超时标中断,不自动重放。 */
|
|
679
|
+
maxExecutionMs: z.number().int().min(1e3).max(864e5).default(3e5)
|
|
680
|
+
}).prefault({}),
|
|
681
|
+
/** Agent Card 配置 */
|
|
682
|
+
agentCard: z.object({
|
|
683
|
+
/** Agent 名称 */
|
|
684
|
+
name: z.string(),
|
|
685
|
+
/** Agent 描述 */
|
|
686
|
+
description: z.string().optional(),
|
|
687
|
+
/** Agent 对外 URL */
|
|
688
|
+
url: z.string(),
|
|
689
|
+
/** Agent 版本 */
|
|
690
|
+
version: z.string().optional(),
|
|
691
|
+
/** Agent 技能列表 */
|
|
692
|
+
skills: z.array(A2ASkillConfigSchema).optional()
|
|
693
|
+
}),
|
|
694
|
+
/** A2A 安全认证配置 */
|
|
695
|
+
security: z.object({
|
|
696
|
+
/** API Key 认证(通过 IAM apiKey.verifyApiKey 验证) */
|
|
697
|
+
apiKey: z.object({
|
|
698
|
+
/** API Key 的传递位置(默认 header) */
|
|
699
|
+
in: z.enum(["header", "query"]).default("header"),
|
|
700
|
+
/** 参数名(默认 x-api-key) */
|
|
701
|
+
name: z.string().default("x-api-key")
|
|
702
|
+
}).optional()
|
|
703
|
+
}).optional()
|
|
704
|
+
});
|
|
705
|
+
var AudioProviderSchema = z.enum(["openai", "mimo", "qwen", "doubao", "whisper", "indextts"]);
|
|
706
|
+
var AudioOperationSchema = z.enum(["transcribe", "synthesize"]);
|
|
707
|
+
var AudioOperationsSchema = z.array(AudioOperationSchema).min(1).refine((operations) => new Set(operations).size === operations.length, {
|
|
708
|
+
message: "audio model operations must be unique"
|
|
709
|
+
});
|
|
710
|
+
var AudioModelEntrySchema = z.object({
|
|
711
|
+
/** 模型唯一标识(用于场景解析与请求显式指定) */
|
|
712
|
+
id: z.string(),
|
|
713
|
+
/** 所属语音平台 */
|
|
714
|
+
provider: AudioProviderSchema,
|
|
715
|
+
/** 厂商模型名(传给厂商 API 的实际模型名) */
|
|
716
|
+
model: z.string(),
|
|
717
|
+
/** 模型允许执行的操作;解析模型时会在调用厂商前校验 */
|
|
718
|
+
operations: AudioOperationsSchema,
|
|
719
|
+
/** API Key 覆盖(未提供时可按 Audio 配置继承 LLM 密钥,最后回退对应平台环境变量) */
|
|
720
|
+
apiKey: OptionalSecretSchema,
|
|
721
|
+
/** HTTP / WebSocket 端点覆盖(`whisper` / `indextts` 无默认端点,必须显式配置) */
|
|
722
|
+
baseUrl: z.string().optional(),
|
|
723
|
+
/** 火山引擎 App Key(`X-Api-App-Key`,旧版控制台 ASR 需要) */
|
|
724
|
+
appKey: OptionalSecretSchema,
|
|
725
|
+
/** 火山引擎 Access Key(`X-Api-Access-Key`,旧版控制台 ASR 需要) */
|
|
726
|
+
accessKey: OptionalSecretSchema,
|
|
727
|
+
/** 火山引擎资源 ID(`X-Api-Resource-Id`;未提供时使用平台默认资源 ID) */
|
|
728
|
+
resourceId: z.string().optional(),
|
|
729
|
+
/** 阿里云百炼业务空间 ID(`X-DashScope-WorkSpace`,可选) */
|
|
730
|
+
workspaceId: z.string().optional(),
|
|
731
|
+
/** 请求超时(毫秒,默认 60000) */
|
|
732
|
+
timeout: z.number().positive().optional()
|
|
733
|
+
});
|
|
734
|
+
var AudioConfigSchema = z.object({
|
|
735
|
+
/** 注册的语音模型列表 */
|
|
736
|
+
models: z.array(AudioModelEntrySchema).optional(),
|
|
737
|
+
/** 是否允许未单独配置密钥的语音模型继承 LLM 全局密钥;跨供应商部署应保持关闭。 */
|
|
738
|
+
inheritLlmApiKey: z.boolean().default(false),
|
|
739
|
+
/** 默认识别模型 ID(`ai.audio.transcribe*` 未指定 model 时使用) */
|
|
740
|
+
transcribeModel: z.string().optional(),
|
|
741
|
+
/** 默认合成模型 ID(`ai.audio.synthesize*` 未指定 model 时使用) */
|
|
742
|
+
synthesizeModel: z.string().optional(),
|
|
743
|
+
/** 单次音频字节上限(默认 10 MiB,防止资源耗尽) */
|
|
744
|
+
maxAudioBytes: z.number().int().positive().default(10 * 1024 * 1024),
|
|
745
|
+
/** 实时连接最长持续时间(毫秒,默认 5 分钟) */
|
|
746
|
+
maxStreamDurationMs: z.number().int().positive().default(5 * 60 * 1e3)
|
|
747
|
+
});
|
|
748
|
+
var AUDIO_PROVIDER_DEFAULT_BASE_URL = {
|
|
749
|
+
openai: "https://api.openai.com/v1",
|
|
750
|
+
mimo: "https://api.xiaomimimo.com/v1",
|
|
751
|
+
qwen: "wss://dashscope.aliyuncs.com/api-ws/v1/realtime",
|
|
752
|
+
doubao: "wss://openspeech.bytedance.com"
|
|
753
|
+
};
|
|
754
|
+
var AUDIO_PROVIDER_CREDENTIAL_OPTIONAL = /* @__PURE__ */ new Set(["whisper", "indextts"]);
|
|
755
|
+
function doubaoDefaultResourceId(operation) {
|
|
756
|
+
return operation === "transcribe" ? "volc.bigasr.sauc.duration" : "seed-tts-2.0";
|
|
757
|
+
}
|
|
758
|
+
function audioProviderEnvApiKey(provider) {
|
|
759
|
+
switch (provider) {
|
|
760
|
+
case "openai":
|
|
761
|
+
return process.env.HAI_AI_AUDIO_OPENAI_APIKEY?.trim() || process.env.OPENAI_API_KEY;
|
|
762
|
+
case "mimo":
|
|
763
|
+
return process.env.HAI_AI_AUDIO_MIMO_APIKEY?.trim() || process.env.MIMO_API_KEY;
|
|
764
|
+
case "qwen":
|
|
765
|
+
return process.env.HAI_AI_AUDIO_QWEN_APIKEY?.trim() || process.env.DASHSCOPE_API_KEY;
|
|
766
|
+
case "doubao":
|
|
767
|
+
return process.env.HAI_AI_AUDIO_DOUBAO_APIKEY?.trim() || process.env.VOLC_API_KEY;
|
|
768
|
+
case "whisper":
|
|
769
|
+
return process.env.HAI_AI_AUDIO_WHISPER_APIKEY;
|
|
770
|
+
case "indextts":
|
|
771
|
+
return process.env.HAI_AI_AUDIO_INDEXTTS_APIKEY;
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
function resolveAudioModel(audioConfig, operation, explicit, llmApiKey) {
|
|
775
|
+
const targetId = explicit ?? (operation === "transcribe" ? audioConfig.transcribeModel : audioConfig.synthesizeModel);
|
|
776
|
+
if (!targetId)
|
|
777
|
+
return err(HaiAIError.AUDIO_MODEL_NOT_FOUND, aiM("ai_audioModelNotFound", { params: { model: `<${operation}>` } }));
|
|
778
|
+
const entry = audioConfig.models?.find((m) => m.id === targetId || m.model === targetId);
|
|
779
|
+
if (!entry)
|
|
780
|
+
return err(HaiAIError.AUDIO_MODEL_NOT_FOUND, aiM("ai_audioModelNotFound", { params: { model: targetId } }));
|
|
781
|
+
const operations = entry.operations;
|
|
782
|
+
if (!operations.includes(operation)) {
|
|
783
|
+
return err(
|
|
784
|
+
HaiAIError.AUDIO_UNSUPPORTED_INPUT,
|
|
785
|
+
aiM("ai_audioUnsupportedInput", { params: { provider: entry.provider, reason: `model ${entry.id} does not support ${operation}` } })
|
|
786
|
+
);
|
|
787
|
+
}
|
|
788
|
+
const apiKey = entry.apiKey ?? (audioConfig.inheritLlmApiKey ? llmApiKey : void 0) ?? audioProviderEnvApiKey(entry.provider);
|
|
789
|
+
const baseUrl = entry.baseUrl ?? AUDIO_PROVIDER_DEFAULT_BASE_URL[entry.provider];
|
|
790
|
+
if (!baseUrl)
|
|
791
|
+
return err(HaiAIError.CONFIGURATION_ERROR, aiM("ai_audioMissingBaseUrl", { params: { provider: entry.provider } }));
|
|
792
|
+
return ok({
|
|
793
|
+
id: entry.id,
|
|
794
|
+
provider: entry.provider,
|
|
795
|
+
model: entry.model,
|
|
796
|
+
apiKey,
|
|
797
|
+
baseUrl,
|
|
798
|
+
appKey: entry.appKey ?? process.env.VOLC_APP_KEY,
|
|
799
|
+
accessKey: entry.accessKey ?? process.env.VOLC_ACCESS_KEY,
|
|
800
|
+
resourceId: entry.resourceId ?? (entry.provider === "doubao" ? doubaoDefaultResourceId(operation) : ""),
|
|
801
|
+
workspaceId: entry.workspaceId,
|
|
802
|
+
timeout: entry.timeout ?? 6e4
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
function ensureAudioCredential(model) {
|
|
806
|
+
if (AUDIO_PROVIDER_CREDENTIAL_OPTIONAL.has(model.provider))
|
|
807
|
+
return null;
|
|
808
|
+
const hasDoubaoLegacy = model.provider === "doubao" && Boolean(model.appKey && model.accessKey);
|
|
809
|
+
if (model.apiKey || hasDoubaoLegacy)
|
|
810
|
+
return null;
|
|
811
|
+
return core.error.buildHaiErrorInst(HaiAIError.CONFIGURATION_ERROR, aiM("ai_audioMissingApiKey", { params: { provider: model.provider } }));
|
|
812
|
+
}
|
|
813
|
+
var ImageProviderSchema = z.enum(["openai", "google", "qwen", "seedream", "pollinations"]);
|
|
814
|
+
var ImageModelEntrySchema = z.object({
|
|
815
|
+
/** 模型唯一标识(供请求选择) */
|
|
816
|
+
id: z.string(),
|
|
817
|
+
/** 所属文生图平台 */
|
|
818
|
+
provider: ImageProviderSchema,
|
|
819
|
+
/** 厂商模型名 */
|
|
820
|
+
model: z.string(),
|
|
821
|
+
/** API Key 覆盖;未提供时回退厂商环境变量 */
|
|
822
|
+
apiKey: OptionalSecretSchema,
|
|
823
|
+
/** API 基础 URL 覆盖 */
|
|
824
|
+
baseUrl: z.url().optional(),
|
|
825
|
+
/** 阿里云百炼业务空间 ID(可选) */
|
|
826
|
+
workspaceId: z.string().optional(),
|
|
827
|
+
/** 整次图片生成与下载超时(毫秒,1–2147483647,默认 120000) */
|
|
828
|
+
timeout: z.number().int().positive().max(2147483647).default(12e4)
|
|
829
|
+
});
|
|
830
|
+
var ImageConfigSchema = z.object({
|
|
831
|
+
/** 单张图片或参考图的字节上限,默认 20 MiB;JSON 上限为 max(64 KiB, 两倍图片上限)。 */
|
|
832
|
+
maxImageBytes: z.number().int().positive().max(100 * 1024 * 1024).default(20 * 1024 * 1024),
|
|
833
|
+
/** 单次生成/参考图数量上限,默认 4,最大 16;临时 URL 串行下载。 */
|
|
834
|
+
maxImages: z.number().int().positive().max(16).default(4),
|
|
835
|
+
/** 注册的文生图模型 */
|
|
836
|
+
models: z.array(ImageModelEntrySchema).optional(),
|
|
837
|
+
/** 默认文生图模型 ID */
|
|
838
|
+
generateModel: z.string().optional()
|
|
839
|
+
});
|
|
840
|
+
var IMAGE_PROVIDER_DEFAULT_BASE_URL = {
|
|
841
|
+
openai: "https://api.openai.com/v1",
|
|
842
|
+
google: "https://generativelanguage.googleapis.com",
|
|
843
|
+
qwen: "https://dashscope.aliyuncs.com/api/v1",
|
|
844
|
+
seedream: "https://ark.cn-beijing.volces.com/api/v3",
|
|
845
|
+
pollinations: "https://gen.pollinations.ai"
|
|
846
|
+
};
|
|
847
|
+
function imageProviderEnvApiKey(provider) {
|
|
848
|
+
switch (provider) {
|
|
849
|
+
case "openai":
|
|
850
|
+
return process.env.HAI_AI_IMAGE_OPENAI_APIKEY?.trim() || process.env.OPENAI_API_KEY;
|
|
851
|
+
case "google":
|
|
852
|
+
return process.env.HAI_AI_IMAGE_GOOGLE_APIKEY?.trim() || process.env.GEMINI_API_KEY;
|
|
853
|
+
case "qwen":
|
|
854
|
+
return process.env.HAI_AI_IMAGE_QWEN_APIKEY?.trim() || process.env.DASHSCOPE_API_KEY;
|
|
855
|
+
case "seedream":
|
|
856
|
+
return (process.env.HAI_AI_IMAGE_SEEDREAM_APIKEY?.trim() || process.env.ARK_API_KEY) ?? process.env.VOLC_API_KEY;
|
|
857
|
+
case "pollinations":
|
|
858
|
+
return process.env.HAI_AI_IMAGE_POLLINATIONS_APIKEY?.trim() || process.env.POLLINATIONS_API_KEY;
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
function resolveImageModel(imageConfig, explicit) {
|
|
862
|
+
const target = explicit ?? imageConfig.generateModel;
|
|
863
|
+
if (!target)
|
|
864
|
+
return err(HaiAIError.IMAGE_MODEL_NOT_FOUND, aiM("ai_imageModelNotFound", { params: { model: "<generate>" } }));
|
|
865
|
+
const entry = imageConfig.models?.find((model) => model.id === target || model.model === target);
|
|
866
|
+
if (!entry)
|
|
867
|
+
return err(HaiAIError.IMAGE_MODEL_NOT_FOUND, aiM("ai_imageModelNotFound", { params: { model: target } }));
|
|
868
|
+
const apiKey = entry.apiKey ?? imageProviderEnvApiKey(entry.provider);
|
|
869
|
+
if (!apiKey)
|
|
870
|
+
return err(HaiAIError.CONFIGURATION_ERROR, aiM("ai_imageMissingApiKey", { params: { provider: entry.provider } }));
|
|
871
|
+
return ok({
|
|
872
|
+
id: entry.id,
|
|
873
|
+
provider: entry.provider,
|
|
874
|
+
model: entry.model,
|
|
875
|
+
apiKey,
|
|
876
|
+
baseUrl: (entry.baseUrl ?? IMAGE_PROVIDER_DEFAULT_BASE_URL[entry.provider]).replace(/\/+$/, ""),
|
|
877
|
+
workspaceId: entry.workspaceId,
|
|
878
|
+
timeout: entry.timeout
|
|
879
|
+
});
|
|
880
|
+
}
|
|
881
|
+
var AIConfigSchema = z.object({
|
|
882
|
+
/** LLM 配置(可选,所有字段有默认值) */
|
|
883
|
+
llm: LLMConfigSchema.default({
|
|
884
|
+
model: "gpt-4o-mini",
|
|
885
|
+
api: "chat",
|
|
886
|
+
maxTokens: 4096,
|
|
887
|
+
temperature: 0.7,
|
|
888
|
+
timeout: 6e4,
|
|
889
|
+
tempModelCacheTtl: 6e5
|
|
890
|
+
}),
|
|
891
|
+
/** MCP 配置 */
|
|
892
|
+
mcp: MCPConfigSchema.optional(),
|
|
893
|
+
/** Embedding 配置 */
|
|
894
|
+
embedding: EmbeddingConfigSchema.optional(),
|
|
895
|
+
/** Knowledge 配置 */
|
|
896
|
+
knowledge: KnowledgeConfigSchema.optional(),
|
|
897
|
+
/** Memory 配置 */
|
|
898
|
+
memory: MemoryConfigSchema.optional(),
|
|
899
|
+
/** Token 配置 */
|
|
900
|
+
token: TokenConfigSchema.optional(),
|
|
901
|
+
/** Summary 配置 */
|
|
902
|
+
summary: SummaryConfigSchema.optional(),
|
|
903
|
+
/** Compress 配置 */
|
|
904
|
+
compress: CompressConfigSchema.optional(),
|
|
905
|
+
/** Retrieval 配置(预注册检索源) */
|
|
906
|
+
retrieval: RetrievalConfigSchema.optional(),
|
|
907
|
+
/** File 解析配置 */
|
|
908
|
+
file: FileConfigSchema.optional(),
|
|
909
|
+
/** A2A 配置(Agent-to-Agent 协议) */
|
|
910
|
+
a2a: A2AConfigSchema.optional(),
|
|
911
|
+
/** Audio 配置(语音识别 / 语音合成) */
|
|
912
|
+
audio: AudioConfigSchema.optional(),
|
|
913
|
+
/** Image 配置(文生图) */
|
|
914
|
+
image: ImageConfigSchema.optional()
|
|
915
|
+
});
|
|
916
|
+
function serializePlayableAudio(audio) {
|
|
917
|
+
if (audio.format === "wav")
|
|
918
|
+
return ok({ audioBase64: toBase64(audio.data), format: "wav", mimeType: "audio/wav" });
|
|
919
|
+
if (audio.format === "mp3")
|
|
920
|
+
return ok({ audioBase64: toBase64(audio.data), format: "mp3", mimeType: "audio/mpeg" });
|
|
921
|
+
if (audio.format !== "pcm16")
|
|
922
|
+
return err(HaiAIError.AUDIO_UNSUPPORTED_INPUT, `Unsupported playable audio format: ${audio.format}`);
|
|
923
|
+
const sampleRate = audio.sampleRate;
|
|
924
|
+
const channels = audio.channels ?? 1;
|
|
925
|
+
if (sampleRate === void 0 || !Number.isInteger(sampleRate) || sampleRate <= 0 || channels !== 1 && channels !== 2 || audio.data.byteLength % (channels * 2) !== 0)
|
|
926
|
+
return err(HaiAIError.AUDIO_INVALID_REQUEST, "PCM16 audio metadata is invalid");
|
|
927
|
+
const wav = new Uint8Array(44 + audio.data.byteLength);
|
|
928
|
+
const view = new DataView(wav.buffer);
|
|
929
|
+
writeAscii(wav, 0, "RIFF");
|
|
930
|
+
view.setUint32(4, wav.byteLength - 8, true);
|
|
931
|
+
writeAscii(wav, 8, "WAVE");
|
|
932
|
+
writeAscii(wav, 12, "fmt ");
|
|
933
|
+
view.setUint32(16, 16, true);
|
|
934
|
+
view.setUint16(20, 1, true);
|
|
935
|
+
view.setUint16(22, channels, true);
|
|
936
|
+
view.setUint32(24, sampleRate, true);
|
|
937
|
+
view.setUint32(28, sampleRate * channels * 2, true);
|
|
938
|
+
view.setUint16(32, channels * 2, true);
|
|
939
|
+
view.setUint16(34, 16, true);
|
|
940
|
+
writeAscii(wav, 36, "data");
|
|
941
|
+
view.setUint32(40, audio.data.byteLength, true);
|
|
942
|
+
wav.set(audio.data, 44);
|
|
943
|
+
return ok({ audioBase64: toBase64(wav), format: "wav", mimeType: "audio/wav" });
|
|
944
|
+
}
|
|
945
|
+
function writeAscii(target, offset, value) {
|
|
946
|
+
for (let index = 0; index < value.length; index++)
|
|
947
|
+
target[offset + index] = value.charCodeAt(index);
|
|
948
|
+
}
|
|
949
|
+
function toBase64(data) {
|
|
950
|
+
let binary = "";
|
|
951
|
+
const chunkSize = 32768;
|
|
952
|
+
for (let offset = 0; offset < data.length; offset += chunkSize)
|
|
953
|
+
binary += String.fromCharCode(...data.subarray(offset, offset + chunkSize));
|
|
954
|
+
return btoa(binary);
|
|
955
|
+
}
|
|
956
|
+
var AUDIO_WS_PATH = AUDIO_WS_PATH$1;
|
|
957
|
+
var AudioFormatSchema = AudioFormatSchema$1;
|
|
958
|
+
var AudioWsStartMessageSchema = AudioWsStartMessageSchema$1;
|
|
959
|
+
var AudioWsTextMessageSchema = AudioWsTextMessageSchema$1;
|
|
960
|
+
var AudioWsDoneMessageSchema = AudioWsDoneMessageSchema$1;
|
|
961
|
+
var AudioWsClientMessageSchema = AudioWsClientMessageSchema$1;
|
|
962
|
+
|
|
963
|
+
export { A2AConfigSchema, A2ASkillConfigSchema, AIConfigSchema, AUDIO_WS_PATH, ApiTypeSchema, AudioConfigSchema, AudioFormatSchema, AudioModelEntrySchema, AudioOperationSchema, AudioOperationsSchema, AudioProviderSchema, AudioWsClientMessageSchema, AudioWsDoneMessageSchema, AudioWsStartMessageSchema, AudioWsTextMessageSchema, CompressConfigSchema, CompressionStrategySchema, EmbeddingConfigSchema, EntityTypeSchema, FileConfigSchema, ImageConfigSchema, ImageModelEntrySchema, ImageProviderSchema, KnowledgeConfigSchema, LLMConfigSchema, MCPConfigSchema, MCPServerCapabilitiesSchema, MCPServerConfigSchema, MemoryConfigSchema, MemoryTypeSchema, ModelEntrySchema, ModelScenarioSchema, OptionalSecretSchema, RetrievalConfigSchema, RetrievalSourceSchema, SummaryConfigSchema, TokenConfigSchema, aiM, ensureAudioCredential, resolveAudioModel, resolveImageModel, resolveModelApi, resolveModelEntry, serializePlayableAudio };
|
|
964
|
+
//# sourceMappingURL=chunk-HEVXR252.js.map
|
|
965
|
+
//# sourceMappingURL=chunk-HEVXR252.js.map
|