@hasna/machines 0.0.33 → 0.0.34
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/README.md +36 -36
- package/dist/cli/index.js +22 -5
- package/dist/commands/heal-daemon.d.ts.map +1 -1
- package/dist/consumer.js +18 -3
- package/dist/index.js +18 -3
- package/dist/mcp/index.js +18 -3
- package/dist/topology.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -30,8 +30,8 @@ Endpoints on `127.0.0.1` only:
|
|
|
30
30
|
```bash
|
|
31
31
|
machines manifest init
|
|
32
32
|
machines manifest bootstrap
|
|
33
|
-
machines manifest add --id
|
|
34
|
-
machines manifest add --id
|
|
33
|
+
machines manifest add --id linux-dev-01 --platform linux --workspace-path ~/workspace
|
|
34
|
+
machines manifest add --id mac-lab-01 --platform macos --workspace-path ~/Workspace --app ghostty:cask
|
|
35
35
|
machines manifest validate
|
|
36
36
|
machines manifest list
|
|
37
37
|
```
|
|
@@ -39,11 +39,11 @@ machines manifest list
|
|
|
39
39
|
## Provision and reconcile
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
machines setup --machine
|
|
43
|
-
machines setup --machine
|
|
44
|
-
machines sync --machine
|
|
45
|
-
machines sync --machine
|
|
46
|
-
machines doctor --machine
|
|
42
|
+
machines setup --machine linux-dev-01 --json
|
|
43
|
+
machines setup --machine linux-dev-01 --apply --yes
|
|
44
|
+
machines sync --machine linux-dev-01 --json
|
|
45
|
+
machines sync --machine linux-dev-01 --apply --yes
|
|
46
|
+
machines doctor --machine linux-dev-01
|
|
47
47
|
machines self-test
|
|
48
48
|
```
|
|
49
49
|
|
|
@@ -68,9 +68,9 @@ import {
|
|
|
68
68
|
console.log(MACHINES_CONSUMER_CONTRACT.schema_version);
|
|
69
69
|
const topology = discoverMachineTopology();
|
|
70
70
|
const local = getLocalMachineTopology();
|
|
71
|
-
const route = resolveMachineRoute("
|
|
71
|
+
const route = resolveMachineRoute("linux-dev-01");
|
|
72
72
|
const workspace = resolveMachineWorkspace({
|
|
73
|
-
machineId: "
|
|
73
|
+
machineId: "linux-dev-01",
|
|
74
74
|
projectId: "open-knowledge",
|
|
75
75
|
repoName: "open-knowledge",
|
|
76
76
|
});
|
|
@@ -115,7 +115,7 @@ CLI and MCP expose the same topology view:
|
|
|
115
115
|
```bash
|
|
116
116
|
machines topology --json
|
|
117
117
|
machines topology --no-tailscale --json
|
|
118
|
-
machines route --machine
|
|
118
|
+
machines route --machine linux-dev-01 --json
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
## Screen sharing
|
|
@@ -125,9 +125,9 @@ IP bookmarks. The route resolver picks the current LAN address or Tailscale name
|
|
|
125
125
|
automatically, so it keeps working even when DHCP rotates a machine's IP.
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
machines screen
|
|
129
|
-
machines screen
|
|
130
|
-
machines screen
|
|
128
|
+
machines screen demo-mac-01 # open Screen Sharing.app → vnc://<user>@<live-route>
|
|
129
|
+
machines screen demo-mac-01 --print # print the vnc:// URL instead of opening
|
|
130
|
+
machines screen demo-mac-01 --json # full resolution detail (route, confidence, user)
|
|
131
131
|
machines screen --all # open every reachable machine
|
|
132
132
|
machines screen --all --print # list resolved vnc:// URLs for the whole fleet
|
|
133
133
|
machines screen-credentials --all --check-secret
|
|
@@ -138,10 +138,10 @@ Enable Remote Management / Screen Sharing on a fresh macOS machine over SSH
|
|
|
138
138
|
Screen Sharing.app and Apple Remote Desktop):
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
|
-
secrets set machines/screen-sharing/screen-
|
|
142
|
-
machines screen-enable --machine
|
|
143
|
-
--vnc-password-secret machines/screen-sharing/screen-
|
|
144
|
-
machines screen-enable --machine
|
|
141
|
+
secrets set machines/screen-sharing/screen-demo-mac-01-vnc-password "$VNC_PASSWORD" --type password
|
|
142
|
+
machines screen-enable --machine demo-mac-01 --user operator \
|
|
143
|
+
--vnc-password-secret machines/screen-sharing/screen-demo-mac-01-vnc-password
|
|
144
|
+
machines screen-enable --machine demo-mac-01 --user operator --print # show the SSH command, don't run it
|
|
145
145
|
```
|
|
146
146
|
|
|
147
147
|
The legacy VNC protocol honors only the first 8 password characters. The
|
|
@@ -161,7 +161,7 @@ without importing the full machines app:
|
|
|
161
161
|
import { resolveMachineWorkspace } from "@hasna/machines/consumer";
|
|
162
162
|
|
|
163
163
|
const workspace = resolveMachineWorkspace({
|
|
164
|
-
machineId: "
|
|
164
|
+
machineId: "linux-dev-01",
|
|
165
165
|
projectId: "open-knowledge",
|
|
166
166
|
repoName: "open-knowledge",
|
|
167
167
|
});
|
|
@@ -176,8 +176,8 @@ diagnostics. It uses explicit manifest metadata first and deterministic
|
|
|
176
176
|
workspace inference second; consumers can still pass manual overrides.
|
|
177
177
|
|
|
178
178
|
```bash
|
|
179
|
-
machines workspace resolve --machine
|
|
180
|
-
machines workspace doctor --machine
|
|
179
|
+
machines workspace resolve --machine linux-dev-01 --project open-knowledge --repo open-knowledge --json
|
|
180
|
+
machines workspace doctor --machine linux-dev-01 --project open-knowledge --repo open-knowledge --json
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
`workspace resolve` and `workspace doctor` include JSON-friendly
|
|
@@ -192,8 +192,8 @@ repair the manifest metadata explicitly. The command previews changes by
|
|
|
192
192
|
default and only writes when `--apply` is passed:
|
|
193
193
|
|
|
194
194
|
```bash
|
|
195
|
-
machines workspace repair --machine
|
|
196
|
-
machines workspace repair --machine
|
|
195
|
+
machines workspace repair --machine linux-dev-01 --project open-knowledge --repo open-knowledge --json
|
|
196
|
+
machines workspace repair --machine linux-dev-01 --project open-knowledge --repo open-knowledge --apply --json
|
|
197
197
|
```
|
|
198
198
|
|
|
199
199
|
## Compatibility SDK
|
|
@@ -205,7 +205,7 @@ attempting app-level sync:
|
|
|
205
205
|
import { checkMachineCompatibility } from "@hasna/machines/consumer";
|
|
206
206
|
|
|
207
207
|
const report = checkMachineCompatibility({
|
|
208
|
-
machineId: "
|
|
208
|
+
machineId: "linux-dev-01",
|
|
209
209
|
commands: [{ command: "bun" }],
|
|
210
210
|
packages: [{ name: "@example/knowledge", command: "knowledge", expectedVersion: "0.2.29" }],
|
|
211
211
|
workspaces: [{
|
|
@@ -225,7 +225,7 @@ back to its own local checks if `@hasna/machines` is not installed.
|
|
|
225
225
|
CLI and MCP expose the same shape:
|
|
226
226
|
|
|
227
227
|
```bash
|
|
228
|
-
machines compatibility --machine
|
|
228
|
+
machines compatibility --machine linux-dev-01 \
|
|
229
229
|
--command bun \
|
|
230
230
|
--package @example/knowledge:knowledge:0.2.29 \
|
|
231
231
|
--workspace open-knowledge=/srv/workspaces/open-knowledge:@example/knowledge:0.2.29 \
|
|
@@ -265,18 +265,18 @@ deployments to route app-owned backups through explicit storage metadata.
|
|
|
265
265
|
## Applications and tooling
|
|
266
266
|
|
|
267
267
|
```bash
|
|
268
|
-
machines apps list --machine
|
|
269
|
-
machines apps status --machine
|
|
270
|
-
machines apps diff --machine
|
|
271
|
-
machines apps plan --machine
|
|
272
|
-
machines apps apply --machine
|
|
273
|
-
|
|
274
|
-
machines install-claude status --machine
|
|
275
|
-
machines install-claude diff --machine
|
|
276
|
-
machines install-claude plan --machine
|
|
277
|
-
machines install-claude apply --machine
|
|
278
|
-
|
|
279
|
-
machines install-tailscale --machine
|
|
268
|
+
machines apps list --machine mac-lab-01
|
|
269
|
+
machines apps status --machine mac-lab-01
|
|
270
|
+
machines apps diff --machine mac-lab-01
|
|
271
|
+
machines apps plan --machine mac-lab-01 --json
|
|
272
|
+
machines apps apply --machine mac-lab-01 --yes
|
|
273
|
+
|
|
274
|
+
machines install-claude status --machine linux-dev-01
|
|
275
|
+
machines install-claude diff --machine linux-dev-01
|
|
276
|
+
machines install-claude plan --machine linux-dev-01 --tool claude codex --json
|
|
277
|
+
machines install-claude apply --machine linux-dev-01 --tool claude codex --yes
|
|
278
|
+
|
|
279
|
+
machines install-tailscale --machine mac-lab-01 --json
|
|
280
280
|
```
|
|
281
281
|
|
|
282
282
|
## Notifications
|
package/dist/cli/index.js
CHANGED
|
@@ -7356,6 +7356,19 @@ function manifestHostReachable(target) {
|
|
|
7356
7356
|
return null;
|
|
7357
7357
|
return overrides.has(target);
|
|
7358
7358
|
}
|
|
7359
|
+
function userFromSshAddress(address) {
|
|
7360
|
+
if (!address)
|
|
7361
|
+
return null;
|
|
7362
|
+
const at = address.indexOf("@");
|
|
7363
|
+
if (at <= 0)
|
|
7364
|
+
return null;
|
|
7365
|
+
return address.slice(0, at);
|
|
7366
|
+
}
|
|
7367
|
+
function commandTargetForRoute(target, user) {
|
|
7368
|
+
if (target.kind === "local" || target.target.includes("@") || !user)
|
|
7369
|
+
return target.target;
|
|
7370
|
+
return `${user}@${target.target}`;
|
|
7371
|
+
}
|
|
7359
7372
|
function routeHints(input) {
|
|
7360
7373
|
const hints = [];
|
|
7361
7374
|
if (input.machineId === input.localMachineId) {
|
|
@@ -7406,6 +7419,7 @@ function buildEntry(input) {
|
|
|
7406
7419
|
});
|
|
7407
7420
|
const selectedRoute = selectRouteHint(hints);
|
|
7408
7421
|
const route = selectedRoute?.kind === "ssh" ? "ssh" : selectedRoute?.kind ?? "unknown";
|
|
7422
|
+
const routeUser = userFromSshAddress(manifest?.sshAddress) ?? (typeof manifest?.metadata?.user === "string" ? manifest.metadata.user : null);
|
|
7409
7423
|
return {
|
|
7410
7424
|
machine_id: input.machineId,
|
|
7411
7425
|
hostname: manifest?.hostname ?? peer?.HostName ?? null,
|
|
@@ -7426,7 +7440,7 @@ function buildEntry(input) {
|
|
|
7426
7440
|
ssh: {
|
|
7427
7441
|
address: manifest?.sshAddress ?? null,
|
|
7428
7442
|
route,
|
|
7429
|
-
command_target: selectedRoute
|
|
7443
|
+
command_target: selectedRoute ? commandTargetForRoute(selectedRoute, routeUser) : null
|
|
7430
7444
|
},
|
|
7431
7445
|
route_hints: hints,
|
|
7432
7446
|
tags: manifest?.tags ?? [],
|
|
@@ -7634,6 +7648,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
7634
7648
|
const local = route === "local" || machine.machine_id === topology.local_machine_id;
|
|
7635
7649
|
const confidence = routeConfidence({ machine, hint: selectedHint, matchedBy });
|
|
7636
7650
|
const ok = Boolean(selectedHint?.target);
|
|
7651
|
+
const commandTarget = selectedHint ? commandTargetForRoute(selectedHint, userFromSshAddress(machine.ssh.address) ?? machine.user) : null;
|
|
7637
7652
|
return {
|
|
7638
7653
|
schema_version: MACHINES_CONSUMER_CONTRACT_VERSION,
|
|
7639
7654
|
package: topology.package,
|
|
@@ -7644,7 +7659,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
7644
7659
|
route,
|
|
7645
7660
|
source: route,
|
|
7646
7661
|
target: selectedHint?.target ?? null,
|
|
7647
|
-
command_target:
|
|
7662
|
+
command_target: commandTarget,
|
|
7648
7663
|
confidence,
|
|
7649
7664
|
local,
|
|
7650
7665
|
evidence: {
|
|
@@ -8102,7 +8117,7 @@ function resolveSshTarget(machineId, options = {}) {
|
|
|
8102
8117
|
}
|
|
8103
8118
|
return {
|
|
8104
8119
|
machineId: resolved.machine_id ?? machineId,
|
|
8105
|
-
target: resolved.target,
|
|
8120
|
+
target: resolved.command_target ?? resolved.target,
|
|
8106
8121
|
route: resolved.route,
|
|
8107
8122
|
confidence: resolved.confidence,
|
|
8108
8123
|
warnings: resolved.warnings
|
|
@@ -11261,8 +11276,10 @@ function binPath() {
|
|
|
11261
11276
|
candidates.push(which);
|
|
11262
11277
|
if (process.argv[1])
|
|
11263
11278
|
candidates.push(process.argv[1]);
|
|
11264
|
-
const home = process.env["HOME"]
|
|
11265
|
-
|
|
11279
|
+
const home = process.env["HOME"];
|
|
11280
|
+
if (home)
|
|
11281
|
+
candidates.push(`${home}/.bun/bin/machines`);
|
|
11282
|
+
candidates.push("/root/.bun/bin/machines", "/usr/local/bin/machines");
|
|
11266
11283
|
for (const c of candidates) {
|
|
11267
11284
|
if (c && existsSync10(c))
|
|
11268
11285
|
return c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heal-daemon.d.ts","sourceRoot":"","sources":["../../src/commands/heal-daemon.ts"],"names":[],"mappings":"AAUA,OAAO,EAWL,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,cAAc,CAsC/F;AAwBD,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAOzE;AAED,wBAAgB,eAAe,IAAI,IAAI,CAiBtC;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAyB7D;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAejD;
|
|
1
|
+
{"version":3,"file":"heal-daemon.d.ts","sourceRoot":"","sources":["../../src/commands/heal-daemon.ts"],"names":[],"mappings":"AAUA,OAAO,EAWL,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,cAAc,CAsC/F;AAwBD,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAOzE;AAED,wBAAgB,eAAe,IAAI,IAAI,CAiBtC;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAyB7D;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAejD;AAqBD,yEAAyE;AACzE,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CA0B7C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAW/C;AAED,wBAAgB,iBAAiB,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAM7F"}
|
package/dist/consumer.js
CHANGED
|
@@ -4487,6 +4487,19 @@ function manifestHostReachable(target) {
|
|
|
4487
4487
|
return null;
|
|
4488
4488
|
return overrides.has(target);
|
|
4489
4489
|
}
|
|
4490
|
+
function userFromSshAddress(address) {
|
|
4491
|
+
if (!address)
|
|
4492
|
+
return null;
|
|
4493
|
+
const at = address.indexOf("@");
|
|
4494
|
+
if (at <= 0)
|
|
4495
|
+
return null;
|
|
4496
|
+
return address.slice(0, at);
|
|
4497
|
+
}
|
|
4498
|
+
function commandTargetForRoute(target, user) {
|
|
4499
|
+
if (target.kind === "local" || target.target.includes("@") || !user)
|
|
4500
|
+
return target.target;
|
|
4501
|
+
return `${user}@${target.target}`;
|
|
4502
|
+
}
|
|
4490
4503
|
function routeHints(input) {
|
|
4491
4504
|
const hints = [];
|
|
4492
4505
|
if (input.machineId === input.localMachineId) {
|
|
@@ -4537,6 +4550,7 @@ function buildEntry(input) {
|
|
|
4537
4550
|
});
|
|
4538
4551
|
const selectedRoute = selectRouteHint(hints);
|
|
4539
4552
|
const route = selectedRoute?.kind === "ssh" ? "ssh" : selectedRoute?.kind ?? "unknown";
|
|
4553
|
+
const routeUser = userFromSshAddress(manifest?.sshAddress) ?? (typeof manifest?.metadata?.user === "string" ? manifest.metadata.user : null);
|
|
4540
4554
|
return {
|
|
4541
4555
|
machine_id: input.machineId,
|
|
4542
4556
|
hostname: manifest?.hostname ?? peer?.HostName ?? null,
|
|
@@ -4557,7 +4571,7 @@ function buildEntry(input) {
|
|
|
4557
4571
|
ssh: {
|
|
4558
4572
|
address: manifest?.sshAddress ?? null,
|
|
4559
4573
|
route,
|
|
4560
|
-
command_target: selectedRoute
|
|
4574
|
+
command_target: selectedRoute ? commandTargetForRoute(selectedRoute, routeUser) : null
|
|
4561
4575
|
},
|
|
4562
4576
|
route_hints: hints,
|
|
4563
4577
|
tags: manifest?.tags ?? [],
|
|
@@ -4796,6 +4810,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4796
4810
|
const local = route === "local" || machine.machine_id === topology.local_machine_id;
|
|
4797
4811
|
const confidence = routeConfidence({ machine, hint: selectedHint, matchedBy });
|
|
4798
4812
|
const ok = Boolean(selectedHint?.target);
|
|
4813
|
+
const commandTarget = selectedHint ? commandTargetForRoute(selectedHint, userFromSshAddress(machine.ssh.address) ?? machine.user) : null;
|
|
4799
4814
|
return {
|
|
4800
4815
|
schema_version: MACHINES_CONSUMER_CONTRACT_VERSION,
|
|
4801
4816
|
package: topology.package,
|
|
@@ -4806,7 +4821,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4806
4821
|
route,
|
|
4807
4822
|
source: route,
|
|
4808
4823
|
target: selectedHint?.target ?? null,
|
|
4809
|
-
command_target:
|
|
4824
|
+
command_target: commandTarget,
|
|
4810
4825
|
confidence,
|
|
4811
4826
|
local,
|
|
4812
4827
|
evidence: {
|
|
@@ -5584,7 +5599,7 @@ function resolveSshTarget(machineId, options = {}) {
|
|
|
5584
5599
|
}
|
|
5585
5600
|
return {
|
|
5586
5601
|
machineId: resolved.machine_id ?? machineId,
|
|
5587
|
-
target: resolved.target,
|
|
5602
|
+
target: resolved.command_target ?? resolved.target,
|
|
5588
5603
|
route: resolved.route,
|
|
5589
5604
|
confidence: resolved.confidence,
|
|
5590
5605
|
warnings: resolved.warnings
|
package/dist/index.js
CHANGED
|
@@ -11287,6 +11287,19 @@ function manifestHostReachable(target) {
|
|
|
11287
11287
|
return null;
|
|
11288
11288
|
return overrides.has(target);
|
|
11289
11289
|
}
|
|
11290
|
+
function userFromSshAddress(address) {
|
|
11291
|
+
if (!address)
|
|
11292
|
+
return null;
|
|
11293
|
+
const at = address.indexOf("@");
|
|
11294
|
+
if (at <= 0)
|
|
11295
|
+
return null;
|
|
11296
|
+
return address.slice(0, at);
|
|
11297
|
+
}
|
|
11298
|
+
function commandTargetForRoute(target, user) {
|
|
11299
|
+
if (target.kind === "local" || target.target.includes("@") || !user)
|
|
11300
|
+
return target.target;
|
|
11301
|
+
return `${user}@${target.target}`;
|
|
11302
|
+
}
|
|
11290
11303
|
function routeHints(input) {
|
|
11291
11304
|
const hints = [];
|
|
11292
11305
|
if (input.machineId === input.localMachineId) {
|
|
@@ -11337,6 +11350,7 @@ function buildEntry(input) {
|
|
|
11337
11350
|
});
|
|
11338
11351
|
const selectedRoute = selectRouteHint(hints);
|
|
11339
11352
|
const route = selectedRoute?.kind === "ssh" ? "ssh" : selectedRoute?.kind ?? "unknown";
|
|
11353
|
+
const routeUser = userFromSshAddress(manifest?.sshAddress) ?? (typeof manifest?.metadata?.user === "string" ? manifest.metadata.user : null);
|
|
11340
11354
|
return {
|
|
11341
11355
|
machine_id: input.machineId,
|
|
11342
11356
|
hostname: manifest?.hostname ?? peer?.HostName ?? null,
|
|
@@ -11357,7 +11371,7 @@ function buildEntry(input) {
|
|
|
11357
11371
|
ssh: {
|
|
11358
11372
|
address: manifest?.sshAddress ?? null,
|
|
11359
11373
|
route,
|
|
11360
|
-
command_target: selectedRoute
|
|
11374
|
+
command_target: selectedRoute ? commandTargetForRoute(selectedRoute, routeUser) : null
|
|
11361
11375
|
},
|
|
11362
11376
|
route_hints: hints,
|
|
11363
11377
|
tags: manifest?.tags ?? [],
|
|
@@ -11596,6 +11610,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
11596
11610
|
const local = route === "local" || machine.machine_id === topology.local_machine_id;
|
|
11597
11611
|
const confidence = routeConfidence({ machine, hint: selectedHint, matchedBy });
|
|
11598
11612
|
const ok = Boolean(selectedHint?.target);
|
|
11613
|
+
const commandTarget = selectedHint ? commandTargetForRoute(selectedHint, userFromSshAddress(machine.ssh.address) ?? machine.user) : null;
|
|
11599
11614
|
return {
|
|
11600
11615
|
schema_version: MACHINES_CONSUMER_CONTRACT_VERSION,
|
|
11601
11616
|
package: topology.package,
|
|
@@ -11606,7 +11621,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
11606
11621
|
route,
|
|
11607
11622
|
source: route,
|
|
11608
11623
|
target: selectedHint?.target ?? null,
|
|
11609
|
-
command_target:
|
|
11624
|
+
command_target: commandTarget,
|
|
11610
11625
|
confidence,
|
|
11611
11626
|
local,
|
|
11612
11627
|
evidence: {
|
|
@@ -12153,7 +12168,7 @@ function resolveSshTarget(machineId, options = {}) {
|
|
|
12153
12168
|
}
|
|
12154
12169
|
return {
|
|
12155
12170
|
machineId: resolved.machine_id ?? machineId,
|
|
12156
|
-
target: resolved.target,
|
|
12171
|
+
target: resolved.command_target ?? resolved.target,
|
|
12157
12172
|
route: resolved.route,
|
|
12158
12173
|
confidence: resolved.confidence,
|
|
12159
12174
|
warnings: resolved.warnings
|
package/dist/mcp/index.js
CHANGED
|
@@ -4479,6 +4479,19 @@ function manifestHostReachable(target) {
|
|
|
4479
4479
|
return null;
|
|
4480
4480
|
return overrides.has(target);
|
|
4481
4481
|
}
|
|
4482
|
+
function userFromSshAddress(address) {
|
|
4483
|
+
if (!address)
|
|
4484
|
+
return null;
|
|
4485
|
+
const at = address.indexOf("@");
|
|
4486
|
+
if (at <= 0)
|
|
4487
|
+
return null;
|
|
4488
|
+
return address.slice(0, at);
|
|
4489
|
+
}
|
|
4490
|
+
function commandTargetForRoute(target, user) {
|
|
4491
|
+
if (target.kind === "local" || target.target.includes("@") || !user)
|
|
4492
|
+
return target.target;
|
|
4493
|
+
return `${user}@${target.target}`;
|
|
4494
|
+
}
|
|
4482
4495
|
function routeHints(input) {
|
|
4483
4496
|
const hints = [];
|
|
4484
4497
|
if (input.machineId === input.localMachineId) {
|
|
@@ -4529,6 +4542,7 @@ function buildEntry(input) {
|
|
|
4529
4542
|
});
|
|
4530
4543
|
const selectedRoute = selectRouteHint(hints);
|
|
4531
4544
|
const route = selectedRoute?.kind === "ssh" ? "ssh" : selectedRoute?.kind ?? "unknown";
|
|
4545
|
+
const routeUser = userFromSshAddress(manifest?.sshAddress) ?? (typeof manifest?.metadata?.user === "string" ? manifest.metadata.user : null);
|
|
4532
4546
|
return {
|
|
4533
4547
|
machine_id: input.machineId,
|
|
4534
4548
|
hostname: manifest?.hostname ?? peer?.HostName ?? null,
|
|
@@ -4549,7 +4563,7 @@ function buildEntry(input) {
|
|
|
4549
4563
|
ssh: {
|
|
4550
4564
|
address: manifest?.sshAddress ?? null,
|
|
4551
4565
|
route,
|
|
4552
|
-
command_target: selectedRoute
|
|
4566
|
+
command_target: selectedRoute ? commandTargetForRoute(selectedRoute, routeUser) : null
|
|
4553
4567
|
},
|
|
4554
4568
|
route_hints: hints,
|
|
4555
4569
|
tags: manifest?.tags ?? [],
|
|
@@ -4757,6 +4771,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4757
4771
|
const local = route === "local" || machine.machine_id === topology.local_machine_id;
|
|
4758
4772
|
const confidence = routeConfidence({ machine, hint: selectedHint, matchedBy });
|
|
4759
4773
|
const ok = Boolean(selectedHint?.target);
|
|
4774
|
+
const commandTarget = selectedHint ? commandTargetForRoute(selectedHint, userFromSshAddress(machine.ssh.address) ?? machine.user) : null;
|
|
4760
4775
|
return {
|
|
4761
4776
|
schema_version: MACHINES_CONSUMER_CONTRACT_VERSION,
|
|
4762
4777
|
package: topology.package,
|
|
@@ -4767,7 +4782,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4767
4782
|
route,
|
|
4768
4783
|
source: route,
|
|
4769
4784
|
target: selectedHint?.target ?? null,
|
|
4770
|
-
command_target:
|
|
4785
|
+
command_target: commandTarget,
|
|
4771
4786
|
confidence,
|
|
4772
4787
|
local,
|
|
4773
4788
|
evidence: {
|
|
@@ -5225,7 +5240,7 @@ function resolveSshTarget(machineId, options = {}) {
|
|
|
5225
5240
|
}
|
|
5226
5241
|
return {
|
|
5227
5242
|
machineId: resolved.machine_id ?? machineId,
|
|
5228
|
-
target: resolved.target,
|
|
5243
|
+
target: resolved.command_target ?? resolved.target,
|
|
5229
5244
|
route: resolved.route,
|
|
5230
5245
|
confidence: resolved.confidence,
|
|
5231
5246
|
warnings: resolved.warnings
|
package/dist/topology.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"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"}
|