@h-ai/ai 1.0.0-beta.1 → 1.0.0-beta.11

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/dist/browser.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- export { A as A2AAgentCardConfig, a as A2AApiKeySecurity, b as A2AAuthenticator, c as A2ACallOptions, d as A2ACallResult, e as A2ACallerIdentity, f as A2AConfig, g as A2AConfigSchema, h as A2AContextInfo, i as A2AHandleResult, j as A2AMessageRecord, k as A2AOperations, l as A2ASecurityConfig, m as A2ASkillConfigSchema, n as A2ATaskFilter, o as AIConfig, p as AIConfigInput, q as AIConfigSchema, r as AIFunctions, s as AIInitOptions, t as AIRelStore, u as AIRelStoreCompareAndSwap, v as AIRelStoreOptions, w as AIStoreProvider, x as AIVectorBackend, y as AIVectorStore, z as AIVersionedRecord, B as AUDIO_WS_PATH, C as ApiType, D as ApiTypeSchema, E as AskOptions, F as AssistantMessage, G as AudioConfig, H as AudioConfigSchema, I as AudioFormatSchema, J as AudioModelEntry, K as AudioModelEntrySchema, L as AudioOperation, M as AudioOperationSchema, N as AudioOperationsSchema, O as AudioProviderName, P as AudioProviderSchema, Q as AudioWsClientMessage, R as AudioWsClientMessageSchema, S as AudioWsDoneMessage, T as AudioWsDoneMessageSchema, U as AudioWsEndMessage, V as AudioWsErrorMessage, W as AudioWsSegmentDoneMessage, X as AudioWsSegmentStartedMessage, Y as AudioWsServerMessage, Z as AudioWsSpeechMessage, _ as AudioWsStartMessage, $ as AudioWsStartMessageSchema, a0 as AudioWsTextMessage, a1 as AudioWsTextMessageSchema, a2 as AudioWsTranscriptMessage, a3 as ChatCompletionChoice, a4 as ChatCompletionChunk, a5 as ChatCompletionDelta, a6 as ChatCompletionRequest, a7 as ChatCompletionResponse, a8 as ChatHistoryOptions, a9 as ChatMessage, aa as ChatRecord, ab as Citation, ac as CommitTurnInput, ad as CompressConfig, ae as CompressConfigSchema, af as CompressOperations, ag as CompressOptions, ah as CompressResult, ai as CompressionStrategy, aj as CompressionStrategySchema, ak as ConsolidateOptions, al as ConsolidateResult, am as ContextChatOptions, an as ContextChatResult, ao as ContextManager, ap as ContextManagerOptions, aq as ContextOperations, ar as ContextResetOptions, as as ContextStreamEvent, at as ConversationTurn, au as ConversationTurnStatus, av as DefineToolOptions, aw as DeveloperMessage, ax as EmbeddingConfig, ay as EmbeddingConfigSchema, az as EmbeddingItem, aA as EmbeddingOperations, aB as EmbeddingRequest, aC as EmbeddingResponse, aD as EntityDocumentRelation, aE as EntityDocumentResult, aF as EntityListOptions, aG as EntityQueryOptions, aH as EntityType, aI as EntityTypeSchema, aJ as FileConfig, aK as FileConfigSchema, aL as FileOperations, aM as FileParseMethod, aN as FileParseOptions, aO as FileParseRequest, aP as FileParseResult, aQ as GenerateImageRequest, aR as GenerateImageResult, aS as GenerateObjectRequest, aT as GeneratedImage, aU as HaiAIError, aV as ImageConfig, aW as ImageConfigSchema, aX as ImageContent, aY as ImageModelEntry, aZ as ImageModelEntrySchema, a_ as ImageOperations, a$ as ImageProviderName, b0 as ImageProviderSchema, b1 as ImageSize, b2 as InteractionScope, b3 as KnowledgeAskOptions, b4 as KnowledgeAskResult, b5 as KnowledgeConfig, b6 as KnowledgeConfigSchema, b7 as KnowledgeDocumentInfo, b8 as KnowledgeDocumentListOptions, b9 as KnowledgeDocumentMetadata, ba as KnowledgeDocumentRemoveOptions, bb as KnowledgeDocumentRevision, bc as KnowledgeEntity, bd as KnowledgeIngestBatchProgress, be as KnowledgeIngestBatchResult, bf as KnowledgeIngestFileInput, bg as KnowledgeIngestInput, bh as KnowledgeIngestResult, bi as KnowledgeOperations, bj as KnowledgeRepairOptions, bk as KnowledgeRepairProgress, bl as KnowledgeRepairResult, bm as KnowledgeRetrieveItem, bn as KnowledgeRetrieveOptions, bo as KnowledgeRetrieveResult, bp as KnowledgeSetupOptions, bq as KnowledgeStore, br as LLMConfig, bs as LLMConfigSchema, bt as LLMOperations, bu as MCPConfig, bv as MCPConfigSchema, bw as MCPContext, bx as MCPOperations, by as MCPPrompt, bz as MCPPromptArgument, bA as MCPPromptContent, bB as MCPPromptMessage, bC as MCPResource, bD as MCPResourceContent, bE as MCPServerCapabilities, bF as MCPServerCapabilitiesSchema, bG as MCPServerConfig, bH as MCPServerConfigSchema, bI as MCPToolDefinition, bJ as MCPToolHandler, bK as McpServerOptions, bL as MemoryAccessScope, bM as MemoryAdminOperations, bN as MemoryClearAllOptions, bO as MemoryClearOptions, bP as MemoryConfig, bQ as MemoryConfigSchema, bR as MemoryCoreOperations, bS as MemoryEntry, bT as MemoryEntryInput, bU as MemoryExtractOptions, bV as MemoryInjectionOptions, bW as MemoryListOptions, bX as MemoryListPageOptions, bY as MemoryOperations, bZ as MemoryRecallOptions, b_ as MemoryType, b$ as MemoryTypeSchema, c0 as MemoryUpdateInput, c1 as MessageContent, c2 as MessageRole, c3 as ModelEntry, c4 as ModelEntrySchema, c5 as ModelScenario, c6 as ModelScenarioSchema, c7 as ObjectRef, c8 as OptionalSecretSchema, c9 as OutputFormat, ca as PersonaOperations, cb as PersonaProfile, cc as PersonaProfileInput, cd as PersonaProfileUpdate, ce as PersonaScopeOptions, cf as RagContextItem, cg as RagOperations, ch as RagOptions, ci as RagResult, cj as RagStreamEvent, ck as ReasoningOperations, cl as ReasoningOptions, cm as ReasoningResult, cn as ReasoningStep, co as ReasoningStepType, cp as ReasoningStrategy, cq as ReasoningStreamEvent, cr as ReferenceImage, cs as RerankDocument, ct as RerankItem, cu as RerankOperations, cv as RerankRequest, cw as RerankResponse, cx as ResolveRequiredModelEntryOptions, cy as ResolvedAudioModel, cz as ResolvedImageModel, cA as ResolvedModelConfig, cB as RetrievalConfig, cC as RetrievalConfigSchema, cD as RetrievalOperations, cE as RetrievalRequest, cF as RetrievalResult, cG as RetrievalResultItem, cH as RetrievalSource, cI as RetrievalSourceConfig, cJ as RetrievalSourceSchema, cK as SSEDecoder, cL as SSEEvent, cM as ScopedMemoryBinding, cN as ScopedMemoryOperations, cO as SessionInfo, cP as StoreFilter, cQ as StorePage, cR as StoreScope, cS as StreamOperations, cT as StreamProcessor, cU as StreamResult, cV as SummaryConfig, cW as SummaryConfigSchema, cX as SummaryOperations, cY as SummaryOptions, cZ as SummaryResult, c_ as SystemMessage, c$ as TempModelConfig, d0 as TextContent, d1 as TokenConfig, d2 as TokenConfigSchema, d3 as TokenOperations, d4 as TokenUsage, d5 as Tool, d6 as ToolAuthorizationRequest, d7 as ToolAuthorizer, d8 as ToolCall, d9 as ToolDefinition, da as ToolErrorType, db as ToolExecutionContext, dc as ToolExecutionOptions, dd as ToolMessage, de as ToolRegistryOperations, df as ToolRegistryOptions, dg as ToolsOperations, dh as UserMessage, di as WhereClause, dj as WhereOperator, dk as WhereValue, dl as ensureAudioCredential, dm as resolveAudioModel, dn as resolveImageModel, dp as resolveModelApi, dq as resolveModelEntry, dr as serializePlayableAudio } from './ai-audio-ws-protocol-nfhO0tOo.js';
1
+ export { A as A2AAgentCardConfig, a as A2AApiKeySecurity, b as A2AAuthenticator, c as A2ACallOptions, d as A2ACallResult, e as A2ACallerIdentity, f as A2AConfig, g as A2AConfigSchema, h as A2AContextInfo, i as A2AHandleResult, j as A2AMessageRecord, k as A2AOperations, l as A2ASecurityConfig, m as A2ASkillConfigSchema, n as A2ATaskFilter, o as ACPAgentAdapter, p as ACPAgentAdapterInput, q as ACPAgentLaunch, r as ACPAgentSchema, s as ACPClientOptions, t as ACPConfig, u as ACPConfigInput, v as ACPConfigSchema, w as ACPCreateSessionOptions, x as ACPGitReport, y as ACPOperations, z as ACPPublishSchema, B as ACPRepositorySchema, C as ACPSessionInfo, D as ACPTransport, E as ACPWorkspaceSchema, F as AIConfig, G as AIConfigInput, H as AIConfigSchema, I as AIFunctions, J as AIInitOptions, K as AIRelStore, L as AIRelStoreCompareAndSwap, M as AIRelStoreOptions, N as AIResourceEntry, O as AIResourceRegistry, P as AIStoreProvider, Q as AIVectorBackend, R as AIVectorStore, S as AIVersionedRecord, T as AUDIO_WS_PATH, U as ApiType, V as ApiTypeSchema, W as AskOptions, X as AssistantMessage, Y as AudioConfig, Z as AudioConfigSchema, _ as AudioFormatSchema, $ as AudioModelEntry, a0 as AudioModelEntrySchema, a1 as AudioOperation, a2 as AudioOperationSchema, a3 as AudioOperationsSchema, a4 as AudioProviderName, a5 as AudioProviderSchema, a6 as AudioWsClientMessage, a7 as AudioWsClientMessageSchema, a8 as AudioWsDoneMessage, a9 as AudioWsDoneMessageSchema, aa as AudioWsEndMessage, ab as AudioWsErrorMessage, ac as AudioWsSegmentDoneMessage, ad as AudioWsSegmentStartedMessage, ae as AudioWsServerMessage, af as AudioWsSpeechMessage, ag as AudioWsStartMessage, ah as AudioWsStartMessageSchema, ai as AudioWsTextMessage, aj as AudioWsTextMessageSchema, ak as AudioWsTranscriptMessage, al as ChatCompletionChoice, am as ChatCompletionChunk, an as ChatCompletionDelta, ao as ChatCompletionRequest, ap as ChatCompletionResponse, aq as ChatHistoryOptions, ar as ChatMessage, as as ChatRecord, at as Citation, au as CommitTurnInput, av as CompressConfig, aw as CompressConfigSchema, ax as CompressOperations, ay as CompressOptions, az as CompressResult, aA as CompressionStrategy, aB as CompressionStrategySchema, aC as ConsolidateOptions, aD as ConsolidateResult, aE as ContextChatOptions, aF as ContextChatResult, aG as ContextManager, aH as ContextManagerOptions, aI as ContextOperations, aJ as ContextResetOptions, aK as ContextStreamEvent, aL as ConversationTurn, aM as ConversationTurnStatus, aN as DefineToolOptions, aO as DeveloperMessage, aP as EmbeddingConfig, aQ as EmbeddingConfigSchema, aR as EmbeddingItem, aS as EmbeddingOperations, aT as EmbeddingRequest, aU as EmbeddingResponse, aV as EntityDocumentRelation, aW as EntityDocumentResult, aX as EntityListOptions, aY as EntityQueryOptions, aZ as EntityType, a_ as EntityTypeSchema, a$ as FileConfig, b0 as FileConfigSchema, b1 as FileOperations, b2 as FileParseMethod, b3 as FileParseOptions, b4 as FileParseRequest, b5 as FileParseResult, b6 as GenerateImageRequest, b7 as GenerateImageResult, b8 as GenerateObjectRequest, b9 as GeneratedImage, ba as HaiAIError, bb as ImageConfig, bc as ImageConfigSchema, bd as ImageContent, be as ImageModelEntry, bf as ImageModelEntrySchema, bg as ImageOperations, bh as ImageProviderName, bi as ImageProviderSchema, bj as ImageSize, bk as InteractionScope, bl as KnowledgeAskOptions, bm as KnowledgeAskResult, bn as KnowledgeConfig, bo as KnowledgeConfigSchema, bp as KnowledgeDocumentInfo, bq as KnowledgeDocumentListOptions, br as KnowledgeDocumentMetadata, bs as KnowledgeDocumentRemoveOptions, bt as KnowledgeDocumentRevision, bu as KnowledgeEntity, bv as KnowledgeIngestBatchProgress, bw as KnowledgeIngestBatchResult, bx as KnowledgeIngestFileInput, by as KnowledgeIngestInput, bz as KnowledgeIngestResult, bA as KnowledgeOperations, bB as KnowledgeRepairOptions, bC as KnowledgeRepairProgress, bD as KnowledgeRepairResult, bE as KnowledgeRetrieveItem, bF as KnowledgeRetrieveOptions, bG as KnowledgeRetrieveResult, bH as KnowledgeSetupOptions, bI as KnowledgeStore, bJ as LLMConfig, bK as LLMConfigSchema, bL as LLMOperations, bM as MCPConfig, bN as MCPConfigSchema, bO as MCPContext, bP as MCPExternalServer, bQ as MCPExternalServerSchema, bR as MCPOperations, bS as MCPPrompt, bT as MCPPromptArgument, bU as MCPPromptContent, bV as MCPPromptMessage, bW as MCPResource, bX as MCPResourceContent, bY as MCPServerCapabilities, bZ as MCPServerCapabilitiesSchema, b_ as MCPServerConfig, b$ as MCPServerConfigSchema, c0 as MCPToolDefinition, c1 as MCPToolHandler, c2 as ManagedAudioOperations, c3 as ManagedImageOperations, c4 as ManagedLLMOperations, c5 as ManagedMCPOperations, c6 as ManagedRetrievalOperations, c7 as McpServerOptions, c8 as MemoryAccessScope, c9 as MemoryAdminOperations, ca as MemoryClearAllOptions, cb as MemoryClearOptions, cc as MemoryConfig, cd as MemoryConfigSchema, ce as MemoryCoreOperations, cf as MemoryEntry, cg as MemoryEntryInput, ch as MemoryExtractOptions, ci as MemoryInjectionOptions, cj as MemoryListOptions, ck as MemoryListPageOptions, cl as MemoryOperations, cm as MemoryRecallOptions, cn as MemoryType, co as MemoryTypeSchema, cp as MemoryUpdateInput, cq as MessageContent, cr as MessageRole, cs as ModelCapabilitiesSchema, ct as ModelEntry, cu as ModelEntrySchema, cv as ModelScenario, cw as ModelScenarioSchema, cx as ObjectRef, cy as OptionalSecretSchema, cz as OutputFormat, cA as PersonaOperations, cB as PersonaProfile, cC as PersonaProfileInput, cD as PersonaProfileUpdate, cE as PersonaScopeOptions, cF as RagContextItem, cG as RagOperations, cH as RagOptions, cI as RagResult, cJ as RagStreamEvent, cK as ReasoningOperations, cL as ReasoningOptions, cM as ReasoningResult, cN as ReasoningStep, cO as ReasoningStepType, cP as ReasoningStrategy, cQ as ReasoningStreamEvent, cR as ReferenceImage, cS as RerankDocument, cT as RerankItem, cU as RerankOperations, cV as RerankRequest, cW as RerankResponse, cX as ResolveRequiredModelEntryOptions, cY as ResolvedAudioModel, cZ as ResolvedImageModel, c_ as ResolvedModelConfig, c$ as RetrievalConfig, d0 as RetrievalConfigSchema, d1 as RetrievalOperations, d2 as RetrievalRequest, d3 as RetrievalResult, d4 as RetrievalResultItem, d5 as RetrievalSource, d6 as RetrievalSourceConfig, d7 as RetrievalSourceSchema, d8 as SSEDecoder, d9 as SSEEvent, da as ScopedMemoryBinding, db as ScopedMemoryOperations, dc as SessionInfo, dd as StoreFilter, de as StorePage, df as StoreScope, dg as StreamOperations, dh as StreamProcessor, di as StreamResult, dj as SummaryConfig, dk as SummaryConfigSchema, dl as SummaryOperations, dm as SummaryOptions, dn as SummaryResult, dp as SystemMessage, dq as TempModelConfig, dr as TextContent, ds as TokenConfig, dt as TokenConfigSchema, du as TokenOperations, dv as TokenUsage, dw as Tool, dx as ToolAuthorizationRequest, dy as ToolAuthorizer, dz as ToolCall, dA as ToolDefinition, dB as ToolErrorType, dC as ToolExecutionContext, dD as ToolExecutionOptions, dE as ToolMessage, dF as ToolRegistryOperations, dG as ToolRegistryOptions, dH as ToolsOperations, dI as UserMessage, dJ as WhereClause, dK as WhereOperator, dL as WhereValue, dM as ensureAudioCredential, dN as resolveAudioModel, dO as resolveImageModel, dP as resolveModelApi, dQ as resolveModelEntry, dR as serializePlayableAudio } from './ai-acp-types-DQ8jO9Ie.js';
2
2
  export { A as AudioCapabilitiesRequest, a as AudioContent, b as AudioFormat, c as AudioInputStream, d as AudioModelCapabilities, e as AudioOperations, f as AudioReference, P as PlayableAudio, S as SynthesisEvent, g as SynthesisOptions, h as SynthesisRequest, i as SynthesisResult, j as SynthesisStreamRequest, k as SynthesisTextSegment, T as TranscriptionEvent, l as TranscriptionOptions, m as TranscriptionRequest, n as TranscriptionResult, o as TranscriptionSegment, p as TranscriptionStreamRequest, q as TranscriptionTimestampGranularity, r as TranscriptionWord } from './ai-audio-types-4R5yUAVl.js';
