@downcity/agent 1.1.11 → 1.1.12
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/bin/index.d.ts +1 -1
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js.map +1 -1
- package/bin/sdk/Agent.d.ts +11 -6
- package/bin/sdk/Agent.d.ts.map +1 -1
- package/bin/sdk/Agent.js +60 -16
- package/bin/sdk/Agent.js.map +1 -1
- package/bin/sdk/AgentSdkTypes.d.ts +95 -0
- package/bin/sdk/AgentSdkTypes.d.ts.map +1 -1
- package/bin/sdk/RemoteAgent.d.ts +3 -3
- package/bin/sdk/RemoteAgent.d.ts.map +1 -1
- package/bin/sdk/RemoteAgent.js +5 -2
- package/bin/sdk/RemoteAgent.js.map +1 -1
- package/bin/sdk/SdkSessionSystemComposer.d.ts +52 -19
- package/bin/sdk/SdkSessionSystemComposer.d.ts.map +1 -1
- package/bin/sdk/SdkSessionSystemComposer.js +102 -48
- package/bin/sdk/SdkSessionSystemComposer.js.map +1 -1
- package/bin/sdk/Session.d.ts +15 -13
- package/bin/sdk/Session.d.ts.map +1 -1
- package/bin/sdk/Session.js +47 -25
- package/bin/sdk/Session.js.map +1 -1
- package/bin/sdk/SessionMetadata.d.ts +4 -0
- package/bin/sdk/SessionMetadata.d.ts.map +1 -1
- package/bin/sdk/SessionMetadata.js +16 -0
- package/bin/sdk/SessionMetadata.js.map +1 -1
- package/bin/session/types/SessionHistoryMeta.d.ts +2 -0
- package/bin/session/types/SessionHistoryMeta.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +4 -0
- package/src/sdk/Agent.ts +70 -18
- package/src/sdk/AgentSdkTypes.ts +113 -0
- package/src/sdk/RemoteAgent.ts +10 -4
- package/src/sdk/SdkSessionSystemComposer.ts +165 -77
- package/src/sdk/Session.ts +61 -32
- package/src/sdk/SessionMetadata.ts +18 -0
- package/src/session/types/SessionHistoryMeta.ts +2 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -11,6 +11,19 @@ function normalizeModelLabel(input) {
|
|
|
11
11
|
const label = typeof input === "string" ? input.trim() : "";
|
|
12
12
|
return label || undefined;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* 读取当前系统时区。
|
|
16
|
+
*/
|
|
17
|
+
export function resolveSystemTimezone() {
|
|
18
|
+
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
19
|
+
return typeof timezone === "string" && timezone.trim()
|
|
20
|
+
? timezone.trim()
|
|
21
|
+
: "UTC";
|
|
22
|
+
}
|
|
23
|
+
function normalizeTimezone(input) {
|
|
24
|
+
const timezone = typeof input === "string" ? input.trim() : "";
|
|
25
|
+
return timezone || undefined;
|
|
26
|
+
}
|
|
14
27
|
/**
|
|
15
28
|
* 从模型实例推导轻量可读标签。
|
|
16
29
|
*/
|
|
@@ -49,6 +62,7 @@ export async function readSdkSessionMetadata(input) {
|
|
|
49
62
|
createdAt: typeof raw.createdAt === "number" && Number.isFinite(raw.createdAt)
|
|
50
63
|
? raw.createdAt
|
|
51
64
|
: Date.now(),
|
|
65
|
+
timezone: normalizeTimezone(raw.timezone) || resolveSystemTimezone(),
|
|
52
66
|
updatedAt: typeof raw.updatedAt === "number" && Number.isFinite(raw.updatedAt)
|
|
53
67
|
? raw.updatedAt
|
|
54
68
|
: 0,
|
|
@@ -82,6 +96,7 @@ export async function readSdkSessionMetadata(input) {
|
|
|
82
96
|
sessionId: input.sessionId,
|
|
83
97
|
agentId: input.agentId,
|
|
84
98
|
createdAt: Date.now(),
|
|
99
|
+
timezone: resolveSystemTimezone(),
|
|
85
100
|
updatedAt: 0,
|
|
86
101
|
pinnedSkillIds: [],
|
|
87
102
|
};
|
|
@@ -105,6 +120,7 @@ export async function patchSdkSessionModelLabel(input) {
|
|
|
105
120
|
...current,
|
|
106
121
|
agentId: input.agentId,
|
|
107
122
|
createdAt: typeof current.createdAt === "number" ? current.createdAt : Date.now(),
|
|
123
|
+
timezone: normalizeTimezone(current.timezone) || resolveSystemTimezone(),
|
|
108
124
|
updatedAt: Date.now(),
|
|
109
125
|
...(modelLabel
|
|
110
126
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionMetadata.js","sourceRoot":"","sources":["../../src/sdk/SessionMetadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionMetadata.js","sourceRoot":"","sources":["../../src/sdk/SessionMetadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ export type SessionHistoryMetaV1 = {
|
|
|
25
25
|
agentId?: string;
|
|
26
26
|
/** 当前 session 首次创建时间戳(ms)。 */
|
|
27
27
|
createdAt?: number;
|
|
28
|
+
/** 当前 session 初始化时解析到的系统时区。 */
|
|
29
|
+
timezone?: string;
|
|
28
30
|
/** 最近一次更新元信息的时间戳(ms)。 */
|
|
29
31
|
updatedAt: number;
|
|
30
32
|
/** 固定注入到 Session 上下文的 skill id 列表。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionHistoryMeta.d.ts","sourceRoot":"","sources":["../../../src/session/types/SessionHistoryMeta.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB;IACjB,CAAC,EAAE,CAAC,CAAC;IACL,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"SessionHistoryMeta.d.ts","sourceRoot":"","sources":["../../../src/session/types/SessionHistoryMeta.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB;IACjB,CAAC,EAAE,CAAC,CAAC;IACL,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -20,6 +20,10 @@ export type {
|
|
|
20
20
|
AgentSessionRunResult,
|
|
21
21
|
AgentSessionSetInput,
|
|
22
22
|
AgentSessionStreamEvent,
|
|
23
|
+
AgentSessionSystemBlock,
|
|
24
|
+
AgentSessionSystemBlockSource,
|
|
25
|
+
AgentSessionSystemSessionInfo,
|
|
26
|
+
AgentSessionSystemSnapshot,
|
|
23
27
|
} from "./sdk/AgentSdkTypes.js";
|
|
24
28
|
|
|
25
29
|
// 服务与插件作者 API
|
package/src/sdk/Agent.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Agent SDK 本地入口。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - `new Agent({ id, path, tools, services, plugins })` 只做同步装配,不在构造阶段启动任何 I/O。
|
|
5
|
+
* - `new Agent({ id, path, instruction, tools, services, plugins })` 只做同步装配,不在构造阶段启动任何 I/O。
|
|
6
6
|
* - session、HTTP、RPC、service lifecycle 都按需异步初始化。
|
|
7
7
|
* - SDK Agent 通过最小 `AgentContext` 适配层复用现有 service/plugin/chat 运行协议,而不是重复实现一套执行链。
|
|
8
8
|
*/
|
|
@@ -26,9 +26,10 @@ import type {
|
|
|
26
26
|
import type {
|
|
27
27
|
AgentOptions,
|
|
28
28
|
AgentSessionMetadata,
|
|
29
|
+
AgentSessionSystemBlock,
|
|
29
30
|
} from "@/sdk/AgentSdkTypes.js";
|
|
30
31
|
import { SdkSession } from "@/sdk/Session.js";
|
|
31
|
-
import {
|
|
32
|
+
import { DEFAULT_SHIP_PROMPTS } from "@session/composer/system/default/SystemDomain.js";
|
|
32
33
|
import { getSdkAgentSessionsRootDirPath } from "@/sdk/Paths.js";
|
|
33
34
|
import { SdkAgentHttpServer } from "@/sdk/HttpServer.js";
|
|
34
35
|
import { SdkAgentRpcServer } from "@/sdk/RpcServer.js";
|
|
@@ -70,6 +71,41 @@ function createFallbackSdkConfig(agentId: string): DowncityConfig {
|
|
|
70
71
|
} as DowncityConfig;
|
|
71
72
|
}
|
|
72
73
|
|
|
74
|
+
function normalizeInstructionInput(input: string | string[] | undefined): string[] {
|
|
75
|
+
const items = Array.isArray(input) ? input : typeof input === "string" ? [input] : [];
|
|
76
|
+
return items
|
|
77
|
+
.map((item) => String(item || "").trim())
|
|
78
|
+
.filter((item) => item.length > 0);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function createCoreInstructionContent(projectRoot: string): string {
|
|
82
|
+
const currentYear = String(new Date().getFullYear());
|
|
83
|
+
return DEFAULT_SHIP_PROMPTS
|
|
84
|
+
.replaceAll("{{project_path}}", projectRoot)
|
|
85
|
+
.replaceAll("{{project_root}}", projectRoot)
|
|
86
|
+
.replaceAll("{{current_year}}", currentYear);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function createInstructionSystemBlocks(
|
|
90
|
+
instruction: string[],
|
|
91
|
+
projectRoot: string,
|
|
92
|
+
): AgentSessionSystemBlock[] {
|
|
93
|
+
if (instruction.length === 0) {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
source: "core",
|
|
97
|
+
name: "default",
|
|
98
|
+
content: createCoreInstructionContent(projectRoot),
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
return instruction.map((content, index) => ({
|
|
103
|
+
source: "instruction" as const,
|
|
104
|
+
name: instruction.length === 1 ? "agent" : `agent:${index + 1}`,
|
|
105
|
+
content,
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
|
|
73
109
|
/**
|
|
74
110
|
* SDK 本地 Agent。
|
|
75
111
|
*/
|
|
@@ -90,7 +126,7 @@ export class Agent {
|
|
|
90
126
|
private readonly pluginSystemProviders: Plugin[];
|
|
91
127
|
private readonly config: DowncityConfig;
|
|
92
128
|
private readonly platform: AgentPlatformRuntime;
|
|
93
|
-
private
|
|
129
|
+
private instruction: string[];
|
|
94
130
|
private servicesStartPromise: Promise<void> | null = null;
|
|
95
131
|
|
|
96
132
|
constructor(options: AgentOptions) {
|
|
@@ -109,7 +145,7 @@ export class Agent {
|
|
|
109
145
|
this.logger = new Logger();
|
|
110
146
|
this.logger.bindProjectRoot(this.path);
|
|
111
147
|
this.platform = options.platform || EMPTY_SDK_PLATFORM;
|
|
112
|
-
this.
|
|
148
|
+
this.instruction = normalizeInstructionInput(options.instruction);
|
|
113
149
|
this.config = this.loadConfig();
|
|
114
150
|
this.services = this.createServiceMap(options.services || []);
|
|
115
151
|
this.runtime = this.createRuntime();
|
|
@@ -176,10 +212,14 @@ export class Agent {
|
|
|
176
212
|
}
|
|
177
213
|
|
|
178
214
|
/**
|
|
179
|
-
*
|
|
215
|
+
* 更新当前 SDK Agent 的静态基础指令。
|
|
216
|
+
*
|
|
217
|
+
* 关键点(中文)
|
|
218
|
+
* - instruction 不做动态变量替换。
|
|
219
|
+
* - 已创建的 session 后续 run 会读取最新 instruction blocks。
|
|
180
220
|
*/
|
|
181
|
-
|
|
182
|
-
this.
|
|
221
|
+
setInstruction(input: string | string[]): void {
|
|
222
|
+
this.instruction = normalizeInstructionInput(input);
|
|
183
223
|
}
|
|
184
224
|
|
|
185
225
|
private loadConfig(): DowncityConfig {
|
|
@@ -252,8 +292,12 @@ export class Agent {
|
|
|
252
292
|
};
|
|
253
293
|
}
|
|
254
294
|
|
|
255
|
-
private
|
|
256
|
-
|
|
295
|
+
private loadInstructionSystemBlocks(): AgentSessionSystemBlock[] {
|
|
296
|
+
return createInstructionSystemBlocks(this.instruction, this.path);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
private async loadPluginSystemBlocks(): Promise<AgentSessionSystemBlock[]> {
|
|
300
|
+
const out: AgentSessionSystemBlock[] = [];
|
|
257
301
|
for (const plugin of this.pluginSystemProviders) {
|
|
258
302
|
if (typeof plugin.system !== "function") continue;
|
|
259
303
|
try {
|
|
@@ -264,7 +308,11 @@ export class Agent {
|
|
|
264
308
|
}
|
|
265
309
|
const text = String(await plugin.system(this.serviceContext)).trim();
|
|
266
310
|
if (!text) continue;
|
|
267
|
-
out.push(
|
|
311
|
+
out.push({
|
|
312
|
+
source: "plugin",
|
|
313
|
+
name: plugin.name,
|
|
314
|
+
content: text,
|
|
315
|
+
});
|
|
268
316
|
} catch {
|
|
269
317
|
// 单个 plugin system 失败不应阻断 SDK session 主链路。
|
|
270
318
|
}
|
|
@@ -272,14 +320,18 @@ export class Agent {
|
|
|
272
320
|
return out;
|
|
273
321
|
}
|
|
274
322
|
|
|
275
|
-
private async
|
|
276
|
-
const out:
|
|
323
|
+
private async loadServiceSystemBlocks(): Promise<AgentSessionSystemBlock[]> {
|
|
324
|
+
const out: AgentSessionSystemBlock[] = [];
|
|
277
325
|
for (const service of this.services.values()) {
|
|
278
326
|
if (typeof service.system !== "function") continue;
|
|
279
327
|
try {
|
|
280
328
|
const text = String(await service.system(this.serviceContext)).trim();
|
|
281
329
|
if (!text) continue;
|
|
282
|
-
out.push(
|
|
330
|
+
out.push({
|
|
331
|
+
source: "service",
|
|
332
|
+
name: service.name,
|
|
333
|
+
content: text,
|
|
334
|
+
});
|
|
283
335
|
} catch {
|
|
284
336
|
// 单个 service system 失败不应阻断 SDK session 主链路。
|
|
285
337
|
}
|
|
@@ -295,7 +347,7 @@ export class Agent {
|
|
|
295
347
|
config: this.config,
|
|
296
348
|
env: {},
|
|
297
349
|
globalEnv: {},
|
|
298
|
-
systems: this.
|
|
350
|
+
systems: this.instruction,
|
|
299
351
|
paths: createAgentPathRuntime(this.path),
|
|
300
352
|
pluginConfig: createAgentPluginConfigRuntime(this.path),
|
|
301
353
|
platform: this.platform,
|
|
@@ -326,7 +378,7 @@ export class Agent {
|
|
|
326
378
|
config: this.config,
|
|
327
379
|
env: {},
|
|
328
380
|
globalEnv: {},
|
|
329
|
-
systems: this.
|
|
381
|
+
systems: this.instruction,
|
|
330
382
|
paths: this.runtime.paths,
|
|
331
383
|
pluginConfig: this.runtime.pluginConfig,
|
|
332
384
|
platform: this.platform,
|
|
@@ -409,9 +461,9 @@ export class Agent {
|
|
|
409
461
|
sessionId: resolvedSessionId,
|
|
410
462
|
tools: this.tools,
|
|
411
463
|
logger: this.logger,
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
464
|
+
getInstructionSystemBlocks: () => this.loadInstructionSystemBlocks(),
|
|
465
|
+
getServiceSystemBlocks: () => this.loadServiceSystemBlocks(),
|
|
466
|
+
getPluginSystemBlocks: () => this.loadPluginSystemBlocks(),
|
|
415
467
|
});
|
|
416
468
|
this.sessionsById.set(resolvedSessionId, created);
|
|
417
469
|
return created;
|
package/src/sdk/AgentSdkTypes.ts
CHANGED
|
@@ -41,6 +41,16 @@ export interface AgentOptions {
|
|
|
41
41
|
*/
|
|
42
42
|
tools?: Record<string, Tool>;
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* 调用方显式传入的静态基础指令。
|
|
46
|
+
*
|
|
47
|
+
* 关键点(中文)
|
|
48
|
+
* - `instruction` 是稳定、缓存友好的 system 前缀,不做动态变量替换。
|
|
49
|
+
* - SDK 不主动读取 `PROFILE.md` / `SOUL.md`;这类项目文件应由 city 或调用方读取后传入。
|
|
50
|
+
* - 未传入时,SDK 会使用包内最小 core instruction 作为 fallback。
|
|
51
|
+
*/
|
|
52
|
+
instruction?: string | string[];
|
|
53
|
+
|
|
44
54
|
/**
|
|
45
55
|
* 当前 agent 显式持有的 service 实例集合。
|
|
46
56
|
*
|
|
@@ -246,6 +256,109 @@ export type AgentSessionStreamEvent =
|
|
|
246
256
|
error: string;
|
|
247
257
|
};
|
|
248
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Session system block 来源类型。
|
|
261
|
+
*/
|
|
262
|
+
export type AgentSessionSystemBlockSource =
|
|
263
|
+
| "core"
|
|
264
|
+
| "instruction"
|
|
265
|
+
| "service"
|
|
266
|
+
| "plugin"
|
|
267
|
+
| "session";
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Session system prompt 的单个组成块。
|
|
271
|
+
*/
|
|
272
|
+
export interface AgentSessionSystemBlock {
|
|
273
|
+
/**
|
|
274
|
+
* 当前 block 的来源层级。
|
|
275
|
+
*/
|
|
276
|
+
source: AgentSessionSystemBlockSource;
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* 当前 block 在来源层级内的名称。
|
|
280
|
+
*
|
|
281
|
+
* 说明(中文)
|
|
282
|
+
* - `instruction` 通常使用 `agent`。
|
|
283
|
+
* - `service` / `plugin` 使用对应 service/plugin 名称。
|
|
284
|
+
* - `core` 使用 `default`。
|
|
285
|
+
* - `session` 使用当前 session 上下文名称。
|
|
286
|
+
*/
|
|
287
|
+
name: string;
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* 已归一化后的 system 文本内容。
|
|
291
|
+
*
|
|
292
|
+
* 关键点(中文)
|
|
293
|
+
* - SDK 不对 instruction 做动态变量替换。
|
|
294
|
+
* - 动态上下文应由调用方放入 user message。
|
|
295
|
+
*/
|
|
296
|
+
content: string;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* 当前 session 的稳定上下文信息。
|
|
301
|
+
*/
|
|
302
|
+
export interface AgentSessionSystemSessionInfo {
|
|
303
|
+
/**
|
|
304
|
+
* 当前 session 所属 agentId。
|
|
305
|
+
*/
|
|
306
|
+
agentId: string;
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* 当前 session 唯一标识。
|
|
310
|
+
*/
|
|
311
|
+
sessionId: string;
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* 当前 agent 绑定的项目根目录。
|
|
315
|
+
*/
|
|
316
|
+
projectRoot: string;
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* 当前 session 首次创建时间。
|
|
320
|
+
*
|
|
321
|
+
* 关键点(中文)
|
|
322
|
+
* - 这是 session 初始化时落盘的稳定参考时间,按 Date/ISO 字符串对外展示。
|
|
323
|
+
* - 它不是每轮运行的当前时间,不会随着 `run()` / `stream()` 改变。
|
|
324
|
+
*/
|
|
325
|
+
createdAt: string;
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* 当前 session 初始化时解析到的系统时区。
|
|
329
|
+
*
|
|
330
|
+
* 关键点(中文)
|
|
331
|
+
* - 这是 session 级参考时区,随创建信息一起固定。
|
|
332
|
+
* - 它不是每轮运行重新解析的动态时区。
|
|
333
|
+
*/
|
|
334
|
+
timezone: string;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* 当前 session 生效的完整 system prompt 快照。
|
|
339
|
+
*/
|
|
340
|
+
export interface AgentSessionSystemSnapshot {
|
|
341
|
+
/**
|
|
342
|
+
* 当前 sessionId。
|
|
343
|
+
*/
|
|
344
|
+
sessionId: string;
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* 当前 session 的稳定上下文信息。
|
|
348
|
+
*
|
|
349
|
+
* 关键点(中文)
|
|
350
|
+
* - 这里包含 session 创建时间这类稳定参考信息。
|
|
351
|
+
* - 这里不包含当前时间、轮次、用户输入等每轮变化的数据。
|
|
352
|
+
* - 每轮动态信息应由调用方放入 user message,避免破坏 instruction 缓存命中。
|
|
353
|
+
*/
|
|
354
|
+
session: AgentSessionSystemSessionInfo;
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* 当前生效的 system blocks,按进入模型的顺序排列。
|
|
358
|
+
*/
|
|
359
|
+
blocks: AgentSessionSystemBlock[];
|
|
360
|
+
}
|
|
361
|
+
|
|
249
362
|
/**
|
|
250
363
|
* Session 元数据列表项。
|
|
251
364
|
*/
|
package/src/sdk/RemoteAgent.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type {
|
|
|
12
12
|
AgentSessionRunResult,
|
|
13
13
|
AgentSessionSetInput,
|
|
14
14
|
AgentSessionStreamEvent,
|
|
15
|
+
AgentSessionSystemSnapshot,
|
|
15
16
|
RemoteAgentOptions,
|
|
16
17
|
} from "@/sdk/AgentSdkTypes.js";
|
|
17
18
|
import type { SessionMessageV1 } from "@/session/types/SessionMessages.js";
|
|
@@ -78,18 +79,23 @@ class RemoteSession {
|
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
/**
|
|
81
|
-
* 读取远程 session 当前生效的 system prompt
|
|
82
|
+
* 读取远程 session 当前生效的 system prompt 快照。
|
|
82
83
|
*/
|
|
83
|
-
async system(): Promise<
|
|
84
|
+
async system(): Promise<AgentSessionSystemSnapshot> {
|
|
84
85
|
const response = await fetch(
|
|
85
86
|
`${this.baseUrl}/api/sdk/sessions/${encodeURIComponent(this.id)}/system`,
|
|
86
87
|
);
|
|
87
88
|
const payload = (await response.json()) as {
|
|
88
89
|
success?: boolean;
|
|
89
90
|
error?: string;
|
|
90
|
-
system?:
|
|
91
|
+
system?: AgentSessionSystemSnapshot;
|
|
91
92
|
};
|
|
92
|
-
if (
|
|
93
|
+
if (
|
|
94
|
+
!response.ok ||
|
|
95
|
+
!payload.success ||
|
|
96
|
+
!payload.system ||
|
|
97
|
+
!Array.isArray(payload.system.blocks)
|
|
98
|
+
) {
|
|
93
99
|
throw new Error(String(payload.error || "Remote session system failed"));
|
|
94
100
|
}
|
|
95
101
|
return payload.system;
|