logquill 0.2.0 → 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 +262 -9
- package/dist/index.cjs +612 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +371 -103
- package/dist/index.d.ts +371 -103
- package/dist/index.mjs +596 -7
- package/dist/index.mjs.map +1 -1
- package/dist/langchain.cjs +114 -0
- package/dist/langchain.cjs.map +1 -0
- package/dist/langchain.d.cts +122 -0
- package/dist/langchain.d.ts +122 -0
- package/dist/langchain.mjs +110 -0
- package/dist/langchain.mjs.map +1 -0
- package/dist/logger-D1_THnBJ.d.cts +163 -0
- package/dist/logger-D1_THnBJ.d.ts +163 -0
- package/package.json +24 -10
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/** Log levels, shared by name and numeric weight with the logquill-python contract. */
|
|
2
|
+
declare enum Level {
|
|
3
|
+
TRACE = 5,
|
|
4
|
+
DEBUG = 10,
|
|
5
|
+
INFO = 20,
|
|
6
|
+
WARN = 30,
|
|
7
|
+
ERROR = 40,
|
|
8
|
+
FATAL = 50
|
|
9
|
+
}
|
|
10
|
+
/** A level given as a `Level`, a level name (any case), or its numeric weight. */
|
|
11
|
+
type LevelInput = Level | number | string;
|
|
12
|
+
/** The level's name, e.g. `levelName(Level.INFO) === "INFO"`. */
|
|
13
|
+
declare function levelName(level: Level): string;
|
|
14
|
+
/** Normalize a level given as a `Level`, level name, or numeric weight. Throws if unknown. */
|
|
15
|
+
declare function parseLevel(level: LevelInput): Level;
|
|
16
|
+
|
|
17
|
+
/** The cross-language record shape shared with logquill-python. */
|
|
18
|
+
interface LogRecord {
|
|
19
|
+
timestamp: string;
|
|
20
|
+
level: string;
|
|
21
|
+
logger: string;
|
|
22
|
+
message: string;
|
|
23
|
+
meta: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
/** ISO8601 UTC timestamp with millisecond precision, matching Python's `utc_timestamp()`. */
|
|
26
|
+
declare function utcTimestamp(): string;
|
|
27
|
+
declare function createRecord(params: {
|
|
28
|
+
level: Level;
|
|
29
|
+
logger: string;
|
|
30
|
+
message: string;
|
|
31
|
+
meta: Record<string, unknown>;
|
|
32
|
+
}): LogRecord;
|
|
33
|
+
|
|
34
|
+
/** `format(record) -> string`, per the transport contract shared with logquill-python. */
|
|
35
|
+
interface Formatter {
|
|
36
|
+
format(record: LogRecord): string;
|
|
37
|
+
}
|
|
38
|
+
/** Serializes a record to the canonical JSON line shape. */
|
|
39
|
+
declare class JSONFormatter implements Formatter {
|
|
40
|
+
format(record: LogRecord): string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The plugin pipeline hooks, matching the Python hook names: `beforeLog`,
|
|
45
|
+
* `afterLog`, `onError`. All hooks are optional — implement only what you need.
|
|
46
|
+
* A hook that throws cannot crash logging: the pipeline catches it, routes it
|
|
47
|
+
* to `onError`, and moves on.
|
|
48
|
+
*/
|
|
49
|
+
interface Plugin {
|
|
50
|
+
/** Return a (possibly modified) record, or `null` to drop it. */
|
|
51
|
+
beforeLog?(record: LogRecord): LogRecord | null;
|
|
52
|
+
/** Called after the record has been dispatched to every transport. */
|
|
53
|
+
afterLog?(record: LogRecord): void;
|
|
54
|
+
/** Called when one of this plugin's own hooks throws. */
|
|
55
|
+
onError?(error: unknown, record: LogRecord): void;
|
|
56
|
+
}
|
|
57
|
+
/** A plain `beforeLog`-style function, as accepted by `Logger.use()` in place of a `Plugin`. */
|
|
58
|
+
type MiddlewareFunc = (record: LogRecord) => LogRecord | null;
|
|
59
|
+
/**
|
|
60
|
+
* Wraps a plain `beforeLog`-style function as a `Plugin`. `Logger.use()`
|
|
61
|
+
* builds one of these automatically when given a function instead of a
|
|
62
|
+
* `Plugin` — Express/Koa-style middleware ergonomics, without needing to
|
|
63
|
+
* read the `Plugin` interface first. There's no `next()` chaining: the
|
|
64
|
+
* pipeline already calls hooks in sequence, so this is sugar for a
|
|
65
|
+
* single-method `Plugin`, not a new execution model.
|
|
66
|
+
*/
|
|
67
|
+
declare class FunctionPlugin implements Plugin {
|
|
68
|
+
private readonly func;
|
|
69
|
+
constructor(func: MiddlewareFunc);
|
|
70
|
+
beforeLog(record: LogRecord): LogRecord | null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Sink for log records, per the cross-language transport contract:
|
|
75
|
+
* `format(record) -> string`, `write(formatted, record)`, `close()` on shutdown.
|
|
76
|
+
*/
|
|
77
|
+
declare abstract class Transport {
|
|
78
|
+
formatter: Formatter;
|
|
79
|
+
constructor(formatter?: Formatter);
|
|
80
|
+
format(record: LogRecord): string;
|
|
81
|
+
abstract write(formatted: string, record: LogRecord): void;
|
|
82
|
+
/** Flush/release resources on shutdown. No-op unless a transport overrides it. */
|
|
83
|
+
close(): void;
|
|
84
|
+
}
|
|
85
|
+
/** In-memory transport for tests: collects every (formatted, record) pair written to it. */
|
|
86
|
+
declare class CollectingTransport extends Transport {
|
|
87
|
+
readonly formatted: string[];
|
|
88
|
+
readonly records: LogRecord[];
|
|
89
|
+
closed: boolean;
|
|
90
|
+
write(formatted: string, record: LogRecord): void;
|
|
91
|
+
close(): void;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Options for `Logger.span()`. Any extra keys become the span's own `meta`. */
|
|
95
|
+
interface SpanOptions extends Record<string, unknown> {
|
|
96
|
+
/** Adopt an id handed in from elsewhere (e.g. a framework's own run id) instead of generating one. */
|
|
97
|
+
spanId?: string;
|
|
98
|
+
/** Adopt a parent id explicitly, overriding auto-nesting from an enclosing `span()` block. */
|
|
99
|
+
parentSpanId?: string;
|
|
100
|
+
}
|
|
101
|
+
interface LoggerOptions {
|
|
102
|
+
level?: LevelInput;
|
|
103
|
+
transports?: Transport[];
|
|
104
|
+
plugins?: (Plugin | MiddlewareFunc)[];
|
|
105
|
+
meta?: Record<string, unknown>;
|
|
106
|
+
}
|
|
107
|
+
declare class Logger {
|
|
108
|
+
readonly name: string;
|
|
109
|
+
readonly transports: Transport[];
|
|
110
|
+
readonly plugins: Plugin[];
|
|
111
|
+
private currentLevel;
|
|
112
|
+
private readonly baseMeta;
|
|
113
|
+
constructor(name: string, options?: LoggerOptions);
|
|
114
|
+
get level(): Level;
|
|
115
|
+
setLevel(level: LevelInput): void;
|
|
116
|
+
/**
|
|
117
|
+
* Register a plugin, or a plain `beforeLog`-style function. A function is
|
|
118
|
+
* wrapped internally as an anonymous `Plugin` (`FunctionPlugin`) — the
|
|
119
|
+
* same middleware ergonomics as Express/Koa, without needing to read the
|
|
120
|
+
* `Plugin` interface first. Returns `this` so calls can be chained.
|
|
121
|
+
*/
|
|
122
|
+
use(plugin: Plugin | MiddlewareFunc): this;
|
|
123
|
+
/** Close every attached transport. Call on shutdown to flush buffered writes. */
|
|
124
|
+
close(): void;
|
|
125
|
+
/** A logger scoped under this one, inheriting its level, transports, and plugins. */
|
|
126
|
+
child(name: string, meta?: Record<string, unknown>): Logger;
|
|
127
|
+
private notifyError;
|
|
128
|
+
private dispatch;
|
|
129
|
+
trace(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
130
|
+
debug(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
131
|
+
info(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
132
|
+
warn(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
133
|
+
error(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
134
|
+
fatal(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
135
|
+
/** `.info()` tagged `meta.kind = "thought"` — an agent's internal reasoning step, for harness/agentic tracing. */
|
|
136
|
+
thought(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
137
|
+
/** `.info()` tagged `meta.kind = "action"` — an agent taking an action (a tool call, an LLM request), for harness/agentic tracing. */
|
|
138
|
+
action(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
139
|
+
/** `.info()` tagged `meta.kind = "observation"` — the result an agent observed from an action, for harness/agentic tracing. */
|
|
140
|
+
observation(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
141
|
+
/** `.info()` tagged `meta.kind = "decision"` — an agent's concluding decision for a step or run, for harness/agentic tracing. */
|
|
142
|
+
decision(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
143
|
+
/**
|
|
144
|
+
* `await logger.span("callLlm", async () => {...})` — runs `fn`, and on
|
|
145
|
+
* settling (success or throw) emits one record for the span itself
|
|
146
|
+
* carrying `meta.spanId` and `meta.durationMs`. Every record logged
|
|
147
|
+
* inside `fn` — through any method, and through any further `await` —
|
|
148
|
+
* is automatically stamped with `meta.parentSpanId` pointing at this
|
|
149
|
+
* span, so nested/sub-agent calls reconstruct their exact nesting when
|
|
150
|
+
* sorted by `spanId`/`parentSpanId`.
|
|
151
|
+
*
|
|
152
|
+
* Still emits its record — at `ERROR`, with `meta.error` set — if `fn`
|
|
153
|
+
* throws; the error itself propagates unchanged to the caller.
|
|
154
|
+
*
|
|
155
|
+
* `spanId`/`parentSpanId` normally auto-generate/auto-nest; pass them in
|
|
156
|
+
* `options` to adopt an id handed in from elsewhere (e.g. a framework
|
|
157
|
+
* adapter translating an id it already received).
|
|
158
|
+
*/
|
|
159
|
+
span<T>(name: string, fn: () => T | Promise<T>, options?: SpanOptions): Promise<T>;
|
|
160
|
+
private finishSpan;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export { CollectingTransport as C, type Formatter as F, JSONFormatter as J, type LogRecord as L, type MiddlewareFunc as M, type Plugin as P, type SpanOptions as S, Transport as T, Level as a, type LevelInput as b, FunctionPlugin as c, Logger as d, type LoggerOptions as e, createRecord as f, levelName as l, parseLevel as p, utcTimestamp as u };
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/** Log levels, shared by name and numeric weight with the logquill-python contract. */
|
|
2
|
+
declare enum Level {
|
|
3
|
+
TRACE = 5,
|
|
4
|
+
DEBUG = 10,
|
|
5
|
+
INFO = 20,
|
|
6
|
+
WARN = 30,
|
|
7
|
+
ERROR = 40,
|
|
8
|
+
FATAL = 50
|
|
9
|
+
}
|
|
10
|
+
/** A level given as a `Level`, a level name (any case), or its numeric weight. */
|
|
11
|
+
type LevelInput = Level | number | string;
|
|
12
|
+
/** The level's name, e.g. `levelName(Level.INFO) === "INFO"`. */
|
|
13
|
+
declare function levelName(level: Level): string;
|
|
14
|
+
/** Normalize a level given as a `Level`, level name, or numeric weight. Throws if unknown. */
|
|
15
|
+
declare function parseLevel(level: LevelInput): Level;
|
|
16
|
+
|
|
17
|
+
/** The cross-language record shape shared with logquill-python. */
|
|
18
|
+
interface LogRecord {
|
|
19
|
+
timestamp: string;
|
|
20
|
+
level: string;
|
|
21
|
+
logger: string;
|
|
22
|
+
message: string;
|
|
23
|
+
meta: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
/** ISO8601 UTC timestamp with millisecond precision, matching Python's `utc_timestamp()`. */
|
|
26
|
+
declare function utcTimestamp(): string;
|
|
27
|
+
declare function createRecord(params: {
|
|
28
|
+
level: Level;
|
|
29
|
+
logger: string;
|
|
30
|
+
message: string;
|
|
31
|
+
meta: Record<string, unknown>;
|
|
32
|
+
}): LogRecord;
|
|
33
|
+
|
|
34
|
+
/** `format(record) -> string`, per the transport contract shared with logquill-python. */
|
|
35
|
+
interface Formatter {
|
|
36
|
+
format(record: LogRecord): string;
|
|
37
|
+
}
|
|
38
|
+
/** Serializes a record to the canonical JSON line shape. */
|
|
39
|
+
declare class JSONFormatter implements Formatter {
|
|
40
|
+
format(record: LogRecord): string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The plugin pipeline hooks, matching the Python hook names: `beforeLog`,
|
|
45
|
+
* `afterLog`, `onError`. All hooks are optional — implement only what you need.
|
|
46
|
+
* A hook that throws cannot crash logging: the pipeline catches it, routes it
|
|
47
|
+
* to `onError`, and moves on.
|
|
48
|
+
*/
|
|
49
|
+
interface Plugin {
|
|
50
|
+
/** Return a (possibly modified) record, or `null` to drop it. */
|
|
51
|
+
beforeLog?(record: LogRecord): LogRecord | null;
|
|
52
|
+
/** Called after the record has been dispatched to every transport. */
|
|
53
|
+
afterLog?(record: LogRecord): void;
|
|
54
|
+
/** Called when one of this plugin's own hooks throws. */
|
|
55
|
+
onError?(error: unknown, record: LogRecord): void;
|
|
56
|
+
}
|
|
57
|
+
/** A plain `beforeLog`-style function, as accepted by `Logger.use()` in place of a `Plugin`. */
|
|
58
|
+
type MiddlewareFunc = (record: LogRecord) => LogRecord | null;
|
|
59
|
+
/**
|
|
60
|
+
* Wraps a plain `beforeLog`-style function as a `Plugin`. `Logger.use()`
|
|
61
|
+
* builds one of these automatically when given a function instead of a
|
|
62
|
+
* `Plugin` — Express/Koa-style middleware ergonomics, without needing to
|
|
63
|
+
* read the `Plugin` interface first. There's no `next()` chaining: the
|
|
64
|
+
* pipeline already calls hooks in sequence, so this is sugar for a
|
|
65
|
+
* single-method `Plugin`, not a new execution model.
|
|
66
|
+
*/
|
|
67
|
+
declare class FunctionPlugin implements Plugin {
|
|
68
|
+
private readonly func;
|
|
69
|
+
constructor(func: MiddlewareFunc);
|
|
70
|
+
beforeLog(record: LogRecord): LogRecord | null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Sink for log records, per the cross-language transport contract:
|
|
75
|
+
* `format(record) -> string`, `write(formatted, record)`, `close()` on shutdown.
|
|
76
|
+
*/
|
|
77
|
+
declare abstract class Transport {
|
|
78
|
+
formatter: Formatter;
|
|
79
|
+
constructor(formatter?: Formatter);
|
|
80
|
+
format(record: LogRecord): string;
|
|
81
|
+
abstract write(formatted: string, record: LogRecord): void;
|
|
82
|
+
/** Flush/release resources on shutdown. No-op unless a transport overrides it. */
|
|
83
|
+
close(): void;
|
|
84
|
+
}
|
|
85
|
+
/** In-memory transport for tests: collects every (formatted, record) pair written to it. */
|
|
86
|
+
declare class CollectingTransport extends Transport {
|
|
87
|
+
readonly formatted: string[];
|
|
88
|
+
readonly records: LogRecord[];
|
|
89
|
+
closed: boolean;
|
|
90
|
+
write(formatted: string, record: LogRecord): void;
|
|
91
|
+
close(): void;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Options for `Logger.span()`. Any extra keys become the span's own `meta`. */
|
|
95
|
+
interface SpanOptions extends Record<string, unknown> {
|
|
96
|
+
/** Adopt an id handed in from elsewhere (e.g. a framework's own run id) instead of generating one. */
|
|
97
|
+
spanId?: string;
|
|
98
|
+
/** Adopt a parent id explicitly, overriding auto-nesting from an enclosing `span()` block. */
|
|
99
|
+
parentSpanId?: string;
|
|
100
|
+
}
|
|
101
|
+
interface LoggerOptions {
|
|
102
|
+
level?: LevelInput;
|
|
103
|
+
transports?: Transport[];
|
|
104
|
+
plugins?: (Plugin | MiddlewareFunc)[];
|
|
105
|
+
meta?: Record<string, unknown>;
|
|
106
|
+
}
|
|
107
|
+
declare class Logger {
|
|
108
|
+
readonly name: string;
|
|
109
|
+
readonly transports: Transport[];
|
|
110
|
+
readonly plugins: Plugin[];
|
|
111
|
+
private currentLevel;
|
|
112
|
+
private readonly baseMeta;
|
|
113
|
+
constructor(name: string, options?: LoggerOptions);
|
|
114
|
+
get level(): Level;
|
|
115
|
+
setLevel(level: LevelInput): void;
|
|
116
|
+
/**
|
|
117
|
+
* Register a plugin, or a plain `beforeLog`-style function. A function is
|
|
118
|
+
* wrapped internally as an anonymous `Plugin` (`FunctionPlugin`) — the
|
|
119
|
+
* same middleware ergonomics as Express/Koa, without needing to read the
|
|
120
|
+
* `Plugin` interface first. Returns `this` so calls can be chained.
|
|
121
|
+
*/
|
|
122
|
+
use(plugin: Plugin | MiddlewareFunc): this;
|
|
123
|
+
/** Close every attached transport. Call on shutdown to flush buffered writes. */
|
|
124
|
+
close(): void;
|
|
125
|
+
/** A logger scoped under this one, inheriting its level, transports, and plugins. */
|
|
126
|
+
child(name: string, meta?: Record<string, unknown>): Logger;
|
|
127
|
+
private notifyError;
|
|
128
|
+
private dispatch;
|
|
129
|
+
trace(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
130
|
+
debug(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
131
|
+
info(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
132
|
+
warn(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
133
|
+
error(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
134
|
+
fatal(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
135
|
+
/** `.info()` tagged `meta.kind = "thought"` — an agent's internal reasoning step, for harness/agentic tracing. */
|
|
136
|
+
thought(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
137
|
+
/** `.info()` tagged `meta.kind = "action"` — an agent taking an action (a tool call, an LLM request), for harness/agentic tracing. */
|
|
138
|
+
action(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
139
|
+
/** `.info()` tagged `meta.kind = "observation"` — the result an agent observed from an action, for harness/agentic tracing. */
|
|
140
|
+
observation(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
141
|
+
/** `.info()` tagged `meta.kind = "decision"` — an agent's concluding decision for a step or run, for harness/agentic tracing. */
|
|
142
|
+
decision(message: string, meta?: Record<string, unknown>): LogRecord | null;
|
|
143
|
+
/**
|
|
144
|
+
* `await logger.span("callLlm", async () => {...})` — runs `fn`, and on
|
|
145
|
+
* settling (success or throw) emits one record for the span itself
|
|
146
|
+
* carrying `meta.spanId` and `meta.durationMs`. Every record logged
|
|
147
|
+
* inside `fn` — through any method, and through any further `await` —
|
|
148
|
+
* is automatically stamped with `meta.parentSpanId` pointing at this
|
|
149
|
+
* span, so nested/sub-agent calls reconstruct their exact nesting when
|
|
150
|
+
* sorted by `spanId`/`parentSpanId`.
|
|
151
|
+
*
|
|
152
|
+
* Still emits its record — at `ERROR`, with `meta.error` set — if `fn`
|
|
153
|
+
* throws; the error itself propagates unchanged to the caller.
|
|
154
|
+
*
|
|
155
|
+
* `spanId`/`parentSpanId` normally auto-generate/auto-nest; pass them in
|
|
156
|
+
* `options` to adopt an id handed in from elsewhere (e.g. a framework
|
|
157
|
+
* adapter translating an id it already received).
|
|
158
|
+
*/
|
|
159
|
+
span<T>(name: string, fn: () => T | Promise<T>, options?: SpanOptions): Promise<T>;
|
|
160
|
+
private finishSpan;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export { CollectingTransport as C, type Formatter as F, JSONFormatter as J, type LogRecord as L, type MiddlewareFunc as M, type Plugin as P, type SpanOptions as S, Transport as T, Level as a, type LevelInput as b, FunctionPlugin as c, Logger as d, type LoggerOptions as e, createRecord as f, levelName as l, parseLevel as p, utcTimestamp as u };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "logquill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A logging framework with an identical mental model and JSON log shape across Node/TypeScript and Python.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
"types": "./dist/index.d.ts",
|
|
14
14
|
"import": "./dist/index.mjs",
|
|
15
15
|
"require": "./dist/index.cjs"
|
|
16
|
+
},
|
|
17
|
+
"./langchain": {
|
|
18
|
+
"types": "./dist/langchain.d.ts",
|
|
19
|
+
"import": "./dist/langchain.mjs",
|
|
20
|
+
"require": "./dist/langchain.cjs"
|
|
16
21
|
}
|
|
17
22
|
},
|
|
18
23
|
"files": [
|
|
@@ -22,20 +27,25 @@
|
|
|
22
27
|
"node": ">=18"
|
|
23
28
|
},
|
|
24
29
|
"peerDependencies": {
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"mongodb": "^6.0.0",
|
|
30
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.0.0",
|
|
31
|
+
"@langchain/core": "^1.0.0",
|
|
28
32
|
"@aws-sdk/client-dynamodb": "^3.0.0",
|
|
29
|
-
"redis": "^4.6.0 || ^5.0.0",
|
|
30
|
-
"kafkajs": "^2.2.0",
|
|
31
|
-
"amqplib": "^0.10.0",
|
|
32
33
|
"@aws-sdk/client-sqs": "^3.600.0",
|
|
33
|
-
"@google-cloud/pubsub": "^4.0.0",
|
|
34
|
-
"@aws-sdk/client-cloudwatch-logs": "^3.0.0",
|
|
35
34
|
"@google-cloud/logging": "^11.0.0",
|
|
36
|
-
"
|
|
35
|
+
"@google-cloud/pubsub": "^4.0.0",
|
|
36
|
+
"amqplib": "^0.10.0",
|
|
37
|
+
"applicationinsights": "^3.0.0",
|
|
38
|
+
"kafkajs": "^2.2.0",
|
|
39
|
+
"mongodb": "^6.0.0",
|
|
40
|
+
"mysql2": "^3.9.0",
|
|
41
|
+
"nodemailer": "^6.9.0",
|
|
42
|
+
"pg": "^8.11.0",
|
|
43
|
+
"redis": "^4.6.0 || ^5.0.0"
|
|
37
44
|
},
|
|
38
45
|
"peerDependenciesMeta": {
|
|
46
|
+
"@langchain/core": {
|
|
47
|
+
"optional": true
|
|
48
|
+
},
|
|
39
49
|
"pg": {
|
|
40
50
|
"optional": true
|
|
41
51
|
},
|
|
@@ -71,6 +81,9 @@
|
|
|
71
81
|
},
|
|
72
82
|
"applicationinsights": {
|
|
73
83
|
"optional": true
|
|
84
|
+
},
|
|
85
|
+
"nodemailer": {
|
|
86
|
+
"optional": true
|
|
74
87
|
}
|
|
75
88
|
},
|
|
76
89
|
"repository": {
|
|
@@ -104,6 +117,7 @@
|
|
|
104
117
|
},
|
|
105
118
|
"devDependencies": {
|
|
106
119
|
"@eslint/js": "^10.0.1",
|
|
120
|
+
"@langchain/core": "^1.2.9",
|
|
107
121
|
"@types/node": "^26.4.0",
|
|
108
122
|
"@vitest/coverage-v8": "^4.1.11",
|
|
109
123
|
"eslint": "^10.9.1",
|