Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@termly-dev/cli-dev

Package Overview
Dependencies
Maintainers
1
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@termly-dev/cli-dev - npm Package Compare versions

Package version was removed
This package version has been unpublished, mostly likely due to security reasons
Comparing version
1.1.10
to
1.2.2
+12
-1
lib/ai-tools/detector.js

@@ -23,4 +23,9 @@ const { getAllTools, getToolVersion } = require('./registry');

// On Windows, checkInstalled may return full path instead of true
// Use this full path as command if available (for .cmd/.bat files)
const toolCommand = (typeof isInstalled === 'string') ? isInstalled : tool.command;
installedTools.push({
...tool,
command: toolCommand,
version,

@@ -30,3 +35,3 @@ installed: true

logger.debug(`Found: ${tool.displayName} v${version}`);
logger.debug(`Found: ${tool.displayName} v${version} (command: ${toolCommand})`);
}

@@ -57,2 +62,7 @@ } catch (err) {

const version = await getToolVersion(tool);
// On Windows, checkInstalled may return full path instead of true
// Use this full path as command if available (for .cmd/.bat files)
const toolCommand = (typeof isInstalled === 'string') ? isInstalled : tool.command;
return {

@@ -62,2 +72,3 @@ installed: true,

...tool,
command: toolCommand,
version

@@ -64,0 +75,0 @@ }

@@ -172,2 +172,4 @@ const { exec } = require('child_process');

// Check if command exists
// On Windows, returns full path to command for .cmd/.bat files
// On Unix, returns true/false
async function commandExists(command) {

@@ -177,3 +179,13 @@ try {

const checkCommand = isWindows ? `where ${command}` : `command -v ${command}`;
await execAsync(checkCommand);
const { stdout } = await execAsync(checkCommand);
// On Windows, return first line (full path) if it's a .cmd or .bat file
if (isWindows) {
const firstLine = stdout.trim().split('\n')[0].trim();
// Only return path for .cmd/.bat files - these need full paths on Windows
if (firstLine.toLowerCase().endsWith('.cmd') || firstLine.toLowerCase().endsWith('.bat')) {
return firstLine;
}
}
return true;

@@ -180,0 +192,0 @@ } catch {

+0
-32

@@ -291,20 +291,2 @@ const WebSocket = require('ws');

// Handle input from mobile
// Helper: escape special characters for logging
escapeSpecialChars(data) {
return data
.replace(/\r/g, '\\r')
.replace(/\n/g, '\\n')
.replace(/\t/g, '\\t')
.replace(/\x1b/g, '\\x1b')
.replace(/\x00/g, '\\x00');
}
// Helper: convert to hex dump
toHexDump(data, maxLength = 200) {
const bytes = Buffer.from(data, 'utf8');
const hex = bytes.toString('hex').match(/.{1,2}/g)?.join(' ') || '';
const truncated = hex.length > maxLength ? hex.substring(0, maxLength) + '...' : hex;
return truncated;
}
handleInput(message) {

@@ -319,9 +301,2 @@ if (!this.aesKey) {

// Log decrypted input for debugging
if (process.env.DEBUG === '1' || process.argv.includes('--debug')) {
logger.debug(`WS Input received (${decrypted.length} bytes):`);
logger.debug(` Text: ${this.escapeSpecialChars(decrypted.substring(0, 100))}`);
logger.debug(` Hex: ${this.toHexDump(decrypted)}`);
}
if (this.onInputCallback) {

@@ -488,9 +463,2 @@ this.onInputCallback(decrypted);

try {
// Log output before encryption for debugging
if (process.env.DEBUG === '1' || process.argv.includes('--debug')) {
logger.debug(`WS Output sending (${data.length} bytes):`);
logger.debug(` Text: ${this.escapeSpecialChars(data.substring(0, 100))}`);
logger.debug(` Hex: ${this.toHexDump(data)}`);
}
const encrypted = encrypt(data, this.aesKey);

@@ -497,0 +465,0 @@

@@ -48,3 +48,6 @@ const pty = require('node-pty');

spawnCommand = 'cmd.exe';
spawnArgs = ['/c', this.tool.command, ...args];
// If command contains spaces, wrap in quotes
const command = this.tool.command.includes(' ') ? `"${this.tool.command}"` : this.tool.command;
spawnArgs = ['/c', command, ...args];
}

@@ -51,0 +54,0 @@

{
"name": "@termly-dev/cli-dev",
"version": "1.1.10",
"version": "1.2.2",
"description": "Mirror your AI coding sessions to mobile - control Claude, Aider, Copilot, and 17+ tools from your phone (Development version)",

@@ -5,0 +5,0 @@ "main": "index.js",