@hasna/machines 0.0.15 → 0.0.16
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/cli/index.js +35 -15
- package/dist/index.js +35 -15
- package/dist/mcp/index.js +35 -15
- package/dist/remote.d.ts +5 -1
- package/dist/remote.d.ts.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -7573,6 +7573,7 @@ function diffMachines(leftMachineId, rightMachineId) {
|
|
|
7573
7573
|
// src/remote.ts
|
|
7574
7574
|
init_db();
|
|
7575
7575
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
7576
|
+
import { hostname as hostname3 } from "os";
|
|
7576
7577
|
|
|
7577
7578
|
// src/commands/ssh.ts
|
|
7578
7579
|
import { spawnSync } from "child_process";
|
|
@@ -7618,18 +7619,37 @@ function buildSshCommand(machineId, remoteCommand) {
|
|
|
7618
7619
|
}
|
|
7619
7620
|
|
|
7620
7621
|
// src/remote.ts
|
|
7622
|
+
function shellQuote(value) {
|
|
7623
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
7624
|
+
}
|
|
7625
|
+
function machineIsLocal(machineId, localMachineId) {
|
|
7626
|
+
return machineId === "local" || machineId === "localhost" || machineId === localMachineId || machineId === hostname3();
|
|
7627
|
+
}
|
|
7628
|
+
function resolveMachineCommand(machineId, command, localMachineId = getLocalMachineId()) {
|
|
7629
|
+
if (machineIsLocal(machineId, localMachineId)) {
|
|
7630
|
+
return { source: "local", shellCommand: command };
|
|
7631
|
+
}
|
|
7632
|
+
try {
|
|
7633
|
+
return {
|
|
7634
|
+
source: resolveSshTarget(machineId).route,
|
|
7635
|
+
shellCommand: buildSshCommand(machineId, command)
|
|
7636
|
+
};
|
|
7637
|
+
} catch (error) {
|
|
7638
|
+
if (String(error.message ?? error).includes("Machine not found in manifest")) {
|
|
7639
|
+
return { source: "ssh", shellCommand: `ssh ${shellQuote(machineId)} ${shellQuote(command)}` };
|
|
7640
|
+
}
|
|
7641
|
+
throw error;
|
|
7642
|
+
}
|
|
7643
|
+
}
|
|
7621
7644
|
function runMachineCommand(machineId, command) {
|
|
7622
|
-
const
|
|
7623
|
-
const
|
|
7624
|
-
const route = isLocal ? "local" : resolveSshTarget(machineId).route;
|
|
7625
|
-
const shellCommand = isLocal ? command : buildSshCommand(machineId, command);
|
|
7626
|
-
const result = spawnSync2("bash", ["-c", shellCommand], {
|
|
7645
|
+
const resolved = resolveMachineCommand(machineId, command);
|
|
7646
|
+
const result = spawnSync2("bash", ["-c", resolved.shellCommand], {
|
|
7627
7647
|
encoding: "utf8",
|
|
7628
7648
|
env: process.env
|
|
7629
7649
|
});
|
|
7630
7650
|
return {
|
|
7631
7651
|
machineId,
|
|
7632
|
-
source:
|
|
7652
|
+
source: resolved.source,
|
|
7633
7653
|
stdout: result.stdout || "",
|
|
7634
7654
|
stderr: result.stderr || "",
|
|
7635
7655
|
exitCode: result.status ?? 1
|
|
@@ -7649,7 +7669,7 @@ function getAppManager(machine, app) {
|
|
|
7649
7669
|
return "winget";
|
|
7650
7670
|
return "apt";
|
|
7651
7671
|
}
|
|
7652
|
-
function
|
|
7672
|
+
function shellQuote2(value) {
|
|
7653
7673
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
7654
7674
|
}
|
|
7655
7675
|
function buildAppCommand(machine, app) {
|
|
@@ -7670,7 +7690,7 @@ function buildAppCommand(machine, app) {
|
|
|
7670
7690
|
return `sudo apt-get install -y ${packageName}`;
|
|
7671
7691
|
}
|
|
7672
7692
|
function buildAppProbeCommand(machine, app) {
|
|
7673
|
-
const packageName =
|
|
7693
|
+
const packageName = shellQuote2(getPackageName(app));
|
|
7674
7694
|
const manager = getAppManager(machine, app);
|
|
7675
7695
|
if (manager === "custom") {
|
|
7676
7696
|
return `if command -v ${packageName} >/dev/null 2>&1; then printf 'installed=1\\nversion=custom\\n'; else printf 'installed=0\\n'; fi`;
|
|
@@ -7965,7 +7985,7 @@ var notificationConfigSchema = exports_external.object({
|
|
|
7965
7985
|
function sortChannels(channels) {
|
|
7966
7986
|
return [...channels].sort((left, right) => left.id.localeCompare(right.id));
|
|
7967
7987
|
}
|
|
7968
|
-
function
|
|
7988
|
+
function shellQuote3(value) {
|
|
7969
7989
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
7970
7990
|
}
|
|
7971
7991
|
function hasCommand(binary) {
|
|
@@ -8012,7 +8032,7 @@ ${message}
|
|
|
8012
8032
|
};
|
|
8013
8033
|
}
|
|
8014
8034
|
if (hasCommand("mail")) {
|
|
8015
|
-
const command = `printf %s ${
|
|
8035
|
+
const command = `printf %s ${shellQuote3(message)} | mail -s ${shellQuote3(subject)} ${shellQuote3(channel.target)}`;
|
|
8016
8036
|
const result = Bun.spawnSync(["bash", "-lc", command], {
|
|
8017
8037
|
stdout: "pipe",
|
|
8018
8038
|
stderr: "pipe",
|
|
@@ -8441,7 +8461,7 @@ function getStatus() {
|
|
|
8441
8461
|
// src/topology.ts
|
|
8442
8462
|
init_db();
|
|
8443
8463
|
import { existsSync as existsSync7 } from "fs";
|
|
8444
|
-
import { arch as arch2, hostname as
|
|
8464
|
+
import { arch as arch2, hostname as hostname4, platform as platform3, userInfo as userInfo2 } from "os";
|
|
8445
8465
|
import { spawnSync as spawnSync4 } from "child_process";
|
|
8446
8466
|
init_paths();
|
|
8447
8467
|
function normalizePlatform2(value = platform3()) {
|
|
@@ -8609,7 +8629,7 @@ function discoverMachineTopology(options = {}) {
|
|
|
8609
8629
|
return {
|
|
8610
8630
|
generated_at: now.toISOString(),
|
|
8611
8631
|
local_machine_id: localMachineId,
|
|
8612
|
-
local_hostname:
|
|
8632
|
+
local_hostname: hostname4(),
|
|
8613
8633
|
current_platform: normalizePlatform2(),
|
|
8614
8634
|
manifest_path_known: existsSync7(getManifestPath()),
|
|
8615
8635
|
machines,
|
|
@@ -8626,7 +8646,7 @@ var DEFAULT_COMMANDS = [
|
|
|
8626
8646
|
function defaultPackages() {
|
|
8627
8647
|
return [{ name: "@hasna/machines", command: "machines", expectedVersion: getPackageVersion(), required: true }];
|
|
8628
8648
|
}
|
|
8629
|
-
function
|
|
8649
|
+
function shellQuote4(value) {
|
|
8630
8650
|
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
8631
8651
|
}
|
|
8632
8652
|
function commandId(value) {
|
|
@@ -8677,7 +8697,7 @@ function defaultRunner2(machineId, command) {
|
|
|
8677
8697
|
return runMachineCommand(machineId, command);
|
|
8678
8698
|
}
|
|
8679
8699
|
function inspectCommand(machineId, spec, runner) {
|
|
8680
|
-
const command =
|
|
8700
|
+
const command = shellQuote4(spec.command);
|
|
8681
8701
|
const versionArgs = spec.versionArgs ?? "--version";
|
|
8682
8702
|
const script = [
|
|
8683
8703
|
`cmd=${command}`,
|
|
@@ -8706,7 +8726,7 @@ function fieldCommand(field) {
|
|
|
8706
8726
|
}
|
|
8707
8727
|
function inspectWorkspace(machineId, spec, runner) {
|
|
8708
8728
|
const script = [
|
|
8709
|
-
`path=${
|
|
8729
|
+
`path=${shellQuote4(spec.path)}`,
|
|
8710
8730
|
'printf "exists=%s\\n" "$(test -d "$path" && printf yes || printf no)"',
|
|
8711
8731
|
'pkg="$path/package.json"',
|
|
8712
8732
|
'printf "package_json=%s\\n" "$(test -f "$pkg" && printf yes || printf no)"',
|
package/dist/index.js
CHANGED
|
@@ -11281,6 +11281,7 @@ function getLocalMachineTopology(options = {}) {
|
|
|
11281
11281
|
}
|
|
11282
11282
|
// src/remote.ts
|
|
11283
11283
|
import { spawnSync as spawnSync3 } from "child_process";
|
|
11284
|
+
import { hostname as hostname4 } from "os";
|
|
11284
11285
|
|
|
11285
11286
|
// src/commands/ssh.ts
|
|
11286
11287
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
@@ -11326,18 +11327,37 @@ function buildSshCommand(machineId, remoteCommand) {
|
|
|
11326
11327
|
}
|
|
11327
11328
|
|
|
11328
11329
|
// src/remote.ts
|
|
11330
|
+
function shellQuote(value) {
|
|
11331
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
11332
|
+
}
|
|
11333
|
+
function machineIsLocal(machineId, localMachineId) {
|
|
11334
|
+
return machineId === "local" || machineId === "localhost" || machineId === localMachineId || machineId === hostname4();
|
|
11335
|
+
}
|
|
11336
|
+
function resolveMachineCommand(machineId, command, localMachineId = getLocalMachineId()) {
|
|
11337
|
+
if (machineIsLocal(machineId, localMachineId)) {
|
|
11338
|
+
return { source: "local", shellCommand: command };
|
|
11339
|
+
}
|
|
11340
|
+
try {
|
|
11341
|
+
return {
|
|
11342
|
+
source: resolveSshTarget(machineId).route,
|
|
11343
|
+
shellCommand: buildSshCommand(machineId, command)
|
|
11344
|
+
};
|
|
11345
|
+
} catch (error) {
|
|
11346
|
+
if (String(error.message ?? error).includes("Machine not found in manifest")) {
|
|
11347
|
+
return { source: "ssh", shellCommand: `ssh ${shellQuote(machineId)} ${shellQuote(command)}` };
|
|
11348
|
+
}
|
|
11349
|
+
throw error;
|
|
11350
|
+
}
|
|
11351
|
+
}
|
|
11329
11352
|
function runMachineCommand(machineId, command) {
|
|
11330
|
-
const
|
|
11331
|
-
const
|
|
11332
|
-
const route = isLocal ? "local" : resolveSshTarget(machineId).route;
|
|
11333
|
-
const shellCommand = isLocal ? command : buildSshCommand(machineId, command);
|
|
11334
|
-
const result = spawnSync3("bash", ["-c", shellCommand], {
|
|
11353
|
+
const resolved = resolveMachineCommand(machineId, command);
|
|
11354
|
+
const result = spawnSync3("bash", ["-c", resolved.shellCommand], {
|
|
11335
11355
|
encoding: "utf8",
|
|
11336
11356
|
env: process.env
|
|
11337
11357
|
});
|
|
11338
11358
|
return {
|
|
11339
11359
|
machineId,
|
|
11340
|
-
source:
|
|
11360
|
+
source: resolved.source,
|
|
11341
11361
|
stdout: result.stdout || "",
|
|
11342
11362
|
stderr: result.stderr || "",
|
|
11343
11363
|
exitCode: result.status ?? 1
|
|
@@ -11370,7 +11390,7 @@ var DEFAULT_COMMANDS = [
|
|
|
11370
11390
|
function defaultPackages() {
|
|
11371
11391
|
return [{ name: "@hasna/machines", command: "machines", expectedVersion: getPackageVersion(), required: true }];
|
|
11372
11392
|
}
|
|
11373
|
-
function
|
|
11393
|
+
function shellQuote2(value) {
|
|
11374
11394
|
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
11375
11395
|
}
|
|
11376
11396
|
function commandId(value) {
|
|
@@ -11421,7 +11441,7 @@ function defaultRunner2(machineId, command) {
|
|
|
11421
11441
|
return runMachineCommand(machineId, command);
|
|
11422
11442
|
}
|
|
11423
11443
|
function inspectCommand(machineId, spec, runner) {
|
|
11424
|
-
const command =
|
|
11444
|
+
const command = shellQuote2(spec.command);
|
|
11425
11445
|
const versionArgs = spec.versionArgs ?? "--version";
|
|
11426
11446
|
const script = [
|
|
11427
11447
|
`cmd=${command}`,
|
|
@@ -11450,7 +11470,7 @@ function fieldCommand(field) {
|
|
|
11450
11470
|
}
|
|
11451
11471
|
function inspectWorkspace(machineId, spec, runner) {
|
|
11452
11472
|
const script = [
|
|
11453
|
-
`path=${
|
|
11473
|
+
`path=${shellQuote2(spec.path)}`,
|
|
11454
11474
|
'printf "exists=%s\\n" "$(test -d "$path" && printf yes || printf no)"',
|
|
11455
11475
|
'pkg="$path/package.json"',
|
|
11456
11476
|
'printf "package_json=%s\\n" "$(test -f "$pkg" && printf yes || printf no)"',
|
|
@@ -11695,7 +11715,7 @@ function getAppManager(machine, app) {
|
|
|
11695
11715
|
return "winget";
|
|
11696
11716
|
return "apt";
|
|
11697
11717
|
}
|
|
11698
|
-
function
|
|
11718
|
+
function shellQuote3(value) {
|
|
11699
11719
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
11700
11720
|
}
|
|
11701
11721
|
function buildAppCommand(machine, app) {
|
|
@@ -11716,7 +11736,7 @@ function buildAppCommand(machine, app) {
|
|
|
11716
11736
|
return `sudo apt-get install -y ${packageName}`;
|
|
11717
11737
|
}
|
|
11718
11738
|
function buildAppProbeCommand(machine, app) {
|
|
11719
|
-
const packageName =
|
|
11739
|
+
const packageName = shellQuote3(getPackageName(app));
|
|
11720
11740
|
const manager = getAppManager(machine, app);
|
|
11721
11741
|
if (manager === "custom") {
|
|
11722
11742
|
return `if command -v ${packageName} >/dev/null 2>&1; then printf 'installed=1\\nversion=custom\\n'; else printf 'installed=0\\n'; fi`;
|
|
@@ -12252,7 +12272,7 @@ var notificationConfigSchema = exports_external.object({
|
|
|
12252
12272
|
function sortChannels(channels) {
|
|
12253
12273
|
return [...channels].sort((left, right) => left.id.localeCompare(right.id));
|
|
12254
12274
|
}
|
|
12255
|
-
function
|
|
12275
|
+
function shellQuote4(value) {
|
|
12256
12276
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
12257
12277
|
}
|
|
12258
12278
|
function hasCommand2(binary) {
|
|
@@ -12299,7 +12319,7 @@ ${message}
|
|
|
12299
12319
|
};
|
|
12300
12320
|
}
|
|
12301
12321
|
if (hasCommand2("mail")) {
|
|
12302
|
-
const command = `printf %s ${
|
|
12322
|
+
const command = `printf %s ${shellQuote4(message)} | mail -s ${shellQuote4(subject)} ${shellQuote4(channel.target)}`;
|
|
12303
12323
|
const result = Bun.spawnSync(["bash", "-lc", command], {
|
|
12304
12324
|
stdout: "pipe",
|
|
12305
12325
|
stderr: "pipe",
|
|
@@ -13839,7 +13859,7 @@ var cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]
|
|
|
13839
13859
|
var cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;
|
|
13840
13860
|
var base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;
|
|
13841
13861
|
var base64url = /^[A-Za-z0-9_-]*$/;
|
|
13842
|
-
var
|
|
13862
|
+
var hostname5 = /^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/;
|
|
13843
13863
|
var e164 = /^\+(?:[0-9]){6,14}[0-9]$/;
|
|
13844
13864
|
var dateSource = `(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;
|
|
13845
13865
|
var date = /* @__PURE__ */ new RegExp(`^${dateSource}$`);
|
|
@@ -14451,7 +14471,7 @@ var $ZodURL = /* @__PURE__ */ $constructor("$ZodURL", (inst, def) => {
|
|
|
14451
14471
|
code: "invalid_format",
|
|
14452
14472
|
format: "url",
|
|
14453
14473
|
note: "Invalid hostname",
|
|
14454
|
-
pattern:
|
|
14474
|
+
pattern: hostname5.source,
|
|
14455
14475
|
input: payload.value,
|
|
14456
14476
|
inst,
|
|
14457
14477
|
continue: !def.abort
|
package/dist/mcp/index.js
CHANGED
|
@@ -4218,6 +4218,7 @@ function detectCurrentMachineManifest() {
|
|
|
4218
4218
|
|
|
4219
4219
|
// src/remote.ts
|
|
4220
4220
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
4221
|
+
import { hostname as hostname3 } from "os";
|
|
4221
4222
|
|
|
4222
4223
|
// src/db.ts
|
|
4223
4224
|
import { Database } from "bun:sqlite";
|
|
@@ -4362,18 +4363,37 @@ function buildSshCommand(machineId, remoteCommand) {
|
|
|
4362
4363
|
}
|
|
4363
4364
|
|
|
4364
4365
|
// src/remote.ts
|
|
4366
|
+
function shellQuote(value) {
|
|
4367
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
4368
|
+
}
|
|
4369
|
+
function machineIsLocal(machineId, localMachineId) {
|
|
4370
|
+
return machineId === "local" || machineId === "localhost" || machineId === localMachineId || machineId === hostname3();
|
|
4371
|
+
}
|
|
4372
|
+
function resolveMachineCommand(machineId, command, localMachineId = getLocalMachineId()) {
|
|
4373
|
+
if (machineIsLocal(machineId, localMachineId)) {
|
|
4374
|
+
return { source: "local", shellCommand: command };
|
|
4375
|
+
}
|
|
4376
|
+
try {
|
|
4377
|
+
return {
|
|
4378
|
+
source: resolveSshTarget(machineId).route,
|
|
4379
|
+
shellCommand: buildSshCommand(machineId, command)
|
|
4380
|
+
};
|
|
4381
|
+
} catch (error) {
|
|
4382
|
+
if (String(error.message ?? error).includes("Machine not found in manifest")) {
|
|
4383
|
+
return { source: "ssh", shellCommand: `ssh ${shellQuote(machineId)} ${shellQuote(command)}` };
|
|
4384
|
+
}
|
|
4385
|
+
throw error;
|
|
4386
|
+
}
|
|
4387
|
+
}
|
|
4365
4388
|
function runMachineCommand(machineId, command) {
|
|
4366
|
-
const
|
|
4367
|
-
const
|
|
4368
|
-
const route = isLocal ? "local" : resolveSshTarget(machineId).route;
|
|
4369
|
-
const shellCommand = isLocal ? command : buildSshCommand(machineId, command);
|
|
4370
|
-
const result = spawnSync2("bash", ["-c", shellCommand], {
|
|
4389
|
+
const resolved = resolveMachineCommand(machineId, command);
|
|
4390
|
+
const result = spawnSync2("bash", ["-c", resolved.shellCommand], {
|
|
4371
4391
|
encoding: "utf8",
|
|
4372
4392
|
env: process.env
|
|
4373
4393
|
});
|
|
4374
4394
|
return {
|
|
4375
4395
|
machineId,
|
|
4376
|
-
source:
|
|
4396
|
+
source: resolved.source,
|
|
4377
4397
|
stdout: result.stdout || "",
|
|
4378
4398
|
stderr: result.stderr || "",
|
|
4379
4399
|
exitCode: result.status ?? 1
|
|
@@ -4393,7 +4413,7 @@ function getAppManager(machine, app) {
|
|
|
4393
4413
|
return "winget";
|
|
4394
4414
|
return "apt";
|
|
4395
4415
|
}
|
|
4396
|
-
function
|
|
4416
|
+
function shellQuote2(value) {
|
|
4397
4417
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
4398
4418
|
}
|
|
4399
4419
|
function buildAppCommand(machine, app) {
|
|
@@ -4414,7 +4434,7 @@ function buildAppCommand(machine, app) {
|
|
|
4414
4434
|
return `sudo apt-get install -y ${packageName}`;
|
|
4415
4435
|
}
|
|
4416
4436
|
function buildAppProbeCommand(machine, app) {
|
|
4417
|
-
const packageName =
|
|
4437
|
+
const packageName = shellQuote2(getPackageName(app));
|
|
4418
4438
|
const manager = getAppManager(machine, app);
|
|
4419
4439
|
if (manager === "custom") {
|
|
4420
4440
|
return `if command -v ${packageName} >/dev/null 2>&1; then printf 'installed=1\\nversion=custom\\n'; else printf 'installed=0\\n'; fi`;
|
|
@@ -4924,7 +4944,7 @@ var notificationConfigSchema = exports_external.object({
|
|
|
4924
4944
|
function sortChannels(channels) {
|
|
4925
4945
|
return [...channels].sort((left, right) => left.id.localeCompare(right.id));
|
|
4926
4946
|
}
|
|
4927
|
-
function
|
|
4947
|
+
function shellQuote3(value) {
|
|
4928
4948
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
4929
4949
|
}
|
|
4930
4950
|
function hasCommand(binary) {
|
|
@@ -4971,7 +4991,7 @@ ${message}
|
|
|
4971
4991
|
};
|
|
4972
4992
|
}
|
|
4973
4993
|
if (hasCommand("mail")) {
|
|
4974
|
-
const command = `printf %s ${
|
|
4994
|
+
const command = `printf %s ${shellQuote3(message)} | mail -s ${shellQuote3(subject)} ${shellQuote3(channel.target)}`;
|
|
4975
4995
|
const result = Bun.spawnSync(["bash", "-lc", command], {
|
|
4976
4996
|
stdout: "pipe",
|
|
4977
4997
|
stderr: "pipe",
|
|
@@ -5759,7 +5779,7 @@ function getAgentStatus(machineId = getLocalMachineId()) {
|
|
|
5759
5779
|
|
|
5760
5780
|
// src/topology.ts
|
|
5761
5781
|
import { existsSync as existsSync7 } from "fs";
|
|
5762
|
-
import { arch as arch2, hostname as
|
|
5782
|
+
import { arch as arch2, hostname as hostname4, platform as platform3, userInfo as userInfo2 } from "os";
|
|
5763
5783
|
import { spawnSync as spawnSync4 } from "child_process";
|
|
5764
5784
|
function normalizePlatform2(value = platform3()) {
|
|
5765
5785
|
const normalized = value.toLowerCase();
|
|
@@ -5926,7 +5946,7 @@ function discoverMachineTopology(options = {}) {
|
|
|
5926
5946
|
return {
|
|
5927
5947
|
generated_at: now.toISOString(),
|
|
5928
5948
|
local_machine_id: localMachineId,
|
|
5929
|
-
local_hostname:
|
|
5949
|
+
local_hostname: hostname4(),
|
|
5930
5950
|
current_platform: normalizePlatform2(),
|
|
5931
5951
|
manifest_path_known: existsSync7(getManifestPath()),
|
|
5932
5952
|
machines,
|
|
@@ -5942,7 +5962,7 @@ var DEFAULT_COMMANDS = [
|
|
|
5942
5962
|
function defaultPackages() {
|
|
5943
5963
|
return [{ name: "@hasna/machines", command: "machines", expectedVersion: getPackageVersion(), required: true }];
|
|
5944
5964
|
}
|
|
5945
|
-
function
|
|
5965
|
+
function shellQuote4(value) {
|
|
5946
5966
|
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
5947
5967
|
}
|
|
5948
5968
|
function commandId(value) {
|
|
@@ -5993,7 +6013,7 @@ function defaultRunner2(machineId, command) {
|
|
|
5993
6013
|
return runMachineCommand(machineId, command);
|
|
5994
6014
|
}
|
|
5995
6015
|
function inspectCommand(machineId, spec, runner) {
|
|
5996
|
-
const command =
|
|
6016
|
+
const command = shellQuote4(spec.command);
|
|
5997
6017
|
const versionArgs = spec.versionArgs ?? "--version";
|
|
5998
6018
|
const script = [
|
|
5999
6019
|
`cmd=${command}`,
|
|
@@ -6022,7 +6042,7 @@ function fieldCommand(field) {
|
|
|
6022
6042
|
}
|
|
6023
6043
|
function inspectWorkspace(machineId, spec, runner) {
|
|
6024
6044
|
const script = [
|
|
6025
|
-
`path=${
|
|
6045
|
+
`path=${shellQuote4(spec.path)}`,
|
|
6026
6046
|
'printf "exists=%s\\n" "$(test -d "$path" && printf yes || printf no)"',
|
|
6027
6047
|
'pkg="$path/package.json"',
|
|
6028
6048
|
'printf "package_json=%s\\n" "$(test -f "$pkg" && printf yes || printf no)"',
|
package/dist/remote.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export interface MachineCommandResult {
|
|
2
2
|
machineId: string;
|
|
3
|
-
source: "local" | "lan" | "tailscale";
|
|
3
|
+
source: "local" | "lan" | "tailscale" | "ssh";
|
|
4
4
|
stdout: string;
|
|
5
5
|
stderr: string;
|
|
6
6
|
exitCode: number;
|
|
7
7
|
}
|
|
8
|
+
export declare function resolveMachineCommand(machineId: string, command: string, localMachineId?: string): {
|
|
9
|
+
source: MachineCommandResult["source"];
|
|
10
|
+
shellCommand: string;
|
|
11
|
+
};
|
|
8
12
|
export declare function runMachineCommand(machineId: string, command: string): MachineCommandResult;
|
|
9
13
|
//# sourceMappingURL=remote.d.ts.map
|
package/dist/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,SAAsB,GAAG;IAAE,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAgBhL;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAc1F"}
|
package/dist/types.d.ts
CHANGED
|
@@ -127,7 +127,7 @@ export interface InstalledAppStatus {
|
|
|
127
127
|
}
|
|
128
128
|
export interface AppsStatusResult {
|
|
129
129
|
machineId: string;
|
|
130
|
-
source: "local" | "lan" | "tailscale";
|
|
130
|
+
source: "local" | "lan" | "tailscale" | "ssh";
|
|
131
131
|
apps: InstalledAppStatus[];
|
|
132
132
|
}
|
|
133
133
|
export interface AppsDiffResult extends AppsStatusResult {
|
|
@@ -142,7 +142,7 @@ export interface CliToolStatus {
|
|
|
142
142
|
}
|
|
143
143
|
export interface ClaudeCliStatusResult {
|
|
144
144
|
machineId: string;
|
|
145
|
-
source: "local" | "lan" | "tailscale";
|
|
145
|
+
source: "local" | "lan" | "tailscale" | "ssh";
|
|
146
146
|
tools: CliToolStatus[];
|
|
147
147
|
}
|
|
148
148
|
export interface ClaudeCliDiffResult extends ClaudeCliStatusResult {
|
|
@@ -169,7 +169,7 @@ export interface DoctorCheck {
|
|
|
169
169
|
}
|
|
170
170
|
export interface DoctorReport {
|
|
171
171
|
machineId: string;
|
|
172
|
-
source: "local" | "lan" | "tailscale";
|
|
172
|
+
source: "local" | "lan" | "tailscale" | "ssh";
|
|
173
173
|
manifestPath?: string;
|
|
174
174
|
dbPath?: string;
|
|
175
175
|
notificationsPath?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;IACrC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|