@computesdk/cmd 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -30,6 +30,7 @@ __export(src_exports, {
30
30
  chmod: () => chmod2,
31
31
  chown: () => chown2,
32
32
  cmd: () => cmd,
33
+ compute: () => compute2,
33
34
  cp: () => cp2,
34
35
  curl: () => curl2,
35
36
  cut: () => cut2,
@@ -179,12 +180,29 @@ var mkdir = (path, options) => {
179
180
  const recursive = options?.recursive ?? true;
180
181
  return recursive ? ["mkdir", "-p", path] : ["mkdir", path];
181
182
  };
182
- var rm = (path, options) => {
183
- const flags = [];
184
- if (options?.recursive) flags.push("r");
185
- if (options?.force) flags.push("f");
186
- return flags.length > 0 ? ["rm", `-${flags.join("")}`, path] : ["rm", path];
187
- };
183
+ var rm = Object.assign(
184
+ (path, options) => {
185
+ const flags = [];
186
+ if (options?.recursive) flags.push("r");
187
+ if (options?.force) flags.push("f");
188
+ return flags.length > 0 ? ["rm", `-${flags.join("")}`, path] : ["rm", path];
189
+ },
190
+ {
191
+ /**
192
+ * Force remove file or directory (always uses -rf)
193
+ * @example rm.rf('/app/tmp')
194
+ */
195
+ rf: (path) => ["rm", "-rf", path],
196
+ /**
197
+ * Smart remove - automatically detects if path is a directory and uses appropriate flags
198
+ * Uses a shell one-liner to check if directory and apply -r flag accordingly
199
+ * @example rm.auto('/app/tmp')
200
+ */
201
+ auto: (path) => {
202
+ return ["sh", "-c", `if [ -d "${path}" ]; then rm -rf "${path}"; else rm -f "${path}"; fi`];
203
+ }
204
+ }
205
+ );
188
206
  var cp = (src, dest, options) => {
189
207
  return options?.recursive ? ["cp", "-r", src, dest] : ["cp", src, dest];
190
208
  };
@@ -1015,6 +1033,106 @@ var sha1sum = (file, options) => {
1015
1033
  return options?.check ? ["sha1sum", "-c", file] : ["sha1sum", file];
1016
1034
  };
1017
1035
 
1036
+ // src/commands/compute.ts
1037
+ var compute_exports = {};
1038
+ __export(compute_exports, {
1039
+ compute: () => compute,
1040
+ health: () => health,
1041
+ install: () => install,
1042
+ isInstalled: () => isInstalled,
1043
+ isSetup: () => isSetup,
1044
+ setup: () => setup,
1045
+ start: () => start,
1046
+ stop: () => stop,
1047
+ version: () => version
1048
+ });
1049
+ var install = (options) => {
1050
+ const installUrl = options?.version ? `https://computesdk.com/install.sh?version=${options.version}` : "https://computesdk.com/install.sh";
1051
+ const curlFlags = options?.silent ? "-fsSL" : "-fSL";
1052
+ let installCmd = `curl ${curlFlags} ${installUrl} | bash`;
1053
+ if (options?.apiKey) {
1054
+ installCmd = `COMPUTESDK_API_KEY="${options.apiKey}" ${installCmd}`;
1055
+ } else if (typeof process !== "undefined" && process.env?.COMPUTESDK_API_KEY) {
1056
+ installCmd = `COMPUTESDK_API_KEY="${process.env.COMPUTESDK_API_KEY}" ${installCmd}`;
1057
+ }
1058
+ return ["sh", "-c", installCmd];
1059
+ };
1060
+ var isInstalled = () => {
1061
+ return ["sh", "-c", "which compute > /dev/null 2>&1"];
1062
+ };
1063
+ var version = () => {
1064
+ return ["compute", "--version"];
1065
+ };
1066
+ var start = (options) => {
1067
+ const args = ["compute", "start"];
1068
+ const apiKey = options?.apiKey || typeof process !== "undefined" && process.env?.COMPUTESDK_API_KEY;
1069
+ const accessToken = options?.accessToken;
1070
+ if (accessToken) {
1071
+ args.push("--access-token", accessToken);
1072
+ } else if (apiKey) {
1073
+ args.push("--api-key", apiKey);
1074
+ }
1075
+ if (options?.port) {
1076
+ args.push("--port", String(options.port));
1077
+ }
1078
+ if (options?.logLevel === "debug") {
1079
+ args.push("--verbose");
1080
+ }
1081
+ return args;
1082
+ };
1083
+ var stop = () => {
1084
+ return ["pkill", "-f", "compute start"];
1085
+ };
1086
+ var health = (options) => {
1087
+ const host = options?.host || "localhost";
1088
+ const port3 = options?.port || 18080;
1089
+ return ["sh", "-c", `curl -f http://${host}:${port3}/health > /dev/null 2>&1`];
1090
+ };
1091
+ var isSetup = (options) => {
1092
+ const host = options?.host || "localhost";
1093
+ const port3 = options?.port || 18080;
1094
+ return ["sh", "-c", `
1095
+ if ! which compute > /dev/null 2>&1; then
1096
+ exit 1
1097
+ fi
1098
+ if ! curl -f http://${host}:${port3}/health > /dev/null 2>&1; then
1099
+ exit 1
1100
+ fi
1101
+ exit 0
1102
+ `.trim()];
1103
+ };
1104
+ var setup = (options) => {
1105
+ const apiKey = options?.apiKey || typeof process !== "undefined" && process.env?.COMPUTESDK_API_KEY;
1106
+ const accessToken = options?.accessToken;
1107
+ const installUrl = options?.version ? `https://computesdk.com/install.sh?version=${options.version}` : "https://computesdk.com/install.sh";
1108
+ const curlFlags = options?.silent ? "-fsSL" : "-fSL";
1109
+ let installCmd = `curl ${curlFlags} ${installUrl} | bash`;
1110
+ if (apiKey) {
1111
+ installCmd = `COMPUTESDK_API_KEY="${apiKey}" ${installCmd}`;
1112
+ }
1113
+ let startCmd = "compute start";
1114
+ if (accessToken) {
1115
+ startCmd += ` --access-token "${accessToken}"`;
1116
+ } else if (apiKey) {
1117
+ startCmd += ` --api-key "${apiKey}"`;
1118
+ }
1119
+ if (options?.port) {
1120
+ startCmd += ` --port ${options.port}`;
1121
+ }
1122
+ const fullCmd = `${installCmd} && ${startCmd} > /dev/null 2>&1 &`;
1123
+ return ["sh", "-c", fullCmd];
1124
+ };
1125
+ var compute = {
1126
+ install,
1127
+ isInstalled,
1128
+ version,
1129
+ start,
1130
+ stop,
1131
+ health,
1132
+ setup,
1133
+ isSetup
1134
+ };
1135
+
1018
1136
  // src/index.ts
1019
1137
  var cmd = Object.assign(
1020
1138
  // Callable: shell wrapper with sh default
@@ -1037,7 +1155,9 @@ var cmd = Object.assign(
1037
1155
  // Archives
1038
1156
  ...archive_exports,
1039
1157
  // System
1040
- ...system_exports
1158
+ ...system_exports,
1159
+ // Compute
1160
+ ...compute_exports
1041
1161
  }
1042
1162
  );
1043
1163
  var {
@@ -1084,6 +1204,7 @@ var {
1084
1204
  sha256sum: sha256sum2,
1085
1205
  sha1sum: sha1sum2
1086
1206
  } = system_exports;
1207
+ var { compute: compute2 } = compute_exports;
1087
1208
  var src_default = cmd;
1088
1209
  // Annotate the CommonJS export names for ESM import in node:
1089
1210
  0 && (module.exports = {
@@ -1097,6 +1218,7 @@ var src_default = cmd;
1097
1218
  chmod,
1098
1219
  chown,
1099
1220
  cmd,
1221
+ compute,
1100
1222
  cp,
1101
1223
  curl,
1102
1224
  cut,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/shell.ts","../src/commands/filesystem.ts","../src/commands/process.ts","../src/commands/packages.ts","../src/commands/git.ts","../src/commands/network.ts","../src/commands/text.ts","../src/commands/archive.ts","../src/commands/system.ts"],"sourcesContent":["/**\n * @computesdk/cmd - Type-safe shell command builders\n *\n * Build shell commands as tuples for use with sandbox.runCommand()\n *\n * @example\n * ```typescript\n * import { cmd, npm, node } from '@computesdk/cmd';\n *\n * await sandbox.runCommand(npm.install('express'));\n * await sandbox.runCommand(cmd.mkdir('/app/src'));\n * await sandbox.runCommand(node('server.js'), { background: true });\n * ```\n */\n\n// Re-export types\nexport type { Command, ShellOptions } from './types.js';\n\n// Re-export utilities\nexport { esc, shellEscape, escapeArgs, buildShellCommand } from './utils.js';\n\n// Re-export shell wrappers\nexport { shell, sh, bash, zsh } from './shell.js';\n\n// Import all commands for assembly\nimport * as filesystem from './commands/filesystem.js';\nimport * as process from './commands/process.js';\nimport * as packages from './commands/packages.js';\nimport * as gitCommands from './commands/git.js';\nimport * as network from './commands/network.js';\nimport * as text from './commands/text.js';\nimport * as archive from './commands/archive.js';\nimport * as system from './commands/system.js';\n\nimport type { Command } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Command builders for common shell operations - callable with shell wrapper + command methods\n *\n * @example\n * // As shell wrapper (default: sh)\n * cmd(npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd '/app' && npm install']\n *\n * @example\n * // As command builders\n * cmd.npm.install('express')\n * // => ['npm', 'install', 'express']\n */\nexport const cmd = Object.assign(\n // Callable: shell wrapper with sh default\n (command: Command, options?: { cwd?: string; background?: boolean }): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n // Filesystem\n ...filesystem,\n // Process\n ...process,\n // Package managers\n ...packages,\n // Git\n ...gitCommands,\n // Network\n ...network,\n // Text processing\n ...text,\n // Archives\n ...archive,\n // System\n ...system,\n }\n);\n\n// Export individual command builders for destructured imports\n// Filesystem\nexport const {\n mkdir, rm, cp, mv, ls, pwd, chmod, chown, touch, cat, ln, readlink, test, rsync,\n} = filesystem;\n\n// Process\nexport const { node, python, kill, pkill, ps, timeout } = process;\n\n// Package managers\nexport const { npm, pnpm, yarn, pip, bun, deno, npx, bunx, uv, poetry, pipx } = packages;\n\n// Git\nexport const { git } = gitCommands;\n\n// Network\nexport const { curl, wget, port, net } = network;\n\n// Text processing\nexport const { grep, sed, head, tail, wc, sort, uniq, jq, xargs, awk, cut, tr } = text;\n\n// Archives\nexport const { tar, unzip } = archive;\n\n// System\nexport const {\n echo, env, printenv, which, whoami, uname, hostname,\n df, du, sleep, date, find, tee, diff, parallel, raw,\n base64, md5sum, sha256sum, sha1sum,\n} = system;\n\n// Default export for convenience\nexport default cmd;\n","import type { Command, ShellOptions } from './types.js';\n\n/**\n * Escape a string for safe use in shell commands using single quotes.\n * This is the safest method as single quotes preserve all characters literally,\n * except for single quotes themselves which must be handled specially.\n *\n * @example shellEscape(\"hello world\") // \"'hello world'\"\n * @example shellEscape(\"it's here\") // \"'it'\\\\''s here'\"\n * @example shellEscape(\"$HOME\") // \"'$HOME'\" (no variable expansion)\n */\nexport function shellEscape(s: string): string {\n // Wrap in single quotes and escape any embedded single quotes\n // 'foo'bar' becomes 'foo'\\''bar' (end quote, escaped quote, start quote)\n return \"'\" + s.replace(/'/g, \"'\\\\''\") + \"'\";\n}\n\n/**\n * Escape a string for use inside double quotes.\n *\n * This is a legacy helper kept for backward compatibility; for new code,\n * prefer {@link shellEscape} which uses single-quoted, safer shell escaping.\n *\n * @example esc('path with \"quotes\"') // 'path with \\\\\"quotes\\\\\"'\n * @deprecated Use {@link shellEscape} for safer escaping. This function only escapes\n * double quotes and may not be safe for all shell contexts. Migration: replace\n * `esc(str)` with `shellEscape(str)`.\n */\nexport function esc(s: string): string {\n return s.replace(/\"/g, '\\\\\"');\n}\n\n/**\n * Escape each argument in a command array and join them with spaces.\n * Arguments that are safe (alphanumeric, dash, underscore, dot, slash, colon, equals)\n * are left unquoted for readability.\n *\n * @example escapeArgs(['npm', 'install', 'express']) // 'npm install express'\n * @example escapeArgs(['echo', 'hello world']) // \"echo 'hello world'\"\n * @example escapeArgs(['cp', 'file with spaces.txt', '/dest']) // \"cp 'file with spaces.txt' /dest\"\n */\nexport function escapeArgs(args: string[]): string {\n return args.map(arg => {\n // If arg contains only safe characters, no escaping needed\n if (/^[a-zA-Z0-9_./:=@-]+$/.test(arg) && arg.length > 0) {\n return arg;\n }\n // Otherwise, use shellEscape for safety\n return shellEscape(arg);\n }).join(' ');\n}\n\n/**\n * Internal helper to build shell command with proper escaping\n */\nexport function buildShellCommand(shellBin: string, command: Command, options?: ShellOptions): Command {\n if (!options?.cwd && !options?.background) {\n return command;\n }\n\n let cmdStr = escapeArgs(command);\n\n // Build command: first wrap with nohup if background, then prepend cd if cwd\n // Result: cd '/path' && nohup cmd > /dev/null 2>&1 &\n if (options.background) {\n cmdStr = `nohup ${cmdStr} > /dev/null 2>&1 &`;\n }\n\n if (options.cwd) {\n cmdStr = `cd ${shellEscape(options.cwd)} && ${cmdStr}`;\n }\n\n return [shellBin, '-c', cmdStr];\n}\n","import type { Command, ShellOptions } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Shell wrapper - callable function with shell-specific methods\n *\n * @example\n * // Default (sh)\n * shell(cmd.npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd \"/app\" && npm install']\n *\n * @example\n * // Shell-specific\n * shell.bash(cmd.node('server.js'), { background: true })\n * // => ['bash', '-c', 'nohup node server.js > /dev/null 2>&1 &']\n *\n * @example\n * shell.zsh(cmd.npm.run('dev'), { cwd: '/app' })\n * // => ['zsh', '-c', 'cd \"/app\" && npm run dev']\n */\nexport const shell = Object.assign(\n // Default: use sh\n (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n /** Wrap with sh (POSIX shell) */\n sh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n /** Wrap with bash */\n bash: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('bash', command, options);\n },\n /** Wrap with zsh */\n zsh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('zsh', command, options);\n },\n }\n);\n\n// Individual shell exports\nexport const sh = shell.sh;\nexport const bash = shell.bash;\nexport const zsh = shell.zsh;\n","import type { Command } from '../types.js';\n\n/**\n * Create directory\n *\n * By default, recursive is true (includes -p flag to create parent directories).\n * This differs from standard shell mkdir which requires explicit -p flag.\n *\n * @example mkdir('/app/src') // ['mkdir', '-p', '/app/src']\n * @example mkdir('/app/src', { recursive: false }) // ['mkdir', '/app/src']\n */\nexport const mkdir = (path: string, options?: { recursive?: boolean }): Command => {\n const recursive = options?.recursive ?? true;\n return recursive ? ['mkdir', '-p', path] : ['mkdir', path];\n};\n\n/**\n * Remove file or directory\n * @example rm('/app/tmp') // ['rm', '/app/tmp']\n * @example rm('/app/tmp', { recursive: true }) // ['rm', '-rf', '/app/tmp']\n */\nexport const rm = (path: string, options?: { recursive?: boolean; force?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.recursive) flags.push('r');\n if (options?.force) flags.push('f');\n return flags.length > 0 ? ['rm', `-${flags.join('')}`, path] : ['rm', path];\n};\n\n/**\n * Copy file or directory\n * @example cp('/src/file.txt', '/dest/file.txt')\n */\nexport const cp = (src: string, dest: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['cp', '-r', src, dest] : ['cp', src, dest];\n};\n\n/**\n * Move/rename file or directory\n * @example mv('/old/path', '/new/path')\n */\nexport const mv = (src: string, dest: string): Command => ['mv', src, dest];\n\n/**\n * List directory contents\n * @example ls('/app') // ['ls', '/app']\n * @example ls('/app', { all: true, long: true }) // ['ls', '-la', '/app']\n */\nexport const ls = (path?: string, options?: { all?: boolean; long?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.long) flags.push('l');\n if (options?.all) flags.push('a');\n const flagStr = flags.length > 0 ? `-${flags.join('')}` : '';\n if (flagStr && path) return ['ls', flagStr, path];\n if (flagStr) return ['ls', flagStr];\n if (path) return ['ls', path];\n return ['ls'];\n};\n\n/**\n * Print working directory\n * @example pwd() // ['pwd']\n */\nexport const pwd = (): Command => ['pwd'];\n\n/**\n * Change file permissions\n * @example chmod('755', '/app/script.sh')\n */\nexport const chmod = (mode: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chmod', '-R', mode, path] : ['chmod', mode, path];\n};\n\n/**\n * Change file owner/group\n * @example chown('user', '/app/file.txt')\n * @example chown('user:group', '/app', { recursive: true })\n */\nexport const chown = (owner: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chown', '-R', owner, path] : ['chown', owner, path];\n};\n\n/**\n * Create empty file or update timestamp\n * @example touch('/app/newfile.txt')\n */\nexport const touch = (path: string): Command => ['touch', path];\n\n/**\n * Read file contents\n * @example cat('/app/file.txt')\n */\nexport const cat = (path: string): Command => ['cat', path];\n\n/**\n * Create symbolic link\n * @example ln('/app/config', '/etc/app/config')\n * @example ln('/app/config', '/etc/app/config', { symbolic: true, force: true })\n */\nexport const ln = (target: string, link: string, options?: { symbolic?: boolean; force?: boolean }): Command => {\n const args = ['ln'];\n if (options?.symbolic !== false) args.push('-s'); // symbolic by default\n if (options?.force) args.push('-f');\n args.push(target, link);\n return args as Command;\n};\n\n/**\n * Resolve symbolic link\n * @example readlink('/usr/bin/python')\n * @example readlink('/usr/bin/python', { canonical: true })\n */\nexport const readlink = (path: string, options?: { canonical?: boolean }): Command => {\n return options?.canonical ? ['readlink', '-f', path] : ['readlink', path];\n};\n\n/**\n * Filesystem checks (exit 0 if true, 1 if false)\n * @example test.exists('/app/file.txt')\n * @example test.isDir('/app')\n */\nexport const test = {\n exists: (path: string): Command => ['test', '-e', path],\n isFile: (path: string): Command => ['test', '-f', path],\n isDir: (path: string): Command => ['test', '-d', path],\n isReadable: (path: string): Command => ['test', '-r', path],\n isWritable: (path: string): Command => ['test', '-w', path],\n isExecutable: (path: string): Command => ['test', '-x', path],\n notEmpty: (path: string): Command => ['test', '-s', path],\n isSymlink: (path: string): Command => ['test', '-L', path],\n};\n\n/**\n * Sync files/directories with rsync\n * @example rsync('/src/', '/dest/')\n * @example rsync('/src/', 'user@host:/dest/', { archive: true, compress: true })\n */\nexport const rsync = (src: string, dest: string, options?: {\n archive?: boolean;\n verbose?: boolean;\n compress?: boolean;\n delete?: boolean;\n dryRun?: boolean;\n exclude?: string[];\n}): Command => {\n const args = ['rsync'];\n if (options?.archive) args.push('-a');\n if (options?.verbose) args.push('-v');\n if (options?.compress) args.push('-z');\n if (options?.delete) args.push('--delete');\n if (options?.dryRun) args.push('--dry-run');\n if (options?.exclude) {\n for (const pattern of options.exclude) {\n args.push('--exclude', pattern);\n }\n }\n args.push(src, dest);\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Run Node.js script\n * @example node('server.js')\n * @example node('server.js', ['--port', '3000'])\n */\nexport const node = (script: string, args?: string[]): Command => {\n return args ? ['node', script, ...args] : ['node', script];\n};\n\n/**\n * Run Python script\n * @example python('script.py')\n * @example python('script.py', ['--verbose'])\n */\nexport const python = (script: string, args?: string[]): Command => {\n return args ? ['python3', script, ...args] : ['python3', script];\n};\n\n/**\n * Kill process by PID\n * @example kill(1234)\n * @example kill(1234, 9) // SIGKILL\n */\nexport const kill = (pid: number, signal?: number): Command => {\n return signal ? ['kill', `-${signal}`, String(pid)] : ['kill', String(pid)];\n};\n\n/**\n * Kill processes by name\n * @example pkill('node')\n * @example pkill('python', { signal: 9 })\n */\nexport const pkill = (name: string, options?: { signal?: number }): Command => {\n return options?.signal\n ? ['pkill', `-${options.signal}`, name]\n : ['pkill', name];\n};\n\n/**\n * List processes\n * @example ps()\n * @example ps({ all: true })\n */\nexport const ps = (options?: { all?: boolean }): Command => {\n return options?.all ? ['ps', 'aux'] : ['ps'];\n};\n\n/**\n * Run command with timeout\n * @example timeout(30, 'npm', ['test'])\n * @example timeout(10, 'curl', ['https://example.com'])\n */\nexport const timeout = (seconds: number, command: string, args?: string[]): Command => {\n const base: string[] = ['timeout', String(seconds), command];\n return args ? [...base, ...args] as Command : base as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * npm package manager commands\n */\nexport const npm = {\n /**\n * Install packages\n * @example npm.install() // ['npm', 'install']\n * @example npm.install('express') // ['npm', 'install', 'express']\n * @example npm.install('express', { dev: true }) // ['npm', 'install', '-D', 'express']\n */\n install: (pkg?: string, options?: { dev?: boolean; global?: boolean }): Command => {\n const args = ['npm', 'install'];\n if (options?.dev) args.push('-D');\n if (options?.global) args.push('-g');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run npm script\n * @example npm.run('build')\n * @example npm.run('test', ['--coverage'])\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['npm', 'run', script, '--', ...args] : ['npm', 'run', script];\n },\n\n /**\n * Initialize new package\n * @example npm.init() // ['npm', 'init', '-y']\n */\n init: (): Command => ['npm', 'init', '-y'],\n\n /**\n * Uninstall package\n * @example npm.uninstall('lodash')\n */\n uninstall: (pkg: string): Command => ['npm', 'uninstall', pkg],\n};\n\n/**\n * pnpm package manager commands\n */\nexport const pnpm = {\n /**\n * Install packages with pnpm\n * @example pnpm.install()\n * @example pnpm.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['pnpm', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run pnpm script\n * @example pnpm.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['pnpm', 'run', script, '--', ...args] : ['pnpm', 'run', script];\n },\n};\n\n/**\n * yarn package manager commands\n */\nexport const yarn = {\n /**\n * Install packages with yarn\n * @example yarn.install()\n */\n install: (): Command => ['yarn', 'install'],\n\n /**\n * Add package\n * @example yarn.add('express')\n * @example yarn.add('typescript', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev ? ['yarn', 'add', '-D', pkg] : ['yarn', 'add', pkg];\n },\n\n /**\n * Run yarn script\n * @example yarn.run('build')\n */\n run: (script: string): Command => ['yarn', 'run', script],\n};\n\n/**\n * pip Python package manager commands\n */\nexport const pip = {\n /**\n * Install Python package\n * @example pip.install('requests')\n * @example pip.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['pip', 'install', pkg],\n\n /**\n * Uninstall Python package\n * @example pip.uninstall('requests')\n */\n uninstall: (pkg: string): Command => ['pip', 'uninstall', '-y', pkg],\n};\n\n/**\n * bun runtime commands\n */\nexport const bun = {\n /**\n * Install packages with bun\n * @example bun.install()\n * @example bun.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['bun', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run bun script\n * @example bun.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['bun', 'run', script, ...args] : ['bun', 'run', script];\n },\n\n /**\n * Run file with bun\n * @example bun.exec('server.ts')\n */\n exec: (file: string, args?: string[]): Command => {\n return args ? ['bun', file, ...args] : ['bun', file];\n },\n};\n\n/**\n * deno runtime commands\n */\nexport const deno = {\n /**\n * Run deno script\n * @example deno.run('server.ts')\n * @example deno.run('server.ts', { allow: ['net', 'read'] })\n */\n run: (file: string, options?: { allow?: string[] }): Command => {\n const args = ['deno', 'run'];\n if (options?.allow) {\n for (const perm of options.allow) {\n args.push(`--allow-${perm}`);\n }\n }\n args.push(file);\n return args as Command;\n },\n\n /**\n * Install deno package\n * @example deno.install('https://deno.land/std/http/file_server.ts')\n */\n install: (url: string, options?: { name?: string }): Command => {\n const args = ['deno', 'install'];\n if (options?.name) args.push('-n', options.name);\n args.push(url);\n return args as Command;\n },\n};\n\n/**\n * Run packages with npx - callable function with additional methods\n * @example npx('create-react-app', ['my-app']) // run package directly\n * @example npx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const npx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['npx', pkg, ...args] : ['npx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires npx)\n * @example npx.concurrently(['npm:dev', 'npm:watch'])\n * @example npx.concurrently(['npm run dev', 'npm run watch'], { names: ['dev', 'watch'], killOthers: true })\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['npx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * Run packages with bunx - callable function with additional methods\n * @example bunx('create-next-app', ['my-app']) // run package directly\n * @example bunx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const bunx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['bunx', pkg, ...args] : ['bunx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires bunx)\n * @example bunx.concurrently(['npm:dev', 'npm:watch'])\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['bunx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * uv - Fast Python package manager\n */\nexport const uv = {\n /**\n * Install Python packages with uv\n * @example uv.install('requests')\n * @example uv.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['uv', 'pip', 'install', pkg],\n\n /**\n * Run Python script with uv\n * @example uv.run('script.py')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['uv', 'run', script, ...args] : ['uv', 'run', script];\n },\n\n /**\n * Sync dependencies from pyproject.toml\n * @example uv.sync()\n */\n sync: (): Command => ['uv', 'sync'],\n\n /**\n * Create virtual environment\n * @example uv.venv()\n * @example uv.venv('.venv')\n */\n venv: (path?: string): Command => {\n return path ? ['uv', 'venv', path] : ['uv', 'venv'];\n },\n};\n\n/**\n * poetry - Python dependency management\n */\nexport const poetry = {\n /**\n * Install dependencies\n * @example poetry.install()\n */\n install: (options?: { noRoot?: boolean }): Command => {\n const args = ['poetry', 'install'];\n if (options?.noRoot) args.push('--no-root');\n return args as Command;\n },\n\n /**\n * Add a dependency\n * @example poetry.add('requests')\n * @example poetry.add('pytest', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev\n ? ['poetry', 'add', '--group', 'dev', pkg]\n : ['poetry', 'add', pkg];\n },\n\n /**\n * Run command in poetry environment\n * @example poetry.run('python', ['script.py'])\n */\n run: (command: string, args?: string[]): Command => {\n return args ? ['poetry', 'run', command, ...args] : ['poetry', 'run', command];\n },\n\n /**\n * Build package\n * @example poetry.build()\n */\n build: (): Command => ['poetry', 'build'],\n};\n\n/**\n * pipx - Install and run Python applications\n */\nexport const pipx = {\n /**\n * Install application globally\n * @example pipx.install('black')\n */\n install: (pkg: string): Command => ['pipx', 'install', pkg],\n\n /**\n * Run application without installing\n * @example pipx.run('black', ['--check', '.'])\n */\n run: (pkg: string, args?: string[]): Command => {\n return args ? ['pipx', 'run', pkg, ...args] : ['pipx', 'run', pkg];\n },\n\n /**\n * Uninstall application\n * @example pipx.uninstall('black')\n */\n uninstall: (pkg: string): Command => ['pipx', 'uninstall', pkg],\n\n /**\n * Upgrade application\n * @example pipx.upgrade('black')\n */\n upgrade: (pkg: string): Command => ['pipx', 'upgrade', pkg],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Git version control commands\n */\nexport const git = {\n /**\n * Clone repository\n * @example git.clone('https://github.com/user/repo.git')\n * @example git.clone('https://github.com/user/repo.git', { depth: 1 })\n */\n clone: (url: string, options?: { depth?: number; branch?: string; dir?: string }): Command => {\n const args = ['git', 'clone'];\n if (options?.depth) args.push('--depth', String(options.depth));\n if (options?.branch) args.push('-b', options.branch);\n args.push(url);\n if (options?.dir) args.push(options.dir);\n return args as Command;\n },\n\n /**\n * Pull latest changes\n * @example git.pull()\n */\n pull: (): Command => ['git', 'pull'],\n\n /**\n * Checkout branch\n * @example git.checkout('main')\n * @example git.checkout('feature', { create: true })\n */\n checkout: (branch: string, options?: { create?: boolean }): Command => {\n return options?.create\n ? ['git', 'checkout', '-b', branch]\n : ['git', 'checkout', branch];\n },\n\n /**\n * Git status\n * @example git.status()\n */\n status: (): Command => ['git', 'status'],\n\n /**\n * Stage files\n * @example git.add('.')\n * @example git.add('src/index.ts')\n */\n add: (path: string, options?: { all?: boolean }): Command => {\n return options?.all ? ['git', 'add', '-A', path] : ['git', 'add', path];\n },\n\n /**\n * Commit staged changes\n * @example git.commit('feat: add new feature')\n * @example git.commit('fix: bug fix', { all: true })\n */\n commit: (message: string, options?: { all?: boolean }): Command => {\n return options?.all\n ? ['git', 'commit', '-a', '-m', message]\n : ['git', 'commit', '-m', message];\n },\n\n /**\n * Push to remote\n * @example git.push()\n * @example git.push({ remote: 'origin', branch: 'main' })\n * @example git.push({ setUpstream: true, branch: 'feature' })\n */\n push: (options?: { remote?: string; branch?: string; setUpstream?: boolean; force?: boolean }): Command => {\n const args = ['git', 'push'];\n if (options?.setUpstream) args.push('-u');\n if (options?.force) args.push('--force');\n if (options?.remote) args.push(options.remote);\n if (options?.branch) args.push(options.branch);\n return args as Command;\n },\n\n /**\n * List or create branches\n * @example git.branch()\n * @example git.branch({ all: true })\n * @example git.branch('new-feature', { create: true })\n */\n branch: (name?: string, options?: { all?: boolean; delete?: boolean; create?: boolean }): Command => {\n const args = ['git', 'branch'];\n if (options?.all) args.push('-a');\n if (options?.delete) args.push('-d');\n if (name) args.push(name);\n return args as Command;\n },\n\n /**\n * Show changes\n * @example git.diff()\n * @example git.diff({ staged: true })\n * @example git.diff({ file: 'src/index.ts' })\n */\n diff: (options?: { staged?: boolean; file?: string }): Command => {\n const args = ['git', 'diff'];\n if (options?.staged) args.push('--staged');\n if (options?.file) args.push(options.file);\n return args as Command;\n },\n\n /**\n * Show commit history\n * @example git.log()\n * @example git.log({ oneline: true, count: 10 })\n */\n log: (options?: { oneline?: boolean; count?: number }): Command => {\n const args = ['git', 'log'];\n if (options?.oneline) args.push('--oneline');\n if (options?.count) args.push('-n', String(options.count));\n return args as Command;\n },\n\n /**\n * Stash changes\n * @example git.stash()\n * @example git.stash({ pop: true })\n * @example git.stash({ list: true })\n */\n stash: (options?: { pop?: boolean; list?: boolean; drop?: boolean; message?: string }): Command => {\n const args = ['git', 'stash'];\n if (options?.pop) args.push('pop');\n else if (options?.list) args.push('list');\n else if (options?.drop) args.push('drop');\n else if (options?.message) args.push('push', '-m', options.message);\n return args as Command;\n },\n\n /**\n * Fetch from remote\n * @example git.fetch()\n * @example git.fetch({ all: true })\n */\n fetch: (options?: { remote?: string; all?: boolean; prune?: boolean }): Command => {\n const args = ['git', 'fetch'];\n if (options?.all) args.push('--all');\n if (options?.prune) args.push('--prune');\n if (options?.remote) args.push(options.remote);\n return args as Command;\n },\n\n /**\n * Reset changes\n * @example git.reset()\n * @example git.reset({ hard: true })\n * @example git.reset({ ref: 'HEAD~1' })\n */\n reset: (options?: { hard?: boolean; soft?: boolean; ref?: string }): Command => {\n const args = ['git', 'reset'];\n if (options?.hard) args.push('--hard');\n if (options?.soft) args.push('--soft');\n if (options?.ref) args.push(options.ref);\n return args as Command;\n },\n\n /**\n * Initialize repository\n * @example git.init()\n */\n init: (): Command => ['git', 'init'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Download file with curl\n * @example curl('https://example.com/file.tar.gz')\n * @example curl('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const curl = (url: string, options?: { output?: string; silent?: boolean }): Command => {\n const args = ['curl'];\n if (options?.silent) args.push('-s');\n args.push('-L'); // follow redirects\n if (options?.output) {\n args.push('-o', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Download file with wget\n * @example wget('https://example.com/file.tar.gz')\n * @example wget('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const wget = (url: string, options?: { output?: string; quiet?: boolean }): Command => {\n const args = ['wget'];\n if (options?.quiet) args.push('-q');\n if (options?.output) {\n args.push('-O', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Port management utilities\n */\nexport const port = {\n /**\n * Find process using a port (using lsof)\n * @example port.find(3000)\n */\n find: (p: number): Command => ['lsof', '-i', `:${p}`],\n\n /**\n * Kill process on a port\n * @example port.kill(3000)\n */\n kill: (p: number): Command => ['sh', '-c', `lsof -ti :${p} | xargs kill -9 2>/dev/null || true`],\n\n /**\n * Check if port is in use (exits 0 if in use)\n * @example port.isUsed(3000)\n */\n isUsed: (p: number): Command => ['sh', '-c', `lsof -i :${p} >/dev/null 2>&1`],\n\n /**\n * List all listening ports\n * @example port.list()\n */\n list: (): Command => ['ss', '-tlnp'],\n\n /**\n * Wait for port to be available (with timeout)\n * @example port.waitFor(3000, 30)\n */\n waitFor: (p: number, timeoutSeconds?: number): Command => {\n const timeout = timeoutSeconds ?? 30;\n return ['sh', '-c', `for i in $(seq 1 ${timeout}); do nc -z localhost ${p} && exit 0 || sleep 1; done; exit 1`];\n },\n};\n\n/**\n * Network utilities\n */\nexport const net = {\n /**\n * Check connectivity to host\n * @example net.ping('google.com')\n * @example net.ping('google.com', 3)\n */\n ping: (host: string, count?: number): Command => {\n return count ? ['ping', '-c', String(count), host] : ['ping', '-c', '1', host];\n },\n\n /**\n * Check if host:port is reachable\n * @example net.check('localhost', 3000)\n */\n check: (host: string, p: number): Command => ['nc', '-z', host, String(p)],\n\n /**\n * Get public IP\n * @example net.publicIp()\n */\n publicIp: (): Command => ['curl', '-s', 'ifconfig.me'],\n\n /**\n * Show network interfaces\n * @example net.interfaces()\n */\n interfaces: (): Command => ['ip', 'addr'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Search for pattern in files\n * @example grep('TODO', 'src/*.ts')\n * @example grep('error', undefined, { recursive: true, ignoreCase: true })\n */\nexport const grep = (pattern: string, file?: string, options?: { recursive?: boolean; ignoreCase?: boolean; lineNumber?: boolean }): Command => {\n const args = ['grep'];\n if (options?.recursive) args.push('-r');\n if (options?.ignoreCase) args.push('-i');\n if (options?.lineNumber) args.push('-n');\n args.push(pattern);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Stream editor for filtering and transforming text\n * @example sed('s/foo/bar/g', 'file.txt')\n * @example sed('s/foo/bar/g', 'file.txt', { inPlace: true })\n */\nexport const sed = (expression: string, file: string, options?: { inPlace?: boolean }): Command => {\n return options?.inPlace\n ? ['sed', '-i', expression, file]\n : ['sed', expression, file];\n};\n\n/**\n * Output first lines of file\n * @example head('file.txt')\n * @example head('file.txt', 20)\n */\nexport const head = (file: string, lines?: number): Command => {\n return lines ? ['head', '-n', String(lines), file] : ['head', file];\n};\n\n/**\n * Output last lines of file\n * @example tail('file.txt')\n * @example tail('file.txt', 20)\n * @example tail('app.log', undefined, { follow: true })\n */\nexport const tail = (file: string, lines?: number, options?: { follow?: boolean }): Command => {\n const args = ['tail'];\n if (options?.follow) args.push('-f');\n if (lines) args.push('-n', String(lines));\n args.push(file);\n return args as Command;\n};\n\n/**\n * Word, line, character count\n * @example wc('file.txt')\n * @example wc('file.txt', { lines: true })\n */\nexport const wc = (file: string, options?: { lines?: boolean; words?: boolean; chars?: boolean }): Command => {\n const args = ['wc'];\n if (options?.lines) args.push('-l');\n if (options?.words) args.push('-w');\n if (options?.chars) args.push('-c');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Sort lines of text\n * @example sort('file.txt')\n * @example sort('file.txt', { reverse: true, numeric: true })\n */\nexport const sort = (file: string, options?: { reverse?: boolean; numeric?: boolean; unique?: boolean }): Command => {\n const args = ['sort'];\n if (options?.reverse) args.push('-r');\n if (options?.numeric) args.push('-n');\n if (options?.unique) args.push('-u');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Report or filter out repeated lines\n * @example uniq('file.txt')\n * @example uniq('file.txt', { count: true })\n */\nexport const uniq = (file: string, options?: { count?: boolean }): Command => {\n return options?.count ? ['uniq', '-c', file] : ['uniq', file];\n};\n\n/**\n * Process JSON with jq\n * @example jq('.name', 'data.json')\n * @example jq('.[] | .id') // for piping\n */\nexport const jq = (filter: string, file?: string, options?: { raw?: boolean; compact?: boolean }): Command => {\n const args = ['jq'];\n if (options?.raw) args.push('-r');\n if (options?.compact) args.push('-c');\n args.push(filter);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Build and execute commands from stdin\n * @example xargs('rm') // pipe file list to rm\n * @example xargs('grep', ['pattern'], { parallel: 4 })\n */\nexport const xargs = (command: string, args?: string[], options?: { parallel?: number; nullDelimited?: boolean }): Command => {\n const xargsArgs = ['xargs'];\n if (options?.nullDelimited) xargsArgs.push('-0');\n if (options?.parallel) xargsArgs.push('-P', String(options.parallel));\n xargsArgs.push(command);\n if (args) xargsArgs.push(...args);\n return xargsArgs as Command;\n};\n\n/**\n * Pattern scanning and processing\n * @example awk('{print $1}', 'file.txt')\n * @example awk('BEGIN {sum=0} {sum+=$1} END {print sum}', 'numbers.txt')\n */\nexport const awk = (program: string, file?: string, options?: { fieldSeparator?: string }): Command => {\n const args = ['awk'];\n if (options?.fieldSeparator) args.push('-F', options.fieldSeparator);\n args.push(program);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Extract columns/fields from lines\n * @example cut('file.txt', { fields: '1,3', delimiter: ',' })\n * @example cut('file.txt', { characters: '1-10' })\n */\nexport const cut = (file: string, options: { fields?: string; delimiter?: string; characters?: string }): Command => {\n const args = ['cut'];\n if (options.delimiter) args.push('-d', options.delimiter);\n if (options.fields) args.push('-f', options.fields);\n if (options.characters) args.push('-c', options.characters);\n args.push(file);\n return args as Command;\n};\n\n/**\n * Translate or delete characters\n * @example tr('a-z', 'A-Z') // uppercase\n * @example tr('\\n', ' ') // newlines to spaces\n * @example tr('', '', { delete: 'abc' }) // delete chars\n */\nexport const tr = (set1: string, set2?: string, options?: { delete?: string; squeeze?: boolean }): Command => {\n const args = ['tr'];\n if (options?.delete) {\n args.push('-d', options.delete);\n } else {\n if (options?.squeeze) args.push('-s');\n args.push(set1);\n if (set2) args.push(set2);\n }\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Tar archive operations\n */\nexport const tar = {\n /**\n * Extract tar archive\n * @example tar.extract('archive.tar.gz')\n * @example tar.extract('archive.tar.gz', { dir: '/app' })\n */\n extract: (file: string, options?: { dir?: string }): Command => {\n const args = ['tar', '-xzf', file];\n if (options?.dir) args.push('-C', options.dir);\n return args as Command;\n },\n\n /**\n * Create tar archive\n * @example tar.create('archive.tar.gz', '/app/dist')\n */\n create: (output: string, source: string): Command => {\n return ['tar', '-czf', output, source];\n },\n};\n\n/**\n * Unzip archive\n * @example unzip('archive.zip')\n * @example unzip('archive.zip', { dir: '/app' })\n */\nexport const unzip = (file: string, options?: { dir?: string }): Command => {\n return options?.dir ? ['unzip', '-o', file, '-d', options.dir] : ['unzip', '-o', file];\n};\n","import type { Command } from '../types.js';\n\n/**\n * Print environment variable\n * @example echo('$HOME')\n * @example echo('Hello World')\n */\nexport const echo = (text: string): Command => ['echo', text];\n\n/**\n * Print environment variables\n * @example env()\n */\nexport const env = (): Command => ['env'];\n\n/**\n * Print specific environment variable\n * @example printenv('PATH')\n * @example printenv() // prints all\n */\nexport const printenv = (name?: string): Command => {\n return name ? ['printenv', name] : ['printenv'];\n};\n\n/**\n * Which command location\n * @example which('node')\n */\nexport const which = (command: string): Command => ['which', command];\n\n/**\n * Print current user\n * @example whoami()\n */\nexport const whoami = (): Command => ['whoami'];\n\n/**\n * Print system information\n * @example uname()\n * @example uname({ all: true })\n */\nexport const uname = (options?: { all?: boolean }): Command => {\n return options?.all ? ['uname', '-a'] : ['uname'];\n};\n\n/**\n * Print hostname\n * @example hostname()\n */\nexport const hostname = (): Command => ['hostname'];\n\n/**\n * Report disk space usage\n * @example df()\n * @example df('/app')\n */\nexport const df = (path?: string, options?: { human?: boolean }): Command => {\n const args = ['df'];\n if (options?.human) args.push('-h');\n if (path) args.push(path);\n return args as Command;\n};\n\n/**\n * Estimate file/directory space usage\n * @example du('/app')\n * @example du('/app', { human: true, summarize: true })\n */\nexport const du = (path: string, options?: { human?: boolean; summarize?: boolean }): Command => {\n const args = ['du'];\n if (options?.human) args.push('-h');\n if (options?.summarize) args.push('-s');\n args.push(path);\n return args as Command;\n};\n\n/**\n * Delay for specified seconds\n * @example sleep(5)\n */\nexport const sleep = (seconds: number): Command => ['sleep', String(seconds)];\n\n/**\n * Print date/time\n * @example date()\n * @example date('+%Y-%m-%d')\n */\nexport const date = (format?: string): Command => {\n return format ? ['date', format] : ['date'];\n};\n\n/**\n * Find files\n * @example find('/app', { name: '*.ts' })\n * @example find('/app', { type: 'f', name: '*.js' })\n */\nexport const find = (path: string, options?: { name?: string; type?: 'f' | 'd' }): Command => {\n const args = ['find', path];\n if (options?.type) args.push('-type', options.type);\n if (options?.name) args.push('-name', options.name);\n return args as Command;\n};\n\n/**\n * Write to file and stdout\n * @example tee('/app/output.log')\n * @example tee('/app/output.log', { append: true })\n */\nexport const tee = (file: string, options?: { append?: boolean }): Command => {\n return options?.append ? ['tee', '-a', file] : ['tee', file];\n};\n\n/**\n * Compare files\n * @example diff('file1.txt', 'file2.txt')\n * @example diff('file1.txt', 'file2.txt', { unified: true })\n */\nexport const diff = (file1: string, file2: string, options?: { unified?: boolean; brief?: boolean }): Command => {\n const args = ['diff'];\n if (options?.unified) args.push('-u');\n if (options?.brief) args.push('-q');\n args.push(file1, file2);\n return args as Command;\n};\n\n/**\n * Run multiple commands in parallel\n * @example parallel(['npm run dev', 'npm run watch'])\n */\nexport const parallel = (commands: string[], options?: { killOthers?: boolean }): Command => {\n const joined = commands.join(' & ');\n if (options?.killOthers) {\n // trap EXIT to kill all background jobs when any exits\n return ['sh', '-c', `trap \"kill 0\" EXIT; ${joined} & wait`];\n }\n return ['sh', '-c', `${joined} & wait`];\n};\n\n/**\n * Build a custom command from parts\n * @example raw('my-cli', ['--flag', 'value'])\n */\nexport const raw = (command: string, args?: string[]): Command => {\n return args ? [command, ...args] : [command];\n};\n\n/**\n * Base64 encoding/decoding utilities\n */\nexport const base64 = {\n /**\n * Encode to base64\n * @example base64.encode('file.txt')\n */\n encode: (file?: string): Command => {\n return file ? ['base64', file] : ['base64'];\n },\n\n /**\n * Decode from base64\n * @example base64.decode('encoded.txt')\n */\n decode: (file?: string): Command => {\n return file ? ['base64', '-d', file] : ['base64', '-d'];\n },\n};\n\n/**\n * Compute MD5 checksum\n * @example md5sum('file.txt')\n * @example md5sum('file.txt', { check: true })\n */\nexport const md5sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['md5sum', '-c', file] : ['md5sum', file];\n};\n\n/**\n * Compute SHA256 checksum\n * @example sha256sum('file.txt')\n * @example sha256sum('file.txt', { check: true })\n */\nexport const sha256sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha256sum', '-c', file] : ['sha256sum', file];\n};\n\n/**\n * Compute SHA1 checksum\n * @example sha1sum('file.txt')\n */\nexport const sha1sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha1sum', '-c', file] : ['sha1sum', file];\n};\n"],"mappings":"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","names":["awk","base64","bun","bunx","cat","chmod","chown","cp","curl","cut","date","deno","df","diff","du","echo","env","find","git","grep","head","hostname","jq","kill","ln","ls","md5sum","mkdir","mv","net","node","npm","npx","parallel","pip","pipx","pkill","pnpm","poetry","port","printenv","ps","pwd","python","raw","readlink","rm","rsync","sed","sha1sum","sha256sum","sleep","sort","tail","tar","tee","test","timeout","touch","tr","uname","uniq","unzip","uv","wc","wget","which","whoami","xargs","yarn","timeout","mkdir","rm","cp","mv","ls","pwd","chmod","chown","touch","cat","ln","readlink","test","rsync","node","python","kill","pkill","ps","timeout","npm","pnpm","yarn","pip","bun","deno","npx","bunx","uv","poetry","pipx","git","curl","wget","port","net","grep","sed","head","tail","wc","sort","uniq","jq","xargs","awk","cut","tr","tar","unzip","echo","env","printenv","which","whoami","uname","hostname","df","du","sleep","date","find","tee","diff","parallel","raw","base64","md5sum","sha256sum","sha1sum"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/shell.ts","../src/commands/filesystem.ts","../src/commands/process.ts","../src/commands/packages.ts","../src/commands/git.ts","../src/commands/network.ts","../src/commands/text.ts","../src/commands/archive.ts","../src/commands/system.ts","../src/commands/compute.ts"],"sourcesContent":["/**\n * @computesdk/cmd - Type-safe shell command builders\n *\n * Build shell commands as tuples for use with sandbox.runCommand()\n *\n * @example\n * ```typescript\n * import { cmd, npm, node } from '@computesdk/cmd';\n *\n * await sandbox.runCommand(npm.install('express'));\n * await sandbox.runCommand(cmd.mkdir('/app/src'));\n * await sandbox.runCommand(node('server.js'), { background: true });\n * ```\n */\n\n// Re-export types\nexport type { Command, ShellOptions } from './types.js';\n\n// Re-export utilities\nexport { esc, shellEscape, escapeArgs, buildShellCommand } from './utils.js';\n\n// Re-export shell wrappers\nexport { shell, sh, bash, zsh } from './shell.js';\n\n// Import all commands for assembly\nimport * as filesystem from './commands/filesystem.js';\nimport * as process from './commands/process.js';\nimport * as packages from './commands/packages.js';\nimport * as gitCommands from './commands/git.js';\nimport * as network from './commands/network.js';\nimport * as text from './commands/text.js';\nimport * as archive from './commands/archive.js';\nimport * as system from './commands/system.js';\nimport * as computeCommands from './commands/compute.js';\n\nimport type { Command } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Command builders for common shell operations - callable with shell wrapper + command methods\n *\n * @example\n * // As shell wrapper (default: sh)\n * cmd(npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd '/app' && npm install']\n *\n * @example\n * // As command builders\n * cmd.npm.install('express')\n * // => ['npm', 'install', 'express']\n */\nexport const cmd = Object.assign(\n // Callable: shell wrapper with sh default\n (command: Command, options?: { cwd?: string; background?: boolean }): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n // Filesystem\n ...filesystem,\n // Process\n ...process,\n // Package managers\n ...packages,\n // Git\n ...gitCommands,\n // Network\n ...network,\n // Text processing\n ...text,\n // Archives\n ...archive,\n // System\n ...system,\n // Compute\n ...computeCommands,\n }\n);\n\n// Export individual command builders for destructured imports\n// Filesystem\nexport const {\n mkdir, rm, cp, mv, ls, pwd, chmod, chown, touch, cat, ln, readlink, test, rsync,\n} = filesystem;\n\n// Process\nexport const { node, python, kill, pkill, ps, timeout } = process;\n\n// Package managers\nexport const { npm, pnpm, yarn, pip, bun, deno, npx, bunx, uv, poetry, pipx } = packages;\n\n// Git\nexport const { git } = gitCommands;\n\n// Network\nexport const { curl, wget, port, net } = network;\n\n// Text processing\nexport const { grep, sed, head, tail, wc, sort, uniq, jq, xargs, awk, cut, tr } = text;\n\n// Archives\nexport const { tar, unzip } = archive;\n\n// System\nexport const {\n echo, env, printenv, which, whoami, uname, hostname,\n df, du, sleep, date, find, tee, diff, parallel, raw,\n base64, md5sum, sha256sum, sha1sum,\n} = system;\n\n// Compute\nexport const { compute } = computeCommands;\n\n// Default export for convenience\nexport default cmd;\n","import type { Command, ShellOptions } from './types.js';\n\n/**\n * Escape a string for safe use in shell commands using single quotes.\n * This is the safest method as single quotes preserve all characters literally,\n * except for single quotes themselves which must be handled specially.\n *\n * @example shellEscape(\"hello world\") // \"'hello world'\"\n * @example shellEscape(\"it's here\") // \"'it'\\\\''s here'\"\n * @example shellEscape(\"$HOME\") // \"'$HOME'\" (no variable expansion)\n */\nexport function shellEscape(s: string): string {\n // Wrap in single quotes and escape any embedded single quotes\n // 'foo'bar' becomes 'foo'\\''bar' (end quote, escaped quote, start quote)\n return \"'\" + s.replace(/'/g, \"'\\\\''\") + \"'\";\n}\n\n/**\n * Escape a string for use inside double quotes.\n *\n * This is a legacy helper kept for backward compatibility; for new code,\n * prefer {@link shellEscape} which uses single-quoted, safer shell escaping.\n *\n * @example esc('path with \"quotes\"') // 'path with \\\\\"quotes\\\\\"'\n * @deprecated Use {@link shellEscape} for safer escaping. This function only escapes\n * double quotes and may not be safe for all shell contexts. Migration: replace\n * `esc(str)` with `shellEscape(str)`.\n */\nexport function esc(s: string): string {\n return s.replace(/\"/g, '\\\\\"');\n}\n\n/**\n * Escape each argument in a command array and join them with spaces.\n * Arguments that are safe (alphanumeric, dash, underscore, dot, slash, colon, equals)\n * are left unquoted for readability.\n *\n * @example escapeArgs(['npm', 'install', 'express']) // 'npm install express'\n * @example escapeArgs(['echo', 'hello world']) // \"echo 'hello world'\"\n * @example escapeArgs(['cp', 'file with spaces.txt', '/dest']) // \"cp 'file with spaces.txt' /dest\"\n */\nexport function escapeArgs(args: string[]): string {\n return args.map(arg => {\n // If arg contains only safe characters, no escaping needed\n if (/^[a-zA-Z0-9_./:=@-]+$/.test(arg) && arg.length > 0) {\n return arg;\n }\n // Otherwise, use shellEscape for safety\n return shellEscape(arg);\n }).join(' ');\n}\n\n/**\n * Internal helper to build shell command with proper escaping\n */\nexport function buildShellCommand(shellBin: string, command: Command, options?: ShellOptions): Command {\n if (!options?.cwd && !options?.background) {\n return command;\n }\n\n let cmdStr = escapeArgs(command);\n\n // Build command: first wrap with nohup if background, then prepend cd if cwd\n // Result: cd '/path' && nohup cmd > /dev/null 2>&1 &\n if (options.background) {\n cmdStr = `nohup ${cmdStr} > /dev/null 2>&1 &`;\n }\n\n if (options.cwd) {\n cmdStr = `cd ${shellEscape(options.cwd)} && ${cmdStr}`;\n }\n\n return [shellBin, '-c', cmdStr];\n}\n","import type { Command, ShellOptions } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Shell wrapper - callable function with shell-specific methods\n *\n * @example\n * // Default (sh)\n * shell(cmd.npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd \"/app\" && npm install']\n *\n * @example\n * // Shell-specific\n * shell.bash(cmd.node('server.js'), { background: true })\n * // => ['bash', '-c', 'nohup node server.js > /dev/null 2>&1 &']\n *\n * @example\n * shell.zsh(cmd.npm.run('dev'), { cwd: '/app' })\n * // => ['zsh', '-c', 'cd \"/app\" && npm run dev']\n */\nexport const shell = Object.assign(\n // Default: use sh\n (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n /** Wrap with sh (POSIX shell) */\n sh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n /** Wrap with bash */\n bash: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('bash', command, options);\n },\n /** Wrap with zsh */\n zsh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('zsh', command, options);\n },\n }\n);\n\n// Individual shell exports\nexport const sh = shell.sh;\nexport const bash = shell.bash;\nexport const zsh = shell.zsh;\n","import type { Command } from '../types.js';\n\n/**\n * Create directory\n *\n * By default, recursive is true (includes -p flag to create parent directories).\n * This differs from standard shell mkdir which requires explicit -p flag.\n *\n * @example mkdir('/app/src') // ['mkdir', '-p', '/app/src']\n * @example mkdir('/app/src', { recursive: false }) // ['mkdir', '/app/src']\n */\nexport const mkdir = (path: string, options?: { recursive?: boolean }): Command => {\n const recursive = options?.recursive ?? true;\n return recursive ? ['mkdir', '-p', path] : ['mkdir', path];\n};\n\n/**\n * Remove file or directory\n * @example rm('/app/file.txt') // ['rm', '/app/file.txt']\n * @example rm('/app/tmp', { recursive: true }) // ['rm', '-r', '/app/tmp']\n * @example rm('/app/tmp', { recursive: true, force: true }) // ['rm', '-rf', '/app/tmp']\n * @example rm.rf('/app/tmp') // ['rm', '-rf', '/app/tmp']\n * @example rm.auto('/app/anything') // Automatically detects file vs directory\n */\nexport const rm = Object.assign(\n (path: string, options?: { recursive?: boolean; force?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.recursive) flags.push('r');\n if (options?.force) flags.push('f');\n return flags.length > 0 ? ['rm', `-${flags.join('')}`, path] : ['rm', path];\n },\n {\n /**\n * Force remove file or directory (always uses -rf)\n * @example rm.rf('/app/tmp')\n */\n rf: (path: string): Command => ['rm', '-rf', path],\n \n /**\n * Smart remove - automatically detects if path is a directory and uses appropriate flags\n * Uses a shell one-liner to check if directory and apply -r flag accordingly\n * @example rm.auto('/app/tmp')\n */\n auto: (path: string): Command => {\n // Shell one-liner: if it's a directory, use -rf, otherwise just rm -f\n return ['sh', '-c', `if [ -d \"${path}\" ]; then rm -rf \"${path}\"; else rm -f \"${path}\"; fi`];\n }\n }\n);\n\n/**\n * Copy file or directory\n * @example cp('/src/file.txt', '/dest/file.txt')\n */\nexport const cp = (src: string, dest: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['cp', '-r', src, dest] : ['cp', src, dest];\n};\n\n/**\n * Move/rename file or directory\n * @example mv('/old/path', '/new/path')\n */\nexport const mv = (src: string, dest: string): Command => ['mv', src, dest];\n\n/**\n * List directory contents\n * @example ls('/app') // ['ls', '/app']\n * @example ls('/app', { all: true, long: true }) // ['ls', '-la', '/app']\n */\nexport const ls = (path?: string, options?: { all?: boolean; long?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.long) flags.push('l');\n if (options?.all) flags.push('a');\n const flagStr = flags.length > 0 ? `-${flags.join('')}` : '';\n if (flagStr && path) return ['ls', flagStr, path];\n if (flagStr) return ['ls', flagStr];\n if (path) return ['ls', path];\n return ['ls'];\n};\n\n/**\n * Print working directory\n * @example pwd() // ['pwd']\n */\nexport const pwd = (): Command => ['pwd'];\n\n/**\n * Change file permissions\n * @example chmod('755', '/app/script.sh')\n */\nexport const chmod = (mode: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chmod', '-R', mode, path] : ['chmod', mode, path];\n};\n\n/**\n * Change file owner/group\n * @example chown('user', '/app/file.txt')\n * @example chown('user:group', '/app', { recursive: true })\n */\nexport const chown = (owner: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chown', '-R', owner, path] : ['chown', owner, path];\n};\n\n/**\n * Create empty file or update timestamp\n * @example touch('/app/newfile.txt')\n */\nexport const touch = (path: string): Command => ['touch', path];\n\n/**\n * Read file contents\n * @example cat('/app/file.txt')\n */\nexport const cat = (path: string): Command => ['cat', path];\n\n/**\n * Create symbolic link\n * @example ln('/app/config', '/etc/app/config')\n * @example ln('/app/config', '/etc/app/config', { symbolic: true, force: true })\n */\nexport const ln = (target: string, link: string, options?: { symbolic?: boolean; force?: boolean }): Command => {\n const args = ['ln'];\n if (options?.symbolic !== false) args.push('-s'); // symbolic by default\n if (options?.force) args.push('-f');\n args.push(target, link);\n return args as Command;\n};\n\n/**\n * Resolve symbolic link\n * @example readlink('/usr/bin/python')\n * @example readlink('/usr/bin/python', { canonical: true })\n */\nexport const readlink = (path: string, options?: { canonical?: boolean }): Command => {\n return options?.canonical ? ['readlink', '-f', path] : ['readlink', path];\n};\n\n/**\n * Filesystem checks (exit 0 if true, 1 if false)\n * @example test.exists('/app/file.txt')\n * @example test.isDir('/app')\n */\nexport const test = {\n exists: (path: string): Command => ['test', '-e', path],\n isFile: (path: string): Command => ['test', '-f', path],\n isDir: (path: string): Command => ['test', '-d', path],\n isReadable: (path: string): Command => ['test', '-r', path],\n isWritable: (path: string): Command => ['test', '-w', path],\n isExecutable: (path: string): Command => ['test', '-x', path],\n notEmpty: (path: string): Command => ['test', '-s', path],\n isSymlink: (path: string): Command => ['test', '-L', path],\n};\n\n/**\n * Sync files/directories with rsync\n * @example rsync('/src/', '/dest/')\n * @example rsync('/src/', 'user@host:/dest/', { archive: true, compress: true })\n */\nexport const rsync = (src: string, dest: string, options?: {\n archive?: boolean;\n verbose?: boolean;\n compress?: boolean;\n delete?: boolean;\n dryRun?: boolean;\n exclude?: string[];\n}): Command => {\n const args = ['rsync'];\n if (options?.archive) args.push('-a');\n if (options?.verbose) args.push('-v');\n if (options?.compress) args.push('-z');\n if (options?.delete) args.push('--delete');\n if (options?.dryRun) args.push('--dry-run');\n if (options?.exclude) {\n for (const pattern of options.exclude) {\n args.push('--exclude', pattern);\n }\n }\n args.push(src, dest);\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Run Node.js script\n * @example node('server.js')\n * @example node('server.js', ['--port', '3000'])\n */\nexport const node = (script: string, args?: string[]): Command => {\n return args ? ['node', script, ...args] : ['node', script];\n};\n\n/**\n * Run Python script\n * @example python('script.py')\n * @example python('script.py', ['--verbose'])\n */\nexport const python = (script: string, args?: string[]): Command => {\n return args ? ['python3', script, ...args] : ['python3', script];\n};\n\n/**\n * Kill process by PID\n * @example kill(1234)\n * @example kill(1234, 9) // SIGKILL\n */\nexport const kill = (pid: number, signal?: number): Command => {\n return signal ? ['kill', `-${signal}`, String(pid)] : ['kill', String(pid)];\n};\n\n/**\n * Kill processes by name\n * @example pkill('node')\n * @example pkill('python', { signal: 9 })\n */\nexport const pkill = (name: string, options?: { signal?: number }): Command => {\n return options?.signal\n ? ['pkill', `-${options.signal}`, name]\n : ['pkill', name];\n};\n\n/**\n * List processes\n * @example ps()\n * @example ps({ all: true })\n */\nexport const ps = (options?: { all?: boolean }): Command => {\n return options?.all ? ['ps', 'aux'] : ['ps'];\n};\n\n/**\n * Run command with timeout\n * @example timeout(30, 'npm', ['test'])\n * @example timeout(10, 'curl', ['https://example.com'])\n */\nexport const timeout = (seconds: number, command: string, args?: string[]): Command => {\n const base: string[] = ['timeout', String(seconds), command];\n return args ? [...base, ...args] as Command : base as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * npm package manager commands\n */\nexport const npm = {\n /**\n * Install packages\n * @example npm.install() // ['npm', 'install']\n * @example npm.install('express') // ['npm', 'install', 'express']\n * @example npm.install('express', { dev: true }) // ['npm', 'install', '-D', 'express']\n */\n install: (pkg?: string, options?: { dev?: boolean; global?: boolean }): Command => {\n const args = ['npm', 'install'];\n if (options?.dev) args.push('-D');\n if (options?.global) args.push('-g');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run npm script\n * @example npm.run('build')\n * @example npm.run('test', ['--coverage'])\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['npm', 'run', script, '--', ...args] : ['npm', 'run', script];\n },\n\n /**\n * Initialize new package\n * @example npm.init() // ['npm', 'init', '-y']\n */\n init: (): Command => ['npm', 'init', '-y'],\n\n /**\n * Uninstall package\n * @example npm.uninstall('lodash')\n */\n uninstall: (pkg: string): Command => ['npm', 'uninstall', pkg],\n};\n\n/**\n * pnpm package manager commands\n */\nexport const pnpm = {\n /**\n * Install packages with pnpm\n * @example pnpm.install()\n * @example pnpm.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['pnpm', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run pnpm script\n * @example pnpm.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['pnpm', 'run', script, '--', ...args] : ['pnpm', 'run', script];\n },\n};\n\n/**\n * yarn package manager commands\n */\nexport const yarn = {\n /**\n * Install packages with yarn\n * @example yarn.install()\n */\n install: (): Command => ['yarn', 'install'],\n\n /**\n * Add package\n * @example yarn.add('express')\n * @example yarn.add('typescript', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev ? ['yarn', 'add', '-D', pkg] : ['yarn', 'add', pkg];\n },\n\n /**\n * Run yarn script\n * @example yarn.run('build')\n */\n run: (script: string): Command => ['yarn', 'run', script],\n};\n\n/**\n * pip Python package manager commands\n */\nexport const pip = {\n /**\n * Install Python package\n * @example pip.install('requests')\n * @example pip.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['pip', 'install', pkg],\n\n /**\n * Uninstall Python package\n * @example pip.uninstall('requests')\n */\n uninstall: (pkg: string): Command => ['pip', 'uninstall', '-y', pkg],\n};\n\n/**\n * bun runtime commands\n */\nexport const bun = {\n /**\n * Install packages with bun\n * @example bun.install()\n * @example bun.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['bun', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run bun script\n * @example bun.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['bun', 'run', script, ...args] : ['bun', 'run', script];\n },\n\n /**\n * Run file with bun\n * @example bun.exec('server.ts')\n */\n exec: (file: string, args?: string[]): Command => {\n return args ? ['bun', file, ...args] : ['bun', file];\n },\n};\n\n/**\n * deno runtime commands\n */\nexport const deno = {\n /**\n * Run deno script\n * @example deno.run('server.ts')\n * @example deno.run('server.ts', { allow: ['net', 'read'] })\n */\n run: (file: string, options?: { allow?: string[] }): Command => {\n const args = ['deno', 'run'];\n if (options?.allow) {\n for (const perm of options.allow) {\n args.push(`--allow-${perm}`);\n }\n }\n args.push(file);\n return args as Command;\n },\n\n /**\n * Install deno package\n * @example deno.install('https://deno.land/std/http/file_server.ts')\n */\n install: (url: string, options?: { name?: string }): Command => {\n const args = ['deno', 'install'];\n if (options?.name) args.push('-n', options.name);\n args.push(url);\n return args as Command;\n },\n};\n\n/**\n * Run packages with npx - callable function with additional methods\n * @example npx('create-react-app', ['my-app']) // run package directly\n * @example npx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const npx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['npx', pkg, ...args] : ['npx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires npx)\n * @example npx.concurrently(['npm:dev', 'npm:watch'])\n * @example npx.concurrently(['npm run dev', 'npm run watch'], { names: ['dev', 'watch'], killOthers: true })\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['npx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * Run packages with bunx - callable function with additional methods\n * @example bunx('create-next-app', ['my-app']) // run package directly\n * @example bunx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const bunx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['bunx', pkg, ...args] : ['bunx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires bunx)\n * @example bunx.concurrently(['npm:dev', 'npm:watch'])\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['bunx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * uv - Fast Python package manager\n */\nexport const uv = {\n /**\n * Install Python packages with uv\n * @example uv.install('requests')\n * @example uv.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['uv', 'pip', 'install', pkg],\n\n /**\n * Run Python script with uv\n * @example uv.run('script.py')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['uv', 'run', script, ...args] : ['uv', 'run', script];\n },\n\n /**\n * Sync dependencies from pyproject.toml\n * @example uv.sync()\n */\n sync: (): Command => ['uv', 'sync'],\n\n /**\n * Create virtual environment\n * @example uv.venv()\n * @example uv.venv('.venv')\n */\n venv: (path?: string): Command => {\n return path ? ['uv', 'venv', path] : ['uv', 'venv'];\n },\n};\n\n/**\n * poetry - Python dependency management\n */\nexport const poetry = {\n /**\n * Install dependencies\n * @example poetry.install()\n */\n install: (options?: { noRoot?: boolean }): Command => {\n const args = ['poetry', 'install'];\n if (options?.noRoot) args.push('--no-root');\n return args as Command;\n },\n\n /**\n * Add a dependency\n * @example poetry.add('requests')\n * @example poetry.add('pytest', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev\n ? ['poetry', 'add', '--group', 'dev', pkg]\n : ['poetry', 'add', pkg];\n },\n\n /**\n * Run command in poetry environment\n * @example poetry.run('python', ['script.py'])\n */\n run: (command: string, args?: string[]): Command => {\n return args ? ['poetry', 'run', command, ...args] : ['poetry', 'run', command];\n },\n\n /**\n * Build package\n * @example poetry.build()\n */\n build: (): Command => ['poetry', 'build'],\n};\n\n/**\n * pipx - Install and run Python applications\n */\nexport const pipx = {\n /**\n * Install application globally\n * @example pipx.install('black')\n */\n install: (pkg: string): Command => ['pipx', 'install', pkg],\n\n /**\n * Run application without installing\n * @example pipx.run('black', ['--check', '.'])\n */\n run: (pkg: string, args?: string[]): Command => {\n return args ? ['pipx', 'run', pkg, ...args] : ['pipx', 'run', pkg];\n },\n\n /**\n * Uninstall application\n * @example pipx.uninstall('black')\n */\n uninstall: (pkg: string): Command => ['pipx', 'uninstall', pkg],\n\n /**\n * Upgrade application\n * @example pipx.upgrade('black')\n */\n upgrade: (pkg: string): Command => ['pipx', 'upgrade', pkg],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Git version control commands\n */\nexport const git = {\n /**\n * Clone repository\n * @example git.clone('https://github.com/user/repo.git')\n * @example git.clone('https://github.com/user/repo.git', { depth: 1 })\n */\n clone: (url: string, options?: { depth?: number; branch?: string; dir?: string }): Command => {\n const args = ['git', 'clone'];\n if (options?.depth) args.push('--depth', String(options.depth));\n if (options?.branch) args.push('-b', options.branch);\n args.push(url);\n if (options?.dir) args.push(options.dir);\n return args as Command;\n },\n\n /**\n * Pull latest changes\n * @example git.pull()\n */\n pull: (): Command => ['git', 'pull'],\n\n /**\n * Checkout branch\n * @example git.checkout('main')\n * @example git.checkout('feature', { create: true })\n */\n checkout: (branch: string, options?: { create?: boolean }): Command => {\n return options?.create\n ? ['git', 'checkout', '-b', branch]\n : ['git', 'checkout', branch];\n },\n\n /**\n * Git status\n * @example git.status()\n */\n status: (): Command => ['git', 'status'],\n\n /**\n * Stage files\n * @example git.add('.')\n * @example git.add('src/index.ts')\n */\n add: (path: string, options?: { all?: boolean }): Command => {\n return options?.all ? ['git', 'add', '-A', path] : ['git', 'add', path];\n },\n\n /**\n * Commit staged changes\n * @example git.commit('feat: add new feature')\n * @example git.commit('fix: bug fix', { all: true })\n */\n commit: (message: string, options?: { all?: boolean }): Command => {\n return options?.all\n ? ['git', 'commit', '-a', '-m', message]\n : ['git', 'commit', '-m', message];\n },\n\n /**\n * Push to remote\n * @example git.push()\n * @example git.push({ remote: 'origin', branch: 'main' })\n * @example git.push({ setUpstream: true, branch: 'feature' })\n */\n push: (options?: { remote?: string; branch?: string; setUpstream?: boolean; force?: boolean }): Command => {\n const args = ['git', 'push'];\n if (options?.setUpstream) args.push('-u');\n if (options?.force) args.push('--force');\n if (options?.remote) args.push(options.remote);\n if (options?.branch) args.push(options.branch);\n return args as Command;\n },\n\n /**\n * List or create branches\n * @example git.branch()\n * @example git.branch({ all: true })\n * @example git.branch('new-feature', { create: true })\n */\n branch: (name?: string, options?: { all?: boolean; delete?: boolean; create?: boolean }): Command => {\n const args = ['git', 'branch'];\n if (options?.all) args.push('-a');\n if (options?.delete) args.push('-d');\n if (name) args.push(name);\n return args as Command;\n },\n\n /**\n * Show changes\n * @example git.diff()\n * @example git.diff({ staged: true })\n * @example git.diff({ file: 'src/index.ts' })\n */\n diff: (options?: { staged?: boolean; file?: string }): Command => {\n const args = ['git', 'diff'];\n if (options?.staged) args.push('--staged');\n if (options?.file) args.push(options.file);\n return args as Command;\n },\n\n /**\n * Show commit history\n * @example git.log()\n * @example git.log({ oneline: true, count: 10 })\n */\n log: (options?: { oneline?: boolean; count?: number }): Command => {\n const args = ['git', 'log'];\n if (options?.oneline) args.push('--oneline');\n if (options?.count) args.push('-n', String(options.count));\n return args as Command;\n },\n\n /**\n * Stash changes\n * @example git.stash()\n * @example git.stash({ pop: true })\n * @example git.stash({ list: true })\n */\n stash: (options?: { pop?: boolean; list?: boolean; drop?: boolean; message?: string }): Command => {\n const args = ['git', 'stash'];\n if (options?.pop) args.push('pop');\n else if (options?.list) args.push('list');\n else if (options?.drop) args.push('drop');\n else if (options?.message) args.push('push', '-m', options.message);\n return args as Command;\n },\n\n /**\n * Fetch from remote\n * @example git.fetch()\n * @example git.fetch({ all: true })\n */\n fetch: (options?: { remote?: string; all?: boolean; prune?: boolean }): Command => {\n const args = ['git', 'fetch'];\n if (options?.all) args.push('--all');\n if (options?.prune) args.push('--prune');\n if (options?.remote) args.push(options.remote);\n return args as Command;\n },\n\n /**\n * Reset changes\n * @example git.reset()\n * @example git.reset({ hard: true })\n * @example git.reset({ ref: 'HEAD~1' })\n */\n reset: (options?: { hard?: boolean; soft?: boolean; ref?: string }): Command => {\n const args = ['git', 'reset'];\n if (options?.hard) args.push('--hard');\n if (options?.soft) args.push('--soft');\n if (options?.ref) args.push(options.ref);\n return args as Command;\n },\n\n /**\n * Initialize repository\n * @example git.init()\n */\n init: (): Command => ['git', 'init'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Download file with curl\n * @example curl('https://example.com/file.tar.gz')\n * @example curl('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const curl = (url: string, options?: { output?: string; silent?: boolean }): Command => {\n const args = ['curl'];\n if (options?.silent) args.push('-s');\n args.push('-L'); // follow redirects\n if (options?.output) {\n args.push('-o', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Download file with wget\n * @example wget('https://example.com/file.tar.gz')\n * @example wget('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const wget = (url: string, options?: { output?: string; quiet?: boolean }): Command => {\n const args = ['wget'];\n if (options?.quiet) args.push('-q');\n if (options?.output) {\n args.push('-O', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Port management utilities\n */\nexport const port = {\n /**\n * Find process using a port (using lsof)\n * @example port.find(3000)\n */\n find: (p: number): Command => ['lsof', '-i', `:${p}`],\n\n /**\n * Kill process on a port\n * @example port.kill(3000)\n */\n kill: (p: number): Command => ['sh', '-c', `lsof -ti :${p} | xargs kill -9 2>/dev/null || true`],\n\n /**\n * Check if port is in use (exits 0 if in use)\n * @example port.isUsed(3000)\n */\n isUsed: (p: number): Command => ['sh', '-c', `lsof -i :${p} >/dev/null 2>&1`],\n\n /**\n * List all listening ports\n * @example port.list()\n */\n list: (): Command => ['ss', '-tlnp'],\n\n /**\n * Wait for port to be available (with timeout)\n * @example port.waitFor(3000, 30)\n */\n waitFor: (p: number, timeoutSeconds?: number): Command => {\n const timeout = timeoutSeconds ?? 30;\n return ['sh', '-c', `for i in $(seq 1 ${timeout}); do nc -z localhost ${p} && exit 0 || sleep 1; done; exit 1`];\n },\n};\n\n/**\n * Network utilities\n */\nexport const net = {\n /**\n * Check connectivity to host\n * @example net.ping('google.com')\n * @example net.ping('google.com', 3)\n */\n ping: (host: string, count?: number): Command => {\n return count ? ['ping', '-c', String(count), host] : ['ping', '-c', '1', host];\n },\n\n /**\n * Check if host:port is reachable\n * @example net.check('localhost', 3000)\n */\n check: (host: string, p: number): Command => ['nc', '-z', host, String(p)],\n\n /**\n * Get public IP\n * @example net.publicIp()\n */\n publicIp: (): Command => ['curl', '-s', 'ifconfig.me'],\n\n /**\n * Show network interfaces\n * @example net.interfaces()\n */\n interfaces: (): Command => ['ip', 'addr'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Search for pattern in files\n * @example grep('TODO', 'src/*.ts')\n * @example grep('error', undefined, { recursive: true, ignoreCase: true })\n */\nexport const grep = (pattern: string, file?: string, options?: { recursive?: boolean; ignoreCase?: boolean; lineNumber?: boolean }): Command => {\n const args = ['grep'];\n if (options?.recursive) args.push('-r');\n if (options?.ignoreCase) args.push('-i');\n if (options?.lineNumber) args.push('-n');\n args.push(pattern);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Stream editor for filtering and transforming text\n * @example sed('s/foo/bar/g', 'file.txt')\n * @example sed('s/foo/bar/g', 'file.txt', { inPlace: true })\n */\nexport const sed = (expression: string, file: string, options?: { inPlace?: boolean }): Command => {\n return options?.inPlace\n ? ['sed', '-i', expression, file]\n : ['sed', expression, file];\n};\n\n/**\n * Output first lines of file\n * @example head('file.txt')\n * @example head('file.txt', 20)\n */\nexport const head = (file: string, lines?: number): Command => {\n return lines ? ['head', '-n', String(lines), file] : ['head', file];\n};\n\n/**\n * Output last lines of file\n * @example tail('file.txt')\n * @example tail('file.txt', 20)\n * @example tail('app.log', undefined, { follow: true })\n */\nexport const tail = (file: string, lines?: number, options?: { follow?: boolean }): Command => {\n const args = ['tail'];\n if (options?.follow) args.push('-f');\n if (lines) args.push('-n', String(lines));\n args.push(file);\n return args as Command;\n};\n\n/**\n * Word, line, character count\n * @example wc('file.txt')\n * @example wc('file.txt', { lines: true })\n */\nexport const wc = (file: string, options?: { lines?: boolean; words?: boolean; chars?: boolean }): Command => {\n const args = ['wc'];\n if (options?.lines) args.push('-l');\n if (options?.words) args.push('-w');\n if (options?.chars) args.push('-c');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Sort lines of text\n * @example sort('file.txt')\n * @example sort('file.txt', { reverse: true, numeric: true })\n */\nexport const sort = (file: string, options?: { reverse?: boolean; numeric?: boolean; unique?: boolean }): Command => {\n const args = ['sort'];\n if (options?.reverse) args.push('-r');\n if (options?.numeric) args.push('-n');\n if (options?.unique) args.push('-u');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Report or filter out repeated lines\n * @example uniq('file.txt')\n * @example uniq('file.txt', { count: true })\n */\nexport const uniq = (file: string, options?: { count?: boolean }): Command => {\n return options?.count ? ['uniq', '-c', file] : ['uniq', file];\n};\n\n/**\n * Process JSON with jq\n * @example jq('.name', 'data.json')\n * @example jq('.[] | .id') // for piping\n */\nexport const jq = (filter: string, file?: string, options?: { raw?: boolean; compact?: boolean }): Command => {\n const args = ['jq'];\n if (options?.raw) args.push('-r');\n if (options?.compact) args.push('-c');\n args.push(filter);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Build and execute commands from stdin\n * @example xargs('rm') // pipe file list to rm\n * @example xargs('grep', ['pattern'], { parallel: 4 })\n */\nexport const xargs = (command: string, args?: string[], options?: { parallel?: number; nullDelimited?: boolean }): Command => {\n const xargsArgs = ['xargs'];\n if (options?.nullDelimited) xargsArgs.push('-0');\n if (options?.parallel) xargsArgs.push('-P', String(options.parallel));\n xargsArgs.push(command);\n if (args) xargsArgs.push(...args);\n return xargsArgs as Command;\n};\n\n/**\n * Pattern scanning and processing\n * @example awk('{print $1}', 'file.txt')\n * @example awk('BEGIN {sum=0} {sum+=$1} END {print sum}', 'numbers.txt')\n */\nexport const awk = (program: string, file?: string, options?: { fieldSeparator?: string }): Command => {\n const args = ['awk'];\n if (options?.fieldSeparator) args.push('-F', options.fieldSeparator);\n args.push(program);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Extract columns/fields from lines\n * @example cut('file.txt', { fields: '1,3', delimiter: ',' })\n * @example cut('file.txt', { characters: '1-10' })\n */\nexport const cut = (file: string, options: { fields?: string; delimiter?: string; characters?: string }): Command => {\n const args = ['cut'];\n if (options.delimiter) args.push('-d', options.delimiter);\n if (options.fields) args.push('-f', options.fields);\n if (options.characters) args.push('-c', options.characters);\n args.push(file);\n return args as Command;\n};\n\n/**\n * Translate or delete characters\n * @example tr('a-z', 'A-Z') // uppercase\n * @example tr('\\n', ' ') // newlines to spaces\n * @example tr('', '', { delete: 'abc' }) // delete chars\n */\nexport const tr = (set1: string, set2?: string, options?: { delete?: string; squeeze?: boolean }): Command => {\n const args = ['tr'];\n if (options?.delete) {\n args.push('-d', options.delete);\n } else {\n if (options?.squeeze) args.push('-s');\n args.push(set1);\n if (set2) args.push(set2);\n }\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Tar archive operations\n */\nexport const tar = {\n /**\n * Extract tar archive\n * @example tar.extract('archive.tar.gz')\n * @example tar.extract('archive.tar.gz', { dir: '/app' })\n */\n extract: (file: string, options?: { dir?: string }): Command => {\n const args = ['tar', '-xzf', file];\n if (options?.dir) args.push('-C', options.dir);\n return args as Command;\n },\n\n /**\n * Create tar archive\n * @example tar.create('archive.tar.gz', '/app/dist')\n */\n create: (output: string, source: string): Command => {\n return ['tar', '-czf', output, source];\n },\n};\n\n/**\n * Unzip archive\n * @example unzip('archive.zip')\n * @example unzip('archive.zip', { dir: '/app' })\n */\nexport const unzip = (file: string, options?: { dir?: string }): Command => {\n return options?.dir ? ['unzip', '-o', file, '-d', options.dir] : ['unzip', '-o', file];\n};\n","import type { Command } from '../types.js';\n\n/**\n * Print environment variable\n * @example echo('$HOME')\n * @example echo('Hello World')\n */\nexport const echo = (text: string): Command => ['echo', text];\n\n/**\n * Print environment variables\n * @example env()\n */\nexport const env = (): Command => ['env'];\n\n/**\n * Print specific environment variable\n * @example printenv('PATH')\n * @example printenv() // prints all\n */\nexport const printenv = (name?: string): Command => {\n return name ? ['printenv', name] : ['printenv'];\n};\n\n/**\n * Which command location\n * @example which('node')\n */\nexport const which = (command: string): Command => ['which', command];\n\n/**\n * Print current user\n * @example whoami()\n */\nexport const whoami = (): Command => ['whoami'];\n\n/**\n * Print system information\n * @example uname()\n * @example uname({ all: true })\n */\nexport const uname = (options?: { all?: boolean }): Command => {\n return options?.all ? ['uname', '-a'] : ['uname'];\n};\n\n/**\n * Print hostname\n * @example hostname()\n */\nexport const hostname = (): Command => ['hostname'];\n\n/**\n * Report disk space usage\n * @example df()\n * @example df('/app')\n */\nexport const df = (path?: string, options?: { human?: boolean }): Command => {\n const args = ['df'];\n if (options?.human) args.push('-h');\n if (path) args.push(path);\n return args as Command;\n};\n\n/**\n * Estimate file/directory space usage\n * @example du('/app')\n * @example du('/app', { human: true, summarize: true })\n */\nexport const du = (path: string, options?: { human?: boolean; summarize?: boolean }): Command => {\n const args = ['du'];\n if (options?.human) args.push('-h');\n if (options?.summarize) args.push('-s');\n args.push(path);\n return args as Command;\n};\n\n/**\n * Delay for specified seconds\n * @example sleep(5)\n */\nexport const sleep = (seconds: number): Command => ['sleep', String(seconds)];\n\n/**\n * Print date/time\n * @example date()\n * @example date('+%Y-%m-%d')\n */\nexport const date = (format?: string): Command => {\n return format ? ['date', format] : ['date'];\n};\n\n/**\n * Find files\n * @example find('/app', { name: '*.ts' })\n * @example find('/app', { type: 'f', name: '*.js' })\n */\nexport const find = (path: string, options?: { name?: string; type?: 'f' | 'd' }): Command => {\n const args = ['find', path];\n if (options?.type) args.push('-type', options.type);\n if (options?.name) args.push('-name', options.name);\n return args as Command;\n};\n\n/**\n * Write to file and stdout\n * @example tee('/app/output.log')\n * @example tee('/app/output.log', { append: true })\n */\nexport const tee = (file: string, options?: { append?: boolean }): Command => {\n return options?.append ? ['tee', '-a', file] : ['tee', file];\n};\n\n/**\n * Compare files\n * @example diff('file1.txt', 'file2.txt')\n * @example diff('file1.txt', 'file2.txt', { unified: true })\n */\nexport const diff = (file1: string, file2: string, options?: { unified?: boolean; brief?: boolean }): Command => {\n const args = ['diff'];\n if (options?.unified) args.push('-u');\n if (options?.brief) args.push('-q');\n args.push(file1, file2);\n return args as Command;\n};\n\n/**\n * Run multiple commands in parallel\n * @example parallel(['npm run dev', 'npm run watch'])\n */\nexport const parallel = (commands: string[], options?: { killOthers?: boolean }): Command => {\n const joined = commands.join(' & ');\n if (options?.killOthers) {\n // trap EXIT to kill all background jobs when any exits\n return ['sh', '-c', `trap \"kill 0\" EXIT; ${joined} & wait`];\n }\n return ['sh', '-c', `${joined} & wait`];\n};\n\n/**\n * Build a custom command from parts\n * @example raw('my-cli', ['--flag', 'value'])\n */\nexport const raw = (command: string, args?: string[]): Command => {\n return args ? [command, ...args] : [command];\n};\n\n/**\n * Base64 encoding/decoding utilities\n */\nexport const base64 = {\n /**\n * Encode to base64\n * @example base64.encode('file.txt')\n */\n encode: (file?: string): Command => {\n return file ? ['base64', file] : ['base64'];\n },\n\n /**\n * Decode from base64\n * @example base64.decode('encoded.txt')\n */\n decode: (file?: string): Command => {\n return file ? ['base64', '-d', file] : ['base64', '-d'];\n },\n};\n\n/**\n * Compute MD5 checksum\n * @example md5sum('file.txt')\n * @example md5sum('file.txt', { check: true })\n */\nexport const md5sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['md5sum', '-c', file] : ['md5sum', file];\n};\n\n/**\n * Compute SHA256 checksum\n * @example sha256sum('file.txt')\n * @example sha256sum('file.txt', { check: true })\n */\nexport const sha256sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha256sum', '-c', file] : ['sha256sum', file];\n};\n\n/**\n * Compute SHA1 checksum\n * @example sha1sum('file.txt')\n */\nexport const sha1sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha1sum', '-c', file] : ['sha1sum', file];\n};\n","import type { Command } from '../types.js';\n\n/**\n * ComputeSDK CLI installation and management utilities\n */\n\n/**\n * Install the ComputeSDK CLI in a sandbox\n * \n * This command downloads and runs the official ComputeSDK installer.\n * The CLI provides the full ComputeSDK API (terminals, watchers, signals, etc.)\n * in any sandbox environment.\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * // Install compute in a raw E2B/Daytona/etc sandbox\n * await sandbox.runCommand(compute.install({ apiKey: process.env.COMPUTESDK_API_KEY }));\n * ```\n * \n * @param options Installation options\n * @param options.apiKey ComputeSDK API key (or set COMPUTESDK_API_KEY env var)\n * @param options.version Specific version to install (default: latest)\n * @param options.silent Suppress installation output (default: false)\n * @returns Command tuple for installing the compute CLI\n */\nexport const install = (options?: {\n apiKey?: string;\n version?: string;\n silent?: boolean;\n}): Command => {\n const installUrl = options?.version\n ? `https://computesdk.com/install.sh?version=${options.version}`\n : 'https://computesdk.com/install.sh';\n \n const curlFlags = options?.silent ? '-fsSL' : '-fSL';\n \n // Build the install command with optional API key\n let installCmd = `curl ${curlFlags} ${installUrl} | bash`;\n \n // If API key is provided, set it as environment variable for the install script\n if (options?.apiKey) {\n installCmd = `COMPUTESDK_API_KEY=\"${options.apiKey}\" ${installCmd}`;\n } else if (typeof process !== 'undefined' && process.env?.COMPUTESDK_API_KEY) {\n // Fallback to process.env if available\n installCmd = `COMPUTESDK_API_KEY=\"${process.env.COMPUTESDK_API_KEY}\" ${installCmd}`;\n }\n \n // Use sh -c to pipe curl output to bash\n return ['sh', '-c', installCmd];\n};\n\n/**\n * Check if the ComputeSDK CLI is installed\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * const result = await sandbox.runCommand(compute.isInstalled());\n * const installed = result.exitCode === 0;\n * ```\n * \n * @returns Command tuple that exits 0 if installed, 1 if not\n */\nexport const isInstalled = (): Command => {\n return ['sh', '-c', 'which compute > /dev/null 2>&1'];\n};\n\n/**\n * Get the installed compute version\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * const result = await sandbox.runCommand(compute.version());\n * console.log('Version:', result.stdout.trim());\n * ```\n * \n * @returns Command tuple to get compute version\n */\nexport const version = (): Command => {\n return ['compute', '--version'];\n};\n\n/**\n * Start the ComputeSDK daemon\n * \n * Note: The daemon usually auto-starts after installation.\n * This is mainly useful for restarting or manual control.\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * // With API key\n * await sandbox.runCommand(compute.start({ apiKey: process.env.COMPUTESDK_API_KEY }), { background: true });\n * \n * // With access token\n * await sandbox.runCommand(compute.start({ accessToken: process.env.ACCESS_TOKEN }), { background: true });\n * ```\n * \n * @param options Start options\n * @param options.apiKey ComputeSDK API key (or set COMPUTESDK_API_KEY env var)\n * @param options.accessToken Access token for authentication (alternative to apiKey)\n * @param options.port Port to listen on (default: 18080)\n * @param options.logLevel Log level (default: 'info')\n * @returns Command tuple to start the daemon\n */\nexport const start = (options?: {\n apiKey?: string;\n accessToken?: string;\n port?: number;\n logLevel?: 'debug' | 'info' | 'warn' | 'error';\n}): Command => {\n const args = ['compute', 'start'];\n \n const apiKey = options?.apiKey || (typeof process !== 'undefined' && process.env?.COMPUTESDK_API_KEY);\n const accessToken = options?.accessToken;\n \n // Prefer access token over API key if both are provided\n if (accessToken) {\n args.push('--access-token', accessToken);\n } else if (apiKey) {\n args.push('--api-key', apiKey);\n }\n \n if (options?.port) {\n args.push('--port', String(options.port));\n }\n \n if (options?.logLevel === 'debug') {\n args.push('--verbose');\n }\n \n return args as Command;\n};\n\n/**\n * Stop the ComputeSDK daemon\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * await sandbox.runCommand(compute.stop());\n * ```\n * \n * @returns Command tuple to stop the daemon\n */\nexport const stop = (): Command => {\n return ['pkill', '-f', 'compute start'];\n};\n\n/**\n * Check daemon health status\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * const result = await sandbox.runCommand(compute.health());\n * const healthy = result.exitCode === 0;\n * ```\n * \n * @param options Health check options\n * @param options.host Host to check (default: 'localhost')\n * @param options.port Port to check (default: 18080)\n * @returns Command tuple to check daemon health\n */\nexport const health = (options?: {\n host?: string;\n port?: number;\n}): Command => {\n const host = options?.host || 'localhost';\n const port = options?.port || 18080;\n return ['sh', '-c', `curl -f http://${host}:${port}/health > /dev/null 2>&1`];\n};\n\n/**\n * Check if compute daemon is set up and running\n * \n * Returns exit code 0 if daemon is installed and running (ready to use)\n * Returns exit code 1 if setup is needed (not installed or not running)\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * const result = await sandbox.runCommand(compute.isSetup());\n * if (result.exitCode === 0) {\n * console.log('Daemon is ready!');\n * } else {\n * console.log('Setup needed');\n * await sandbox.runCommand(compute.setup({ apiKey: 'key' }));\n * }\n * ```\n * \n * @param options Setup check options\n * @param options.host Host to check (default: 'localhost')\n * @param options.port Port to check (default: 18080)\n * @returns Command that exits 0 if setup, 1 if setup needed\n */\nexport const isSetup = (options?: {\n host?: string;\n port?: number;\n}): Command => {\n const host = options?.host || 'localhost';\n const port = options?.port || 18080;\n \n return ['sh', '-c', `\n if ! which compute > /dev/null 2>&1; then\n exit 1\n fi\n if ! curl -f http://${host}:${port}/health > /dev/null 2>&1; then\n exit 1\n fi\n exit 0\n `.trim()];\n};\n\n/**\n * Install and start the ComputeSDK daemon in one command\n * \n * This is a convenience method that installs the compute CLI and starts the daemon.\n * Useful for quickly setting up a sandbox with ComputeSDK capabilities.\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * // Quick setup with API key\n * await sandbox.runCommand(compute.setup({ apiKey: process.env.COMPUTESDK_API_KEY }));\n * ```\n * \n * @param options Setup options\n * @param options.apiKey ComputeSDK API key (or set COMPUTESDK_API_KEY env var)\n * @param options.accessToken Access token for authentication (alternative to apiKey)\n * @param options.port Port to listen on (default: 18080)\n * @param options.version Specific version to install (default: latest)\n * @param options.silent Suppress installation output (default: false)\n * @returns Command tuple for installing and starting the daemon\n */\nexport const setup = (options?: {\n apiKey?: string;\n accessToken?: string;\n port?: number;\n version?: string;\n silent?: boolean;\n}): Command => {\n const apiKey = options?.apiKey || (typeof process !== 'undefined' && process.env?.COMPUTESDK_API_KEY);\n const accessToken = options?.accessToken;\n \n const installUrl = options?.version\n ? `https://computesdk.com/install.sh?version=${options.version}`\n : 'https://computesdk.com/install.sh';\n \n const curlFlags = options?.silent ? '-fsSL' : '-fSL';\n \n // Build install command\n let installCmd = `curl ${curlFlags} ${installUrl} | bash`;\n \n // Add API key to install if provided\n if (apiKey) {\n installCmd = `COMPUTESDK_API_KEY=\"${apiKey}\" ${installCmd}`;\n }\n \n // Build start command\n let startCmd = 'compute start';\n \n // Add authentication flags\n if (accessToken) {\n startCmd += ` --access-token \"${accessToken}\"`;\n } else if (apiKey) {\n startCmd += ` --api-key \"${apiKey}\"`;\n }\n \n if (options?.port) {\n startCmd += ` --port ${options.port}`;\n }\n \n // Combine: install, then start in background\n const fullCmd = `${installCmd} && ${startCmd} > /dev/null 2>&1 &`;\n \n return ['sh', '-c', fullCmd];\n};\n\n/**\n * ComputeSDK CLI management utilities\n * \n * @example\n * ```typescript\n * import { compute } from '@computesdk/cmd';\n * \n * // Quick setup (install + start)\n * await sandbox.runCommand(compute.setup({ apiKey: process.env.COMPUTESDK_API_KEY }));\n * \n * // Or install and start separately\n * await sandbox.runCommand(compute.install());\n * await sandbox.runCommand(compute.start({ apiKey: process.env.COMPUTESDK_API_KEY }));\n * \n * // Check if installed\n * const result = await sandbox.runCommand(compute.isInstalled());\n * if (result.exitCode === 0) {\n * console.log('Compute is installed!');\n * }\n * \n * // Get version\n * const versionResult = await sandbox.runCommand(compute.version());\n * console.log('Version:', versionResult.stdout);\n * ```\n */\nexport const compute = {\n install,\n isInstalled,\n version,\n start,\n stop,\n health,\n setup,\n isSetup,\n};\n"],"mappings":"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","names":["awk","base64","bun","bunx","cat","chmod","chown","compute","cp","curl","cut","date","deno","df","diff","du","echo","env","find","git","grep","head","hostname","jq","kill","ln","ls","md5sum","mkdir","mv","net","node","npm","npx","parallel","pip","pipx","pkill","pnpm","poetry","port","printenv","ps","pwd","python","raw","readlink","rm","rsync","sed","sha1sum","sha256sum","sleep","sort","tail","tar","tee","test","timeout","touch","tr","uname","uniq","unzip","uv","wc","wget","which","whoami","xargs","yarn","timeout","port","mkdir","rm","cp","mv","ls","pwd","chmod","chown","touch","cat","ln","readlink","test","rsync","node","python","kill","pkill","ps","timeout","npm","pnpm","yarn","pip","bun","deno","npx","bunx","uv","poetry","pipx","git","curl","wget","port","net","grep","sed","head","tail","wc","sort","uniq","jq","xargs","awk","cut","tr","tar","unzip","echo","env","printenv","which","whoami","uname","hostname","df","du","sleep","date","find","tee","diff","parallel","raw","base64","md5sum","sha256sum","sha1sum","compute"]}