Merge branch 'staging' of https://github.com/buster-so/buster into staging

This commit is contained in:
Nate Kelley 2025-09-09 09:50:29 -06:00
commit 4ae2cb7420
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
7 changed files with 85 additions and 8 deletions

View File

@ -71,7 +71,8 @@ jobs:
run: |
echo "📦 Building standalone CLI binary for ${{ matrix.target }}..."
# Note: Bun compiles for the host platform, cross-compilation happens via matrix strategy
bun build src/index.tsx --compile --outfile dist/buster-cli
# Using --minify for production builds to reduce binary size
bun build src/index.tsx --compile --minify --outfile dist/buster-cli
# Make binary executable on Unix systems
if [[ "${{ runner.os }}" != "Windows" ]]; then

View File

@ -1,5 +1,6 @@
import { Box, Text } from 'ink';
import BigText from 'ink-big-text';
import React from 'react';
import { SimpleBigText } from './simple-big-text.js';
interface BannerProps {
showSubtitle?: boolean;
@ -8,17 +9,16 @@ interface BannerProps {
/**
* Shared Buster banner component for consistent branding across CLI
* Uses SimpleBigText to avoid font loading issues in standalone binaries
*/
export function BusterBanner({ showSubtitle = true, inline = false }: BannerProps = {}) {
const content = (
<>
<Box>
<Text color="#7C3AED">
<BigText text="BUSTER" font="block" />
</Text>
<SimpleBigText text="BUSTER" color="#7C3AED" />
</Box>
{showSubtitle && (
<Box>
<Box marginTop={1}>
<Text bold>Welcome to Buster</Text>
</Box>
)}

View File

@ -0,0 +1,41 @@
import { Text } from 'ink';
import React from 'react';
interface SimpleBigTextProps {
text: string;
color?: string;
}
/**
* Simple big text renderer that doesn't require external font files
* Uses inline ASCII art for each letter
*/
export function SimpleBigText({ text, color = 'white' }: SimpleBigTextProps) {
const letters: Record<string, string[]> = {
B: ['██████╗ ', '██╔══██╗', '██████╔╝', '██╔══██╗', '██████╔╝', '╚═════╝ '],
U: ['██╗ ██╗', '██║ ██║', '██║ ██║', '██║ ██║', '╚██████╔╝', ' ╚═════╝ '],
S: ['███████╗', '██╔════╝', '███████╗', '╚════██║', '███████║', '╚══════╝'],
T: ['████████╗', '╚══██╔══╝', ' ██║ ', ' ██║ ', ' ██║ ', ' ╚═╝ '],
E: ['███████╗', '██╔════╝', '█████╗ ', '██╔══╝ ', '███████╗', '╚══════╝'],
R: ['██████╗ ', '██╔══██╗', '██████╔╝', '██╔══██╗', '██║ ██║', '╚═╝ ╚═╝'],
};
// Convert text to uppercase and get the ASCII art for each letter
const upperText = text.toUpperCase();
const lines: string[] = ['', '', '', '', '', ''];
for (const char of upperText) {
const letter = letters[char];
if (letter) {
for (let i = 0; i < 6; i++) {
lines[i] += letter[i] + ' ';
}
} else if (char === ' ') {
for (let i = 0; i < 6; i++) {
lines[i] += ' ';
}
}
}
return <Text color={color}>{lines.join('\n')}</Text>;
}

View File

@ -10,7 +10,7 @@ import { InitCommand } from './commands/init.js';
program
.name('buster')
.description('Buster CLI - AI-powered data analytics platform')
.version('0.1.0');
.version('0.3.0');
// Auth command - authentication management
program

View File

@ -7,6 +7,10 @@
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
},
"./types": {
"types": "./dist/types.d.ts",
"default": "./dist/types.js"
},
"./helpers/*": {
"types": "./dist/helpers/*/index.d.ts",
"default": "./dist/helpers/*/index.js"

View File

@ -0,0 +1,30 @@
/**
* Type-only exports for message schemas
* This file provides types without triggering database connection
*/
// Export message schema types
export type {
ChatMessageReasoning_status,
ChatMessageResponseMessage,
ChatMessageReasoningMessage,
ChatMessageReasoningMessage_Text,
ChatMessageReasoningMessage_Files,
ChatMessageReasoningMessage_Pills,
ChatMessageReasoningMessage_File,
ChatMessageReasoningMessage_Pill,
ChatMessageReasoningMessage_PillContainer,
ChatMessageResponseMessage_FileMetadata,
ChatMessageResponseMessage_Text,
ChatMessageResponseMessage_File,
ReasoningFileType,
ResponseMessageFileType,
ReasoingMessage_ThoughtFileType,
} from './schemas/message-schemas';
// Export the schemas themselves (these are just objects, no side effects)
export {
StatusSchema,
ResponseMessageSchema,
ReasoningMessageSchema,
} from './schemas/message-schemas';

View File

@ -6,6 +6,7 @@ export * from './requests';
export * from './responses';
// Re-export message schemas from database package to maintain backward compatibility
// Using /types entry point to avoid triggering database connection
export {
StatusSchema,
ResponseMessageSchema,
@ -25,4 +26,4 @@ export {
type ReasoningFileType,
type ResponseMessageFileType,
type ReasoingMessage_ThoughtFileType,
} from '@buster/database';
} from '@buster/database/types';