@aigne/core 1.72.0-beta.3 → 1.72.0-beta.5

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 (99) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/lib/cjs/agents/agent.d.ts +31 -1
  3. package/lib/cjs/agents/agent.js +13 -0
  4. package/lib/cjs/agents/ai-agent.d.ts +7 -0
  5. package/lib/cjs/agents/ai-agent.js +85 -3
  6. package/lib/cjs/agents/image-agent.d.ts +17 -1
  7. package/lib/cjs/agents/image-agent.js +16 -0
  8. package/lib/cjs/agents/image-model.d.ts +4 -4
  9. package/lib/cjs/agents/mcp-agent.d.ts +17 -0
  10. package/lib/cjs/agents/mcp-agent.js +18 -0
  11. package/lib/cjs/agents/team-agent.d.ts +55 -0
  12. package/lib/cjs/agents/team-agent.js +31 -0
  13. package/lib/cjs/agents/transform-agent.d.ts +12 -0
  14. package/lib/cjs/agents/transform-agent.js +13 -0
  15. package/lib/cjs/agents/video-model.d.ts +4 -4
  16. package/lib/cjs/loader/agent-yaml.d.ts +5 -67
  17. package/lib/cjs/loader/agent-yaml.js +4 -139
  18. package/lib/cjs/loader/agents.d.ts +4 -0
  19. package/lib/cjs/loader/agents.js +17 -0
  20. package/lib/cjs/loader/index.d.ts +18 -14
  21. package/lib/cjs/loader/index.js +20 -81
  22. package/lib/cjs/loader/schema.d.ts +21 -6
  23. package/lib/cjs/loader/schema.js +60 -1
  24. package/lib/cjs/prompt/prompt-builder.js +0 -1
  25. package/lib/cjs/prompt/skills/afs/agent-skill/agent-skill.d.ts +17 -0
  26. package/lib/cjs/prompt/skills/afs/agent-skill/agent-skill.js +63 -0
  27. package/lib/cjs/prompt/skills/afs/agent-skill/skill-loader.d.ts +13 -0
  28. package/lib/cjs/prompt/skills/afs/agent-skill/skill-loader.js +61 -0
  29. package/lib/cjs/prompt/skills/afs/delete.js +15 -3
  30. package/lib/cjs/prompt/skills/afs/edit.d.ts +6 -9
  31. package/lib/cjs/prompt/skills/afs/edit.js +85 -59
  32. package/lib/cjs/prompt/skills/afs/exec.js +17 -6
  33. package/lib/cjs/prompt/skills/afs/index.js +4 -1
  34. package/lib/cjs/prompt/skills/afs/list.js +26 -10
  35. package/lib/cjs/prompt/skills/afs/read.d.ts +6 -2
  36. package/lib/cjs/prompt/skills/afs/read.js +62 -15
  37. package/lib/cjs/prompt/skills/afs/rename.js +18 -4
  38. package/lib/cjs/prompt/skills/afs/search.js +21 -5
  39. package/lib/cjs/prompt/skills/afs/write.js +20 -6
  40. package/lib/cjs/prompt/template.d.ts +23 -23
  41. package/lib/dts/agents/agent.d.ts +31 -1
  42. package/lib/dts/agents/ai-agent.d.ts +7 -0
  43. package/lib/dts/agents/image-agent.d.ts +17 -1
  44. package/lib/dts/agents/image-model.d.ts +4 -4
  45. package/lib/dts/agents/mcp-agent.d.ts +17 -0
  46. package/lib/dts/agents/team-agent.d.ts +55 -0
  47. package/lib/dts/agents/transform-agent.d.ts +12 -0
  48. package/lib/dts/agents/video-model.d.ts +4 -4
  49. package/lib/dts/aigne/context.d.ts +2 -2
  50. package/lib/dts/loader/agent-yaml.d.ts +5 -67
  51. package/lib/dts/loader/agents.d.ts +4 -0
  52. package/lib/dts/loader/index.d.ts +18 -14
  53. package/lib/dts/loader/schema.d.ts +21 -6
  54. package/lib/dts/prompt/skills/afs/agent-skill/agent-skill.d.ts +17 -0
  55. package/lib/dts/prompt/skills/afs/agent-skill/skill-loader.d.ts +13 -0
  56. package/lib/dts/prompt/skills/afs/edit.d.ts +6 -9
  57. package/lib/dts/prompt/skills/afs/read.d.ts +6 -2
  58. package/lib/dts/prompt/template.d.ts +25 -25
  59. package/lib/esm/agents/agent.d.ts +31 -1
  60. package/lib/esm/agents/agent.js +13 -0
  61. package/lib/esm/agents/ai-agent.d.ts +7 -0
  62. package/lib/esm/agents/ai-agent.js +85 -3
  63. package/lib/esm/agents/image-agent.d.ts +17 -1
  64. package/lib/esm/agents/image-agent.js +16 -0
  65. package/lib/esm/agents/image-model.d.ts +4 -4
  66. package/lib/esm/agents/mcp-agent.d.ts +17 -0
  67. package/lib/esm/agents/mcp-agent.js +18 -0
  68. package/lib/esm/agents/team-agent.d.ts +55 -0
  69. package/lib/esm/agents/team-agent.js +31 -0
  70. package/lib/esm/agents/transform-agent.d.ts +12 -0
  71. package/lib/esm/agents/transform-agent.js +13 -0
  72. package/lib/esm/agents/video-model.d.ts +4 -4
  73. package/lib/esm/aigne/context.d.ts +2 -2
  74. package/lib/esm/loader/agent-yaml.d.ts +5 -67
  75. package/lib/esm/loader/agent-yaml.js +4 -138
  76. package/lib/esm/loader/agents.d.ts +4 -0
  77. package/lib/esm/loader/agents.js +14 -0
  78. package/lib/esm/loader/index.d.ts +18 -14
  79. package/lib/esm/loader/index.js +21 -81
  80. package/lib/esm/loader/schema.d.ts +21 -6
  81. package/lib/esm/loader/schema.js +57 -0
  82. package/lib/esm/prompt/prompt-builder.js +1 -2
  83. package/lib/esm/prompt/skills/afs/agent-skill/agent-skill.d.ts +17 -0
  84. package/lib/esm/prompt/skills/afs/agent-skill/agent-skill.js +59 -0
  85. package/lib/esm/prompt/skills/afs/agent-skill/skill-loader.d.ts +13 -0
  86. package/lib/esm/prompt/skills/afs/agent-skill/skill-loader.js +53 -0
  87. package/lib/esm/prompt/skills/afs/delete.js +15 -3
  88. package/lib/esm/prompt/skills/afs/edit.d.ts +6 -9
  89. package/lib/esm/prompt/skills/afs/edit.js +85 -59
  90. package/lib/esm/prompt/skills/afs/exec.js +17 -6
  91. package/lib/esm/prompt/skills/afs/index.js +4 -1
  92. package/lib/esm/prompt/skills/afs/list.js +26 -10
  93. package/lib/esm/prompt/skills/afs/read.d.ts +6 -2
  94. package/lib/esm/prompt/skills/afs/read.js +62 -15
  95. package/lib/esm/prompt/skills/afs/rename.js +18 -4
  96. package/lib/esm/prompt/skills/afs/search.js +21 -5
  97. package/lib/esm/prompt/skills/afs/write.js +20 -6
  98. package/lib/esm/prompt/template.d.ts +25 -25
  99. package/package.json +5 -4
