@gt-fe/eap-sdk 0.1.13 → 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.
Files changed (100) hide show
  1. package/README.md +452 -376
  2. package/dist/lockfile/resolve-dependencies.d.ts +1 -0
  3. package/dist/lockfile/resolve-dependencies.d.ts.map +1 -1
  4. package/dist/lockfile/resolve-dependencies.js +3 -0
  5. package/dist/lockfile/resolve-dependencies.js.map +1 -1
  6. package/dist/materialization/copy-resource-directory.d.ts +1 -0
  7. package/dist/materialization/copy-resource-directory.d.ts.map +1 -1
  8. package/dist/materialization/copy-resource-directory.js +38 -1
  9. package/dist/materialization/copy-resource-directory.js.map +1 -1
  10. package/dist/materialization/index.d.ts +1 -1
  11. package/dist/materialization/index.d.ts.map +1 -1
  12. package/dist/materialization/index.js +1 -1
  13. package/dist/materialization/index.js.map +1 -1
  14. package/dist/materialization/load-agent-runtime.d.ts +19 -0
  15. package/dist/materialization/load-agent-runtime.d.ts.map +1 -0
  16. package/dist/materialization/load-agent-runtime.js +128 -0
  17. package/dist/materialization/load-agent-runtime.js.map +1 -0
  18. package/dist/materialization/prepare-agent-runtime.d.ts +6 -0
  19. package/dist/materialization/prepare-agent-runtime.d.ts.map +1 -1
  20. package/dist/materialization/prepare-agent-runtime.js +108 -46
  21. package/dist/materialization/prepare-agent-runtime.js.map +1 -1
  22. package/dist/materialization/types.d.ts +0 -2
  23. package/dist/materialization/types.d.ts.map +1 -1
  24. package/dist/packaging/package-agent-project.d.ts.map +1 -1
  25. package/dist/packaging/package-agent-project.js +2 -4
  26. package/dist/packaging/package-agent-project.js.map +1 -1
  27. package/dist/packaging/read-package.d.ts.map +1 -1
  28. package/dist/packaging/read-package.js +20 -1
  29. package/dist/packaging/read-package.js.map +1 -1
  30. package/dist/platform/client.d.ts.map +1 -1
  31. package/dist/platform/client.js +13 -2
  32. package/dist/platform/client.js.map +1 -1
  33. package/dist/platform/types.d.ts +2 -0
  34. package/dist/platform/types.d.ts.map +1 -1
  35. package/dist/project/agent-project.d.ts.map +1 -1
  36. package/dist/project/agent-project.js +10 -0
  37. package/dist/project/agent-project.js.map +1 -1
  38. package/dist/resources/configured-local-resources.d.ts +15 -0
  39. package/dist/resources/configured-local-resources.d.ts.map +1 -0
  40. package/dist/resources/configured-local-resources.js +75 -0
  41. package/dist/resources/configured-local-resources.js.map +1 -0
  42. package/dist/resources/install-agent-dependencies.d.ts.map +1 -1
  43. package/dist/resources/install-agent-dependencies.js +7 -2
  44. package/dist/resources/install-agent-dependencies.js.map +1 -1
  45. package/dist/schema/agent/manifest.d.ts +832 -197
  46. package/dist/schema/agent/manifest.d.ts.map +1 -1
  47. package/dist/schema/graph.d.ts +1295 -403
  48. package/dist/schema/graph.d.ts.map +1 -1
  49. package/dist/schema/graph.js +29 -16
  50. package/dist/schema/graph.js.map +1 -1
  51. package/dist/schema/lockfile.d.ts +30 -30
  52. package/dist/schema/project-config.d.ts +6 -0
  53. package/dist/schema/project-config.d.ts.map +1 -1
  54. package/dist/schema/project-config.js +4 -0
  55. package/dist/schema/project-config.js.map +1 -1
  56. package/dist/service/create-agent.d.ts +8 -0
  57. package/dist/service/create-agent.d.ts.map +1 -0
  58. package/dist/service/create-agent.js +338 -0
  59. package/dist/service/create-agent.js.map +1 -0
  60. package/dist/service/events.d.ts +14 -45
  61. package/dist/service/events.d.ts.map +1 -1
  62. package/dist/service/events.js +46 -1
  63. package/dist/service/events.js.map +1 -1
  64. package/dist/service/index.d.ts +5 -2
  65. package/dist/service/index.d.ts.map +1 -1
  66. package/dist/service/index.js +4 -1
  67. package/dist/service/index.js.map +1 -1
  68. package/dist/service/messages.d.ts +13 -0
  69. package/dist/service/messages.d.ts.map +1 -0
  70. package/dist/service/messages.js +24 -0
  71. package/dist/service/messages.js.map +1 -0
  72. package/dist/service/resources.d.ts +86 -0
  73. package/dist/service/resources.d.ts.map +1 -0
  74. package/dist/service/resources.js +26 -0
  75. package/dist/service/resources.js.map +1 -0
  76. package/dist/service/runtime-adapter.d.ts.map +1 -1
  77. package/dist/service/runtime-adapter.js +26 -2
  78. package/dist/service/runtime-adapter.js.map +1 -1
  79. package/dist/service/sessions.d.ts +33 -0
  80. package/dist/service/sessions.d.ts.map +1 -0
  81. package/dist/service/sessions.js +67 -0
  82. package/dist/service/sessions.js.map +1 -0
  83. package/dist/service/types.d.ts +121 -32
  84. package/dist/service/types.d.ts.map +1 -1
  85. package/dist/validation/validate-agent-project.d.ts.map +1 -1
  86. package/dist/validation/validate-agent-project.js +31 -17
  87. package/dist/validation/validate-agent-project.js.map +1 -1
  88. package/package.json +4 -4
  89. package/dist/materialization/sync-author-resources.d.ts +0 -21
  90. package/dist/materialization/sync-author-resources.d.ts.map +0 -1
  91. package/dist/materialization/sync-author-resources.js +0 -98
  92. package/dist/materialization/sync-author-resources.js.map +0 -1
  93. package/dist/service/create-agent-service.d.ts +0 -12
  94. package/dist/service/create-agent-service.d.ts.map +0 -1
  95. package/dist/service/create-agent-service.js +0 -283
  96. package/dist/service/create-agent-service.js.map +0 -1
  97. package/dist/service/http-server.d.ts +0 -4
  98. package/dist/service/http-server.d.ts.map +0 -1
  99. package/dist/service/http-server.js +0 -89
  100. package/dist/service/http-server.js.map +0 -1
