@elizaos/plugin-nearai 2.0.3-beta.6 → 2.0.3-beta.7

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.
@@ -0,0 +1,289 @@
1
+ // index.ts
2
+ import { logger as logger3, ModelType as ModelType2 } from "@elizaos/core";
3
+
4
+ // init.ts
5
+ import { logger } from "@elizaos/core";
6
+
7
+ // types/index.ts
8
+ function createModelName(name) {
9
+ if (!name || name.trim().length === 0) {
10
+ throw new Error("Model name cannot be empty");
11
+ }
12
+ return name;
13
+ }
14
+
15
+ // utils/config.ts
16
+ var DEFAULT_GEMMA_MODEL = "google/gemma-4-31B-it";
17
+ var DEFAULT_SMALL_MODEL = DEFAULT_GEMMA_MODEL;
18
+ var DEFAULT_LARGE_MODEL = DEFAULT_GEMMA_MODEL;
19
+ var DEFAULT_BASE_URL = "https://cloud-api.near.ai/v1";
20
+ function isBrowser() {
21
+ return typeof globalThis !== "undefined" && typeof globalThis.document !== "undefined";
22
+ }
23
+ function getEnvValue(key) {
24
+ if (typeof process === "undefined") {
25
+ return;
26
+ }
27
+ const envValue = process.env[key];
28
+ if (typeof envValue === "string" && envValue.length > 0) {
29
+ return envValue;
30
+ }
31
+ return;
32
+ }
33
+ function getRawSetting(runtime, key) {
34
+ const runtimeValue = runtime.getSetting(key);
35
+ if (typeof runtimeValue === "string" && runtimeValue.length > 0) {
36
+ return runtimeValue;
37
+ }
38
+ return getEnvValue(key);
39
+ }
40
+ function getCanonicalApiKeySetting(runtime) {
41
+ return getRawSetting(runtime, "NEARAI_API_KEY");
42
+ }
43
+ function getApiKeyOptional(runtime) {
44
+ const apiKey = getCanonicalApiKeySetting(runtime);
45
+ if (!apiKey || apiKey.trim().length === 0) {
46
+ return null;
47
+ }
48
+ return apiKey;
49
+ }
50
+ function getBaseURL(runtime) {
51
+ if (isBrowser()) {
52
+ const browserURL = getRawSetting(runtime, "NEARAI_BROWSER_BASE_URL");
53
+ if (browserURL) {
54
+ return normalizeBaseURL(browserURL);
55
+ }
56
+ }
57
+ const raw = getRawSetting(runtime, "NEARAI_BASE_URL") ?? DEFAULT_BASE_URL;
58
+ return normalizeBaseURL(raw);
59
+ }
60
+ function getSmallModel(runtime) {
61
+ const model = getRawSetting(runtime, "NEARAI_SMALL_MODEL") ?? DEFAULT_SMALL_MODEL;
62
+ return createModelName(model);
63
+ }
64
+ function getLargeModel(runtime) {
65
+ const model = getRawSetting(runtime, "NEARAI_LARGE_MODEL") ?? DEFAULT_LARGE_MODEL;
66
+ return createModelName(model);
67
+ }
68
+ function getExperimentalTelemetry(runtime) {
69
+ const setting = getRawSetting(runtime, "NEARAI_EXPERIMENTAL_TELEMETRY");
70
+ if (!setting) {
71
+ return false;
72
+ }
73
+ return setting.toLowerCase() === "true";
74
+ }
75
+ function normalizeBaseURL(raw) {
76
+ return raw.trim().replace(/\/+$/, "");
77
+ }
78
+
79
+ // init.ts
80
+ function initializeNearAI(_config, runtime) {
81
+ const apiKey = getApiKeyOptional(runtime);
82
+ if (!apiKey && !isBrowser()) {
83
+ logger.warn("NEARAI_API_KEY is not set in environment - NEAR AI functionality will be limited. " + "Set NEARAI_API_KEY in your environment variables or runtime settings.");
84
+ return;
85
+ }
86
+ if (apiKey) {
87
+ logger.log("NEAR AI API key configured successfully");
88
+ }
89
+ }
90
+
91
+ // models/text.ts
92
+ import { logger as logger2, ModelType } from "@elizaos/core";
93
+ import { generateText } from "ai";
94
+
95
+ // providers/openai-compatible.ts
96
+ import {
97
+ createOpenAICompatible
98
+ } from "@ai-sdk/openai-compatible";
99
+ function createNearAIClient(runtime, opts = {}) {
100
+ const apiKey = getApiKeyOptional(runtime) ?? undefined;
101
+ const baseURL = getBaseURL(runtime);
102
+ return createOpenAICompatible({
103
+ name: "nearai",
104
+ baseURL,
105
+ ...apiKey ? { apiKey } : {},
106
+ fetch: opts.fetch ?? runtime.fetch,
107
+ includeUsage: true
108
+ });
109
+ }
110
+ // utils/events.ts
111
+ import { EventType } from "@elizaos/core";
112
+ function emitModelUsageEvent(runtime, type, usage) {
113
+ const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;
114
+ const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;
115
+ const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;
116
+ runtime.emitEvent(EventType.MODEL_USED, {
117
+ runtime,
118
+ source: "nearai",
119
+ type,
120
+ tokens: {
121
+ prompt: promptTokens,
122
+ completion: completionTokens,
123
+ total: totalTokens
124
+ }
125
+ });
126
+ }
127
+
128
+ // models/text.ts
129
+ function resolveTextParams(params) {
130
+ const providerOptions = params.providerOptions?.nearai ?? {};
131
+ return {
132
+ prompt: params.prompt ?? "",
133
+ stopSequences: params.stopSequences ?? [],
134
+ maxOutputTokens: params.maxTokens ?? 8192,
135
+ temperature: params.temperature,
136
+ topP: params.topP,
137
+ frequencyPenalty: params.frequencyPenalty ?? 0,
138
+ presencePenalty: params.presencePenalty ?? 0,
139
+ providerOptions
140
+ };
141
+ }
142
+ function createNearAIRequestFetch(baseFetch) {
143
+ const wrapped = async (input, init) => {
144
+ if (init && typeof init.body === "string") {
145
+ try {
146
+ const body = JSON.parse(init.body);
147
+ if (body.max_completion_tokens != null && body.max_tokens == null) {
148
+ body.max_tokens = body.max_completion_tokens;
149
+ }
150
+ delete body.max_completion_tokens;
151
+ delete body.store;
152
+ delete body.reasoning_effort;
153
+ delete body.strict;
154
+ if (Array.isArray(body.messages)) {
155
+ body.messages = body.messages.map((message) => {
156
+ if (message && typeof message === "object" && message.role === "developer") {
157
+ return { ...message, role: "system" };
158
+ }
159
+ return message;
160
+ });
161
+ }
162
+ init.body = JSON.stringify(body);
163
+ } catch {}
164
+ }
165
+ return baseFetch(input, init);
166
+ };
167
+ return Object.assign(wrapped, baseFetch);
168
+ }
169
+ async function generateTextWithModel(runtime, params, modelName, modelType) {
170
+ const experimentalTelemetry = getExperimentalTelemetry(runtime);
171
+ const requestFetch = createNearAIRequestFetch(runtime.fetch ?? fetch);
172
+ const nearai = createNearAIClient(runtime, { fetch: requestFetch });
173
+ logger2.log(`[NEAR AI] Using ${modelType} model: ${modelName}`);
174
+ const resolved = resolveTextParams(params);
175
+ const agentName = resolved.providerOptions.agentName;
176
+ const telemetryConfig = {
177
+ isEnabled: experimentalTelemetry,
178
+ functionId: agentName ? `agent:${agentName}` : undefined,
179
+ metadata: agentName ? { agentName } : undefined
180
+ };
181
+ const generateParams = {
182
+ model: nearai(modelName),
183
+ prompt: resolved.prompt,
184
+ system: runtime.character?.system ?? undefined,
185
+ temperature: resolved.temperature,
186
+ stopSequences: resolved.stopSequences,
187
+ frequencyPenalty: resolved.frequencyPenalty,
188
+ presencePenalty: resolved.presencePenalty,
189
+ experimental_telemetry: telemetryConfig,
190
+ maxOutputTokens: resolved.maxOutputTokens,
191
+ topP: resolved.topP
192
+ };
193
+ const { text, usage } = await generateText(generateParams);
194
+ if (usage) {
195
+ emitModelUsageEvent(runtime, modelType, usage);
196
+ }
197
+ return text;
198
+ }
199
+ async function handleTextSmall(runtime, params) {
200
+ const modelName = getSmallModel(runtime);
201
+ return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_SMALL);
202
+ }
203
+ async function handleTextLarge(runtime, params) {
204
+ const modelName = getLargeModel(runtime);
205
+ return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_LARGE);
206
+ }
207
+ // index.ts
208
+ var pluginTests = [
209
+ {
210
+ name: "nearai_plugin_tests",
211
+ tests: [
212
+ {
213
+ name: "nearai_test_api_key_validation",
214
+ fn: async (runtime) => {
215
+ const apiKey = getApiKeyOptional(runtime);
216
+ if (!apiKey) {
217
+ throw new Error("NEARAI_API_KEY is not configured");
218
+ }
219
+ logger3.log("NEAR AI API key is configured");
220
+ }
221
+ },
222
+ {
223
+ name: "nearai_test_text_small",
224
+ fn: async (runtime) => {
225
+ const text = await runtime.useModel(ModelType2.TEXT_SMALL, {
226
+ prompt: "What is the nature of reality in 10 words?"
227
+ });
228
+ if (typeof text !== "string" || text.length === 0) {
229
+ throw new Error("Failed to generate text: empty response");
230
+ }
231
+ logger3.log({ text }, "generated with test_text_small");
232
+ }
233
+ },
234
+ {
235
+ name: "nearai_test_text_large",
236
+ fn: async (runtime) => {
237
+ const text = await runtime.useModel(ModelType2.TEXT_LARGE, {
238
+ prompt: "What is the nature of reality in 10 words?"
239
+ });
240
+ if (typeof text !== "string" || text.length === 0) {
241
+ throw new Error("Failed to generate text: empty response");
242
+ }
243
+ logger3.log({ text }, "generated with test_text_large");
244
+ }
245
+ }
246
+ ]
247
+ }
248
+ ];
249
+ function getProcessEnv() {
250
+ if (typeof process === "undefined") {
251
+ return {};
252
+ }
253
+ return process.env;
254
+ }
255
+ var env = getProcessEnv();
256
+ var nearaiPlugin = {
257
+ name: "nearai",
258
+ description: "NEAR AI Cloud TEE inference plugin (OpenAI-compatible API; supports text generation)",
259
+ config: {
260
+ NEARAI_API_KEY: env.NEARAI_API_KEY ?? null,
261
+ NEARAI_SMALL_MODEL: env.NEARAI_SMALL_MODEL ?? null,
262
+ NEARAI_LARGE_MODEL: env.NEARAI_LARGE_MODEL ?? null,
263
+ NEARAI_EXPERIMENTAL_TELEMETRY: env.NEARAI_EXPERIMENTAL_TELEMETRY ?? null,
264
+ NEARAI_BASE_URL: env.NEARAI_BASE_URL ?? null,
265
+ NEARAI_BROWSER_BASE_URL: env.NEARAI_BROWSER_BASE_URL ?? null
266
+ },
267
+ async init(config, runtime) {
268
+ initializeNearAI(config, runtime);
269
+ },
270
+ models: {
271
+ [ModelType2.TEXT_SMALL]: async (runtime, params) => {
272
+ return handleTextSmall(runtime, params);
273
+ },
274
+ [ModelType2.TEXT_LARGE]: async (runtime, params) => {
275
+ return handleTextLarge(runtime, params);
276
+ }
277
+ },
278
+ tests: pluginTests
279
+ };
280
+ var plugin_nearai_default = nearaiPlugin;
281
+
282
+ // index.browser.ts
283
+ var index_browser_default = plugin_nearai_default;
284
+ export {
285
+ nearaiPlugin,
286
+ index_browser_default as default
287
+ };
288
+
289
+ //# debugId=6947224D70474EE764756E2164756E21
@@ -0,0 +1,17 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../index.ts", "../../init.ts", "../../types/index.ts", "../../utils/config.ts", "../../models/text.ts", "../../providers/openai-compatible.ts", "../../utils/events.ts", "../../index.browser.ts"],
4
+ "sourcesContent": [
5
+ "import type {\n GenerateTextParams,\n IAgentRuntime,\n Plugin,\n ProcessEnvLike,\n TestCase,\n TestSuite,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { initializeNearAI, type PluginConfig } from \"./init\";\nimport { handleTextLarge, handleTextSmall } from \"./models\";\nimport { getApiKeyOptional } from \"./utils/config\";\n\nexport type { PluginConfig } from \"./init\";\n\nconst pluginTests = [\n {\n name: \"nearai_plugin_tests\",\n tests: [\n {\n name: \"nearai_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKeyOptional(runtime);\n if (!apiKey) {\n throw new Error(\"NEARAI_API_KEY is not configured\");\n }\n logger.log(\"NEAR AI API key is configured\");\n },\n },\n {\n name: \"nearai_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_small\");\n },\n },\n {\n name: \"nearai_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_large\");\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\nfunction getProcessEnv(): ProcessEnvLike {\n // In browsers, `process` is not defined (and we must not reference it unguarded).\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const nearaiPlugin: Plugin = {\n name: \"nearai\",\n description:\n \"NEAR AI Cloud TEE inference plugin (OpenAI-compatible API; supports text generation)\",\n config: {\n NEARAI_API_KEY: env.NEARAI_API_KEY ?? null,\n NEARAI_SMALL_MODEL: env.NEARAI_SMALL_MODEL ?? null,\n NEARAI_LARGE_MODEL: env.NEARAI_LARGE_MODEL ?? null,\n NEARAI_EXPERIMENTAL_TELEMETRY: env.NEARAI_EXPERIMENTAL_TELEMETRY ?? null,\n NEARAI_BASE_URL: env.NEARAI_BASE_URL ?? null,\n NEARAI_BROWSER_BASE_URL: env.NEARAI_BROWSER_BASE_URL ?? null,\n },\n\n async init(config: Record<string, string>, runtime: IAgentRuntime) {\n initializeNearAI(config as PluginConfig, runtime);\n },\n\n models: {\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n },\n\n tests: pluginTests as TestSuite[],\n};\n\nexport default nearaiPlugin;\n",
6
+ "import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { getApiKeyOptional, isBrowser } from \"./utils/config\";\n\nexport interface PluginConfig {\n readonly NEARAI_API_KEY?: string;\n readonly NEARAI_SMALL_MODEL?: string;\n readonly NEARAI_LARGE_MODEL?: string;\n readonly NEARAI_EXPERIMENTAL_TELEMETRY?: string;\n readonly NEARAI_BASE_URL?: string;\n readonly NEARAI_BROWSER_BASE_URL?: string;\n}\n\nexport function initializeNearAI(_config: PluginConfig, runtime: IAgentRuntime): void {\n const apiKey = getApiKeyOptional(runtime);\n\n if (!apiKey && !isBrowser()) {\n logger.warn(\n \"NEARAI_API_KEY is not set in environment - NEAR AI functionality will be limited. \" +\n \"Set NEARAI_API_KEY in your environment variables or runtime settings.\"\n );\n return;\n }\n\n if (apiKey) {\n logger.log(\"NEAR AI API key configured successfully\");\n }\n}\n",
7
+ "export type ValidatedApiKey = string & { readonly __brand: \"ValidatedApiKey\" };\n\nexport type ModelName = string & { readonly __brand: \"ModelName\" };\n\nexport interface ProviderOptions {\n readonly agentName?: string;\n}\n\nexport function assertValidApiKey(apiKey: string | undefined): asserts apiKey is ValidatedApiKey {\n if (!apiKey || apiKey.trim().length === 0) {\n throw new Error(\n \"NEARAI_API_KEY is required but not configured. \" +\n \"Set it in your environment variables or runtime settings.\"\n );\n }\n}\n\nexport function createModelName(name: string): ModelName {\n if (!name || name.trim().length === 0) {\n throw new Error(\"Model name cannot be empty\");\n }\n return name as ModelName;\n}\n",
8
+ "import type { IAgentRuntime } from \"@elizaos/core\";\nimport type { ModelName, ValidatedApiKey } from \"../types\";\nimport { assertValidApiKey, createModelName } from \"../types\";\n\nconst DEFAULT_GEMMA_MODEL = \"google/gemma-4-31B-it\";\nconst DEFAULT_SMALL_MODEL = DEFAULT_GEMMA_MODEL;\nconst DEFAULT_LARGE_MODEL = DEFAULT_GEMMA_MODEL;\n\nconst DEFAULT_BASE_URL = \"https://cloud-api.near.ai/v1\";\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { document?: Document }).document !== \"undefined\"\n );\n}\n\nfunction getEnvValue(key: string): string | undefined {\n // In real browsers, `process` is not defined. `typeof process` is safe.\n if (typeof process === \"undefined\") {\n return undefined;\n }\n\n const envValue = process.env[key];\n if (typeof envValue === \"string\" && envValue.length > 0) {\n return envValue;\n }\n\n return undefined;\n}\n\nexport function getRawSetting(runtime: IAgentRuntime, key: string): string | undefined {\n const runtimeValue = runtime.getSetting(key);\n if (typeof runtimeValue === \"string\" && runtimeValue.length > 0) {\n return runtimeValue;\n }\n\n return getEnvValue(key);\n}\n\nfunction getCanonicalApiKeySetting(runtime: IAgentRuntime): string | undefined {\n return getRawSetting(runtime, \"NEARAI_API_KEY\");\n}\n\nexport function getApiKey(runtime: IAgentRuntime): ValidatedApiKey {\n const apiKey = getCanonicalApiKeySetting(runtime);\n assertValidApiKey(apiKey);\n return apiKey;\n}\n\nexport function getApiKeyOptional(runtime: IAgentRuntime): ValidatedApiKey | null {\n const apiKey = getCanonicalApiKeySetting(runtime);\n if (!apiKey || apiKey.trim().length === 0) {\n return null;\n }\n return apiKey as ValidatedApiKey;\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n if (isBrowser()) {\n const browserURL = getRawSetting(runtime, \"NEARAI_BROWSER_BASE_URL\");\n if (browserURL) {\n return normalizeBaseURL(browserURL);\n }\n }\n\n const raw = getRawSetting(runtime, \"NEARAI_BASE_URL\") ?? DEFAULT_BASE_URL;\n return normalizeBaseURL(raw);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"NEARAI_SMALL_MODEL\") ?? DEFAULT_SMALL_MODEL;\n return createModelName(model);\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"NEARAI_LARGE_MODEL\") ?? DEFAULT_LARGE_MODEL;\n return createModelName(model);\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n const setting = getRawSetting(runtime, \"NEARAI_EXPERIMENTAL_TELEMETRY\");\n if (!setting) {\n return false;\n }\n return setting.toLowerCase() === \"true\";\n}\n\nfunction normalizeBaseURL(raw: string): string {\n return raw.trim().replace(/\\/+$/, \"\");\n}\n\n/**\n * Optional fail-fast validation for callers that require a configured API key.\n * Plugin initialization uses getApiKeyOptional so discovery can proceed without\n * throwing in browser builds or partially configured environments.\n */\nexport function validateConfiguration(runtime: IAgentRuntime): void {\n if (!isBrowser()) {\n getApiKey(runtime);\n }\n}\n",
9
+ "import type { GenerateTextParams, IAgentRuntime } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type ToolSet } from \"ai\";\nimport { createNearAIClient, type NearAIFetch } from \"../providers\";\nimport type { ModelName, ProviderOptions } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// Extract the native generateText parameter type to avoid unsafe casts at call sites.\ntype NativeGenerateTextParams = Parameters<typeof generateText<ToolSet>>[0];\n\ninterface ResolvedTextParams {\n readonly prompt: string;\n readonly stopSequences: readonly string[];\n readonly maxOutputTokens: number;\n readonly temperature: number | undefined;\n readonly topP: number | undefined;\n readonly frequencyPenalty: number;\n readonly presencePenalty: number;\n readonly providerOptions: ProviderOptions;\n}\n\nfunction resolveTextParams(params: GenerateTextParams): ResolvedTextParams {\n // All fields read here are direct properties of GenerateTextParams — no cast needed.\n const providerOptions: ProviderOptions =\n (params.providerOptions?.nearai as ProviderOptions | undefined) ?? {};\n\n return {\n prompt: params.prompt ?? \"\",\n stopSequences: params.stopSequences ?? [],\n maxOutputTokens: params.maxTokens ?? 8192,\n temperature: params.temperature,\n topP: params.topP,\n frequencyPenalty: params.frequencyPenalty ?? 0,\n presencePenalty: params.presencePenalty ?? 0,\n providerOptions,\n };\n}\n\nfunction createNearAIRequestFetch(baseFetch: NearAIFetch): NearAIFetch {\n const wrapped = async (input: RequestInfo | URL, init?: RequestInit) => {\n if (init && typeof init.body === \"string\") {\n try {\n const body = JSON.parse(init.body) as Record<string, unknown>;\n if (body.max_completion_tokens != null && body.max_tokens == null) {\n body.max_tokens = body.max_completion_tokens;\n }\n delete body.max_completion_tokens;\n delete body.store;\n delete body.reasoning_effort;\n delete body.strict;\n if (Array.isArray(body.messages)) {\n body.messages = body.messages.map((message) => {\n if (\n message &&\n typeof message === \"object\" &&\n (message as { role?: unknown }).role === \"developer\"\n ) {\n return { ...(message as Record<string, unknown>), role: \"system\" };\n }\n return message;\n });\n }\n init.body = JSON.stringify(body);\n } catch {\n // Non-JSON request bodies pass through unchanged.\n }\n }\n return baseFetch(input, init);\n };\n return Object.assign(wrapped, baseFetch) as NearAIFetch;\n}\n\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelName: ModelName,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE\n): Promise<string> {\n const experimentalTelemetry = getExperimentalTelemetry(runtime);\n const requestFetch = createNearAIRequestFetch((runtime.fetch ?? fetch) as NearAIFetch);\n const nearai = createNearAIClient(runtime, { fetch: requestFetch });\n\n logger.log(`[NEAR AI] Using ${modelType} model: ${modelName}`);\n\n const resolved = resolveTextParams(params);\n\n const agentName = resolved.providerOptions.agentName;\n const telemetryConfig = {\n isEnabled: experimentalTelemetry,\n functionId: agentName ? `agent:${agentName}` : undefined,\n metadata: agentName ? { agentName } : undefined,\n };\n\n const generateParams: NativeGenerateTextParams = {\n model: nearai(modelName),\n prompt: resolved.prompt,\n system: runtime.character?.system ?? undefined,\n temperature: resolved.temperature,\n stopSequences: resolved.stopSequences as string[],\n frequencyPenalty: resolved.frequencyPenalty,\n presencePenalty: resolved.presencePenalty,\n experimental_telemetry: telemetryConfig,\n maxOutputTokens: resolved.maxOutputTokens,\n topP: resolved.topP,\n };\n\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, usage);\n }\n\n return text;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = getSmallModel(runtime);\n return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_SMALL);\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = getLargeModel(runtime);\n return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_LARGE);\n}\n",
10
+ "import {\n createOpenAICompatible,\n type OpenAICompatibleProvider,\n type OpenAICompatibleProviderSettings,\n} from \"@ai-sdk/openai-compatible\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKeyOptional, getBaseURL } from \"../utils/config\";\n\nexport type NearAIProvider = OpenAICompatibleProvider;\nexport type NearAIFetch = NonNullable<OpenAICompatibleProviderSettings[\"fetch\"]>;\n\nexport function createNearAIClient(\n runtime: IAgentRuntime,\n opts: { fetch?: NearAIFetch } = {}\n): NearAIProvider {\n const apiKey = getApiKeyOptional(runtime) ?? undefined;\n const baseURL = getBaseURL(runtime);\n\n return createOpenAICompatible({\n name: \"nearai\",\n baseURL,\n ...(apiKey ? { apiKey } : {}),\n fetch: opts.fetch ?? (runtime.fetch as NearAIFetch | undefined),\n includeUsage: true,\n });\n}\n",
11
+ "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\n\ntype ModelUsage = {\n promptTokens?: number;\n completionTokens?: number;\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n};\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n usage: ModelUsage\n): void {\n const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;\n const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;\n const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;\n\n runtime.emitEvent(EventType.MODEL_USED, {\n runtime,\n source: \"nearai\",\n type,\n tokens: {\n prompt: promptTokens,\n completion: completionTokens,\n total: totalTokens,\n },\n });\n}\n",
12
+ "import pluginDefault from \"./index\";\n\nexport * from \"./index\";\nexport default pluginDefault;\n"
13
+ ],
14
+ "mappings": ";AAQA,mBAAS,sBAAQ;;;ACRjB;;;ACiBO,SAAS,eAAe,CAAC,MAAyB;AAAA,EACvD,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,WAAW,GAAG;AAAA,IACrC,MAAM,IAAI,MAAM,4BAA4B;AAAA,EAC9C;AAAA,EACA,OAAO;AAAA;;;ACjBT,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAE5B,IAAM,mBAAmB;AAElB,SAAS,SAAS,GAAY;AAAA,EACnC,OACE,OAAO,eAAe,eACtB,OAAQ,WAAuC,aAAa;AAAA;AAIhE,SAAS,WAAW,CAAC,KAAiC;AAAA,EAEpD,IAAI,OAAO,YAAY,aAAa;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,QAAQ,IAAI;AAAA,EAC7B,IAAI,OAAO,aAAa,YAAY,SAAS,SAAS,GAAG;AAAA,IACvD,OAAO;AAAA,EACT;AAAA,EAEA;AAAA;AAGK,SAAS,aAAa,CAAC,SAAwB,KAAiC;AAAA,EACrF,MAAM,eAAe,QAAQ,WAAW,GAAG;AAAA,EAC3C,IAAI,OAAO,iBAAiB,YAAY,aAAa,SAAS,GAAG;AAAA,IAC/D,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,YAAY,GAAG;AAAA;AAGxB,SAAS,yBAAyB,CAAC,SAA4C;AAAA,EAC7E,OAAO,cAAc,SAAS,gBAAgB;AAAA;AASzC,SAAS,iBAAiB,CAAC,SAAgD;AAAA,EAChF,MAAM,SAAS,0BAA0B,OAAO;AAAA,EAChD,IAAI,CAAC,UAAU,OAAO,KAAK,EAAE,WAAW,GAAG;AAAA,IACzC,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,UAAU,CAAC,SAAgC;AAAA,EACzD,IAAI,UAAU,GAAG;AAAA,IACf,MAAM,aAAa,cAAc,SAAS,yBAAyB;AAAA,IACnE,IAAI,YAAY;AAAA,MACd,OAAO,iBAAiB,UAAU;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,cAAc,SAAS,iBAAiB,KAAK;AAAA,EACzD,OAAO,iBAAiB,GAAG;AAAA;AAGtB,SAAS,aAAa,CAAC,SAAmC;AAAA,EAC/D,MAAM,QAAQ,cAAc,SAAS,oBAAoB,KAAK;AAAA,EAC9D,OAAO,gBAAgB,KAAK;AAAA;AAGvB,SAAS,aAAa,CAAC,SAAmC;AAAA,EAC/D,MAAM,QAAQ,cAAc,SAAS,oBAAoB,KAAK;AAAA,EAC9D,OAAO,gBAAgB,KAAK;AAAA;AAGvB,SAAS,wBAAwB,CAAC,SAAiC;AAAA,EACxE,MAAM,UAAU,cAAc,SAAS,+BAA+B;AAAA,EACtE,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,OAAO,QAAQ,YAAY,MAAM;AAAA;AAGnC,SAAS,gBAAgB,CAAC,KAAqB;AAAA,EAC7C,OAAO,IAAI,KAAK,EAAE,QAAQ,QAAQ,EAAE;AAAA;;;AF7E/B,SAAS,gBAAgB,CAAC,SAAuB,SAA8B;AAAA,EACpF,MAAM,SAAS,kBAAkB,OAAO;AAAA,EAExC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;AAAA,IAC3B,OAAO,KACL,uFACE,uEACJ;AAAA,IACA;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ;AAAA,IACV,OAAO,IAAI,yCAAyC;AAAA,EACtD;AAAA;;;AGxBF,mBAAS;AACT;;;ACFA;AAAA;AAAA;AAWO,SAAS,kBAAkB,CAChC,SACA,OAAgC,CAAC,GACjB;AAAA,EAChB,MAAM,SAAS,kBAAkB,OAAO,KAAK;AAAA,EAC7C,MAAM,UAAU,WAAW,OAAO;AAAA,EAElC,OAAO,uBAAuB;AAAA,IAC5B,MAAM;AAAA,IACN;AAAA,OACI,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,IAC3B,OAAO,KAAK,SAAU,QAAQ;AAAA,IAC9B,cAAc;AAAA,EAChB,CAAC;AAAA;;ACvBH;AAUO,SAAS,mBAAmB,CACjC,SACA,MACA,OACM;AAAA,EACN,MAAM,eAAe,MAAM,gBAAgB,MAAM,eAAe;AAAA,EAChE,MAAM,mBAAmB,MAAM,oBAAoB,MAAM,gBAAgB;AAAA,EACzE,MAAM,cAAc,MAAM,eAAe,eAAe;AAAA,EAExD,QAAQ,UAAU,UAAU,YAAY;AAAA,IACtC;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAAA;;;AFPH,SAAS,iBAAiB,CAAC,QAAgD;AAAA,EAEzE,MAAM,kBACH,OAAO,iBAAiB,UAA0C,CAAC;AAAA,EAEtE,OAAO;AAAA,IACL,QAAQ,OAAO,UAAU;AAAA,IACzB,eAAe,OAAO,iBAAiB,CAAC;AAAA,IACxC,iBAAiB,OAAO,aAAa;AAAA,IACrC,aAAa,OAAO;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,kBAAkB,OAAO,oBAAoB;AAAA,IAC7C,iBAAiB,OAAO,mBAAmB;AAAA,IAC3C;AAAA,EACF;AAAA;AAGF,SAAS,wBAAwB,CAAC,WAAqC;AAAA,EACrE,MAAM,UAAU,OAAO,OAA0B,SAAuB;AAAA,IACtE,IAAI,QAAQ,OAAO,KAAK,SAAS,UAAU;AAAA,MACzC,IAAI;AAAA,QACF,MAAM,OAAO,KAAK,MAAM,KAAK,IAAI;AAAA,QACjC,IAAI,KAAK,yBAAyB,QAAQ,KAAK,cAAc,MAAM;AAAA,UACjE,KAAK,aAAa,KAAK;AAAA,QACzB;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,IAAI,MAAM,QAAQ,KAAK,QAAQ,GAAG;AAAA,UAChC,KAAK,WAAW,KAAK,SAAS,IAAI,CAAC,YAAY;AAAA,YAC7C,IACE,WACA,OAAO,YAAY,YAClB,QAA+B,SAAS,aACzC;AAAA,cACA,OAAO,KAAM,SAAqC,MAAM,SAAS;AAAA,YACnE;AAAA,YACA,OAAO;AAAA,WACR;AAAA,QACH;AAAA,QACA,KAAK,OAAO,KAAK,UAAU,IAAI;AAAA,QAC/B,MAAM;AAAA,IAGV;AAAA,IACA,OAAO,UAAU,OAAO,IAAI;AAAA;AAAA,EAE9B,OAAO,OAAO,OAAO,SAAS,SAAS;AAAA;AAGzC,eAAe,qBAAqB,CAClC,SACA,QACA,WACA,WACiB;AAAA,EACjB,MAAM,wBAAwB,yBAAyB,OAAO;AAAA,EAC9D,MAAM,eAAe,yBAA0B,QAAQ,SAAS,KAAqB;AAAA,EACrF,MAAM,SAAS,mBAAmB,SAAS,EAAE,OAAO,aAAa,CAAC;AAAA,EAElE,QAAO,IAAI,mBAAmB,oBAAoB,WAAW;AAAA,EAE7D,MAAM,WAAW,kBAAkB,MAAM;AAAA,EAEzC,MAAM,YAAY,SAAS,gBAAgB;AAAA,EAC3C,MAAM,kBAAkB;AAAA,IACtB,WAAW;AAAA,IACX,YAAY,YAAY,SAAS,cAAc;AAAA,IAC/C,UAAU,YAAY,EAAE,UAAU,IAAI;AAAA,EACxC;AAAA,EAEA,MAAM,iBAA2C;AAAA,IAC/C,OAAO,OAAO,SAAS;AAAA,IACvB,QAAQ,SAAS;AAAA,IACjB,QAAQ,QAAQ,WAAW,UAAU;AAAA,IACrC,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,kBAAkB,SAAS;AAAA,IAC3B,iBAAiB,SAAS;AAAA,IAC1B,wBAAwB;AAAA,IACxB,iBAAiB,SAAS;AAAA,IAC1B,MAAM,SAAS;AAAA,EACjB;AAAA,EAEA,QAAQ,MAAM,UAAU,MAAM,aAAa,cAAc;AAAA,EAEzD,IAAI,OAAO;AAAA,IACT,oBAAoB,SAAS,WAAW,KAAK;AAAA,EAC/C;AAAA,EAEA,OAAO;AAAA;AAGT,eAAsB,eAAe,CACnC,SACA,QACiB;AAAA,EACjB,MAAM,YAAY,cAAc,OAAO;AAAA,EACvC,OAAO,sBAAsB,SAAS,QAAQ,WAAW,UAAU,UAAU;AAAA;AAG/E,eAAsB,eAAe,CACnC,SACA,QACiB;AAAA,EACjB,MAAM,YAAY,cAAc,OAAO;AAAA,EACvC,OAAO,sBAAsB,SAAS,QAAQ,WAAW,UAAU,UAAU;AAAA;;AJlH/E,IAAM,cAAc;AAAA,EAClB;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,IAAI,OAAO,YAA2B;AAAA,UACpC,MAAM,SAAS,kBAAkB,OAAO;AAAA,UACxC,IAAI,CAAC,QAAQ;AAAA,YACX,MAAM,IAAI,MAAM,kCAAkC;AAAA,UACpD;AAAA,UACA,QAAO,IAAI,+BAA+B;AAAA;AAAA,MAE9C;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,IAAI,OAAO,YAA2B;AAAA,UACpC,MAAM,OAAO,MAAM,QAAQ,SAAS,WAAU,YAAY;AAAA,YACxD,QAAQ;AAAA,UACV,CAAC;AAAA,UAED,IAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AAAA,YACjD,MAAM,IAAI,MAAM,yCAAyC;AAAA,UAC3D;AAAA,UAEA,QAAO,IAAI,EAAE,KAAK,GAAG,gCAAgC;AAAA;AAAA,MAEzD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,IAAI,OAAO,YAA2B;AAAA,UACpC,MAAM,OAAO,MAAM,QAAQ,SAAS,WAAU,YAAY;AAAA,YACxD,QAAQ;AAAA,UACV,CAAC;AAAA,UAED,IAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AAAA,YACjD,MAAM,IAAI,MAAM,yCAAyC;AAAA,UAC3D;AAAA,UAEA,QAAO,IAAI,EAAE,KAAK,GAAG,gCAAgC;AAAA;AAAA,MAEzD;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,GAAmB;AAAA,EAEvC,IAAI,OAAO,YAAY,aAAa;AAAA,IAClC,OAAO,CAAC;AAAA,EACV;AAAA,EACA,OAAO,QAAQ;AAAA;AAGjB,IAAM,MAAM,cAAc;AAEnB,IAAM,eAAuB;AAAA,EAClC,MAAM;AAAA,EACN,aACE;AAAA,EACF,QAAQ;AAAA,IACN,gBAAgB,IAAI,kBAAkB;AAAA,IACtC,oBAAoB,IAAI,sBAAsB;AAAA,IAC9C,oBAAoB,IAAI,sBAAsB;AAAA,IAC9C,+BAA+B,IAAI,iCAAiC;AAAA,IACpE,iBAAiB,IAAI,mBAAmB;AAAA,IACxC,yBAAyB,IAAI,2BAA2B;AAAA,EAC1D;AAAA,OAEM,KAAI,CAAC,QAAgC,SAAwB;AAAA,IACjE,iBAAiB,QAAwB,OAAO;AAAA;AAAA,EAGlD,QAAQ;AAAA,KACL,WAAU,aAAa,OACtB,SACA,WACoB;AAAA,MACpB,OAAO,gBAAgB,SAAS,MAAM;AAAA;AAAA,KAGvC,WAAU,aAAa,OACtB,SACA,WACoB;AAAA,MACpB,OAAO,gBAAgB,SAAS,MAAM;AAAA;AAAA,EAE1C;AAAA,EAEA,OAAO;AACT;AAEA,IAAe;;;AOxGf,IAAe;",
15
+ "debugId": "6947224D70474EE764756E2164756E21",
16
+ "names": []
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./index.browser";
2
+ export { default } from "./index.browser";
@@ -0,0 +1,2 @@
1
+ export * from "./index.node";
2
+ export { default } from "./index.node";
@@ -0,0 +1,329 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
8
+ var __toCommonJS = (from) => {
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
10
+ if (entry)
11
+ return entry;
12
+ entry = __defProp({}, "__esModule", { value: true });
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
21
+ __moduleCache.set(from, entry);
22
+ return entry;
23
+ };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
29
+ var __export = (target, all) => {
30
+ for (var name in all)
31
+ __defProp(target, name, {
32
+ get: all[name],
33
+ enumerable: true,
34
+ configurable: true,
35
+ set: __exportSetter.bind(all, name)
36
+ });
37
+ };
38
+
39
+ // index.node.ts
40
+ var exports_index_node = {};
41
+ __export(exports_index_node, {
42
+ nearaiPlugin: () => nearaiPlugin,
43
+ default: () => index_node_default
44
+ });
45
+ module.exports = __toCommonJS(exports_index_node);
46
+
47
+ // index.ts
48
+ var import_core4 = require("@elizaos/core");
49
+
50
+ // init.ts
51
+ var import_core = require("@elizaos/core");
52
+
53
+ // types/index.ts
54
+ function createModelName(name) {
55
+ if (!name || name.trim().length === 0) {
56
+ throw new Error("Model name cannot be empty");
57
+ }
58
+ return name;
59
+ }
60
+
61
+ // utils/config.ts
62
+ var DEFAULT_GEMMA_MODEL = "google/gemma-4-31B-it";
63
+ var DEFAULT_SMALL_MODEL = DEFAULT_GEMMA_MODEL;
64
+ var DEFAULT_LARGE_MODEL = DEFAULT_GEMMA_MODEL;
65
+ var DEFAULT_BASE_URL = "https://cloud-api.near.ai/v1";
66
+ function isBrowser() {
67
+ return typeof globalThis !== "undefined" && typeof globalThis.document !== "undefined";
68
+ }
69
+ function getEnvValue(key) {
70
+ if (typeof process === "undefined") {
71
+ return;
72
+ }
73
+ const envValue = process.env[key];
74
+ if (typeof envValue === "string" && envValue.length > 0) {
75
+ return envValue;
76
+ }
77
+ return;
78
+ }
79
+ function getRawSetting(runtime, key) {
80
+ const runtimeValue = runtime.getSetting(key);
81
+ if (typeof runtimeValue === "string" && runtimeValue.length > 0) {
82
+ return runtimeValue;
83
+ }
84
+ return getEnvValue(key);
85
+ }
86
+ function getCanonicalApiKeySetting(runtime) {
87
+ return getRawSetting(runtime, "NEARAI_API_KEY");
88
+ }
89
+ function getApiKeyOptional(runtime) {
90
+ const apiKey = getCanonicalApiKeySetting(runtime);
91
+ if (!apiKey || apiKey.trim().length === 0) {
92
+ return null;
93
+ }
94
+ return apiKey;
95
+ }
96
+ function getBaseURL(runtime) {
97
+ if (isBrowser()) {
98
+ const browserURL = getRawSetting(runtime, "NEARAI_BROWSER_BASE_URL");
99
+ if (browserURL) {
100
+ return normalizeBaseURL(browserURL);
101
+ }
102
+ }
103
+ const raw = getRawSetting(runtime, "NEARAI_BASE_URL") ?? DEFAULT_BASE_URL;
104
+ return normalizeBaseURL(raw);
105
+ }
106
+ function getSmallModel(runtime) {
107
+ const model = getRawSetting(runtime, "NEARAI_SMALL_MODEL") ?? DEFAULT_SMALL_MODEL;
108
+ return createModelName(model);
109
+ }
110
+ function getLargeModel(runtime) {
111
+ const model = getRawSetting(runtime, "NEARAI_LARGE_MODEL") ?? DEFAULT_LARGE_MODEL;
112
+ return createModelName(model);
113
+ }
114
+ function getExperimentalTelemetry(runtime) {
115
+ const setting = getRawSetting(runtime, "NEARAI_EXPERIMENTAL_TELEMETRY");
116
+ if (!setting) {
117
+ return false;
118
+ }
119
+ return setting.toLowerCase() === "true";
120
+ }
121
+ function normalizeBaseURL(raw) {
122
+ return raw.trim().replace(/\/+$/, "");
123
+ }
124
+
125
+ // init.ts
126
+ function initializeNearAI(_config, runtime) {
127
+ const apiKey = getApiKeyOptional(runtime);
128
+ if (!apiKey && !isBrowser()) {
129
+ import_core.logger.warn("NEARAI_API_KEY is not set in environment - NEAR AI functionality will be limited. " + "Set NEARAI_API_KEY in your environment variables or runtime settings.");
130
+ return;
131
+ }
132
+ if (apiKey) {
133
+ import_core.logger.log("NEAR AI API key configured successfully");
134
+ }
135
+ }
136
+
137
+ // models/text.ts
138
+ var import_core3 = require("@elizaos/core");
139
+ var import_ai = require("ai");
140
+
141
+ // providers/openai-compatible.ts
142
+ var import_openai_compatible = require("@ai-sdk/openai-compatible");
143
+ function createNearAIClient(runtime, opts = {}) {
144
+ const apiKey = getApiKeyOptional(runtime) ?? undefined;
145
+ const baseURL = getBaseURL(runtime);
146
+ return import_openai_compatible.createOpenAICompatible({
147
+ name: "nearai",
148
+ baseURL,
149
+ ...apiKey ? { apiKey } : {},
150
+ fetch: opts.fetch ?? runtime.fetch,
151
+ includeUsage: true
152
+ });
153
+ }
154
+ // utils/events.ts
155
+ var import_core2 = require("@elizaos/core");
156
+ function emitModelUsageEvent(runtime, type, usage) {
157
+ const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;
158
+ const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;
159
+ const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;
160
+ runtime.emitEvent(import_core2.EventType.MODEL_USED, {
161
+ runtime,
162
+ source: "nearai",
163
+ type,
164
+ tokens: {
165
+ prompt: promptTokens,
166
+ completion: completionTokens,
167
+ total: totalTokens
168
+ }
169
+ });
170
+ }
171
+
172
+ // models/text.ts
173
+ function resolveTextParams(params) {
174
+ const providerOptions = params.providerOptions?.nearai ?? {};
175
+ return {
176
+ prompt: params.prompt ?? "",
177
+ stopSequences: params.stopSequences ?? [],
178
+ maxOutputTokens: params.maxTokens ?? 8192,
179
+ temperature: params.temperature,
180
+ topP: params.topP,
181
+ frequencyPenalty: params.frequencyPenalty ?? 0,
182
+ presencePenalty: params.presencePenalty ?? 0,
183
+ providerOptions
184
+ };
185
+ }
186
+ function createNearAIRequestFetch(baseFetch) {
187
+ const wrapped = async (input, init) => {
188
+ if (init && typeof init.body === "string") {
189
+ try {
190
+ const body = JSON.parse(init.body);
191
+ if (body.max_completion_tokens != null && body.max_tokens == null) {
192
+ body.max_tokens = body.max_completion_tokens;
193
+ }
194
+ delete body.max_completion_tokens;
195
+ delete body.store;
196
+ delete body.reasoning_effort;
197
+ delete body.strict;
198
+ if (Array.isArray(body.messages)) {
199
+ body.messages = body.messages.map((message) => {
200
+ if (message && typeof message === "object" && message.role === "developer") {
201
+ return { ...message, role: "system" };
202
+ }
203
+ return message;
204
+ });
205
+ }
206
+ init.body = JSON.stringify(body);
207
+ } catch {}
208
+ }
209
+ return baseFetch(input, init);
210
+ };
211
+ return Object.assign(wrapped, baseFetch);
212
+ }
213
+ async function generateTextWithModel(runtime, params, modelName, modelType) {
214
+ const experimentalTelemetry = getExperimentalTelemetry(runtime);
215
+ const requestFetch = createNearAIRequestFetch(runtime.fetch ?? fetch);
216
+ const nearai = createNearAIClient(runtime, { fetch: requestFetch });
217
+ import_core3.logger.log(`[NEAR AI] Using ${modelType} model: ${modelName}`);
218
+ const resolved = resolveTextParams(params);
219
+ const agentName = resolved.providerOptions.agentName;
220
+ const telemetryConfig = {
221
+ isEnabled: experimentalTelemetry,
222
+ functionId: agentName ? `agent:${agentName}` : undefined,
223
+ metadata: agentName ? { agentName } : undefined
224
+ };
225
+ const generateParams = {
226
+ model: nearai(modelName),
227
+ prompt: resolved.prompt,
228
+ system: runtime.character?.system ?? undefined,
229
+ temperature: resolved.temperature,
230
+ stopSequences: resolved.stopSequences,
231
+ frequencyPenalty: resolved.frequencyPenalty,
232
+ presencePenalty: resolved.presencePenalty,
233
+ experimental_telemetry: telemetryConfig,
234
+ maxOutputTokens: resolved.maxOutputTokens,
235
+ topP: resolved.topP
236
+ };
237
+ const { text, usage } = await import_ai.generateText(generateParams);
238
+ if (usage) {
239
+ emitModelUsageEvent(runtime, modelType, usage);
240
+ }
241
+ return text;
242
+ }
243
+ async function handleTextSmall(runtime, params) {
244
+ const modelName = getSmallModel(runtime);
245
+ return generateTextWithModel(runtime, params, modelName, import_core3.ModelType.TEXT_SMALL);
246
+ }
247
+ async function handleTextLarge(runtime, params) {
248
+ const modelName = getLargeModel(runtime);
249
+ return generateTextWithModel(runtime, params, modelName, import_core3.ModelType.TEXT_LARGE);
250
+ }
251
+ // index.ts
252
+ var pluginTests = [
253
+ {
254
+ name: "nearai_plugin_tests",
255
+ tests: [
256
+ {
257
+ name: "nearai_test_api_key_validation",
258
+ fn: async (runtime) => {
259
+ const apiKey = getApiKeyOptional(runtime);
260
+ if (!apiKey) {
261
+ throw new Error("NEARAI_API_KEY is not configured");
262
+ }
263
+ import_core4.logger.log("NEAR AI API key is configured");
264
+ }
265
+ },
266
+ {
267
+ name: "nearai_test_text_small",
268
+ fn: async (runtime) => {
269
+ const text = await runtime.useModel(import_core4.ModelType.TEXT_SMALL, {
270
+ prompt: "What is the nature of reality in 10 words?"
271
+ });
272
+ if (typeof text !== "string" || text.length === 0) {
273
+ throw new Error("Failed to generate text: empty response");
274
+ }
275
+ import_core4.logger.log({ text }, "generated with test_text_small");
276
+ }
277
+ },
278
+ {
279
+ name: "nearai_test_text_large",
280
+ fn: async (runtime) => {
281
+ const text = await runtime.useModel(import_core4.ModelType.TEXT_LARGE, {
282
+ prompt: "What is the nature of reality in 10 words?"
283
+ });
284
+ if (typeof text !== "string" || text.length === 0) {
285
+ throw new Error("Failed to generate text: empty response");
286
+ }
287
+ import_core4.logger.log({ text }, "generated with test_text_large");
288
+ }
289
+ }
290
+ ]
291
+ }
292
+ ];
293
+ function getProcessEnv() {
294
+ if (typeof process === "undefined") {
295
+ return {};
296
+ }
297
+ return process.env;
298
+ }
299
+ var env = getProcessEnv();
300
+ var nearaiPlugin = {
301
+ name: "nearai",
302
+ description: "NEAR AI Cloud TEE inference plugin (OpenAI-compatible API; supports text generation)",
303
+ config: {
304
+ NEARAI_API_KEY: env.NEARAI_API_KEY ?? null,
305
+ NEARAI_SMALL_MODEL: env.NEARAI_SMALL_MODEL ?? null,
306
+ NEARAI_LARGE_MODEL: env.NEARAI_LARGE_MODEL ?? null,
307
+ NEARAI_EXPERIMENTAL_TELEMETRY: env.NEARAI_EXPERIMENTAL_TELEMETRY ?? null,
308
+ NEARAI_BASE_URL: env.NEARAI_BASE_URL ?? null,
309
+ NEARAI_BROWSER_BASE_URL: env.NEARAI_BROWSER_BASE_URL ?? null
310
+ },
311
+ async init(config, runtime) {
312
+ initializeNearAI(config, runtime);
313
+ },
314
+ models: {
315
+ [import_core4.ModelType.TEXT_SMALL]: async (runtime, params) => {
316
+ return handleTextSmall(runtime, params);
317
+ },
318
+ [import_core4.ModelType.TEXT_LARGE]: async (runtime, params) => {
319
+ return handleTextLarge(runtime, params);
320
+ }
321
+ },
322
+ tests: pluginTests
323
+ };
324
+ var plugin_nearai_default = nearaiPlugin;
325
+
326
+ // index.node.ts
327
+ var index_node_default = plugin_nearai_default;
328
+
329
+ //# debugId=99FF6B8589A1F33A64756E2164756E21
@@ -0,0 +1,17 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../index.ts", "../../init.ts", "../../types/index.ts", "../../utils/config.ts", "../../models/text.ts", "../../providers/openai-compatible.ts", "../../utils/events.ts", "../../index.node.ts"],
4
+ "sourcesContent": [
5
+ "import type {\n GenerateTextParams,\n IAgentRuntime,\n Plugin,\n ProcessEnvLike,\n TestCase,\n TestSuite,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { initializeNearAI, type PluginConfig } from \"./init\";\nimport { handleTextLarge, handleTextSmall } from \"./models\";\nimport { getApiKeyOptional } from \"./utils/config\";\n\nexport type { PluginConfig } from \"./init\";\n\nconst pluginTests = [\n {\n name: \"nearai_plugin_tests\",\n tests: [\n {\n name: \"nearai_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKeyOptional(runtime);\n if (!apiKey) {\n throw new Error(\"NEARAI_API_KEY is not configured\");\n }\n logger.log(\"NEAR AI API key is configured\");\n },\n },\n {\n name: \"nearai_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_small\");\n },\n },\n {\n name: \"nearai_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_large\");\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\nfunction getProcessEnv(): ProcessEnvLike {\n // In browsers, `process` is not defined (and we must not reference it unguarded).\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const nearaiPlugin: Plugin = {\n name: \"nearai\",\n description:\n \"NEAR AI Cloud TEE inference plugin (OpenAI-compatible API; supports text generation)\",\n config: {\n NEARAI_API_KEY: env.NEARAI_API_KEY ?? null,\n NEARAI_SMALL_MODEL: env.NEARAI_SMALL_MODEL ?? null,\n NEARAI_LARGE_MODEL: env.NEARAI_LARGE_MODEL ?? null,\n NEARAI_EXPERIMENTAL_TELEMETRY: env.NEARAI_EXPERIMENTAL_TELEMETRY ?? null,\n NEARAI_BASE_URL: env.NEARAI_BASE_URL ?? null,\n NEARAI_BROWSER_BASE_URL: env.NEARAI_BROWSER_BASE_URL ?? null,\n },\n\n async init(config: Record<string, string>, runtime: IAgentRuntime) {\n initializeNearAI(config as PluginConfig, runtime);\n },\n\n models: {\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n },\n\n tests: pluginTests as TestSuite[],\n};\n\nexport default nearaiPlugin;\n",
6
+ "import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { getApiKeyOptional, isBrowser } from \"./utils/config\";\n\nexport interface PluginConfig {\n readonly NEARAI_API_KEY?: string;\n readonly NEARAI_SMALL_MODEL?: string;\n readonly NEARAI_LARGE_MODEL?: string;\n readonly NEARAI_EXPERIMENTAL_TELEMETRY?: string;\n readonly NEARAI_BASE_URL?: string;\n readonly NEARAI_BROWSER_BASE_URL?: string;\n}\n\nexport function initializeNearAI(_config: PluginConfig, runtime: IAgentRuntime): void {\n const apiKey = getApiKeyOptional(runtime);\n\n if (!apiKey && !isBrowser()) {\n logger.warn(\n \"NEARAI_API_KEY is not set in environment - NEAR AI functionality will be limited. \" +\n \"Set NEARAI_API_KEY in your environment variables or runtime settings.\"\n );\n return;\n }\n\n if (apiKey) {\n logger.log(\"NEAR AI API key configured successfully\");\n }\n}\n",
7
+ "export type ValidatedApiKey = string & { readonly __brand: \"ValidatedApiKey\" };\n\nexport type ModelName = string & { readonly __brand: \"ModelName\" };\n\nexport interface ProviderOptions {\n readonly agentName?: string;\n}\n\nexport function assertValidApiKey(apiKey: string | undefined): asserts apiKey is ValidatedApiKey {\n if (!apiKey || apiKey.trim().length === 0) {\n throw new Error(\n \"NEARAI_API_KEY is required but not configured. \" +\n \"Set it in your environment variables or runtime settings.\"\n );\n }\n}\n\nexport function createModelName(name: string): ModelName {\n if (!name || name.trim().length === 0) {\n throw new Error(\"Model name cannot be empty\");\n }\n return name as ModelName;\n}\n",
8
+ "import type { IAgentRuntime } from \"@elizaos/core\";\nimport type { ModelName, ValidatedApiKey } from \"../types\";\nimport { assertValidApiKey, createModelName } from \"../types\";\n\nconst DEFAULT_GEMMA_MODEL = \"google/gemma-4-31B-it\";\nconst DEFAULT_SMALL_MODEL = DEFAULT_GEMMA_MODEL;\nconst DEFAULT_LARGE_MODEL = DEFAULT_GEMMA_MODEL;\n\nconst DEFAULT_BASE_URL = \"https://cloud-api.near.ai/v1\";\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { document?: Document }).document !== \"undefined\"\n );\n}\n\nfunction getEnvValue(key: string): string | undefined {\n // In real browsers, `process` is not defined. `typeof process` is safe.\n if (typeof process === \"undefined\") {\n return undefined;\n }\n\n const envValue = process.env[key];\n if (typeof envValue === \"string\" && envValue.length > 0) {\n return envValue;\n }\n\n return undefined;\n}\n\nexport function getRawSetting(runtime: IAgentRuntime, key: string): string | undefined {\n const runtimeValue = runtime.getSetting(key);\n if (typeof runtimeValue === \"string\" && runtimeValue.length > 0) {\n return runtimeValue;\n }\n\n return getEnvValue(key);\n}\n\nfunction getCanonicalApiKeySetting(runtime: IAgentRuntime): string | undefined {\n return getRawSetting(runtime, \"NEARAI_API_KEY\");\n}\n\nexport function getApiKey(runtime: IAgentRuntime): ValidatedApiKey {\n const apiKey = getCanonicalApiKeySetting(runtime);\n assertValidApiKey(apiKey);\n return apiKey;\n}\n\nexport function getApiKeyOptional(runtime: IAgentRuntime): ValidatedApiKey | null {\n const apiKey = getCanonicalApiKeySetting(runtime);\n if (!apiKey || apiKey.trim().length === 0) {\n return null;\n }\n return apiKey as ValidatedApiKey;\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n if (isBrowser()) {\n const browserURL = getRawSetting(runtime, \"NEARAI_BROWSER_BASE_URL\");\n if (browserURL) {\n return normalizeBaseURL(browserURL);\n }\n }\n\n const raw = getRawSetting(runtime, \"NEARAI_BASE_URL\") ?? DEFAULT_BASE_URL;\n return normalizeBaseURL(raw);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"NEARAI_SMALL_MODEL\") ?? DEFAULT_SMALL_MODEL;\n return createModelName(model);\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"NEARAI_LARGE_MODEL\") ?? DEFAULT_LARGE_MODEL;\n return createModelName(model);\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n const setting = getRawSetting(runtime, \"NEARAI_EXPERIMENTAL_TELEMETRY\");\n if (!setting) {\n return false;\n }\n return setting.toLowerCase() === \"true\";\n}\n\nfunction normalizeBaseURL(raw: string): string {\n return raw.trim().replace(/\\/+$/, \"\");\n}\n\n/**\n * Optional fail-fast validation for callers that require a configured API key.\n * Plugin initialization uses getApiKeyOptional so discovery can proceed without\n * throwing in browser builds or partially configured environments.\n */\nexport function validateConfiguration(runtime: IAgentRuntime): void {\n if (!isBrowser()) {\n getApiKey(runtime);\n }\n}\n",
9
+ "import type { GenerateTextParams, IAgentRuntime } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type ToolSet } from \"ai\";\nimport { createNearAIClient, type NearAIFetch } from \"../providers\";\nimport type { ModelName, ProviderOptions } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// Extract the native generateText parameter type to avoid unsafe casts at call sites.\ntype NativeGenerateTextParams = Parameters<typeof generateText<ToolSet>>[0];\n\ninterface ResolvedTextParams {\n readonly prompt: string;\n readonly stopSequences: readonly string[];\n readonly maxOutputTokens: number;\n readonly temperature: number | undefined;\n readonly topP: number | undefined;\n readonly frequencyPenalty: number;\n readonly presencePenalty: number;\n readonly providerOptions: ProviderOptions;\n}\n\nfunction resolveTextParams(params: GenerateTextParams): ResolvedTextParams {\n // All fields read here are direct properties of GenerateTextParams — no cast needed.\n const providerOptions: ProviderOptions =\n (params.providerOptions?.nearai as ProviderOptions | undefined) ?? {};\n\n return {\n prompt: params.prompt ?? \"\",\n stopSequences: params.stopSequences ?? [],\n maxOutputTokens: params.maxTokens ?? 8192,\n temperature: params.temperature,\n topP: params.topP,\n frequencyPenalty: params.frequencyPenalty ?? 0,\n presencePenalty: params.presencePenalty ?? 0,\n providerOptions,\n };\n}\n\nfunction createNearAIRequestFetch(baseFetch: NearAIFetch): NearAIFetch {\n const wrapped = async (input: RequestInfo | URL, init?: RequestInit) => {\n if (init && typeof init.body === \"string\") {\n try {\n const body = JSON.parse(init.body) as Record<string, unknown>;\n if (body.max_completion_tokens != null && body.max_tokens == null) {\n body.max_tokens = body.max_completion_tokens;\n }\n delete body.max_completion_tokens;\n delete body.store;\n delete body.reasoning_effort;\n delete body.strict;\n if (Array.isArray(body.messages)) {\n body.messages = body.messages.map((message) => {\n if (\n message &&\n typeof message === \"object\" &&\n (message as { role?: unknown }).role === \"developer\"\n ) {\n return { ...(message as Record<string, unknown>), role: \"system\" };\n }\n return message;\n });\n }\n init.body = JSON.stringify(body);\n } catch {\n // Non-JSON request bodies pass through unchanged.\n }\n }\n return baseFetch(input, init);\n };\n return Object.assign(wrapped, baseFetch) as NearAIFetch;\n}\n\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelName: ModelName,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE\n): Promise<string> {\n const experimentalTelemetry = getExperimentalTelemetry(runtime);\n const requestFetch = createNearAIRequestFetch((runtime.fetch ?? fetch) as NearAIFetch);\n const nearai = createNearAIClient(runtime, { fetch: requestFetch });\n\n logger.log(`[NEAR AI] Using ${modelType} model: ${modelName}`);\n\n const resolved = resolveTextParams(params);\n\n const agentName = resolved.providerOptions.agentName;\n const telemetryConfig = {\n isEnabled: experimentalTelemetry,\n functionId: agentName ? `agent:${agentName}` : undefined,\n metadata: agentName ? { agentName } : undefined,\n };\n\n const generateParams: NativeGenerateTextParams = {\n model: nearai(modelName),\n prompt: resolved.prompt,\n system: runtime.character?.system ?? undefined,\n temperature: resolved.temperature,\n stopSequences: resolved.stopSequences as string[],\n frequencyPenalty: resolved.frequencyPenalty,\n presencePenalty: resolved.presencePenalty,\n experimental_telemetry: telemetryConfig,\n maxOutputTokens: resolved.maxOutputTokens,\n topP: resolved.topP,\n };\n\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, usage);\n }\n\n return text;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = getSmallModel(runtime);\n return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_SMALL);\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = getLargeModel(runtime);\n return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_LARGE);\n}\n",
10
+ "import {\n createOpenAICompatible,\n type OpenAICompatibleProvider,\n type OpenAICompatibleProviderSettings,\n} from \"@ai-sdk/openai-compatible\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKeyOptional, getBaseURL } from \"../utils/config\";\n\nexport type NearAIProvider = OpenAICompatibleProvider;\nexport type NearAIFetch = NonNullable<OpenAICompatibleProviderSettings[\"fetch\"]>;\n\nexport function createNearAIClient(\n runtime: IAgentRuntime,\n opts: { fetch?: NearAIFetch } = {}\n): NearAIProvider {\n const apiKey = getApiKeyOptional(runtime) ?? undefined;\n const baseURL = getBaseURL(runtime);\n\n return createOpenAICompatible({\n name: \"nearai\",\n baseURL,\n ...(apiKey ? { apiKey } : {}),\n fetch: opts.fetch ?? (runtime.fetch as NearAIFetch | undefined),\n includeUsage: true,\n });\n}\n",
11
+ "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\n\ntype ModelUsage = {\n promptTokens?: number;\n completionTokens?: number;\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n};\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n usage: ModelUsage\n): void {\n const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;\n const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;\n const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;\n\n runtime.emitEvent(EventType.MODEL_USED, {\n runtime,\n source: \"nearai\",\n type,\n tokens: {\n prompt: promptTokens,\n completion: completionTokens,\n total: totalTokens,\n },\n });\n}\n",
12
+ "import pluginDefault from \"./index\";\n\nexport * from \"./index\";\nexport default pluginDefault;\n"
13
+ ],
14
+ "mappings": "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",
15
+ "debugId": "99FF6B8589A1F33A64756E2164756E21",
16
+ "names": []
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./node/index";
2
+ export { default } from "./node/index";
@@ -0,0 +1,2 @@
1
+ export * from "./index.node";
2
+ export { default } from "./index.node";
@@ -0,0 +1,289 @@
1
+ // index.ts
2
+ import { logger as logger3, ModelType as ModelType2 } from "@elizaos/core";
3
+
4
+ // init.ts
5
+ import { logger } from "@elizaos/core";
6
+
7
+ // types/index.ts
8
+ function createModelName(name) {
9
+ if (!name || name.trim().length === 0) {
10
+ throw new Error("Model name cannot be empty");
11
+ }
12
+ return name;
13
+ }
14
+
15
+ // utils/config.ts
16
+ var DEFAULT_GEMMA_MODEL = "google/gemma-4-31B-it";
17
+ var DEFAULT_SMALL_MODEL = DEFAULT_GEMMA_MODEL;
18
+ var DEFAULT_LARGE_MODEL = DEFAULT_GEMMA_MODEL;
19
+ var DEFAULT_BASE_URL = "https://cloud-api.near.ai/v1";
20
+ function isBrowser() {
21
+ return typeof globalThis !== "undefined" && typeof globalThis.document !== "undefined";
22
+ }
23
+ function getEnvValue(key) {
24
+ if (typeof process === "undefined") {
25
+ return;
26
+ }
27
+ const envValue = process.env[key];
28
+ if (typeof envValue === "string" && envValue.length > 0) {
29
+ return envValue;
30
+ }
31
+ return;
32
+ }
33
+ function getRawSetting(runtime, key) {
34
+ const runtimeValue = runtime.getSetting(key);
35
+ if (typeof runtimeValue === "string" && runtimeValue.length > 0) {
36
+ return runtimeValue;
37
+ }
38
+ return getEnvValue(key);
39
+ }
40
+ function getCanonicalApiKeySetting(runtime) {
41
+ return getRawSetting(runtime, "NEARAI_API_KEY");
42
+ }
43
+ function getApiKeyOptional(runtime) {
44
+ const apiKey = getCanonicalApiKeySetting(runtime);
45
+ if (!apiKey || apiKey.trim().length === 0) {
46
+ return null;
47
+ }
48
+ return apiKey;
49
+ }
50
+ function getBaseURL(runtime) {
51
+ if (isBrowser()) {
52
+ const browserURL = getRawSetting(runtime, "NEARAI_BROWSER_BASE_URL");
53
+ if (browserURL) {
54
+ return normalizeBaseURL(browserURL);
55
+ }
56
+ }
57
+ const raw = getRawSetting(runtime, "NEARAI_BASE_URL") ?? DEFAULT_BASE_URL;
58
+ return normalizeBaseURL(raw);
59
+ }
60
+ function getSmallModel(runtime) {
61
+ const model = getRawSetting(runtime, "NEARAI_SMALL_MODEL") ?? DEFAULT_SMALL_MODEL;
62
+ return createModelName(model);
63
+ }
64
+ function getLargeModel(runtime) {
65
+ const model = getRawSetting(runtime, "NEARAI_LARGE_MODEL") ?? DEFAULT_LARGE_MODEL;
66
+ return createModelName(model);
67
+ }
68
+ function getExperimentalTelemetry(runtime) {
69
+ const setting = getRawSetting(runtime, "NEARAI_EXPERIMENTAL_TELEMETRY");
70
+ if (!setting) {
71
+ return false;
72
+ }
73
+ return setting.toLowerCase() === "true";
74
+ }
75
+ function normalizeBaseURL(raw) {
76
+ return raw.trim().replace(/\/+$/, "");
77
+ }
78
+
79
+ // init.ts
80
+ function initializeNearAI(_config, runtime) {
81
+ const apiKey = getApiKeyOptional(runtime);
82
+ if (!apiKey && !isBrowser()) {
83
+ logger.warn("NEARAI_API_KEY is not set in environment - NEAR AI functionality will be limited. " + "Set NEARAI_API_KEY in your environment variables or runtime settings.");
84
+ return;
85
+ }
86
+ if (apiKey) {
87
+ logger.log("NEAR AI API key configured successfully");
88
+ }
89
+ }
90
+
91
+ // models/text.ts
92
+ import { logger as logger2, ModelType } from "@elizaos/core";
93
+ import { generateText } from "ai";
94
+
95
+ // providers/openai-compatible.ts
96
+ import {
97
+ createOpenAICompatible
98
+ } from "@ai-sdk/openai-compatible";
99
+ function createNearAIClient(runtime, opts = {}) {
100
+ const apiKey = getApiKeyOptional(runtime) ?? undefined;
101
+ const baseURL = getBaseURL(runtime);
102
+ return createOpenAICompatible({
103
+ name: "nearai",
104
+ baseURL,
105
+ ...apiKey ? { apiKey } : {},
106
+ fetch: opts.fetch ?? runtime.fetch,
107
+ includeUsage: true
108
+ });
109
+ }
110
+ // utils/events.ts
111
+ import { EventType } from "@elizaos/core";
112
+ function emitModelUsageEvent(runtime, type, usage) {
113
+ const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;
114
+ const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;
115
+ const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;
116
+ runtime.emitEvent(EventType.MODEL_USED, {
117
+ runtime,
118
+ source: "nearai",
119
+ type,
120
+ tokens: {
121
+ prompt: promptTokens,
122
+ completion: completionTokens,
123
+ total: totalTokens
124
+ }
125
+ });
126
+ }
127
+
128
+ // models/text.ts
129
+ function resolveTextParams(params) {
130
+ const providerOptions = params.providerOptions?.nearai ?? {};
131
+ return {
132
+ prompt: params.prompt ?? "",
133
+ stopSequences: params.stopSequences ?? [],
134
+ maxOutputTokens: params.maxTokens ?? 8192,
135
+ temperature: params.temperature,
136
+ topP: params.topP,
137
+ frequencyPenalty: params.frequencyPenalty ?? 0,
138
+ presencePenalty: params.presencePenalty ?? 0,
139
+ providerOptions
140
+ };
141
+ }
142
+ function createNearAIRequestFetch(baseFetch) {
143
+ const wrapped = async (input, init) => {
144
+ if (init && typeof init.body === "string") {
145
+ try {
146
+ const body = JSON.parse(init.body);
147
+ if (body.max_completion_tokens != null && body.max_tokens == null) {
148
+ body.max_tokens = body.max_completion_tokens;
149
+ }
150
+ delete body.max_completion_tokens;
151
+ delete body.store;
152
+ delete body.reasoning_effort;
153
+ delete body.strict;
154
+ if (Array.isArray(body.messages)) {
155
+ body.messages = body.messages.map((message) => {
156
+ if (message && typeof message === "object" && message.role === "developer") {
157
+ return { ...message, role: "system" };
158
+ }
159
+ return message;
160
+ });
161
+ }
162
+ init.body = JSON.stringify(body);
163
+ } catch {}
164
+ }
165
+ return baseFetch(input, init);
166
+ };
167
+ return Object.assign(wrapped, baseFetch);
168
+ }
169
+ async function generateTextWithModel(runtime, params, modelName, modelType) {
170
+ const experimentalTelemetry = getExperimentalTelemetry(runtime);
171
+ const requestFetch = createNearAIRequestFetch(runtime.fetch ?? fetch);
172
+ const nearai = createNearAIClient(runtime, { fetch: requestFetch });
173
+ logger2.log(`[NEAR AI] Using ${modelType} model: ${modelName}`);
174
+ const resolved = resolveTextParams(params);
175
+ const agentName = resolved.providerOptions.agentName;
176
+ const telemetryConfig = {
177
+ isEnabled: experimentalTelemetry,
178
+ functionId: agentName ? `agent:${agentName}` : undefined,
179
+ metadata: agentName ? { agentName } : undefined
180
+ };
181
+ const generateParams = {
182
+ model: nearai(modelName),
183
+ prompt: resolved.prompt,
184
+ system: runtime.character?.system ?? undefined,
185
+ temperature: resolved.temperature,
186
+ stopSequences: resolved.stopSequences,
187
+ frequencyPenalty: resolved.frequencyPenalty,
188
+ presencePenalty: resolved.presencePenalty,
189
+ experimental_telemetry: telemetryConfig,
190
+ maxOutputTokens: resolved.maxOutputTokens,
191
+ topP: resolved.topP
192
+ };
193
+ const { text, usage } = await generateText(generateParams);
194
+ if (usage) {
195
+ emitModelUsageEvent(runtime, modelType, usage);
196
+ }
197
+ return text;
198
+ }
199
+ async function handleTextSmall(runtime, params) {
200
+ const modelName = getSmallModel(runtime);
201
+ return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_SMALL);
202
+ }
203
+ async function handleTextLarge(runtime, params) {
204
+ const modelName = getLargeModel(runtime);
205
+ return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_LARGE);
206
+ }
207
+ // index.ts
208
+ var pluginTests = [
209
+ {
210
+ name: "nearai_plugin_tests",
211
+ tests: [
212
+ {
213
+ name: "nearai_test_api_key_validation",
214
+ fn: async (runtime) => {
215
+ const apiKey = getApiKeyOptional(runtime);
216
+ if (!apiKey) {
217
+ throw new Error("NEARAI_API_KEY is not configured");
218
+ }
219
+ logger3.log("NEAR AI API key is configured");
220
+ }
221
+ },
222
+ {
223
+ name: "nearai_test_text_small",
224
+ fn: async (runtime) => {
225
+ const text = await runtime.useModel(ModelType2.TEXT_SMALL, {
226
+ prompt: "What is the nature of reality in 10 words?"
227
+ });
228
+ if (typeof text !== "string" || text.length === 0) {
229
+ throw new Error("Failed to generate text: empty response");
230
+ }
231
+ logger3.log({ text }, "generated with test_text_small");
232
+ }
233
+ },
234
+ {
235
+ name: "nearai_test_text_large",
236
+ fn: async (runtime) => {
237
+ const text = await runtime.useModel(ModelType2.TEXT_LARGE, {
238
+ prompt: "What is the nature of reality in 10 words?"
239
+ });
240
+ if (typeof text !== "string" || text.length === 0) {
241
+ throw new Error("Failed to generate text: empty response");
242
+ }
243
+ logger3.log({ text }, "generated with test_text_large");
244
+ }
245
+ }
246
+ ]
247
+ }
248
+ ];
249
+ function getProcessEnv() {
250
+ if (typeof process === "undefined") {
251
+ return {};
252
+ }
253
+ return process.env;
254
+ }
255
+ var env = getProcessEnv();
256
+ var nearaiPlugin = {
257
+ name: "nearai",
258
+ description: "NEAR AI Cloud TEE inference plugin (OpenAI-compatible API; supports text generation)",
259
+ config: {
260
+ NEARAI_API_KEY: env.NEARAI_API_KEY ?? null,
261
+ NEARAI_SMALL_MODEL: env.NEARAI_SMALL_MODEL ?? null,
262
+ NEARAI_LARGE_MODEL: env.NEARAI_LARGE_MODEL ?? null,
263
+ NEARAI_EXPERIMENTAL_TELEMETRY: env.NEARAI_EXPERIMENTAL_TELEMETRY ?? null,
264
+ NEARAI_BASE_URL: env.NEARAI_BASE_URL ?? null,
265
+ NEARAI_BROWSER_BASE_URL: env.NEARAI_BROWSER_BASE_URL ?? null
266
+ },
267
+ async init(config, runtime) {
268
+ initializeNearAI(config, runtime);
269
+ },
270
+ models: {
271
+ [ModelType2.TEXT_SMALL]: async (runtime, params) => {
272
+ return handleTextSmall(runtime, params);
273
+ },
274
+ [ModelType2.TEXT_LARGE]: async (runtime, params) => {
275
+ return handleTextLarge(runtime, params);
276
+ }
277
+ },
278
+ tests: pluginTests
279
+ };
280
+ var plugin_nearai_default = nearaiPlugin;
281
+
282
+ // index.node.ts
283
+ var index_node_default = plugin_nearai_default;
284
+ export {
285
+ nearaiPlugin,
286
+ index_node_default as default
287
+ };
288
+
289
+ //# debugId=A846FAD46746EAF864756E2164756E21
@@ -0,0 +1,17 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../index.ts", "../../init.ts", "../../types/index.ts", "../../utils/config.ts", "../../models/text.ts", "../../providers/openai-compatible.ts", "../../utils/events.ts", "../../index.node.ts"],
4
+ "sourcesContent": [
5
+ "import type {\n GenerateTextParams,\n IAgentRuntime,\n Plugin,\n ProcessEnvLike,\n TestCase,\n TestSuite,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { initializeNearAI, type PluginConfig } from \"./init\";\nimport { handleTextLarge, handleTextSmall } from \"./models\";\nimport { getApiKeyOptional } from \"./utils/config\";\n\nexport type { PluginConfig } from \"./init\";\n\nconst pluginTests = [\n {\n name: \"nearai_plugin_tests\",\n tests: [\n {\n name: \"nearai_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKeyOptional(runtime);\n if (!apiKey) {\n throw new Error(\"NEARAI_API_KEY is not configured\");\n }\n logger.log(\"NEAR AI API key is configured\");\n },\n },\n {\n name: \"nearai_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_small\");\n },\n },\n {\n name: \"nearai_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"Failed to generate text: empty response\");\n }\n\n logger.log({ text }, \"generated with test_text_large\");\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\nfunction getProcessEnv(): ProcessEnvLike {\n // In browsers, `process` is not defined (and we must not reference it unguarded).\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const nearaiPlugin: Plugin = {\n name: \"nearai\",\n description:\n \"NEAR AI Cloud TEE inference plugin (OpenAI-compatible API; supports text generation)\",\n config: {\n NEARAI_API_KEY: env.NEARAI_API_KEY ?? null,\n NEARAI_SMALL_MODEL: env.NEARAI_SMALL_MODEL ?? null,\n NEARAI_LARGE_MODEL: env.NEARAI_LARGE_MODEL ?? null,\n NEARAI_EXPERIMENTAL_TELEMETRY: env.NEARAI_EXPERIMENTAL_TELEMETRY ?? null,\n NEARAI_BASE_URL: env.NEARAI_BASE_URL ?? null,\n NEARAI_BROWSER_BASE_URL: env.NEARAI_BROWSER_BASE_URL ?? null,\n },\n\n async init(config: Record<string, string>, runtime: IAgentRuntime) {\n initializeNearAI(config as PluginConfig, runtime);\n },\n\n models: {\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n },\n\n tests: pluginTests as TestSuite[],\n};\n\nexport default nearaiPlugin;\n",
6
+ "import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { getApiKeyOptional, isBrowser } from \"./utils/config\";\n\nexport interface PluginConfig {\n readonly NEARAI_API_KEY?: string;\n readonly NEARAI_SMALL_MODEL?: string;\n readonly NEARAI_LARGE_MODEL?: string;\n readonly NEARAI_EXPERIMENTAL_TELEMETRY?: string;\n readonly NEARAI_BASE_URL?: string;\n readonly NEARAI_BROWSER_BASE_URL?: string;\n}\n\nexport function initializeNearAI(_config: PluginConfig, runtime: IAgentRuntime): void {\n const apiKey = getApiKeyOptional(runtime);\n\n if (!apiKey && !isBrowser()) {\n logger.warn(\n \"NEARAI_API_KEY is not set in environment - NEAR AI functionality will be limited. \" +\n \"Set NEARAI_API_KEY in your environment variables or runtime settings.\"\n );\n return;\n }\n\n if (apiKey) {\n logger.log(\"NEAR AI API key configured successfully\");\n }\n}\n",
7
+ "export type ValidatedApiKey = string & { readonly __brand: \"ValidatedApiKey\" };\n\nexport type ModelName = string & { readonly __brand: \"ModelName\" };\n\nexport interface ProviderOptions {\n readonly agentName?: string;\n}\n\nexport function assertValidApiKey(apiKey: string | undefined): asserts apiKey is ValidatedApiKey {\n if (!apiKey || apiKey.trim().length === 0) {\n throw new Error(\n \"NEARAI_API_KEY is required but not configured. \" +\n \"Set it in your environment variables or runtime settings.\"\n );\n }\n}\n\nexport function createModelName(name: string): ModelName {\n if (!name || name.trim().length === 0) {\n throw new Error(\"Model name cannot be empty\");\n }\n return name as ModelName;\n}\n",
8
+ "import type { IAgentRuntime } from \"@elizaos/core\";\nimport type { ModelName, ValidatedApiKey } from \"../types\";\nimport { assertValidApiKey, createModelName } from \"../types\";\n\nconst DEFAULT_GEMMA_MODEL = \"google/gemma-4-31B-it\";\nconst DEFAULT_SMALL_MODEL = DEFAULT_GEMMA_MODEL;\nconst DEFAULT_LARGE_MODEL = DEFAULT_GEMMA_MODEL;\n\nconst DEFAULT_BASE_URL = \"https://cloud-api.near.ai/v1\";\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { document?: Document }).document !== \"undefined\"\n );\n}\n\nfunction getEnvValue(key: string): string | undefined {\n // In real browsers, `process` is not defined. `typeof process` is safe.\n if (typeof process === \"undefined\") {\n return undefined;\n }\n\n const envValue = process.env[key];\n if (typeof envValue === \"string\" && envValue.length > 0) {\n return envValue;\n }\n\n return undefined;\n}\n\nexport function getRawSetting(runtime: IAgentRuntime, key: string): string | undefined {\n const runtimeValue = runtime.getSetting(key);\n if (typeof runtimeValue === \"string\" && runtimeValue.length > 0) {\n return runtimeValue;\n }\n\n return getEnvValue(key);\n}\n\nfunction getCanonicalApiKeySetting(runtime: IAgentRuntime): string | undefined {\n return getRawSetting(runtime, \"NEARAI_API_KEY\");\n}\n\nexport function getApiKey(runtime: IAgentRuntime): ValidatedApiKey {\n const apiKey = getCanonicalApiKeySetting(runtime);\n assertValidApiKey(apiKey);\n return apiKey;\n}\n\nexport function getApiKeyOptional(runtime: IAgentRuntime): ValidatedApiKey | null {\n const apiKey = getCanonicalApiKeySetting(runtime);\n if (!apiKey || apiKey.trim().length === 0) {\n return null;\n }\n return apiKey as ValidatedApiKey;\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n if (isBrowser()) {\n const browserURL = getRawSetting(runtime, \"NEARAI_BROWSER_BASE_URL\");\n if (browserURL) {\n return normalizeBaseURL(browserURL);\n }\n }\n\n const raw = getRawSetting(runtime, \"NEARAI_BASE_URL\") ?? DEFAULT_BASE_URL;\n return normalizeBaseURL(raw);\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"NEARAI_SMALL_MODEL\") ?? DEFAULT_SMALL_MODEL;\n return createModelName(model);\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): ModelName {\n const model = getRawSetting(runtime, \"NEARAI_LARGE_MODEL\") ?? DEFAULT_LARGE_MODEL;\n return createModelName(model);\n}\n\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n const setting = getRawSetting(runtime, \"NEARAI_EXPERIMENTAL_TELEMETRY\");\n if (!setting) {\n return false;\n }\n return setting.toLowerCase() === \"true\";\n}\n\nfunction normalizeBaseURL(raw: string): string {\n return raw.trim().replace(/\\/+$/, \"\");\n}\n\n/**\n * Optional fail-fast validation for callers that require a configured API key.\n * Plugin initialization uses getApiKeyOptional so discovery can proceed without\n * throwing in browser builds or partially configured environments.\n */\nexport function validateConfiguration(runtime: IAgentRuntime): void {\n if (!isBrowser()) {\n getApiKey(runtime);\n }\n}\n",
9
+ "import type { GenerateTextParams, IAgentRuntime } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type ToolSet } from \"ai\";\nimport { createNearAIClient, type NearAIFetch } from \"../providers\";\nimport type { ModelName, ProviderOptions } from \"../types\";\nimport { getExperimentalTelemetry, getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// Extract the native generateText parameter type to avoid unsafe casts at call sites.\ntype NativeGenerateTextParams = Parameters<typeof generateText<ToolSet>>[0];\n\ninterface ResolvedTextParams {\n readonly prompt: string;\n readonly stopSequences: readonly string[];\n readonly maxOutputTokens: number;\n readonly temperature: number | undefined;\n readonly topP: number | undefined;\n readonly frequencyPenalty: number;\n readonly presencePenalty: number;\n readonly providerOptions: ProviderOptions;\n}\n\nfunction resolveTextParams(params: GenerateTextParams): ResolvedTextParams {\n // All fields read here are direct properties of GenerateTextParams — no cast needed.\n const providerOptions: ProviderOptions =\n (params.providerOptions?.nearai as ProviderOptions | undefined) ?? {};\n\n return {\n prompt: params.prompt ?? \"\",\n stopSequences: params.stopSequences ?? [],\n maxOutputTokens: params.maxTokens ?? 8192,\n temperature: params.temperature,\n topP: params.topP,\n frequencyPenalty: params.frequencyPenalty ?? 0,\n presencePenalty: params.presencePenalty ?? 0,\n providerOptions,\n };\n}\n\nfunction createNearAIRequestFetch(baseFetch: NearAIFetch): NearAIFetch {\n const wrapped = async (input: RequestInfo | URL, init?: RequestInit) => {\n if (init && typeof init.body === \"string\") {\n try {\n const body = JSON.parse(init.body) as Record<string, unknown>;\n if (body.max_completion_tokens != null && body.max_tokens == null) {\n body.max_tokens = body.max_completion_tokens;\n }\n delete body.max_completion_tokens;\n delete body.store;\n delete body.reasoning_effort;\n delete body.strict;\n if (Array.isArray(body.messages)) {\n body.messages = body.messages.map((message) => {\n if (\n message &&\n typeof message === \"object\" &&\n (message as { role?: unknown }).role === \"developer\"\n ) {\n return { ...(message as Record<string, unknown>), role: \"system\" };\n }\n return message;\n });\n }\n init.body = JSON.stringify(body);\n } catch {\n // Non-JSON request bodies pass through unchanged.\n }\n }\n return baseFetch(input, init);\n };\n return Object.assign(wrapped, baseFetch) as NearAIFetch;\n}\n\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n modelName: ModelName,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE\n): Promise<string> {\n const experimentalTelemetry = getExperimentalTelemetry(runtime);\n const requestFetch = createNearAIRequestFetch((runtime.fetch ?? fetch) as NearAIFetch);\n const nearai = createNearAIClient(runtime, { fetch: requestFetch });\n\n logger.log(`[NEAR AI] Using ${modelType} model: ${modelName}`);\n\n const resolved = resolveTextParams(params);\n\n const agentName = resolved.providerOptions.agentName;\n const telemetryConfig = {\n isEnabled: experimentalTelemetry,\n functionId: agentName ? `agent:${agentName}` : undefined,\n metadata: agentName ? { agentName } : undefined,\n };\n\n const generateParams: NativeGenerateTextParams = {\n model: nearai(modelName),\n prompt: resolved.prompt,\n system: runtime.character?.system ?? undefined,\n temperature: resolved.temperature,\n stopSequences: resolved.stopSequences as string[],\n frequencyPenalty: resolved.frequencyPenalty,\n presencePenalty: resolved.presencePenalty,\n experimental_telemetry: telemetryConfig,\n maxOutputTokens: resolved.maxOutputTokens,\n topP: resolved.topP,\n };\n\n const { text, usage } = await generateText(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, usage);\n }\n\n return text;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = getSmallModel(runtime);\n return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_SMALL);\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const modelName = getLargeModel(runtime);\n return generateTextWithModel(runtime, params, modelName, ModelType.TEXT_LARGE);\n}\n",
10
+ "import {\n createOpenAICompatible,\n type OpenAICompatibleProvider,\n type OpenAICompatibleProviderSettings,\n} from \"@ai-sdk/openai-compatible\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKeyOptional, getBaseURL } from \"../utils/config\";\n\nexport type NearAIProvider = OpenAICompatibleProvider;\nexport type NearAIFetch = NonNullable<OpenAICompatibleProviderSettings[\"fetch\"]>;\n\nexport function createNearAIClient(\n runtime: IAgentRuntime,\n opts: { fetch?: NearAIFetch } = {}\n): NearAIProvider {\n const apiKey = getApiKeyOptional(runtime) ?? undefined;\n const baseURL = getBaseURL(runtime);\n\n return createOpenAICompatible({\n name: \"nearai\",\n baseURL,\n ...(apiKey ? { apiKey } : {}),\n fetch: opts.fetch ?? (runtime.fetch as NearAIFetch | undefined),\n includeUsage: true,\n });\n}\n",
11
+ "import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\n\ntype ModelUsage = {\n promptTokens?: number;\n completionTokens?: number;\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n};\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n usage: ModelUsage\n): void {\n const promptTokens = usage.promptTokens ?? usage.inputTokens ?? 0;\n const completionTokens = usage.completionTokens ?? usage.outputTokens ?? 0;\n const totalTokens = usage.totalTokens ?? promptTokens + completionTokens;\n\n runtime.emitEvent(EventType.MODEL_USED, {\n runtime,\n source: \"nearai\",\n type,\n tokens: {\n prompt: promptTokens,\n completion: completionTokens,\n total: totalTokens,\n },\n });\n}\n",
12
+ "import pluginDefault from \"./index\";\n\nexport * from \"./index\";\nexport default pluginDefault;\n"
13
+ ],
14
+ "mappings": "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",
15
+ "debugId": "A846FAD46746EAF864756E2164756E21",
16
+ "names": []
17
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-nearai",
3
- "version": "2.0.3-beta.6",
3
+ "version": "2.0.3-beta.7",
4
4
  "type": "module",
5
5
  "main": "dist/node/index.node.js",
6
6
  "module": "dist/node/index.node.js",
@@ -57,7 +57,7 @@
57
57
  "sideEffects": false,
58
58
  "dependencies": {
59
59
  "@ai-sdk/openai-compatible": "^2.0.51",
60
- "@elizaos/core": "2.0.3-beta.6",
60
+ "@elizaos/core": "2.0.3-beta.7",
61
61
  "ai": "^6.0.23"
62
62
  },
63
63
  "devDependencies": {
@@ -140,7 +140,7 @@
140
140
  }
141
141
  },
142
142
  "peerDependencies": {
143
- "@elizaos/core": "2.0.3-beta.6"
143
+ "@elizaos/core": "2.0.3-beta.7"
144
144
  },
145
- "gitHead": "990dc996172b3e0fb525a75052a5ac28a4cd4de5"
145
+ "gitHead": "61094f10458d11055c75b3dd0bae374e3f66bac5"
146
146
  }