@hasna/machines 0.0.32 → 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 +48 -47
- package/dist/cli/index.js +154 -1323
- package/dist/commands/heal-daemon.d.ts.map +1 -1
- package/dist/commands/screen.d.ts +2 -1
- package/dist/commands/screen.d.ts.map +1 -1
- package/dist/consumer.js +18 -3
- package/dist/index.js +50 -547
- package/dist/mcp/index.js +103 -604
- package/dist/topology.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type MachineRouteOptions, type MachineRouteKind, type MachineRouteConfidence } from "../topology.js";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const SCREEN_SECRET_NAMESPACE_ENV = "HASNA_MACHINES_SCREEN_SECRET_NAMESPACE";
|
|
3
|
+
export declare const DEFAULT_SCREEN_SECRET_NAMESPACE = "machines/screen-sharing";
|
|
3
4
|
export interface ResolvedScreenTarget {
|
|
4
5
|
machineId: string;
|
|
5
6
|
user: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/commands/screen.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,+BAA+B,
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/commands/screen.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,2BAA2B,2CAA2C,CAAC;AACpF,eAAO,MAAM,+BAA+B,4BAA4B,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,sBAAsB,CAAC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CACzD;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA6BD,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,oBAAoB,CA+B9G;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,0BAA0B,CAwB7H;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAG/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAcxF;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAe5E;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,0BAA+B,GAAG,uBAAuB,CAc7H"}
|
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
|