3
3
  export { AudioClientConfig, AudioClientOperations, AudioTicketRequest, createAudioClient } from './client/index.js';
4
4
  export { AgentCapabilities, AgentCard, AgentProvider, AgentSkill, Artifact, DataPart, FilePart, FileWithBytes, FileWithUri, Message, MessageSendParams, Part, PushNotificationConfig, Task, TaskArtifactUpdateEvent, TaskIdParams, TaskQueryParams, TaskState, TaskStatus, TaskStatusUpdateEvent, TextPart } from '@a2a-js/sdk';
5
5
  export { AgentExecutor, ExecutionEventBus } from '@a2a-js/sdk/server';
6
6
  import '@h-ai/core';
7
7
  import 'zod';
8
- import 'openai';
9
8
  import 'node:buffer';
10
9
  import '@h-ai/datapipe';
11
- import '@modelcontextprotocol/sdk/types.js';
12
10
  import 'zod/v4/core';
11
+ import '@agentclientprotocol/sdk';
12
+ import 'openai';
13
+ import '@modelcontextprotocol/sdk/types.js';
package/dist/browser.js CHANGED
@@ -1,5 +1,5 @@
1
- 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, ensureAudioCredential, resolveAudioModel, resolveImageModel, resolveModelApi, resolveModelEntry, serializePlayableAudio } from './chunk-HEVXR252.js';
2
- export { createAudioClient } from './chunk-GMQFIWND.js';
3
- export { HaiAIError } from './chunk-HYMP57AC.js';
1
+ export { A2AConfigSchema, A2ASkillConfigSchema, ACPAgentSchema, ACPConfigSchema, ACPPublishSchema, ACPRepositorySchema, ACPWorkspaceSchema, 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, MCPExternalServerSchema, MCPServerCapabilitiesSchema, MCPServerConfigSchema, MemoryConfigSchema, MemoryTypeSchema, ModelCapabilitiesSchema, ModelEntrySchema, ModelScenarioSchema, OptionalSecretSchema, RetrievalConfigSchema, RetrievalSourceSchema, SummaryConfigSchema, TokenConfigSchema, ensureAudioCredential, resolveAudioModel, resolveImageModel, resolveModelApi, resolveModelEntry, serializePlayableAudio } from './chunk-HEYVFQC6.js';
2
+ export { createAudioClient } from './chunk-O6P4P5PC.js';
3
+ export { HaiAIError } from './chunk-M77C3VAP.js';
4
4
  //# sourceMappingURL=browser.js.map
