@aigne/aigne-hub 1.74.0-beta → 1.74.0-beta.2

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.
@@ -3,12 +3,12 @@ const require_constants = require('./utils/constants.cjs');
3
3
  const require_hub = require('./utils/hub.cjs');
4
4
  const require_type = require('./utils/type.cjs');
5
5
  let _aigne_core = require("@aigne/core");
6
- let ufo = require("ufo");
7
6
  let _aigne_core_utils_type_utils = require("@aigne/core/utils/type-utils");
8
7
  let _aigne_transport_http_client_base_client = require("@aigne/transport/http-client/base-client");
9
8
  let _aigne_utils_nodejs = require("@aigne/utils/nodejs");
9
+ let ufo = require("ufo");
10
10
 
11
- //#region src/aigne-hub-model.ts
11
+ //#region src/aigne-hub-chat-model.ts
12
12
  var AIGNEHubChatModel = class extends _aigne_core.ChatModel {
13
13
  constructor(options) {
14
14
  (0, _aigne_core_utils_type_utils.checkArguments)("AIGNEHubChatModel", require_type.aigneHubModelOptionsSchema, options);
@@ -0,0 +1,33 @@
1
+ import { AIGNEHubChatModelOptions } from "./utils/type.cjs";
2
+ import { AgentInvokeOptions, AgentProcessResult, ChatModel, ChatModelInput, ChatModelOutput } from "@aigne/core";
3
+ import { BaseClient, BaseClientInvokeOptions } from "@aigne/transport/http-client/base-client";
4
+
5
+ //#region src/aigne-hub-chat-model.d.ts
6
+ declare class AIGNEHubChatModel extends ChatModel {
7
+ options: AIGNEHubChatModelOptions;
8
+ constructor(options: AIGNEHubChatModelOptions);
9
+ models(): Promise<{
10
+ model: string;
11
+ type: string;
12
+ provider: string;
13
+ input_credits_per_token: string;
14
+ output_credits_per_token: string;
15
+ providerDisplayName: string;
16
+ status?: {
17
+ available: boolean;
18
+ } | null | undefined;
19
+ modelMetadata?: Record<string, unknown> | null | undefined;
20
+ }[]>;
21
+ protected _client?: Promise<BaseClient>;
22
+ get client(): Promise<BaseClient>;
23
+ private _credential?;
24
+ get credential(): Promise<{
25
+ url: string;
26
+ apiKey?: string;
27
+ model: string;
28
+ }>;
29
+ process(input: ChatModelInput, options: BaseClientInvokeOptions & AgentInvokeOptions): Promise<AgentProcessResult<ChatModelOutput>>;
30
+ }
31
+ //#endregion
32
+ export { AIGNEHubChatModel };
33
+ //# sourceMappingURL=aigne-hub-chat-model.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigne-hub-chat-model.d.cts","names":[],"sources":["../src/aigne-hub-chat-model.ts"],"mappings":";;;;;cAoBa,iBAAA,SAA0B,SAAA;EAAA,OAAA,EACA,wBAAA;EAAA,YAAA,OAAA,EAAA,wBAAA;EAAA,OAAA,GAKzB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;sBAIQ,OAAA,CAAQ,UAAA;EAAA,IAAA,OAAA,GAElB,OAAA,CAAA,UAAA;EAAA,QAAA,WAAA;EAAA,IAAA,WAAA,GAca,OAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EA6Bd,cAAA,EAAA,OAAA,EACE,uBAAA,GAA0B,kBAAA,GAClC,OAAA,CAAQ,kBAAA,CAAmB,eAAA;AAAA"}
@@ -0,0 +1,33 @@
1
+ import { AIGNEHubChatModelOptions } from "./utils/type.mjs";
2
+ import { AgentInvokeOptions, AgentProcessResult, ChatModel, ChatModelInput, ChatModelOutput } from "@aigne/core";
3
+ import { BaseClient, BaseClientInvokeOptions } from "@aigne/transport/http-client/base-client";
4
+
5
+ //#region src/aigne-hub-chat-model.d.ts
6
+ declare class AIGNEHubChatModel extends ChatModel {
7
+ options: AIGNEHubChatModelOptions;
8
+ constructor(options: AIGNEHubChatModelOptions);
9
+ models(): Promise<{
10
+ model: string;
11
+ type: string;
12
+ provider: string;
13
+ input_credits_per_token: string;
14
+ output_credits_per_token: string;
15
+ providerDisplayName: string;
16
+ status?: {
17
+ available: boolean;
18
+ } | null | undefined;
19
+ modelMetadata?: Record<string, unknown> | null | undefined;
20
+ }[]>;
21
+ protected _client?: Promise<BaseClient>;
22
+ get client(): Promise<BaseClient>;
23
+ private _credential?;
24
+ get credential(): Promise<{
25
+ url: string;
26
+ apiKey?: string;
27
+ model: string;
28
+ }>;
29
+ process(input: ChatModelInput, options: BaseClientInvokeOptions & AgentInvokeOptions): Promise<AgentProcessResult<ChatModelOutput>>;
30
+ }
31
+ //#endregion
32
+ export { AIGNEHubChatModel };
33
+ //# sourceMappingURL=aigne-hub-chat-model.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigne-hub-chat-model.d.mts","names":[],"sources":["../src/aigne-hub-chat-model.ts"],"mappings":";;;;;cAoBa,iBAAA,SAA0B,SAAA;EAAA,OAAA,EACA,wBAAA;EAAA,YAAA,OAAA,EAAA,wBAAA;EAAA,OAAA,GAKzB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;sBAIQ,OAAA,CAAQ,UAAA;EAAA,IAAA,OAAA,GAElB,OAAA,CAAA,UAAA;EAAA,QAAA,WAAA;EAAA,IAAA,WAAA,GAca,OAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EA6Bd,cAAA,EAAA,OAAA,EACE,uBAAA,GAA0B,kBAAA,GAClC,OAAA,CAAQ,kBAAA,CAAmB,eAAA;AAAA"}
@@ -3,12 +3,12 @@ import { AIGNE_HUB_BLOCKLET_DID, AIGNE_HUB_DEFAULT_MODEL, aigneHubBaseUrl } from
3
3
  import { getModels } from "./utils/hub.mjs";
4
4
  import { aigneHubModelOptionsSchema } from "./utils/type.mjs";
5
5
  import { ChatModel } from "@aigne/core";
6
- import { joinURL } from "ufo";
7
6
  import { checkArguments } from "@aigne/core/utils/type-utils";
8
7
  import { BaseClient } from "@aigne/transport/http-client/base-client";
9
8
  import { nodejs } from "@aigne/utils/nodejs";
9
+ import { joinURL } from "ufo";
10
10
 
11
- //#region src/aigne-hub-model.ts
11
+ //#region src/aigne-hub-chat-model.ts
12
12
  var AIGNEHubChatModel = class extends ChatModel {
13
13
  constructor(options) {
14
14
  checkArguments("AIGNEHubChatModel", aigneHubModelOptionsSchema, options);
@@ -78,4 +78,4 @@ var AIGNEHubChatModel = class extends ChatModel {
78
78
 
79
79
  //#endregion
80
80
  export { AIGNEHubChatModel };
81
- //# sourceMappingURL=aigne-hub-model.mjs.map
81
+ //# sourceMappingURL=aigne-hub-chat-model.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigne-hub-chat-model.mjs","names":[],"sources":["../src/aigne-hub-chat-model.ts"],"sourcesContent":["import {\n type AgentInvokeOptions,\n type AgentProcessResult,\n ChatModel,\n type ChatModelInput,\n type ChatModelOutput,\n} from \"@aigne/core\";\nimport { checkArguments } from \"@aigne/core/utils/type-utils\";\nimport { BaseClient, type BaseClientInvokeOptions } from \"@aigne/transport/http-client/base-client\";\nimport { nodejs } from \"@aigne/utils/nodejs\";\nimport { joinURL } from \"ufo\";\nimport { getAIGNEHubMountPoint } from \"./utils/blocklet.js\";\nimport {\n AIGNE_HUB_BLOCKLET_DID,\n AIGNE_HUB_DEFAULT_MODEL,\n aigneHubBaseUrl,\n} from \"./utils/constants.js\";\nimport { getModels } from \"./utils/hub.js\";\nimport { type AIGNEHubChatModelOptions, aigneHubModelOptionsSchema } from \"./utils/type.js\";\n\nexport class AIGNEHubChatModel extends ChatModel {\n constructor(public override options: AIGNEHubChatModelOptions) {\n checkArguments(\"AIGNEHubChatModel\", aigneHubModelOptionsSchema, options);\n super();\n }\n\n async models() {\n return getModels({ baseURL: (await this.credential).url, type: \"chat\" });\n }\n\n protected _client?: Promise<BaseClient>;\n\n get client() {\n this._client ??= this.credential.then(({ url, apiKey, model }) => {\n const options = { ...this.options, url, apiKey, model };\n return new BaseClient(options);\n });\n return this._client;\n }\n\n private _credential?: Promise<{\n url: string;\n apiKey?: string;\n model: string;\n }>;\n\n override get credential() {\n this._credential ??= getAIGNEHubMountPoint(\n this.options.baseURL || aigneHubBaseUrl(),\n AIGNE_HUB_BLOCKLET_DID,\n ).then((url) => {\n const path = \"/api/v2/chat\";\n\n const rawCredential = process.env.BLOCKLET_AIGNE_API_CREDENTIAL;\n let credentialOptions: Record<string, any> = {};\n try {\n credentialOptions =\n typeof rawCredential === \"string\" ? JSON.parse(rawCredential) : (rawCredential ?? {});\n } catch (err) {\n console.error(err);\n }\n\n return {\n ...credentialOptions,\n url: url.endsWith(path) ? url : joinURL(url, path),\n apiKey: this.options.apiKey || process.env.AIGNE_HUB_API_KEY || credentialOptions.apiKey,\n model:\n this.options.model || process.env.BLOCKLET_AIGNE_API_MODEL || AIGNE_HUB_DEFAULT_MODEL,\n };\n });\n\n return this._credential;\n }\n\n override async process(\n input: ChatModelInput,\n options: BaseClientInvokeOptions & AgentInvokeOptions,\n ): Promise<AgentProcessResult<ChatModelOutput>> {\n const { BLOCKLET_APP_PID, ABT_NODE_DID } = nodejs.env;\n const clientId =\n this.options?.clientOptions?.clientId ||\n BLOCKLET_APP_PID ||\n ABT_NODE_DID ||\n `@aigne/aigne-hub:${typeof process !== \"undefined\" ? nodejs.os.hostname() : \"unknown\"}`;\n\n const response = await (await this.client).__invoke<ChatModelInput, ChatModelOutput>(\n undefined,\n {\n ...input,\n modelOptions: {\n ...input.modelOptions,\n model: input.modelOptions?.model || (await this.credential).model,\n },\n // Shouldn't use `local` output type for remote AIGNE Hub call, client can not access the remote filesystem\n outputFileType: \"url\",\n },\n {\n ...options,\n fetchOptions: {\n ...options.fetchOptions,\n headers: {\n ...options.fetchOptions?.headers,\n \"x-aigne-hub-client-did\": clientId,\n },\n },\n },\n );\n\n return response;\n }\n}\n"],"mappings":";;;;;;;;;;;AAoBA,IAAa,oBAAb,cAAuC,UAAU;CAC/C,YAAY,AAAgB,SAAmC;AAC7D,iBAAe,qBAAqB,4BAA4B,QAAQ;AACxE,SAAO;EAFmB;;CAK5B,MAAM,SAAS;AACb,SAAO,UAAU;GAAE,UAAU,MAAM,KAAK,YAAY;GAAK,MAAM;GAAQ,CAAC;;CAG1E,AAAU;CAEV,IAAI,SAAS;AACX,OAAK,YAAY,KAAK,WAAW,MAAM,EAAE,KAAK,QAAQ,YAAY;AAEhE,UAAO,IAAI,WADK;IAAE,GAAG,KAAK;IAAS;IAAK;IAAQ;IAAO,CACzB;IAC9B;AACF,SAAO,KAAK;;CAGd,AAAQ;CAMR,IAAa,aAAa;AACxB,OAAK,gBAAgB,sBACnB,KAAK,QAAQ,WAAW,iBAAiB,EACzC,uBACD,CAAC,MAAM,QAAQ;GACd,MAAM,OAAO;GAEb,MAAM,gBAAgB,QAAQ,IAAI;GAClC,IAAI,oBAAyC,EAAE;AAC/C,OAAI;AACF,wBACE,OAAO,kBAAkB,WAAW,KAAK,MAAM,cAAc,GAAI,iBAAiB,EAAE;YAC/E,KAAK;AACZ,YAAQ,MAAM,IAAI;;AAGpB,UAAO;IACL,GAAG;IACH,KAAK,IAAI,SAAS,KAAK,GAAG,MAAM,QAAQ,KAAK,KAAK;IAClD,QAAQ,KAAK,QAAQ,UAAU,QAAQ,IAAI,qBAAqB,kBAAkB;IAClF,OACE,KAAK,QAAQ,SAAS,QAAQ,IAAI,4BAA4B;IACjE;IACD;AAEF,SAAO,KAAK;;CAGd,MAAe,QACb,OACA,SAC8C;EAC9C,MAAM,EAAE,kBAAkB,iBAAiB,OAAO;EAClD,MAAM,WACJ,KAAK,SAAS,eAAe,YAC7B,oBACA,gBACA,oBAAoB,OAAO,YAAY,cAAc,OAAO,GAAG,UAAU,GAAG;AAyB9E,SAvBiB,OAAO,MAAM,KAAK,QAAQ,SACzC,QACA;GACE,GAAG;GACH,cAAc;IACZ,GAAG,MAAM;IACT,OAAO,MAAM,cAAc,UAAU,MAAM,KAAK,YAAY;IAC7D;GAED,gBAAgB;GACjB,EACD;GACE,GAAG;GACH,cAAc;IACZ,GAAG,QAAQ;IACX,SAAS;KACP,GAAG,QAAQ,cAAc;KACzB,0BAA0B;KAC3B;IACF;GACF,CACF"}
@@ -3,10 +3,10 @@ const require_constants = require('./utils/constants.cjs');
3
3
  const require_hub = require('./utils/hub.cjs');
4
4
  const require_type = require('./utils/type.cjs');
5
5
  let _aigne_core = require("@aigne/core");
6
- let ufo = require("ufo");
7
6
  let _aigne_core_utils_type_utils = require("@aigne/core/utils/type-utils");
8
7
  let _aigne_transport_http_client_base_client = require("@aigne/transport/http-client/base-client");
9
8
  let _aigne_utils_nodejs = require("@aigne/utils/nodejs");
9
+ let ufo = require("ufo");
10
10
 
11
11
  //#region src/aigne-hub-image-model.ts
12
12
  var AIGNEHubImageModel = class extends _aigne_core.ImageModel {
@@ -0,0 +1,33 @@
1
+ import { AIGNEHubImageModelOptions } from "./utils/type.cjs";
2
+ import { AgentProcessResult, ImageModel, ImageModelInput, ImageModelOutput } from "@aigne/core";
3
+ import { BaseClient, BaseClientInvokeOptions } from "@aigne/transport/http-client/base-client";
4
+
5
+ //#region src/aigne-hub-image-model.d.ts
6
+ declare class AIGNEHubImageModel extends ImageModel {
7
+ options: AIGNEHubImageModelOptions;
8
+ constructor(options: AIGNEHubImageModelOptions);
9
+ models(): Promise<{
10
+ model: string;
11
+ type: string;
12
+ provider: string;
13
+ input_credits_per_token: string;
14
+ output_credits_per_token: string;
15
+ providerDisplayName: string;
16
+ status?: {
17
+ available: boolean;
18
+ } | null | undefined;
19
+ modelMetadata?: Record<string, unknown> | null | undefined;
20
+ }[]>;
21
+ protected _client?: Promise<BaseClient>;
22
+ get client(): Promise<BaseClient>;
23
+ private _credential?;
24
+ get credential(): Promise<{
25
+ url: string;
26
+ apiKey?: string;
27
+ model: string;
28
+ }>;
29
+ process(input: ImageModelInput, options: BaseClientInvokeOptions): Promise<AgentProcessResult<ImageModelOutput>>;
30
+ }
31
+ //#endregion
32
+ export { AIGNEHubImageModel };
33
+ //# sourceMappingURL=aigne-hub-image-model.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigne-hub-image-model.d.cts","names":[],"sources":["../src/aigne-hub-image-model.ts"],"mappings":";;;;;cAmBa,kBAAA,SAA2B,UAAA;EAAA,OAAA,EACD,yBAAA;EAAA,YAAA,OAAA,EAAA,yBAAA;EAAA,OAAA,GAKzB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;sBAIQ,OAAA,CAAQ,UAAA;EAAA,IAAA,OAAA,GAElB,OAAA,CAAA,UAAA;EAAA,QAAA,WAAA;EAAA,IAAA,WAAA,GAca,OAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EA4Bd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
@@ -0,0 +1,33 @@
1
+ import { AIGNEHubImageModelOptions } from "./utils/type.mjs";
2
+ import { AgentProcessResult, ImageModel, ImageModelInput, ImageModelOutput } from "@aigne/core";
3
+ import { BaseClient, BaseClientInvokeOptions } from "@aigne/transport/http-client/base-client";
4
+
5
+ //#region src/aigne-hub-image-model.d.ts
6
+ declare class AIGNEHubImageModel extends ImageModel {
7
+ options: AIGNEHubImageModelOptions;
8
+ constructor(options: AIGNEHubImageModelOptions);
9
+ models(): Promise<{
10
+ model: string;
11
+ type: string;
12
+ provider: string;
13
+ input_credits_per_token: string;
14
+ output_credits_per_token: string;
15
+ providerDisplayName: string;
16
+ status?: {
17
+ available: boolean;
18
+ } | null | undefined;
19
+ modelMetadata?: Record<string, unknown> | null | undefined;
20
+ }[]>;
21
+ protected _client?: Promise<BaseClient>;
22
+ get client(): Promise<BaseClient>;
23
+ private _credential?;
24
+ get credential(): Promise<{
25
+ url: string;
26
+ apiKey?: string;
27
+ model: string;
28
+ }>;
29
+ process(input: ImageModelInput, options: BaseClientInvokeOptions): Promise<AgentProcessResult<ImageModelOutput>>;
30
+ }
31
+ //#endregion
32
+ export { AIGNEHubImageModel };
33
+ //# sourceMappingURL=aigne-hub-image-model.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigne-hub-image-model.d.mts","names":[],"sources":["../src/aigne-hub-image-model.ts"],"mappings":";;;;;cAmBa,kBAAA,SAA2B,UAAA;EAAA,OAAA,EACD,yBAAA;EAAA,YAAA,OAAA,EAAA,yBAAA;EAAA,OAAA,GAKzB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;sBAIQ,OAAA,CAAQ,UAAA;EAAA,IAAA,OAAA,GAElB,OAAA,CAAA,UAAA;EAAA,QAAA,WAAA;EAAA,IAAA,WAAA,GAca,OAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EA4Bd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
@@ -3,10 +3,10 @@ import { AIGNE_HUB_BLOCKLET_DID, AIGNE_HUB_IMAGE_MODEL, aigneHubBaseUrl } from "
3
3
  import { getModels } from "./utils/hub.mjs";
4
4
  import { aigneHubModelOptionsSchema } from "./utils/type.mjs";
5
5
  import { ImageModel } from "@aigne/core";
6
- import { joinURL } from "ufo";
7
6
  import { checkArguments } from "@aigne/core/utils/type-utils";
8
7
  import { BaseClient } from "@aigne/transport/http-client/base-client";
9
8
  import { nodejs } from "@aigne/utils/nodejs";
9
+ import { joinURL } from "ufo";
10
10
 
11
11
  //#region src/aigne-hub-image-model.ts
12
12
  var AIGNEHubImageModel = class extends ImageModel {
@@ -3,10 +3,10 @@ const require_constants = require('./utils/constants.cjs');
3
3
  const require_hub = require('./utils/hub.cjs');
4
4
  const require_type = require('./utils/type.cjs');
5
5
  let _aigne_core = require("@aigne/core");
6
- let ufo = require("ufo");
7
6
  let _aigne_core_utils_type_utils = require("@aigne/core/utils/type-utils");
8
7
  let _aigne_transport_http_client_base_client = require("@aigne/transport/http-client/base-client");
9
8
  let _aigne_utils_nodejs = require("@aigne/utils/nodejs");
9
+ let ufo = require("ufo");
10
10
 
11
11
  //#region src/aigne-hub-video-model.ts
12
12
  var AIGNEHubVideoModel = class extends _aigne_core.VideoModel {
@@ -0,0 +1,33 @@
1
+ import { AIGNEHubVideoModelOptions } from "./utils/type.cjs";
2
+ import { AgentProcessResult, VideoModel, VideoModelInput, VideoModelOutput } from "@aigne/core";
3
+ import { BaseClient, BaseClientInvokeOptions } from "@aigne/transport/http-client/base-client";
4
+
5
+ //#region src/aigne-hub-video-model.d.ts
6
+ declare class AIGNEHubVideoModel extends VideoModel {
7
+ options: AIGNEHubVideoModelOptions;
8
+ constructor(options: AIGNEHubVideoModelOptions);
9
+ models(): Promise<{
10
+ model: string;
11
+ type: string;
12
+ provider: string;
13
+ input_credits_per_token: string;
14
+ output_credits_per_token: string;
15
+ providerDisplayName: string;
16
+ status?: {
17
+ available: boolean;
18
+ } | null | undefined;
19
+ modelMetadata?: Record<string, unknown> | null | undefined;
20
+ }[]>;
21
+ protected _client?: Promise<BaseClient>;
22
+ get client(): Promise<BaseClient>;
23
+ private _credential?;
24
+ get credential(): Promise<{
25
+ url: string;
26
+ apiKey?: string;
27
+ model: string;
28
+ }>;
29
+ process(input: VideoModelInput, options: BaseClientInvokeOptions): Promise<AgentProcessResult<VideoModelOutput>>;
30
+ }
31
+ //#endregion
32
+ export { AIGNEHubVideoModel };
33
+ //# sourceMappingURL=aigne-hub-video-model.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigne-hub-video-model.d.cts","names":[],"sources":["../src/aigne-hub-video-model.ts"],"mappings":";;;;;cAmBa,kBAAA,SAA2B,UAAA;EAAA,OAAA,EACD,yBAAA;EAAA,YAAA,OAAA,EAAA,yBAAA;EAAA,OAAA,GAKzB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;sBAIQ,OAAA,CAAQ,UAAA;EAAA,IAAA,OAAA,GAElB,OAAA,CAAA,UAAA;EAAA,QAAA,WAAA;EAAA,IAAA,WAAA,GAca,OAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EA4Bd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
@@ -0,0 +1,33 @@
1
+ import { AIGNEHubVideoModelOptions } from "./utils/type.mjs";
2
+ import { AgentProcessResult, VideoModel, VideoModelInput, VideoModelOutput } from "@aigne/core";
3
+ import { BaseClient, BaseClientInvokeOptions } from "@aigne/transport/http-client/base-client";
4
+
5
+ //#region src/aigne-hub-video-model.d.ts
6
+ declare class AIGNEHubVideoModel extends VideoModel {
7
+ options: AIGNEHubVideoModelOptions;
8
+ constructor(options: AIGNEHubVideoModelOptions);
9
+ models(): Promise<{
10
+ model: string;
11
+ type: string;
12
+ provider: string;
13
+ input_credits_per_token: string;
14
+ output_credits_per_token: string;
15
+ providerDisplayName: string;
16
+ status?: {
17
+ available: boolean;
18
+ } | null | undefined;
19
+ modelMetadata?: Record<string, unknown> | null | undefined;
20
+ }[]>;
21
+ protected _client?: Promise<BaseClient>;
22
+ get client(): Promise<BaseClient>;
23
+ private _credential?;
24
+ get credential(): Promise<{
25
+ url: string;
26
+ apiKey?: string;
27
+ model: string;
28
+ }>;
29
+ process(input: VideoModelInput, options: BaseClientInvokeOptions): Promise<AgentProcessResult<VideoModelOutput>>;
30
+ }
31
+ //#endregion
32
+ export { AIGNEHubVideoModel };
33
+ //# sourceMappingURL=aigne-hub-video-model.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aigne-hub-video-model.d.mts","names":[],"sources":["../src/aigne-hub-video-model.ts"],"mappings":";;;;;cAmBa,kBAAA,SAA2B,UAAA;EAAA,OAAA,EACD,yBAAA;EAAA,YAAA,OAAA,EAAA,yBAAA;EAAA,OAAA,GAKzB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;sBAIQ,OAAA,CAAQ,UAAA;EAAA,IAAA,OAAA,GAElB,OAAA,CAAA,UAAA;EAAA,QAAA,WAAA;EAAA,IAAA,WAAA,GAca,OAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EA4Bd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
@@ -3,10 +3,10 @@ import { AIGNE_HUB_BLOCKLET_DID, AIGNE_HUB_VIDEO_MODEL, aigneHubBaseUrl } from "
3
3
  import { getModels } from "./utils/hub.mjs";
4
4
  import { aigneHubModelOptionsSchema } from "./utils/type.mjs";
5
5
  import { VideoModel } from "@aigne/core";
6
- import { joinURL } from "ufo";
7
6
  import { checkArguments } from "@aigne/core/utils/type-utils";
8
7
  import { BaseClient } from "@aigne/transport/http-client/base-client";
9
8
  import { nodejs } from "@aigne/utils/nodejs";
9
+ import { joinURL } from "ufo";
10
10
 
11
11
  //#region src/aigne-hub-video-model.ts
12
12
  var AIGNEHubVideoModel = class extends VideoModel {
package/dist/index.d.cts CHANGED
@@ -3,16 +3,16 @@ import { getAIGNEHubMountPoint } from "./utils/blocklet.cjs";
3
3
  import { AIGNE_HUB_BLOCKLET_DID, AIGNE_HUB_DEFAULT_MODEL, AIGNE_HUB_IMAGE_MODEL, AIGNE_HUB_PROVIDER, AIGNE_HUB_URL, AIGNE_HUB_VIDEO_MODEL, AIProviderType, AI_PROVIDERS, PROVIDER_RANK, aigneHubBaseUrl } from "./utils/constants.cjs";
4
4
  import { getDefaultProviderForModel, getSupportedProviders, inferVendorFromModel, resolveProviderModelId } from "./utils/find-provider.cjs";
5
5
  import { LoadableImageModel, LoadableModel, LoadableVideoModel, availableImageModels, availableModels, availableVideoModels, findImageModel, findModel, findVideoModel, parseModel } from "./utils/model.cjs";
6
- import * as _aigne_core_utils_type_utils0 from "@aigne/core/utils/type-utils";
7
6
  import { AgentProcessResult, ChatModel, ChatModelInput, ChatModelOutput, ImageModel, ImageModelInput, ImageModelOutput, VideoModel, VideoModelInput, VideoModelOutput } from "@aigne/core";
8
7
  import { BaseClientInvokeOptions } from "@aigne/transport/http-client/base-client";
8
+ import * as _aigne_core_utils_type_utils0 from "@aigne/core/utils/type-utils";
9
9
 
10
10
  //#region src/index.d.ts
11
11
  declare class AIGNEHubChatModel extends ChatModel {
12
12
  options: AIGNEHubChatModelOptions;
13
13
  static models(): Promise<{
14
- type: string;
15
14
  model: string;
15
+ type: string;
16
16
  provider: string;
17
17
  input_credits_per_token: string;
18
18
  output_credits_per_token: string;
@@ -23,8 +23,8 @@ declare class AIGNEHubChatModel extends ChatModel {
23
23
  modelMetadata?: Record<string, unknown> | null | undefined;
24
24
  }[]>;
25
25
  models(): Promise<{
26
- type: string;
27
26
  model: string;
27
+ type: string;
28
28
  provider: string;
29
29
  input_credits_per_token: string;
30
30
  output_credits_per_token: string;
@@ -46,8 +46,8 @@ declare class AIGNEHubChatModel extends ChatModel {
46
46
  declare class AIGNEHubImageModel extends ImageModel {
47
47
  options: AIGNEHubImageModelOptions;
48
48
  static models(): Promise<{
49
- type: string;
50
49
  model: string;
50
+ type: string;
51
51
  provider: string;
52
52
  input_credits_per_token: string;
53
53
  output_credits_per_token: string;
@@ -58,8 +58,8 @@ declare class AIGNEHubImageModel extends ImageModel {
58
58
  modelMetadata?: Record<string, unknown> | null | undefined;
59
59
  }[]>;
60
60
  models(): Promise<{
61
- type: string;
62
61
  model: string;
62
+ type: string;
63
63
  provider: string;
64
64
  input_credits_per_token: string;
65
65
  output_credits_per_token: string;
@@ -81,8 +81,8 @@ declare class AIGNEHubImageModel extends ImageModel {
81
81
  declare class AIGNEHubVideoModel extends VideoModel {
82
82
  options: AIGNEHubVideoModelOptions;
83
83
  static models(): Promise<{
84
- type: string;
85
84
  model: string;
85
+ type: string;
86
86
  provider: string;
87
87
  input_credits_per_token: string;
88
88
  output_credits_per_token: string;
@@ -93,8 +93,8 @@ declare class AIGNEHubVideoModel extends VideoModel {
93
93
  modelMetadata?: Record<string, unknown> | null | undefined;
94
94
  }[]>;
95
95
  models(): Promise<{
96
- type: string;
97
96
  model: string;
97
+ type: string;
98
98
  provider: string;
99
99
  input_credits_per_token: string;
100
100
  output_credits_per_token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;;;cA2Ba,iBAAA,SAA0B,SAAA;EAAA,OAAA,EASA,wBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,wBAAA;EAAA,UAAA,MAAA,EA6BnB,SAAA;EAAA,IAAA,WAAA,GAAS,6BAAA,CAEJ,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,cAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,eAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;;;cA2Ba,iBAAA,SAA0B,SAAA;EAAA,OAAA,EASA,wBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,wBAAA;EAAA,UAAA,MAAA,EA6BnB,SAAA;EAAA,IAAA,WAAA,GAAS,6BAAA,CAEJ,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,cAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,eAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
package/dist/index.d.mts CHANGED
@@ -11,8 +11,8 @@ import { BaseClientInvokeOptions } from "@aigne/transport/http-client/base-clien
11
11
  declare class AIGNEHubChatModel extends ChatModel {
12
12
  options: AIGNEHubChatModelOptions;
13
13
  static models(): Promise<{
14
- type: string;
15
14
  model: string;
15
+ type: string;
16
16
  provider: string;
17
17
  input_credits_per_token: string;
18
18
  output_credits_per_token: string;
@@ -23,8 +23,8 @@ declare class AIGNEHubChatModel extends ChatModel {
23
23
  modelMetadata?: Record<string, unknown> | null | undefined;
24
24
  }[]>;
25
25
  models(): Promise<{
26
- type: string;
27
26
  model: string;
27
+ type: string;
28
28
  provider: string;
29
29
  input_credits_per_token: string;
30
30
  output_credits_per_token: string;
@@ -46,8 +46,8 @@ declare class AIGNEHubChatModel extends ChatModel {
46
46
  declare class AIGNEHubImageModel extends ImageModel {
47
47
  options: AIGNEHubImageModelOptions;
48
48
  static models(): Promise<{
49
- type: string;
50
49
  model: string;
50
+ type: string;
51
51
  provider: string;
52
52
  input_credits_per_token: string;
53
53
  output_credits_per_token: string;
@@ -58,8 +58,8 @@ declare class AIGNEHubImageModel extends ImageModel {
58
58
  modelMetadata?: Record<string, unknown> | null | undefined;
59
59
  }[]>;
60
60
  models(): Promise<{
61
- type: string;
62
61
  model: string;
62
+ type: string;
63
63
  provider: string;
64
64
  input_credits_per_token: string;
65
65
  output_credits_per_token: string;
@@ -81,8 +81,8 @@ declare class AIGNEHubImageModel extends ImageModel {
81
81
  declare class AIGNEHubVideoModel extends VideoModel {
82
82
  options: AIGNEHubVideoModelOptions;
83
83
  static models(): Promise<{
84
- type: string;
85
84
  model: string;
85
+ type: string;
86
86
  provider: string;
87
87
  input_credits_per_token: string;
88
88
  output_credits_per_token: string;
@@ -93,8 +93,8 @@ declare class AIGNEHubVideoModel extends VideoModel {
93
93
  modelMetadata?: Record<string, unknown> | null | undefined;
94
94
  }[]>;
95
95
  models(): Promise<{
96
- type: string;
97
96
  model: string;
97
+ type: string;
98
98
  provider: string;
99
99
  input_credits_per_token: string;
100
100
  output_credits_per_token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;;;cA2Ba,iBAAA,SAA0B,SAAA;EAAA,OAAA,EASA,wBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,wBAAA;EAAA,UAAA,MAAA,EA6BnB,SAAA;EAAA,IAAA,WAAA,GAAS,6BAAA,CAEJ,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,cAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,eAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,IAAA;IAAA,KAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;;;cA2Ba,iBAAA,SAA0B,SAAA;EAAA,OAAA,EASA,wBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,wBAAA;EAAA,UAAA,MAAA,EA6BnB,SAAA;EAAA,IAAA,WAAA,GAAS,6BAAA,CAEJ,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,cAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,eAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA;AAAA,cAKnB,kBAAA,SAA2B,UAAA;EAAA,OAAA,EASD,yBAAA;EAAA,OAAA,OAAA,GARlB,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;YAIb,OAAA;IAAA,KAAA;IAAA,IAAA;IAAA,QAAA;IAAA,uBAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,MAAA;MAAA,SAAA;IAAA;IAAA,aAAA;;uBAI+B,yBAAA;EAAA,UAAA,MAAA,EA6BnB,UAAA;EAAA,IAAA,WAAA,GAAU,6BAAA,CAEL,cAAA;IAAA,GAAA;IAAA,MAAA;IAAA,KAAA;EAAA;EAAA,QAAA,KAAA,EAKd,eAAA,EAAA,OAAA,EACE,uBAAA,GACR,OAAA,CAAQ,kBAAA,CAAmB,gBAAA;AAAA"}
@@ -1,5 +1,5 @@
1
- let _aigne_core_utils_fetch = require("@aigne/core/utils/fetch");
2
1
  let ufo = require("ufo");
2
+ let _aigne_core_utils_fetch = require("@aigne/core/utils/fetch");
3
3
 
4
4
  //#region src/utils/blocklet.ts
5
5
  async function getAIGNEHubMountPoint(url, component) {
@@ -1,5 +1,5 @@
1
- import { fetch } from "@aigne/core/utils/fetch";
2
1
  import { joinURL } from "ufo";
2
+ import { fetch } from "@aigne/core/utils/fetch";
3
3
 
4
4
  //#region src/utils/blocklet.ts
5
5
  async function getAIGNEHubMountPoint(url, component) {
@@ -1,7 +1,7 @@
1
1
  const require_blocklet = require('./blocklet.cjs');
2
2
  const require_constants = require('./constants.cjs');
3
- let _aigne_core_utils_fetch = require("@aigne/core/utils/fetch");
4
3
  let ufo = require("ufo");
4
+ let _aigne_core_utils_fetch = require("@aigne/core/utils/fetch");
5
5
  let zod = require("zod");
6
6
 
7
7
  //#region src/utils/hub.ts
@@ -1,7 +1,7 @@
1
1
  import { getAIGNEHubMountPoint } from "./blocklet.mjs";
2
2
  import { AIGNE_HUB_BLOCKLET_DID, aigneHubBaseUrl } from "./constants.mjs";
3
- import { fetch } from "@aigne/core/utils/fetch";
4
3
  import { joinURL, withQuery } from "ufo";
4
+ import { fetch } from "@aigne/core/utils/fetch";
5
5
  import { z } from "zod";
6
6
 
7
7
  //#region src/utils/hub.ts
@@ -1,6 +1,6 @@
1
1
  const require_constants = require('./constants.cjs');
2
+ const require_aigne_hub_chat_model = require('../aigne-hub-chat-model.cjs');
2
3
  const require_aigne_hub_image_model = require('../aigne-hub-image-model.cjs');
3
- const require_aigne_hub_model = require('../aigne-hub-model.cjs');
4
4
  const require_aigne_hub_video_model = require('../aigne-hub-video-model.cjs');
5
5
  let _aigne_anthropic = require("@aigne/anthropic");
6
6
  let _aigne_bedrock = require("@aigne/bedrock");
@@ -123,9 +123,9 @@ function availableModels() {
123
123
  })
124
124
  },
125
125
  {
126
- name: require_aigne_hub_model.AIGNEHubChatModel.name,
126
+ name: require_aigne_hub_chat_model.AIGNEHubChatModel.name,
127
127
  apiKeyEnvName: "AIGNE_HUB_API_KEY",
128
- create: (params) => new require_aigne_hub_model.AIGNEHubChatModel({
128
+ create: (params) => new require_aigne_hub_chat_model.AIGNEHubChatModel({
129
129
  ...params,
130
130
  clientOptions
131
131
  })
@@ -1,6 +1,6 @@
1
1
  import { AIGNE_HUB_PROVIDER } from "./constants.mjs";
2
+ import { AIGNEHubChatModel } from "../aigne-hub-chat-model.mjs";
2
3
  import { AIGNEHubImageModel } from "../aigne-hub-image-model.mjs";
3
- import { AIGNEHubChatModel } from "../aigne-hub-model.mjs";
4
4
  import { AIGNEHubVideoModel } from "../aigne-hub-video-model.mjs";
5
5
  import { AnthropicChatModel } from "@aigne/anthropic";
6
6
  import { BedrockChatModel } from "@aigne/bedrock";
@@ -1 +1 @@
1
- {"version":3,"file":"model.mjs","names":[],"sources":["../../src/utils/model.ts"],"sourcesContent":["import type { Agent } from \"node:https\";\nimport { AnthropicChatModel } from \"@aigne/anthropic\";\nimport { BedrockChatModel } from \"@aigne/bedrock\";\nimport type {\n ChatModel,\n ChatModelInputOptionsWithGetter,\n ImageModel,\n ImageModelInputOptionsWithGetter,\n VideoModel,\n} from \"@aigne/core\";\nimport { DeepSeekChatModel } from \"@aigne/deepseek\";\nimport { DoubaoChatModel, DoubaoImageModel } from \"@aigne/doubao\";\nimport { GeminiChatModel, GeminiImageModel, GeminiVideoModel } from \"@aigne/gemini\";\nimport { IdeogramImageModel } from \"@aigne/ideogram\";\nimport { OllamaChatModel } from \"@aigne/ollama\";\nimport { OpenRouterChatModel } from \"@aigne/open-router\";\nimport {\n OpenAIChatModel,\n type OpenAIChatModelOptions,\n OpenAIImageModel,\n OpenAIVideoModel,\n} from \"@aigne/openai\";\nimport { PoeChatModel } from \"@aigne/poe\";\nimport { XAIChatModel } from \"@aigne/xai\";\nimport { NodeHttpHandler, streamCollector } from \"@smithy/node-http-handler\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { AIGNEHubImageModel } from \"../aigne-hub-image-model.js\";\nimport { AIGNEHubChatModel } from \"../aigne-hub-model.js\";\nimport { AIGNEHubVideoModel } from \"../aigne-hub-video-model.js\";\nimport { AIGNE_HUB_PROVIDER } from \"./constants.js\";\n\nconst getClientOptions = () => {\n const proxy = [\"HTTPS_PROXY\", \"https_proxy\", \"HTTP_PROXY\", \"http_proxy\", \"ALL_PROXY\", \"all_proxy\"]\n .map((i) => process.env[i])\n .filter(Boolean)[0];\n\n const httpAgent = proxy ? (new HttpsProxyAgent(proxy) as Agent) : undefined;\n const clientOptions: Pick<\n NonNullable<OpenAIChatModelOptions[\"clientOptions\"]>,\n \"fetchOptions\"\n > = {\n fetchOptions: {\n // @ts-ignore\n agent: httpAgent,\n },\n };\n\n return {\n clientOptions,\n httpAgent,\n };\n};\n\nconst GOOGLE = \"google\";\n\nexport interface LoadableModel {\n name: string | string[];\n apiKeyEnvName?: string | string[];\n create: (options: {\n model?: string;\n modelOptions?: ChatModelInputOptionsWithGetter;\n apiKey?: string;\n baseURL?: string;\n }) => ChatModel;\n}\n\nexport function availableModels(): LoadableModel[] {\n const { clientOptions, httpAgent } = getClientOptions();\n\n return [\n {\n name: OpenAIChatModel.name,\n apiKeyEnvName: \"OPENAI_API_KEY\",\n create: (params) => new OpenAIChatModel({ ...params, clientOptions }),\n },\n {\n name: AnthropicChatModel.name,\n apiKeyEnvName: \"ANTHROPIC_API_KEY\",\n create: (params) => new AnthropicChatModel({ ...params, clientOptions }),\n },\n {\n name: BedrockChatModel.name,\n apiKeyEnvName: \"AWS_ACCESS_KEY_ID\",\n create: (params) =>\n new BedrockChatModel({\n ...params,\n clientOptions: {\n requestHandler: NodeHttpHandler.create({ httpAgent, httpsAgent: httpAgent }),\n streamCollector,\n },\n }),\n },\n {\n name: DeepSeekChatModel.name,\n apiKeyEnvName: \"DEEPSEEK_API_KEY\",\n create: (params) => new DeepSeekChatModel({ ...params, clientOptions }),\n },\n {\n name: [GeminiChatModel.name, GOOGLE],\n apiKeyEnvName: [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"],\n create: (params) =>\n new GeminiChatModel({\n ...params,\n clientOptions: { httpOptions: clientOptions.fetchOptions },\n }),\n },\n {\n name: OllamaChatModel.name,\n apiKeyEnvName: \"OLLAMA_API_KEY\",\n create: (params) => new OllamaChatModel({ ...params, clientOptions }),\n },\n {\n name: OpenRouterChatModel.name,\n apiKeyEnvName: \"OPEN_ROUTER_API_KEY\",\n create: (params) => new OpenRouterChatModel({ ...params, clientOptions }),\n },\n {\n name: XAIChatModel.name,\n apiKeyEnvName: \"XAI_API_KEY\",\n create: (params) => new XAIChatModel({ ...params, clientOptions }),\n },\n {\n name: DoubaoChatModel.name,\n apiKeyEnvName: \"DOUBAO_API_KEY\",\n create: (params) => new DoubaoChatModel({ ...params, clientOptions }),\n },\n {\n name: PoeChatModel.name,\n apiKeyEnvName: \"POE_API_KEY\",\n create: (params) => new PoeChatModel({ ...params, clientOptions }),\n },\n {\n name: AIGNEHubChatModel.name,\n apiKeyEnvName: \"AIGNE_HUB_API_KEY\",\n create: (params) => new AIGNEHubChatModel({ ...params, clientOptions }),\n },\n ];\n}\n\nexport interface LoadableImageModel {\n name: string | string[];\n apiKeyEnvName: string;\n create: (options: {\n apiKey?: string;\n baseURL?: string;\n model?: string;\n modelOptions?: ImageModelInputOptionsWithGetter;\n }) => ImageModel;\n}\n\nexport interface LoadableVideoModel {\n name: string | string[];\n apiKeyEnvName: string;\n create: (options: {\n apiKey?: string;\n baseURL?: string;\n model?: string;\n modelOptions?: { [key: string]: any };\n }) => VideoModel;\n}\n\nexport function availableImageModels(): LoadableImageModel[] {\n const { clientOptions } = getClientOptions();\n\n return [\n {\n name: OpenAIImageModel.name,\n apiKeyEnvName: \"OPENAI_API_KEY\",\n create: (params) => new OpenAIImageModel({ ...params, clientOptions }),\n },\n {\n name: [GeminiImageModel.name, GOOGLE],\n apiKeyEnvName: \"GEMINI_API_KEY\",\n create: (params) => new GeminiImageModel({ ...params, clientOptions }),\n },\n {\n name: IdeogramImageModel.name,\n apiKeyEnvName: \"IDEOGRAM_API_KEY\",\n create: (params) => new IdeogramImageModel({ ...params }),\n },\n {\n name: DoubaoImageModel.name,\n apiKeyEnvName: \"DOUBAO_API_KEY\",\n create: (params) => new DoubaoImageModel({ ...params, clientOptions }),\n },\n {\n name: AIGNEHubImageModel.name,\n apiKeyEnvName: \"AIGNE_HUB_API_KEY\",\n create: (params) => new AIGNEHubImageModel({ ...params, clientOptions }),\n },\n ];\n}\n\nexport function availableVideoModels(): LoadableVideoModel[] {\n const { clientOptions } = getClientOptions();\n\n return [\n {\n name: OpenAIVideoModel.name,\n apiKeyEnvName: \"OPENAI_API_KEY\",\n create: (params) => new OpenAIVideoModel({ ...params, clientOptions }) as VideoModel,\n },\n {\n name: [GeminiVideoModel.name, GOOGLE],\n apiKeyEnvName: \"GEMINI_API_KEY\",\n create: (params) => new GeminiVideoModel({ ...params, clientOptions }) as VideoModel,\n },\n {\n name: AIGNEHubVideoModel.name,\n apiKeyEnvName: \"AIGNE_HUB_API_KEY\",\n create: (params) => new AIGNEHubVideoModel({ ...params, clientOptions }) as VideoModel,\n },\n ];\n}\n\nexport function findModel(provider: string): {\n all: LoadableModel[];\n match: LoadableModel | undefined;\n} {\n provider = provider.toLowerCase().replace(/-/g, \"\");\n\n const all = availableModels();\n\n const match = all.find((m) => {\n if (typeof m.name === \"string\") {\n return m.name.toLowerCase().includes(provider);\n }\n\n return m.name.some((n) => n.toLowerCase().includes(provider));\n });\n\n return { all, match };\n}\n\nexport function findImageModel(provider: string): {\n all: LoadableImageModel[];\n match: LoadableImageModel | undefined;\n} {\n provider = provider.toLowerCase().replace(/-/g, \"\");\n\n const all = availableImageModels();\n\n const match = all.find((m) => {\n if (typeof m.name === \"string\") {\n return m.name.toLowerCase().includes(provider);\n }\n\n return m.name.some((n) => n.toLowerCase().includes(provider));\n });\n\n return { all, match };\n}\n\nexport function findVideoModel(provider: string): {\n all: LoadableVideoModel[];\n match: LoadableVideoModel | undefined;\n} {\n provider = provider.toLowerCase().replace(/-/g, \"\");\n\n const all = availableVideoModels();\n\n const match = all.find((m) => {\n if (typeof m.name === \"string\") {\n return m.name.toLowerCase().includes(provider);\n }\n\n return m.name.some((n) => n.toLowerCase().includes(provider));\n });\n\n return { all, match };\n}\n\nexport const parseModel = (model: string) => {\n // replace first ':' with '/' to compatible with `provider:model-name` format\n model = model.replace(/^([\\w-]+):/, \"$1/\");\n let { provider, name } = model.match(/(?<provider>[^/]*)(\\/(?<name>.*))?/)?.groups ?? {};\n provider = provider?.replace(/-/g, \"\");\n const match = provider ? findModel(provider)?.match : undefined;\n\n if (match) {\n return { provider, model: name };\n }\n\n return { provider: AIGNE_HUB_PROVIDER, model };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"model.mjs","names":[],"sources":["../../src/utils/model.ts"],"sourcesContent":["import type { Agent } from \"node:https\";\nimport { AnthropicChatModel } from \"@aigne/anthropic\";\nimport { BedrockChatModel } from \"@aigne/bedrock\";\nimport type {\n ChatModel,\n ChatModelInputOptionsWithGetter,\n ImageModel,\n ImageModelInputOptionsWithGetter,\n VideoModel,\n} from \"@aigne/core\";\nimport { DeepSeekChatModel } from \"@aigne/deepseek\";\nimport { DoubaoChatModel, DoubaoImageModel } from \"@aigne/doubao\";\nimport { GeminiChatModel, GeminiImageModel, GeminiVideoModel } from \"@aigne/gemini\";\nimport { IdeogramImageModel } from \"@aigne/ideogram\";\nimport { OllamaChatModel } from \"@aigne/ollama\";\nimport { OpenRouterChatModel } from \"@aigne/open-router\";\nimport {\n OpenAIChatModel,\n type OpenAIChatModelOptions,\n OpenAIImageModel,\n OpenAIVideoModel,\n} from \"@aigne/openai\";\nimport { PoeChatModel } from \"@aigne/poe\";\nimport { XAIChatModel } from \"@aigne/xai\";\nimport { NodeHttpHandler, streamCollector } from \"@smithy/node-http-handler\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { AIGNEHubChatModel } from \"../aigne-hub-chat-model.js\";\nimport { AIGNEHubImageModel } from \"../aigne-hub-image-model.js\";\nimport { AIGNEHubVideoModel } from \"../aigne-hub-video-model.js\";\nimport { AIGNE_HUB_PROVIDER } from \"./constants.js\";\n\nconst getClientOptions = () => {\n const proxy = [\"HTTPS_PROXY\", \"https_proxy\", \"HTTP_PROXY\", \"http_proxy\", \"ALL_PROXY\", \"all_proxy\"]\n .map((i) => process.env[i])\n .filter(Boolean)[0];\n\n const httpAgent = proxy ? (new HttpsProxyAgent(proxy) as Agent) : undefined;\n const clientOptions: Pick<\n NonNullable<OpenAIChatModelOptions[\"clientOptions\"]>,\n \"fetchOptions\"\n > = {\n fetchOptions: {\n // @ts-ignore\n agent: httpAgent,\n },\n };\n\n return {\n clientOptions,\n httpAgent,\n };\n};\n\nconst GOOGLE = \"google\";\n\nexport interface LoadableModel {\n name: string | string[];\n apiKeyEnvName?: string | string[];\n create: (options: {\n model?: string;\n modelOptions?: ChatModelInputOptionsWithGetter;\n apiKey?: string;\n baseURL?: string;\n }) => ChatModel;\n}\n\nexport function availableModels(): LoadableModel[] {\n const { clientOptions, httpAgent } = getClientOptions();\n\n return [\n {\n name: OpenAIChatModel.name,\n apiKeyEnvName: \"OPENAI_API_KEY\",\n create: (params) => new OpenAIChatModel({ ...params, clientOptions }),\n },\n {\n name: AnthropicChatModel.name,\n apiKeyEnvName: \"ANTHROPIC_API_KEY\",\n create: (params) => new AnthropicChatModel({ ...params, clientOptions }),\n },\n {\n name: BedrockChatModel.name,\n apiKeyEnvName: \"AWS_ACCESS_KEY_ID\",\n create: (params) =>\n new BedrockChatModel({\n ...params,\n clientOptions: {\n requestHandler: NodeHttpHandler.create({ httpAgent, httpsAgent: httpAgent }),\n streamCollector,\n },\n }),\n },\n {\n name: DeepSeekChatModel.name,\n apiKeyEnvName: \"DEEPSEEK_API_KEY\",\n create: (params) => new DeepSeekChatModel({ ...params, clientOptions }),\n },\n {\n name: [GeminiChatModel.name, GOOGLE],\n apiKeyEnvName: [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"],\n create: (params) =>\n new GeminiChatModel({\n ...params,\n clientOptions: { httpOptions: clientOptions.fetchOptions },\n }),\n },\n {\n name: OllamaChatModel.name,\n apiKeyEnvName: \"OLLAMA_API_KEY\",\n create: (params) => new OllamaChatModel({ ...params, clientOptions }),\n },\n {\n name: OpenRouterChatModel.name,\n apiKeyEnvName: \"OPEN_ROUTER_API_KEY\",\n create: (params) => new OpenRouterChatModel({ ...params, clientOptions }),\n },\n {\n name: XAIChatModel.name,\n apiKeyEnvName: \"XAI_API_KEY\",\n create: (params) => new XAIChatModel({ ...params, clientOptions }),\n },\n {\n name: DoubaoChatModel.name,\n apiKeyEnvName: \"DOUBAO_API_KEY\",\n create: (params) => new DoubaoChatModel({ ...params, clientOptions }),\n },\n {\n name: PoeChatModel.name,\n apiKeyEnvName: \"POE_API_KEY\",\n create: (params) => new PoeChatModel({ ...params, clientOptions }),\n },\n {\n name: AIGNEHubChatModel.name,\n apiKeyEnvName: \"AIGNE_HUB_API_KEY\",\n create: (params) => new AIGNEHubChatModel({ ...params, clientOptions }),\n },\n ];\n}\n\nexport interface LoadableImageModel {\n name: string | string[];\n apiKeyEnvName: string;\n create: (options: {\n apiKey?: string;\n baseURL?: string;\n model?: string;\n modelOptions?: ImageModelInputOptionsWithGetter;\n }) => ImageModel;\n}\n\nexport interface LoadableVideoModel {\n name: string | string[];\n apiKeyEnvName: string;\n create: (options: {\n apiKey?: string;\n baseURL?: string;\n model?: string;\n modelOptions?: { [key: string]: any };\n }) => VideoModel;\n}\n\nexport function availableImageModels(): LoadableImageModel[] {\n const { clientOptions } = getClientOptions();\n\n return [\n {\n name: OpenAIImageModel.name,\n apiKeyEnvName: \"OPENAI_API_KEY\",\n create: (params) => new OpenAIImageModel({ ...params, clientOptions }),\n },\n {\n name: [GeminiImageModel.name, GOOGLE],\n apiKeyEnvName: \"GEMINI_API_KEY\",\n create: (params) => new GeminiImageModel({ ...params, clientOptions }),\n },\n {\n name: IdeogramImageModel.name,\n apiKeyEnvName: \"IDEOGRAM_API_KEY\",\n create: (params) => new IdeogramImageModel({ ...params }),\n },\n {\n name: DoubaoImageModel.name,\n apiKeyEnvName: \"DOUBAO_API_KEY\",\n create: (params) => new DoubaoImageModel({ ...params, clientOptions }),\n },\n {\n name: AIGNEHubImageModel.name,\n apiKeyEnvName: \"AIGNE_HUB_API_KEY\",\n create: (params) => new AIGNEHubImageModel({ ...params, clientOptions }),\n },\n ];\n}\n\nexport function availableVideoModels(): LoadableVideoModel[] {\n const { clientOptions } = getClientOptions();\n\n return [\n {\n name: OpenAIVideoModel.name,\n apiKeyEnvName: \"OPENAI_API_KEY\",\n create: (params) => new OpenAIVideoModel({ ...params, clientOptions }) as VideoModel,\n },\n {\n name: [GeminiVideoModel.name, GOOGLE],\n apiKeyEnvName: \"GEMINI_API_KEY\",\n create: (params) => new GeminiVideoModel({ ...params, clientOptions }) as VideoModel,\n },\n {\n name: AIGNEHubVideoModel.name,\n apiKeyEnvName: \"AIGNE_HUB_API_KEY\",\n create: (params) => new AIGNEHubVideoModel({ ...params, clientOptions }) as VideoModel,\n },\n ];\n}\n\nexport function findModel(provider: string): {\n all: LoadableModel[];\n match: LoadableModel | undefined;\n} {\n provider = provider.toLowerCase().replace(/-/g, \"\");\n\n const all = availableModels();\n\n const match = all.find((m) => {\n if (typeof m.name === \"string\") {\n return m.name.toLowerCase().includes(provider);\n }\n\n return m.name.some((n) => n.toLowerCase().includes(provider));\n });\n\n return { all, match };\n}\n\nexport function findImageModel(provider: string): {\n all: LoadableImageModel[];\n match: LoadableImageModel | undefined;\n} {\n provider = provider.toLowerCase().replace(/-/g, \"\");\n\n const all = availableImageModels();\n\n const match = all.find((m) => {\n if (typeof m.name === \"string\") {\n return m.name.toLowerCase().includes(provider);\n }\n\n return m.name.some((n) => n.toLowerCase().includes(provider));\n });\n\n return { all, match };\n}\n\nexport function findVideoModel(provider: string): {\n all: LoadableVideoModel[];\n match: LoadableVideoModel | undefined;\n} {\n provider = provider.toLowerCase().replace(/-/g, \"\");\n\n const all = availableVideoModels();\n\n const match = all.find((m) => {\n if (typeof m.name === \"string\") {\n return m.name.toLowerCase().includes(provider);\n }\n\n return m.name.some((n) => n.toLowerCase().includes(provider));\n });\n\n return { all, match };\n}\n\nexport const parseModel = (model: string) => {\n // replace first ':' with '/' to compatible with `provider:model-name` format\n model = model.replace(/^([\\w-]+):/, \"$1/\");\n let { provider, name } = model.match(/(?<provider>[^/]*)(\\/(?<name>.*))?/)?.groups ?? {};\n provider = provider?.replace(/-/g, \"\");\n const match = provider ? findModel(provider)?.match : undefined;\n\n if (match) {\n return { provider, model: name };\n }\n\n return { provider: AIGNE_HUB_PROVIDER, model };\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aigne/aigne-hub",
3
- "version": "1.74.0-beta",
3
+ "version": "1.74.0-beta.2",
4
4
  "description": "AIGNE Hub SDK for integrating with Hub AI models",
5
5
  "license": "Elastic-2.0",
6
6
  "publishConfig": {
@@ -24,6 +24,18 @@
24
24
  "require": "./dist/index.cjs",
25
25
  "import": "./dist/index.mjs"
26
26
  },
27
+ "./aigne-hub-chat-model": {
28
+ "require": "./dist/aigne-hub-chat-model.cjs",
29
+ "import": "./dist/aigne-hub-chat-model.mjs"
30
+ },
31
+ "./aigne-hub-image-model": {
32
+ "require": "./dist/aigne-hub-image-model.cjs",
33
+ "import": "./dist/aigne-hub-image-model.mjs"
34
+ },
35
+ "./aigne-hub-video-model": {
36
+ "require": "./dist/aigne-hub-video-model.cjs",
37
+ "import": "./dist/aigne-hub-video-model.mjs"
38
+ },
27
39
  "./*": "./*"
28
40
  },
29
41
  "files": [
@@ -37,20 +49,20 @@
37
49
  "https-proxy-agent": "^7.0.6",
38
50
  "ufo": "^1.6.1",
39
51
  "zod": "^3.25.67",
40
- "@aigne/anthropic": "^1.74.0-beta",
41
- "@aigne/bedrock": "^1.74.0-beta",
42
- "@aigne/core": "^1.74.0-beta",
43
- "@aigne/doubao": "^1.74.0-beta",
44
- "@aigne/deepseek": "^1.74.0-beta",
45
- "@aigne/gemini": "^1.74.0-beta",
46
- "@aigne/ideogram": "^1.74.0-beta",
47
- "@aigne/ollama": "^1.74.0-beta",
48
- "@aigne/openai": "^1.74.0-beta",
49
- "@aigne/poe": "^1.74.0-beta",
50
- "@aigne/transport": "^1.74.0-beta",
51
- "@aigne/utils": "^1.74.0-beta",
52
- "@aigne/open-router": "^1.74.0-beta",
53
- "@aigne/xai": "^1.74.0-beta"
52
+ "@aigne/anthropic": "^1.74.0-beta.2",
53
+ "@aigne/bedrock": "^1.74.0-beta.2",
54
+ "@aigne/core": "^1.74.0-beta.2",
55
+ "@aigne/deepseek": "^1.74.0-beta.2",
56
+ "@aigne/doubao": "^1.74.0-beta.2",
57
+ "@aigne/gemini": "^1.74.0-beta.2",
58
+ "@aigne/ollama": "^1.74.0-beta.2",
59
+ "@aigne/open-router": "^1.74.0-beta.2",
60
+ "@aigne/openai": "^1.74.0-beta.2",
61
+ "@aigne/ideogram": "^1.74.0-beta.2",
62
+ "@aigne/poe": "^1.74.0-beta.2",
63
+ "@aigne/transport": "^1.74.0-beta.2",
64
+ "@aigne/utils": "^1.74.0-beta.2",
65
+ "@aigne/xai": "^1.74.0-beta.2"
54
66
  },
55
67
  "devDependencies": {
56
68
  "@types/bun": "^1.3.6",
@@ -1 +0,0 @@
1
- {"version":3,"file":"aigne-hub-model.mjs","names":[],"sources":["../src/aigne-hub-model.ts"],"sourcesContent":["import {\n type AgentInvokeOptions,\n type AgentProcessResult,\n ChatModel,\n type ChatModelInput,\n type ChatModelOutput,\n} from \"@aigne/core\";\nimport { checkArguments } from \"@aigne/core/utils/type-utils\";\nimport { BaseClient, type BaseClientInvokeOptions } from \"@aigne/transport/http-client/base-client\";\nimport { nodejs } from \"@aigne/utils/nodejs\";\nimport { joinURL } from \"ufo\";\nimport { getAIGNEHubMountPoint } from \"./utils/blocklet.js\";\nimport {\n AIGNE_HUB_BLOCKLET_DID,\n AIGNE_HUB_DEFAULT_MODEL,\n aigneHubBaseUrl,\n} from \"./utils/constants.js\";\nimport { getModels } from \"./utils/hub.js\";\nimport { type AIGNEHubChatModelOptions, aigneHubModelOptionsSchema } from \"./utils/type.js\";\n\nexport class AIGNEHubChatModel extends ChatModel {\n constructor(public override options: AIGNEHubChatModelOptions) {\n checkArguments(\"AIGNEHubChatModel\", aigneHubModelOptionsSchema, options);\n super();\n }\n\n async models() {\n return getModels({ baseURL: (await this.credential).url, type: \"chat\" });\n }\n\n protected _client?: Promise<BaseClient>;\n\n get client() {\n this._client ??= this.credential.then(({ url, apiKey, model }) => {\n const options = { ...this.options, url, apiKey, model };\n return new BaseClient(options);\n });\n return this._client;\n }\n\n private _credential?: Promise<{\n url: string;\n apiKey?: string;\n model: string;\n }>;\n\n override get credential() {\n this._credential ??= getAIGNEHubMountPoint(\n this.options.baseURL || aigneHubBaseUrl(),\n AIGNE_HUB_BLOCKLET_DID,\n ).then((url) => {\n const path = \"/api/v2/chat\";\n\n const rawCredential = process.env.BLOCKLET_AIGNE_API_CREDENTIAL;\n let credentialOptions: Record<string, any> = {};\n try {\n credentialOptions =\n typeof rawCredential === \"string\" ? JSON.parse(rawCredential) : (rawCredential ?? {});\n } catch (err) {\n console.error(err);\n }\n\n return {\n ...credentialOptions,\n url: url.endsWith(path) ? url : joinURL(url, path),\n apiKey: this.options.apiKey || process.env.AIGNE_HUB_API_KEY || credentialOptions.apiKey,\n model:\n this.options.model || process.env.BLOCKLET_AIGNE_API_MODEL || AIGNE_HUB_DEFAULT_MODEL,\n };\n });\n\n return this._credential;\n }\n\n override async process(\n input: ChatModelInput,\n options: BaseClientInvokeOptions & AgentInvokeOptions,\n ): Promise<AgentProcessResult<ChatModelOutput>> {\n const { BLOCKLET_APP_PID, ABT_NODE_DID } = nodejs.env;\n const clientId =\n this.options?.clientOptions?.clientId ||\n BLOCKLET_APP_PID ||\n ABT_NODE_DID ||\n `@aigne/aigne-hub:${typeof process !== \"undefined\" ? nodejs.os.hostname() : \"unknown\"}`;\n\n const response = await (await this.client).__invoke<ChatModelInput, ChatModelOutput>(\n undefined,\n {\n ...input,\n modelOptions: {\n ...input.modelOptions,\n model: input.modelOptions?.model || (await this.credential).model,\n },\n // Shouldn't use `local` output type for remote AIGNE Hub call, client can not access the remote filesystem\n outputFileType: \"url\",\n },\n {\n ...options,\n fetchOptions: {\n ...options.fetchOptions,\n headers: {\n ...options.fetchOptions?.headers,\n \"x-aigne-hub-client-did\": clientId,\n },\n },\n },\n );\n\n return response;\n }\n}\n"],"mappings":";;;;;;;;;;;AAoBA,IAAa,oBAAb,cAAuC,UAAU;CAC/C,YAAY,AAAgB,SAAmC;AAC7D,iBAAe,qBAAqB,4BAA4B,QAAQ;AACxE,SAAO;EAFmB;;CAK5B,MAAM,SAAS;AACb,SAAO,UAAU;GAAE,UAAU,MAAM,KAAK,YAAY;GAAK,MAAM;GAAQ,CAAC;;CAG1E,AAAU;CAEV,IAAI,SAAS;AACX,OAAK,YAAY,KAAK,WAAW,MAAM,EAAE,KAAK,QAAQ,YAAY;AAEhE,UAAO,IAAI,WADK;IAAE,GAAG,KAAK;IAAS;IAAK;IAAQ;IAAO,CACzB;IAC9B;AACF,SAAO,KAAK;;CAGd,AAAQ;CAMR,IAAa,aAAa;AACxB,OAAK,gBAAgB,sBACnB,KAAK,QAAQ,WAAW,iBAAiB,EACzC,uBACD,CAAC,MAAM,QAAQ;GACd,MAAM,OAAO;GAEb,MAAM,gBAAgB,QAAQ,IAAI;GAClC,IAAI,oBAAyC,EAAE;AAC/C,OAAI;AACF,wBACE,OAAO,kBAAkB,WAAW,KAAK,MAAM,cAAc,GAAI,iBAAiB,EAAE;YAC/E,KAAK;AACZ,YAAQ,MAAM,IAAI;;AAGpB,UAAO;IACL,GAAG;IACH,KAAK,IAAI,SAAS,KAAK,GAAG,MAAM,QAAQ,KAAK,KAAK;IAClD,QAAQ,KAAK,QAAQ,UAAU,QAAQ,IAAI,qBAAqB,kBAAkB;IAClF,OACE,KAAK,QAAQ,SAAS,QAAQ,IAAI,4BAA4B;IACjE;IACD;AAEF,SAAO,KAAK;;CAGd,MAAe,QACb,OACA,SAC8C;EAC9C,MAAM,EAAE,kBAAkB,iBAAiB,OAAO;EAClD,MAAM,WACJ,KAAK,SAAS,eAAe,YAC7B,oBACA,gBACA,oBAAoB,OAAO,YAAY,cAAc,OAAO,GAAG,UAAU,GAAG;AAyB9E,SAvBiB,OAAO,MAAM,KAAK,QAAQ,SACzC,QACA;GACE,GAAG;GACH,cAAc;IACZ,GAAG,MAAM;IACT,OAAO,MAAM,cAAc,UAAU,MAAM,KAAK,YAAY;IAC7D;GAED,gBAAgB;GACjB,EACD;GACE,GAAG;GACH,cAAc;IACZ,GAAG,QAAQ;IACX,SAAS;KACP,GAAG,QAAQ,cAAc;KACzB,0BAA0B;KAC3B;IACF;GACF,CACF"}