@@ -1,21 +0,0 @@
1
- import type { PreparedAgentRuntime } from './types.js';
2
- export interface AuthorResourceSyncResult {
3
- skills: {
4
- updated: string[];
5
- removed: string[];
6
- };
7
- tools: {
8
- updated: string[];
9
- removed: string[];
10
- };
11
- }
12
- /**
13
- * 开发态:把工程作者源 `skills/`、`tools/` 对账到 Runtime 读的
14
- * `agents/<code>/<ver>/preinstall/{skills,tools}/`。
15
- *
16
- * 只同步 `agent.manifest.json` 引用、且已在锁文件中的资源;未引用的本地
17
- * 目录不会进入 `.eap/runtime`。不删除 dest 里多出来的包(Registry 物化的
18
- * Skill/Tool 必须保留)。热加载以 Runtime 读作者源为准。
19
- */
20
- export declare function syncAuthorResources(prepared: PreparedAgentRuntime): AuthorResourceSyncResult;
21
- //# sourceMappingURL=sync-author-resources.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-author-resources.d.ts","sourceRoot":"","sources":["../../src/materialization/sync-author-resources.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKvD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjD,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,wBAAwB,CAM5F"}
@@ -1,98 +0,0 @@
1
- import { copyFileSync, existsSync, lstatSync, mkdirSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
2
- import { join, relative, resolve } from 'node:path';
3
- import { copyResourceDirectory } from './copy-resource-directory.js';
4
- const SKILL_CODE = /^[a-z0-9][a-z0-9-]*$/;
5
- const TOOL_CODE = /^[a-z0-9][a-z0-9_-]*$/;
6
- /**
7
- * 开发态:把工程作者源 `skills/`、`tools/` 对账到 Runtime 读的
8
- * `agents/<code>/<ver>/preinstall/{skills,tools}/`。
9
- *
10
- * 只同步 `agent.manifest.json` 引用、且已在锁文件中的资源;未引用的本地
11
- * 目录不会进入 `.eap/runtime`。不删除 dest 里多出来的包(Registry 物化的
12
- * Skill/Tool 必须保留)。热加载以 Runtime 读作者源为准。
13
- */
14
- export function syncAuthorResources(prepared) {
15
- syncPromptFiles(prepared.projectRoot, prepared.agentDir);
16
- return {
17
- skills: syncKind(prepared.projectRoot, prepared.agentDir, 'skills', SKILL_CODE, declaredCodes(prepared, 'skills')),
18
- tools: syncKind(prepared.projectRoot, prepared.agentDir, 'tools', TOOL_CODE, declaredCodes(prepared, 'tools')),
19
- };
20
- }
21
- function declaredCodes(prepared, kind) {
22
- return new Set(prepared.resources
23
- .filter((resource) => resource.kind === kind)
24
- .map((resource) => resource.code));
25
- }
26
- function syncPromptFiles(projectRoot, agentDir) {
27
- const source = join(projectRoot, 'prompts');
28
- if (!existsSync(source) || !isRegularDirectory(source))
29
- return;
30
- const dest = join(agentDir, 'prompts');
31
- mkdirSync(dest, { recursive: true });
32
- for (const name of readdirSync(source)) {
33
- const from = join(source, name);
34
- if (!lstatSync(from).isFile())
35
- continue;
36
- copyFileSync(from, join(dest, name));
37
- }
38
- }
39
- function syncKind(projectRoot, agentDir, kind, codePattern, declaredCodes) {
40
- const sourceRoot = resolve(projectRoot, kind);
41
- const destRoot = resolve(agentDir, 'preinstall', kind);
42
- const updated = [];
43
- const removed = [];
44
- if (!existsSync(sourceRoot) || !isRegularDirectory(sourceRoot)) {
45
- return { updated, removed };
46
- }
47
- mkdirSync(destRoot, { recursive: true });
48
- const sourceCodes = listCodes(sourceRoot, codePattern).filter((code) => declaredCodes.has(code));
49
- for (const code of sourceCodes) {
50
- const source = join(sourceRoot, code);
51
- const dest = join(destRoot, code);
52
- if (directoryStamp(source) === directoryStamp(dest))
53
- continue;
54
- rmSync(dest, { recursive: true, force: true });
55
- copyResourceDirectory(source, dest);
56
- writeFileSync(join(dest, '.ready'), '');
57
- updated.push(code);
58
- }
59
- return { updated, removed };
60
- }
61
- function listCodes(root, codePattern) {
62
- return readdirSync(root)
63
- .filter((name) => codePattern.test(name) && isRegularDirectory(join(root, name)))
64
- .sort();
65
- }
66
- function directoryStamp(root) {
67
- if (!existsSync(root) || !isRegularDirectory(root))
68
- return '';
69
- const parts = [];
70
- walkFiles(root, root, parts);
71
- return parts.sort().join('\n');
72
- }
73
- function walkFiles(root, current, parts) {
74
- for (const entry of readdirSync(current, { withFileTypes: true }).sort((left, right) => left.name.localeCompare(right.name))) {
75
- if (entry.name === '.ready' || entry.name === '.env' || entry.name.startsWith('.env.') || entry.name.endsWith('.tmp')) {
76
- continue;
77
- }
78
- const path = join(current, entry.name);
79
- if (entry.isSymbolicLink())
80
- continue;
81
- if (entry.isDirectory()) {
82
- if (entry.name === '.git' || entry.name === '.eap' || entry.name === 'node_modules')
83
- continue;
84
- walkFiles(root, path, parts);
85
- continue;
86
- }
87
- if (!entry.isFile())
88
- continue;
89
- const stat = lstatSync(path);
90
- const rel = relative(root, path).split(/[\\/]/).join('/');
91
- parts.push(`${rel}:${stat.size}:${Math.floor(stat.mtimeMs)}`);
92
- }
93
- }
94
- function isRegularDirectory(path) {
95
- const stat = lstatSync(path);
96
- return stat.isDirectory() && !stat.isSymbolicLink();
97
- }
98
- //# sourceMappingURL=sync-author-resources.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-author-resources.js","sourceRoot":"","sources":["../../src/materialization/sync-author-resources.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import type { AgentService, AgentServiceStartOptions, CreateAgentServiceOptions, CreateEmbeddedAgentServiceOptions } from './types.js';
2
- export declare function resolveAgentServiceStartOptions(options?: AgentServiceStartOptions, env?: NodeJS.ProcessEnv): Required<AgentServiceStartOptions>;
3
- export declare function createAgentService(options?: CreateAgentServiceOptions): Promise<AgentService>;
4
- /**
5
- * Starts an Agent from a Runtime directory emitted during a build. The
6
- * directory must contain agents/<code>/<version>/ and is never re-materialized
7
- * at service startup.
8
- */
9
- export declare function createEmbeddedAgentService(options: CreateEmbeddedAgentServiceOptions): Promise<AgentService>;
10
- export declare function resolveServiceRuntimeEnvironment(projectEnvironment: Record<string, string>, deploymentContext: string, projectRoot: string, sessionPersistence: boolean): Record<string, string>;
11
- export declare function resolveEmbeddedServiceRuntimeEnvironment(runtimeRoot: string, deploymentContext: 'dev' | 'desktop' | 'server', sessionPersistence: boolean, sessionDirectory: string | undefined, environment: Record<string, string>): Record<string, string>;
12
- //# sourceMappingURL=create-agent-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-agent-service.d.ts","sourceRoot":"","sources":["../../src/service/create-agent-service.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,YAAY,EAGZ,wBAAwB,EAExB,yBAAyB,EACzB,iCAAiC,EAClC,MAAM,YAAY,CAAC;AAwEpB,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,wBAA6B,EACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,QAAQ,CAAC,wBAAwB,CAAC,CAKpC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BvG;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAmCD,wBAAgB,gCAAgC,CAC9C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,OAAO,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwCxB;AAED,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,EAC/C,kBAAkB,EAAE,OAAO,EAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB"}
@@ -1,283 +0,0 @@
1
- import { lstatSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
2
- import { resolve } from 'node:path';
3
- import { resolveProjectRuntimeEnvironment } from '../config/index.js';
4
- import { toSha256Hex } from '../digest.js';
5
- import { resolveAgentProject } from '../discovery/index.js';
6
- import { prepareAgentRuntime, syncAuthorResources } from '../materialization/index.js';
7
- import { sha256 } from '../resources/resource-files.js';
8
- import { AgentManifestSchema, DependenciesLockSchema, GraphSchema } from '../schema/index.js';
9
- import { validateAgentProject } from '../validation/index.js';
10
- import { createAgentHttpServer } from './http-server.js';
11
- import { createRuntimeForPrepared } from './runtime-adapter.js';
12
- class RuntimeAgentService {
13
- target;
14
- runtime;
15
- prepared;
16
- server;
17
- constructor(target, runtime, prepared) {
18
- this.target = target;
19
- this.runtime = runtime;
20
- this.prepared = prepared;
21
- }
22
- async invoke(input, options = {}) {
23
- syncAuthorResources(this.prepared);
24
- return this.runtime.agentRuntime.execute({
25
- ...options,
26
- input,
27
- agentCode: this.target.agentCode,
28
- });
29
- }
30
- stream(input, options = {}) {
31
- syncAuthorResources(this.prepared);
32
- return this.runtime.agentRuntime.stream({
33
- ...options,
34
- input,
35
- agentCode: this.target.agentCode,
36
- });
37
- }
38
- getConversation(sessionId) {
39
- return this.runtime.agentRuntime.getConversation(sessionId);
40
- }
41
- listConversations(options) {
42
- return this.runtime.agentRuntime.listConversations(options);
43
- }
44
- listLlmTurns(sessionId) {
45
- return this.runtime.agentRuntime.listLlmTurns(sessionId);
46
- }
47
- getLlmTurn(sessionId, turnId) {
48
- return this.runtime.agentRuntime.getLlmTurn(sessionId, turnId);
49
- }
50
- async start(options = {}) {
51
- if (this.server)
52
- throw new Error('Agent HTTP server is already running');
53
- const server = createAgentHttpServer(this);
54
- const listenOptions = resolveAgentServiceStartOptions(options);
55
- this.server = server;
56
- await new Promise((resolve, reject) => {
57
- const fail = (error) => {
58
- if (this.server === server)
59
- this.server = undefined;
60
- reject(error);
61
- };
62
- server.once('error', fail);
63
- server.listen(listenOptions.port, listenOptions.host, () => {
64
- server.off('error', fail);
65
- resolve();
66
- });
67
- });
68
- }
69
- async stop() {
70
- if (!this.server)
71
- return;
72
- const server = this.server;
73
- this.server = undefined;
74
- await new Promise((resolve, reject) => server.close((error) => error ? reject(error) : resolve()));
75
- }
76
- }
77
- export function resolveAgentServiceStartOptions(options = {}, env = process.env) {
78
- return {
79
- host: options.host ?? env.EAP_RUNTIME_HOST ?? '0.0.0.0',
80
- port: options.port ?? parsePort(env.EAP_RUNTIME_PORT),
81
- };
82
- }
83
- export async function createAgentService(options = {}) {
84
- const { runtimeFactory = createRuntimeForPrepared, messages, sessionPersistence = false, ...selector } = options;
85
- const project = resolveAgentProject(selector);
86
- const validation = validateAgentProject(project.root);
87
- if (!validation.valid) {
88
- throw new Error(`Agent project validation failed: ${validation.issues.map((issue) => issue.message).join('; ')}`);
89
- }
90
- const prepared = await prepareAgentRuntime({ root: project.root });
91
- syncAuthorResources(prepared);
92
- applySystemPrompt(prepared, messages ?? []);
93
- const resolvedEnvironment = resolveProjectRuntimeEnvironment({
94
- root: project.root,
95
- preinstallRoot: prepared.runtimeRoot,
96
- });
97
- const runtime = runtimeFactory(prepared, resolveServiceRuntimeEnvironment(resolvedEnvironment.environment, resolvedEnvironment.config.runtime.deploymentContext, project.root, sessionPersistence));
98
- return new RuntimeAgentService(project, runtime, prepared);
99
- }
100
- /**
101
- * Starts an Agent from a Runtime directory emitted during a build. The
102
- * directory must contain agents/<code>/<version>/ and is never re-materialized
103
- * at service startup.
104
- */
105
- export async function createEmbeddedAgentService(options) {
106
- const target = resolveMaterializedAgentTarget(options);
107
- const runtimeRoot = target.root;
108
- const sessionPersistence = options.sessionPersistence ?? false;
109
- const environment = resolveEmbeddedServiceRuntimeEnvironment(runtimeRoot, options.deploymentContext ?? 'server', sessionPersistence, options.sessionDirectory, options.environment ?? {});
110
- const prepared = {
111
- projectRoot: runtimeRoot,
112
- runtimeRoot,
113
- agentDir: resolve(runtimeRoot, 'agents', target.agentCode, target.version),
114
- agentCode: target.agentCode,
115
- version: target.version,
116
- resources: [],
117
- };
118
- const runtime = (options.runtimeFactory ?? createRuntimeForPrepared)(prepared, environment);
119
- return new RuntimeAgentService(target, runtime, prepared);
120
- }
121
- function applySystemPrompt(prepared, messages) {
122
- const systemMessage = messages.find((message) => message.role === 'system');
123
- if (!systemMessage)
124
- return;
125
- // TODO: Forward non-system messages when Runtime exposes a supported injection API.
126
- const graphPath = resolve(prepared.agentDir, 'graph.json');
127
- const graph = JSON.parse(readFileSync(graphPath, 'utf8'));
128
- const firstLlmNode = graph.nodes.find((node) => node.type === 'llm');
129
- if (!firstLlmNode)
130
- return;
131
- firstLlmNode.config.systemPrompt = systemMessage.content;
132
- writeFileSync(graphPath, `${JSON.stringify(graph, null, 2)}\n`, 'utf8');
133
- updateGraphArtifactDigest(prepared, graphPath);
134
- }
135
- function updateGraphArtifactDigest(prepared, graphPath) {
136
- const snapshotPath = resolve(prepared.agentDir, 'snapshot.json');
137
- const snapshot = JSON.parse(readFileSync(snapshotPath, 'utf8'));
138
- const graphArtifact = snapshot.artifacts.find((artifact) => artifact.path === 'graph.json');
139
- if (!graphArtifact)
140
- throw new Error(`Runtime snapshot is missing graph.json: ${snapshotPath}`);
141
- graphArtifact.sha256 = toSha256Hex(sha256(readFileSync(graphPath)));
142
- writeFileSync(snapshotPath, `${JSON.stringify(snapshot, null, 2)}\n`, 'utf8');
143
- }
144
- export function resolveServiceRuntimeEnvironment(projectEnvironment, deploymentContext, projectRoot, sessionPersistence) {
145
- const variables = [
146
- {
147
- key: 'EAP_DEPLOYMENT_CONTEXT',
148
- value: deploymentContext,
149
- description: 'Runtime 的部署上下文,直接取自 eap.config.json 的 runtime.deploymentContext。',
150
- },
151
- {
152
- key: 'EAP_RUNTIME_STORAGE_PROFILE',
153
- value: sessionPersistence ? 'dev' : 'test',
154
- description: '服务的运行时存储模式;默认 test 使用内存存储,启用会话持久化后使用 dev 文件存储。',
155
- },
156
- {
157
- key: 'EAP_LLM_TURN_DIR',
158
- value: resolve(projectRoot, '.eap', 'llm-turns'),
159
- description: '每步 LLM 入参/响应落盘目录(URL、模型、脱敏密钥、提示词)。EAP_LLM_TURN_LOG=0 关闭。',
160
- },
161
- ];
162
- if (sessionPersistence) {
163
- const sessionDirectory = resolve(projectRoot, '.eap', 'sessions');
164
- variables.push({
165
- key: 'EAP_SESSION_DIR',
166
- value: sessionDirectory,
167
- description: 'Runtime 保存持久化会话数据的目录。',
168
- }, {
169
- key: 'EAP_MESSAGE_DIR',
170
- value: resolve(sessionDirectory, 'messages'),
171
- description: 'Runtime 保存持久化会话消息的目录。',
172
- });
173
- }
174
- // `description` 仅用于维护文档;Runtime 只接收 key/value 环境变量映射。
175
- return {
176
- ...projectEnvironment,
177
- ...Object.fromEntries(variables.map(({ key, value }) => [key, value])),
178
- };
179
- }
180
- export function resolveEmbeddedServiceRuntimeEnvironment(runtimeRoot, deploymentContext, sessionPersistence, sessionDirectory, environment) {
181
- const runtimeDirectory = resolve(runtimeRoot);
182
- const storageProfile = sessionPersistence ? 'dev' : 'test';
183
- const resolvedEnvironment = {
184
- ...environment,
185
- EAP_PREINSTALL_ROOT: runtimeDirectory,
186
- EAP_DEPLOYMENT_CONTEXT: deploymentContext,
187
- EAP_RUNTIME_STORAGE_PROFILE: storageProfile,
188
- EAP_LLM_TURN_DIR: resolve(runtimeDirectory, '..', 'llm-turns'),
189
- };
190
- if (sessionPersistence) {
191
- const directory = resolve(sessionDirectory ?? resolve(runtimeDirectory, '..', 'sessions'));
192
- resolvedEnvironment.EAP_SESSION_DIR = directory;
193
- resolvedEnvironment.EAP_MESSAGE_DIR = resolve(directory, 'messages');
194
- }
195
- return resolvedEnvironment;
196
- }
197
- function resolveMaterializedAgentTarget(options) {
198
- const runtimeRoot = assertRegularDirectory(resolve(options.runtimeRoot), 'Embedded Runtime root');
199
- const agentsRoot = assertRegularDirectory(resolve(runtimeRoot, 'agents'), 'Embedded Runtime agents directory');
200
- const agentCode = options.agentCode ?? selectOnlyDirectory(agentsRoot, 'Agent code');
201
- assertDirectorySegment(agentCode, 'Agent code');
202
- const agentRoot = assertRegularDirectory(resolve(agentsRoot, agentCode), `Embedded Agent directory ${agentCode}`);
203
- const version = options.version ?? selectOnlyDirectory(agentRoot, 'Agent version');
204
- assertDirectorySegment(version, 'Agent version');
205
- const agentDir = assertRegularDirectory(resolve(agentRoot, version), `Embedded Agent version directory ${agentCode}@${version}`);
206
- const manifestPath = assertRegularFile(resolve(agentDir, 'agent.manifest.json'), 'Embedded Agent manifest');
207
- const graphPath = assertRegularFile(resolve(agentDir, 'graph.json'), 'Embedded Agent graph');
208
- assertRegularFile(resolve(agentDir, 'dependencies.lock'), 'Embedded Agent dependencies lock');
209
- assertRegularFile(resolve(agentDir, 'snapshot.json'), 'Embedded Agent snapshot');
210
- assertRegularFile(resolve(agentDir, '.ready'), 'Embedded Agent readiness marker');
211
- const manifest = AgentManifestSchema.parse(readJson(manifestPath, 'Embedded Agent manifest'));
212
- if (manifest.code !== agentCode || manifest.version !== version) {
213
- throw new Error(`Embedded Agent identity does not match ${agentCode}@${version}`);
214
- }
215
- GraphSchema.parse(readJson(graphPath, 'Embedded Agent graph'));
216
- const dependencies = DependenciesLockSchema.parse(readJson(resolve(agentDir, 'dependencies.lock'), 'Embedded Agent dependencies lock'));
217
- if (dependencies.agentCode && dependencies.agentCode !== agentCode) {
218
- throw new Error(`Embedded dependencies.lock Agent identity does not match ${agentCode}`);
219
- }
220
- if (dependencies.agentVersion && dependencies.agentVersion !== version) {
221
- throw new Error(`Embedded dependencies.lock version does not match ${version}`);
222
- }
223
- return { root: runtimeRoot, agentCode, version, manifestPath, graphPath };
224
- }
225
- function selectOnlyDirectory(parent, label) {
226
- const directories = readdirSync(parent, { withFileTypes: true })
227
- .filter((entry) => entry.isDirectory())
228
- .map((entry) => entry.name)
229
- .sort((left, right) => left.localeCompare(right));
230
- if (directories.length !== 1) {
231
- throw new Error(`Embedded Runtime requires exactly one ${label}; found ${directories.length}`);
232
- }
233
- return directories[0];
234
- }
235
- function assertRegularDirectory(path, label) {
236
- let stat;
237
- try {
238
- stat = lstatSync(path);
239
- }
240
- catch {
241
- throw new Error(`${label} is missing: ${path}`);
242
- }
243
- if (!stat.isDirectory() || stat.isSymbolicLink()) {
244
- throw new Error(`${label} must be a regular directory: ${path}`);
245
- }
246
- return path;
247
- }
248
- function assertRegularFile(path, label) {
249
- let stat;
250
- try {
251
- stat = lstatSync(path);
252
- }
253
- catch {
254
- throw new Error(`${label} is missing: ${path}`);
255
- }
256
- if (!stat.isFile() || stat.isSymbolicLink()) {
257
- throw new Error(`${label} must be a regular file: ${path}`);
258
- }
259
- return path;
260
- }
261
- function assertDirectorySegment(value, label) {
262
- if (!value || value === '.' || value === '..' || /[\\/]/.test(value)) {
263
- throw new Error(`${label} is not a valid Runtime directory segment: ${value}`);
264
- }
265
- }
266
- function readJson(path, label) {
267
- try {
268
- return JSON.parse(readFileSync(path, 'utf8'));
269
- }
270
- catch (error) {
271
- const reason = error instanceof Error ? error.message : String(error);
272
- throw new Error(`${label} is not valid JSON: ${path} (${reason})`);
273
- }
274
- }
275
- function parsePort(value) {
276
- if (!value)
277
- return 3000;
278
- const port = Number(value);
279
- if (Number.isInteger(port) && port >= 1 && port <= 65535)
280
- return port;
281
- throw new Error(`Invalid EAP_RUNTIME_PORT: ${value}`);
282
- }
283
- //# sourceMappingURL=create-agent-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-agent-service.js","sourceRoot":"","sources":["../../src/service/create-agent-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { type Server } from 'node:http';
2
- import type { AgentService } from './types.js';
3
- export declare function createAgentHttpServer(service: AgentService): Server;
4
- //# sourceMappingURL=http-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../src/service/http-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AAEpE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAcnE"}
@@ -1,89 +0,0 @@
1
- import { createServer } from 'node:http';
2
- export function createAgentHttpServer(service) {
3
- return createServer(async (request, response) => {
4
- try {
5
- await handleRequest(service, request, response);
6
- }
7
- catch (error) {
8
- const message = error instanceof Error ? error.message : String(error);
9
- if (response.headersSent) {
10
- response.write(`event: error\ndata: ${JSON.stringify({ error: message })}\n\n`);
11
- response.end();
12
- }
13
- else {
14
- writeJson(response, 500, { error: message });
15
- }
16
- }
17
- });
18
- }
19
- async function handleRequest(service, request, response) {
20
- const method = request.method ?? 'GET';
21
- const pathname = new URL(request.url ?? '/', 'http://localhost').pathname;
22
- if (method === 'GET' && pathname === '/health') {
23
- writeJson(response, 200, {
24
- status: 'ok',
25
- agentCode: service.target.agentCode,
26
- version: service.target.version,
27
- });
28
- return;
29
- }
30
- const route = /^\/api\/v1\/agents\/([^/]+)\/(invoke|stream)$/.exec(pathname);
31
- if (!route || method !== 'POST') {
32
- writeJson(response, 404, { error: 'Route not found' });
33
- return;
34
- }
35
- const agentCode = decodeURIComponent(route[1]);
36
- if (agentCode !== service.target.agentCode) {
37
- writeJson(response, 404, { error: `Selected Agent is ${service.target.agentCode}` });
38
- return;
39
- }
40
- const body = await readJsonBody(request);
41
- if (typeof body.input !== 'string') {
42
- writeJson(response, 400, { error: 'Request body requires string input' });
43
- return;
44
- }
45
- const options = {
46
- sessionId: stringValue(body.sessionId),
47
- taskId: stringValue(body.taskId),
48
- ...(isRecord(body.config) ? { config: body.config } : {}),
49
- ...(isRecord(body.executionContext)
50
- ? { executionContext: body.executionContext }
51
- : {}),
52
- };
53
- if (route[2] === 'invoke') {
54
- writeJson(response, 200, await service.invoke(body.input, options));
55
- return;
56
- }
57
- response.writeHead(200, {
58
- 'Content-Type': 'text/event-stream; charset=utf-8',
59
- 'Cache-Control': 'no-cache, no-transform',
60
- Connection: 'keep-alive',
61
- });
62
- for await (const event of service.stream(body.input, options)) {
63
- response.write(`event: ${event.type}\ndata: ${JSON.stringify({ ...event.data, correlationId: event.correlationId, taskId: event.taskId, timestamp: event.timestamp })}\n\n`);
64
- }
65
- response.end();
66
- }
67
- async function readJsonBody(request) {
68
- const chunks = [];
69
- for await (const chunk of request)
70
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
71
- const raw = Buffer.concat(chunks).toString('utf8');
72
- if (!raw)
73
- return {};
74
- const body = JSON.parse(raw);
75
- if (!body || typeof body !== 'object' || Array.isArray(body))
76
- throw new Error('Request body must be an object');
77
- return body;
78
- }
79
- function stringValue(value) {
80
- return typeof value === 'string' && value.length > 0 ? value : undefined;
81
- }
82
- function isRecord(value) {
83
- return Boolean(value && typeof value === 'object' && !Array.isArray(value));
84
- }
85
- function writeJson(response, status, body) {
86
- response.writeHead(status, { 'Content-Type': 'application/json; charset=utf-8' });
87
- response.end(JSON.stringify(body));
88
- }
89
- //# sourceMappingURL=http-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/service/http-server.ts"],"names":[],"mappings":"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"}