@linnlabs/linnkit 0.8.0
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/CHANGELOG.md +84 -0
- package/LICENSE +21 -0
- package/README.md +178 -0
- package/README.zh-CN.md +182 -0
- package/dist/agent-invocation-BHcNfrBV.d.cts +30 -0
- package/dist/agent-invocation-BznDaXDs.d.ts +30 -0
- package/dist/agentEvents-DEB7Fy_J.d.cts +81 -0
- package/dist/agentEvents-DEB7Fy_J.d.ts +81 -0
- package/dist/agentSpec-EkmviZjy.d.cts +2621 -0
- package/dist/agentSpec-EkmviZjy.d.ts +2621 -0
- package/dist/ai-engine.types-BpeU_XQG.d.cts +158 -0
- package/dist/ai-engine.types-vZRnQcJa.d.ts +158 -0
- package/dist/audit-BaRUGaqv.d.cts +307 -0
- package/dist/audit-BaRUGaqv.d.ts +307 -0
- package/dist/audit-CtcfART1.d.ts +33 -0
- package/dist/audit-LeOrm2hX.d.cts +33 -0
- package/dist/checkpointMarker-DAI3wUQu.d.cts +8 -0
- package/dist/checkpointMarker-DAI3wUQu.d.ts +8 -0
- package/dist/cli.cjs +8028 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +4 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +8025 -0
- package/dist/cli.js.map +1 -0
- package/dist/context-manager.cjs +8704 -0
- package/dist/context-manager.cjs.map +1 -0
- package/dist/context-manager.d.cts +2190 -0
- package/dist/context-manager.d.ts +2190 -0
- package/dist/context-manager.js +8650 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/context-trace-DRi5M4lX.d.ts +239 -0
- package/dist/context-trace-HE2qY5Q-.d.cts +239 -0
- package/dist/contracts.cjs +1333 -0
- package/dist/contracts.cjs.map +1 -0
- package/dist/contracts.d.cts +8 -0
- package/dist/contracts.d.ts +8 -0
- package/dist/contracts.js +1214 -0
- package/dist/contracts.js.map +1 -0
- package/dist/defaultGraphExecutor-BBswR8wn.d.ts +624 -0
- package/dist/defaultGraphExecutor-BIjJj7WF.d.cts +624 -0
- package/dist/execution-CAIypb41.d.cts +129 -0
- package/dist/execution-CAIypb41.d.ts +129 -0
- package/dist/index-CHqwkvGp.d.ts +149 -0
- package/dist/index-CJeWHopy.d.ts +584 -0
- package/dist/index-Cm-JbzTH.d.cts +1450 -0
- package/dist/index-Cvr23YCl.d.cts +23 -0
- package/dist/index-DDzuSb0n.d.ts +23 -0
- package/dist/index-DO4dQgf2.d.cts +584 -0
- package/dist/index-DRBWi1fy.d.ts +1450 -0
- package/dist/index-Dl5PLgAv.d.cts +149 -0
- package/dist/index.cjs +9577 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +89 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +9563 -0
- package/dist/index.js.map +1 -0
- package/dist/messages-XthmnHZ3.d.cts +8007 -0
- package/dist/messages-XthmnHZ3.d.ts +8007 -0
- package/dist/ports-DaatKJXp.d.cts +90 -0
- package/dist/ports-DnLuKfpE.d.ts +90 -0
- package/dist/ports.cjs +4 -0
- package/dist/ports.cjs.map +1 -0
- package/dist/ports.d.cts +7 -0
- package/dist/ports.d.ts +7 -0
- package/dist/ports.js +3 -0
- package/dist/ports.js.map +1 -0
- package/dist/quickstart.cjs +7697 -0
- package/dist/quickstart.cjs.map +1 -0
- package/dist/quickstart.d.cts +24 -0
- package/dist/quickstart.d.ts +24 -0
- package/dist/quickstart.js +7691 -0
- package/dist/quickstart.js.map +1 -0
- package/dist/runAgent-CPj_9e58.d.ts +88 -0
- package/dist/runAgent-HYKlXbVr.d.cts +88 -0
- package/dist/runHandle-CyXvzgzk.d.ts +239 -0
- package/dist/runHandle-D3gPsD7B.d.cts +239 -0
- package/dist/runtime-kernel/events.cjs +1485 -0
- package/dist/runtime-kernel/events.cjs.map +1 -0
- package/dist/runtime-kernel/events.d.cts +8 -0
- package/dist/runtime-kernel/events.d.ts +8 -0
- package/dist/runtime-kernel/events.js +1475 -0
- package/dist/runtime-kernel/events.js.map +1 -0
- package/dist/runtime-kernel.cjs +8656 -0
- package/dist/runtime-kernel.cjs.map +1 -0
- package/dist/runtime-kernel.d.cts +19 -0
- package/dist/runtime-kernel.d.ts +19 -0
- package/dist/runtime-kernel.js +8568 -0
- package/dist/runtime-kernel.js.map +1 -0
- package/dist/sse-vPyrOPa0.d.cts +1687 -0
- package/dist/sse-vPyrOPa0.d.ts +1687 -0
- package/dist/testkit.cjs +10613 -0
- package/dist/testkit.cjs.map +1 -0
- package/dist/testkit.d.cts +284 -0
- package/dist/testkit.d.ts +284 -0
- package/dist/testkit.js +10593 -0
- package/dist/testkit.js.map +1 -0
- package/dist/todo-B1PmDlp3.d.cts +2253 -0
- package/dist/todo-B1PmDlp3.d.ts +2253 -0
- package/dist/tokenizer-DFL4I7-I.d.ts +28 -0
- package/dist/tokenizer-DH_JXv-H.d.cts +28 -0
- package/dist/toolContracts-Blll0241.d.ts +463 -0
- package/dist/toolContracts-CLkQmhTG.d.cts +463 -0
- package/docs/README.md +76 -0
- package/docs/integration/01-installation.md +94 -0
- package/docs/integration/02-quickstart.md +104 -0
- package/docs/integration/README.md +223 -0
- package/docs/integration/agent-registration-guide.md +330 -0
- package/docs/integration/audit.md +64 -0
- package/docs/integration/child-runs.md +87 -0
- package/docs/integration/constraints-and-pitfalls.md +87 -0
- package/docs/integration/context-engineering.md +650 -0
- package/docs/integration/context-fences.md +289 -0
- package/docs/integration/glossary.md +69 -0
- package/docs/integration/llm-provider.md +76 -0
- package/docs/integration/persistence.md +44 -0
- package/docs/integration/realtime.md +76 -0
- package/docs/integration/run-supervisor.md +69 -0
- package/docs/integration/telemetry.md +48 -0
- package/docs/integration/testing.md +95 -0
- package/docs/integration/tool-development-guide.md +362 -0
- package/docs/integration/tool-history.md +202 -0
- package/docs/integration/tools.md +188 -0
- package/package.json +115 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { A as AiMessage } from './messages-XthmnHZ3.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file packages/linnkit/src/ports/ai-engine.types.ts
|
|
5
|
+
* @description
|
|
6
|
+
* AI 引擎协议参数 type 的**真正 owner**。
|
|
7
|
+
*
|
|
8
|
+
* 历史背景:这 5 个 type 原本定义在 `runtime-kernel/llm/caller.types.ts`,
|
|
9
|
+
* 但它们的语义其实是"host 实现 `AgentAiEngine` 时要填入的参数形状" —— 属于 ports
|
|
10
|
+
* 协议面,不属于 runtime-kernel 实现层。把它们放在 runtime-kernel 一侧导致
|
|
11
|
+
* `ports/ai-engine.ts` 反向 import runtime-kernel,形成 ports ⇄ runtime-kernel 循环
|
|
12
|
+
* 依赖(rollup dts 打包阶段发出 chunk 循环警告)。
|
|
13
|
+
*
|
|
14
|
+
* 2026-04-23 归位:
|
|
15
|
+
* - 5 个 type 的 **definitive source** 移到本文件
|
|
16
|
+
* - `runtime-kernel/llm/caller.types.ts` 改为从 `'../../ports'` barrel re-export,保持
|
|
17
|
+
* runtime-kernel 的 public face 兼容(`llm.LlmCallOptions` namespace 访问仍然 work)
|
|
18
|
+
* - `ports` 不再依赖 runtime-kernel,循环彻底消除
|
|
19
|
+
*
|
|
20
|
+
* 约定:
|
|
21
|
+
* - 本文件**只放类型定义**,不包含业务逻辑;
|
|
22
|
+
* - 供 ports / runtime-kernel / testkit / 外部 host 共享引用;
|
|
23
|
+
* - 字段语义与 OpenAI chat completion / tool calls 协议对齐,兼容 Anthropic / Gemini
|
|
24
|
+
* 等供应商(由各 adapter 做映射)。
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 工具调用的结构类型(OpenAI tool_calls 兼容)
|
|
29
|
+
*/
|
|
30
|
+
type ProviderReasoningDetails = unknown[];
|
|
31
|
+
type ToolCallExtraContent = {
|
|
32
|
+
google?: {
|
|
33
|
+
thought_signature?: string;
|
|
34
|
+
} & Record<string, unknown>;
|
|
35
|
+
} & Record<string, unknown>;
|
|
36
|
+
interface ToolCall {
|
|
37
|
+
id: string;
|
|
38
|
+
type: 'function';
|
|
39
|
+
function: {
|
|
40
|
+
name: string;
|
|
41
|
+
arguments: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Provider 工具调用扩展载荷。
|
|
45
|
+
*
|
|
46
|
+
* 说明:
|
|
47
|
+
* - linnkit 不解析 provider 私有内容,只负责在工具调用轮次中原样回放;
|
|
48
|
+
* - Gemini / Google OpenAI-compat 会在 google.thought_signature 中放置签名;
|
|
49
|
+
* - 其他 provider 可使用自己的命名空间承载不透明 replay 数据。
|
|
50
|
+
*/
|
|
51
|
+
extra_content?: ToolCallExtraContent;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 流式工具调用增量(OpenAI tool_calls delta)
|
|
55
|
+
*/
|
|
56
|
+
interface ToolCallChunk {
|
|
57
|
+
index: number;
|
|
58
|
+
id?: string;
|
|
59
|
+
function?: {
|
|
60
|
+
name?: string;
|
|
61
|
+
arguments?: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Provider 工具调用扩展增量(可能只在首个 tool_call 上出现一次)。
|
|
65
|
+
*/
|
|
66
|
+
extra_content?: ToolCallExtraContent;
|
|
67
|
+
}
|
|
68
|
+
type LlmRequestMessage = AiMessage | {
|
|
69
|
+
role: 'system' | 'user';
|
|
70
|
+
content: string;
|
|
71
|
+
} | {
|
|
72
|
+
role: 'assistant';
|
|
73
|
+
content: string;
|
|
74
|
+
} | {
|
|
75
|
+
role: 'assistant';
|
|
76
|
+
content: string | null;
|
|
77
|
+
tool_calls: unknown[];
|
|
78
|
+
reasoning_details?: ProviderReasoningDetails;
|
|
79
|
+
} | {
|
|
80
|
+
role: 'tool';
|
|
81
|
+
tool_call_id: string;
|
|
82
|
+
content: string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* LLM 流式/非流式的统一响应载荷(caller 内部使用)
|
|
86
|
+
*/
|
|
87
|
+
interface LlmResponseContent {
|
|
88
|
+
content?: string;
|
|
89
|
+
tool_calls?: ToolCall[] | ToolCallChunk[];
|
|
90
|
+
/**
|
|
91
|
+
* Provider reasoning replay blocks。
|
|
92
|
+
*
|
|
93
|
+
* 这些 blocks 是不透明的 provider sidecar:linnkit 只负责保存、绑定到工具调用决策并在
|
|
94
|
+
* 下一轮回放,具体结构由 adapter/policy 解释。部分 reasoning models 在工具调用后
|
|
95
|
+
* 要求这些 blocks 原样传回,否则后续请求会被拒绝。
|
|
96
|
+
*/
|
|
97
|
+
reasoning_details?: ProviderReasoningDetails;
|
|
98
|
+
/**
|
|
99
|
+
* 供应商返回的 token 用量(若支持)
|
|
100
|
+
*
|
|
101
|
+
* 中文备注:
|
|
102
|
+
* - 流式场景需配合 `stream_options.include_usage` 才可能拿到;
|
|
103
|
+
* - 不同 provider 字段可能不同(例如 mock 返回 usage.tokens),上层应做归一化处理。
|
|
104
|
+
*/
|
|
105
|
+
usage?: unknown;
|
|
106
|
+
}
|
|
107
|
+
interface LlmCallOptions {
|
|
108
|
+
tools?: unknown[];
|
|
109
|
+
/**
|
|
110
|
+
* 工具选择策略(OpenAI tool_choice 兼容)
|
|
111
|
+
*
|
|
112
|
+
* 说明:
|
|
113
|
+
* - 'auto' / 'none':常见 provider 统一语义;
|
|
114
|
+
* - {type:'function', function:{name}}:强制调用指定工具(用于步数收尾策略 force_tools 等)。
|
|
115
|
+
*
|
|
116
|
+
* 注意:不同 provider 的"强制工具调用"字段名可能不同(例如 Anthropic 为 {type:'tool', name}),
|
|
117
|
+
* 但在本系统边界内统一使用 OpenAI-compat 形态,由各 adapter 做映射。
|
|
118
|
+
*/
|
|
119
|
+
tool_choice?: 'auto' | 'none' | {
|
|
120
|
+
type: 'function';
|
|
121
|
+
function: {
|
|
122
|
+
name: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
temperature?: number;
|
|
126
|
+
top_p?: number;
|
|
127
|
+
max_tokens?: number;
|
|
128
|
+
/**
|
|
129
|
+
* 重试策略(仅影响客户端侧 `LlmCaller.callWithRetries`)。
|
|
130
|
+
*
|
|
131
|
+
* 背景(中文说明):
|
|
132
|
+
* - BYOK(本地直连)模式下,客户端重试是合理的:成本由用户自带 key 承担;
|
|
133
|
+
* - Cloud(积分计费)模式下,客户端重试会导致"一次点击一个 request_id"的账单语义被破坏,
|
|
134
|
+
* 因为同一次点击可能触发多次上游调用,造成对账困难或平台资损。
|
|
135
|
+
*
|
|
136
|
+
* 约定:
|
|
137
|
+
* - `client`:允许客户端按本地 retryConfig 重试(默认);
|
|
138
|
+
* - `none`:强制不重试(只执行一次,失败直接返回错误)。Cloud 模式推荐使用该值或在模型配置中关闭客户端重试。
|
|
139
|
+
*/
|
|
140
|
+
retry_policy?: 'client' | 'none';
|
|
141
|
+
/**
|
|
142
|
+
* 云端模型限额降级目标(同一个 run 内续跑专用)
|
|
143
|
+
*
|
|
144
|
+
* 中文说明:
|
|
145
|
+
* - 仅当"同一个 run 内已经不是第一次 LLM 调用"时由上层传入;
|
|
146
|
+
* - 如果本次 LLM 调用因为云端 quota/限额被拒,LlmCaller 会静默切到该模型继续,
|
|
147
|
+
* 不向前端发 error 事件(前端无感知);
|
|
148
|
+
* - 若为 undefined 或空字符串,则 quota 错误仍按"不可重试"处理(即新请求直接报错)。
|
|
149
|
+
*/
|
|
150
|
+
cloud_quota_fallback_model_id?: string;
|
|
151
|
+
}
|
|
152
|
+
interface LlmRetryConfig {
|
|
153
|
+
maxRetries: number;
|
|
154
|
+
enableEmptyResponseRetry: boolean;
|
|
155
|
+
retryDelayMs: number;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export type { LlmCallOptions as L, ProviderReasoningDetails as P, ToolCall as T, LlmRequestMessage as a, LlmResponseContent as b, LlmRetryConfig as c, ToolCallChunk as d, ToolCallExtraContent as e };
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { A as AiMessage } from './messages-XthmnHZ3.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file packages/linnkit/src/ports/ai-engine.types.ts
|
|
5
|
+
* @description
|
|
6
|
+
* AI 引擎协议参数 type 的**真正 owner**。
|
|
7
|
+
*
|
|
8
|
+
* 历史背景:这 5 个 type 原本定义在 `runtime-kernel/llm/caller.types.ts`,
|
|
9
|
+
* 但它们的语义其实是"host 实现 `AgentAiEngine` 时要填入的参数形状" —— 属于 ports
|
|
10
|
+
* 协议面,不属于 runtime-kernel 实现层。把它们放在 runtime-kernel 一侧导致
|
|
11
|
+
* `ports/ai-engine.ts` 反向 import runtime-kernel,形成 ports ⇄ runtime-kernel 循环
|
|
12
|
+
* 依赖(rollup dts 打包阶段发出 chunk 循环警告)。
|
|
13
|
+
*
|
|
14
|
+
* 2026-04-23 归位:
|
|
15
|
+
* - 5 个 type 的 **definitive source** 移到本文件
|
|
16
|
+
* - `runtime-kernel/llm/caller.types.ts` 改为从 `'../../ports'` barrel re-export,保持
|
|
17
|
+
* runtime-kernel 的 public face 兼容(`llm.LlmCallOptions` namespace 访问仍然 work)
|
|
18
|
+
* - `ports` 不再依赖 runtime-kernel,循环彻底消除
|
|
19
|
+
*
|
|
20
|
+
* 约定:
|
|
21
|
+
* - 本文件**只放类型定义**,不包含业务逻辑;
|
|
22
|
+
* - 供 ports / runtime-kernel / testkit / 外部 host 共享引用;
|
|
23
|
+
* - 字段语义与 OpenAI chat completion / tool calls 协议对齐,兼容 Anthropic / Gemini
|
|
24
|
+
* 等供应商(由各 adapter 做映射)。
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 工具调用的结构类型(OpenAI tool_calls 兼容)
|
|
29
|
+
*/
|
|
30
|
+
type ProviderReasoningDetails = unknown[];
|
|
31
|
+
type ToolCallExtraContent = {
|
|
32
|
+
google?: {
|
|
33
|
+
thought_signature?: string;
|
|
34
|
+
} & Record<string, unknown>;
|
|
35
|
+
} & Record<string, unknown>;
|
|
36
|
+
interface ToolCall {
|
|
37
|
+
id: string;
|
|
38
|
+
type: 'function';
|
|
39
|
+
function: {
|
|
40
|
+
name: string;
|
|
41
|
+
arguments: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Provider 工具调用扩展载荷。
|
|
45
|
+
*
|
|
46
|
+
* 说明:
|
|
47
|
+
* - linnkit 不解析 provider 私有内容,只负责在工具调用轮次中原样回放;
|
|
48
|
+
* - Gemini / Google OpenAI-compat 会在 google.thought_signature 中放置签名;
|
|
49
|
+
* - 其他 provider 可使用自己的命名空间承载不透明 replay 数据。
|
|
50
|
+
*/
|
|
51
|
+
extra_content?: ToolCallExtraContent;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 流式工具调用增量(OpenAI tool_calls delta)
|
|
55
|
+
*/
|
|
56
|
+
interface ToolCallChunk {
|
|
57
|
+
index: number;
|
|
58
|
+
id?: string;
|
|
59
|
+
function?: {
|
|
60
|
+
name?: string;
|
|
61
|
+
arguments?: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Provider 工具调用扩展增量(可能只在首个 tool_call 上出现一次)。
|
|
65
|
+
*/
|
|
66
|
+
extra_content?: ToolCallExtraContent;
|
|
67
|
+
}
|
|
68
|
+
type LlmRequestMessage = AiMessage | {
|
|
69
|
+
role: 'system' | 'user';
|
|
70
|
+
content: string;
|
|
71
|
+
} | {
|
|
72
|
+
role: 'assistant';
|
|
73
|
+
content: string;
|
|
74
|
+
} | {
|
|
75
|
+
role: 'assistant';
|
|
76
|
+
content: string | null;
|
|
77
|
+
tool_calls: unknown[];
|
|
78
|
+
reasoning_details?: ProviderReasoningDetails;
|
|
79
|
+
} | {
|
|
80
|
+
role: 'tool';
|
|
81
|
+
tool_call_id: string;
|
|
82
|
+
content: string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* LLM 流式/非流式的统一响应载荷(caller 内部使用)
|
|
86
|
+
*/
|
|
87
|
+
interface LlmResponseContent {
|
|
88
|
+
content?: string;
|
|
89
|
+
tool_calls?: ToolCall[] | ToolCallChunk[];
|
|
90
|
+
/**
|
|
91
|
+
* Provider reasoning replay blocks。
|
|
92
|
+
*
|
|
93
|
+
* 这些 blocks 是不透明的 provider sidecar:linnkit 只负责保存、绑定到工具调用决策并在
|
|
94
|
+
* 下一轮回放,具体结构由 adapter/policy 解释。部分 reasoning models 在工具调用后
|
|
95
|
+
* 要求这些 blocks 原样传回,否则后续请求会被拒绝。
|
|
96
|
+
*/
|
|
97
|
+
reasoning_details?: ProviderReasoningDetails;
|
|
98
|
+
/**
|
|
99
|
+
* 供应商返回的 token 用量(若支持)
|
|
100
|
+
*
|
|
101
|
+
* 中文备注:
|
|
102
|
+
* - 流式场景需配合 `stream_options.include_usage` 才可能拿到;
|
|
103
|
+
* - 不同 provider 字段可能不同(例如 mock 返回 usage.tokens),上层应做归一化处理。
|
|
104
|
+
*/
|
|
105
|
+
usage?: unknown;
|
|
106
|
+
}
|
|
107
|
+
interface LlmCallOptions {
|
|
108
|
+
tools?: unknown[];
|
|
109
|
+
/**
|
|
110
|
+
* 工具选择策略(OpenAI tool_choice 兼容)
|
|
111
|
+
*
|
|
112
|
+
* 说明:
|
|
113
|
+
* - 'auto' / 'none':常见 provider 统一语义;
|
|
114
|
+
* - {type:'function', function:{name}}:强制调用指定工具(用于步数收尾策略 force_tools 等)。
|
|
115
|
+
*
|
|
116
|
+
* 注意:不同 provider 的"强制工具调用"字段名可能不同(例如 Anthropic 为 {type:'tool', name}),
|
|
117
|
+
* 但在本系统边界内统一使用 OpenAI-compat 形态,由各 adapter 做映射。
|
|
118
|
+
*/
|
|
119
|
+
tool_choice?: 'auto' | 'none' | {
|
|
120
|
+
type: 'function';
|
|
121
|
+
function: {
|
|
122
|
+
name: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
temperature?: number;
|
|
126
|
+
top_p?: number;
|
|
127
|
+
max_tokens?: number;
|
|
128
|
+
/**
|
|
129
|
+
* 重试策略(仅影响客户端侧 `LlmCaller.callWithRetries`)。
|
|
130
|
+
*
|
|
131
|
+
* 背景(中文说明):
|
|
132
|
+
* - BYOK(本地直连)模式下,客户端重试是合理的:成本由用户自带 key 承担;
|
|
133
|
+
* - Cloud(积分计费)模式下,客户端重试会导致"一次点击一个 request_id"的账单语义被破坏,
|
|
134
|
+
* 因为同一次点击可能触发多次上游调用,造成对账困难或平台资损。
|
|
135
|
+
*
|
|
136
|
+
* 约定:
|
|
137
|
+
* - `client`:允许客户端按本地 retryConfig 重试(默认);
|
|
138
|
+
* - `none`:强制不重试(只执行一次,失败直接返回错误)。Cloud 模式推荐使用该值或在模型配置中关闭客户端重试。
|
|
139
|
+
*/
|
|
140
|
+
retry_policy?: 'client' | 'none';
|
|
141
|
+
/**
|
|
142
|
+
* 云端模型限额降级目标(同一个 run 内续跑专用)
|
|
143
|
+
*
|
|
144
|
+
* 中文说明:
|
|
145
|
+
* - 仅当"同一个 run 内已经不是第一次 LLM 调用"时由上层传入;
|
|
146
|
+
* - 如果本次 LLM 调用因为云端 quota/限额被拒,LlmCaller 会静默切到该模型继续,
|
|
147
|
+
* 不向前端发 error 事件(前端无感知);
|
|
148
|
+
* - 若为 undefined 或空字符串,则 quota 错误仍按"不可重试"处理(即新请求直接报错)。
|
|
149
|
+
*/
|
|
150
|
+
cloud_quota_fallback_model_id?: string;
|
|
151
|
+
}
|
|
152
|
+
interface LlmRetryConfig {
|
|
153
|
+
maxRetries: number;
|
|
154
|
+
enableEmptyResponseRetry: boolean;
|
|
155
|
+
retryDelayMs: number;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export type { LlmCallOptions as L, ProviderReasoningDetails as P, ToolCall as T, LlmRequestMessage as a, LlmResponseContent as b, LlmRetryConfig as c, ToolCallChunk as d, ToolCallExtraContent as e };
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
declare const AUDIT_ACTIONS: readonly ["model.select", "model.fallback", "tool.allow", "tool.deny", "wait_user.request", "sandbox.decide", "run.cancel", "run.pause", "run.resume", "memory.write"];
|
|
4
|
+
declare const AUDIT_DECISION_OUTCOMES: readonly ["allowed", "denied", "fallback", "retry", "cancelled", "paused", "resumed", "requested", "recorded"];
|
|
5
|
+
declare const AuditActor: z.ZodObject<{
|
|
6
|
+
kind: z.ZodEnum<["system", "host", "agent", "model", "tool", "user"]>;
|
|
7
|
+
id: z.ZodOptional<z.ZodString>;
|
|
8
|
+
name: z.ZodOptional<z.ZodString>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
kind: "system" | "user" | "tool" | "agent" | "host" | "model";
|
|
11
|
+
id?: string | undefined;
|
|
12
|
+
name?: string | undefined;
|
|
13
|
+
}, {
|
|
14
|
+
kind: "system" | "user" | "tool" | "agent" | "host" | "model";
|
|
15
|
+
id?: string | undefined;
|
|
16
|
+
name?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
type AuditActor = z.infer<typeof AuditActor>;
|
|
19
|
+
declare const AuditDecision: z.ZodObject<{
|
|
20
|
+
outcome: z.ZodEnum<["allowed", "denied", "fallback", "retry", "cancelled", "paused", "resumed", "requested", "recorded"]>;
|
|
21
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
22
|
+
policy: z.ZodOptional<z.ZodString>;
|
|
23
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
outcome: "requested" | "allowed" | "denied" | "fallback" | "retry" | "cancelled" | "paused" | "resumed" | "recorded";
|
|
26
|
+
metadata?: Record<string, unknown> | undefined;
|
|
27
|
+
reason?: string | undefined;
|
|
28
|
+
policy?: string | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
outcome: "requested" | "allowed" | "denied" | "fallback" | "retry" | "cancelled" | "paused" | "resumed" | "recorded";
|
|
31
|
+
metadata?: Record<string, unknown> | undefined;
|
|
32
|
+
reason?: string | undefined;
|
|
33
|
+
policy?: string | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
type AuditDecision = z.infer<typeof AuditDecision>;
|
|
36
|
+
declare const AuditEvidence: z.ZodObject<{
|
|
37
|
+
kind: z.ZodString;
|
|
38
|
+
ref: z.ZodOptional<z.ZodString>;
|
|
39
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
40
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
kind: string;
|
|
43
|
+
summary?: string | undefined;
|
|
44
|
+
metadata?: Record<string, unknown> | undefined;
|
|
45
|
+
ref?: string | undefined;
|
|
46
|
+
}, {
|
|
47
|
+
kind: string;
|
|
48
|
+
summary?: string | undefined;
|
|
49
|
+
metadata?: Record<string, unknown> | undefined;
|
|
50
|
+
ref?: string | undefined;
|
|
51
|
+
}>;
|
|
52
|
+
type AuditEvidence = z.infer<typeof AuditEvidence>;
|
|
53
|
+
declare const AuditCostDelta: z.ZodObject<{
|
|
54
|
+
tokensInput: z.ZodOptional<z.ZodNumber>;
|
|
55
|
+
tokensOutput: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
totalCostUsd: z.ZodOptional<z.ZodNumber>;
|
|
57
|
+
latencyMs: z.ZodOptional<z.ZodNumber>;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
tokensInput?: number | undefined;
|
|
60
|
+
tokensOutput?: number | undefined;
|
|
61
|
+
totalCostUsd?: number | undefined;
|
|
62
|
+
latencyMs?: number | undefined;
|
|
63
|
+
}, {
|
|
64
|
+
tokensInput?: number | undefined;
|
|
65
|
+
tokensOutput?: number | undefined;
|
|
66
|
+
totalCostUsd?: number | undefined;
|
|
67
|
+
latencyMs?: number | undefined;
|
|
68
|
+
}>;
|
|
69
|
+
type AuditCostDelta = z.infer<typeof AuditCostDelta>;
|
|
70
|
+
declare const AuditScope: z.ZodObject<{
|
|
71
|
+
conversationId: z.ZodOptional<z.ZodString>;
|
|
72
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
73
|
+
parentRunId: z.ZodOptional<z.ZodString>;
|
|
74
|
+
turnId: z.ZodOptional<z.ZodString>;
|
|
75
|
+
traceId: z.ZodOptional<z.ZodString>;
|
|
76
|
+
agentSpecId: z.ZodOptional<z.ZodString>;
|
|
77
|
+
toolCallId: z.ZodOptional<z.ZodString>;
|
|
78
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
79
|
+
modelId: z.ZodOptional<z.ZodString>;
|
|
80
|
+
nodeId: z.ZodOptional<z.ZodString>;
|
|
81
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
metadata?: Record<string, unknown> | undefined;
|
|
84
|
+
toolName?: string | undefined;
|
|
85
|
+
conversationId?: string | undefined;
|
|
86
|
+
runId?: string | undefined;
|
|
87
|
+
parentRunId?: string | undefined;
|
|
88
|
+
turnId?: string | undefined;
|
|
89
|
+
traceId?: string | undefined;
|
|
90
|
+
agentSpecId?: string | undefined;
|
|
91
|
+
toolCallId?: string | undefined;
|
|
92
|
+
modelId?: string | undefined;
|
|
93
|
+
nodeId?: string | undefined;
|
|
94
|
+
}, {
|
|
95
|
+
metadata?: Record<string, unknown> | undefined;
|
|
96
|
+
toolName?: string | undefined;
|
|
97
|
+
conversationId?: string | undefined;
|
|
98
|
+
runId?: string | undefined;
|
|
99
|
+
parentRunId?: string | undefined;
|
|
100
|
+
turnId?: string | undefined;
|
|
101
|
+
traceId?: string | undefined;
|
|
102
|
+
agentSpecId?: string | undefined;
|
|
103
|
+
toolCallId?: string | undefined;
|
|
104
|
+
modelId?: string | undefined;
|
|
105
|
+
nodeId?: string | undefined;
|
|
106
|
+
}>;
|
|
107
|
+
type AuditScope = z.infer<typeof AuditScope>;
|
|
108
|
+
/**
|
|
109
|
+
* 标准审计信封。
|
|
110
|
+
*
|
|
111
|
+
* 中文备注:
|
|
112
|
+
* - action 保持 string,以便 host 扩展自己的动作名;
|
|
113
|
+
* - decision/evidence/costDelta 都是可选事实片段,避免把所有审计场景压成同一种形状;
|
|
114
|
+
* - envelope 必须追加只读,更新/撤回应追加新的补偿 envelope。
|
|
115
|
+
*/
|
|
116
|
+
declare const AuditEnvelope: z.ZodObject<{
|
|
117
|
+
envelopeId: z.ZodString;
|
|
118
|
+
runId: z.ZodString;
|
|
119
|
+
parentRunId: z.ZodOptional<z.ZodString>;
|
|
120
|
+
ts: z.ZodNumber;
|
|
121
|
+
actor: z.ZodObject<{
|
|
122
|
+
kind: z.ZodEnum<["system", "host", "agent", "model", "tool", "user"]>;
|
|
123
|
+
id: z.ZodOptional<z.ZodString>;
|
|
124
|
+
name: z.ZodOptional<z.ZodString>;
|
|
125
|
+
}, "strip", z.ZodTypeAny, {
|
|
126
|
+
kind: "system" | "user" | "tool" | "agent" | "host" | "model";
|
|
127
|
+
id?: string | undefined;
|
|
128
|
+
name?: string | undefined;
|
|
129
|
+
}, {
|
|
130
|
+
kind: "system" | "user" | "tool" | "agent" | "host" | "model";
|
|
131
|
+
id?: string | undefined;
|
|
132
|
+
name?: string | undefined;
|
|
133
|
+
}>;
|
|
134
|
+
action: z.ZodString;
|
|
135
|
+
decision: z.ZodOptional<z.ZodObject<{
|
|
136
|
+
outcome: z.ZodEnum<["allowed", "denied", "fallback", "retry", "cancelled", "paused", "resumed", "requested", "recorded"]>;
|
|
137
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
138
|
+
policy: z.ZodOptional<z.ZodString>;
|
|
139
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
140
|
+
}, "strip", z.ZodTypeAny, {
|
|
141
|
+
outcome: "requested" | "allowed" | "denied" | "fallback" | "retry" | "cancelled" | "paused" | "resumed" | "recorded";
|
|
142
|
+
metadata?: Record<string, unknown> | undefined;
|
|
143
|
+
reason?: string | undefined;
|
|
144
|
+
policy?: string | undefined;
|
|
145
|
+
}, {
|
|
146
|
+
outcome: "requested" | "allowed" | "denied" | "fallback" | "retry" | "cancelled" | "paused" | "resumed" | "recorded";
|
|
147
|
+
metadata?: Record<string, unknown> | undefined;
|
|
148
|
+
reason?: string | undefined;
|
|
149
|
+
policy?: string | undefined;
|
|
150
|
+
}>>;
|
|
151
|
+
evidence: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
152
|
+
kind: z.ZodString;
|
|
153
|
+
ref: z.ZodOptional<z.ZodString>;
|
|
154
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
155
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
156
|
+
}, "strip", z.ZodTypeAny, {
|
|
157
|
+
kind: string;
|
|
158
|
+
summary?: string | undefined;
|
|
159
|
+
metadata?: Record<string, unknown> | undefined;
|
|
160
|
+
ref?: string | undefined;
|
|
161
|
+
}, {
|
|
162
|
+
kind: string;
|
|
163
|
+
summary?: string | undefined;
|
|
164
|
+
metadata?: Record<string, unknown> | undefined;
|
|
165
|
+
ref?: string | undefined;
|
|
166
|
+
}>, "many">>;
|
|
167
|
+
costDelta: z.ZodOptional<z.ZodObject<{
|
|
168
|
+
tokensInput: z.ZodOptional<z.ZodNumber>;
|
|
169
|
+
tokensOutput: z.ZodOptional<z.ZodNumber>;
|
|
170
|
+
totalCostUsd: z.ZodOptional<z.ZodNumber>;
|
|
171
|
+
latencyMs: z.ZodOptional<z.ZodNumber>;
|
|
172
|
+
}, "strip", z.ZodTypeAny, {
|
|
173
|
+
tokensInput?: number | undefined;
|
|
174
|
+
tokensOutput?: number | undefined;
|
|
175
|
+
totalCostUsd?: number | undefined;
|
|
176
|
+
latencyMs?: number | undefined;
|
|
177
|
+
}, {
|
|
178
|
+
tokensInput?: number | undefined;
|
|
179
|
+
tokensOutput?: number | undefined;
|
|
180
|
+
totalCostUsd?: number | undefined;
|
|
181
|
+
latencyMs?: number | undefined;
|
|
182
|
+
}>>;
|
|
183
|
+
scope: z.ZodOptional<z.ZodObject<{
|
|
184
|
+
conversationId: z.ZodOptional<z.ZodString>;
|
|
185
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
186
|
+
parentRunId: z.ZodOptional<z.ZodString>;
|
|
187
|
+
turnId: z.ZodOptional<z.ZodString>;
|
|
188
|
+
traceId: z.ZodOptional<z.ZodString>;
|
|
189
|
+
agentSpecId: z.ZodOptional<z.ZodString>;
|
|
190
|
+
toolCallId: z.ZodOptional<z.ZodString>;
|
|
191
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
192
|
+
modelId: z.ZodOptional<z.ZodString>;
|
|
193
|
+
nodeId: z.ZodOptional<z.ZodString>;
|
|
194
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
195
|
+
}, "strip", z.ZodTypeAny, {
|
|
196
|
+
metadata?: Record<string, unknown> | undefined;
|
|
197
|
+
toolName?: string | undefined;
|
|
198
|
+
conversationId?: string | undefined;
|
|
199
|
+
runId?: string | undefined;
|
|
200
|
+
parentRunId?: string | undefined;
|
|
201
|
+
turnId?: string | undefined;
|
|
202
|
+
traceId?: string | undefined;
|
|
203
|
+
agentSpecId?: string | undefined;
|
|
204
|
+
toolCallId?: string | undefined;
|
|
205
|
+
modelId?: string | undefined;
|
|
206
|
+
nodeId?: string | undefined;
|
|
207
|
+
}, {
|
|
208
|
+
metadata?: Record<string, unknown> | undefined;
|
|
209
|
+
toolName?: string | undefined;
|
|
210
|
+
conversationId?: string | undefined;
|
|
211
|
+
runId?: string | undefined;
|
|
212
|
+
parentRunId?: string | undefined;
|
|
213
|
+
turnId?: string | undefined;
|
|
214
|
+
traceId?: string | undefined;
|
|
215
|
+
agentSpecId?: string | undefined;
|
|
216
|
+
toolCallId?: string | undefined;
|
|
217
|
+
modelId?: string | undefined;
|
|
218
|
+
nodeId?: string | undefined;
|
|
219
|
+
}>>;
|
|
220
|
+
}, "strip", z.ZodTypeAny, {
|
|
221
|
+
runId: string;
|
|
222
|
+
envelopeId: string;
|
|
223
|
+
ts: number;
|
|
224
|
+
actor: {
|
|
225
|
+
kind: "system" | "user" | "tool" | "agent" | "host" | "model";
|
|
226
|
+
id?: string | undefined;
|
|
227
|
+
name?: string | undefined;
|
|
228
|
+
};
|
|
229
|
+
action: string;
|
|
230
|
+
parentRunId?: string | undefined;
|
|
231
|
+
decision?: {
|
|
232
|
+
outcome: "requested" | "allowed" | "denied" | "fallback" | "retry" | "cancelled" | "paused" | "resumed" | "recorded";
|
|
233
|
+
metadata?: Record<string, unknown> | undefined;
|
|
234
|
+
reason?: string | undefined;
|
|
235
|
+
policy?: string | undefined;
|
|
236
|
+
} | undefined;
|
|
237
|
+
evidence?: {
|
|
238
|
+
kind: string;
|
|
239
|
+
summary?: string | undefined;
|
|
240
|
+
metadata?: Record<string, unknown> | undefined;
|
|
241
|
+
ref?: string | undefined;
|
|
242
|
+
}[] | undefined;
|
|
243
|
+
costDelta?: {
|
|
244
|
+
tokensInput?: number | undefined;
|
|
245
|
+
tokensOutput?: number | undefined;
|
|
246
|
+
totalCostUsd?: number | undefined;
|
|
247
|
+
latencyMs?: number | undefined;
|
|
248
|
+
} | undefined;
|
|
249
|
+
scope?: {
|
|
250
|
+
metadata?: Record<string, unknown> | undefined;
|
|
251
|
+
toolName?: string | undefined;
|
|
252
|
+
conversationId?: string | undefined;
|
|
253
|
+
runId?: string | undefined;
|
|
254
|
+
parentRunId?: string | undefined;
|
|
255
|
+
turnId?: string | undefined;
|
|
256
|
+
traceId?: string | undefined;
|
|
257
|
+
agentSpecId?: string | undefined;
|
|
258
|
+
toolCallId?: string | undefined;
|
|
259
|
+
modelId?: string | undefined;
|
|
260
|
+
nodeId?: string | undefined;
|
|
261
|
+
} | undefined;
|
|
262
|
+
}, {
|
|
263
|
+
runId: string;
|
|
264
|
+
envelopeId: string;
|
|
265
|
+
ts: number;
|
|
266
|
+
actor: {
|
|
267
|
+
kind: "system" | "user" | "tool" | "agent" | "host" | "model";
|
|
268
|
+
id?: string | undefined;
|
|
269
|
+
name?: string | undefined;
|
|
270
|
+
};
|
|
271
|
+
action: string;
|
|
272
|
+
parentRunId?: string | undefined;
|
|
273
|
+
decision?: {
|
|
274
|
+
outcome: "requested" | "allowed" | "denied" | "fallback" | "retry" | "cancelled" | "paused" | "resumed" | "recorded";
|
|
275
|
+
metadata?: Record<string, unknown> | undefined;
|
|
276
|
+
reason?: string | undefined;
|
|
277
|
+
policy?: string | undefined;
|
|
278
|
+
} | undefined;
|
|
279
|
+
evidence?: {
|
|
280
|
+
kind: string;
|
|
281
|
+
summary?: string | undefined;
|
|
282
|
+
metadata?: Record<string, unknown> | undefined;
|
|
283
|
+
ref?: string | undefined;
|
|
284
|
+
}[] | undefined;
|
|
285
|
+
costDelta?: {
|
|
286
|
+
tokensInput?: number | undefined;
|
|
287
|
+
tokensOutput?: number | undefined;
|
|
288
|
+
totalCostUsd?: number | undefined;
|
|
289
|
+
latencyMs?: number | undefined;
|
|
290
|
+
} | undefined;
|
|
291
|
+
scope?: {
|
|
292
|
+
metadata?: Record<string, unknown> | undefined;
|
|
293
|
+
toolName?: string | undefined;
|
|
294
|
+
conversationId?: string | undefined;
|
|
295
|
+
runId?: string | undefined;
|
|
296
|
+
parentRunId?: string | undefined;
|
|
297
|
+
turnId?: string | undefined;
|
|
298
|
+
traceId?: string | undefined;
|
|
299
|
+
agentSpecId?: string | undefined;
|
|
300
|
+
toolCallId?: string | undefined;
|
|
301
|
+
modelId?: string | undefined;
|
|
302
|
+
nodeId?: string | undefined;
|
|
303
|
+
} | undefined;
|
|
304
|
+
}>;
|
|
305
|
+
type AuditEnvelope = z.infer<typeof AuditEnvelope>;
|
|
306
|
+
|
|
307
|
+
export { AUDIT_ACTIONS as A, AUDIT_DECISION_OUTCOMES as a, AuditActor as b, AuditCostDelta as c, AuditDecision as d, AuditEnvelope as e, AuditEvidence as f, AuditScope as g };
|