5
5
  //# sourceMappingURL=browser.js.map
@@ -1,10 +1,167 @@
1
- import { HaiAIError } from './chunk-HYMP57AC.js';
1
+ import { HaiAIError } from './chunk-M77C3VAP.js';
2
2
  import { z } from 'zod';
3
3
  import process from 'process';
4
4
  import { core, err, ok } from '@h-ai/core';
5
5
  import { ChunkOptionsSchema, CleanOptionsSchema } from '@h-ai/datapipe';
6
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
7
 
8
+ var acpIdSchema = z.string().regex(/^[a-z0-9][\w-]{0,95}$/i);
9
+ var branch = z.string().min(1).max(240).refine(
10
+ (value) => !value.startsWith("-") && !/[\s~^:?*\\[]/.test(value) && !Array.from(value).some((character) => character.charCodeAt(0) < 32) && !value.includes("..") && !value.includes("@{") && !value.endsWith(".lock") && !value.endsWith("/") && !value.startsWith("/")
11
+ );
12
+ var environment = z.record(z.string().regex(/^[A-Z_]\w*$/i), z.string().regex(/^[A-Z_]\w*$/i)).default({});
13
+ var ACPRepositorySchema = z.strictObject({
14
+ /** 清单中的唯一 ID;同时用于受管理目录名。 */
15
+ id: acpIdSchema.refine((value) => !["files", ".state"].includes(value)),
16
+ /** 远程地址,不允许命令选项和换行。 */
17
+ url: z.string().min(1).refine((value) => !value.startsWith("-") && !/[\r\n\0]/.test(value)),
18
+ /** 该工程明确指定的主分支,更新和 merge-main 发布均使用此值。 */
19
+ mainBranch: branch,
20
+ /** Git remote 名,默认 origin。 */
21
+ remote: acpIdSchema.default("origin")
22
+ });
23
+ var ACPWorkspaceSchema = z.strictObject({
24
+ /** 清单中的唯一 ID;同时用于受管理目录名。 */
25
+ id: acpIdSchema,
26
+ /** 持久存储位置;directory 供本机,volume 供托管容器。 */
27
+ storage: z.discriminatedUnion("type", [
28
+ z.strictObject({
29
+ /** 本机目录存储。 */
30
+ type: z.literal("directory"),
31
+ /** 本机绝对或相对目录,运行时归一化为真实绝对路径。 */
32
+ path: z.string().min(1)
33
+ }),
34
+ z.strictObject({
35
+ /** 存储类型判别字段。 */
36
+ type: z.literal("volume"),
37
+ /** 可读名称;volume 时表示持久卷名。 */
38
+ name: acpIdSchema,
39
+ /** auto 优先可用 Podman,再选 Docker;显式选择不自动降级。 */
40
+ engine: z.enum(["auto", "podman", "docker"]).default("auto"),
41
+ /** 已部署的 Agent 镜像,工作区和智能体需使用同一镜像。 */
42
+ image: z.string().min(1).refine((value) => !value.startsWith("-"))
43
+ })
44
+ ]),
45
+ /** 多个 Git 工程;默认空数组,不使用 Git 时仅创建文件目录。 */
46
+ repositories: z.array(ACPRepositorySchema).default([]),
47
+ /** 目标环境变量名到宿主环境变量名的映射;保存引用而非明文凭据。 */
48
+ environmentRefs: environment
49
+ }).refine(
50
+ (value) => new Set(value.repositories.map((repo) => repo.id)).size === value.repositories.length
51
+ );
52
+ var common = {
53
+ /** 清单中的唯一 ID;同时用于受管理目录名。 */
54
+ id: acpIdSchema,
55
+ /** 智能体的可读名称。 */
56
+ name: z.string().min(1),
57
+ /** 默认启用,禁用后禁止新建和恢复会话。 */
58
+ enabled: z.boolean().default(true),
59
+ /** 原生配置适配器名称,默认 generic。 */
60
+ adapter: z.string().min(1).default("generic"),
61
+ /** 绑定 Hai LLM 模型 ID;默认空数组。 */
62
+ modelIds: z.array(z.string().min(1)).default([]),
63
+ /** 默认选择的模型 ID,必须存在于 modelIds。 */
64
+ defaultModelId: z.string().min(1).optional(),
65
+ /** 目标环境变量名到宿主环境变量名的映射;保存引用而非明文凭据。 */
66
+ environmentRefs: environment
67
+ };
68
+ var launch = {
69
+ /** 可选原生程序覆盖,使用参数数组执行,不经过 shell。 */
70
+ command: z.string().min(1).optional(),
71
+ /** 原生启动参数,省略时由适配器提供默认值。 */
72
+ args: z.array(z.string()).optional()
73
+ };
74
+ var ACPAgentSchema = z.discriminatedUnion("mode", [
75
+ z.strictObject({
76
+ ...common,
77
+ /** 接入模式:自定义远程服务、本机内嵌进程或托管容器。 */
78
+ mode: z.literal("custom-service"),
79
+ /** 智能体原生支持的传输;不自动转换 stdio 和 HTTP/WS。 */
80
+ transport: z.enum(["http", "ws"]),
81
+ /** 远程地址,不允许命令选项和换行。 */
82
+ url: z.url(),
83
+ /** 远程认证 Header 名到宿主变量名的映射。 */
84
+ headerEnv: z.record(z.string(), z.string()).default({}),
85
+ /** 自定义服务显式声明的原生 HTTP/WS 能力。 */
86
+ supportedTransports: z.array(z.enum(["http", "ws"])).min(1)
87
+ }),
88
+ z.strictObject({
89
+ ...common,
90
+ ...launch,
91
+ /** 接入模式:自定义远程服务、本机内嵌进程或托管容器。 */
92
+ mode: z.literal("embedded"),
93
+ /** 智能体原生支持的传输;不自动转换 stdio 和 HTTP/WS。 */
94
+ transport: z.literal("stdio").default("stdio")
95
+ }),
96
+ z.strictObject({
97
+ ...common,
98
+ ...launch,
99
+ /** 接入模式:自定义远程服务、本机内嵌进程或托管容器。 */
100
+ mode: z.literal("builtin-service"),
101
+ /** 智能体原生支持的传输;不自动转换 stdio 和 HTTP/WS。 */
102
+ transport: z.literal("stdio").default("stdio"),
103
+ /** 已部署的 Agent 镜像,工作区和智能体需使用同一镜像。 */
104
+ image: z.string().min(1).refine((value) => !value.startsWith("-")),
105
+ /** auto 优先可用 Podman,再选 Docker;显式选择不自动降级。 */
106
+ engine: z.enum(["auto", "podman", "docker"]).default("auto")
107
+ })
108
+ ]).superRefine((value, ctx) => {
109
+ if (value.defaultModelId && !value.modelIds.includes(value.defaultModelId)) {
110
+ ctx.addIssue({
111
+ code: "custom",
112
+ path: ["defaultModelId"],
113
+ message: "Model binding mismatch"
114
+ });
115
+ }
116
+ if (value.mode === "custom-service") {
117
+ const protocol = new URL(value.url).protocol;
118
+ if (!(value.transport === "http" ? ["http:", "https:"] : ["ws:", "wss:"]).includes(protocol) || !value.supportedTransports.includes(value.transport)) {
119
+ ctx.addIssue({
120
+ code: "custom",
121
+ path: ["transport"],
122
+ message: "Transport mismatch"
123
+ });
124
+ }
125
+ if (value.modelIds.length || value.defaultModelId) {
126
+ ctx.addIssue({
127
+ code: "custom",
128
+ path: ["modelIds"],
129
+ message: "External service owns its model configuration"
130
+ });
131
+ }
132
+ }
133
+ });
134
+ var ACPPublishSchema = z.strictObject({
135
+ /** 发布到登记的主分支,或以同名会话分支推送到各工程。 */
136
+ mode: z.enum(["merge-main", "push-branch"]),
137
+ /** 非空 Git 提交说明。 */
138
+ message: z.string().min(1).max(1e4),
139
+ /** Git 提交身份,由调用方明确提供。 */
140
+ author: z.strictObject({
141
+ /** Git 提交者名称,不允许换行或尖括号。 */
142
+ name: z.string().min(1).refine((value) => !/[\r\n<>]/.test(value)),
143
+ /** Git 提交者邮箱。 */
144
+ email: z.email()
145
+ })
146
+ });
147
+ var sessionIdentitySchema = acpIdSchema;
148
+ var branchNameSchema = branch;
149
+ var ACPConfigSchema = z.strictObject({
150
+ /** 配置文件定义的只读智能体,与数据库记录按 ID 合并。 */
151
+ agents: z.array(ACPAgentSchema).default([]),
152
+ /** 配置文件定义的只读工作区,与数据库记录按 ID 合并。 */
153
+ workspaces: z.array(ACPWorkspaceSchema).default([]),
154
+ /** 握手和控制请求超时,毫秒。 */
155
+ requestTimeout: z.number().int().positive().default(3e4),
156
+ /** 单轮任务超时,毫秒。 */
157
+ promptTimeout: z.number().int().positive().default(6e5),
158
+ /** 取消后等待终态的上限,毫秒。 */
159
+ cancelTimeout: z.number().int().positive().default(5e3),
160
+ /** 单轮输入和累计输出的字节上限。 */
161
+ maxContentBytes: z.number().int().positive().default(8 * 1024 * 1024),
162
+ /** 未消费事件数量上限。 */
163
+ maxPendingEvents: z.number().int().positive().default(1024)
164
+ });
8
165
  var CompressionStrategySchema = z.enum(["summary", "sliding-window", "hybrid"]);
9
166
  var EntityTypeSchema = z.enum(["person", "project", "concept", "organization", "location", "event", "other"]);
10
167
  var MemoryTypeSchema = z.enum(["fact", "preference", "event", "entity", "instruction"]);
@@ -144,7 +301,29 @@ var en_US_default = {
144
301
  ai_a2aOutputLimit: "A2A output queue limit exceeded",
145
302
  ai_a2aExecutionInterrupted: "A2A execution interrupted",
146
303
  ai_a2aSubscriptionAdvanced: "A later message advanced the subscription",
147
- ai_a2aExecutorAlreadyRegistered: "A2A executor is already registered; close AI before replacing it"
304
+ ai_a2aExecutorAlreadyRegistered: "A2A executor is already registered; close AI before replacing it",
305
+ ai_llmProtocolRenamed: "LLM api was renamed to protocol. Update llm.protocol, models[].protocol, tempModel.protocol and HAI_AI_LLM_PROTOCOL / HAI_AI_LLM_MODELS_<index>_PROTOCOL environment variables.",
306
+ ai_modelCapabilitiesInvalid: "Invalid model capabilities: output capacity exceeds context capacity, or reasoning efforts are declared without reasoning support.",
307
+ ai_acpGitNotFound: "Git is not installed in the execution environment.",
308
+ ai_acpOperationFailed: "ACP operation failed. Check the connection, workspace and runtime.",
309
+ ai_acpInvalid: "Invalid ACP request.",
310
+ ai_acpNotFound: "ACP resource not found.",
311
+ ai_acpBusy: "ACP resource is busy.",
312
+ ai_acpUnsupported: "The agent or runtime does not support this operation.",
313
+ ai_acpCancelled: "ACP operation cancelled.",
314
+ ai_acpTimeout: "ACP operation timed out.",
315
+ ai_acpOutput: "ACP output is invalid, ambiguous or exceeds limits.",
316
+ ai_acpConflict: "ACP state conflict. Check working directories and branches.",
317
+ ai_acpPartial: "Some repository operations failed. Inspect individual results.",
318
+ ai_acpClosed: "ACP session or module is closed.",
319
+ ai_acpRuntime: "Runtime unavailable. Check Podman/Docker or local executables.",
320
+ ai_acpModel: "Model configuration is incompatible or missing required capabilities.",
321
+ ai_acpCleanup: "Runtime cleanup is incomplete; the working directory remains occupied.",
322
+ ai_resourceReadOnly: "Configuration-defined resources are read-only.",
323
+ ai_resourceNotFound: "Resource not found.",
324
+ ai_resourceConflict: "Resource exists or its version changed.",
325
+ ai_resourceInvalid: "Invalid resource configuration.",
326
+ ai_resourceOperationFailed: "Resource registry operation failed."
148
327
  };
149
328
 
150
329
  // messages/ja-JP.json
@@ -282,7 +461,29 @@ var ja_JP_default = {
282
461
  ai_a2aOutputLimit: "A2A \u51FA\u529B\u30AD\u30E5\u30FC\u306E\u5BB9\u91CF\u4E0A\u9650\u3092\u8D85\u3048\u3066\u3044\u307E\u3059",
283
462
  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
463
  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"
464
+ 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",
465
+ ai_llmProtocolRenamed: "LLM \u306E api \u306F protocol \u306B\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\u3002llm.protocol\u3001models[].protocol\u3001tempModel.protocol \u3068\u74B0\u5883\u5909\u6570 HAI_AI_LLM_PROTOCOL / HAI_AI_LLM_MODELS_<\u756A\u53F7>_PROTOCOL \u3092\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
466
+ ai_modelCapabilitiesInvalid: "\u30E2\u30C7\u30EB\u80FD\u529B\u304C\u7121\u52B9\u3067\u3059\u3002\u51FA\u529B\u4E0A\u9650\u306F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u5BB9\u91CF\u4EE5\u4E0B\u306B\u3057\u3001\u63A8\u8AD6\u975E\u5BFE\u5FDC\u6642\u306F\u63A8\u8AD6\u30EC\u30D9\u30EB\u3092\u6307\u5B9A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002",
467
+ ai_acpGitNotFound: "\u5B9F\u884C\u74B0\u5883\u306B Git \u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",
468
+ ai_acpOperationFailed: "ACP \u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u63A5\u7D9A\u3001\u4F5C\u696D\u9818\u57DF\u3001\u5B9F\u884C\u74B0\u5883\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
469
+ ai_acpInvalid: "ACP \u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u7121\u52B9\u3067\u3059\u3002",
470
+ ai_acpNotFound: "ACP \u30EA\u30BD\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",
471
+ ai_acpBusy: "ACP \u30EA\u30BD\u30FC\u30B9\u306F\u4F7F\u7528\u4E2D\u3067\u3059\u3002",
472
+ ai_acpUnsupported: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u307E\u305F\u306F\u5B9F\u884C\u74B0\u5883\u306F\u3053\u306E\u64CD\u4F5C\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\u3002",
473
+ ai_acpCancelled: "ACP \u64CD\u4F5C\u306F\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F\u3002",
474
+ ai_acpTimeout: "ACP \u64CD\u4F5C\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\u3002",
475
+ ai_acpOutput: "ACP \u51FA\u529B\u304C\u7121\u52B9\u3001\u4E0D\u660E\u78BA\u3001\u307E\u305F\u306F\u4E0A\u9650\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002",
476
+ ai_acpConflict: "ACP \u72B6\u614B\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u30D6\u30E9\u30F3\u30C1\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
477
+ ai_acpPartial: "\u4E00\u90E8\u306E\u30EA\u30DD\u30B8\u30C8\u30EA\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u500B\u5225\u306E\u7D50\u679C\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
478
+ ai_acpClosed: "ACP \u30BB\u30C3\u30B7\u30E7\u30F3\u307E\u305F\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u7D42\u4E86\u3057\u3066\u3044\u307E\u3059\u3002",
479
+ ai_acpRuntime: "\u5B9F\u884C\u74B0\u5883\u3092\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002Podman/Docker \u307E\u305F\u306F\u5B9F\u884C\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
480
+ ai_acpModel: "\u30E2\u30C7\u30EB\u8A2D\u5B9A\u306B\u4E92\u63DB\u6027\u304C\u306A\u3044\u304B\u3001\u5FC5\u8981\u306A\u80FD\u529B\u60C5\u5831\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002",
481
+ ai_acpCleanup: "\u5B9F\u884C\u30EA\u30BD\u30FC\u30B9\u306E\u505C\u6B62\u304C\u5B8C\u4E86\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u4F5C\u696D\u9818\u57DF\u306F\u4F7F\u7528\u4E2D\u306E\u307E\u307E\u3067\u3059\u3002",
482
+ ai_resourceReadOnly: "\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u306E\u30EA\u30BD\u30FC\u30B9\u306F\u5909\u66F4\u3067\u304D\u307E\u305B\u3093\u3002",
483
+ ai_resourceNotFound: "\u30EA\u30BD\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",
484
+ ai_resourceConflict: "\u30EA\u30BD\u30FC\u30B9\u304C\u5B58\u5728\u3059\u308B\u304B\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u5909\u66F4\u3055\u308C\u3066\u3044\u307E\u3059\u3002",
485
+ ai_resourceInvalid: "\u30EA\u30BD\u30FC\u30B9\u8A2D\u5B9A\u304C\u7121\u52B9\u3067\u3059\u3002",
486
+ ai_resourceOperationFailed: "\u30EA\u30BD\u30FC\u30B9\u4E00\u89A7\u306E\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"
286
487
  };
287
488
 
288
489
  // messages/zh-CN.json
@@ -420,7 +621,29 @@ var zh_CN_default = {
420
621
  ai_a2aOutputLimit: "A2A \u8F93\u51FA\u961F\u5217\u5BB9\u91CF\u8D85\u9650",
421
622
  ai_a2aExecutionInterrupted: "A2A \u6267\u884C\u5DF2\u4E2D\u65AD\uFF0C\u987B\u6838\u5BF9\u5916\u90E8\u6548\u679C",
422
623
  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"
624
+ ai_a2aExecutorAlreadyRegistered: "A2A \u6267\u884C\u5668\u5DF2\u6CE8\u518C\uFF0C\u66F4\u6362\u524D\u8BF7\u5173\u95ED AI",
625
+ ai_llmProtocolRenamed: "LLM \u7684 api \u5DF2\u6539\u540D\u4E3A protocol\u3002\u8BF7\u66F4\u65B0 llm.protocol\u3001models[].protocol\u3001tempModel.protocol \u53CA HAI_AI_LLM_PROTOCOL / HAI_AI_LLM_MODELS_<\u7D22\u5F15>_PROTOCOL \u73AF\u5883\u53D8\u91CF\u3002",
626
+ ai_modelCapabilitiesInvalid: "\u6A21\u578B\u80FD\u529B\u914D\u7F6E\u65E0\u6548\uFF1A\u8F93\u51FA\u5BB9\u91CF\u4E0D\u80FD\u8D85\u8FC7\u4E0A\u4E0B\u6587\u5BB9\u91CF\uFF0C\u4E0D\u652F\u6301\u63A8\u7406\u65F6\u4E0D\u80FD\u58F0\u660E\u63A8\u7406\u7EA7\u522B\u3002",
627
+ ai_acpGitNotFound: "\u5F53\u524D\u6267\u884C\u73AF\u5883\u672A\u5B89\u88C5 Git\uFF0C\u65E0\u6CD5\u6267\u884C\u5DE5\u4F5C\u533A\u64CD\u4F5C\u3002",
628
+ ai_acpOperationFailed: "ACP \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u8FDE\u63A5\u3001\u5DE5\u4F5C\u533A\u72B6\u6001\u548C\u8FD0\u884C\u73AF\u5883\u3002",
629
+ ai_acpInvalid: "ACP \u8BF7\u6C42\u53C2\u6570\u65E0\u6548\u3002",
630
+ ai_acpNotFound: "ACP \u8D44\u6E90\u4E0D\u5B58\u5728\u3002",
631
+ ai_acpBusy: "ACP \u8D44\u6E90\u6B63\u5728\u4F7F\u7528\u4E2D\u3002",
632
+ ai_acpUnsupported: "\u5F53\u524D\u667A\u80FD\u4F53\u6216\u6267\u884C\u73AF\u5883\u4E0D\u652F\u6301\u6B64\u64CD\u4F5C\u3002",
633
+ ai_acpCancelled: "ACP \u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002",
634
+ ai_acpTimeout: "ACP \u64CD\u4F5C\u8D85\u65F6\u3002",
635
+ ai_acpOutput: "ACP \u8F93\u51FA\u65E0\u6548\u3001\u5B58\u5728\u6B67\u4E49\u6216\u8D85\u8FC7\u9650\u5236\u3002",
636
+ ai_acpConflict: "ACP \u72B6\u6001\u51B2\u7A81\uFF0C\u8BF7\u68C0\u67E5\u5DE5\u4F5C\u76EE\u5F55\u548C\u5206\u652F\u3002",
637
+ ai_acpPartial: "\u90E8\u5206\u4ED3\u5E93\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u9010\u4ED3\u5E93\u7ED3\u679C\u3002",
638
+ ai_acpClosed: "ACP \u4F1A\u8BDD\u6216\u6A21\u5757\u5DF2\u5173\u95ED\u3002",
639
+ ai_acpRuntime: "\u6CA1\u6709\u53EF\u7528\u7684\u6267\u884C\u73AF\u5883\uFF0C\u8BF7\u68C0\u67E5 Podman/Docker \u6216\u672C\u673A\u7A0B\u5E8F\u3002",
640
+ ai_acpModel: "\u6A21\u578B\u914D\u7F6E\u4E0E\u667A\u80FD\u4F53\u4E0D\u517C\u5BB9\uFF0C\u6216\u7F3A\u5C11\u5FC5\u8981\u80FD\u529B\u4FE1\u606F\u3002",
641
+ ai_acpCleanup: "\u8FD0\u884C\u8D44\u6E90\u672A\u5B8C\u5168\u505C\u6B62\uFF0C\u5DE5\u4F5C\u76EE\u5F55\u4ECD\u4FDD\u6301\u5360\u7528\u3002",
642
+ ai_resourceReadOnly: "\u914D\u7F6E\u6587\u4EF6\u5B9A\u4E49\u7684\u8D44\u6E90\u4E0D\u53EF\u4FEE\u6539\u3002",
643
+ ai_resourceNotFound: "\u8D44\u6E90\u4E0D\u5B58\u5728\u3002",
644
+ ai_resourceConflict: "\u8D44\u6E90\u5DF2\u5B58\u5728\u6216\u7248\u672C\u53D1\u751F\u53D8\u5316\u3002",
645
+ ai_resourceInvalid: "\u8D44\u6E90\u914D\u7F6E\u65E0\u6548\u3002",
646
+ ai_resourceOperationFailed: "\u8D44\u6E90\u6E05\u5355\u64CD\u4F5C\u5931\u8D25\u3002"
424
647
  };
425
648
 
426
649
  // src/ai-i18n.ts
@@ -436,13 +659,34 @@ var OptionalSecretSchema = z.string().nullable().transform(
436
659
  ).optional();
437
660
  var ModelScenarioSchema = z.enum(["default", "chat", "reasoning", "plan", "execute", "extraction", "summary", "embedding", "rerank", "ocr", "fast"]);
438
661
  var ApiTypeSchema = z.enum(["chat", "responses", "anthropic"]);
439
- var ModelEntrySchema = z.object({
662
+ var ModelCapabilitiesSchema = z.strictObject({
663
+ /** 可用上下文总容量(Token);未知时省略,不由输出预算推断。 */
664
+ contextWindow: z.number().int().positive().optional(),
665
+ /** 模型单次输出能力上限(Token);与默认 maxTokens 预算不同。 */
666
+ maxOutputTokens: z.number().int().positive().optional(),
667
+ /** 已确认支持的输入模态;未知时省略。 */
668
+ inputModalities: z.array(z.enum(["text", "image", "audio", "video"])).min(1).optional(),
669
+ /** 已确认支持的输出模态;仍需调用接口支持。 */
670
+ outputModalities: z.array(z.enum(["text", "image", "audio", "video"])).min(1).optional(),
671
+ /** 模型是否支持函数工具调用;未知时省略。 */
672
+ toolCalling: z.boolean().optional(),
673
+ /** 推理能力元数据,不自动启用推理请求参数。 */
674
+ reasoning: z.strictObject({
675
+ /** 是否支持推理能力。 */
676
+ supported: z.boolean(),
677
+ /** 已确认可选择的推理级别。 */
678
+ efforts: z.array(z.string().min(1)).min(1).optional()
679
+ }).refine((value) => value.supported || !value.efforts, { message: aiM("ai_modelCapabilitiesInvalid") }).optional()
680
+ }).refine((value) => !value.contextWindow || !value.maxOutputTokens || value.maxOutputTokens <= value.contextWindow, { message: aiM("ai_modelCapabilitiesInvalid") });
681
+ var ModelEntrySchema = z.strictObject({
440
682
  /** 模型唯一标识(用于 ModelResolver 解析) */
441
683
  id: z.string(),
684
+ /** 已确认的模型能力,缺省表示未知 */
685
+ capabilities: ModelCapabilitiesSchema.optional(),
442
686
  /** 模型名称(传给 API 的实际模型名) */
443
687
  model: z.string(),
444
- /** API 协议(可选,未指定时回退全局 `api`,再回退 `chat`;决定走 Chat Completions / Responses / Anthropic) */
445
- api: ApiTypeSchema.optional(),
688
+ /** API 协议(可选,未指定时回退全局 `protocol`,再回退 `chat`;决定走 Chat Completions / Responses / Anthropic) */
689
+ protocol: ApiTypeSchema.optional(),
446
690
  /** API Key 覆盖(可选,未提供时使用全局配置) */
447
691
  apiKey: OptionalSecretSchema,
448
692
  /** Base URL 覆盖(可选) */
@@ -453,21 +697,21 @@ var ModelEntrySchema = z.object({
453
697
  temperature: z.number().min(0).max(2).optional(),
454
698
  /** 超时覆盖(可选,毫秒) */
455
699
  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`) */
700
+ }, { error: (issue) => issue.code === "unrecognized_keys" && issue.keys.includes("api") ? aiM("ai_llmProtocolRenamed") : void 0 });
701
+ var LLMConfigSchema = z.strictObject({
702
+ /** 默认服务密钥;模型项可单独覆盖。未填写时读取 HAI_AI_LLM_APIKEY 或对应供应商密钥变量,真实值只放服务端。 */
459
703
  apiKey: OptionalSecretSchema,
460
- /** 全局 API 基础 URL(各模型 fallback;未提供时回退到 `process.env.HAI_AI_LLM_BASEURL` 或 `process.env.OPENAI_BASE_URL`) */
704
+ /** 默认模型服务地址;使用代理时填写,模型项可覆盖。未填写时按协议读取环境地址或使用供应商默认地址。 */
461
705
  baseUrl: z.url().optional(),
462
706
  /** 默认模型名称(默认 `'gpt-4o-mini'`) */
463
707
  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`) */
708
+ /** 默认请求格式:chat 为 Chat Completions,responses 为 OpenAI Responses,anthropic 为 Anthropic Messages;模型项可覆盖。 */
709
+ protocol: ApiTypeSchema.optional().default("chat"),
710
+ /** 单次回答最多生成多少 Token,默认 4096;模型项可覆盖,需符合供应商限制。 */
467
711
  maxTokens: z.number().positive().optional().default(4096),
468
- /** 全局采样温度(各模型 fallback,范围 `[0, 2]`,默认 `0.7`) */
712
+ /** 回答的随机程度,0–2,默认 0.7;较低通常更稳定,模型项可覆盖,部分模型不支持自定义。 */
469
713
  temperature: z.number().min(0).max(2).optional().default(0.7),
470
- /** 全局请求超时时间(各模型 fallback,毫秒,默认 `60000`) */
714
+ /** 一次模型请求最多等待多少毫秒,默认 60000;模型项可覆盖。 */
471
715
  timeout: z.number().positive().optional().default(6e4),
472
716
  /** 临时模型客户端缓存存活时间(毫秒,默认 `600000` = 10 分钟;超时后临时模型客户端实例失效并重建) */
473
717
  tempModelCacheTtl: z.number().positive().optional().default(6e5),
@@ -475,7 +719,7 @@ var LLMConfigSchema = z.object({
475
719
  models: z.array(ModelEntrySchema).optional(),
476
720
  /** 场景模型映射(场景名 → 模型 ID 或直接模型名称,各场景均可选) */
477
721
  scenarios: z.object(Object.fromEntries(ModelScenarioSchema.options.map((k) => [k, z.string().optional()]))).optional()
478
- });
722
+ }, { error: (issue) => issue.code === "unrecognized_keys" && issue.keys.includes("api") ? aiM("ai_llmProtocolRenamed") : void 0 });
479
723
  function resolveModelEntry(llmConfig, scenario, explicit, options) {
480
724
  let entry;
481
725
  let modelName;
@@ -493,7 +737,8 @@ function resolveModelEntry(llmConfig, scenario, explicit, options) {
493
737
  }
494
738
  const resolved = {
495
739
  model: modelName,
496
- api: entry?.api ?? llmConfig.api ?? "chat",
740
+ capabilities: entry?.capabilities,
741
+ protocol: entry?.protocol ?? llmConfig.protocol ?? "chat",
497
742
  apiKey: entry?.apiKey ?? llmConfig.apiKey ?? (process.env.HAI_AI_LLM_APIKEY?.trim() || process.env.OPENAI_API_KEY),
498
743
  baseUrl: entry?.baseUrl ?? llmConfig.baseUrl ?? (process.env.HAI_AI_LLM_BASEURL?.trim() || process.env.OPENAI_BASE_URL) ?? "https://api.openai.com/v1",
499
744
  maxTokens: entry?.maxTokens ?? llmConfig.maxTokens ?? 4096,
@@ -509,7 +754,7 @@ function resolveModelApi(llmConfig, explicitModel, tempApi) {
509
754
  if (tempApi)
510
755
  return tempApi;
511
756
  const entry = explicitModel ? llmConfig.models?.find((m) => m.id === explicitModel || m.model === explicitModel) : void 0;
512
- return entry?.api ?? llmConfig.api ?? "chat";
757
+ return entry?.protocol ?? llmConfig.protocol ?? "chat";
513
758
  }
514
759
  var MCPServerCapabilitiesSchema = z.object({
515
760
  /** 是否支持工具调用(默认 `true`) */
@@ -527,7 +772,27 @@ var MCPServerConfigSchema = z.object({
527
772
  /** 服务器能力声明 */
528
773
  capabilities: MCPServerCapabilitiesSchema.optional()
529
774
  });
775
+ var MCPExternalServerSchema = z.strictObject({
776
+ /** 服务唯一标识。 */
777
+ id: z.string().min(1),
778
+ /** 传给原生 MCP 客户端的服务名。 */
779
+ name: z.string().min(1),
780
+ /** 原生 MCP 传输类型。 */
781
+ transport: z.enum(["stdio", "http", "sse"]),
782
+ /** stdio 程序路径;仅可信服务端配置。 */
783
+ command: z.string().min(1).optional(),
784
+ /** stdio 参数,不使用 shell 拼接。 */
785
+ args: z.array(z.string()).default([]),
786
+ /** HTTP/SSE 地址。 */
787
+ url: z.url().optional(),
788
+ /** stdio 变量名到宿主凭据变量名的映射。 */
789
+ environmentRefs: z.record(z.string(), z.string()).default({}),
790
+ /** 认证 Header 名到宿主凭据变量名的映射。 */
791
+ headerEnv: z.record(z.string(), z.string()).default({})
792
+ }).refine((value) => value.transport === "stdio" ? Boolean(value.command) : Boolean(value.url && /^https?:/.test(value.url)));
530
793
  var MCPConfigSchema = z.object({
794
+ /** 外部 MCP 服务只读清单;与数据库记录合并供受管 Agent 使用。 */
795
+ servers: z.array(MCPExternalServerSchema).optional(),
531
796
  /** 服务器配置 */
532
797
  server: MCPServerConfigSchema.optional()
533
798
  });
@@ -879,10 +1144,12 @@ function resolveImageModel(imageConfig, explicit) {
879
1144
  });
880
1145
  }
881
1146
  var AIConfigSchema = z.object({
1147
+ /** ACP 会话与执行限制(仅 Node 服务端)。 */
1148
+ acp: ACPConfigSchema.optional(),
882
1149
  /** LLM 配置(可选,所有字段有默认值) */
883
1150
  llm: LLMConfigSchema.default({
884
1151
  model: "gpt-4o-mini",
885
- api: "chat",
1152
+ protocol: "chat",
886
1153
  maxTokens: 4096,
887
1154
  temperature: 0.7,
888
1155
  timeout: 6e4,
@@ -960,6 +1227,6 @@ var AudioWsTextMessageSchema = AudioWsTextMessageSchema$1;
960
1227
  var AudioWsDoneMessageSchema = AudioWsDoneMessageSchema$1;
961
1228
  var AudioWsClientMessageSchema = AudioWsClientMessageSchema$1;
962
1229
 
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
1230
+ export { A2AConfigSchema, A2ASkillConfigSchema, ACPAgentSchema, ACPConfigSchema, ACPPublishSchema, ACPRepositorySchema, ACPWorkspaceSchema, 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, MCPExternalServerSchema, MCPServerCapabilitiesSchema, MCPServerConfigSchema, MemoryConfigSchema, MemoryTypeSchema, ModelCapabilitiesSchema, ModelEntrySchema, ModelScenarioSchema, OptionalSecretSchema, RetrievalConfigSchema, RetrievalSourceSchema, SummaryConfigSchema, TokenConfigSchema, aiM, branchNameSchema, ensureAudioCredential, resolveAudioModel, resolveImageModel, resolveModelApi, resolveModelEntry, serializePlayableAudio, sessionIdentitySchema };
1231
+ //# sourceMappingURL=chunk-HEYVFQC6.js.map
1232
+ //# sourceMappingURL=chunk-HEYVFQC6.js.map