🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@cometchat/skills-cli

Package Overview
Dependencies
Maintainers
12
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cometchat/skills-cli - npm Package Compare versions

Comparing version
2.0.4
to
2.1.0
+119
dist/registry/schemas/config.schema.json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://cometchat.com/schemas/config.json",
"title": "CometChat Project Config",
"description": "Persistent project-level configuration for CometChat integrations. Written by the wizard/CLI, read by skills and commands.",
"type": "object",
"additionalProperties": false,
"required": ["version"],
"properties": {
"$schema": {
"type": "string",
"description": "JSON Schema URI for editor autocomplete."
},
"version": {
"type": "number",
"const": 1,
"description": "Schema version. Always 1."
},
"appId": {
"type": "string",
"description": "CometChat App ID. Not a secret — safe to commit."
},
"region": {
"type": "string",
"enum": ["us", "eu", "in"],
"description": "CometChat data region."
},
"framework": {
"type": "string",
"enum": ["reactjs", "nextjs", "react-router", "astro"],
"description": "Detected or user-overridden framework."
},
"router": {
"type": "string",
"enum": ["app", "pages"],
"description": "Next.js router variant. Only applicable when framework is nextjs."
},
"envPrefix": {
"type": "string",
"enum": ["VITE_", "NEXT_PUBLIC_", "PUBLIC_"],
"description": "Environment variable prefix for client-side env vars."
},
"typescript": {
"type": "boolean",
"description": "Whether the project uses TypeScript."
},
"intent": {
"type": "string",
"enum": ["marketplace", "saas", "social", "messaging", "support", "exploring"],
"description": "What the user is building — drives the recommended integration shape."
},
"experience": {
"type": "number",
"enum": [1, 2, 3],
"description": "CometChat experience level (1 = multi-conversation, 2 = single-thread, 3 = full-messenger)."
},
"placement": {
"type": "string",
"enum": ["route", "modal", "drawer", "widget", "embed", "demo"],
"description": "Where the chat UI is placed in the app."
},
"placementPath": {
"type": "string",
"description": "Route path for the chat page (e.g. \"/messages\")."
},
"authMode": {
"type": "string",
"enum": ["authKey", "tokenEndpoint"],
"description": "Authentication mode — dev (authKey) or production (tokenEndpoint)."
},
"tokenEndpointPath": {
"type": "string",
"description": "Path to the server-side token endpoint (e.g. \"app/api/cometchat-token/route.ts\")."
},
"theme": {
"type": "string",
"description": "Theme preset name (slack, whatsapp, discord, etc.) or \"custom\"."
},
"darkMode": {
"type": "boolean",
"description": "Whether dark mode is enabled."
},
"paths": {
"type": "object",
"description": "Paths to CometChat files in this project.",
"additionalProperties": false,
"properties": {
"provider": {
"type": "string",
"description": "Path to the CometChat provider component (e.g. \"src/providers/CometChatProvider.tsx\")."
},
"chatPage": {
"type": "string",
"description": "Path to the main chat page (e.g. \"app/messages/page.tsx\")."
},
"chatDrawer": {
"type": "string",
"description": "Path to the chat drawer component."
},
"chatModal": {
"type": "string",
"description": "Path to the chat modal component."
},
"cssImport": {
"type": "string",
"description": "Path where css-variables.css was imported."
}
}
},
"features": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Features applied on top of the base integration (e.g. [\"instant-messaging\", \"media-sharing\"])."
}
}
}
{
"$schema": "../../../schemas/template.schema.json",
"version": "1.0.0",
"experience_id": 1,
"framework": "reactjs-dedicated-route",
"sdk_compatibility": ">=6.0.0 <7.0.0",
"default_placement": "dedicated-route",
"deps": [
{ "name": "@cometchat/chat-uikit-react", "version": "^6" },
{ "name": "@cometchat/chat-sdk-javascript", "version": "^4" }
],
"env_vars": [
{ "name": "{{ENV_PREFIX}}COMETCHAT_APP_ID", "required": true, "description": "CometChat App ID from your dashboard" },
{ "name": "{{ENV_PREFIX}}COMETCHAT_REGION", "required": true, "description": "CometChat region (us, eu, in, etc.)" },
{ "name": "{{ENV_PREFIX}}COMETCHAT_AUTH_KEY", "required": true, "secret": true, "description": "CometChat Auth Key (development only — use auth tokens in production)" }
],
"files": [
{
"path": "src/cometchat/CometChatSelector.tsx",
"action": "create",
"template_ref": "CometChatSelector.tsx.tpl",
"owned": true
},
{
"path": "src/cometchat/CometChatMessenger.tsx",
"action": "create",
"template_ref": "CometChatMessenger.tsx.tpl",
"owned": true
},
{
"path": "src/cometchat/CometChatMessenger.css",
"action": "create",
"template_ref": "CometChatMessenger.css.tpl",
"owned": true
},
{
"path": "src/pages/ChatPage.tsx",
"action": "create",
"template_ref": "ChatPage.tsx.tpl",
"owned": true,
"is_entry": true
},
{
"path": "src/App.tsx",
"action": "patch",
"patch_mode": "prepend",
"patch_content": "import ChatPage from \"./pages/ChatPage\";\n",
"skip_if_exists": "./pages/ChatPage",
"embed_skip": true
},
{
"path": "src/App.tsx",
"action": "patch",
"patch_mode": "insert-before",
"anchor": "</Routes>",
"patch_content": " <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} />\n ",
"skip_if_exists": "element={<ChatPage />}",
"embed_skip": true
},
{
"path": "src/index.css",
"action": "patch",
"patch_mode": "prepend",
"patch_content": "@import url(\"@cometchat/chat-uikit-react/css-variables.css\");\n",
"skip_if_exists": "@cometchat/chat-uikit-react/css-variables.css"
}
],
"verify_rules": [
"css_variables_imported_once",
"init_before_login",
"no_auth_key_in_source",
"render_gated_on_login_resolve",
"error_ui_visible_on_failure"
],
"next_steps": [
"Run `npm run dev` to start the dev server",
"Visit http://localhost:5173{{PLACEMENT_PATH}}",
"Click a conversation in the left panel to open it",
"If the route didn't wire up automatically (your App.tsx layout is non-standard), add: <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} /> inside your existing <Routes> block and import ChatPage from ./pages/ChatPage"
]
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

{
"$schema": "../../../schemas/template.schema.json",
"version": "1.0.0",
"experience_id": 2,
"framework": "reactjs-dedicated-route",
"sdk_compatibility": ">=6.0.0 <7.0.0",
"default_placement": "dedicated-route",
"deps": [
{ "name": "@cometchat/chat-uikit-react", "version": "^6" },
{ "name": "@cometchat/chat-sdk-javascript", "version": "^4" }
],
"env_vars": [
{ "name": "{{ENV_PREFIX}}COMETCHAT_APP_ID", "required": true, "description": "CometChat App ID from your dashboard" },
{ "name": "{{ENV_PREFIX}}COMETCHAT_REGION", "required": true, "description": "CometChat region (us, eu, in, etc.)" },
{ "name": "{{ENV_PREFIX}}COMETCHAT_AUTH_KEY", "required": true, "secret": true, "description": "CometChat Auth Key (development only — use auth tokens in production)" }
],
"files": [
{
"path": "src/cometchat/CometChatMessenger.tsx",
"action": "create",
"template_ref": "CometChatMessenger.tsx.tpl",
"owned": true
},
{
"path": "src/cometchat/CometChatMessenger.css",
"action": "create",
"template_ref": "CometChatMessenger.css.tpl",
"owned": true
},
{
"path": "src/pages/ChatPage.tsx",
"action": "create",
"template_ref": "ChatPage.tsx.tpl",
"owned": true,
"is_entry": true
},
{
"path": "src/App.tsx",
"action": "patch",
"patch_mode": "prepend",
"patch_content": "import ChatPage from \"./pages/ChatPage\";\n",
"skip_if_exists": "./pages/ChatPage",
"embed_skip": true
},
{
"path": "src/App.tsx",
"action": "patch",
"patch_mode": "insert-before",
"anchor": "</Routes>",
"patch_content": " <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} />\n ",
"skip_if_exists": "element={<ChatPage />}",
"embed_skip": true
},
{
"path": "src/index.css",
"action": "patch",
"patch_mode": "prepend",
"patch_content": "@import url(\"@cometchat/chat-uikit-react/css-variables.css\");\n",
"skip_if_exists": "@cometchat/chat-uikit-react/css-variables.css"
}
],
"verify_rules": [
"css_variables_imported_once",
"init_before_login",
"no_auth_key_in_source",
"render_gated_on_login_resolve",
"error_ui_visible_on_failure"
],
"next_steps": [
"Run `npm run dev` to start the dev server",
"Visit http://localhost:5173{{PLACEMENT_PATH}} — you'll see a one-to-one chat with `{{CHAT_UID}}`",
"To change the chat partner, edit `CHAT_UID` in `src/cometchat/CometChatMessenger.tsx`",
"If the route didn't wire up automatically (your App.tsx layout is non-standard), add: <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} /> inside your existing <Routes> block and import ChatPage from ./pages/ChatPage"
]
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

{
"$schema": "../../../schemas/template.schema.json",
"version": "1.0.0",
"experience_id": 3,
"framework": "reactjs-dedicated-route",
"sdk_compatibility": ">=6.0.0 <7.0.0",
"default_placement": "dedicated-route",
"deps": [
{ "name": "@cometchat/chat-uikit-react", "version": "^6" },
{ "name": "@cometchat/chat-sdk-javascript", "version": "^4" }
],
"env_vars": [
{ "name": "{{ENV_PREFIX}}COMETCHAT_APP_ID", "required": true, "description": "CometChat App ID from your dashboard" },
{ "name": "{{ENV_PREFIX}}COMETCHAT_REGION", "required": true, "description": "CometChat region (us, eu, in, etc.)" },
{ "name": "{{ENV_PREFIX}}COMETCHAT_AUTH_KEY", "required": true, "secret": true, "description": "CometChat Auth Key (development only — use auth tokens in production)" }
],
"files": [
{
"path": "src/cometchat/CometChatTabs.tsx",
"action": "create",
"template_ref": "CometChatTabs.tsx.tpl",
"owned": true
},
{
"path": "src/cometchat/CometChatTabs.css",
"action": "create",
"template_ref": "CometChatTabs.css.tpl",
"owned": true
},
{
"path": "src/cometchat/CometChatMessenger.tsx",
"action": "create",
"template_ref": "CometChatMessenger.tsx.tpl",
"owned": true
},
{
"path": "src/cometchat/CometChatMessenger.css",
"action": "create",
"template_ref": "CometChatMessenger.css.tpl",
"owned": true
},
{
"path": "src/pages/ChatPage.tsx",
"action": "create",
"template_ref": "ChatPage.tsx.tpl",
"owned": true,
"is_entry": true
},
{
"path": "src/App.tsx",
"action": "patch",
"patch_mode": "prepend",
"patch_content": "import ChatPage from \"./pages/ChatPage\";\n",
"skip_if_exists": "./pages/ChatPage",
"embed_skip": true
},
{
"path": "src/App.tsx",
"action": "patch",
"patch_mode": "insert-before",
"anchor": "</Routes>",
"patch_content": " <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} />\n ",
"skip_if_exists": "element={<ChatPage />}",
"embed_skip": true
},
{
"path": "src/index.css",
"action": "patch",
"patch_mode": "prepend",
"patch_content": "@import url(\"@cometchat/chat-uikit-react/css-variables.css\");\n",
"skip_if_exists": "@cometchat/chat-uikit-react/css-variables.css"
}
],
"verify_rules": [
"css_variables_imported_once",
"init_before_login",
"no_user_and_group_same_component",
"no_auth_key_in_source",
"render_gated_on_login_resolve",
"error_ui_visible_on_failure"
],
"next_steps": [
"Run `npm run dev` to start the dev server",
"Visit http://localhost:5173{{PLACEMENT_PATH}}",
"The left panel shows the tab bar (Chats / Calls / Users / Groups). Click any tab to switch.",
"Click a conversation, user, or group to open the message thread on the right.",
"If the route didn't wire up automatically (your App.tsx layout is non-standard), add: <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} /> inside your existing <Routes> block and import ChatPage from ./pages/ChatPage"
]
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

const DICTIONARY = {
ERR_EMAIL_ALREADY_EXISTS: {
humanMessage: "An account with this email already exists.",
suggestion: "Go back and pick 'Sign in' instead, or use a different email.",
retryable: false
},
ERR_INVALID_VERIFICATION_CODE: {
humanMessage: "That verification code is invalid or expired.",
suggestion: "Check your inbox for the latest email and paste the full code or link again. Codes typically expire after 15 minutes.",
retryable: true
},
AUTH_ERR_INVALID_CREDENTIALS: {
humanMessage: "Email or password is incorrect.",
suggestion: "Try again, or use 'Create a new account' if you don't have one.",
retryable: true
},
AUTH_FAILED: {
humanMessage: "Authentication failed.",
suggestion: "Your session may have expired. Sign in again.",
retryable: true
},
OTP_REQUIRED: {
humanMessage: "Two-factor authentication is enabled on this account.",
suggestion: "Enter the verification code from your email when prompted.",
retryable: true
},
AUTH_ERR_TOKEN_BLACKLISTED: {
humanMessage: "Your session has been revoked.",
suggestion: "Run `cometchat auth login` again to re-authenticate.",
retryable: false
},
ERR_NO_INTEGRATION: {
humanMessage: "CometChat isn't installed in this project yet.",
suggestion: "Run `cometchat apply` first (or restart the wizard from the beginning) to create the base integration, then come back to this step.",
retryable: false
},
ERR_UNSUPPORTED_FRAMEWORK: {
humanMessage: "This step isn't available for your framework.",
suggestion: "Some features (server-side user management, production auth) need a framework with a built-in server (Next.js, Astro, React Router v7). Skip this step or switch frameworks to enable it.",
retryable: false
},
ERR_ALREADY_APPLIED: {
humanMessage: "This is already set up in your project.",
suggestion: "Delete the existing files first if you want to re-create them, or skip this step.",
retryable: false
},
ERR_APPLY_UNSAFE_OVERWRITE: {
humanMessage: "One or more files already have your code in them.",
suggestion: "Retry with --force-overwrite to replace them, or edit the files manually first. Use --placement embed:<path> to write the chat entry file somewhere else entirely.",
retryable: true,
retryArgs: ["--force-overwrite"],
retryArgsLabel: "Overwrite and retry"
},
ERR_APPLY_ALREADY_APPLIED: {
humanMessage: "CometChat is already integrated in this project.",
suggestion: "If you want to re-apply (e.g., switching experience), retry with --force.",
retryable: true,
retryArgs: ["--force"],
retryArgsLabel: "Re-apply and override"
},
ERR_APP_CREATION_FAILED_MAX_LIMIT: {
humanMessage: "You've hit the free-tier app limit on this account.",
suggestion: "Delete an unused app from app.cometchat.com, then retry. Deleted apps count toward the limit for 30 days on some plans.",
retryable: false
},
ERR_APP_CREATION_FAILED: {
humanMessage: "The server couldn't create your app.",
suggestion: "Retry with a different name, or try a different region. If this keeps happening, contact support@cometchat.com.",
retryable: true
},
ERR_APP_NOT_FOUND: {
humanMessage: "The selected app doesn't exist on your account.",
suggestion: "Pick a different app from the list, or create a new one.",
retryable: false
},
ERR_ACCESS_DENIED: {
humanMessage: "You don't have permission to perform this action.",
suggestion: "If this is a team app, ask the owner to grant you access.",
retryable: false
},
ERR_BAD_REQUEST: {
humanMessage: "The server rejected the request as invalid.",
suggestion: "This usually means a field didn't pass validation. Double-check your inputs and retry.",
retryable: true
},
ERR_TOO_MANY_DIRECT_REQUESTS: {
humanMessage: "Too many requests \u2014 you've been rate-limited.",
suggestion: "Wait a minute and try again.",
retryable: true
},
NETWORK: {
humanMessage: "Couldn't reach the CometChat API.",
suggestion: "Check your internet connection. If you're behind a corporate proxy, make sure it allows traffic to apimgmt.cc-cluster-2.io.",
retryable: true
},
PARSE: {
humanMessage: "The CLI returned an unexpected response.",
suggestion: "This is likely a CLI bug. Re-run the last step; if it repeats, file an issue with the `--verbose` output.",
retryable: true
},
ERR_TOO_LARGE_FILE: {
humanMessage: "The file you tried to upload is too big.",
suggestion: "Reduce the file size or check your app's upload limits in the dashboard.",
retryable: true
},
ERR_MISSING_CUSTOMIZE_KEY: {
humanMessage: "No Claude API key found. Set ANTHROPIC_API_KEY to enable the `customize` command. A CometChat-hosted gateway is coming.",
suggestion: "Export ANTHROPIC_API_KEY in your shell (or a .env file) with a key from https://console.anthropic.com/, then re-run the command.",
retryable: false
},
ERR_CUSTOMIZE_NETWORK: {
humanMessage: "Couldn't reach the LLM endpoint.",
suggestion: "Check your connection and API key.",
retryable: true
},
ERR_CUSTOMIZE_API: {
humanMessage: "The LLM API returned an error.",
suggestion: "Re-check your API key and try again. If the error persists, the upstream provider may be degraded.",
retryable: true
},
ERR_CUSTOMIZE_UNSAFE_PATH: {
humanMessage: "The AI tried to modify a file it shouldn't.",
suggestion: "This is a safety check. Re-run with a more specific instruction.",
retryable: true
},
ERR_CUSTOMIZE_PATCH_TOO_LARGE: {
humanMessage: "The proposed change is too large to apply automatically.",
suggestion: "Break the request into smaller pieces.",
retryable: true
},
ERR_CUSTOMIZE_INVALID_ACTION: {
humanMessage: "The AI proposed an inconsistent change (e.g., create-over-existing).",
suggestion: "Re-run the command; the model may recover on retry.",
retryable: true
},
ERR_CUSTOMIZE_LOW_CONFIDENCE: {
humanMessage: "The AI isn't confident about this change.",
suggestion: "Review the plan and diff carefully before applying, or rephrase the instruction with more detail.",
retryable: true
}
};
function parseErrorCode(raw) {
if (!raw) return null;
const trimmed = raw.trim();
if (trimmed.length === 0) return null;
const apiMatch = trimmed.match(/^API_ERROR:\s*([A-Z0-9_]+)/);
if (apiMatch && apiMatch[1]) return apiMatch[1];
const bareMatch = trimmed.match(/^([A-Z][A-Z0-9_]*)(?:\s|$)/);
if (bareMatch && bareMatch[1] && bareMatch[1] === bareMatch[1].toUpperCase()) {
return bareMatch[1];
}
return null;
}
function explainError(input) {
const resolvedCode = (input.code && input.code.length > 0 ? input.code : null) ?? parseErrorCode(input.rawError);
if (resolvedCode && DICTIONARY[resolvedCode]) {
const entry = DICTIONARY[resolvedCode];
return { code: resolvedCode, ...entry };
}
return {
code: resolvedCode ?? "",
humanMessage: input.rawError,
suggestion: "",
retryable: true
};
}
export {
explainError,
parseErrorCode
};
const ROLES = [
{ key: "frontend", label: "Frontend Developer" },
{ key: "backend", label: "Backend Developer" },
{ key: "fullstack_engineer", label: "Fullstack Developer" },
{ key: "startup_founder", label: "Founder" },
{ key: "product_leader/manager", label: "Product Manager" },
{ key: "engineering_leader/manager", label: "Engineering Manager" },
{ key: "others", label: "Other" }
];
const ROLE_KEYS = ROLES.map((r) => r.key);
const INDUSTRIES = [
{ key: "online_marketplaces", label: "Online Marketplaces" },
{ key: "healthcare", label: "Healthcare" },
{ key: "dating", label: "Dating" },
{ key: "events_and_streaming", label: "Events & Streaming" },
{ key: "online_education", label: "Online Education" },
{ key: "community_and_social", label: "Community & Social" },
{ key: "saas_businesses", label: "SaaS & Multi-Tenant" },
{ key: "sports_and_gaming", label: "Sports & Gaming" },
{ key: "team_comms_and_workflows", label: "Team Comms & Workflows" },
{ key: "on_demand_services", label: "On-Demand Services" },
{ key: "other", label: "Other" }
];
const INDUSTRY_KEYS = INDUSTRIES.map((i) => i.key);
export {
INDUSTRIES,
INDUSTRY_KEYS,
ROLES,
ROLE_KEYS
};
+12
-6

@@ -1,7 +0,13 @@

#!/usr/bin/env node
// Production binary entry — calls into the bundled dist/index.js
#!/usr/bin/env -S node --
// Production binary entry — calls into the bundled dist/index.js.
// The `-S node --` shebang shields user args from node flag parsing — without
// it, invocations like `cometchat provision use --env-file .env` would make
// node v20+ silently consume `--env-file` as its own flag.
import { run } from "../dist/index.js";
run(process.argv.slice(2)).catch((err) => {
console.error(err?.stack ?? err);
process.exit(1);
});
run(process.argv.slice(2)).then(
(code) => process.exit(code ?? 0),
(err) => {
console.error(err?.stack ?? err);
process.exit(1);
},
);

@@ -41,3 +41,4 @@ {

"template_ref": "main.tsx.tpl",
"owned": true
"owned": true,
"embed_skip": true
},

@@ -48,3 +49,4 @@ {

"template_ref": "App.tsx.tpl",
"owned": true
"owned": true,
"is_entry": true
},

@@ -55,3 +57,4 @@ {

"template_ref": "App.css.tpl",
"owned": true
"owned": true,
"move_with_entry": true
},

@@ -58,0 +61,0 @@ {

@@ -41,3 +41,4 @@ {

"template_ref": "main.tsx.tpl",
"owned": true
"owned": true,
"embed_skip": true
},

@@ -48,3 +49,4 @@ {

"template_ref": "App.tsx.tpl",
"owned": true
"owned": true,
"is_entry": true
},

@@ -55,3 +57,4 @@ {

"template_ref": "App.css.tpl",
"owned": true
"owned": true,
"move_with_entry": true
},

@@ -58,0 +61,0 @@ {

{
"name": "@cometchat/skills-cli",
"version": "2.0.4",
"description": "CLI for the CometChat skills v2 architecture — detect, view, apply, verify CometChat integrations in React projects.",
"version": "2.1.0",
"description": "CLI for the CometChat skills v3 architecture — auth, provision, detect, apply, verify CometChat integrations in React/Next.js/React-Router/Astro projects.",
"type": "module",

@@ -10,2 +10,9 @@ "license": "MIT",

},
"exports": {
".": "./dist/index.js",
"./bin/cometchat.mjs": "./bin/cometchat.mjs",
"./onboarding-options": "./dist/utils/onboarding-options.js",
"./error-dictionary": "./dist/utils/error-dictionary.js",
"./package.json": "./package.json"
},
"files": [

@@ -20,3 +27,3 @@ "bin/",

"test:watch": "node --test --watch --import tsx test/*.test.ts",
"build": "rm -rf dist && esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --packages=external && node -e \"require('node:fs').cpSync(require('node:path').resolve('../registry/v6'),require('node:path').resolve('dist/registry/v6'),{recursive:true});require('node:fs').cpSync(require('node:path').resolve('../registry/schemas'),require('node:path').resolve('dist/registry/schemas'),{recursive:true});console.log(' bundled registry → dist/registry/');\"",
"build": "rm -rf dist && esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --packages=external && esbuild src/utils/onboarding-options.ts --platform=node --format=esm --outfile=dist/utils/onboarding-options.js && esbuild src/utils/error-dictionary.ts --platform=node --format=esm --outfile=dist/utils/error-dictionary.js && node -e \"require('node:fs').cpSync(require('node:path').resolve('../registry/v6'),require('node:path').resolve('dist/registry/v6'),{recursive:true});require('node:fs').cpSync(require('node:path').resolve('../registry/schemas'),require('node:path').resolve('dist/registry/schemas'),{recursive:true});console.log(' bundled registry → dist/registry/');\"",
"typecheck": "tsc --noEmit",

@@ -30,3 +37,3 @@ "prepublishOnly": "npm run typecheck && npm test && npm run build"

"@types/node": "^20.0.0",
"esbuild": "^0.24.0",
"esbuild": "^0.25.0",
"tsx": "^4.19.0",

@@ -33,0 +40,0 @@ "typescript": "^5.6.0"

Sorry, the diff of this file is too big to display