UNPKG

better-claude-code

Version:

CLI auxiliary tools for Claude Code

1 lines 13.1 kB
{"version":3,"sources":["../src/constants.ts","../src/message-patterns.ts","../src/session-count-group.ts","../src/shared-enums.ts","../src/time-group.ts","../src/token-percentage-group.ts"],"names":["FolderEntry","ProjectAction","MessageSource","TimeGroup"],"mappings":"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","file":"index.cjs","sourcesContent":["export const APP_NAME = 'Better Claude Code';\n\nexport const APP_CLI_NAME = 'bcc';\n\nexport const APP_NPM_PACKAGE_NAME = 'better-claude-code';\n\nexport const APP_DESCRIPTION = 'CLI auxiliary tools for Claude Code';\n\nexport const FRONTEND_PORT = 5001;\n\nexport const BACKEND_PORT = 5000;\n\nexport const API_PREFIX = '/api';\n\nexport const SWAGGER_UI_PATH = '/swagger';\n\nexport const OPENAPI_SPEC_PATH = '/openapi.json';\n\nexport const createLocalHostLink = (port: number, sufix?: string) => `http://localhost:${port}${sufix ?? ''}`;\n","export const MESSAGE_PATTERNS = {\n FILE_OR_FOLDER_AT: /(^|\\s)@([a-zA-Z.][\\w\\-.]*(?:\\/[\\w\\-./]+)*(?:#L\\d+(?:-\\d+)?)?)/g,\n FILE_OR_FOLDER_SLASH: /\\/([\\w\\-./]+)/g,\n TOOL_WITH_PATH: /\\[Tool: ([^\\]]+)\\] (\\/[^\\s<>,]+)/g,\n PATH_PROPERTY: /path: (\\/[^\\s<>,]+)/g,\n PATTERN_PROPERTY: /pattern: \"([^\"]+)\"/g,\n TOOL_WITH_QUOTE: /\\[Tool: ([^\\]]+)\\] \"([^\"]+)\"/g,\n IMAGE_TAG: /\\[Image #(\\d+)\\]/g,\n ULTRATHINK: /ultrathink/gi,\n URL: /https?:\\/\\/[^\\s<>,]+/g,\n FLAG: /(^|\\s)(--[a-z]{2,})/g,\n COMMAND_FORMAT: /<command-name>\\/?([^<]+)<\\/command-name>/,\n COMMAND_ARGS: /<command-args>([^<]+)<\\/command-args>/,\n COMMAND_WORDS:\n /^(add|update|fix|refactor|improve|create|delete|remove|modify|change|implement|build|test|debug|optimize|enhance|cleanup|migrate|upgrade|downgrade|install|uninstall|configure|setup|deploy|publish|release|merge|rebase|cherry-pick|squash|revert)\\s+/i,\n SLASH_COMMAND: /^\\/[\\w-]+/\n} as const;\n\nexport function extractPathsFromText(text: string): string[] {\n const paths = new Set<string>();\n\n const slashMatches = text.match(MESSAGE_PATTERNS.FILE_OR_FOLDER_SLASH);\n if (slashMatches) {\n for (const match of slashMatches) {\n paths.add(match);\n }\n }\n\n const atRegex = new RegExp(MESSAGE_PATTERNS.FILE_OR_FOLDER_AT.source, 'g');\n const atMatches = text.matchAll(atRegex);\n for (const match of atMatches) {\n const cleanMatch = match[0].trim().substring(1);\n paths.add(cleanMatch);\n }\n\n return Array.from(paths);\n}\n","enum SessionCountGroup {\n '0-10' = '0-10',\n '10-50' = '10-50',\n '50-200' = '50-200',\n '200-500' = '200-500',\n '500+' = '500+'\n}\n\nexport const getSessionCountGroup = (count: number): SessionCountGroup => {\n if (count <= 10) return SessionCountGroup['0-10'];\n if (count <= 50) return SessionCountGroup['10-50'];\n if (count <= 200) return SessionCountGroup['50-200'];\n if (count <= 500) return SessionCountGroup['200-500'];\n return SessionCountGroup['500+'];\n};\n\nexport const SESSION_COUNT_GROUP_LABELS: Record<SessionCountGroup, string> = {\n '0-10': '0-10 sessions',\n '10-50': '10-50 sessions',\n '50-200': '50-200 sessions',\n '200-500': '200-500 sessions',\n '500+': '500+ sessions'\n};\n\nexport const SESSION_COUNT_GROUP_ORDER: SessionCountGroup[] = [\n SessionCountGroup['500+'],\n SessionCountGroup['200-500'],\n SessionCountGroup['50-200'],\n SessionCountGroup['10-50'],\n SessionCountGroup['0-10']\n];\n","export enum FolderEntry {\n FILE = 'file',\n DIRECTORY = 'directory'\n}\n\nexport enum ProjectAction {\n OPEN_FOLDER = 'openFolder',\n OPEN_EDITOR = 'openCodeEditor',\n OPEN_TERMINAL = 'openTerminal'\n}\n\nexport enum MessageSource {\n USER = 'user',\n CC = 'assistant'\n}\n","export enum TimeGroup {\n Today = 'today',\n Yesterday = 'yesterday',\n ThisWeek = 'this-week',\n ThisMonth = 'this-month',\n LastMonth = 'last-month',\n Older = 'older'\n}\n\nexport const TIME_GROUP_ORDER: TimeGroup[] = [\n TimeGroup.Today,\n TimeGroup.Yesterday,\n TimeGroup.ThisWeek,\n TimeGroup.ThisMonth,\n TimeGroup.LastMonth,\n TimeGroup.Older\n];\n\nexport const TIME_GROUP_LABELS: Record<TimeGroup, string> = {\n [TimeGroup.Today]: 'Today',\n [TimeGroup.Yesterday]: 'Yesterday',\n [TimeGroup.ThisWeek]: 'This Week',\n [TimeGroup.ThisMonth]: 'This Month',\n [TimeGroup.LastMonth]: 'Last Month',\n [TimeGroup.Older]: 'Older'\n};\n\nexport const getTimeGroup = (timestamp: number): TimeGroup => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const todayStart = today.getTime();\n\n const yesterday = new Date(todayStart);\n yesterday.setDate(yesterday.getDate() - 1);\n const yesterdayStart = yesterday.getTime();\n\n const weekStart = new Date(todayStart);\n weekStart.setDate(weekStart.getDate() - weekStart.getDay());\n const thisWeekStart = weekStart.getTime();\n\n const monthStart = new Date(today.getFullYear(), today.getMonth(), 1);\n const thisMonthStart = monthStart.getTime();\n\n const lastMonthStart = new Date(today.getFullYear(), today.getMonth() - 1, 1);\n const lastMonthEnd = new Date(today.getFullYear(), today.getMonth(), 0, 23, 59, 59, 999);\n\n if (timestamp >= todayStart) return TimeGroup.Today;\n if (timestamp >= yesterdayStart) return TimeGroup.Yesterday;\n if (timestamp >= thisWeekStart) return TimeGroup.ThisWeek;\n if (timestamp >= thisMonthStart) return TimeGroup.ThisMonth;\n if (timestamp >= lastMonthStart.getTime() && timestamp <= lastMonthEnd.getTime()) {\n return TimeGroup.LastMonth;\n }\n return TimeGroup.Older;\n};\n\nexport function getGroupDate(groupName: TimeGroup) {\n const now = new Date();\n const oneDay = 24 * 60 * 60 * 1000;\n\n let date: Date;\n if (groupName === TimeGroup.Today) {\n date = now;\n } else if (groupName === TimeGroup.Yesterday) {\n date = new Date(now.getTime() - oneDay);\n } else if (groupName === TimeGroup.ThisWeek) {\n const dayOfWeek = now.getDay();\n const daysFromMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n date = new Date(now.getTime() - daysFromMonday * oneDay);\n } else if (groupName === TimeGroup.ThisMonth) {\n date = new Date(now.getFullYear(), now.getMonth(), 1);\n } else if (groupName === TimeGroup.LastMonth) {\n date = new Date(now.getFullYear(), now.getMonth() - 1, 1);\n } else {\n return '';\n }\n\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n return `${year}-${month}-${day}`;\n}\n","enum TokenPercentageGroup {\n '0-25' = '0-25',\n '25-50' = '25-50',\n '50-75' = '50-75',\n '75-100' = '75-100'\n}\n\nexport const getTokenPercentageGroup = (percentage: number | undefined): TokenPercentageGroup => {\n if (!percentage) return TokenPercentageGroup['0-25'];\n if (percentage <= 25) return TokenPercentageGroup['0-25'];\n if (percentage <= 50) return TokenPercentageGroup['25-50'];\n if (percentage <= 75) return TokenPercentageGroup['50-75'];\n return TokenPercentageGroup['75-100'];\n};\n\nexport const TOKEN_PERCENTAGE_GROUP_LABELS: Record<TokenPercentageGroup, string> = {\n [TokenPercentageGroup['0-25']]: '0-25%',\n [TokenPercentageGroup['25-50']]: '25-50%',\n [TokenPercentageGroup['50-75']]: '50-75%',\n [TokenPercentageGroup['75-100']]: '75-100%'\n};\n\nexport const TOKEN_PERCENTAGE_GROUP_ORDER: TokenPercentageGroup[] = [\n TokenPercentageGroup['75-100'],\n TokenPercentageGroup['50-75'],\n TokenPercentageGroup['25-50'],\n TokenPercentageGroup['0-25']\n];\n"]}