codebot-ai 2.1.1 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/banner.d.ts +4 -23
- package/dist/banner.js +69 -96
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/banner.d.ts
CHANGED
|
@@ -2,37 +2,24 @@
|
|
|
2
2
|
* CodeBot AI mascot and CLI banner.
|
|
3
3
|
*
|
|
4
4
|
* Mascot name: Codi
|
|
5
|
-
* Three designs:
|
|
5
|
+
* Three designs: Core, Terminal, Sentinel
|
|
6
6
|
* See BRANDING.md for full identity guide.
|
|
7
|
-
*
|
|
8
|
-
* Design philosophy: Enterprise-grade. Clean geometry.
|
|
9
|
-
* No crayon vibes — precision engineering.
|
|
10
7
|
*/
|
|
11
8
|
export type CodiMood = 'ready' | 'working' | 'success' | 'error' | 'thinking' | 'idle' | 'alert';
|
|
12
|
-
export declare const MASCOT_1 = "\n
|
|
9
|
+
export declare const MASCOT_1 = "\n \u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584\n \u2588\u2588 \u2588\u2588\n \u2588\u2588 \u2584\u2588\u2588\u2584 \u2584\u2588\u2588\u2584 \u2588\u2588\n \u2588\u2588 \u2580\u2588\u2588\u2580 \u2580\u2588\u2588\u2580 \u2588\u2588\n \u2588\u2588 \u2588\u2588\n \u2588\u2588 \u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2580 \u2588\u2588\n \u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2580\n";
|
|
13
10
|
export declare const BANNER_1: (version: string, model: string, provider: string, session: string, autonomous: boolean) => string;
|
|
14
|
-
export declare const MASCOT_2 = "\n
|
|
11
|
+
export declare const MASCOT_2 = "\n \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n \u2551 \u2551\n \u2551 \u25CF \u25CF \u2551\n \u2551 \u2551\n \u2551 \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F \u2551\n \u2551 \u2551\n \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n";
|
|
15
12
|
export declare const BANNER_2: (version: string, model: string, provider: string, session: string, autonomous: boolean) => string;
|
|
16
|
-
export declare const MASCOT_3 = "\n \
|
|
13
|
+
export declare const MASCOT_3 = "\n \u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584\n \u2584\u2588\u2580 \u2580\u2588\u2584\n \u2588\u2580 \u2591\u2591\u2592\u2593\u2588\u2588\u2588\u2588\u2588\u2588\u2593\u2592\u2591\u2591 \u2580\u2588\n \u2588\u2584 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2584\u2588\n \u2580\u2588\u2584 \u2584\u2588\u2580\n \u2580\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2580\n";
|
|
17
14
|
export declare const BANNER_3: (version: string, model: string, provider: string, session: string, autonomous: boolean) => string;
|
|
18
15
|
export declare const banner: (version: string, model: string, provider: string, session: string, autonomous: boolean) => string;
|
|
19
16
|
export declare const CODI_FACE: Record<CodiMood, string>;
|
|
20
|
-
/**
|
|
21
|
-
* Random startup greeting from Codi.
|
|
22
|
-
*/
|
|
23
17
|
export declare function randomGreeting(mood?: string): string;
|
|
24
18
|
export interface CodiReaction {
|
|
25
19
|
face: string;
|
|
26
20
|
message: string;
|
|
27
21
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Get a context-aware reaction from Codi.
|
|
30
|
-
* Returns a face expression + message pair.
|
|
31
|
-
*/
|
|
32
22
|
export declare function codiReact(event: string): CodiReaction;
|
|
33
|
-
/**
|
|
34
|
-
* Format a Codi reaction as a styled CLI string.
|
|
35
|
-
*/
|
|
36
23
|
export declare function formatReaction(event: string): string;
|
|
37
24
|
export declare function sessionSummaryBanner(stats: {
|
|
38
25
|
iterations: number;
|
|
@@ -41,12 +28,6 @@ export declare function sessionSummaryBanner(stats: {
|
|
|
41
28
|
cost?: number;
|
|
42
29
|
duration?: number;
|
|
43
30
|
}): string;
|
|
44
|
-
/**
|
|
45
|
-
* Compact single-line startup for non-TTY / piped usage.
|
|
46
|
-
*/
|
|
47
31
|
export declare function compactBanner(version: string, model: string): string;
|
|
48
|
-
/**
|
|
49
|
-
* Pick a random banner design (for variety on startup).
|
|
50
|
-
*/
|
|
51
32
|
export declare function randomBanner(): typeof BANNER_1;
|
|
52
33
|
//# sourceMappingURL=banner.d.ts.map
|
package/dist/banner.js
CHANGED
|
@@ -3,11 +3,8 @@
|
|
|
3
3
|
* CodeBot AI mascot and CLI banner.
|
|
4
4
|
*
|
|
5
5
|
* Mascot name: Codi
|
|
6
|
-
* Three designs:
|
|
6
|
+
* Three designs: Core, Terminal, Sentinel
|
|
7
7
|
* See BRANDING.md for full identity guide.
|
|
8
|
-
*
|
|
9
|
-
* Design philosophy: Enterprise-grade. Clean geometry.
|
|
10
|
-
* No crayon vibes — precision engineering.
|
|
11
8
|
*/
|
|
12
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
10
|
exports.CODI_FACE = exports.banner = exports.BANNER_3 = exports.MASCOT_3 = exports.BANNER_2 = exports.MASCOT_2 = exports.BANNER_1 = exports.MASCOT_1 = void 0;
|
|
@@ -37,118 +34,114 @@ const C = {
|
|
|
37
34
|
brightBlue: '\x1b[94m',
|
|
38
35
|
};
|
|
39
36
|
// ─────────────────────────────────────────────────────────────
|
|
40
|
-
// DESIGN 1: "
|
|
41
|
-
//
|
|
37
|
+
// DESIGN 1: "Core" — Solid block-character robot head
|
|
38
|
+
// Double-thick walls. Heavy, industrial, enterprise.
|
|
42
39
|
// ─────────────────────────────────────────────────────────────
|
|
43
40
|
exports.MASCOT_1 = `
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
└──┬──┬───────┬──┬──┘
|
|
52
|
-
│ │ │ │
|
|
41
|
+
▄██████████████████▄
|
|
42
|
+
██ ██
|
|
43
|
+
██ ▄██▄ ▄██▄ ██
|
|
44
|
+
██ ▀██▀ ▀██▀ ██
|
|
45
|
+
██ ██
|
|
46
|
+
██ ▀██████▀ ██
|
|
47
|
+
▀██████████████████▀
|
|
53
48
|
`;
|
|
54
49
|
const BANNER_1 = (version, model, provider, session, autonomous) => {
|
|
55
|
-
const
|
|
56
|
-
const e = C.brightGreen;
|
|
57
|
-
const m = C.brightCyan;
|
|
58
|
-
const d = C.dim;
|
|
50
|
+
const f = C.cyan;
|
|
51
|
+
const e = C.brightGreen;
|
|
52
|
+
const m = C.brightCyan;
|
|
53
|
+
const d = C.dim;
|
|
59
54
|
const r = C.reset;
|
|
60
55
|
const lines = [
|
|
61
56
|
'',
|
|
62
|
-
`${
|
|
63
|
-
`${
|
|
64
|
-
`${
|
|
65
|
-
`${
|
|
66
|
-
`${
|
|
67
|
-
`${
|
|
68
|
-
`${
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
`${f} ▄██████████████████▄${r}`,
|
|
58
|
+
`${f} ██${r} ${f}██${r}`,
|
|
59
|
+
`${f} ██${r} ${e}▄██▄${r} ${e}▄██▄${r} ${f}██${r} ${C.bold}${C.brightCyan}CodeBot AI${r} ${d}v${version}${r}`,
|
|
60
|
+
`${f} ██${r} ${e}▀██▀${r} ${e}▀██▀${r} ${f}██${r} ${d}Think local. Code global.${r}`,
|
|
61
|
+
`${f} ██${r} ${f}██${r}`,
|
|
62
|
+
`${f} ██${r} ${m}▀██████▀${r} ${f}██${r} ${d}Model: ${C.white}${model}${r}`,
|
|
63
|
+
`${f} ▀██████████████████▀${r} ${d}Provider: ${C.white}${provider}${r}`,
|
|
64
|
+
` ${d}Session: ${C.white}${session}${r}`,
|
|
65
|
+
autonomous ? ` ${C.brightYellow}${C.bold}⚡ AUTONOMOUS${r}` : '',
|
|
71
66
|
'',
|
|
72
67
|
];
|
|
73
68
|
return lines.join('\n');
|
|
74
69
|
};
|
|
75
70
|
exports.BANNER_1 = BANNER_1;
|
|
76
71
|
// ─────────────────────────────────────────────────────────────
|
|
77
|
-
// DESIGN 2: "Terminal
|
|
78
|
-
//
|
|
72
|
+
// DESIGN 2: "Terminal" — Clean double-line border monitor
|
|
73
|
+
// Formal, corporate. Minimal decoration.
|
|
79
74
|
// ─────────────────────────────────────────────────────────────
|
|
80
75
|
exports.MASCOT_2 = `
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
76
|
+
╔══════════════════════╗
|
|
77
|
+
║ ║
|
|
78
|
+
║ ● ● ║
|
|
79
|
+
║ ║
|
|
80
|
+
║ ╰────────╯ ║
|
|
81
|
+
║ ║
|
|
82
|
+
╚══════════════════════╝
|
|
88
83
|
`;
|
|
89
84
|
const BANNER_2 = (version, model, provider, session, autonomous) => {
|
|
90
|
-
const f = C.cyan;
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
85
|
+
const f = C.cyan;
|
|
86
|
+
const e = C.brightGreen;
|
|
87
|
+
const m = C.brightCyan;
|
|
88
|
+
const d = C.dim;
|
|
94
89
|
const r = C.reset;
|
|
95
|
-
const led = C.brightGreen;
|
|
96
90
|
const lines = [
|
|
97
91
|
'',
|
|
98
|
-
`${
|
|
99
|
-
`${
|
|
100
|
-
`${
|
|
101
|
-
`${
|
|
102
|
-
`${
|
|
103
|
-
`${
|
|
104
|
-
|
|
105
|
-
|
|
92
|
+
`${f} ╔══════════════════════╗${r}`,
|
|
93
|
+
`${f} ║${r} ${f}║${r}`,
|
|
94
|
+
`${f} ║${r} ${e}●${r} ${e}●${r} ${f}║${r} ${C.bold}${C.brightCyan}CodeBot AI${r} ${d}v${version}${r}`,
|
|
95
|
+
`${f} ║${r} ${f}║${r} ${d}Think local. Code global.${r}`,
|
|
96
|
+
`${f} ║${r} ${m}╰────────╯${r} ${f}║${r}`,
|
|
97
|
+
`${f} ║${r} ${f}║${r} ${d}Model: ${C.white}${model}${r}`,
|
|
98
|
+
`${f} ╚══════════════════════╝${r} ${d}Provider: ${C.white}${provider}${r}`,
|
|
99
|
+
` ${d}Session: ${C.white}${session}${r}`,
|
|
100
|
+
autonomous ? ` ${C.brightYellow}${C.bold}⚡ AUTONOMOUS${r}` : '',
|
|
106
101
|
'',
|
|
107
102
|
];
|
|
108
103
|
return lines.join('\n');
|
|
109
104
|
};
|
|
110
105
|
exports.BANNER_2 = BANNER_2;
|
|
111
106
|
// ─────────────────────────────────────────────────────────────
|
|
112
|
-
// DESIGN 3: "Sentinel" —
|
|
113
|
-
//
|
|
107
|
+
// DESIGN 3: "Sentinel" — Visor helmet with gradient scan bar
|
|
108
|
+
// Sleek armor plating. Diamond silhouette.
|
|
114
109
|
// ─────────────────────────────────────────────────────────────
|
|
115
110
|
exports.MASCOT_3 = `
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
║ ║ ║ ║
|
|
111
|
+
▄████████████▄
|
|
112
|
+
▄█▀ ▀█▄
|
|
113
|
+
█▀ ░░▒▓██████▓▒░░ ▀█
|
|
114
|
+
█▄ ░░░░░░░░░░░░░░ ▄█
|
|
115
|
+
▀█▄ ▄█▀
|
|
116
|
+
▀████████████▀
|
|
123
117
|
`;
|
|
124
118
|
const BANNER_3 = (version, model, provider, session, autonomous) => {
|
|
125
|
-
const f = C.cyan;
|
|
126
|
-
const v = C.brightCyan;
|
|
127
|
-
const g = C.brightGreen;
|
|
119
|
+
const f = C.cyan;
|
|
120
|
+
const v = C.brightCyan;
|
|
121
|
+
const g = C.brightGreen;
|
|
128
122
|
const d = C.dim;
|
|
129
123
|
const r = C.reset;
|
|
130
124
|
const lines = [
|
|
131
125
|
'',
|
|
132
|
-
`${f}
|
|
133
|
-
`${f}
|
|
134
|
-
`${f}
|
|
135
|
-
`${f}
|
|
136
|
-
`${f}
|
|
137
|
-
`${f}
|
|
138
|
-
|
|
139
|
-
autonomous ? `
|
|
126
|
+
`${f} ▄████████████▄${r}`,
|
|
127
|
+
`${f} ▄█▀${r} ${f}▀█▄${r} ${C.bold}${C.brightCyan}CodeBot AI${r} ${d}v${version}${r}`,
|
|
128
|
+
`${f} █▀${r} ${v}░░▒▓${g}██████${v}▓▒░░${r} ${f}▀█${r} ${d}Think local. Code global.${r}`,
|
|
129
|
+
`${f} █▄${r} ${d}░░░░░░░░░░░░░░${r} ${f}▄█${r}`,
|
|
130
|
+
`${f} ▀█▄${r} ${f}▄█▀${r} ${d}Model: ${C.white}${model}${r}`,
|
|
131
|
+
`${f} ▀████████████▀${r} ${d}Provider: ${C.white}${provider}${r}`,
|
|
132
|
+
` ${d}Session: ${C.white}${session}${r}`,
|
|
133
|
+
autonomous ? ` ${C.brightYellow}${C.bold}⚡ AUTONOMOUS${r}` : '',
|
|
140
134
|
'',
|
|
141
135
|
];
|
|
142
136
|
return lines.join('\n');
|
|
143
137
|
};
|
|
144
138
|
exports.BANNER_3 = BANNER_3;
|
|
145
139
|
// ─────────────────────────────────────────────────────────────
|
|
146
|
-
// Default banner (Design 1 —
|
|
140
|
+
// Default banner (Design 1 — Core)
|
|
147
141
|
// ─────────────────────────────────────────────────────────────
|
|
148
142
|
exports.banner = exports.BANNER_1;
|
|
149
143
|
// ─────────────────────────────────────────────────────────────
|
|
150
|
-
//
|
|
151
|
-
// Enterprise-grade: no emoji, no cartoon. Clean symbols.
|
|
144
|
+
// Inline status indicators
|
|
152
145
|
// ─────────────────────────────────────────────────────────────
|
|
153
146
|
exports.CODI_FACE = {
|
|
154
147
|
ready: `${C.cyan}[${C.brightGreen}◉ ◉${C.cyan}]${C.reset}`,
|
|
@@ -160,7 +153,7 @@ exports.CODI_FACE = {
|
|
|
160
153
|
alert: `${C.cyan}[${C.brightYellow}▲ ▲${C.cyan}]${C.reset}`,
|
|
161
154
|
};
|
|
162
155
|
// ─────────────────────────────────────────────────────────────
|
|
163
|
-
// Greeting System
|
|
156
|
+
// Greeting System
|
|
164
157
|
// ─────────────────────────────────────────────────────────────
|
|
165
158
|
const GREETINGS_BY_MOOD = {
|
|
166
159
|
confident: [
|
|
@@ -197,11 +190,7 @@ const GREETINGS_BY_MOOD = {
|
|
|
197
190
|
"Session recovered. Let's continue.",
|
|
198
191
|
],
|
|
199
192
|
};
|
|
200
|
-
/** All greetings flattened for random selection */
|
|
201
193
|
const ALL_GREETINGS = Object.values(GREETINGS_BY_MOOD).flat();
|
|
202
|
-
/**
|
|
203
|
-
* Random startup greeting from Codi.
|
|
204
|
-
*/
|
|
205
194
|
function randomGreeting(mood) {
|
|
206
195
|
const pool = mood && GREETINGS_BY_MOOD[mood]
|
|
207
196
|
? GREETINGS_BY_MOOD[mood]
|
|
@@ -258,10 +247,6 @@ const REACTIONS = {
|
|
|
258
247
|
"Autonomous. Maximum throughput.",
|
|
259
248
|
],
|
|
260
249
|
};
|
|
261
|
-
/**
|
|
262
|
-
* Get a context-aware reaction from Codi.
|
|
263
|
-
* Returns a face expression + message pair.
|
|
264
|
-
*/
|
|
265
250
|
function codiReact(event) {
|
|
266
251
|
let mood = 'ready';
|
|
267
252
|
if (event === 'tool_success' || event === 'session_end')
|
|
@@ -278,20 +263,14 @@ function codiReact(event) {
|
|
|
278
263
|
mood = 'working';
|
|
279
264
|
const messages = REACTIONS[event] || REACTIONS.tool_success;
|
|
280
265
|
const message = messages[Math.floor(Math.random() * messages.length)];
|
|
281
|
-
return {
|
|
282
|
-
face: exports.CODI_FACE[mood],
|
|
283
|
-
message,
|
|
284
|
-
};
|
|
266
|
+
return { face: exports.CODI_FACE[mood], message };
|
|
285
267
|
}
|
|
286
|
-
/**
|
|
287
|
-
* Format a Codi reaction as a styled CLI string.
|
|
288
|
-
*/
|
|
289
268
|
function formatReaction(event) {
|
|
290
269
|
const reaction = codiReact(event);
|
|
291
270
|
return ` ${reaction.face} ${C.dim}${reaction.message}${C.reset}`;
|
|
292
271
|
}
|
|
293
272
|
// ─────────────────────────────────────────────────────────────
|
|
294
|
-
// Session Summary Banner
|
|
273
|
+
// Session Summary Banner
|
|
295
274
|
// ─────────────────────────────────────────────────────────────
|
|
296
275
|
function sessionSummaryBanner(stats) {
|
|
297
276
|
const durationStr = stats.duration !== undefined
|
|
@@ -314,15 +293,9 @@ function sessionSummaryBanner(stats) {
|
|
|
314
293
|
];
|
|
315
294
|
return lines.join('\n');
|
|
316
295
|
}
|
|
317
|
-
/**
|
|
318
|
-
* Compact single-line startup for non-TTY / piped usage.
|
|
319
|
-
*/
|
|
320
296
|
function compactBanner(version, model) {
|
|
321
297
|
return `${C.bold}${C.brightCyan}CodeBot AI${C.reset} ${C.dim}v${version}${C.reset} ${C.dim}[${model}]${C.reset}`;
|
|
322
298
|
}
|
|
323
|
-
/**
|
|
324
|
-
* Pick a random banner design (for variety on startup).
|
|
325
|
-
*/
|
|
326
299
|
function randomBanner() {
|
|
327
300
|
const banners = [exports.BANNER_1, exports.BANNER_2, exports.BANNER_3];
|
|
328
301
|
return banners[Math.floor(Math.random() * banners.length)];
|
package/dist/cli.js
CHANGED
|
@@ -52,7 +52,7 @@ const sandbox_1 = require("./sandbox");
|
|
|
52
52
|
const replay_1 = require("./replay");
|
|
53
53
|
const risk_1 = require("./risk");
|
|
54
54
|
const sarif_1 = require("./sarif");
|
|
55
|
-
const VERSION = '2.1.
|
|
55
|
+
const VERSION = '2.1.2';
|
|
56
56
|
const C = {
|
|
57
57
|
reset: '\x1b[0m',
|
|
58
58
|
bold: '\x1b[1m',
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.BANNER_1 = exports.CODI_FACE = exports.randomBanner = exports.sessionSummaryBanner = exports.codiReact = exports.formatReaction = exports.compactBanner = exports.randomGreeting = exports.banner = exports.getPassphrase = exports.deriveKey = exports.isEncryptionEnabled = exports.decryptContent = exports.encryptContent = exports.decryptLine = exports.encryptLine = exports.decrypt = exports.encrypt = exports.generateDefaultPolicyFile = exports.loadPolicy = exports.PolicyEnforcer = exports.sarifToString = exports.exportSarif = exports.RiskScorer = exports.MetricsCollector = exports.listReplayableSessions = exports.compareOutputs = exports.loadSessionForReplay = exports.ReplayProvider = exports.verifyMessages = exports.verifyMessage = exports.signMessage = exports.deriveSessionKey = exports.CapabilityChecker = exports.detectProvider = exports.getModelInfo = exports.PROVIDER_DEFAULTS = exports.MODEL_REGISTRY = exports.loadMCPTools = exports.loadPlugins = exports.parseToolCalls = exports.MemoryManager = exports.SessionManager = exports.buildRepoMap = exports.ContextManager = exports.ToolRegistry = exports.AnthropicProvider = exports.OpenAIProvider = exports.Agent = exports.VERSION = void 0;
|
|
18
18
|
exports.BANNER_3 = exports.BANNER_2 = void 0;
|
|
19
|
-
exports.VERSION = '2.1.
|
|
19
|
+
exports.VERSION = '2.1.2';
|
|
20
20
|
var agent_1 = require("./agent");
|
|
21
21
|
Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
|
|
22
22
|
var openai_1 = require("./providers/openai");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codebot-ai",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "Zero-dependency autonomous AI agent. Code, browse, search, automate. Works with any LLM — Ollama, Claude, GPT, Gemini, DeepSeek, Groq, Mistral, Grok.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|