@node-llm/core 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +288 -16
- package/dist/chat/Chat.d.ts +58 -17
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +185 -33
- package/dist/chat/ChatOptions.d.ts +10 -0
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/ChatResponse.d.ts +23 -0
- package/dist/chat/ChatResponse.d.ts.map +1 -0
- package/dist/chat/ChatResponse.js +38 -0
- package/dist/chat/Stream.d.ts.map +1 -1
- package/dist/chat/Stream.js +10 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +6 -0
- package/dist/embedding/Embedding.d.ts +17 -0
- package/dist/embedding/Embedding.d.ts.map +1 -0
- package/dist/embedding/Embedding.js +24 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/llm.d.ts +35 -3
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +88 -14
- package/dist/models/ModelRegistry.d.ts +23 -0
- package/dist/models/ModelRegistry.d.ts.map +1 -0
- package/dist/models/ModelRegistry.js +54 -0
- package/dist/moderation/Moderation.d.ts +56 -0
- package/dist/moderation/Moderation.d.ts.map +1 -0
- package/dist/moderation/Moderation.js +92 -0
- package/dist/providers/Embedding.d.ts +20 -0
- package/dist/providers/Embedding.d.ts.map +1 -0
- package/dist/providers/Provider.d.ts +50 -4
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/gemini/Capabilities.d.ts +30 -0
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -0
- package/dist/providers/gemini/Capabilities.js +148 -0
- package/dist/providers/gemini/Chat.d.ts +8 -0
- package/dist/providers/gemini/Chat.d.ts.map +1 -0
- package/dist/providers/gemini/Chat.js +69 -0
- package/dist/providers/gemini/ChatUtils.d.ts +9 -0
- package/dist/providers/gemini/ChatUtils.d.ts.map +1 -0
- package/dist/providers/gemini/ChatUtils.js +83 -0
- package/dist/providers/gemini/Embeddings.d.ts +8 -0
- package/dist/providers/gemini/Embeddings.d.ts.map +1 -0
- package/dist/providers/gemini/Embeddings.js +44 -0
- package/dist/providers/gemini/Errors.d.ts +2 -0
- package/dist/providers/gemini/Errors.d.ts.map +1 -0
- package/dist/providers/gemini/Errors.js +34 -0
- package/dist/providers/gemini/GeminiProvider.d.ts +34 -0
- package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -0
- package/dist/providers/gemini/GeminiProvider.js +55 -0
- package/dist/providers/gemini/Image.d.ts +8 -0
- package/dist/providers/gemini/Image.d.ts.map +1 -0
- package/dist/providers/gemini/Image.js +47 -0
- package/dist/providers/gemini/Models.d.ts +8 -0
- package/dist/providers/gemini/Models.d.ts.map +1 -0
- package/dist/providers/gemini/Models.js +38 -0
- package/dist/providers/gemini/Streaming.d.ts +8 -0
- package/dist/providers/gemini/Streaming.d.ts.map +1 -0
- package/dist/providers/gemini/Streaming.js +70 -0
- package/dist/providers/gemini/Transcription.d.ts +9 -0
- package/dist/providers/gemini/Transcription.d.ts.map +1 -0
- package/dist/providers/gemini/Transcription.js +63 -0
- package/dist/providers/gemini/index.d.ts +11 -0
- package/dist/providers/gemini/index.d.ts.map +1 -0
- package/dist/providers/gemini/index.js +24 -0
- package/dist/providers/gemini/types.d.ts +118 -0
- package/dist/providers/gemini/types.d.ts.map +1 -0
- package/dist/providers/gemini/types.js +1 -0
- package/dist/providers/openai/Capabilities.d.ts +7 -2
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +52 -214
- package/dist/providers/openai/Chat.d.ts.map +1 -1
- package/dist/providers/openai/Chat.js +4 -0
- package/dist/providers/openai/Embedding.d.ts +8 -0
- package/dist/providers/openai/Embedding.d.ts.map +1 -0
- package/dist/providers/openai/Embedding.js +48 -0
- package/dist/providers/openai/ModelDefinitions.d.ts +25 -0
- package/dist/providers/openai/ModelDefinitions.d.ts.map +1 -0
- package/dist/providers/openai/ModelDefinitions.js +211 -0
- package/dist/providers/openai/Moderation.d.ts +8 -0
- package/dist/providers/openai/Moderation.d.ts.map +1 -0
- package/dist/providers/openai/Moderation.js +27 -0
- package/dist/providers/openai/OpenAIProvider.d.ts +13 -1
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +22 -0
- package/dist/providers/openai/Streaming.d.ts.map +1 -1
- package/dist/providers/openai/Streaming.js +19 -8
- package/dist/providers/openai/Transcription.d.ts +10 -0
- package/dist/providers/openai/Transcription.d.ts.map +1 -0
- package/dist/providers/openai/Transcription.js +162 -0
- package/dist/providers/openai/index.d.ts +8 -0
- package/dist/providers/openai/index.d.ts.map +1 -1
- package/dist/providers/openai/index.js +12 -0
- package/dist/schema/Schema.d.ts +20 -0
- package/dist/schema/Schema.d.ts.map +1 -0
- package/dist/schema/Schema.js +22 -0
- package/dist/schema/to-json-schema.d.ts +3 -0
- package/dist/schema/to-json-schema.d.ts.map +1 -0
- package/dist/schema/to-json-schema.js +10 -0
- package/dist/transcription/Transcription.d.ts +11 -0
- package/dist/transcription/Transcription.d.ts.map +1 -0
- package/dist/transcription/Transcription.js +21 -0
- package/dist/utils/Binary.d.ts +12 -0
- package/dist/utils/Binary.d.ts.map +1 -0
- package/dist/utils/Binary.js +71 -0
- package/dist/utils/FileLoader.d.ts.map +1 -1
- package/dist/utils/FileLoader.js +12 -1
- package/dist/utils/audio.d.ts +10 -0
- package/dist/utils/audio.d.ts.map +1 -0
- package/dist/utils/audio.js +46 -0
- package/package.json +18 -7
- package/dist/providers/openai/register.d.ts +0 -2
- package/dist/providers/openai/register.d.ts.map +0 -1
- package/dist/providers/openai/register.js +0 -15
- package/dist/tools/Tool.d.ts +0 -8
- package/dist/tools/Tool.d.ts.map +0 -1
- package/dist/tools/ToolSet.d.ts +0 -15
- package/dist/tools/ToolSet.d.ts.map +0 -1
- package/dist/tools/ToolSet.js +0 -29
- package/dist/tools/index.d.ts +0 -2
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -1
- package/dist/tools/runCommandTool.d.ts +0 -8
- package/dist/tools/runCommandTool.d.ts.map +0 -1
- package/dist/tools/runCommandTool.js +0 -19
- /package/dist/{tools/Tool.js → providers/Embedding.js} +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
export class AudioUtils {
|
|
4
|
+
static async load(filePath) {
|
|
5
|
+
let data;
|
|
6
|
+
let fileName;
|
|
7
|
+
if (filePath.startsWith("http")) {
|
|
8
|
+
const response = await fetch(filePath);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
throw new Error(`Failed to fetch remote audio file: ${response.statusText}`);
|
|
11
|
+
}
|
|
12
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
13
|
+
data = new Uint8Array(arrayBuffer);
|
|
14
|
+
const urlPath = new URL(filePath).pathname;
|
|
15
|
+
fileName = path.basename(urlPath) || "audio.mp3";
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const buffer = fs.readFileSync(filePath);
|
|
19
|
+
data = new Uint8Array(buffer);
|
|
20
|
+
fileName = path.basename(filePath);
|
|
21
|
+
}
|
|
22
|
+
const duration = this.estimateDuration(data, fileName);
|
|
23
|
+
return { data, fileName, duration };
|
|
24
|
+
}
|
|
25
|
+
static estimateDuration(data, fileName) {
|
|
26
|
+
try {
|
|
27
|
+
const ext = path.extname(fileName).toLowerCase();
|
|
28
|
+
if (ext === ".wav") {
|
|
29
|
+
// Simple WAV duration: (DataSize / ByteRate)
|
|
30
|
+
const view = new DataView(data.buffer, data.byteOffset, data.length);
|
|
31
|
+
const byteRate = view.getUint32(28, true);
|
|
32
|
+
const dataSize = view.getUint32(40, true);
|
|
33
|
+
if (byteRate > 0)
|
|
34
|
+
return dataSize / byteRate;
|
|
35
|
+
}
|
|
36
|
+
else if (ext === ".mp3") {
|
|
37
|
+
// Very rough MP3 estimate (assume 128kbps)
|
|
38
|
+
return data.length / (128000 / 8);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
// Ignore estimation errors
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-llm/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -13,17 +13,28 @@
|
|
|
13
13
|
"description": "A provider-agnostic LLM core for Node.js, inspired by ruby-llm.",
|
|
14
14
|
"author": "node-llm contributors",
|
|
15
15
|
"license": "MIT",
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20.0.0"
|
|
18
|
+
},
|
|
16
19
|
"files": [
|
|
17
20
|
"dist",
|
|
18
21
|
"README.md"
|
|
19
22
|
],
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"zod": "^3.23.8",
|
|
25
|
+
"zod-to-json-schema": "^3.25.1"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@pollyjs/adapter-fetch": "^6.0.7",
|
|
29
|
+
"@pollyjs/adapter-node-http": "^6.0.6",
|
|
30
|
+
"@pollyjs/core": "^6.0.6",
|
|
31
|
+
"@pollyjs/persister-fs": "^6.0.6"
|
|
32
|
+
},
|
|
20
33
|
"scripts": {
|
|
21
34
|
"build": "tsc -p tsconfig.json",
|
|
22
35
|
"dev": "tsc -w",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
"dependencies": {
|
|
27
|
-
"zod": "^3.23.8"
|
|
36
|
+
"lint": "tsc --noEmit",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest"
|
|
28
39
|
}
|
|
29
|
-
}
|
|
40
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/register.ts"],"names":[],"mappings":"AAKA,wBAAgB,sBAAsB,SAcrC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { providerRegistry } from "../registry.js";
|
|
2
|
-
import { OpenAIProvider } from "./OpenAIProvider.js";
|
|
3
|
-
let registered = false;
|
|
4
|
-
export function ensureOpenAIRegistered() {
|
|
5
|
-
if (registered)
|
|
6
|
-
return;
|
|
7
|
-
providerRegistry.register("openai", () => {
|
|
8
|
-
const apiKey = process.env.OPENAI_API_KEY;
|
|
9
|
-
if (!apiKey) {
|
|
10
|
-
throw new Error("OPENAI_API_KEY is not set");
|
|
11
|
-
}
|
|
12
|
-
return new OpenAIProvider({ apiKey });
|
|
13
|
-
});
|
|
14
|
-
registered = true;
|
|
15
|
-
}
|
package/dist/tools/Tool.d.ts
DELETED
package/dist/tools/Tool.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../src/tools/Tool.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAE5D,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB"}
|
package/dist/tools/ToolSet.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Tool, ToolHandler } from "./Tool.js";
|
|
2
|
-
type ToolDefinition = ToolHandler | {
|
|
3
|
-
description?: string;
|
|
4
|
-
parameters?: Record<string, any>;
|
|
5
|
-
handler: ToolHandler;
|
|
6
|
-
};
|
|
7
|
-
export declare class ToolSet {
|
|
8
|
-
private tools;
|
|
9
|
-
constructor(defs?: Record<string, ToolDefinition>);
|
|
10
|
-
register(tool: Tool): void;
|
|
11
|
-
get(name: string): Tool | undefined;
|
|
12
|
-
list(): Tool[];
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
15
|
-
//# sourceMappingURL=ToolSet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolSet.d.ts","sourceRoot":"","sources":["../../src/tools/ToolSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,KAAK,cAAc,GACf,WAAW,GACX;IACE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEN,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAA2B;gBAE5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAiBjD,QAAQ,CAAC,IAAI,EAAE,IAAI;IAInB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC,IAAI,IAAI,IAAI,EAAE;CAGf"}
|
package/dist/tools/ToolSet.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export class ToolSet {
|
|
2
|
-
tools = new Map();
|
|
3
|
-
constructor(defs) {
|
|
4
|
-
if (defs) {
|
|
5
|
-
for (const [name, def] of Object.entries(defs)) {
|
|
6
|
-
if (typeof def === "function") {
|
|
7
|
-
this.register({ name, handler: def });
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
this.register({
|
|
11
|
-
name,
|
|
12
|
-
handler: def.handler,
|
|
13
|
-
description: def.description,
|
|
14
|
-
parameters: def.parameters,
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
register(tool) {
|
|
21
|
-
this.tools.set(tool.name, tool);
|
|
22
|
-
}
|
|
23
|
-
get(name) {
|
|
24
|
-
return this.tools.get(name);
|
|
25
|
-
}
|
|
26
|
-
list() {
|
|
27
|
-
return [...this.tools.values()];
|
|
28
|
-
}
|
|
29
|
-
}
|
package/dist/tools/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/tools/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { runCommand } from './runCommandTool.js';
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Executes a shell command and returns its stdout as a string.
|
|
3
|
-
*
|
|
4
|
-
* @param command - The command to execute.
|
|
5
|
-
* @returns A promise that resolves with the command's standard output.
|
|
6
|
-
*/
|
|
7
|
-
export declare function runCommand(command: string): Promise<string>;
|
|
8
|
-
//# sourceMappingURL=runCommandTool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runCommandTool.d.ts","sourceRoot":"","sources":["../../src/tools/runCommandTool.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3D"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { exec } from 'child_process';
|
|
2
|
-
/**
|
|
3
|
-
* Executes a shell command and returns its stdout as a string.
|
|
4
|
-
*
|
|
5
|
-
* @param command - The command to execute.
|
|
6
|
-
* @returns A promise that resolves with the command's standard output.
|
|
7
|
-
*/
|
|
8
|
-
export function runCommand(command) {
|
|
9
|
-
return new Promise((resolve, reject) => {
|
|
10
|
-
exec(command, { maxBuffer: 1024 * 1024 }, (error, stdout, stderr) => {
|
|
11
|
-
if (error) {
|
|
12
|
-
reject(error);
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
// Trim trailing newlines for cleaner output
|
|
16
|
-
resolve(stdout.trim());
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
}
|
|
File without changes
|