@aigne/core 1.62.0-beta.2 → 1.62.0-beta.4

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,29 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.62.0-beta.4](https://github.com/AIGNE-io/aigne-framework/compare/core-v1.62.0-beta.3...core-v1.62.0-beta.4) (2025-10-01)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * handle optional imageModel in loader function ([#582](https://github.com/AIGNE-io/aigne-framework/issues/582)) ([7d55084](https://github.com/AIGNE-io/aigne-framework/commit/7d550841b6edfc762ef7c188a585d9fc8ffdf4c7))
9
+ * update deps compatibility in CommonJS environment ([#580](https://github.com/AIGNE-io/aigne-framework/issues/580)) ([a1e35d0](https://github.com/AIGNE-io/aigne-framework/commit/a1e35d016405accb51c1aeb6a544503a1c78e912))
10
+
11
+
12
+ ### Dependencies
13
+
14
+ * The following workspace dependencies were updated
15
+ * dependencies
16
+ * @aigne/observability-api bumped to 0.11.1-beta.2
17
+
18
+ ## [1.62.0-beta.3](https://github.com/AIGNE-io/aigne-framework/compare/core-v1.62.0-beta.2...core-v1.62.0-beta.3) (2025-10-01)
19
+
20
+
21
+ ### Dependencies
22
+
23
+ * The following workspace dependencies were updated
24
+ * dependencies
25
+ * @aigne/observability-api bumped to 0.11.1-beta.1
26
+
3
27
  ## [1.62.0-beta.2](https://github.com/AIGNE-io/aigne-framework/compare/core-v1.62.0-beta.1...core-v1.62.0-beta.2) (2025-10-01)
4
28
 
5
29
 
@@ -184,7 +184,7 @@ class ChatModel extends model_js_1.Model {
184
184
  type: "file",
185
185
  data: await index_js_1.nodejs.fs.readFile(item.path, "base64"),
186
186
  path: undefined,
187
- mimeType: item.mimeType || ChatModel.getMimeType(item.filename || item.path),
187
+ mimeType: item.mimeType || (await ChatModel.getMimeType(item.filename || item.path)),
188
188
  };
189
189
  }
190
190
  if ((input.modelOptions?.preferInputFileType ||
@@ -195,7 +195,7 @@ class ChatModel extends model_js_1.Model {
195
195
  type: "file",
196
196
  data: Buffer.from(await (await this.downloadFile(item.url)).arrayBuffer()).toString("base64"),
197
197
  url: undefined,
198
- mimeType: item.mimeType || ChatModel.getMimeType(item.filename || item.url),
198
+ mimeType: item.mimeType || (await ChatModel.getMimeType(item.filename || item.url)),
199
199
  };
200
200
  }
201
201
  }
@@ -35,7 +35,7 @@ class ImageModel extends model_js_1.Model {
35
35
  type: "file",
36
36
  data: await index_js_1.nodejs.fs.readFile(item.path, "base64"),
37
37
  path: undefined,
38
- mimeType: item.mimeType || ImageModel.getMimeType(item.filename || item.path),
38
+ mimeType: item.mimeType || (await ImageModel.getMimeType(item.filename || item.path)),
39
39
  };
40
40
  }
41
41
  if ((input.modelOptions?.preferInputFileType ||
@@ -46,7 +46,7 @@ class ImageModel extends model_js_1.Model {
46
46
  type: "file",
47
47
  data: Buffer.from(await (await this.downloadFile(item.url)).arrayBuffer()).toString("base64"),
48
48
  url: undefined,
49
- mimeType: item.mimeType || ImageModel.getMimeType(item.filename || item.url),
49
+ mimeType: item.mimeType || (await ImageModel.getMimeType(item.filename || item.url)),
50
50
  };
51
51
  }
52
52
  }
@@ -4,8 +4,8 @@ export declare abstract class Model<I extends Message = any, O extends Message =
4
4
  transformFileType(fileType: "file", data: FileUnionContent, options: AgentInvokeOptions): Promise<FileContent>;
5
5
  transformFileType(fileType: "local" | undefined, data: FileUnionContent, options: AgentInvokeOptions): Promise<LocalContent>;
6
6
  transformFileType(fileType: FileType | undefined, data: FileUnionContent, options: AgentInvokeOptions): Promise<FileUnionContent>;
7
- static getFileExtension(type: string): string | undefined;
8
- static getMimeType(filename: string): string | undefined;
7
+ static getFileExtension(type: string): Promise<string | undefined>;
8
+ static getMimeType(filename: string): Promise<string | undefined>;
9
9
  downloadFile(url: string): Promise<Response>;
10
10
  }