@@ -94,6 +94,7 @@ export declare const videoModelInputSchema: z.ZodObject<{
94
94
  prompt: string;
95
95
  model?: string | undefined;
96
96
  modelOptions?: Record<string, unknown> | undefined;
97
+ outputFileType?: "local" | "url" | "file" | undefined;
97
98
  image?: {
98
99
  type: "url";
99
100
  url: string;
@@ -110,13 +111,13 @@ export declare const videoModelInputSchema: z.ZodObject<{
110
111
  filename?: string | undefined;
111
112
  mimeType?: string | undefined;
112
113
  } | undefined;
113
- outputFileType?: "local" | "file" | "url" | undefined;
114
114
  size?: string | undefined;
115
115
  seconds?: string | undefined;
116
116
  }, {
117
117
  prompt: string;
118
118
  model?: string | undefined;
119
119
  modelOptions?: Record<string, unknown> | undefined;
120
+ outputFileType?: "local" | "url" | "file" | undefined;
120
121
  image?: {
121
122
  type: "url";
122
123
  url: string;
@@ -133,7 +134,6 @@ export declare const videoModelInputSchema: z.ZodObject<{
133
134
  filename?: string | undefined;
134
135
  mimeType?: string | undefined;
135
136
  } | undefined;
136
- outputFileType?: "local" | "file" | "url" | undefined;
137
137
  size?: string | undefined;
138
138
  seconds?: string | undefined;
139
139
  }>;
@@ -240,7 +240,6 @@ export declare const videoModelOutputSchema: z.ZodObject<{
240
240
  filename?: string | undefined;
241
241
  mimeType?: string | undefined;
242
242
  })[];
243
- model?: string | undefined;
244
243
  usage?: {
245
244
  inputTokens: number;
246
245
  outputTokens: number;
@@ -249,6 +248,7 @@ export declare const videoModelOutputSchema: z.ZodObject<{
249
248
  cacheReadInputTokens?: number | undefined;
250
249
  creditPrefix?: "$" | "€" | "¥" | undefined;
251
250
  } | undefined;
251
+ model?: string | undefined;
252
252
  seconds?: number | undefined;
253
253
  }, {
254
254
  videos: ({
@@ -267,7 +267,6 @@ export declare const videoModelOutputSchema: z.ZodObject<{
267
267
  filename?: string | undefined;
268
268
  mimeType?: string | undefined;
269
269
  })[];
270
- model?: string | undefined;
271
270
  usage?: {
272
271
  inputTokens: number;
273
272
  outputTokens: number;
@@ -276,5 +275,6 @@ export declare const videoModelOutputSchema: z.ZodObject<{
276
275
  cacheReadInputTokens?: number | undefined;
277
276
  creditPrefix?: "$" | "€" | "¥" | undefined;
278
277
  } | undefined;
278
+ model?: string | undefined;
279
279
  seconds?: number | undefined;
280
280
  }>;
@@ -159,7 +159,7 @@ export declare class AIGNEContext implements Context {
159
159
  readonly internal: AIGNEContextShared;
160
160
  get messageQueue(): MessageQueue;
161
161
  get model(): ChatModel | undefined;
162
- get imageModel(): ImageModel<import("../agents/image-model.js").ImageModelInput, import("../agents/image-model.js").ImageModelOutput> | undefined;
162
+ get imageModel(): ImageModel<import("../index.js").ImageModelInput, import("../index.js").ImageModelOutput> | undefined;
163
163
  get skills(): Agent<any, any>[] | undefined;
164
164
  get agents(): Agent<any, any>[];
165
165
  get observer(): AIGNEObserver | undefined;
@@ -197,7 +197,7 @@ declare class AIGNEContextShared {
197
197
  readonly messageQueue: MessageQueue;
198
198
  readonly events: Emitter<any>;
199
199
  get model(): ChatModel | undefined;
200
- get imageModel(): ImageModel<import("../agents/image-model.js").ImageModelInput, import("../agents/image-model.js").ImageModelOutput> | undefined;
200
+ get imageModel(): ImageModel<import("../index.js").ImageModelInput, import("../index.js").ImageModelOutput> | undefined;
201
201
  get skills(): Agent<any, any>[] | undefined;
202
202
  get agents(): Agent<any, any>[];
203
203
  get observer(): AIGNEObserver | undefined;
@@ -1,9 +1,6 @@
1
1
  import type { AFSOptions } from "@aigne/afs";
2
2
  import { type ZodType, z } from "zod";
3
- import type { AgentClass, AgentHooks, FunctionAgentFn, TaskRenderMode } from "../agents/agent.js";
4
- import { AIAgentToolChoice } from "../agents/ai-agent.js";
5
- import { type Role } from "../agents/chat-model.js";
6
- import { ProcessMode, type ReflectionMode } from "../agents/team-agent.js";
3
+ import type { AgentHooks, TaskRenderMode } from "../agents/agent.js";
7
4
  import type { LoadOptions } from "./index.js";
8
5
  import { chatModelSchema, imageModelSchema } from "./schema.js";
9
6
  export interface HooksSchema {
@@ -45,7 +42,8 @@ export interface AFSContextSchema {
45
42
  presets?: Record<string, AFSContextPresetSchema>;
46
43
  };
47
44
  }
48
- export interface BaseAgentSchema {
45
+ export interface AgentSchema {
46
+ type: string;
49
47
  name?: string;
50
48
  description?: string;
51
49
  model?: z.infer<typeof chatModelSchema>;
@@ -67,71 +65,11 @@ export interface BaseAgentSchema {
67
65
  context?: AFSContextSchema;
68
66
  });
69
67
  shareAFS?: boolean;
68
+ [key: string]: unknown;
70
69
  }
71
- export type Instructions = {
72
- role: Exclude<Role, "tool">;
73
- content: string;
74
- path: string;
75
- cacheControl?: {
76
- type: "ephemeral";
77
- ttl?: "5m" | "1h";
78
- };
79
- }[];
80
- export interface AIAgentSchema extends BaseAgentSchema {
81
- type: "ai";
82
- instructions?: Instructions;
83
- autoReorderSystemMessages?: boolean;
84
- autoMergeSystemMessages?: boolean;
85
- inputKey?: string;
86
- inputFileKey?: string;
87
- outputKey?: string;
88
- outputFileKey?: string;
89
- toolChoice?: AIAgentToolChoice;
90
- toolCallsConcurrency?: number;
91
- keepTextInToolUses?: boolean;
92
- }
93
- export interface ImageAgentSchema extends BaseAgentSchema {
94
- type: "image";
95
- instructions: Instructions;
96
- inputFileKey?: string;
97
- }
98
- export interface MCPAgentSchema extends BaseAgentSchema {
99
- type: "mcp";
100
- url?: string;
101
- command?: string;
102
- args?: string[];
103
- }
104
- export interface TeamAgentSchema extends BaseAgentSchema {
105
- type: "team";
106
- mode?: ProcessMode;
107
- iterateOn?: string;
108
- concurrency?: number;
109
- iterateWithPreviousOutput?: boolean;
110
- includeAllStepsOutput?: boolean;
111
- reflection?: Omit<ReflectionMode, "reviewer"> & {
112
- reviewer: NestAgentSchema;
113
- };
114
- }
115
- export interface TransformAgentSchema extends BaseAgentSchema {
116
- type: "transform";
117
- jsonata: string;
118
- }
119
- export interface FunctionAgentSchema extends BaseAgentSchema {
120
- type: "function";
121
- process: FunctionAgentFn;
122
- }
123
- export interface ThirdAgentSchema extends BaseAgentSchema {
124
- agentClass?: AgentClass;
125
- type: "";
126
- [key: string]: any;
127
- }
128
- export type AgentSchema = AIAgentSchema | ImageAgentSchema | MCPAgentSchema | TeamAgentSchema | TransformAgentSchema | FunctionAgentSchema | ThirdAgentSchema;
129
70
  export declare function parseAgentFile(path: string, data: any, options: LoadOptions): Promise<AgentSchema>;
130
71
  export declare function loadAgentFromYamlFile(path: string, options: LoadOptions): Promise<AgentSchema>;
131
- export declare const getInstructionsSchema: ({ filepath }: {
132
- filepath: string;
133
- }) => ZodType<Instructions>;
134
- export declare const getAgentSchema: ({ filepath, options, }: {
72
+ export declare const getAgentSchema: ({ filepath }: {
135
73
  filepath: string;
136
74
  options?: LoadOptions;
137
75
  }) => ZodType<AgentSchema, z.ZodTypeDef, AgentSchema>;
@@ -0,0 +1,4 @@
1
+ import type { AgentClass } from "../agents/types.ts";
2
+ export declare const builtinAgents: {
3
+ [type: string]: AgentClass;
4
+ };
@@ -5,9 +5,8 @@ import type { ChatModel } from "../agents/chat-model.js";
5
5
  import type { ImageModel } from "../agents/image-model.js";
6
6
  import type { AIGNEOptions } from "../aigne/aigne.js";
7
7
  import type { MemoryAgent, MemoryAgentOptions } from "../memory/memory.js";
8
- import { PromptBuilder } from "../prompt/prompt-builder.js";
9
8
  import { type PromiseOrValue } from "../utils/type-utils.js";
10
- import { type Instructions, loadAgentFromYamlFile, type NestAgentSchema } from "./agent-yaml.js";
9
+ import { loadAgentFromYamlFile, type NestAgentSchema } from "./agent-yaml.js";
11
10
  export interface LoadOptions {
12
11
  memories?: {
13
12
  new (parameters?: MemoryAgentOptions): MemoryAgent;
@@ -19,7 +18,10 @@ export interface LoadOptions {
19
18
  availableModules?: {
20
19
  module: string;
21
20
  alias?: string[];
22
- create: (options?: Record<string, any>) => PromiseOrValue<AFSModule>;
21
+ load: (options: {
22
+ filepath: string;
23
+ parsed?: object;
24
+ }) => PromiseOrValue<AFSModule>;
23
25
  }[];
24
26
  };
25
27
  aigne?: z.infer<typeof aigneFileSchema>;
@@ -27,6 +29,9 @@ export interface LoadOptions {
27
29
  parent?: string;
28
30
  }) => Promise<any>;
29
31
  }
32
+ export interface AgentLoadOptions extends LoadOptions {
33
+ loadNestAgent: (path: string, agent: NestAgentSchema, options: LoadOptions, agentOptions?: AgentOptions<any, any> & Record<string, unknown>) => Promise<Agent>;
34
+ }
30
35
  export declare function load(path: string, options?: LoadOptions): Promise<AIGNEOptions>;
31
36
  export declare function loadAgent(path: string, options: LoadOptions, agentOptions?: AgentOptions): Promise<Agent>;
32
37
  export declare function loadNestAgent(path: string, agent: NestAgentSchema, options: LoadOptions, agentOptions?: AgentOptions<any, any> & Record<string, unknown>): Promise<Agent>;
@@ -67,9 +72,9 @@ declare const aigneFileSchema: z.ZodObject<{
67
72
  } | undefined, z.ZodTypeDef, number | {
68
73
  $get: string;
69
74
  } | undefined>;
70
- thinkingEffort: ZodType<number | "high" | "medium" | "low" | "minimal" | {
75
+ thinkingEffort: ZodType<number | "high" | "low" | "medium" | "minimal" | {
71
76
  $get: string;
72
- } | undefined, z.ZodTypeDef, number | "high" | "medium" | "low" | "minimal" | {
77
+ } | undefined, z.ZodTypeDef, number | "high" | "low" | "medium" | "minimal" | {
73
78
  $get: string;
74
79
  } | undefined>;
75
80
  }, z.ZodTypeAny, "passthrough"> | undefined, z.ZodTypeDef, z.objectInputType<{
@@ -98,9 +103,9 @@ declare const aigneFileSchema: z.ZodObject<{
98
103
  } | undefined, z.ZodTypeDef, number | {
99
104
  $get: string;
100
105
  } | undefined>;
101
- thinkingEffort: ZodType<number | "high" | "medium" | "low" | "minimal" | {
106
+ thinkingEffort: ZodType<number | "high" | "low" | "medium" | "minimal" | {
102
107
  $get: string;
103
- } | undefined, z.ZodTypeDef, number | "high" | "medium" | "low" | "minimal" | {
108
+ } | undefined, z.ZodTypeDef, number | "high" | "low" | "medium" | "minimal" | {
104
109
  $get: string;
105
110
  } | undefined>;
106
111
  }, z.ZodTypeAny, "passthrough"> | undefined>;
@@ -132,6 +137,7 @@ declare const aigneFileSchema: z.ZodObject<{
132
137
  chat?: string | undefined;
133
138
  } | undefined>;
134
139
  }, "strip", z.ZodTypeAny, {
140
+ name?: string | undefined;
135
141
  model?: z.objectInputType<{
136
142
  model: ZodType<string | {
137
143
  $get: string;
@@ -158,13 +164,12 @@ declare const aigneFileSchema: z.ZodObject<{
158
164
  } | undefined, z.ZodTypeDef, number | {
159
165
  $get: string;
160
166
  } | undefined>;
161
- thinkingEffort: ZodType<number | "high" | "medium" | "low" | "minimal" | {
167
+ thinkingEffort: ZodType<number | "high" | "low" | "medium" | "minimal" | {
162
168
  $get: string;
163
- } | undefined, z.ZodTypeDef, number | "high" | "medium" | "low" | "minimal" | {
169
+ } | undefined, z.ZodTypeDef, number | "high" | "low" | "medium" | "minimal" | {
164
170
  $get: string;
165
171
  } | undefined>;
166
172
  }, z.ZodTypeAny, "passthrough"> | undefined;
167
- name?: string | undefined;
168
173
  description?: string | undefined;
169
174
  imageModel?: z.objectInputType<{
170
175
  model: ZodType<string | {
@@ -183,6 +188,7 @@ declare const aigneFileSchema: z.ZodObject<{
183
188
  chat?: string | undefined;
184
189
  } | undefined;
185
190
  }, {
191
+ name?: string | undefined;
186
192
  model?: z.objectInputType<{
187
193
  model: ZodType<string | {
188
194
  $get: string;
@@ -209,13 +215,12 @@ declare const aigneFileSchema: z.ZodObject<{
209
215
  } | undefined, z.ZodTypeDef, number | {
210
216
  $get: string;
211
217
  } | undefined>;
212
- thinkingEffort: ZodType<number | "high" | "medium" | "low" | "minimal" | {
218
+ thinkingEffort: ZodType<number | "high" | "low" | "medium" | "minimal" | {
213
219
  $get: string;
214
- } | undefined, z.ZodTypeDef, number | "high" | "medium" | "low" | "minimal" | {
220
+ } | undefined, z.ZodTypeDef, number | "high" | "low" | "medium" | "minimal" | {
215
221
  $get: string;
216
222
  } | undefined>;
217
223
  }, z.ZodTypeAny, "passthrough"> | undefined;
218
- name?: string | undefined;
219
224
  description?: string | undefined;
220
225
  imageModel?: z.objectInputType<{
221
226
  model: ZodType<string | {
@@ -239,5 +244,4 @@ export declare function loadAIGNEFile(path: string): Promise<{
239
244
  rootDir: string;
240
245
  }>;
241
246
  export declare function findAIGNEFile(path: string): Promise<string>;
242
- export declare function instructionsToPromptBuilder(instructions: Instructions): PromptBuilder;
243
247
  export {};
@@ -1,4 +1,6 @@
1
1
  import { type ZodType, z } from "zod";
2
+ import { type Role } from "../agents/chat-model.js";
3
+ import { PromptBuilder } from "../prompt/prompt-builder.js";
2
4
  export declare const inputOutputSchema: ({ path }: {
3
5
  path: string;
4
6
  }) => z.ZodUnion<[ZodType<any, z.ZodTypeDef, any>, z.ZodEffects<z.ZodObject<{
@@ -55,9 +57,9 @@ declare const chatModelObjectSchema: z.ZodObject<{
55
57
  } | undefined, z.ZodTypeDef, number | {
56
58
  $get: string;
57
59
  } | undefined>;
58
- thinkingEffort: ZodType<number | "high" | "medium" | "low" | "minimal" | {
60
+ thinkingEffort: ZodType<number | "high" | "low" | "medium" | "minimal" | {
59
61
  $get: string;
60
- } | undefined, z.ZodTypeDef, number | "high" | "medium" | "low" | "minimal" | {
62
+ } | undefined, z.ZodTypeDef, number | "high" | "low" | "medium" | "minimal" | {
61
63
  $get: string;
62
64
  } | undefined>;
63
65
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
@@ -86,9 +88,9 @@ declare const chatModelObjectSchema: z.ZodObject<{
86
88
  } | undefined, z.ZodTypeDef, number | {
87
89
  $get: string;
88
90
  } | undefined>;
89
- thinkingEffort: ZodType<number | "high" | "medium" | "low" | "minimal" | {
91
+ thinkingEffort: ZodType<number | "high" | "low" | "medium" | "minimal" | {
90
92
  $get: string;
91
- } | undefined, z.ZodTypeDef, number | "high" | "medium" | "low" | "minimal" | {
93
+ } | undefined, z.ZodTypeDef, number | "high" | "low" | "medium" | "minimal" | {
92
94
  $get: string;
93
95
  } | undefined>;
94
96
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
@@ -117,9 +119,9 @@ declare const chatModelObjectSchema: z.ZodObject<{
117
119
  } | undefined, z.ZodTypeDef, number | {
118
120
  $get: string;
119
121
  } | undefined>;
120
- thinkingEffort: ZodType<number | "high" | "medium" | "low" | "minimal" | {
122
+ thinkingEffort: ZodType<number | "high" | "low" | "medium" | "minimal" | {
121
123
  $get: string;
122
- } | undefined, z.ZodTypeDef, number | "high" | "medium" | "low" | "minimal" | {
124
+ } | undefined, z.ZodTypeDef, number | "high" | "low" | "medium" | "minimal" | {
123
125
  $get: string;
124
126
  } | undefined>;
125
127
  }, z.ZodTypeAny, "passthrough">>;
@@ -149,4 +151,17 @@ export declare function camelizeSchema<T extends ZodType>(schema: T, { shallow }
149
151
  shallow?: boolean;
150
152
  }): T;
151
153
  export declare function preprocessSchema<T extends ZodType>(fn: (data: unknown) => unknown, schema: T): T;
154
+ export type Instructions = {
155
+ role: Exclude<Role, "tool">;
156
+ content: string;
157
+ path: string;
158
+ cacheControl?: {
159
+ type: "ephemeral";
160
+ ttl?: "5m" | "1h";
161
+ };
162
+ }[];
163
+ export declare const getInstructionsSchema: ({ filepath }: {
164
+ filepath: string;
165
+ }) => ZodType<Instructions>;
166
+ export declare function instructionsToPromptBuilder(instructions: Instructions | string): PromptBuilder;
152
167
  export {};
@@ -0,0 +1,17 @@
1
+ import { Agent, type AgentOptions, type Message } from "../../../../agents/agent.js";
2
+ import type { Skill } from "./skill-loader.js";
3
+ export interface SkillToolInput extends Message {
4
+ skill: string;
5
+ args?: string;
6
+ }
7
+ export interface SkillToolOutput extends Message {
8
+ result: string;
9
+ }
10
+ export interface SkillToolOptions extends AgentOptions<SkillToolInput, SkillToolOutput> {
11
+ agentSkills: Skill[];
12
+ }
13
+ export declare class AgentSkill extends Agent<SkillToolInput, SkillToolOutput> {
14
+ constructor(options: SkillToolOptions);
15
+ private agentSkills;
16
+ process(input: SkillToolInput): Promise<SkillToolOutput>;
17
+ }
@@ -0,0 +1,13 @@
1
+ import type { AFS } from "@aigne/afs";
2
+ import { AgentSkill } from "./agent-skill.js";
3
+ export interface Skill {
4
+ path: string;
5
+ name: string;
6
+ description: string;
7
+ content: string;
8
+ }
9
+ export declare function loadSkill(path: string): Promise<Skill>;
10
+ export declare function loadSkills(paths: string[]): Promise<Skill[]>;
11
+ export declare function loadAgentSkillFromAFS({ afs, }: {
12
+ afs: AFS;
13
+ }): Promise<AgentSkill | undefined>;
@@ -1,21 +1,17 @@
1
1
  import type { AgentInvokeOptions, AgentOptions, Message } from "../../../agents/agent.js";
2
2
  import { AFSSkillBase } from "./base.js";
3
- export interface Patch {
4
- start_line: number;
5
- end_line: number;
6
- replace?: string;
7
- delete: boolean;
8
- }
9
3
  export interface AFSEditInput extends Message {
10
4
  path: string;
11
- patches: Patch[];
5
+ oldString: string;
6
+ newString: string;
7
+ replaceAll?: boolean;
12
8
  }
13
9
  export interface AFSEditOutput extends Message {
14
10
  status: string;
15
11
  tool: string;
16
12
  path: string;
17
13
  message: string;
18
- data: string;
14
+ snippet: string;
19
15
  }
20
16
  export interface AFSEditAgentOptions extends AgentOptions<AFSEditInput, AFSEditOutput> {
21
17
  afs: NonNullable<AgentOptions<AFSEditInput, AFSEditOutput>["afs"]>;
@@ -23,5 +19,6 @@ export interface AFSEditAgentOptions extends AgentOptions<AFSEditInput, AFSEditO
23
19
  export declare class AFSEditAgent extends AFSSkillBase<AFSEditInput, AFSEditOutput> {
24
20
  constructor(options: AFSEditAgentOptions);
25
21
  process(input: AFSEditInput, _options: AgentInvokeOptions): Promise<AFSEditOutput>;
26
- applyCustomPatches(text: string, patches: Patch[]): string;
22
+ private countOccurrences;
23
+ private extractSnippet;
27
24
  }
@@ -3,15 +3,19 @@ import type { AgentInvokeOptions, AgentOptions, Message } from "../../../agents/
3
3
  import { AFSSkillBase } from "./base.js";
4
4
  export interface AFSReadInput extends Message {
5
5
  path: string;
6
- withLineNumbers?: boolean;
6
+ offset?: number;
7
+ limit?: number;
7
8
  }
8
9
  export interface AFSReadOutput extends Message {
9
10
  status: string;
10
11
  tool: string;
11
12
  path: string;
12
- withLineNumbers?: boolean;
13
13
  data?: AFSEntry;
14
14
  message?: string;
15
+ totalLines?: number;
16
+ returnedLines?: number;
17
+ truncated?: boolean;
18
+ offset?: number;
15
19
  }
16
20
  export interface AFSReadAgentOptions extends AgentOptions<AFSReadInput, AFSReadOutput> {
17
21
  afs: NonNullable<AgentOptions<AFSReadInput, AFSReadOutput>["afs"]>;
@@ -42,11 +42,11 @@ export declare class AgentMessageTemplate extends ChatMessageTemplate {
42
42
  static from(template?: ChatModelInputMessage["content"], toolCalls?: ChatModelOutputToolCall[], name?: string, options?: FormatOptions, cacheControl?: ChatModelInputMessage["cacheControl"]): AgentMessageTemplate;
43
43
  constructor(content?: ChatModelInputMessage["content"], toolCalls?: ChatModelOutputToolCall[] | undefined, name?: string, options?: FormatOptions, cacheControl?: ChatModelInputMessage["cacheControl"]);
44
44
  format(_variables?: Record<string, unknown>, _options?: FormatOptions): Promise<{
45
- role: "agent" | "system" | "user" | "tool";
45
+ role: "system" | "user" | "agent" | "tool";
46
46
  name: string | undefined;
47
47
  content: ChatModelInputMessageContent | undefined;
48
48
  toolCalls: ChatModelOutputToolCall[] | undefined;
49
- cacheControl: import("../agents/chat-model.js").CacheControl | undefined;
49
+ cacheControl: import("../index.js").CacheControl | undefined;
50
50
  }>;
51
51
  }
52
52
  export declare class ToolMessageTemplate extends ChatMessageTemplate {
@@ -54,11 +54,11 @@ export declare class ToolMessageTemplate extends ChatMessageTemplate {
54
54
  static from(content: object | string, toolCallId: string, name?: string, options?: FormatOptions, cacheControl?: ChatModelInputMessage["cacheControl"]): ToolMessageTemplate;
55
55
  constructor(content: object | string, toolCallId: string, name?: string, options?: FormatOptions, cacheControl?: ChatModelInputMessage["cacheControl"]);
56
56
  format(_variables?: Record<string, unknown>, _options?: FormatOptions): Promise<{
57
- role: "agent" | "system" | "user" | "tool";
57
+ role: "system" | "user" | "agent" | "tool";
58
58
  name: string | undefined;
59
59
  content: ChatModelInputMessageContent | undefined;
60
60
  toolCallId: string;
61
- cacheControl: import("../agents/chat-model.js").CacheControl | undefined;
61
+ cacheControl: import("../index.js").CacheControl | undefined;
62
62
  }>;
63
63
  }
64
64
  export declare class ChatMessagesTemplate {
@@ -83,21 +83,21 @@ declare const chatMessageSchema: z.ZodUnion<[z.ZodObject<{
83
83
  ttl?: "5m" | "1h" | undefined;
84
84
  }>>;
85
85
  }, "strip", z.ZodTypeAny, {
86
- role: "system";
87
86
  content: string;
88
- name?: string | undefined;
87
+ role: "system";
89
88
  cacheControl?: {
90
89
  type: "ephemeral";
91
90
  ttl?: "5m" | "1h" | undefined;
92
91
  } | undefined;
92
+ name?: string | undefined;
93
93
  }, {
94
- role: "system";
95
94
  content: string;
96
- name?: string | undefined;
95
+ role: "system";
97
96
  cacheControl?: {
98
97
  type: "ephemeral";
99
98
  ttl?: "5m" | "1h" | undefined;
100
99
  } | undefined;
100
+ name?: string | undefined;
101
101
  }>, z.ZodObject<{
102
102
  role: z.ZodLiteral<"user">;
103
103
  content: z.ZodString;
@@ -113,21 +113,21 @@ declare const chatMessageSchema: z.ZodUnion<[z.ZodObject<{
113
113
  ttl?: "5m" | "1h" | undefined;
114
114
  }>>;
115
115
  }, "strip", z.ZodTypeAny, {
116
- role: "user";
117
116
  content: string;
118
- name?: string | undefined;
117
+ role: "user";
119
118
  cacheControl?: {
120
119
  type: "ephemeral";
121
120
  ttl?: "5m" | "1h" | undefined;
122
121
  } | undefined;
122
+ name?: string | undefined;
123
123
  }, {
124
- role: "user";
125
124
  content: string;
126
- name?: string | undefined;
125
+ role: "user";
127
126
  cacheControl?: {
128
127
  type: "ephemeral";
129
128
  ttl?: "5m" | "1h" | undefined;
130
129
  } | undefined;
130
+ name?: string | undefined;
131
131
  }>, z.ZodObject<{
132
132
  role: z.ZodLiteral<"agent">;
133
133
  content: z.ZodOptional<z.ZodString>;
@@ -172,8 +172,11 @@ declare const chatMessageSchema: z.ZodUnion<[z.ZodObject<{
172
172
  }>>;
173
173
  }, "strip", z.ZodTypeAny, {
174
174
  role: "agent";
175
- name?: string | undefined;
176
175
  content?: string | undefined;
176
+ cacheControl?: {
177
+ type: "ephemeral";
178
+ ttl?: "5m" | "1h" | undefined;
179
+ } | undefined;
177
180
  toolCalls?: {
178
181
  function: {
179
182
  name: string;
@@ -182,14 +185,14 @@ declare const chatMessageSchema: z.ZodUnion<[z.ZodObject<{
182
185
  type: "function";
183
186
  id: string;
184
187
  }[] | undefined;
188
+ name?: string | undefined;
189
+ }, {
190
+ role: "agent";
191
+ content?: string | undefined;
185
192
  cacheControl?: {
186
193
  type: "ephemeral";
187
194
  ttl?: "5m" | "1h" | undefined;
188
195
  } | undefined;
189
- }, {
190
- role: "agent";
191
- name?: string | undefined;
192
- content?: string | undefined;
193
196
  toolCalls?: {
194
197
  function: {
195
198
  name: string;
@@ -198,10 +201,7 @@ declare const chatMessageSchema: z.ZodUnion<[z.ZodObject<{
198
201
  type: "function";
199
202
  id: string;
200
203
  }[] | undefined;
201
- cacheControl?: {
202
- type: "ephemeral";
203
- ttl?: "5m" | "1h" | undefined;
204
- } | undefined;
204
+ name?: string | undefined;
205
205
  }>, z.ZodObject<{
206
206
  role: z.ZodLiteral<"tool">;
207
207
  content: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>, string, string | Record<string, unknown>>;
@@ -218,23 +218,23 @@ declare const chatMessageSchema: z.ZodUnion<[z.ZodObject<{
218
218
  ttl?: "5m" | "1h" | undefined;
219
219
  }>>;
220
220
  }, "strip", z.ZodTypeAny, {
221
- role: "tool";
222
221
  content: string;
222
+ role: "tool";
223
223
  toolCallId: string;
224
- name?: string | undefined;
225
224
  cacheControl?: {
226
225
  type: "ephemeral";
227
226
  ttl?: "5m" | "1h" | undefined;
228
227
  } | undefined;
228
+ name?: string | undefined;
229
229
  }, {
230
- role: "tool";
231
230
  content: string | Record<string, unknown>;
231
+ role: "tool";
232
232
  toolCallId: string;
233
- name?: string | undefined;
234
233
  cacheControl?: {
235
234
  type: "ephemeral";
236
235
  ttl?: "5m" | "1h" | undefined;
237
236
  } | undefined;
237
+ name?: string | undefined;
238
238
  }>]>;
239
239
  export declare function safeParseChatMessages(messages: unknown): ChatMessageTemplate[] | undefined;
240
240
  export declare function parseChatMessages(messages: (z.infer<typeof chatMessageSchema> & {
@@ -1,7 +1,7 @@
1
1
  import { AFS, type AFSExecOptions, type AFSExecResult, type AFSListOptions, type AFSListResult, type AFSModule, type AFSOptions, type AFSReadResult, type AFSSearchOptions } from "@aigne/afs";
2
2
  import { nodejs } from "@aigne/platform-helpers/nodejs/index.js";
3
3
  import type * as prompts from "@inquirer/prompts";
4
- import { type ZodObject, type ZodType } from "zod";
4
+ import { type ZodObject, type ZodType, z } from "zod";
5
5
  import type { AgentEvent, Context, UserContext } from "../aigne/context.js";
6
6
  import type { MessagePayload } from "../aigne/message-queue.js";
7
7
  import type { ContextUsage } from "../aigne/usage.js";
@@ -783,6 +783,25 @@ export interface AgentResponseProgress {
783
783
  } | {
784
784
  event: "agentFailed";
785
785
  error: Error;
786
+ } | {
787
+ event: "message";
788
+ role: "user" | "agent";
789
+ message: ({
790
+ type: "text";
791
+ content: string;
792
+ } | {
793
+ type: "thinking";
794
+ thoughts: string;
795
+ } | {
796
+ type: "tool_use";
797
+ toolUseId: string;
798
+ name: string;
799
+ input: unknown;
800
+ } | {
801
+ type: "tool_result";
802
+ toolUseId: string;
803
+ content: unknown;
804
+ })[];
786
805
  }) & Omit<AgentEvent, "agent"> & {
787
806
  agent: {
788
807
  name: string;
@@ -870,6 +889,17 @@ export interface FunctionAgentOptions<I extends Message = Message, O extends Mes
870
889
  */
871
890
  export declare class FunctionAgent<I extends Message = Message, O extends Message = Message> extends Agent<I, O> {
872
891
  tag: string;
892
+ static schema(): ZodObject<{
893
+ process: ZodType<FunctionAgentFn>;
894
+ }, "strip", z.ZodTypeAny, {
895
+ process: FunctionAgentFn<any, any, FunctionAgent<any, any>>;
896
+ }, {
897
+ process: FunctionAgentFn<any, any, FunctionAgent<any, any>>;
898
+ }>;
899
+ static load<I extends Message = any, O extends Message = any>(options: {
900
+ filepath: string;
901
+ parsed: object;
902
+ }): Promise<Agent<I, O>>;
873
903
  /**
874
904
  * Create a function agent from a function or options
875
905
  *
@@ -5,6 +5,7 @@ import nunjucks from "nunjucks";
5
5
  import { joinURL } from "ufo";
6
6
  import { z } from "zod";
7
7
  import { zodToJsonSchema } from "zod-to-json-schema";
8
+ import { codeToFunctionAgentFn } from "../loader/function-agent.js";
8
9
  import { sortHooks } from "../utils/agent-utils.js";
9
10
  import { getZodObjectKeys, isZodSchema } from "../utils/json-schema.js";
10
11
  import { logger } from "../utils/logger.js";
@@ -824,6 +825,18 @@ function checkAgentInputOutputSchema(schema) {
824
825
  */
825
826
  export class FunctionAgent extends Agent {
826
827
  tag = "FunctionAgent";
828
+ static schema() {
829
+ return z.object({
830
+ process: z.preprocess((v) => (typeof v === "string" ? codeToFunctionAgentFn(v) : v), z.custom()),
831
+ });
832
+ }
833
+ static async load(options) {
834
+ const valid = await FunctionAgent.schema().parseAsync(options.parsed);
835
+ return new FunctionAgent({
836
+ ...options.parsed,
837
+ process: valid.process,
838
+ });
839
+ }
827
840
  /**
828
841
  * Create a function agent from a function or options
829
842
  *