@onco-foundry/agent-template 0.7.0 → 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/dist/agent_version.d.ts
CHANGED
|
@@ -6,6 +6,11 @@ import type { Tracer } from '@onco-foundry/trace-port';
|
|
|
6
6
|
import type { AgentTemplateCard, TemplateToolDefinition } from './agent_template.ts';
|
|
7
7
|
import type { ResolvedSkillPackage, SkillPackageReference, SkillPackageSummary } from './skill_packages.ts';
|
|
8
8
|
export declare const agentResourceVersionSchema: z.ZodString;
|
|
9
|
+
declare const resourceReferenceSchema: z.ZodObject<{
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
resource: z.ZodString;
|
|
12
|
+
version: z.ZodString;
|
|
13
|
+
}, z.core.$strict>;
|
|
9
14
|
export declare const agentVersionSchema: z.ZodObject<{
|
|
10
15
|
schemaVersion: z.ZodEnum<{
|
|
11
16
|
"agent-config-v1": "agent-config-v1";
|
|
@@ -48,6 +53,11 @@ export declare const agentVersionSchema: z.ZodObject<{
|
|
|
48
53
|
id: z.ZodString;
|
|
49
54
|
version: z.ZodString;
|
|
50
55
|
}, z.core.$strict>>;
|
|
56
|
+
resources: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
57
|
+
name: z.ZodString;
|
|
58
|
+
resource: z.ZodString;
|
|
59
|
+
version: z.ZodString;
|
|
60
|
+
}, z.core.$strict>>>;
|
|
51
61
|
skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
52
62
|
id: z.ZodString;
|
|
53
63
|
version: z.ZodString;
|
|
@@ -65,6 +75,15 @@ export type AgentVersionPromptReference = AgentVersion['prompt'];
|
|
|
65
75
|
export type AgentVersionCommonPromptReference = AgentVersion['commonPrompts'][number];
|
|
66
76
|
export type AgentVersionToolReference = AgentVersion['tools'][number];
|
|
67
77
|
export type AgentVersionMemberReference = AgentVersion['members'][number];
|
|
78
|
+
export type AgentVersionResourceReference = z.infer<typeof resourceReferenceSchema>;
|
|
79
|
+
export type ResolvedAgentResource = AgentVersionResourceReference & {
|
|
80
|
+
checksum: string;
|
|
81
|
+
files: ReadonlyMap<string, string>;
|
|
82
|
+
};
|
|
83
|
+
export type AgentResourceSnapshot = AgentVersionResourceReference & {
|
|
84
|
+
checksum: string;
|
|
85
|
+
files: Record<string, string>;
|
|
86
|
+
};
|
|
68
87
|
export type ResolvedAgentModel = AgentVersionModel & {
|
|
69
88
|
apiKey?: string;
|
|
70
89
|
};
|
|
@@ -82,6 +101,7 @@ export type ResolvedAgentVersion = {
|
|
|
82
101
|
}>;
|
|
83
102
|
tools: AgentVersionToolReference[];
|
|
84
103
|
members: AgentVersionMemberReference[];
|
|
104
|
+
resources?: AgentResourceSnapshot[];
|
|
85
105
|
skills?: SkillPackageSummary[];
|
|
86
106
|
limits?: AgentVersion['limits'];
|
|
87
107
|
};
|
|
@@ -111,6 +131,7 @@ export type ResolvedAgent = {
|
|
|
111
131
|
version: string;
|
|
112
132
|
};
|
|
113
133
|
readSnapshot(): ResolvedAgentSnapshot;
|
|
134
|
+
readResources(): ResolvedAgentResource[];
|
|
114
135
|
readSkills(): ResolvedSkillPackage[];
|
|
115
136
|
};
|
|
116
137
|
export type ResolvedAgentMember = {
|
|
@@ -124,6 +145,7 @@ export type AgentExecutorSpecInput<C> = {
|
|
|
124
145
|
model: ResolvedAgentModel;
|
|
125
146
|
systemPrompt: string;
|
|
126
147
|
tools: TemplateToolDefinition[];
|
|
148
|
+
resources: ResolvedAgentResource[];
|
|
127
149
|
members: ResolvedAgentMember[];
|
|
128
150
|
context: C;
|
|
129
151
|
skills?: ResolvedSkillPackage[];
|
|
@@ -151,6 +173,9 @@ export type AgentVersionPorts<C = unknown> = {
|
|
|
151
173
|
readCommonPrompt(reference: AgentVersionCommonPromptReference, agentId: string): Promise<{
|
|
152
174
|
content: string;
|
|
153
175
|
}>;
|
|
176
|
+
readResource?(reference: AgentVersionResourceReference): Promise<{
|
|
177
|
+
files: ReadonlyMap<string, string>;
|
|
178
|
+
}>;
|
|
154
179
|
createTool(reference: AgentVersionToolReference, context: C): TemplateToolDefinition | Promise<TemplateToolDefinition>;
|
|
155
180
|
resolveExecutor(reference: AgentVersionExecutorReference): AgentVersionExecutor<C>;
|
|
156
181
|
readSkill?(reference: SkillPackageReference): Promise<ResolvedSkillPackage>;
|
|
@@ -162,3 +187,4 @@ export type ResolveAgentVersionInput<C = unknown> = {
|
|
|
162
187
|
promptVersion?: string;
|
|
163
188
|
memberPromptVersions?: Record<string, string>;
|
|
164
189
|
};
|
|
190
|
+
export {};
|
package/dist/agent_version.js
CHANGED
|
@@ -26,6 +26,11 @@ const memberReferenceSchema = z.object({
|
|
|
26
26
|
id: z.string().min(1),
|
|
27
27
|
version: agentResourceVersionSchema,
|
|
28
28
|
}).strict();
|
|
29
|
+
const resourceReferenceSchema = z.object({
|
|
30
|
+
name: z.string().min(1),
|
|
31
|
+
resource: z.string().min(1),
|
|
32
|
+
version: agentResourceVersionSchema,
|
|
33
|
+
}).strict();
|
|
29
34
|
export const agentVersionSchema = z.object({
|
|
30
35
|
schemaVersion: z.enum(['agent-config-v1', 'agent-config-v2']),
|
|
31
36
|
executor: executorReferenceSchema,
|
|
@@ -41,6 +46,7 @@ export const agentVersionSchema = z.object({
|
|
|
41
46
|
commonPrompts: z.array(commonPromptReferenceSchema),
|
|
42
47
|
tools: z.array(localToolReferenceSchema),
|
|
43
48
|
members: z.array(memberReferenceSchema),
|
|
49
|
+
resources: z.array(resourceReferenceSchema).refine(items => new Set(items.map(item => item.name)).size === items.length, '业务资源名称不能重复').optional(),
|
|
44
50
|
skills: z.array(z.object({ id: z.string().regex(/^[a-z][a-z0-9-]{0,79}$/), version: agentResourceVersionSchema }).strict()).max(32).optional(),
|
|
45
51
|
limits: z.object({
|
|
46
52
|
maxTurns: z.number().int().positive().optional(),
|
|
@@ -39,6 +39,9 @@ export const createAgentVersionResolver = (ports) => {
|
|
|
39
39
|
prompt: { ...record.prompt },
|
|
40
40
|
systemPromptChecksum: record.systemPromptChecksum,
|
|
41
41
|
commonPrompts: record.commonPrompts.map(({ content: _content, ...part }) => ({ ...part })),
|
|
42
|
+
...(record.resources.length ? { resources: record.resources.map(({ files, ...reference }) => ({
|
|
43
|
+
...reference, files: Object.fromEntries([...files].map(([name, content]) => [name, checksum(content)])),
|
|
44
|
+
})) } : {}),
|
|
42
45
|
tools: record.config.tools.map(tool => ({ ...tool })),
|
|
43
46
|
members: record.config.members.map(member => ({ ...member })),
|
|
44
47
|
...(record.skills === undefined ? {} : { skills: record.skills.map(({ id, version, name, description, checksum }) => ({ id, version, name, description, checksum })) }),
|
|
@@ -118,6 +121,15 @@ export const createAgentVersionResolver = (ports) => {
|
|
|
118
121
|
const { content } = await ports.readCommonPrompt(reference, agentId);
|
|
119
122
|
return { ...reference, content, checksum: checksum(content) };
|
|
120
123
|
}));
|
|
124
|
+
const resources = await Promise.all((loaded.config.resources ?? []).map(async (reference) => {
|
|
125
|
+
if (!ports.readResource)
|
|
126
|
+
throw new AppError(`未配置业务资源读取端口:${reference.name}`);
|
|
127
|
+
const resource = await ports.readResource(reference);
|
|
128
|
+
const files = new Map([...resource.files].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0));
|
|
129
|
+
if (!files.size)
|
|
130
|
+
throw new AppError(`业务资源没有文件:${reference.resource}@${reference.version}`);
|
|
131
|
+
return { ...reference, files, checksum: checksum(JSON.stringify([...files])) };
|
|
132
|
+
}));
|
|
121
133
|
const ordered = [...commonPrompts].sort((a, b) => a.placement === b.placement
|
|
122
134
|
? a.order - b.order || a.id.localeCompare(b.id)
|
|
123
135
|
: a.placement === 'before' ? -1 : 1);
|
|
@@ -137,6 +149,7 @@ export const createAgentVersionResolver = (ports) => {
|
|
|
137
149
|
model: { ...loaded.config.model, ...modelCredential },
|
|
138
150
|
prompt: { ...promptReference, checksum: checksum(prompt.content) },
|
|
139
151
|
commonPrompts,
|
|
152
|
+
resources,
|
|
140
153
|
systemPrompt,
|
|
141
154
|
systemPromptChecksum: checksum(systemPrompt),
|
|
142
155
|
...(skills === undefined ? {} : { skills }),
|
|
@@ -156,6 +169,7 @@ export const createAgentVersionResolver = (ports) => {
|
|
|
156
169
|
systemPrompt: record.systemPrompt,
|
|
157
170
|
...(record.skills === undefined ? {} : { skills: structuredClone(record.skills) }),
|
|
158
171
|
tools,
|
|
172
|
+
resources: structuredClone(record.resources),
|
|
159
173
|
members: await Promise.all(record.config.members.map(async (member) => ({
|
|
160
174
|
id: member.id,
|
|
161
175
|
version: member.version,
|
|
@@ -192,6 +206,7 @@ export const createAgentVersionResolver = (ports) => {
|
|
|
192
206
|
},
|
|
193
207
|
readSystemPrompt: () => ({ content: record.systemPrompt, version: record.prompt.version }),
|
|
194
208
|
readSnapshot: () => structuredClone(snapshotFor(agentId)),
|
|
209
|
+
readResources: () => structuredClone(record.resources),
|
|
195
210
|
readSkills: () => structuredClone(record.skills ?? []),
|
|
196
211
|
};
|
|
197
212
|
record.agent = agent;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TemplateToolDefinition } from './agent_template.ts';
|
|
2
2
|
import { type SkillPackageFiles, type SkillPackageReference } from './skill_packages.ts';
|
|
3
|
-
import type { AgentVersion, AgentVersionCommonPromptReference, AgentVersionExecutor, AgentVersionPorts, AgentVersionPromptReference } from './agent_version.ts';
|
|
3
|
+
import type { AgentVersion, AgentVersionCommonPromptReference, AgentVersionExecutor, AgentVersionPorts, AgentVersionPromptReference, AgentVersionResourceReference } from './agent_version.ts';
|
|
4
4
|
export declare const createFakeAgentVersionPorts: <C>(options: {
|
|
5
5
|
executors: Record<string, AgentVersionExecutor<C>>;
|
|
6
6
|
modelApiKey?: string;
|
|
@@ -8,6 +8,7 @@ export declare const createFakeAgentVersionPorts: <C>(options: {
|
|
|
8
8
|
}) => AgentVersionPorts<C> & {
|
|
9
9
|
writeAgentVersion(agentId: string, version: string, config: AgentVersion, activate?: boolean): Promise<void>;
|
|
10
10
|
activateAgentVersion(agentId: string, version: string): Promise<void>;
|
|
11
|
+
setResource(reference: AgentVersionResourceReference, files: Record<string, string>): void;
|
|
11
12
|
setPrompt(reference: AgentVersionPromptReference, content: string): void;
|
|
12
13
|
setCommonPrompt(reference: AgentVersionCommonPromptReference, content: string): void;
|
|
13
14
|
writeSkill(reference: SkillPackageReference, files: SkillPackageFiles): Promise<void>;
|
|
@@ -9,6 +9,7 @@ export const createFakeAgentVersionPorts = (options) => {
|
|
|
9
9
|
const stores = new Map();
|
|
10
10
|
const prompts = new Map();
|
|
11
11
|
const commonPrompts = new Map();
|
|
12
|
+
const resources = new Map();
|
|
12
13
|
const skillStores = new Map();
|
|
13
14
|
const skills = createSkillPackages({ storeFor: id => {
|
|
14
15
|
if (!skillStores.has(id))
|
|
@@ -39,6 +40,13 @@ export const createFakeAgentVersionPorts = (options) => {
|
|
|
39
40
|
throw new AppError(`fake 共同 prompt 不存在:${commonPromptKey(reference)}`);
|
|
40
41
|
return { content };
|
|
41
42
|
},
|
|
43
|
+
readResource: async (reference) => {
|
|
44
|
+
const files = resources.get(promptKey(reference));
|
|
45
|
+
if (!files)
|
|
46
|
+
throw new AppError(`fake 业务资源不存在:${promptKey(reference)}`);
|
|
47
|
+
return { files: new Map(Object.entries(files)) };
|
|
48
|
+
},
|
|
49
|
+
setResource(reference, files) { resources.set(promptKey(reference), { ...files }); },
|
|
42
50
|
createTool(reference, context) {
|
|
43
51
|
const create = options.tools?.[toolKey(reference)];
|
|
44
52
|
if (create === undefined)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { clampThinkingBudgetTokens, defineAgentTemplate, promptManifestSchema, type AgentTemplate, type AgentTemplateCard, type AgentTemplateDeclaration, type CreateTemplateAgentOptions, type PromptManifestAdapter, type TemplateToolDefinition, } from './agent_template.ts';
|
|
2
2
|
export type { CapabilityDelegation } from '@onco-foundry/agent-runtime';
|
|
3
3
|
export { createAgentSpecExecutor, type AgentSpecExecutorDeclaration } from './agent_spec_executor.ts';
|
|
4
|
-
export { agentResourceVersionSchema, agentVersionSchema, type AgentVersion, type AgentVersionCommonPromptReference, type AgentVersionExecutor, type AgentVersionExecutorReference, type AgentVersionMemberReference, type AgentVersionModel, type AgentVersionPorts, type AgentVersionPromptReference, type AgentVersionToolReference, type CreateResolvedAgentSpecOptions, type ResolveAgentVersionInput, type ResolvedAgent, type ResolvedAgentMember, type ResolvedAgentModel, type ResolvedAgentSnapshot, type ResolvedAgentVersion, } from './agent_version.ts';
|
|
4
|
+
export { agentResourceVersionSchema, agentVersionSchema, type AgentVersion, type AgentVersionResourceReference, type AgentResourceSnapshot, type ResolvedAgentResource, type AgentVersionCommonPromptReference, type AgentVersionExecutor, type AgentVersionExecutorReference, type AgentVersionMemberReference, type AgentVersionModel, type AgentVersionPorts, type AgentVersionPromptReference, type AgentVersionToolReference, type CreateResolvedAgentSpecOptions, type ResolveAgentVersionInput, type ResolvedAgent, type ResolvedAgentMember, type ResolvedAgentModel, type ResolvedAgentSnapshot, type ResolvedAgentVersion, } from './agent_version.ts';
|
|
5
5
|
export { createAgentVersionResolver } from './agent_version_resolver.ts';
|
|
6
6
|
export { createFakeAgentVersionPorts } from './fake_agent_version_ports.ts';
|
|
7
7
|
export { createSkillPackages, type SkillPackageFiles, type SkillPackageReference, type SkillPackageSummary, type ResolvedSkillPackage } from './skill_packages.ts';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onco-foundry/agent-template",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"yaml": "^2.9.1",
|
|
17
17
|
"zod": "^4.4.3",
|
|
18
18
|
"@onco-foundry/agent-runtime": "0.3.0",
|
|
19
|
-
"@onco-foundry/
|
|
20
|
-
"@onco-foundry/capability-registry": "0.1.1",
|
|
19
|
+
"@onco-foundry/trace-port": "0.3.3",
|
|
21
20
|
"@onco-foundry/resource-versioning": "0.3.0",
|
|
22
|
-
"@onco-foundry/
|
|
21
|
+
"@onco-foundry/errors": "0.1.1",
|
|
22
|
+
"@onco-foundry/capability-registry": "0.1.1"
|
|
23
23
|
},
|
|
24
24
|
"publishConfig": {
|
|
25
25
|
"access": "public"
|