11
11
  export type FileType = "local" | "file";
@@ -1,13 +1,42 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
5
35
  Object.defineProperty(exports, "__esModule", { value: true });
6
36
  exports.fileUnionContentsSchema = exports.fileUnionContentSchema = exports.localContentSchema = exports.fileContentSchema = exports.urlContentSchema = exports.fileContentBaseSchema = exports.fileTypeSchema = exports.Model = void 0;
7
37
  const index_js_1 = require("@aigne/platform-helpers/nodejs/index.js");
8
- const mime_1 = __importDefault(require("mime"));
38
+ const uuid_1 = require("@aigne/uuid");
9
39
  const ufo_1 = require("ufo");
10
- const uuid_1 = require("uuid");
11
40
  const zod_1 = require("zod");
12
41
  const schema_js_1 = require("../loader/schema.js");
13
42
  const type_utils_js_1 = require("../utils/type-utils.js");
@@ -21,20 +50,20 @@ class Model extends agent_js_1.Agent {
21
50
  case "local": {
22
51
  const dir = index_js_1.nodejs.path.join(index_js_1.nodejs.os.tmpdir(), options.context.id);
23
52
  await index_js_1.nodejs.fs.mkdir(dir, { recursive: true });
24
- const ext = Model.getFileExtension(data.mimeType || data.filename || "");
53
+ const ext = await Model.getFileExtension(data.mimeType || data.filename || "");
25
54
  const id = (0, uuid_1.v7)();
26
55
  const filename = ext ? `${id}.${ext}` : id;
27
56
  const path = index_js_1.nodejs.path.join(dir, filename);
28
57
  let mimeType = data.mimeType;
29
58
  if (data.type === "file") {
30
59
  await index_js_1.nodejs.fs.writeFile(path, data.data, "base64");
31
- mimeType ||= Model.getMimeType(data.filename || "");
60
+ mimeType ||= await Model.getMimeType(data.filename || "");
32
61
  }
33
62
  else if (data.type === "url") {
34
63
  await this.downloadFile(data.url)
35
64
  .then((res) => res.body)
36
65
  .then((body) => body && index_js_1.nodejs.fs.writeFile(path, body));
37
- mimeType ||= Model.getMimeType(data.filename || (0, ufo_1.parseURL)(data.url).pathname);
66
+ mimeType ||= await Model.getMimeType(data.filename || (0, ufo_1.parseURL)(data.url).pathname);
38
67
  }
39
68
  else {
40
69
  throw new Error(`Unexpected file type: ${data.type}`);
@@ -46,11 +75,11 @@ class Model extends agent_js_1.Agent {
46
75
  let mimeType = data.mimeType;
47
76
  if (data.type === "local") {
48
77
  base64 = await index_js_1.nodejs.fs.readFile(data.path, "base64");
49
- mimeType ||= Model.getMimeType(data.filename || data.path);
78
+ mimeType ||= await Model.getMimeType(data.filename || data.path);
50
79
  }
51
80
  else if (data.type === "url") {
52
81
  base64 = Buffer.from(await (await this.downloadFile(data.url)).arrayBuffer()).toString("base64");
53
- mimeType ||= Model.getMimeType(data.filename || (0, ufo_1.parseURL)(data.url).pathname);
82
+ mimeType ||= await Model.getMimeType(data.filename || (0, ufo_1.parseURL)(data.url).pathname);
54
83
  }
55
84
  else {
56
85
  throw new Error(`Unexpected file type: ${data.type}`);
@@ -59,11 +88,13 @@ class Model extends agent_js_1.Agent {
59
88
  }
60
89
  }
61
90
  }
62
- static getFileExtension(type) {
63
- return mime_1.default.getExtension(type) || undefined;
91
+ static async getFileExtension(type) {
92
+ const { default: mime } = await Promise.resolve().then(() => __importStar(require("mime")));
93
+ return mime.getExtension(type) || undefined;
64
94
  }
65
- static getMimeType(filename) {
66
- return mime_1.default.getType(filename) || undefined;
95
+ static async getMimeType(filename) {
96
+ const { default: mime } = await Promise.resolve().then(() => __importStar(require("mime")));
97
+ return mime.getType(filename) || undefined;
67
98
  }
68
99
  async downloadFile(url) {
69
100
  const response = await fetch(url);
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AIGNEContext = void 0;
7
+ const uuid_1 = require("@aigne/uuid");
7
8
  const api_1 = require("@opentelemetry/api");
8
9
  const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
9
10
  const strict_event_emitter_1 = require("strict-event-emitter");
10
- const uuid_1 = require("uuid");
11
11
  const zod_1 = require("zod");
12
12
  const agent_js_1 = require("../agents/agent.js");
13
13
  const types_js_1 = require("../agents/types.js");
@@ -47,7 +47,9 @@ async function load(path, options = {}) {
47
47
  rootDir,
48
48
  model: typeof options.model === "function" ? await options.model(aigne.model) : options.model,
49
49
  imageModel: typeof options.imageModel === "function"
50
- ? await options.imageModel(aigne.imageModel)
50
+ ? aigne.imageModel
51
+ ? await options.imageModel(aigne.imageModel)
52
+ : undefined
51
53
  : options.imageModel,
52
54
  agents: pickAgents(aigne.agents ?? []),
53
55
  skills: pickAgents(aigne.skills ?? []),
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MemoryAgent = exports.newMemoryId = void 0;
4
- const uuid_1 = require("uuid");
4
+ const uuid_1 = require("@aigne/uuid");
5
5
  const zod_1 = require("zod");
6
6
  const agent_js_1 = require("../agents/agent.js");
7
7
  const type_utils_js_1 = require("../utils/type-utils.js");
@@ -4,8 +4,8 @@ export declare abstract class Model<I extends Message = any, O extends Message =
4
4
  transformFileType(fileType: "file", data: FileUnionContent, options: AgentInvokeOptions): Promise<FileContent>;
5
5
  transformFileType(fileType: "local" | undefined, data: FileUnionContent, options: AgentInvokeOptions): Promise<LocalContent>;
6
6
  transformFileType(fileType: FileType | undefined, data: FileUnionContent, options: AgentInvokeOptions): Promise<FileUnionContent>;
7
- static getFileExtension(type: string): string | undefined;
8
- static getMimeType(filename: string): string | undefined;
7
+ static getFileExtension(type: string): Promise<string | undefined>;
8
+ static getMimeType(filename: string): Promise<string | undefined>;
9
9
  downloadFile(url: string): Promise<Response>;
10
10
  }
11
11
  export type FileType = "local" | "file";
@@ -147,7 +147,7 @@ export class ChatModel extends Model {
147
147
  type: "file",
148
148
  data: await nodejs.fs.readFile(item.path, "base64"),
149
149
  path: undefined,
150
- mimeType: item.mimeType || ChatModel.getMimeType(item.filename || item.path),
150
+ mimeType: item.mimeType || (await ChatModel.getMimeType(item.filename || item.path)),
151
151
  };
152
152
  }
153
153
  if ((input.modelOptions?.preferInputFileType ||
@@ -158,7 +158,7 @@ export class ChatModel extends Model {
158
158
  type: "file",
159
159
  data: Buffer.from(await (await this.downloadFile(item.url)).arrayBuffer()).toString("base64"),
160
160
  url: undefined,
161
- mimeType: item.mimeType || ChatModel.getMimeType(item.filename || item.url),
161
+ mimeType: item.mimeType || (await ChatModel.getMimeType(item.filename || item.url)),
162
162
  };
163
163
  }
164
164
  }
@@ -32,7 +32,7 @@ export class ImageModel extends Model {
32
32
  type: "file",
33
33
  data: await nodejs.fs.readFile(item.path, "base64"),
34
34
  path: undefined,
35
- mimeType: item.mimeType || ImageModel.getMimeType(item.filename || item.path),
35
+ mimeType: item.mimeType || (await ImageModel.getMimeType(item.filename || item.path)),
36
36
  };
37
37
  }
38
38
  if ((input.modelOptions?.preferInputFileType ||
@@ -43,7 +43,7 @@ export class ImageModel extends Model {
43
43
  type: "file",
44
44
  data: Buffer.from(await (await this.downloadFile(item.url)).arrayBuffer()).toString("base64"),
45
45
  url: undefined,
46
- mimeType: item.mimeType || ImageModel.getMimeType(item.filename || item.url),
46
+ mimeType: item.mimeType || (await ImageModel.getMimeType(item.filename || item.url)),
47
47
  };
48
48
  }
49
49
  }
@@ -4,8 +4,8 @@ export declare abstract class Model<I extends Message = any, O extends Message =
4
4
  transformFileType(fileType: "file", data: FileUnionContent, options: AgentInvokeOptions): Promise<FileContent>;
5
5
  transformFileType(fileType: "local" | undefined, data: FileUnionContent, options: AgentInvokeOptions): Promise<LocalContent>;
6
6
  transformFileType(fileType: FileType | undefined, data: FileUnionContent, options: AgentInvokeOptions): Promise<FileUnionContent>;
7
- static getFileExtension(type: string): string | undefined;
8
- static getMimeType(filename: string): string | undefined;
7
+ static getFileExtension(type: string): Promise<string | undefined>;
8
+ static getMimeType(filename: string): Promise<string | undefined>;
9
9
  downloadFile(url: string): Promise<Response>;
10
10
  }
11
11
  export type FileType = "local" | "file";
@@ -1,7 +1,6 @@
1
1
  import { nodejs } from "@aigne/platform-helpers/nodejs/index.js";
2
- import mime from "mime";
2
+ import { v7 } from "@aigne/uuid";
3
3
  import { parseURL } from "ufo";
4
- import { v7 } from "uuid";
5
4
  import { z } from "zod";
6
5
  import { optionalize } from "../loader/schema.js";
7
6
  import { pick } from "../utils/type-utils.js";
@@ -15,20 +14,20 @@ export class Model extends Agent {
15
14
  case "local": {
16
15
  const dir = nodejs.path.join(nodejs.os.tmpdir(), options.context.id);
17
16
  await nodejs.fs.mkdir(dir, { recursive: true });
18
- const ext = Model.getFileExtension(data.mimeType || data.filename || "");
17
+ const ext = await Model.getFileExtension(data.mimeType || data.filename || "");
19
18
  const id = v7();
20
19
  const filename = ext ? `${id}.${ext}` : id;
21
20
  const path = nodejs.path.join(dir, filename);
22
21
  let mimeType = data.mimeType;
23
22
  if (data.type === "file") {
24
23
  await nodejs.fs.writeFile(path, data.data, "base64");
25
- mimeType ||= Model.getMimeType(data.filename || "");
24
+ mimeType ||= await Model.getMimeType(data.filename || "");
26
25
  }
27
26
  else if (data.type === "url") {
28
27
  await this.downloadFile(data.url)
29
28
  .then((res) => res.body)
30
29
  .then((body) => body && nodejs.fs.writeFile(path, body));
31
- mimeType ||= Model.getMimeType(data.filename || parseURL(data.url).pathname);
30
+ mimeType ||= await Model.getMimeType(data.filename || parseURL(data.url).pathname);
32
31
  }
33
32
  else {
34
33
  throw new Error(`Unexpected file type: ${data.type}`);
@@ -40,11 +39,11 @@ export class Model extends Agent {
40
39
  let mimeType = data.mimeType;
41
40
  if (data.type === "local") {
42
41
  base64 = await nodejs.fs.readFile(data.path, "base64");
43
- mimeType ||= Model.getMimeType(data.filename || data.path);
42
+ mimeType ||= await Model.getMimeType(data.filename || data.path);
44
43
  }
45
44
  else if (data.type === "url") {
46
45
  base64 = Buffer.from(await (await this.downloadFile(data.url)).arrayBuffer()).toString("base64");
47
- mimeType ||= Model.getMimeType(data.filename || parseURL(data.url).pathname);
46
+ mimeType ||= await Model.getMimeType(data.filename || parseURL(data.url).pathname);
48
47
  }
49
48
  else {
50
49
  throw new Error(`Unexpected file type: ${data.type}`);
@@ -53,10 +52,12 @@ export class Model extends Agent {
53
52
  }
54
53
  }
55
54
  }
56
- static getFileExtension(type) {
55
+ static async getFileExtension(type) {
56
+ const { default: mime } = await import("mime");
57
57
  return mime.getExtension(type) || undefined;
58
58
  }
59
- static getMimeType(filename) {
59
+ static async getMimeType(filename) {
60
+ const { default: mime } = await import("mime");
60
61
  return mime.getType(filename) || undefined;
61
62
  }
62
63
  async downloadFile(url) {
@@ -1,7 +1,7 @@
1
+ import { v7 } from "@aigne/uuid";
1
2
  import { context, SpanStatusCode, trace } from "@opentelemetry/api";
2
3
  import equal from "fast-deep-equal";
3
4
  import { Emitter } from "strict-event-emitter";
4
- import { v7 } from "uuid";
5
5
  import { z } from "zod";
6
6
  import { isAgentResponseDelta, isEmptyChunk, } from "../agents/agent.js";
7
7
  import { isTransferAgentOutput, transferAgentOutputKey, } from "../agents/types.js";
@@ -42,7 +42,9 @@ export async function load(path, options = {}) {
42
42
  rootDir,
43
43
  model: typeof options.model === "function" ? await options.model(aigne.model) : options.model,
44
44
  imageModel: typeof options.imageModel === "function"
45
- ? await options.imageModel(aigne.imageModel)
45
+ ? aigne.imageModel
46
+ ? await options.imageModel(aigne.imageModel)
47
+ : undefined
46
48
  : options.imageModel,
47
49
  agents: pickAgents(aigne.agents ?? []),
48
50
  skills: pickAgents(aigne.skills ?? []),
@@ -1,4 +1,4 @@
1
- import { v7 } from "uuid";
1
+ import { v7 } from "@aigne/uuid";
2
2
  import { z } from "zod";
3
3
  import { Agent, } from "../agents/agent.js";
4
4
  import { checkArguments, remove } from "../utils/type-utils.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aigne/core",
3
- "version": "1.62.0-beta.2",
3
+ "version": "1.62.0-beta.4",
4
4
  "description": "The functional core of agentic AI",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -66,6 +66,7 @@
66
66
  },
67
67
  "dependencies": {
68
68
  "@aigne/json-schema-to-zod": "^1.3.3",
69
+ "@aigne/uuid": "^13.0.1",
69
70
  "@inquirer/prompts": "^7.8.6",
70
71
  "@modelcontextprotocol/sdk": "^1.18.0",
71
72
  "@opentelemetry/api": "^1.9.0",
@@ -87,12 +88,11 @@
87
88
  "raw-body": "^3.0.1",
88
89
  "strict-event-emitter": "^0.5.1",
89
90
  "ufo": "^1.6.1",
90
- "uuid": "^13.0.0",
91
91
  "yaml": "^2.8.1",
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",
95
+ "@aigne/observability-api": "^0.11.1-beta.2",
96
96
  "@aigne/platform-helpers": "^0.6.3"
97
97
  },
98
98
  "devDependencies": {