@node-llm/core 1.9.0 → 1.11.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 +89 -6
- package/dist/agent/Agent.d.ts +191 -0
- package/dist/agent/Agent.d.ts.map +1 -0
- package/dist/agent/Agent.js +272 -0
- package/dist/aliases.d.ts +102 -9
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +102 -9
- package/dist/chat/Chat.d.ts +1 -0
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +184 -131
- package/dist/chat/ChatOptions.d.ts +2 -0
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/ChatStream.d.ts.map +1 -1
- package/dist/chat/ChatStream.js +109 -66
- package/dist/chat/Tool.d.ts +43 -2
- package/dist/chat/Tool.d.ts.map +1 -1
- package/dist/chat/Tool.js +50 -0
- package/dist/chat/ToolHandler.d.ts +10 -5
- package/dist/chat/ToolHandler.d.ts.map +1 -1
- package/dist/chat/ToolHandler.js +10 -2
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/llm.d.ts +8 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +156 -59
- package/dist/middlewares/CostGuardMiddleware.d.ts +24 -0
- package/dist/middlewares/CostGuardMiddleware.d.ts.map +1 -0
- package/dist/middlewares/CostGuardMiddleware.js +23 -0
- package/dist/middlewares/PIIMaskMiddleware.d.ts +23 -0
- package/dist/middlewares/PIIMaskMiddleware.d.ts.map +1 -0
- package/dist/middlewares/PIIMaskMiddleware.js +41 -0
- package/dist/middlewares/UsageLoggerMiddleware.d.ts +22 -0
- package/dist/middlewares/UsageLoggerMiddleware.d.ts.map +1 -0
- package/dist/middlewares/UsageLoggerMiddleware.js +30 -0
- package/dist/middlewares/index.d.ts +4 -0
- package/dist/middlewares/index.d.ts.map +1 -0
- package/dist/middlewares/index.js +3 -0
- package/dist/models/models.json +1458 -448
- package/dist/providers/BaseProvider.d.ts +6 -1
- package/dist/providers/BaseProvider.d.ts.map +1 -1
- package/dist/providers/BaseProvider.js +19 -0
- package/dist/providers/openai/OpenAIProvider.d.ts +1 -1
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +13 -2
- package/dist/types/Middleware.d.ts +106 -0
- package/dist/types/Middleware.d.ts.map +1 -0
- package/dist/types/Middleware.js +1 -0
- package/dist/utils/middleware-runner.d.ts +7 -0
- package/dist/utils/middleware-runner.d.ts.map +1 -0
- package/dist/utils/middleware-runner.js +23 -0
- package/package.json +6 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Middleware, MiddlewareContext } from "../types/Middleware.js";
|
|
2
|
+
export interface PIIMaskOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Custom masking string. Defaults to "[REDACTED]".
|
|
5
|
+
*/
|
|
6
|
+
mask?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Whether to redact the assistant's output as well. Defaults to false.
|
|
9
|
+
*/
|
|
10
|
+
redactOutput?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Middleware that automatically redacts Personal Identifiable Information (PII)
|
|
14
|
+
* from user messages before they are sent to the LLM.
|
|
15
|
+
*/
|
|
16
|
+
export declare class PIIMaskMiddleware implements Middleware {
|
|
17
|
+
private options;
|
|
18
|
+
readonly name = "PIIMask";
|
|
19
|
+
constructor(options?: PIIMaskOptions);
|
|
20
|
+
onRequest(ctx: MiddlewareContext): Promise<void>;
|
|
21
|
+
private maskText;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=PIIMaskMiddleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PIIMaskMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/PIIMaskMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AASD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAGtC,OAAO,CAAC,OAAO;IAF3B,SAAgB,IAAI,aAAa;gBAEb,OAAO,GAAE,cAAmB;IAE1C,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtD,OAAO,CAAC,QAAQ;CAOjB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const PII_PATTERNS = {
|
|
2
|
+
email: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,
|
|
3
|
+
phone: /(\+?\d{1,3}[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}/g,
|
|
4
|
+
creditCard: /\b(?:\d[ -]?){13,16}\b/g,
|
|
5
|
+
ssn: /\b\d{3}-\d{2}-\d{4}\b/g
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Middleware that automatically redacts Personal Identifiable Information (PII)
|
|
9
|
+
* from user messages before they are sent to the LLM.
|
|
10
|
+
*/
|
|
11
|
+
export class PIIMaskMiddleware {
|
|
12
|
+
options;
|
|
13
|
+
name = "PIIMask";
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
async onRequest(ctx) {
|
|
18
|
+
if (!ctx.messages)
|
|
19
|
+
return;
|
|
20
|
+
const mask = this.options.mask || "[REDACTED]";
|
|
21
|
+
for (const message of ctx.messages) {
|
|
22
|
+
if (typeof message.content === "string") {
|
|
23
|
+
message.content = this.maskText(message.content, mask);
|
|
24
|
+
}
|
|
25
|
+
else if (Array.isArray(message.content)) {
|
|
26
|
+
for (const part of message.content) {
|
|
27
|
+
if (part.type === "text") {
|
|
28
|
+
part.text = this.maskText(part.text, mask);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
maskText(text, mask) {
|
|
35
|
+
let masked = text;
|
|
36
|
+
for (const pattern of Object.values(PII_PATTERNS)) {
|
|
37
|
+
masked = masked.replace(pattern, mask);
|
|
38
|
+
}
|
|
39
|
+
return masked;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Middleware, MiddlewareContext } from "../types/Middleware.js";
|
|
2
|
+
import { ChatResponseString } from "../chat/ChatResponse.js";
|
|
3
|
+
export interface UsageLoggerOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Optional custom logger function. Defaults to internal NodeLLM logger.
|
|
6
|
+
*/
|
|
7
|
+
logger?: (message: string, data: any) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Prefix for the log message.
|
|
10
|
+
*/
|
|
11
|
+
prefix?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Middleware that logs token usage and costs for every successful request.
|
|
15
|
+
*/
|
|
16
|
+
export declare class UsageLoggerMiddleware implements Middleware {
|
|
17
|
+
private options;
|
|
18
|
+
readonly name = "UsageLogger";
|
|
19
|
+
constructor(options?: UsageLoggerOptions);
|
|
20
|
+
onResponse(ctx: MiddlewareContext, result: ChatResponseString): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=UsageLoggerMiddleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsageLoggerMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/UsageLoggerMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,UAAU;IAG1C,OAAO,CAAC,OAAO;IAF3B,SAAgB,IAAI,iBAAiB;gBAEjB,OAAO,GAAE,kBAAuB;IAE9C,UAAU,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBpF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { logger } from "../utils/logger.js";
|
|
2
|
+
/**
|
|
3
|
+
* Middleware that logs token usage and costs for every successful request.
|
|
4
|
+
*/
|
|
5
|
+
export class UsageLoggerMiddleware {
|
|
6
|
+
options;
|
|
7
|
+
name = "UsageLogger";
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
async onResponse(ctx, result) {
|
|
12
|
+
const usage = result.usage;
|
|
13
|
+
if (!usage)
|
|
14
|
+
return;
|
|
15
|
+
const logFn = this.options.logger || ((msg, data) => logger.info(`${msg} ${JSON.stringify(data)}`));
|
|
16
|
+
const prefix = this.options.prefix ? `[${this.options.prefix}] ` : "";
|
|
17
|
+
const message = `${prefix}LLM Usage: ${ctx.provider}/${ctx.model}`;
|
|
18
|
+
const data = {
|
|
19
|
+
requestId: ctx.requestId,
|
|
20
|
+
tokens: {
|
|
21
|
+
input: usage.input_tokens,
|
|
22
|
+
output: usage.output_tokens,
|
|
23
|
+
total: usage.total_tokens,
|
|
24
|
+
cached: usage.cached_tokens
|
|
25
|
+
},
|
|
26
|
+
cost: usage.cost ? usage.cost.toFixed(6) : undefined
|
|
27
|
+
};
|
|
28
|
+
logFn(message, data);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC"}
|