@gt-fe/eap-sdk 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +316 -310
- package/dist/lockfile/resolve-dependencies.d.ts +1 -0
- package/dist/lockfile/resolve-dependencies.d.ts.map +1 -1
- package/dist/lockfile/resolve-dependencies.js +3 -0
- package/dist/lockfile/resolve-dependencies.js.map +1 -1
- package/dist/materialization/copy-resource-directory.d.ts +1 -0
- package/dist/materialization/copy-resource-directory.d.ts.map +1 -1
- package/dist/materialization/copy-resource-directory.js +38 -1
- package/dist/materialization/copy-resource-directory.js.map +1 -1
- package/dist/materialization/index.d.ts +1 -0
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +1 -0
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/load-agent-runtime.d.ts +19 -0
- package/dist/materialization/load-agent-runtime.d.ts.map +1 -0
- package/dist/materialization/load-agent-runtime.js +128 -0
- package/dist/materialization/load-agent-runtime.js.map +1 -0
- package/dist/materialization/prepare-agent-runtime.d.ts.map +1 -1
- package/dist/materialization/prepare-agent-runtime.js +97 -29
- package/dist/materialization/prepare-agent-runtime.js.map +1 -1
- package/dist/packaging/read-package.d.ts.map +1 -1
- package/dist/packaging/read-package.js +20 -1
- package/dist/packaging/read-package.js.map +1 -1
- package/dist/project/agent-project.d.ts.map +1 -1
- package/dist/project/agent-project.js +10 -0
- package/dist/project/agent-project.js.map +1 -1
- package/dist/resources/configured-local-resources.d.ts +15 -0
- package/dist/resources/configured-local-resources.d.ts.map +1 -0
- package/dist/resources/configured-local-resources.js +75 -0
- package/dist/resources/configured-local-resources.js.map +1 -0
- package/dist/resources/install-agent-dependencies.d.ts.map +1 -1
- package/dist/resources/install-agent-dependencies.js +7 -2
- package/dist/resources/install-agent-dependencies.js.map +1 -1
- package/dist/schema/agent/manifest.d.ts +6 -302
- package/dist/schema/agent/manifest.d.ts.map +1 -1
- package/dist/schema/graph.d.ts +4 -398
- package/dist/schema/graph.d.ts.map +1 -1
- package/dist/schema/graph.js +0 -12
- package/dist/schema/graph.js.map +1 -1
- package/dist/schema/project-config.d.ts +6 -0
- package/dist/schema/project-config.d.ts.map +1 -1
- package/dist/schema/project-config.js +4 -0
- package/dist/schema/project-config.js.map +1 -1
- package/dist/service/create-agent.d.ts.map +1 -1
- package/dist/service/create-agent.js +15 -84
- package/dist/service/create-agent.js.map +1 -1
- package/dist/service/events.d.ts +2 -0
- package/dist/service/events.d.ts.map +1 -1
- package/dist/service/events.js +1 -0
- package/dist/service/events.js.map +1 -1
- package/dist/validation/validate-agent-project.d.ts.map +1 -1
- package/dist/validation/validate-agent-project.js +31 -17
- package/dist/validation/validate-agent-project.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# @gt-fe/eap-sdk
|
|
2
|
-
|
|
1
|
+
# @gt-fe/eap-sdk
|
|
2
|
+
|
|
3
3
|
`@gt-fe/eap-sdk` 是 EAP 单 Agent 项目的 SDK,负责项目发现与校验、用户会话、平台 API、Tool/Skill 依赖安装、Runtime 目录物化、基于 Runtime 的 Agent API 以及确定性打包。
|
|
4
4
|
|
|
5
5
|
Agent 的实际执行仍由 `@gt-fe/eap-runtime` 负责。SDK 不重新实现 Graph 编译、节点执行、Tool 路由或 Runtime 事件协议。
|
|
6
6
|
|
|
7
7
|
如果你要开发一个完整的 Agent 项目,请先阅读 [场景一:常规 Agent 开发手册](../../docs/developer-guide.md)。如果你是在已有服务中把 SDK 作为依赖使用,请先阅读 [场景二:外部项目 SDK 接入手册](../../docs/sdk-integration-guide.md);本文随后提供 API 和配置的详细参考。
|
|
8
|
-
|
|
9
|
-
## 安装
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install @gt-fe/eap-sdk
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
本包为纯 ESM:
|
|
16
|
-
|
|
17
|
-
```ts
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @gt-fe/eap-sdk
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
本包为纯 ESM:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
18
|
import { createAgent } from '@gt-fe/eap-sdk';
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## 项目模型
|
|
22
|
-
|
|
23
|
-
一个项目只开发一个 Agent,开发者维护的源文件位于项目根目录:
|
|
24
|
-
|
|
25
|
-
```text
|
|
26
|
-
<project>/
|
|
27
|
-
├── agent.manifest.json
|
|
28
|
-
├── graph.json
|
|
29
|
-
├── eap.config.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 项目模型
|
|
22
|
+
|
|
23
|
+
一个项目只开发一个 Agent,开发者维护的源文件位于项目根目录:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
<project>/
|
|
27
|
+
├── agent.manifest.json
|
|
28
|
+
├── graph.json
|
|
29
|
+
├── eap.config.json
|
|
30
30
|
├── eap.lock.yaml
|
|
31
31
|
├── tools/<code>/...
|
|
32
32
|
├── skills/<code>/...
|
|
@@ -40,64 +40,64 @@ import { createAgent } from '@gt-fe/eap-sdk';
|
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
`agent.manifest.json`、`graph.json`、`eap.config.json`、`eap.lock.yaml` 以及本地 `tools/`、`skills/` 是项目输入;`.eap/` 和外部宿主指定的 `dist/.eap/runtime` 是 SDK 生成的可删除状态。Runtime 目录不应提交或手工编辑。启用会话持久化时,会话目录位于 Runtime 根目录旁边;CLI 默认为 `.eap/sessions`。
|
|
43
|
-
|
|
44
|
-
项目 `eap.config.json.version` 必须严格等于当前安装的 `@gt-fe/eap-sdk` package version;字段级配置和部署交付说明见 [dev-tools 文档入口](../../docs/README.md)。
|
|
45
|
-
|
|
46
|
-
`findAgentRoot()` 和 `resolveAgentProject()` 只发现源项目,不使用 `EAP_PREINSTALL_ROOT`。选择器只支持 `root` 和 `startDir`,不存在 Agent code、版本或目录歧义选择。
|
|
47
|
-
|
|
48
|
-
```ts
|
|
49
|
-
import {
|
|
50
|
-
resolveAgentProject,
|
|
51
|
-
validateAgentProject,
|
|
52
|
-
type AgentProjectSelector,
|
|
53
|
-
} from '@gt-fe/eap-sdk';
|
|
54
|
-
|
|
55
|
-
const selector: AgentProjectSelector = { root: process.cwd() };
|
|
56
|
-
const project = resolveAgentProject(selector);
|
|
57
|
-
const validation = validateAgentProject(project.root);
|
|
58
|
-
|
|
59
|
-
if (!validation.valid) {
|
|
60
|
-
console.error(validation.issues);
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## 核心能力
|
|
65
|
-
|
|
66
|
-
| 能力 | 主要 API | 说明 |
|
|
67
|
-
|---|---|---|
|
|
68
|
-
| 项目发现 | `findAgentRoot()`、`resolveAgentProject()` | 查找根级单 Agent 项目 |
|
|
69
|
-
| 项目校验 | `validateAgentProject()`、`validateGraph()` | 校验 Manifest、Graph、`eap.lock.yaml` 和资源路径 |
|
|
70
|
-
| 用户会话 | `getCurrentUserSession()`、`saveCurrentUserSession()` | 管理当前登录用户和平台 Token;本地可用 `EAP_CHAT_USER` / `EAP_DEBUG_USER` |
|
|
71
|
-
| 平台 API | `createPlatformClient()` | 访问 Portal、Foundation 和平台认证 |
|
|
72
|
-
| 依赖安装 | `installAgentResource()`、`installAgentDependencies()` | 下载或恢复 Tool/Skill ZIP 制品,并维护 `eap.lock.yaml` |
|
|
73
|
-
| Runtime 物化 | `prepareAgentRuntime()` | 生成 Runtime 可直接读取的预装目录 |
|
|
43
|
+
|
|
44
|
+
项目 `eap.config.json.version` 必须严格等于当前安装的 `@gt-fe/eap-sdk` package version;字段级配置和部署交付说明见 [dev-tools 文档入口](../../docs/README.md)。
|
|
45
|
+
|
|
46
|
+
`findAgentRoot()` 和 `resolveAgentProject()` 只发现源项目,不使用 `EAP_PREINSTALL_ROOT`。选择器只支持 `root` 和 `startDir`,不存在 Agent code、版本或目录歧义选择。
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import {
|
|
50
|
+
resolveAgentProject,
|
|
51
|
+
validateAgentProject,
|
|
52
|
+
type AgentProjectSelector,
|
|
53
|
+
} from '@gt-fe/eap-sdk';
|
|
54
|
+
|
|
55
|
+
const selector: AgentProjectSelector = { root: process.cwd() };
|
|
56
|
+
const project = resolveAgentProject(selector);
|
|
57
|
+
const validation = validateAgentProject(project.root);
|
|
58
|
+
|
|
59
|
+
if (!validation.valid) {
|
|
60
|
+
console.error(validation.issues);
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 核心能力
|
|
65
|
+
|
|
66
|
+
| 能力 | 主要 API | 说明 |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| 项目发现 | `findAgentRoot()`、`resolveAgentProject()` | 查找根级单 Agent 项目 |
|
|
69
|
+
| 项目校验 | `validateAgentProject()`、`validateGraph()` | 校验 Manifest、Graph、`eap.lock.yaml` 和资源路径 |
|
|
70
|
+
| 用户会话 | `getCurrentUserSession()`、`saveCurrentUserSession()` | 管理当前登录用户和平台 Token;本地可用 `EAP_CHAT_USER` / `EAP_DEBUG_USER` |
|
|
71
|
+
| 平台 API | `createPlatformClient()` | 访问 Portal、Foundation 和平台认证 |
|
|
72
|
+
| 依赖安装 | `installAgentResource()`、`installAgentDependencies()` | 下载或恢复 Tool/Skill ZIP 制品,并维护 `eap.lock.yaml` |
|
|
73
|
+
| Runtime 物化 | `prepareAgentRuntime()` | 生成 Runtime 可直接读取的预装目录 |
|
|
74
74
|
| Agent API | `createAgent()` | 从已物化 Runtime 创建进程内 Agent,支持 invoke/stream 和 Graph 编排 |
|
|
75
75
|
| 内嵌管理 | `agent.sessions`、`agent.messages`、`agent.resources`、`agent.events` | 宿主进程内的会话、消息、资源与实时事件门面 |
|
|
76
76
|
| 独立 Runtime | `packageStandaloneAgentProject()` | 将同一套物化 Runtime 输出到宿主指定目录(推荐 `dist/.eap/runtime`),启动时不读取源项目 |
|
|
77
|
-
| 打包与验包 | `packageAgentProject()`、`readAgentPackage()` | 生成并校验单 Agent Runtime 部署包 |
|
|
78
|
-
| Schema | `AgentManifestSchema`、`GraphSchema`、`ToolsetManifestSchema` 等 | SDK 所有项目文件的 Zod Schema |
|
|
79
|
-
|
|
80
|
-
所有公共 API 均从包根导出,不需要导入内部路径。
|
|
81
|
-
|
|
82
|
-
## 平台 API
|
|
83
|
-
|
|
84
|
-
`createPlatformClient()` 是 Portal 与 Foundation HTTP 调用的统一入口。端点由调用方显式提供,客户端会使用当前用户会话 Token;也可通过 `token` 覆盖,便于服务端或测试宿主注入凭证。
|
|
85
|
-
|
|
86
|
-
```ts
|
|
87
|
-
import { createPlatformClient } from '@gt-fe/eap-sdk';
|
|
88
|
-
|
|
89
|
-
const platform = createPlatformClient({
|
|
90
|
-
portalEndpoint: 'https://portal.example',
|
|
91
|
-
foundationEndpoint: 'https://foundation.example',
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
const agents = await platform.portalFetch('/api/v1/agents');
|
|
95
|
-
const deployment = await platform.foundationFetch('/api/v1/deployments', {
|
|
96
|
-
method: 'POST',
|
|
97
|
-
body: JSON.stringify({ agentCode: 'report-agent', version: '1.0.0' }),
|
|
98
|
-
});
|
|
99
|
-
```
|
|
100
|
-
|
|
77
|
+
| 打包与验包 | `packageAgentProject()`、`readAgentPackage()` | 生成并校验单 Agent Runtime 部署包 |
|
|
78
|
+
| Schema | `AgentManifestSchema`、`GraphSchema`、`ToolsetManifestSchema` 等 | SDK 所有项目文件的 Zod Schema |
|
|
79
|
+
|
|
80
|
+
所有公共 API 均从包根导出,不需要导入内部路径。
|
|
81
|
+
|
|
82
|
+
## 平台 API
|
|
83
|
+
|
|
84
|
+
`createPlatformClient()` 是 Portal 与 Foundation HTTP 调用的统一入口。端点由调用方显式提供,客户端会使用当前用户会话 Token;也可通过 `token` 覆盖,便于服务端或测试宿主注入凭证。
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
import { createPlatformClient } from '@gt-fe/eap-sdk';
|
|
88
|
+
|
|
89
|
+
const platform = createPlatformClient({
|
|
90
|
+
portalEndpoint: 'https://portal.example',
|
|
91
|
+
foundationEndpoint: 'https://foundation.example',
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const agents = await platform.portalFetch('/api/v1/agents');
|
|
95
|
+
const deployment = await platform.foundationFetch('/api/v1/deployments', {
|
|
96
|
+
method: 'POST',
|
|
97
|
+
body: JSON.stringify({ agentCode: 'report-agent', version: '1.0.0' }),
|
|
98
|
+
});
|
|
99
|
+
```
|
|
100
|
+
|
|
101
101
|
客户端同时提供 `checkPortalHealth()`、`checkFoundationHealth()`、`uploadFileToObjectStorage()`,以及
|
|
102
102
|
`resolveTokenUser(token)`、会保存统一用户会话的 `loginWithCas()`、`validateAndSaveToken()`,和
|
|
103
103
|
吊销 Token 的 `revokeToken()`。Registry Tool/Skill 安装也使用此客户端,不再维护独立 HTTP 实现。
|
|
@@ -119,167 +119,171 @@ console.log({ userId: user.userId, roles: user.roles, permissions: user.permissi
|
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
不要打印或持久化 `requestToken`;生产环境应由宿主负责 Token 的来源、租户校验和错误映射。
|
|
122
|
-
|
|
123
|
-
## 当前用户会话
|
|
124
|
-
|
|
125
|
-
SDK 将当前用户资料和平台凭证统一保存在 `~/.eap/config.json`;可通过 `EAP_CONFIG_DIR` 修改目录。
|
|
126
|
-
|
|
127
|
-
```ts
|
|
128
|
-
import {
|
|
129
|
-
clearCurrentUserSession,
|
|
130
|
-
getCurrentUserSession,
|
|
131
|
-
getCurrentUserToken,
|
|
132
|
-
saveCurrentUserSession,
|
|
133
|
-
} from '@gt-fe/eap-sdk';
|
|
134
|
-
|
|
135
|
-
saveCurrentUserSession({
|
|
136
|
-
userId: 'U001',
|
|
137
|
-
username: 'alice',
|
|
138
|
-
roles: ['developer'],
|
|
139
|
-
permissions: [],
|
|
140
|
-
token: '<platform-token>',
|
|
141
|
-
authMethod: 'token',
|
|
142
|
-
platformUrl: 'https://foundation.example',
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
const user = getCurrentUserSession();
|
|
146
|
-
const token = getCurrentUserToken();
|
|
147
|
-
clearCurrentUserSession();
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
规则如下:
|
|
151
|
-
|
|
152
|
-
- 同一时刻只有一个当前用户,不随 CLI profile 或 Runtime storage profile 切换。
|
|
153
|
-
- `getCurrentUserSession()` 始终返回用户资料;没有已保存会话时返回 `default-user`。
|
|
154
|
-
- `getCurrentUserToken()` 优先读取 `EAP_TOKEN`,否则读取已保存 Token;默认用户不提供 Token。
|
|
155
|
-
- Runtime 环境准备会把当前 Token 映射为 `EAP_DELEGATION_TOKEN`。
|
|
156
|
-
- 用户资料在进程内缓存;测试或特殊宿主可调用 `clearUserSessionCache()` 清除缓存。
|
|
157
|
-
|
|
158
|
-
## 版本锁定文件与资源安装
|
|
159
|
-
|
|
160
|
-
开发态版本锁定文件是 `eap.lock.yaml`(规格称 `eap.lock
|
|
161
|
-
|
|
162
|
-
```yaml
|
|
163
|
-
lockfileVersion: 2
|
|
164
|
-
resources:
|
|
165
|
-
tools:
|
|
166
|
-
- code: search-tool
|
|
167
|
-
version: 1.2.0
|
|
168
|
-
source: registry
|
|
169
|
-
path: .eap/remote/tools/search-tool/1.2.0
|
|
170
|
-
skills: []
|
|
171
|
-
subagents: []
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
每条 Tool/Skill 记录包含:
|
|
175
|
-
|
|
176
|
-
- `code`:Agent Manifest 中声明的资源编码。
|
|
177
|
-
- `version`:确定的语义化版本。
|
|
178
|
-
- `source`:`registry` 或 `local`。
|
|
179
|
-
- `path`:相对于项目根的可移植目录路径。
|
|
180
|
-
|
|
181
|
-
Registry 资源存放在 `.eap/remote`;工程内资源在 `tools/<code>` 或 `skills/<code>`。锁文件只记录来源、路径和版本;资源摘要在 package/standalone 物化时从实际入口文件临时计算。`source: registry` 也可以是 toolset;SDK 把它及同目录制品作为整体复制,不展开或校验其 `tools[]` 子工具。绝对路径、`..` 穿越、符号链接、缺失目录、缺失入口文件和本地/Registry 同名冲突都会被拒绝。
|
|
182
|
-
|
|
183
|
-
安装单个远程资源:
|
|
184
|
-
|
|
185
|
-
```ts
|
|
186
|
-
import { installAgentResource } from '@gt-fe/eap-sdk';
|
|
187
|
-
|
|
188
|
-
await installAgentResource({
|
|
189
|
-
root: process.cwd(),
|
|
190
|
-
kind: 'tool',
|
|
191
|
-
code: 'search-tool',
|
|
192
|
-
version: '1.2.0',
|
|
193
|
-
token: process.env.EAP_TOKEN,
|
|
194
|
-
});
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
按名称和精确版本安装当前项目中的本地资源:
|
|
198
|
-
|
|
199
|
-
```ts
|
|
200
|
-
import { installLocalAgentResource } from '@gt-fe/eap-sdk';
|
|
201
|
-
|
|
202
|
-
await installLocalAgentResource({
|
|
203
|
-
root: process.cwd(),
|
|
204
|
-
kind: 'tool',
|
|
205
|
-
code: 'echo-tool',
|
|
206
|
-
version: '1.0.0',
|
|
207
|
-
});
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
按名称卸载当前项目中的本地或 Registry 资源:
|
|
211
|
-
|
|
212
|
-
```ts
|
|
213
|
-
import { uninstallAgentResource } from '@gt-fe/eap-sdk';
|
|
214
|
-
|
|
215
|
-
await uninstallAgentResource({
|
|
216
|
-
root: process.cwd(),
|
|
217
|
-
code: 'echo-tool',
|
|
218
|
-
});
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
恢复全部锁定资源并刷新本地资源记录:
|
|
222
|
-
|
|
223
|
-
```ts
|
|
224
|
-
import { installAgentDependencies } from '@gt-fe/eap-sdk';
|
|
225
|
-
|
|
226
|
-
const result = await installAgentDependencies({ root: process.cwd() });
|
|
227
|
-
console.log(result.restoredRegistryResources, result.refreshedLocalResources);
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
只有安装 API 会访问平台。服务启动和打包默认离线;远程缓存缺失时应先执行安装,而不是在 Runtime 启动后动态拉取。
|
|
231
|
-
|
|
232
|
-
Registry Tool/Skill 安装会按 code 和 version 查询 Portal 资源详情,并通过其中的 `source_url` 下载 ZIP 制品。制品会解压到 `.eap/remote/tools/<code>/<version>/` 或 `.eap/remote/skills/<code>/<version>/`;开发锁不保存资源摘要。
|
|
233
|
-
|
|
234
|
-
`agent.manifest.json` 只使用 `toolRefs`、`skillRefs` 和 `subagentRefs` 声明依赖;其中 `subagentRefs` 使用 `{ code, version }`,不会触发 Tool/Skill ZIP 下载。
|
|
235
|
-
|
|
236
|
-
Skill 包使用 `SKILL.md`/`skill.md` frontmatter 提供身份。Registry Skill 的平台 Tool 引用会规范化后存入 `eap.lock.yaml.resources.skills[].toolRefs`,不会写回 Skill 源目录;本地 Skill 不会因任意 frontmatter 自动安装 Tool。
|
|
237
|
-
|
|
238
|
-
- Agent 已有同名 Tool 时,以 Agent 的版本为准,Skill 不会覆盖它。
|
|
239
|
-
- Agent 没有同名 Tool 时,Registry Skill 会按平台声明的版本安装 Registry Tool;本地 Skill 不会从其 `toolRefs` 推导或安装 Tool。
|
|
240
|
-
- `toolRefs[].toolId` 是平台 Tool code;ZIP 内的 `scripts`、`metadata` 和旧引用不会被用来推导 Registry 依赖。
|
|
241
|
-
|
|
242
|
-
卸载 Tool 前 SDK 会检查当前 Agent 已声明的 Skill 依赖。仍被 Skill 引用时会拒绝卸载,并列出 Skill 版本;请先更新 Skill 或在平台重新配置依赖,再重新安装 Skill 后卸载 Tool。
|
|
243
|
-
|
|
244
|
-
## Runtime 目录物化
|
|
245
|
-
|
|
246
|
-
`prepareAgentRuntime()` 根据 Agent Manifest 和 `eap.
|
|
247
|
-
|
|
248
|
-
```ts
|
|
249
|
-
import { prepareAgentRuntime } from '@gt-fe/eap-sdk';
|
|
250
|
-
|
|
251
|
-
const prepared = await prepareAgentRuntime({ root: process.cwd() });
|
|
252
|
-
console.log(prepared.runtimeRoot);
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
资源映射规则:
|
|
256
|
-
|
|
257
|
-
| 来源 | Runtime 目标目录 |
|
|
258
|
-
|---|---|
|
|
259
|
-
| Registry Toolset | `agents/<agentCode>/<version>/preinstall/tools/<toolsetCode>/` |
|
|
260
|
-
| Registry Skill | `agents/<agentCode>/<version>/preinstall/skills/<skillCode>/` |
|
|
261
|
-
| 本地 Tool | `agents/<agentCode>/<version>/preinstall/tools/<toolCode>/` |
|
|
262
|
-
| 本地 Skill | `agents/<agentCode>/<version>/preinstall/skills/<skillCode>/` |
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
122
|
+
|
|
123
|
+
## 当前用户会话
|
|
124
|
+
|
|
125
|
+
SDK 将当前用户资料和平台凭证统一保存在 `~/.eap/config.json`;可通过 `EAP_CONFIG_DIR` 修改目录。
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
import {
|
|
129
|
+
clearCurrentUserSession,
|
|
130
|
+
getCurrentUserSession,
|
|
131
|
+
getCurrentUserToken,
|
|
132
|
+
saveCurrentUserSession,
|
|
133
|
+
} from '@gt-fe/eap-sdk';
|
|
134
|
+
|
|
135
|
+
saveCurrentUserSession({
|
|
136
|
+
userId: 'U001',
|
|
137
|
+
username: 'alice',
|
|
138
|
+
roles: ['developer'],
|
|
139
|
+
permissions: [],
|
|
140
|
+
token: '<platform-token>',
|
|
141
|
+
authMethod: 'token',
|
|
142
|
+
platformUrl: 'https://foundation.example',
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
const user = getCurrentUserSession();
|
|
146
|
+
const token = getCurrentUserToken();
|
|
147
|
+
clearCurrentUserSession();
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
规则如下:
|
|
151
|
+
|
|
152
|
+
- 同一时刻只有一个当前用户,不随 CLI profile 或 Runtime storage profile 切换。
|
|
153
|
+
- `getCurrentUserSession()` 始终返回用户资料;没有已保存会话时返回 `default-user`。
|
|
154
|
+
- `getCurrentUserToken()` 优先读取 `EAP_TOKEN`,否则读取已保存 Token;默认用户不提供 Token。
|
|
155
|
+
- Runtime 环境准备会把当前 Token 映射为 `EAP_DELEGATION_TOKEN`。
|
|
156
|
+
- 用户资料在进程内缓存;测试或特殊宿主可调用 `clearUserSessionCache()` 清除缓存。
|
|
157
|
+
|
|
158
|
+
## 版本锁定文件与资源安装
|
|
159
|
+
|
|
160
|
+
开发态版本锁定文件是 `eap.lock.yaml`(规格称 `eap.lock`)。项目根锁文件供 dev-tools 在安装、校验、Runtime 准备和打包时使用;物化副本会随 Runtime 和生产包交付并接受格式与摘要校验。运行中的 Runtime 不用它访问 Registry 或重新安装资源;`dependencies.lock` 仍是实际预装资源的目标态清单。
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
lockfileVersion: 2
|
|
164
|
+
resources:
|
|
165
|
+
tools:
|
|
166
|
+
- code: search-tool
|
|
167
|
+
version: 1.2.0
|
|
168
|
+
source: registry
|
|
169
|
+
path: .eap/remote/tools/search-tool/1.2.0
|
|
170
|
+
skills: []
|
|
171
|
+
subagents: []
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
每条 Tool/Skill 记录包含:
|
|
175
|
+
|
|
176
|
+
- `code`:Agent Manifest 中声明的资源编码。
|
|
177
|
+
- `version`:确定的语义化版本。
|
|
178
|
+
- `source`:`registry` 或 `local`。
|
|
179
|
+
- `path`:相对于项目根的可移植目录路径。
|
|
180
|
+
|
|
181
|
+
Registry 资源存放在 `.eap/remote`;工程内资源在 `tools/<code>` 或 `skills/<code>`。锁文件只记录来源、路径和版本;资源摘要在 package/standalone 物化时从实际入口文件临时计算。`source: registry` 也可以是 toolset;SDK 把它及同目录制品作为整体复制,不展开或校验其 `tools[]` 子工具。绝对路径、`..` 穿越、符号链接、缺失目录、缺失入口文件和本地/Registry 同名冲突都会被拒绝。
|
|
182
|
+
|
|
183
|
+
安装单个远程资源:
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
import { installAgentResource } from '@gt-fe/eap-sdk';
|
|
187
|
+
|
|
188
|
+
await installAgentResource({
|
|
189
|
+
root: process.cwd(),
|
|
190
|
+
kind: 'tool',
|
|
191
|
+
code: 'search-tool',
|
|
192
|
+
version: '1.2.0',
|
|
193
|
+
token: process.env.EAP_TOKEN,
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
按名称和精确版本安装当前项目中的本地资源:
|
|
198
|
+
|
|
199
|
+
```ts
|
|
200
|
+
import { installLocalAgentResource } from '@gt-fe/eap-sdk';
|
|
201
|
+
|
|
202
|
+
await installLocalAgentResource({
|
|
203
|
+
root: process.cwd(),
|
|
204
|
+
kind: 'tool',
|
|
205
|
+
code: 'echo-tool',
|
|
206
|
+
version: '1.0.0',
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
按名称卸载当前项目中的本地或 Registry 资源:
|
|
211
|
+
|
|
212
|
+
```ts
|
|
213
|
+
import { uninstallAgentResource } from '@gt-fe/eap-sdk';
|
|
214
|
+
|
|
215
|
+
await uninstallAgentResource({
|
|
216
|
+
root: process.cwd(),
|
|
217
|
+
code: 'echo-tool',
|
|
218
|
+
});
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
恢复全部锁定资源并刷新本地资源记录:
|
|
222
|
+
|
|
223
|
+
```ts
|
|
224
|
+
import { installAgentDependencies } from '@gt-fe/eap-sdk';
|
|
225
|
+
|
|
226
|
+
const result = await installAgentDependencies({ root: process.cwd() });
|
|
227
|
+
console.log(result.restoredRegistryResources, result.refreshedLocalResources);
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
只有安装 API 会访问平台。服务启动和打包默认离线;远程缓存缺失时应先执行安装,而不是在 Runtime 启动后动态拉取。
|
|
231
|
+
|
|
232
|
+
Registry Tool/Skill 安装会按 code 和 version 查询 Portal 资源详情,并通过其中的 `source_url` 下载 ZIP 制品。制品会解压到 `.eap/remote/tools/<code>/<version>/` 或 `.eap/remote/skills/<code>/<version>/`;开发锁不保存资源摘要。
|
|
233
|
+
|
|
234
|
+
`agent.manifest.json` 只使用 `toolRefs`、`skillRefs` 和 `subagentRefs` 声明依赖;其中 `subagentRefs` 使用 `{ code, version }`,不会触发 Tool/Skill ZIP 下载。
|
|
235
|
+
|
|
236
|
+
Skill 包使用 `SKILL.md`/`skill.md` frontmatter 提供身份。Registry Skill 的平台 Tool 引用会规范化后存入 `eap.lock.yaml.resources.skills[].toolRefs`,不会写回 Skill 源目录;本地 Skill 不会因任意 frontmatter 自动安装 Tool。
|
|
237
|
+
|
|
238
|
+
- Agent 已有同名 Tool 时,以 Agent 的版本为准,Skill 不会覆盖它。
|
|
239
|
+
- Agent 没有同名 Tool 时,Registry Skill 会按平台声明的版本安装 Registry Tool;本地 Skill 不会从其 `toolRefs` 推导或安装 Tool。
|
|
240
|
+
- `toolRefs[].toolId` 是平台 Tool code;ZIP 内的 `scripts`、`metadata` 和旧引用不会被用来推导 Registry 依赖。
|
|
241
|
+
|
|
242
|
+
卸载 Tool 前 SDK 会检查当前 Agent 已声明的 Skill 依赖。仍被 Skill 引用时会拒绝卸载,并列出 Skill 版本;请先更新 Skill 或在平台重新配置依赖,再重新安装 Skill 后卸载 Tool。
|
|
243
|
+
|
|
244
|
+
## Runtime 目录物化
|
|
245
|
+
|
|
246
|
+
`prepareAgentRuntime()` 根据 Agent Manifest、`eap.lock.yaml` 和 `eap.config.json` 的本地资源目录生成一棵完整、干净的 Runtime 目录:
|
|
247
|
+
|
|
248
|
+
```ts
|
|
249
|
+
import { prepareAgentRuntime } from '@gt-fe/eap-sdk';
|
|
250
|
+
|
|
251
|
+
const prepared = await prepareAgentRuntime({ root: process.cwd() });
|
|
252
|
+
console.log(prepared.runtimeRoot);
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
资源映射规则:
|
|
256
|
+
|
|
257
|
+
| 来源 | Runtime 目标目录 |
|
|
258
|
+
|---|---|
|
|
259
|
+
| Registry Toolset | `agents/<agentCode>/<version>/preinstall/tools/<toolsetCode>/` |
|
|
260
|
+
| Registry Skill | `agents/<agentCode>/<version>/preinstall/skills/<skillCode>/` |
|
|
261
|
+
| 本地 Tool | `agents/<agentCode>/<version>/preinstall/tools/<toolCode>/` |
|
|
262
|
+
| 本地 Skill | `agents/<agentCode>/<version>/preinstall/skills/<skillCode>/` |
|
|
263
|
+
| `localToolDirectories` 的直接子目录 | `agents/<agentCode>/<version>/preinstall/tools/<子目录名>/` |
|
|
264
|
+
| `localSkillDirectories` 的直接子目录 | `agents/<agentCode>/<version>/preinstall/skills/<子目录名>/` |
|
|
265
|
+
|
|
266
|
+
配置目录可省略或使用空数组;模板默认是 `localToolDirectories: ["./tools"]` 和 `localSkillDirectories: ["./skills"]`。相对路径基于项目根,绝对路径原样使用。扫描只认直接子目录根部的 `tool.manifest.json` 或 `SKILL.md` / `skill.md`,不解析入口内容、不核对 code/version,也不要求锁文件记录;无效父目录和无入口文件的子目录直接跳过。同名资源按配置顺序由后者覆盖,配置目录资源覆盖同名锁定资源。
|
|
267
|
+
|
|
268
|
+
物化器还会:
|
|
269
|
+
|
|
270
|
+
- 复制根级 Agent Manifest、Graph、`eap.config.json` 和 `eap.lock.yaml`。
|
|
267
271
|
- dev/package/standalone 都从实际入口文件计算资源摘要。
|
|
268
|
-
- 生成 `dependencies.lock`、`snapshot.json` 和 `.ready`。
|
|
269
|
-
- 把 Registry 与本地 Tool/Skill 都复制到该 Agent 的 `preinstall/`;不生成开发者分层或 `shared/` 资源目录。
|
|
270
|
-
- 排除 `.git`、`.eap`、`node_modules`、`.env*`、coverage 和临时文件。
|
|
271
|
-
- 拒绝符号链接和越界路径。
|
|
272
|
-
- 通过临时目录加原子替换,避免 Runtime 看到半成品。
|
|
273
|
-
|
|
274
|
-
物化器不创建 Runtime、不启动 HTTP 服务、不访问平台,也不负责压缩包。
|
|
275
|
-
|
|
276
|
-
摘要字段的输入和格式见 [dev-tools SHA-256 摘要约定](../../docs/README.md#sha-256-摘要约定)。
|
|
277
|
-
|
|
272
|
+
- 生成 `dependencies.lock`、`snapshot.json` 和 `.ready`。
|
|
273
|
+
- 把 Registry 与本地 Tool/Skill 都复制到该 Agent 的 `preinstall/`;不生成开发者分层或 `shared/` 资源目录。
|
|
274
|
+
- 排除 `.git`、`.eap`、`node_modules`、`.env*`、coverage 和临时文件。
|
|
275
|
+
- 拒绝符号链接和越界路径。
|
|
276
|
+
- 通过临时目录加原子替换,避免 Runtime 看到半成品。
|
|
277
|
+
|
|
278
|
+
物化器不创建 Runtime、不启动 HTTP 服务、不访问平台,也不负责压缩包。
|
|
279
|
+
|
|
280
|
+
摘要字段的输入和格式见 [dev-tools SHA-256 摘要约定](../../docs/README.md#sha-256-摘要约定)。
|
|
281
|
+
|
|
278
282
|
## Agent API
|
|
279
283
|
|
|
280
284
|
`prepareAgentRuntime()` 和 `createAgent()` 是两个明确分工的步骤。前者校验项目并生成 Runtime,后者只加载已物化目录。SDK 只提供进程内 API,不启动 HTTP server、不注册路由,也不提供 HTTP middleware 或鉴权。
|
|
281
|
-
|
|
282
|
-
```ts
|
|
285
|
+
|
|
286
|
+
```ts
|
|
283
287
|
import { createAgent, prepareAgentRuntime } from '@gt-fe/eap-sdk';
|
|
284
288
|
|
|
285
289
|
const prepared = await prepareAgentRuntime({ root: process.cwd() });
|
|
@@ -292,21 +296,21 @@ const agent = await createAgent({
|
|
|
292
296
|
const result = await agent.invoke('汇总这份报告');
|
|
293
297
|
|
|
294
298
|
for await (const event of agent.stream('列出支撑数据')) {
|
|
295
|
-
console.log(event.type, event.data);
|
|
296
|
-
}
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
+
console.log(event.type, event.data);
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
299
303
|
HTTP/SSE 协议映射属于宿主项目。宿主可将 `invoke`、`stream`、sessions、messages 和 resources
|
|
300
304
|
映射为自己的受保护路由,但不得把 HTTP server、route 或 controller 加入 SDK。
|
|
301
|
-
|
|
302
|
-
默认行为:
|
|
303
|
-
|
|
305
|
+
|
|
306
|
+
默认行为:
|
|
307
|
+
|
|
304
308
|
- `prepareAgentRuntime()` 支持通过 `outputRoot` 或 `EAP_RUNTIME_ROOT` 指定输出目录;未指定时默认使用 `dist/.eap/runtime`。CLI 和模板会显式选择各自的 `.eap/runtime` 或 `dist/.eap/runtime`。
|
|
305
309
|
- `createAgent()` 只从准备好的 `runtimeRoot` 读取 Tool/Skill 定义,不发现源项目、不解析锁文件、不执行物化。
|
|
306
310
|
- `EAP_PREINSTALL_ROOT` 始终指向当前 `runtimeRoot`,不是项目源目录。
|
|
307
311
|
- `eap chat` / `eap dev` 传入 `sessionPersistence: true`,使用 Runtime `dev` profile,会话与消息写入 Runtime 根目录旁的默认 sessions 目录。
|
|
308
312
|
- Runtime `test` profile 为 Redis+PostgreSQL,不再表示内存。`createAgent()` 默认使用 `test` profile;需要连续对话时显式设置 `sessionPersistence: true`。
|
|
309
|
-
|
|
313
|
+
|
|
310
314
|
需要注入自定义 Runtime 时,使用 `runtimeFactory(prepared, environment)`。不要传入已经构造完成、并绑定了其他 GraphLoader 根目录的 Runtime。
|
|
311
315
|
|
|
312
316
|
### 内嵌配置与编排
|
|
@@ -338,21 +342,22 @@ await agent.config.apply();
|
|
|
338
342
|
查询、回放或删除 Trace。
|
|
339
343
|
|
|
340
344
|
### 内嵌 Agent API
|
|
341
|
-
|
|
345
|
+
|
|
342
346
|
可以使用现有 `eap package` 命令,或在自定义构建脚本中调用 `packageStandaloneAgentProject()`,
|
|
343
347
|
生成宿主需要的 Runtime 目录:
|
|
344
|
-
|
|
345
|
-
```bash
|
|
348
|
+
|
|
349
|
+
```bash
|
|
346
350
|
eap package --target standalone --output ./dist/.eap/runtime
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
该模式复用项目校验、资源解析、Runtime 物化和摘要校验,但不生成 TAR.GZ,也不复制项目的
|
|
350
|
-
`package.json
|
|
351
|
-
`dist/.eap/runtime/agents/<code>/<version
|
|
352
|
-
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
该模式复用项目校验、资源解析、Runtime 物化和摘要校验,但不生成 TAR.GZ,也不复制项目的
|
|
354
|
+
`package.json`。输出目录结构为
|
|
355
|
+
`dist/.eap/runtime/agents/<code>/<version>/`,其中包含 `agent.manifest.json`、`graph.json`、
|
|
356
|
+
`eap.config.json`、`eap.lock.yaml`、`dependencies.lock`、`snapshot.json` 和 `.ready`。
|
|
357
|
+
|
|
353
358
|
已由构建工具打包的入口可以直接消费该目录,并在同一个入口中编排 Agent:
|
|
354
|
-
|
|
355
|
-
```ts
|
|
359
|
+
|
|
360
|
+
```ts
|
|
356
361
|
import { createAgent } from '@gt-fe/eap-sdk';
|
|
357
362
|
import { dirname, resolve } from 'node:path';
|
|
358
363
|
import { fileURLToPath } from 'node:url';
|
|
@@ -387,60 +392,61 @@ dev 上下文创建 Agent;模板生产构建默认物化到 `dist/.eap/runtime
|
|
|
387
392
|
`createAgent({ runtimeRoot, embeddedConfig })` 和 Runtime 物化脚本;HTTP 由宿主项目自行提供。
|
|
388
393
|
|
|
389
394
|
## 打包与验包
|
|
390
|
-
|
|
395
|
+
|
|
391
396
|
`packageAgentProject()` 会独立生成 package staging Runtime 树,不复用宿主的 Runtime 输出目录:
|
|
392
|
-
|
|
393
|
-
```ts
|
|
394
|
-
import { packageAgentProject, readAgentPackage } from '@gt-fe/eap-sdk';
|
|
395
|
-
|
|
396
|
-
const artifact = await packageAgentProject({
|
|
397
|
-
root: process.cwd(),
|
|
398
|
-
});
|
|
399
|
-
|
|
400
|
-
const verified = readAgentPackage(artifact.archivePath);
|
|
401
|
-
console.log(verified.manifest.agents[0], verified.digest);
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
默认输出:
|
|
405
|
-
|
|
406
|
-
```text
|
|
407
|
-
.eap/package/eap-agent-project.tar.gz
|
|
408
|
-
.eap/package/eap-agent-project.tar.gz.sha256
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
部署包只包含:
|
|
412
|
-
|
|
413
|
-
- 物化后的 Agent 版本目录内容,直接展开到包根目录(例如 `agent.manifest.json`、`graph.json`、`preinstall/`)。
|
|
414
|
-
- 根目录的包文件索引 `eap-package.json`。
|
|
415
|
-
|
|
416
|
-
部署包不会包含
|
|
417
|
-
|
|
418
|
-
## 项目配置映射
|
|
419
|
-
|
|
420
|
-
`eap.config.json` 由 `EapProjectConfigSchema` 校验。SDK 在 Runtime 构造前完成以下主要映射:
|
|
421
|
-
|
|
422
|
-
顶层 `version` 是 SDK package version;配置版本不匹配时项目校验、服务创建和打包都会失败。
|
|
423
|
-
|
|
424
|
-
| 项目配置或输入 | Runtime 环境变量 |
|
|
425
|
-
|---|---|
|
|
426
|
-
| `platform.portalUrl` | `EAP_PLATFORM_ENDPOINT` |
|
|
427
|
-
| `platform.foundationServiceUrl` | `FOUNDATION_SERVICE_URL` |
|
|
428
|
-
| `runtime.deploymentContext` | `EAP_DEPLOYMENT_CONTEXT` |
|
|
429
|
-
| `runtime.governance.enabled` | `GOVERNANCE_DISABLED` |
|
|
430
|
-
| `runtime.storage` | `EAP_RUNTIME_STORAGE_PROFILE`、`EAP_CHECKPOINT_DIR` |
|
|
431
|
-
| `runtime.tools` | `EAP_TOOL_EXECUTION_MODE`、`EAP_TOOL_GATEWAY_TRANSPORT` |
|
|
432
|
-
| 准备好的 Runtime 目录 | `EAP_PREINSTALL_ROOT` |
|
|
433
|
-
| 当前用户 Token | `EAP_DELEGATION_TOKEN` |
|
|
434
|
-
|
|
435
|
-
显式环境变量优先于大多数项目配置;`EAP_PREINSTALL_ROOT` 始终使用本次物化得到的目录。
|
|
436
|
-
|
|
437
|
-
## 内置模板
|
|
438
|
-
|
|
439
|
-
SDK 与 CLI 使用同一套根级单 Agent 项目约定。内置模板包括:
|
|
440
|
-
|
|
441
|
-
- `simple-flow`:固定顺序工作流。
|
|
442
|
-
- `single-agent-with-tools`:单 Agent + ReAct Tool 调用。
|
|
443
|
-
- `plan-and-execute
|
|
444
|
-
- `dag-workflow
|
|
445
|
-
|
|
446
|
-
|
|
397
|
+
|
|
398
|
+
```ts
|
|
399
|
+
import { packageAgentProject, readAgentPackage } from '@gt-fe/eap-sdk';
|
|
400
|
+
|
|
401
|
+
const artifact = await packageAgentProject({
|
|
402
|
+
root: process.cwd(),
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
const verified = readAgentPackage(artifact.archivePath);
|
|
406
|
+
console.log(verified.manifest.agents[0], verified.digest);
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
默认输出:
|
|
410
|
+
|
|
411
|
+
```text
|
|
412
|
+
.eap/package/eap-agent-project.tar.gz
|
|
413
|
+
.eap/package/eap-agent-project.tar.gz.sha256
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
部署包只包含:
|
|
417
|
+
|
|
418
|
+
- 物化后的 Agent 版本目录内容,直接展开到包根目录(例如 `agent.manifest.json`、`graph.json`、`eap.config.json`、`eap.lock.yaml`、`preinstall/`)。
|
|
419
|
+
- 根目录的包文件索引 `eap-package.json`。
|
|
420
|
+
|
|
421
|
+
部署包不会包含 `.eap/remote`、会话、checkpoint、staging 名称或其他开发缓存;`eap.config.json` 和 `eap.lock.yaml` 作为 Runtime 输入随包交付。`readAgentPackage()` 会校验 `eap-package.json` 的所有文件大小和摘要,并要求包内恰好有一个 Agent。
|
|
422
|
+
|
|
423
|
+
## 项目配置映射
|
|
424
|
+
|
|
425
|
+
`eap.config.json` 由 `EapProjectConfigSchema` 校验。SDK 在 Runtime 构造前完成以下主要映射:
|
|
426
|
+
|
|
427
|
+
顶层 `version` 是 SDK package version;配置版本不匹配时项目校验、服务创建和打包都会失败。
|
|
428
|
+
|
|
429
|
+
| 项目配置或输入 | Runtime 环境变量 |
|
|
430
|
+
|---|---|
|
|
431
|
+
| `platform.portalUrl` | `EAP_PLATFORM_ENDPOINT` |
|
|
432
|
+
| `platform.foundationServiceUrl` | `FOUNDATION_SERVICE_URL` |
|
|
433
|
+
| `runtime.deploymentContext` | `EAP_DEPLOYMENT_CONTEXT` |
|
|
434
|
+
| `runtime.governance.enabled` | `GOVERNANCE_DISABLED` |
|
|
435
|
+
| `runtime.storage` | `EAP_RUNTIME_STORAGE_PROFILE`、`EAP_CHECKPOINT_DIR` |
|
|
436
|
+
| `runtime.tools` | `EAP_TOOL_EXECUTION_MODE`、`EAP_TOOL_GATEWAY_TRANSPORT` |
|
|
437
|
+
| 准备好的 Runtime 目录 | `EAP_PREINSTALL_ROOT` |
|
|
438
|
+
| 当前用户 Token | `EAP_DELEGATION_TOKEN` |
|
|
439
|
+
|
|
440
|
+
显式环境变量优先于大多数项目配置;`EAP_PREINSTALL_ROOT` 始终使用本次物化得到的目录。
|
|
441
|
+
|
|
442
|
+
## 内置模板
|
|
443
|
+
|
|
444
|
+
SDK 与 CLI 使用同一套根级单 Agent 项目约定。内置模板包括:
|
|
445
|
+
|
|
446
|
+
- `simple-flow`:固定顺序工作流。
|
|
447
|
+
- `single-agent-with-tools`:单 Agent + ReAct Tool 调用。
|
|
448
|
+
- `plan-and-execute`:规划后逐步执行。
|
|
449
|
+
- `dag-workflow`:并行扇出后合并。
|
|
450
|
+
- `agent-api-orchestration`:面向前端智能体页面的 Agent API 服务。
|
|
451
|
+
|
|
452
|
+
工作流语义由 `graph.json` 表达,`agent.manifest.json` 只保存身份和依赖。包含 Tool 的模板自带本地、已锁定的 `echo-tool`,校验和打包不依赖 Registry 缓存。
|