codebot-ai 2.1.2 → 2.1.4
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 +31 -0
- package/dist/banner.js +297 -0
- package/dist/cli.js +23 -9
- package/dist/index.d.ts +3 -3
- package/dist/index.js +9 -2
- package/package.json +1 -1
package/dist/banner.d.ts
CHANGED
|
@@ -30,4 +30,35 @@ export declare function sessionSummaryBanner(stats: {
|
|
|
30
30
|
}): string;
|
|
31
31
|
export declare function compactBanner(version: string, model: string): string;
|
|
32
32
|
export declare function randomBanner(): typeof BANNER_1;
|
|
33
|
+
export type AnimationWriter = (text: string) => void;
|
|
34
|
+
export type AnimationSpeed = 'fast' | 'normal' | 'slow';
|
|
35
|
+
export interface AnimationOptions {
|
|
36
|
+
speed?: AnimationSpeed;
|
|
37
|
+
writer?: AnimationWriter;
|
|
38
|
+
}
|
|
39
|
+
export declare function animateReveal(bannerFn: typeof BANNER_1, version: string, model: string, provider: string, session: string, autonomous: boolean, speed?: AnimationSpeed, opts?: {
|
|
40
|
+
writer?: AnimationWriter;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
export declare function animateVisorScan(sweeps?: number, speed?: AnimationSpeed, opts?: {
|
|
43
|
+
writer?: AnimationWriter;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
export declare function animateEyeBoot(speed?: AnimationSpeed, opts?: {
|
|
46
|
+
writer?: AnimationWriter;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
export declare function animateBootSequence(bannerFn: typeof BANNER_1, version: string, model: string, provider: string, session: string, autonomous: boolean, speed?: AnimationSpeed, opts?: {
|
|
49
|
+
writer?: AnimationWriter;
|
|
50
|
+
}): Promise<void>;
|
|
51
|
+
export declare function animateTyping(text: string, color?: string, speed?: AnimationSpeed, opts?: {
|
|
52
|
+
writer?: AnimationWriter;
|
|
53
|
+
}): Promise<void>;
|
|
54
|
+
export declare function animateSessionEnd(stats: {
|
|
55
|
+
iterations: number;
|
|
56
|
+
toolCalls: number;
|
|
57
|
+
tokensUsed: number;
|
|
58
|
+
cost?: number;
|
|
59
|
+
duration?: number;
|
|
60
|
+
}, speed?: AnimationSpeed, opts?: {
|
|
61
|
+
writer?: AnimationWriter;
|
|
62
|
+
}): Promise<void>;
|
|
63
|
+
export declare function shouldAnimate(): boolean;
|
|
33
64
|
//# sourceMappingURL=banner.d.ts.map
|
package/dist/banner.js
CHANGED
|
@@ -14,6 +14,13 @@ exports.formatReaction = formatReaction;
|
|
|
14
14
|
exports.sessionSummaryBanner = sessionSummaryBanner;
|
|
15
15
|
exports.compactBanner = compactBanner;
|
|
16
16
|
exports.randomBanner = randomBanner;
|
|
17
|
+
exports.animateReveal = animateReveal;
|
|
18
|
+
exports.animateVisorScan = animateVisorScan;
|
|
19
|
+
exports.animateEyeBoot = animateEyeBoot;
|
|
20
|
+
exports.animateBootSequence = animateBootSequence;
|
|
21
|
+
exports.animateTyping = animateTyping;
|
|
22
|
+
exports.animateSessionEnd = animateSessionEnd;
|
|
23
|
+
exports.shouldAnimate = shouldAnimate;
|
|
17
24
|
const C = {
|
|
18
25
|
reset: '\x1b[0m',
|
|
19
26
|
bold: '\x1b[1m',
|
|
@@ -300,4 +307,294 @@ function randomBanner() {
|
|
|
300
307
|
const banners = [exports.BANNER_1, exports.BANNER_2, exports.BANNER_3];
|
|
301
308
|
return banners[Math.floor(Math.random() * banners.length)];
|
|
302
309
|
}
|
|
310
|
+
// ─────────────────────────────────────────────────────────────
|
|
311
|
+
// Terminal Animation System
|
|
312
|
+
// ─────────────────────────────────────────────────────────────
|
|
313
|
+
const ANSI = {
|
|
314
|
+
hideCursor: '\x1b[?25l',
|
|
315
|
+
showCursor: '\x1b[?25h',
|
|
316
|
+
clearLine: '\x1b[2K',
|
|
317
|
+
moveUp: (n) => `\x1b[${n}A`,
|
|
318
|
+
moveDown: (n) => `\x1b[${n}B`,
|
|
319
|
+
moveToCol: (n) => `\x1b[${n}G`,
|
|
320
|
+
saveCursor: '\x1b7',
|
|
321
|
+
restoreCursor: '\x1b8',
|
|
322
|
+
};
|
|
323
|
+
function sleep(ms) {
|
|
324
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
325
|
+
}
|
|
326
|
+
function defaultWriter(text) {
|
|
327
|
+
process.stdout.write(text);
|
|
328
|
+
}
|
|
329
|
+
function getDelay(speed) {
|
|
330
|
+
switch (speed) {
|
|
331
|
+
case 'fast': return { line: 40, char: 15, pause: 200, frame: 50 };
|
|
332
|
+
case 'normal': return { line: 70, char: 25, pause: 300, frame: 80 };
|
|
333
|
+
case 'slow': return { line: 100, char: 40, pause: 400, frame: 120 };
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Strip ANSI escape codes from a string.
|
|
338
|
+
*/
|
|
339
|
+
function stripAnsi(s) {
|
|
340
|
+
return s.replace(/\x1b\[[0-9;]*m/g, '');
|
|
341
|
+
}
|
|
342
|
+
// ─────────────────────────────────────────────────────────────
|
|
343
|
+
// Animation 1: Line-by-line reveal
|
|
344
|
+
// Renders the banner one line at a time with a delay.
|
|
345
|
+
// ─────────────────────────────────────────────────────────────
|
|
346
|
+
async function animateReveal(bannerFn, version, model, provider, session, autonomous, speed = 'normal', opts) {
|
|
347
|
+
const w = opts?.writer ?? defaultWriter;
|
|
348
|
+
const delay = getDelay(speed);
|
|
349
|
+
const output = bannerFn(version, model, provider, session, autonomous);
|
|
350
|
+
const lines = output.split('\n');
|
|
351
|
+
w(ANSI.hideCursor);
|
|
352
|
+
try {
|
|
353
|
+
for (const line of lines) {
|
|
354
|
+
w(line + '\n');
|
|
355
|
+
if (stripAnsi(line).trim().length > 0) {
|
|
356
|
+
await sleep(delay.line);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
finally {
|
|
361
|
+
w(ANSI.showCursor);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// ─────────────────────────────────────────────────────────────
|
|
365
|
+
// Animation 2: Sentinel visor scan
|
|
366
|
+
// The gradient highlight sweeps across the visor bar.
|
|
367
|
+
// ─────────────────────────────────────────────────────────────
|
|
368
|
+
const VISOR_WIDTH = 14; // character width of the visor zone
|
|
369
|
+
function renderVisorFrame(position) {
|
|
370
|
+
const chars = [];
|
|
371
|
+
for (let i = 0; i < VISOR_WIDTH; i++) {
|
|
372
|
+
const dist = Math.abs(i - position);
|
|
373
|
+
if (dist === 0)
|
|
374
|
+
chars.push(`${C.brightGreen}██${C.reset}`);
|
|
375
|
+
else if (dist === 1)
|
|
376
|
+
chars.push(`${C.brightCyan}▓▓${C.reset}`);
|
|
377
|
+
else if (dist === 2)
|
|
378
|
+
chars.push(`${C.cyan}▒▒${C.reset}`);
|
|
379
|
+
else if (dist === 3)
|
|
380
|
+
chars.push(`${C.dim}░░${C.reset}`);
|
|
381
|
+
else
|
|
382
|
+
chars.push(`${C.dim}░░${C.reset}`);
|
|
383
|
+
}
|
|
384
|
+
return chars.join('').replace(/(░░)+$/, m => `${C.dim}${m}${C.reset}`);
|
|
385
|
+
}
|
|
386
|
+
async function animateVisorScan(sweeps = 2, speed = 'normal', opts) {
|
|
387
|
+
const w = opts?.writer ?? defaultWriter;
|
|
388
|
+
const delay = getDelay(speed);
|
|
389
|
+
const f = C.cyan;
|
|
390
|
+
const r = C.reset;
|
|
391
|
+
// Render the static sentinel frame first
|
|
392
|
+
const staticLines = [
|
|
393
|
+
'',
|
|
394
|
+
`${f} ▄████████████▄${r}`,
|
|
395
|
+
`${f} ▄█▀${r} ${f}▀█▄${r}`,
|
|
396
|
+
'', // visor line — will be animated
|
|
397
|
+
`${f} █▄${r} ${C.dim}░░░░░░░░░░░░░░${r} ${f}▄█${r}`,
|
|
398
|
+
`${f} ▀█▄${r} ${f}▄█▀${r}`,
|
|
399
|
+
`${f} ▀████████████▀${r}`,
|
|
400
|
+
'',
|
|
401
|
+
];
|
|
402
|
+
w(ANSI.hideCursor);
|
|
403
|
+
try {
|
|
404
|
+
// Print static lines, inserting placeholder for visor
|
|
405
|
+
for (let i = 0; i < staticLines.length; i++) {
|
|
406
|
+
if (i === 3) {
|
|
407
|
+
w(`${f} █▀${r} ${C.dim}░░░░░░░░░░░░░░░░░░░░░░░░░░░░${r} ${f}▀█${r}\n`);
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
w(staticLines[i] + '\n');
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Now animate the visor line (line index 3, which is 5 lines up from bottom)
|
|
414
|
+
const linesBelow = staticLines.length - 3 - 1; // lines printed after the visor line
|
|
415
|
+
for (let sweep = 0; sweep < sweeps; sweep++) {
|
|
416
|
+
// Sweep right
|
|
417
|
+
for (let pos = 0; pos <= 6; pos++) {
|
|
418
|
+
w(ANSI.moveUp(linesBelow + 1));
|
|
419
|
+
w('\r' + ANSI.clearLine);
|
|
420
|
+
const visor = renderVisorFrame(pos);
|
|
421
|
+
w(`${f} █▀${r} ${visor} ${f}▀█${r}`);
|
|
422
|
+
w('\n' + ANSI.moveDown(linesBelow));
|
|
423
|
+
await sleep(delay.frame);
|
|
424
|
+
}
|
|
425
|
+
// Sweep left
|
|
426
|
+
for (let pos = 6; pos >= 0; pos--) {
|
|
427
|
+
w(ANSI.moveUp(linesBelow + 1));
|
|
428
|
+
w('\r' + ANSI.clearLine);
|
|
429
|
+
const visor = renderVisorFrame(pos);
|
|
430
|
+
w(`${f} █▀${r} ${visor} ${f}▀█${r}`);
|
|
431
|
+
w('\n' + ANSI.moveDown(linesBelow));
|
|
432
|
+
await sleep(delay.frame);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
// Final state — render the standard visor
|
|
436
|
+
w(ANSI.moveUp(linesBelow + 1));
|
|
437
|
+
w('\r' + ANSI.clearLine);
|
|
438
|
+
const v = C.brightCyan;
|
|
439
|
+
const g = C.brightGreen;
|
|
440
|
+
w(`${f} █▀${r} ${v}░░▒▓${g}██████${v}▓▒░░${r} ${f}▀█${r}`);
|
|
441
|
+
w('\n' + ANSI.moveDown(linesBelow));
|
|
442
|
+
}
|
|
443
|
+
finally {
|
|
444
|
+
w(ANSI.showCursor);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// ─────────────────────────────────────────────────────────────
|
|
448
|
+
// Animation 3: Core eye boot sequence
|
|
449
|
+
// Eyes power on: dim → medium → bright
|
|
450
|
+
// ─────────────────────────────────────────────────────────────
|
|
451
|
+
async function animateEyeBoot(speed = 'normal', opts) {
|
|
452
|
+
const w = opts?.writer ?? defaultWriter;
|
|
453
|
+
const delay = getDelay(speed);
|
|
454
|
+
const f = C.cyan;
|
|
455
|
+
const r = C.reset;
|
|
456
|
+
// Phase frames for the eyes powering on
|
|
457
|
+
const eyeFrames = [
|
|
458
|
+
// Phase 0: Dark — no eyes
|
|
459
|
+
{ top: `${C.dim}· ·${r} ${C.dim}· ·${r}`, bot: `${C.dim}· ·${r} ${C.dim}· ·${r}` },
|
|
460
|
+
// Phase 1: Dim blocks
|
|
461
|
+
{ top: `${C.dim}▄██▄${r} ${C.dim}▄██▄${r}`, bot: `${C.dim}▀██▀${r} ${C.dim}▀██▀${r}` },
|
|
462
|
+
// Phase 2: Cyan glow
|
|
463
|
+
{ top: `${C.cyan}▄██▄${r} ${C.cyan}▄██▄${r}`, bot: `${C.cyan}▀██▀${r} ${C.cyan}▀██▀${r}` },
|
|
464
|
+
// Phase 3: Bright green — fully online
|
|
465
|
+
{ top: `${C.brightGreen}▄██▄${r} ${C.brightGreen}▄██▄${r}`, bot: `${C.brightGreen}▀██▀${r} ${C.brightGreen}▀██▀${r}` },
|
|
466
|
+
];
|
|
467
|
+
// Print the Core mascot with blank eyes first
|
|
468
|
+
const lines = [
|
|
469
|
+
'',
|
|
470
|
+
`${f} ▄██████████████████▄${r}`,
|
|
471
|
+
`${f} ██${r} ${f}██${r}`,
|
|
472
|
+
`${f} ██${r} ${eyeFrames[0].top} ${f}██${r}`,
|
|
473
|
+
`${f} ██${r} ${eyeFrames[0].bot} ${f}██${r}`,
|
|
474
|
+
`${f} ██${r} ${f}██${r}`,
|
|
475
|
+
`${f} ██${r} ${C.dim}· · · ·${r} ${f}██${r}`,
|
|
476
|
+
`${f} ▀██████████████████▀${r}`,
|
|
477
|
+
'',
|
|
478
|
+
];
|
|
479
|
+
w(ANSI.hideCursor);
|
|
480
|
+
try {
|
|
481
|
+
for (const line of lines) {
|
|
482
|
+
w(line + '\n');
|
|
483
|
+
}
|
|
484
|
+
await sleep(delay.pause * 2);
|
|
485
|
+
// Animate eye phases
|
|
486
|
+
for (let phase = 1; phase < eyeFrames.length; phase++) {
|
|
487
|
+
const frame = eyeFrames[phase];
|
|
488
|
+
w(ANSI.moveUp(6));
|
|
489
|
+
w('\r' + ANSI.clearLine);
|
|
490
|
+
w(`${f} ██${r} ${frame.top} ${f}██${r}`);
|
|
491
|
+
w('\n' + ANSI.clearLine);
|
|
492
|
+
w(`${f} ██${r} ${frame.bot} ${f}██${r}`);
|
|
493
|
+
w('\n' + ANSI.moveDown(4));
|
|
494
|
+
if (phase === eyeFrames.length - 1) {
|
|
495
|
+
// Also light up the mouth
|
|
496
|
+
w(ANSI.moveUp(3));
|
|
497
|
+
w('\r' + ANSI.clearLine);
|
|
498
|
+
w(`${f} ██${r} ${C.brightCyan}▀██████▀${r} ${f}██${r}`);
|
|
499
|
+
w('\n' + ANSI.moveDown(2));
|
|
500
|
+
}
|
|
501
|
+
await sleep(delay.pause);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
finally {
|
|
505
|
+
w(ANSI.showCursor);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
// ─────────────────────────────────────────────────────────────
|
|
509
|
+
// Animation 4: Full boot sequence
|
|
510
|
+
// Combines: scanline effect → mascot build → info fade-in
|
|
511
|
+
// ─────────────────────────────────────────────────────────────
|
|
512
|
+
async function animateBootSequence(bannerFn, version, model, provider, session, autonomous, speed = 'normal', opts) {
|
|
513
|
+
const w = opts?.writer ?? defaultWriter;
|
|
514
|
+
const delay = getDelay(speed);
|
|
515
|
+
const output = bannerFn(version, model, provider, session, autonomous);
|
|
516
|
+
const lines = output.split('\n');
|
|
517
|
+
const r = C.reset;
|
|
518
|
+
w(ANSI.hideCursor);
|
|
519
|
+
try {
|
|
520
|
+
// Brief settle before animation starts
|
|
521
|
+
await sleep(150);
|
|
522
|
+
// Phase 1: Scanline — print each line dim first, then brighten
|
|
523
|
+
let artDone = false;
|
|
524
|
+
for (const line of lines) {
|
|
525
|
+
const stripped = stripAnsi(line).trim();
|
|
526
|
+
if (stripped.length === 0) {
|
|
527
|
+
w('\n');
|
|
528
|
+
continue;
|
|
529
|
+
}
|
|
530
|
+
// Detect transition from mascot art to info lines (Model/Provider/Session)
|
|
531
|
+
if (!artDone && stripped.startsWith('Model:')) {
|
|
532
|
+
artDone = true;
|
|
533
|
+
await sleep(delay.pause / 2); // pause between art and info
|
|
534
|
+
}
|
|
535
|
+
// Print dim version first — hold long enough to see
|
|
536
|
+
w(`${C.dim}${stripAnsi(line)}${r}`);
|
|
537
|
+
await sleep(delay.line);
|
|
538
|
+
// Overwrite with full color
|
|
539
|
+
w('\r' + ANSI.clearLine + line + '\n');
|
|
540
|
+
await sleep(delay.line / 3);
|
|
541
|
+
}
|
|
542
|
+
await sleep(delay.pause);
|
|
543
|
+
// Phase 2: Greeting — type character by character
|
|
544
|
+
const greeting = randomGreeting('confident');
|
|
545
|
+
w(' ' + exports.CODI_FACE.ready + ' ' + C.dim);
|
|
546
|
+
for (const ch of greeting) {
|
|
547
|
+
w(ch);
|
|
548
|
+
await sleep(delay.char);
|
|
549
|
+
}
|
|
550
|
+
w(r + '\n');
|
|
551
|
+
// Hold the completed banner visible briefly
|
|
552
|
+
await sleep(200);
|
|
553
|
+
}
|
|
554
|
+
finally {
|
|
555
|
+
w(ANSI.showCursor);
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
// ─────────────────────────────────────────────────────────────
|
|
559
|
+
// Animation 5: Terminal typing effect
|
|
560
|
+
// Types out text character by character.
|
|
561
|
+
// ─────────────────────────────────────────────────────────────
|
|
562
|
+
async function animateTyping(text, color = C.dim, speed = 'normal', opts) {
|
|
563
|
+
const w = opts?.writer ?? defaultWriter;
|
|
564
|
+
const delay = getDelay(speed);
|
|
565
|
+
w(color);
|
|
566
|
+
for (const ch of text) {
|
|
567
|
+
w(ch);
|
|
568
|
+
await sleep(delay.char);
|
|
569
|
+
}
|
|
570
|
+
w(C.reset);
|
|
571
|
+
}
|
|
572
|
+
// ─────────────────────────────────────────────────────────────
|
|
573
|
+
// Animation 6: Session end — fade out with status
|
|
574
|
+
// ─────────────────────────────────────────────────────────────
|
|
575
|
+
async function animateSessionEnd(stats, speed = 'normal', opts) {
|
|
576
|
+
const w = opts?.writer ?? defaultWriter;
|
|
577
|
+
const delay = getDelay(speed);
|
|
578
|
+
const summaryText = sessionSummaryBanner(stats);
|
|
579
|
+
const lines = summaryText.split('\n');
|
|
580
|
+
w(ANSI.hideCursor);
|
|
581
|
+
try {
|
|
582
|
+
for (const line of lines) {
|
|
583
|
+
w(line + '\n');
|
|
584
|
+
if (stripAnsi(line).trim().length > 0) {
|
|
585
|
+
await sleep(delay.line);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
finally {
|
|
590
|
+
w(ANSI.showCursor);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
// ─────────────────────────────────────────────────────────────
|
|
594
|
+
// Utility: Check if animations should run
|
|
595
|
+
// Only animate in interactive TTY terminals.
|
|
596
|
+
// ─────────────────────────────────────────────────────────────
|
|
597
|
+
function shouldAnimate() {
|
|
598
|
+
return !!(process.stdout.isTTY) && process.env.TERM !== 'dumb' && !process.env.CI;
|
|
599
|
+
}
|
|
303
600
|
//# sourceMappingURL=banner.js.map
|
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.4';
|
|
56
56
|
const C = {
|
|
57
57
|
reset: '\x1b[0m',
|
|
58
58
|
bold: '\x1b[1m',
|
|
@@ -270,16 +270,30 @@ async function main() {
|
|
|
270
270
|
}
|
|
271
271
|
const session = new history_1.SessionManager(config.model, resumeId);
|
|
272
272
|
const sessionShort = session.getId().substring(0, 8);
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
273
|
+
const providerLabel = `${config.provider} @ ${config.baseUrl}`;
|
|
274
|
+
const isAuto = !!config.autoApprove;
|
|
275
|
+
const noAnimate = args['no-animate'] === true || args['no-animation'] === true;
|
|
276
|
+
if ((0, banner_1.shouldAnimate)() && !noAnimate) {
|
|
277
|
+
await (0, banner_1.animateBootSequence)(banner_1.banner, VERSION, config.model, providerLabel, `${sessionShort}...`, isAuto, 'normal');
|
|
278
|
+
if (resumeId) {
|
|
279
|
+
console.log(c(` ${(0, banner_1.randomGreeting)('resuming')}`, 'green'));
|
|
280
|
+
}
|
|
281
|
+
else if (isAuto) {
|
|
282
|
+
console.log((0, banner_1.formatReaction)('autonomous_start'));
|
|
283
|
+
}
|
|
280
284
|
}
|
|
281
285
|
else {
|
|
282
|
-
console.log(
|
|
286
|
+
console.log((0, banner_1.banner)(VERSION, config.model, providerLabel, `${sessionShort}...`, isAuto));
|
|
287
|
+
if (resumeId) {
|
|
288
|
+
console.log(c(` ${(0, banner_1.randomGreeting)('resuming')}`, 'green'));
|
|
289
|
+
}
|
|
290
|
+
else if (isAuto) {
|
|
291
|
+
console.log(c(` ${(0, banner_1.randomGreeting)('confident')}`, 'dim'));
|
|
292
|
+
console.log((0, banner_1.formatReaction)('autonomous_start'));
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
console.log(c(` ${(0, banner_1.randomGreeting)()}\n`, 'dim'));
|
|
296
|
+
}
|
|
283
297
|
}
|
|
284
298
|
const agent = new agent_1.Agent({
|
|
285
299
|
provider,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const VERSION = "2.1.
|
|
1
|
+
export declare const VERSION = "2.1.4";
|
|
2
2
|
export { Agent } from './agent';
|
|
3
3
|
export { OpenAIProvider } from './providers/openai';
|
|
4
4
|
export { AnthropicProvider } from './providers/anthropic';
|
|
@@ -28,7 +28,7 @@ export { PolicyEnforcer, loadPolicy, generateDefaultPolicyFile } from './policy'
|
|
|
28
28
|
export type { Policy, PolicyRbac, PolicyRole } from './policy';
|
|
29
29
|
export { encrypt, decrypt, encryptLine, decryptLine, encryptContent, decryptContent, isEncryptionEnabled, deriveKey, getPassphrase } from './encryption';
|
|
30
30
|
export type { EncryptionConfig } from './encryption';
|
|
31
|
-
export { banner, randomGreeting, compactBanner, formatReaction, codiReact, sessionSummaryBanner, randomBanner, CODI_FACE, BANNER_1, BANNER_2, BANNER_3 } from './banner';
|
|
32
|
-
export type { CodiMood, CodiReaction } from './banner';
|
|
31
|
+
export { banner, randomGreeting, compactBanner, formatReaction, codiReact, sessionSummaryBanner, randomBanner, CODI_FACE, BANNER_1, BANNER_2, BANNER_3, animateReveal, animateVisorScan, animateEyeBoot, animateBootSequence, animateTyping, animateSessionEnd, shouldAnimate } from './banner';
|
|
32
|
+
export type { CodiMood, CodiReaction, AnimationSpeed, AnimationWriter, AnimationOptions } from './banner';
|
|
33
33
|
export * from './types';
|
|
34
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -15,8 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
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
|
-
exports.BANNER_3 = exports.BANNER_2 = void 0;
|
|
19
|
-
exports.VERSION = '2.1.
|
|
18
|
+
exports.shouldAnimate = exports.animateSessionEnd = exports.animateTyping = exports.animateBootSequence = exports.animateEyeBoot = exports.animateVisorScan = exports.animateReveal = exports.BANNER_3 = exports.BANNER_2 = void 0;
|
|
19
|
+
exports.VERSION = '2.1.4';
|
|
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");
|
|
@@ -89,5 +89,12 @@ Object.defineProperty(exports, "CODI_FACE", { enumerable: true, get: function ()
|
|
|
89
89
|
Object.defineProperty(exports, "BANNER_1", { enumerable: true, get: function () { return banner_1.BANNER_1; } });
|
|
90
90
|
Object.defineProperty(exports, "BANNER_2", { enumerable: true, get: function () { return banner_1.BANNER_2; } });
|
|
91
91
|
Object.defineProperty(exports, "BANNER_3", { enumerable: true, get: function () { return banner_1.BANNER_3; } });
|
|
92
|
+
Object.defineProperty(exports, "animateReveal", { enumerable: true, get: function () { return banner_1.animateReveal; } });
|
|
93
|
+
Object.defineProperty(exports, "animateVisorScan", { enumerable: true, get: function () { return banner_1.animateVisorScan; } });
|
|
94
|
+
Object.defineProperty(exports, "animateEyeBoot", { enumerable: true, get: function () { return banner_1.animateEyeBoot; } });
|
|
95
|
+
Object.defineProperty(exports, "animateBootSequence", { enumerable: true, get: function () { return banner_1.animateBootSequence; } });
|
|
96
|
+
Object.defineProperty(exports, "animateTyping", { enumerable: true, get: function () { return banner_1.animateTyping; } });
|
|
97
|
+
Object.defineProperty(exports, "animateSessionEnd", { enumerable: true, get: function () { return banner_1.animateSessionEnd; } });
|
|
98
|
+
Object.defineProperty(exports, "shouldAnimate", { enumerable: true, get: function () { return banner_1.shouldAnimate; } });
|
|
92
99
|
__exportStar(require("./types"), exports);
|
|
93
100
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codebot-ai",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4",
|
|
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",
|