@h-ai/ai 1.0.0-beta.1 → 1.0.0-beta.10
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 +35 -6
- package/README.ja.md +35 -6
- package/README.md +35 -6
- package/dist/{ai-audio-ws-protocol-nfhO0tOo.d.ts → ai-acp-types-DQ8jO9Ie.d.ts} +2387 -229
- package/dist/browser.d.ts +4 -3
- package/dist/browser.js +3 -3
- package/dist/{chunk-HEVXR252.js → chunk-HEYVFQC6.js} +290 -23
- package/dist/chunk-HEYVFQC6.js.map +1 -0
- package/dist/{chunk-HYMP57AC.js → chunk-M77C3VAP.js} +23 -2
- package/dist/chunk-M77C3VAP.js.map +1 -0
- package/dist/{chunk-GMQFIWND.js → chunk-O6P4P5PC.js} +3 -3
- package/dist/{chunk-GMQFIWND.js.map → chunk-O6P4P5PC.js.map} +1 -1
- package/dist/client/index.js +2 -2
- package/dist/index.d.ts +5 -11
- package/dist/index.js +3326 -158
- package/dist/index.js.map +1 -1
- package/models/agents/README.md +48 -0
- package/models/agents/build.mjs +66 -0
- package/models/agents/codex-acp/Dockerfile +25 -0
- package/models/agents/codex-acp/agent.json +16 -0
- package/models/agents/deepseek-harness/Dockerfile +23 -0
- package/models/agents/deepseek-harness/agent.json +14 -0
- package/models/agents/goose/Dockerfile +34 -0
- package/models/agents/goose/agent.json +14 -0
- package/package.json +12 -8
- package/dist/chunk-HEVXR252.js.map +0 -1
- package/dist/chunk-HYMP57AC.js.map +0 -1
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
|
|
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-
|
|
2
|
-
export { createAudioClient } from './chunk-
|
|
3
|
-
export { HaiAIError } from './chunk-
|
|
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-
|
|
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
|
|
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 协议(可选,未指定时回退全局 `
|
|
445
|
-
|
|
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.
|
|
458
|
-
/**
|
|
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
|
-
/**
|
|
704
|
+
/** 默认模型服务地址;使用代理时填写,模型项可覆盖。未填写时按协议读取环境地址或使用供应商默认地址。 */
|
|
461
705
|
baseUrl: z.url().optional(),
|
|
462
706
|
/** 默认模型名称(默认 `'gpt-4o-mini'`) */
|
|
463
707
|
model: z.string().optional().default("gpt-4o-mini"),
|
|
464
|
-
/**
|
|
465
|
-
|
|
466
|
-
/**
|
|
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
|
-
/**
|
|
712
|
+
/** 回答的随机程度,0–2,默认 0.7;较低通常更稳定,模型项可覆盖,部分模型不支持自定义。 */
|
|
469
713
|
temperature: z.number().min(0).max(2).optional().default(0.7),
|
|
470
|
-
/**
|
|
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
|
-
|
|
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?.
|
|
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
|
-
|
|
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-
|
|
965
|
-
//# sourceMappingURL=chunk-
|
|
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
|