UNPKG

better-claude-code

Version:

CLI auxiliary tools for Claude Code

185 lines (179 loc) 7.29 kB
// src/constants.ts var APP_NAME = "Better Claude Code"; var APP_CLI_NAME = "bcc"; var APP_NPM_PACKAGE_NAME = "better-claude-code"; var APP_DESCRIPTION = "CLI auxiliary tools for Claude Code"; var FRONTEND_PORT = 5001; var BACKEND_PORT = 5e3; var API_PREFIX = "/api"; var SWAGGER_UI_PATH = "/swagger"; var OPENAPI_SPEC_PATH = "/openapi.json"; var createLocalHostLink = (port, sufix) => `http://localhost:${port}${sufix ?? ""}`; // src/message-patterns.ts var MESSAGE_PATTERNS = { FILE_OR_FOLDER_AT: /(^|\s)@([a-zA-Z.][\w\-.]*(?:\/[\w\-./]+)*(?:#L\d+(?:-\d+)?)?)/g, FILE_OR_FOLDER_SLASH: /\/([\w\-./]+)/g, TOOL_WITH_PATH: /\[Tool: ([^\]]+)\] (\/[^\s<>,]+)/g, PATH_PROPERTY: /path: (\/[^\s<>,]+)/g, PATTERN_PROPERTY: /pattern: "([^"]+)"/g, TOOL_WITH_QUOTE: /\[Tool: ([^\]]+)\] "([^"]+)"/g, IMAGE_TAG: /\[Image #(\d+)\]/g, ULTRATHINK: /ultrathink/gi, URL: /https?:\/\/[^\s<>,]+/g, FLAG: /(^|\s)(--[a-z]{2,})/g, COMMAND_FORMAT: /<command-name>\/?([^<]+)<\/command-name>/, COMMAND_ARGS: /<command-args>([^<]+)<\/command-args>/, COMMAND_WORDS: /^(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, SLASH_COMMAND: /^\/[\w-]+/ }; function extractPathsFromText(text) { const paths = /* @__PURE__ */ new Set(); const slashMatches = text.match(MESSAGE_PATTERNS.FILE_OR_FOLDER_SLASH); if (slashMatches) { for (const match of slashMatches) { paths.add(match); } } const atRegex = new RegExp(MESSAGE_PATTERNS.FILE_OR_FOLDER_AT.source, "g"); const atMatches = text.matchAll(atRegex); for (const match of atMatches) { const cleanMatch = match[0].trim().substring(1); paths.add(cleanMatch); } return Array.from(paths); } // src/session-count-group.ts var getSessionCountGroup = (count) => { if (count <= 10) return "0-10" /* 0-10 */; if (count <= 50) return "10-50" /* 10-50 */; if (count <= 200) return "50-200" /* 50-200 */; if (count <= 500) return "200-500" /* 200-500 */; return "500+" /* 500+ */; }; var SESSION_COUNT_GROUP_LABELS = { "0-10": "0-10 sessions", "10-50": "10-50 sessions", "50-200": "50-200 sessions", "200-500": "200-500 sessions", "500+": "500+ sessions" }; var SESSION_COUNT_GROUP_ORDER = [ "500+" /* 500+ */, "200-500" /* 200-500 */, "50-200" /* 50-200 */, "10-50" /* 10-50 */, "0-10" /* 0-10 */ ]; // src/shared-enums.ts var FolderEntry = /* @__PURE__ */ ((FolderEntry2) => { FolderEntry2["FILE"] = "file"; FolderEntry2["DIRECTORY"] = "directory"; return FolderEntry2; })(FolderEntry || {}); var ProjectAction = /* @__PURE__ */ ((ProjectAction2) => { ProjectAction2["OPEN_FOLDER"] = "openFolder"; ProjectAction2["OPEN_EDITOR"] = "openCodeEditor"; ProjectAction2["OPEN_TERMINAL"] = "openTerminal"; return ProjectAction2; })(ProjectAction || {}); var MessageSource = /* @__PURE__ */ ((MessageSource2) => { MessageSource2["USER"] = "user"; MessageSource2["CC"] = "assistant"; return MessageSource2; })(MessageSource || {}); // src/time-group.ts var TimeGroup = /* @__PURE__ */ ((TimeGroup2) => { TimeGroup2["Today"] = "today"; TimeGroup2["Yesterday"] = "yesterday"; TimeGroup2["ThisWeek"] = "this-week"; TimeGroup2["ThisMonth"] = "this-month"; TimeGroup2["LastMonth"] = "last-month"; TimeGroup2["Older"] = "older"; return TimeGroup2; })(TimeGroup || {}); var TIME_GROUP_ORDER = [ "today" /* Today */, "yesterday" /* Yesterday */, "this-week" /* ThisWeek */, "this-month" /* ThisMonth */, "last-month" /* LastMonth */, "older" /* Older */ ]; var TIME_GROUP_LABELS = { ["today" /* Today */]: "Today", ["yesterday" /* Yesterday */]: "Yesterday", ["this-week" /* ThisWeek */]: "This Week", ["this-month" /* ThisMonth */]: "This Month", ["last-month" /* LastMonth */]: "Last Month", ["older" /* Older */]: "Older" }; var getTimeGroup = (timestamp) => { const today = /* @__PURE__ */ new Date(); today.setHours(0, 0, 0, 0); const todayStart = today.getTime(); const yesterday = new Date(todayStart); yesterday.setDate(yesterday.getDate() - 1); const yesterdayStart = yesterday.getTime(); const weekStart = new Date(todayStart); weekStart.setDate(weekStart.getDate() - weekStart.getDay()); const thisWeekStart = weekStart.getTime(); const monthStart = new Date(today.getFullYear(), today.getMonth(), 1); const thisMonthStart = monthStart.getTime(); const lastMonthStart = new Date(today.getFullYear(), today.getMonth() - 1, 1); const lastMonthEnd = new Date(today.getFullYear(), today.getMonth(), 0, 23, 59, 59, 999); if (timestamp >= todayStart) return "today" /* Today */; if (timestamp >= yesterdayStart) return "yesterday" /* Yesterday */; if (timestamp >= thisWeekStart) return "this-week" /* ThisWeek */; if (timestamp >= thisMonthStart) return "this-month" /* ThisMonth */; if (timestamp >= lastMonthStart.getTime() && timestamp <= lastMonthEnd.getTime()) { return "last-month" /* LastMonth */; } return "older" /* Older */; }; function getGroupDate(groupName) { const now = /* @__PURE__ */ new Date(); const oneDay = 24 * 60 * 60 * 1e3; let date; if (groupName === "today" /* Today */) { date = now; } else if (groupName === "yesterday" /* Yesterday */) { date = new Date(now.getTime() - oneDay); } else if (groupName === "this-week" /* ThisWeek */) { const dayOfWeek = now.getDay(); const daysFromMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1; date = new Date(now.getTime() - daysFromMonday * oneDay); } else if (groupName === "this-month" /* ThisMonth */) { date = new Date(now.getFullYear(), now.getMonth(), 1); } else if (groupName === "last-month" /* LastMonth */) { date = new Date(now.getFullYear(), now.getMonth() - 1, 1); } else { return ""; } const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); return `${year}-${month}-${day}`; } // src/token-percentage-group.ts var getTokenPercentageGroup = (percentage) => { if (!percentage) return "0-25" /* 0-25 */; if (percentage <= 25) return "0-25" /* 0-25 */; if (percentage <= 50) return "25-50" /* 25-50 */; if (percentage <= 75) return "50-75" /* 50-75 */; return "75-100" /* 75-100 */; }; var TOKEN_PERCENTAGE_GROUP_LABELS = { ["0-25" /* 0-25 */]: "0-25%", ["25-50" /* 25-50 */]: "25-50%", ["50-75" /* 50-75 */]: "50-75%", ["75-100" /* 75-100 */]: "75-100%" }; var TOKEN_PERCENTAGE_GROUP_ORDER = [ "75-100" /* 75-100 */, "50-75" /* 50-75 */, "25-50" /* 25-50 */, "0-25" /* 0-25 */ ]; export { API_PREFIX, APP_CLI_NAME, APP_DESCRIPTION, APP_NAME, APP_NPM_PACKAGE_NAME, BACKEND_PORT, FRONTEND_PORT, FolderEntry, MESSAGE_PATTERNS, MessageSource, OPENAPI_SPEC_PATH, ProjectAction, SESSION_COUNT_GROUP_LABELS, SESSION_COUNT_GROUP_ORDER, SWAGGER_UI_PATH, TIME_GROUP_LABELS, TIME_GROUP_ORDER, TOKEN_PERCENTAGE_GROUP_LABELS, TOKEN_PERCENTAGE_GROUP_ORDER, TimeGroup, createLocalHostLink, extractPathsFromText, getGroupDate, getSessionCountGroup, getTimeGroup, getTokenPercentageGroup }; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map