@aigne/core 1.62.0-beta.5 → 1.62.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/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.62.0](https://github.com/AIGNE-io/aigne-framework/compare/core-v1.62.0-beta.6...core-v1.62.0) (2025-10-04)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * The following workspace dependencies were updated
9
+ * dependencies
10
+ * @aigne/observability-api bumped to 0.11.1
11
+
12
+ ## [1.62.0-beta.6](https://github.com/AIGNE-io/aigne-framework/compare/core-v1.62.0-beta.5...core-v1.62.0-beta.6) (2025-10-03)
13
+
14
+
15
+ ### Features
16
+
17
+ * support custom extra model options in agent yaml file ([#586](https://github.com/AIGNE-io/aigne-framework/issues/586)) ([6d82115](https://github.com/AIGNE-io/aigne-framework/commit/6d82115e0763385c7e44ea152867c0d4a9e0a301))
18
+ * support custom reflection error message ([#589](https://github.com/AIGNE-io/aigne-framework/issues/589)) ([856348e](https://github.com/AIGNE-io/aigne-framework/commit/856348e889890051d7149b4093161f6ba8636273))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **core:** auto retry LLM request for tool not found error ([#590](https://github.com/AIGNE-io/aigne-framework/issues/590)) ([3283daa](https://github.com/AIGNE-io/aigne-framework/commit/3283daa7abb0a44545b27d51645e5868c59a442f))
24
+
3
25
  ## [1.62.0-beta.5](https://github.com/AIGNE-io/aigne-framework/compare/core-v1.62.0-beta.4...core-v1.62.0-beta.5) (2025-10-02)
4
26
 
5
27
 
@@ -246,7 +246,7 @@ class ChatModel extends model_js_1.Model {
246
246
  for (const toolCall of toolCalls) {
247
247
  const originalTool = toolsMap[toolCall.function.name];
248
248
  if (!originalTool) {
249
- throw new Error(`Tool "${toolCall.function.name}" not found in tools map`);
249
+ throw new StructuredOutputError(`Tool "${toolCall.function.name}" not found in tools map`);
250
250
  }
251
251
  toolCall.function.name = originalTool.function.name;
252
252
  toolCall.function.arguments = this.validateJsonSchema(originalTool.function.parameters, toolCall.function.arguments);
@@ -93,6 +93,7 @@ export interface ReflectionMode {
93
93
  * @default false
94
94
  */
95
95
  returnLastOnMaxIterations?: boolean;
96
+ customErrorMessage?: string;
96
97
  }
97
98
  /**
98
99
  * Configuration options for creating a TeamAgent.
@@ -192,7 +192,8 @@ class TeamAgent extends agent_js_1.Agent {
192
192
  break;
193
193
  }
194
194
  }
195
- throw new Error(`Reflection mode exceeded max iterations ${this.reflection.maxIterations}. Please review the feedback and try again.`);
195
+ throw new Error(this.reflection.customErrorMessage ||
196
+ `Reflection mode exceeded max iterations ${this.reflection.maxIterations}. Please review the feedback and try again.`);
196
197
  }
197
198
  async *_processIterator(key, input, options) {
198
199
  (0, node_assert_1.default)(this.iterateOn, "iterateInputKey must be defined for iterator processing");
@@ -128,6 +128,7 @@ async function parseAgentFile(path, data) {
128
128
  isApproved: zod_1.z.string(),
129
129
  maxIterations: (0, schema_js_1.optionalize)(zod_1.z.number().int().min(1)),
130
130
  returnLastOnMaxIterations: (0, schema_js_1.optionalize)(zod_1.z.boolean()),
131
+ customErrorMessage: (0, schema_js_1.optionalize)(zod_1.z.string()),
131
132
  }))),
132
133
  })
133
134
  .extend(baseAgentSchema.shape),
@@ -24,24 +24,24 @@ type CliAgent = string | {
24
24
  declare const aigneFileSchema: z.ZodObject<{
25
25
  name: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
26
26
  description: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
27
- model: ZodType<{
28
- model?: string | undefined;
29
- temperature?: number | undefined;
30
- topP?: number | undefined;
31
- frequencyPenalty?: number | undefined;
32
- presencePenalty?: number | undefined;
33
- } | undefined, z.ZodTypeDef, {
34
- model?: string | undefined;
35
- temperature?: number | undefined;
36
- topP?: number | undefined;
37
- frequencyPenalty?: number | undefined;
38
- presencePenalty?: number | undefined;
39
- } | undefined>;
40
- imageModel: ZodType<{
41
- model?: string | undefined;
42
- } | undefined, z.ZodTypeDef, {
43
- model?: string | undefined;
44
- } | undefined>;
27
+ model: ZodType<z.objectInputType<{
28
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
29
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
30
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
31
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
32
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
33
+ }, z.ZodTypeAny, "passthrough"> | undefined, z.ZodTypeDef, z.objectInputType<{
34
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
35
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
36
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
37
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
38
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
39
+ }, z.ZodTypeAny, "passthrough"> | undefined>;
40
+ imageModel: ZodType<z.objectInputType<{
41
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
42
+ }, z.ZodTypeAny, "passthrough"> | undefined, z.ZodTypeDef, z.objectInputType<{
43
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
44
+ }, z.ZodTypeAny, "passthrough"> | undefined>;
45
45
  agents: ZodType<string[] | undefined, z.ZodTypeDef, string[] | undefined>;
46
46
  skills: ZodType<string[] | undefined, z.ZodTypeDef, string[] | undefined>;
47
47
  mcpServer: ZodType<{
@@ -57,18 +57,18 @@ declare const aigneFileSchema: z.ZodObject<{
57
57
  chat?: string | undefined;
58
58
  } | undefined>;
59
59
  }, "strip", z.ZodTypeAny, {
60
- model?: {
61
- model?: string | undefined;
62
- temperature?: number | undefined;
63
- topP?: number | undefined;
64
- frequencyPenalty?: number | undefined;
65
- presencePenalty?: number | undefined;
66
- } | undefined;
60
+ model?: z.objectInputType<{
61
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
62
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
63
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
64
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
65
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
66
+ }, z.ZodTypeAny, "passthrough"> | undefined;
67
67
  name?: string | undefined;
68
68
  description?: string | undefined;
69
- imageModel?: {
70
- model?: string | undefined;
71
- } | undefined;
69
+ imageModel?: z.objectInputType<{
70
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
71
+ }, z.ZodTypeAny, "passthrough"> | undefined;
72
72
  skills?: string[] | undefined;
73
73
  agents?: string[] | undefined;
74
74
  mcpServer?: {
@@ -79,18 +79,18 @@ declare const aigneFileSchema: z.ZodObject<{
79
79
  chat?: string | undefined;
80
80
  } | undefined;
81
81
  }, {
82
- model?: {
83
- model?: string | undefined;
84
- temperature?: number | undefined;
85
- topP?: number | undefined;
86
- frequencyPenalty?: number | undefined;
87
- presencePenalty?: number | undefined;
88
- } | undefined;
82
+ model?: z.objectInputType<{
83
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
84
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
85
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
86
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
87
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
88
+ }, z.ZodTypeAny, "passthrough"> | undefined;
89
89
  name?: string | undefined;
90
90
  description?: string | undefined;
91
- imageModel?: {
92
- model?: string | undefined;
93
- } | undefined;
91
+ imageModel?: z.objectInputType<{
92
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
93
+ }, z.ZodTypeAny, "passthrough"> | undefined;
94
94
  skills?: string[] | undefined;
95
95
  agents?: string[] | undefined;
96
96
  mcpServer?: {
@@ -35,27 +35,27 @@ declare const chatModelObjectSchema: z.ZodObject<{
35
35
  topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
36
36
  frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
37
37
  presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
38
- }, "strip", z.ZodTypeAny, {
39
- model?: string | undefined;
40
- temperature?: number | undefined;
41
- topP?: number | undefined;
42
- frequencyPenalty?: number | undefined;
43
- presencePenalty?: number | undefined;
44
- }, {
45
- model?: string | undefined;
46
- temperature?: number | undefined;
47
- topP?: number | undefined;
48
- frequencyPenalty?: number | undefined;
49
- presencePenalty?: number | undefined;
50
- }>;
38
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
39
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
40
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
41
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
42
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
43
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
44
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
45
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
46
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
47
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
48
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
49
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
50
+ }, z.ZodTypeAny, "passthrough">>;
51
51
  export declare const chatModelSchema: typeof chatModelObjectSchema;
52
52
  declare const imageModelObjectSchema: z.ZodObject<{
53
53
  model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
54
- }, "strip", z.ZodTypeAny, {
55
- model?: string | undefined;
56
- }, {
57
- model?: string | undefined;
58
- }>;
54
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
55
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
56
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
57
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
58
+ }, z.ZodTypeAny, "passthrough">>;
59
59
  export declare const imageModelSchema: typeof imageModelObjectSchema;
60
60
  export declare function optionalize<T>(schema: ZodType<T>): ZodType<T | undefined>;
61
61
  export declare function camelizeSchema<T extends ZodType>(schema: T, { shallow }?: {
@@ -60,13 +60,15 @@ exports.defaultInputSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.union([
60
60
  }),
61
61
  zod_1.z.unknown(),
62
62
  ]));
63
- const chatModelObjectSchema = camelizeSchema(zod_1.z.object({
63
+ const chatModelObjectSchema = camelizeSchema(zod_1.z
64
+ .object({
64
65
  model: optionalize(zod_1.z.string()),
65
66
  temperature: optionalize(zod_1.z.number().min(0).max(2)),
66
67
  topP: optionalize(zod_1.z.number().min(0)),
67
68
  frequencyPenalty: optionalize(zod_1.z.number().min(-2).max(2)),
68
69
  presencePenalty: optionalize(zod_1.z.number().min(-2).max(2)),
69
- }));
70
+ })
71
+ .passthrough());
70
72
  exports.chatModelSchema = zod_1.z
71
73
  .preprocess((v) => {
72
74
  if (!(0, type_utils_js_1.isRecord)(v))
@@ -74,9 +76,11 @@ exports.chatModelSchema = zod_1.z
74
76
  return { ...v, model: v.model || `${v.provider || ""}:${v.name || ""}` };
75
77
  }, zod_1.z.union([zod_1.z.string(), chatModelObjectSchema]))
76
78
  .transform((v) => typeof v === "string" ? { model: v } : v);
77
- const imageModelObjectSchema = camelizeSchema(zod_1.z.object({
79
+ const imageModelObjectSchema = camelizeSchema(zod_1.z
80
+ .object({
78
81
  model: optionalize(zod_1.z.string()),
79
- }));
82
+ })
83
+ .passthrough());
80
84
  exports.imageModelSchema = zod_1.z
81
85
  .union([zod_1.z.string(), imageModelObjectSchema])
82
86
  .transform((v) => typeof v === "string" ? { model: v } : v);
@@ -93,6 +93,7 @@ export interface ReflectionMode {
93
93
  * @default false
94
94
  */
95
95
  returnLastOnMaxIterations?: boolean;
96
+ customErrorMessage?: string;
96
97
  }
97
98
  /**
98
99
  * Configuration options for creating a TeamAgent.
@@ -24,24 +24,24 @@ type CliAgent = string | {
24
24
  declare const aigneFileSchema: z.ZodObject<{
25
25
  name: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
26
26
  description: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
27
- model: ZodType<{
28
- model?: string | undefined;
29
- temperature?: number | undefined;
30
- topP?: number | undefined;
31
- frequencyPenalty?: number | undefined;
32
- presencePenalty?: number | undefined;
33
- } | undefined, z.ZodTypeDef, {
34
- model?: string | undefined;
35
- temperature?: number | undefined;
36
- topP?: number | undefined;
37
- frequencyPenalty?: number | undefined;
38
- presencePenalty?: number | undefined;
39
- } | undefined>;
40
- imageModel: ZodType<{
41
- model?: string | undefined;
42
- } | undefined, z.ZodTypeDef, {
43
- model?: string | undefined;
44
- } | undefined>;
27
+ model: ZodType<z.objectInputType<{
28
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
29
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
30
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
31
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
32
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
33
+ }, z.ZodTypeAny, "passthrough"> | undefined, z.ZodTypeDef, z.objectInputType<{
34
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
35
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
36
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
37
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
38
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
39
+ }, z.ZodTypeAny, "passthrough"> | undefined>;
40
+ imageModel: ZodType<z.objectInputType<{
41
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
42
+ }, z.ZodTypeAny, "passthrough"> | undefined, z.ZodTypeDef, z.objectInputType<{
43
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
44
+ }, z.ZodTypeAny, "passthrough"> | undefined>;
45
45
  agents: ZodType<string[] | undefined, z.ZodTypeDef, string[] | undefined>;
46
46
  skills: ZodType<string[] | undefined, z.ZodTypeDef, string[] | undefined>;
47
47
  mcpServer: ZodType<{
@@ -57,18 +57,18 @@ declare const aigneFileSchema: z.ZodObject<{
57
57
  chat?: string | undefined;
58
58
  } | undefined>;
59
59
  }, "strip", z.ZodTypeAny, {
60
- model?: {
61
- model?: string | undefined;
62
- temperature?: number | undefined;
63
- topP?: number | undefined;
64
- frequencyPenalty?: number | undefined;
65
- presencePenalty?: number | undefined;
66
- } | undefined;
60
+ model?: z.objectInputType<{
61
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
62
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
63
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
64
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
65
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
66
+ }, z.ZodTypeAny, "passthrough"> | undefined;
67
67
  name?: string | undefined;
68
68
  description?: string | undefined;
69
- imageModel?: {
70
- model?: string | undefined;
71
- } | undefined;
69
+ imageModel?: z.objectInputType<{
70
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
71
+ }, z.ZodTypeAny, "passthrough"> | undefined;
72
72
  skills?: string[] | undefined;
73
73
  agents?: string[] | undefined;
74
74
  mcpServer?: {
@@ -79,18 +79,18 @@ declare const aigneFileSchema: z.ZodObject<{
79
79
  chat?: string | undefined;
80
80
  } | undefined;
81
81
  }, {
82
- model?: {
83
- model?: string | undefined;
84
- temperature?: number | undefined;
85
- topP?: number | undefined;
86
- frequencyPenalty?: number | undefined;
87
- presencePenalty?: number | undefined;
88
- } | undefined;
82
+ model?: z.objectInputType<{
83
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
84
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
85
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
86
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
87
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
88
+ }, z.ZodTypeAny, "passthrough"> | undefined;
89
89
  name?: string | undefined;
90
90
  description?: string | undefined;
91
- imageModel?: {
92
- model?: string | undefined;
93
- } | undefined;
91
+ imageModel?: z.objectInputType<{
92
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
93
+ }, z.ZodTypeAny, "passthrough"> | undefined;
94
94
  skills?: string[] | undefined;
95
95
  agents?: string[] | undefined;
96
96
  mcpServer?: {
@@ -35,27 +35,27 @@ declare const chatModelObjectSchema: z.ZodObject<{
35
35
  topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
36
36
  frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
37
37
  presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
38
- }, "strip", z.ZodTypeAny, {
39
- model?: string | undefined;
40
- temperature?: number | undefined;
41
- topP?: number | undefined;
42
- frequencyPenalty?: number | undefined;
43
- presencePenalty?: number | undefined;
44
- }, {
45
- model?: string | undefined;
46
- temperature?: number | undefined;
47
- topP?: number | undefined;
48
- frequencyPenalty?: number | undefined;
49
- presencePenalty?: number | undefined;
50
- }>;
38
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
39
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
40
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
41
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
42
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
43
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
44
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
45
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
46
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
47
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
48
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
49
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
50
+ }, z.ZodTypeAny, "passthrough">>;
51
51
  export declare const chatModelSchema: typeof chatModelObjectSchema;
52
52
  declare const imageModelObjectSchema: z.ZodObject<{
53
53
  model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
54
- }, "strip", z.ZodTypeAny, {
55
- model?: string | undefined;
56
- }, {
57
- model?: string | undefined;
58
- }>;
54
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
55
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
56
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
57
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
58
+ }, z.ZodTypeAny, "passthrough">>;
59
59
  export declare const imageModelSchema: typeof imageModelObjectSchema;
60
60
  export declare function optionalize<T>(schema: ZodType<T>): ZodType<T | undefined>;
61
61
  export declare function camelizeSchema<T extends ZodType>(schema: T, { shallow }?: {
@@ -209,7 +209,7 @@ export class ChatModel extends Model {
209
209
  for (const toolCall of toolCalls) {
210
210
  const originalTool = toolsMap[toolCall.function.name];
211
211
  if (!originalTool) {
212
- throw new Error(`Tool "${toolCall.function.name}" not found in tools map`);
212
+ throw new StructuredOutputError(`Tool "${toolCall.function.name}" not found in tools map`);
213
213
  }
214
214
  toolCall.function.name = originalTool.function.name;
215
215
  toolCall.function.arguments = this.validateJsonSchema(originalTool.function.parameters, toolCall.function.arguments);
@@ -93,6 +93,7 @@ export interface ReflectionMode {
93
93
  * @default false
94
94
  */
95
95
  returnLastOnMaxIterations?: boolean;
96
+ customErrorMessage?: string;
96
97
  }
97
98
  /**
98
99
  * Configuration options for creating a TeamAgent.
@@ -186,7 +186,8 @@ export class TeamAgent extends Agent {
186
186
  break;
187
187
  }
188
188
  }
189
- throw new Error(`Reflection mode exceeded max iterations ${this.reflection.maxIterations}. Please review the feedback and try again.`);
189
+ throw new Error(this.reflection.customErrorMessage ||
190
+ `Reflection mode exceeded max iterations ${this.reflection.maxIterations}. Please review the feedback and try again.`);
190
191
  }
191
192
  async *_processIterator(key, input, options) {
192
193
  assert(this.iterateOn, "iterateInputKey must be defined for iterator processing");
@@ -124,6 +124,7 @@ export async function parseAgentFile(path, data) {
124
124
  isApproved: z.string(),
125
125
  maxIterations: optionalize(z.number().int().min(1)),
126
126
  returnLastOnMaxIterations: optionalize(z.boolean()),
127
+ customErrorMessage: optionalize(z.string()),
127
128
  }))),
128
129
  })
129
130
  .extend(baseAgentSchema.shape),
@@ -24,24 +24,24 @@ type CliAgent = string | {
24
24
  declare const aigneFileSchema: z.ZodObject<{
25
25
  name: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
26
26
  description: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
27
- model: ZodType<{
28
- model?: string | undefined;
29
- temperature?: number | undefined;
30
- topP?: number | undefined;
31
- frequencyPenalty?: number | undefined;
32
- presencePenalty?: number | undefined;
33
- } | undefined, z.ZodTypeDef, {
34
- model?: string | undefined;
35
- temperature?: number | undefined;
36
- topP?: number | undefined;
37
- frequencyPenalty?: number | undefined;
38
- presencePenalty?: number | undefined;
39
- } | undefined>;
40
- imageModel: ZodType<{
41
- model?: string | undefined;
42
- } | undefined, z.ZodTypeDef, {
43
- model?: string | undefined;
44
- } | undefined>;
27
+ model: ZodType<z.objectInputType<{
28
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
29
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
30
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
31
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
32
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
33
+ }, z.ZodTypeAny, "passthrough"> | undefined, z.ZodTypeDef, z.objectInputType<{
34
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
35
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
36
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
37
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
38
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
39
+ }, z.ZodTypeAny, "passthrough"> | undefined>;
40
+ imageModel: ZodType<z.objectInputType<{
41
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
42
+ }, z.ZodTypeAny, "passthrough"> | undefined, z.ZodTypeDef, z.objectInputType<{
43
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
44
+ }, z.ZodTypeAny, "passthrough"> | undefined>;
45
45
  agents: ZodType<string[] | undefined, z.ZodTypeDef, string[] | undefined>;
46
46
  skills: ZodType<string[] | undefined, z.ZodTypeDef, string[] | undefined>;
47
47
  mcpServer: ZodType<{
@@ -57,18 +57,18 @@ declare const aigneFileSchema: z.ZodObject<{
57
57
  chat?: string | undefined;
58
58
  } | undefined>;
59
59
  }, "strip", z.ZodTypeAny, {
60
- model?: {
61
- model?: string | undefined;
62
- temperature?: number | undefined;
63
- topP?: number | undefined;
64
- frequencyPenalty?: number | undefined;
65
- presencePenalty?: number | undefined;
66
- } | undefined;
60
+ model?: z.objectInputType<{
61
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
62
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
63
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
64
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
65
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
66
+ }, z.ZodTypeAny, "passthrough"> | undefined;
67
67
  name?: string | undefined;
68
68
  description?: string | undefined;
69
- imageModel?: {
70
- model?: string | undefined;
71
- } | undefined;
69
+ imageModel?: z.objectInputType<{
70
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
71
+ }, z.ZodTypeAny, "passthrough"> | undefined;
72
72
  skills?: string[] | undefined;
73
73
  agents?: string[] | undefined;
74
74
  mcpServer?: {
@@ -79,18 +79,18 @@ declare const aigneFileSchema: z.ZodObject<{
79
79
  chat?: string | undefined;
80
80
  } | undefined;
81
81
  }, {
82
- model?: {
83
- model?: string | undefined;
84
- temperature?: number | undefined;
85
- topP?: number | undefined;
86
- frequencyPenalty?: number | undefined;
87
- presencePenalty?: number | undefined;
88
- } | undefined;
82
+ model?: z.objectInputType<{
83
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
84
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
85
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
86
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
87
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
88
+ }, z.ZodTypeAny, "passthrough"> | undefined;
89
89
  name?: string | undefined;
90
90
  description?: string | undefined;
91
- imageModel?: {
92
- model?: string | undefined;
93
- } | undefined;
91
+ imageModel?: z.objectInputType<{
92
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
93
+ }, z.ZodTypeAny, "passthrough"> | undefined;
94
94
  skills?: string[] | undefined;
95
95
  agents?: string[] | undefined;
96
96
  mcpServer?: {
@@ -35,27 +35,27 @@ declare const chatModelObjectSchema: z.ZodObject<{
35
35
  topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
36
36
  frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
37
37
  presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
38
- }, "strip", z.ZodTypeAny, {
39
- model?: string | undefined;
40
- temperature?: number | undefined;
41
- topP?: number | undefined;
42
- frequencyPenalty?: number | undefined;
43
- presencePenalty?: number | undefined;
44
- }, {
45
- model?: string | undefined;
46
- temperature?: number | undefined;
47
- topP?: number | undefined;
48
- frequencyPenalty?: number | undefined;
49
- presencePenalty?: number | undefined;
50
- }>;
38
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
39
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
40
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
41
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
42
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
43
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
44
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
45
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
46
+ temperature: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
47
+ topP: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
48
+ frequencyPenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
49
+ presencePenalty: ZodType<number | undefined, z.ZodTypeDef, number | undefined>;
50
+ }, z.ZodTypeAny, "passthrough">>;
51
51
  export declare const chatModelSchema: typeof chatModelObjectSchema;
52
52
  declare const imageModelObjectSchema: z.ZodObject<{
53
53
  model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
54
- }, "strip", z.ZodTypeAny, {
55
- model?: string | undefined;
56
- }, {
57
- model?: string | undefined;
58
- }>;
54
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
55
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
56
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
57
+ model: ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
58
+ }, z.ZodTypeAny, "passthrough">>;
59
59
  export declare const imageModelSchema: typeof imageModelObjectSchema;
60
60
  export declare function optionalize<T>(schema: ZodType<T>): ZodType<T | undefined>;
61
61
  export declare function camelizeSchema<T extends ZodType>(schema: T, { shallow }?: {
@@ -54,13 +54,15 @@ export const defaultInputSchema = z.record(z.string(), z.union([
54
54
  }),
55
55
  z.unknown(),
56
56
  ]));
57
- const chatModelObjectSchema = camelizeSchema(z.object({
57
+ const chatModelObjectSchema = camelizeSchema(z
58
+ .object({
58
59
  model: optionalize(z.string()),
59
60
  temperature: optionalize(z.number().min(0).max(2)),
60
61
  topP: optionalize(z.number().min(0)),
61
62
  frequencyPenalty: optionalize(z.number().min(-2).max(2)),
62
63
  presencePenalty: optionalize(z.number().min(-2).max(2)),
63
- }));
64
+ })
65
+ .passthrough());
64
66
  export const chatModelSchema = z
65
67
  .preprocess((v) => {
66
68
  if (!isRecord(v))
@@ -68,9 +70,11 @@ export const chatModelSchema = z
68
70
  return { ...v, model: v.model || `${v.provider || ""}:${v.name || ""}` };
69
71
  }, z.union([z.string(), chatModelObjectSchema]))
70
72
  .transform((v) => typeof v === "string" ? { model: v } : v);
71
- const imageModelObjectSchema = camelizeSchema(z.object({
73
+ const imageModelObjectSchema = camelizeSchema(z
74
+ .object({
72
75
  model: optionalize(z.string()),
73
- }));
76
+ })
77
+ .passthrough());
74
78
  export const imageModelSchema = z
75
79
  .union([z.string(), imageModelObjectSchema])
76
80
  .transform((v) => typeof v === "string" ? { model: v } : v);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aigne/core",
3
- "version": "1.62.0-beta.5",
3
+ "version": "1.62.0",
4
4
  "description": "The functional core of agentic AI",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -92,7 +92,7 @@
92
92
  "zod": "^3.25.67",
93
93
  "zod-from-json-schema": "^0.0.5",
94
94
  "zod-to-json-schema": "^3.24.6",
95
- "@aigne/observability-api": "^0.11.1-beta.2",
95
+ "@aigne/observability-api": "^0.11.1",
96
96
  "@aigne/platform-helpers": "^0.6.3"
97
97
  },
98
98
  "devDependencies": {