{"version":3,"sources":["../src/index.ts","../src/utils/branding.ts","../src/utils/fs.ts","../src/utils/constants.ts"],"sourcesContent":["export * from \"./utils/branding\";\nexport * from \"./utils/fs\";\nexport * from \"./utils/constants\";\n\n","import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n  const banner = figlet.textSync(\"Cursor Kit\", {\n    font: \"ANSI Shadow\",\n    horizontalLayout: \"fitted\",\n  });\n\n  console.log(cursorGradient.multiline(banner));\n  console.log();\n  console.log(\n    pc.dim(\"  \") +\n      pc.bold(pc.cyan(\"✦\")) +\n      pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n  );\n  console.log();\n}\n\nexport function printSuccess(message: string): void {\n  console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n  console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n  console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n  console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n  console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n  console.log(\n    pc.dim(\"  \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n  );\n  console.log();\n}\n\nexport function highlight(text: string): string {\n  return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n  return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n  return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n  return cursorGradient(text);\n}\n\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n  if (!existsSync(path)) {\n    mkdirSync(path, { recursive: true });\n  }\n}\n\nexport function fileExists(path: string): boolean {\n  return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n  return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n  return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n  ensureDir(dirname(path));\n  writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n  if (existsSync(path)) {\n    rmSync(path, { recursive: true });\n  }\n}\n\nexport function copyDir(src: string, dest: string): void {\n  cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n  if (!dirExists(dir)) return [];\n  \n  const files = readdirSync(dir);\n  if (extension) {\n    return files.filter((f) => f.endsWith(extension));\n  }\n  return files;\n}\n\nexport function listDirs(dir: string): string[] {\n  if (!dirExists(dir)) return [];\n  \n  return readdirSync(dir).filter((item) => {\n    const itemPath = join(dir, item);\n    return statSync(itemPath).isDirectory();\n  });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n  return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n  return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n  return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n  return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n  return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n  const pkgPath = join(cwd, \"package.json\");\n  if (!fileExists(pkgPath)) return null;\n  \n  try {\n    return JSON.parse(readFile(pkgPath));\n  } catch {\n    return null;\n  }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n  if (!dirExists(dir)) return [];\n  return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n  if (!dirExists(dir)) return [];\n  return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n  if (!dirExists(dir)) return files;\n  return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n  if (!dirExists(dir)) return dirs;\n  return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n\nexport function getGitHubDir(cwd: string = process.cwd()): string {\n  return join(cwd, \".github\");\n}\n\nexport function getCopilotInstructionsPath(cwd: string = process.cwd()): string {\n  return join(getGitHubDir(cwd), \"copilot-instructions.md\");\n}\n\nexport function getCopilotInstructionsDir(cwd: string = process.cwd()): string {\n  return join(getGitHubDir(cwd), \"copilot-instructions\");\n}\n\nexport function getCopilotCommandsDir(cwd: string = process.cwd()): string {\n  return join(getCopilotInstructionsDir(cwd), \"commands\");\n}\n\nexport function getCopilotRulesDir(cwd: string = process.cwd()): string {\n  return join(getCopilotInstructionsDir(cwd), \"rules\");\n}\n\nexport function getCopilotSkillsDir(cwd: string = process.cwd()): string {\n  return join(getCopilotInstructionsDir(cwd), \"skills\");\n}\n\nexport function deleteFile(path: string): void {\n  if (fileExists(path)) {\n    rmSync(path);\n  }\n}\n\n// Google AntiGravity directory utilities\nexport function getAgentDir(cwd: string = process.cwd()): string {\n  return join(cwd, \".agent\");\n}\n\nexport function getAgentRulesDir(cwd: string = process.cwd()): string {\n  return join(getAgentDir(cwd), \"rules\");\n}\n\nexport function getAgentWorkflowsDir(cwd: string = process.cwd()): string {\n  return join(getAgentDir(cwd), \"workflows\");\n}\n\nexport function getAgentSkillsDir(cwd: string = process.cwd()): string {\n  return join(getAgentDir(cwd), \"skills\");\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n  commands: \"templates/commands\",\n  rules: \"templates/rules\",\n  skills: \"templates/skills\",\n} as const;\n"],"mappings":"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","names":["gradient","figlet","pc"]}