@hasna/machines 0.0.21 → 0.0.22

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/mcp/index.js CHANGED
@@ -4375,7 +4375,8 @@ var MACHINES_CONSUMER_CAPABILITIES = {
4375
4375
  compatibility: true,
4376
4376
  route_resolution: true,
4377
4377
  cli_json_fallback: true,
4378
- workspace_path_mapping: true
4378
+ workspace_path_mapping: true,
4379
+ workspace_diagnostics: true
4379
4380
  };
4380
4381
  function getMachinesConsumerCapabilities() {
4381
4382
  return { ...MACHINES_CONSUMER_CAPABILITIES };
@@ -4766,6 +4767,170 @@ function inferRepoRoot(workspaceRoot, repoName) {
4766
4767
  }
4767
4768
  return joinPath(root, repoName);
4768
4769
  }
4770
+ function shellQuote(value) {
4771
+ return `'${value.replace(/'/g, "'\\''")}'`;
4772
+ }
4773
+ function shellCommand(command) {
4774
+ return command.map(shellQuote).join(" ");
4775
+ }
4776
+ function canCheckPathForMachine(machine, localMachineId) {
4777
+ if (!machine)
4778
+ return false;
4779
+ if (machine.machine_id === localMachineId)
4780
+ return true;
4781
+ return machine.route_hints.some((hint) => hint.kind === "local");
4782
+ }
4783
+ function checkedPathExists(path, check) {
4784
+ if (!path || !check)
4785
+ return null;
4786
+ return existsSync4(path);
4787
+ }
4788
+ function repairHint(input) {
4789
+ const command = [
4790
+ "machines",
4791
+ "workspace",
4792
+ "repair",
4793
+ "--machine",
4794
+ input.machineId,
4795
+ "--project",
4796
+ input.projectId
4797
+ ];
4798
+ if (input.repoName)
4799
+ command.push("--repo", input.repoName);
4800
+ if (input.openFilesRepoName)
4801
+ command.push("--open-files-repo", input.openFilesRepoName);
4802
+ command.push("--json");
4803
+ const applyCommand = [...command.slice(0, -1), "--apply", "--json"];
4804
+ return {
4805
+ id: `repair:${input.machineId}:${input.projectId}`,
4806
+ reason: input.reason,
4807
+ command,
4808
+ shell_command: shellCommand(command),
4809
+ apply_command: applyCommand,
4810
+ apply_shell_command: shellCommand(applyCommand)
4811
+ };
4812
+ }
4813
+ function pathDiagnostic(input) {
4814
+ if (!input.path.path) {
4815
+ return {
4816
+ id: input.id,
4817
+ status: "missing",
4818
+ severity: input.required ? "fail" : "warn",
4819
+ message: `${input.label} is unresolved.`,
4820
+ path: null,
4821
+ source: input.path.source,
4822
+ path_exists: null
4823
+ };
4824
+ }
4825
+ if (input.pathExists === false) {
4826
+ return {
4827
+ id: input.id,
4828
+ status: "stale",
4829
+ severity: "fail",
4830
+ message: `${input.label} points to a path that does not exist on this machine.`,
4831
+ path: input.path.path,
4832
+ source: input.path.source,
4833
+ path_exists: false
4834
+ };
4835
+ }
4836
+ if (input.path.source === "inferred") {
4837
+ return {
4838
+ id: input.id,
4839
+ status: "inferred",
4840
+ severity: "warn",
4841
+ message: `${input.label} was inferred from the workspace root; write an explicit manifest mapping for repeatable downstream sync.`,
4842
+ path: input.path.path,
4843
+ source: input.path.source,
4844
+ path_exists: input.pathExists
4845
+ };
4846
+ }
4847
+ return {
4848
+ id: input.id,
4849
+ status: "ok",
4850
+ severity: "ok",
4851
+ message: `${input.label} is explicit enough for downstream sync.`,
4852
+ path: input.path.path,
4853
+ source: input.path.source,
4854
+ path_exists: input.pathExists
4855
+ };
4856
+ }
4857
+ function workspaceDiagnostics(input) {
4858
+ const checkPaths = canCheckPathForMachine(input.machine, input.localMachineId);
4859
+ const diagnostics = [];
4860
+ if (!input.machine) {
4861
+ diagnostics.push({
4862
+ id: "manifest",
4863
+ status: "missing_manifest",
4864
+ severity: "fail",
4865
+ message: "Machine is not present in topology or manifest.",
4866
+ path: null,
4867
+ source: "manifest",
4868
+ path_exists: null
4869
+ });
4870
+ } else if (!input.resolution.evidence.manifest_declared) {
4871
+ diagnostics.push({
4872
+ id: "manifest",
4873
+ status: "missing_manifest",
4874
+ severity: "warn",
4875
+ message: "Machine came from live topology but is not declared in the manifest.",
4876
+ path: null,
4877
+ source: "manifest",
4878
+ path_exists: null
4879
+ });
4880
+ }
4881
+ diagnostics.push(pathDiagnostic({
4882
+ id: "workspace_root",
4883
+ label: "Workspace root",
4884
+ path: input.resolution.paths.workspace_root,
4885
+ pathExists: checkedPathExists(input.resolution.paths.workspace_root.path, checkPaths),
4886
+ required: false
4887
+ }));
4888
+ diagnostics.push(pathDiagnostic({
4889
+ id: "project_root",
4890
+ label: "Project root",
4891
+ path: input.resolution.paths.project_root,
4892
+ pathExists: checkedPathExists(input.resolution.paths.project_root.path, checkPaths),
4893
+ required: true
4894
+ }));
4895
+ diagnostics.push(pathDiagnostic({
4896
+ id: "open_files_root",
4897
+ label: "Open-files root",
4898
+ path: input.resolution.paths.open_files_root,
4899
+ pathExists: checkedPathExists(input.resolution.paths.open_files_root.path, checkPaths),
4900
+ required: false
4901
+ }));
4902
+ if (input.resolution.machine.trust_status !== "trusted") {
4903
+ diagnostics.push({
4904
+ id: "trust",
4905
+ status: "untrusted",
4906
+ severity: "warn",
4907
+ message: `Machine trust status is ${input.resolution.machine.trust_status}; manifest repair apply requires trust or --allow-untrusted.`,
4908
+ path: null,
4909
+ source: "trust",
4910
+ path_exists: null
4911
+ });
4912
+ }
4913
+ if (input.resolution.machine.auth_status !== "authenticated") {
4914
+ diagnostics.push({
4915
+ id: "auth",
4916
+ status: "unknown_auth",
4917
+ severity: "warn",
4918
+ message: `Machine auth status is ${input.resolution.machine.auth_status}; remote sync may still fail if SSH is unavailable.`,
4919
+ path: null,
4920
+ source: "auth",
4921
+ path_exists: null
4922
+ });
4923
+ }
4924
+ const needsRepair = diagnostics.some((entry) => (entry.id === "project_root" || entry.id === "open_files_root") && (entry.status === "missing" || entry.status === "inferred" || entry.status === "stale"));
4925
+ const repairHints = needsRepair ? [repairHint({
4926
+ machineId: input.resolution.machine_id ?? input.resolution.requested_machine_id,
4927
+ projectId: input.resolution.project.project_id,
4928
+ repoName: input.resolution.project.repo_name,
4929
+ openFilesRepoName: input.openFilesRepoName,
4930
+ reason: "Write explicit workspace_paths and open_files_roots manifest metadata."
4931
+ })] : [];
4932
+ return { diagnostics, repairHints };
4933
+ }
4769
4934
  function projectPathFromMetadata(metadata, projectId, repoName) {
4770
4935
  const keys = [projectId, repoName].filter((value) => Boolean(value));
4771
4936
  return readMappedPath({
@@ -4841,7 +5006,7 @@ function resolveMachineWorkspace(options) {
4841
5006
  const openFilesRepoName = options.openFilesRepoName ?? "open-files";
4842
5007
  if (!machine) {
4843
5008
  warnings.push(`machine_not_found:${options.machineId}`);
4844
- return {
5009
+ const resolution2 = {
4845
5010
  schema_version: MACHINES_CONSUMER_CONTRACT_VERSION,
4846
5011
  package: topology.package,
4847
5012
  ok: false,
@@ -4855,6 +5020,8 @@ function resolveMachineWorkspace(options) {
4855
5020
  project_root: { path: null, source: "unresolved" },
4856
5021
  open_files_root: { path: null, source: "unresolved" }
4857
5022
  },
5023
+ diagnostics: [],
5024
+ repair_hints: [],
4858
5025
  evidence: {
4859
5026
  topology: true,
4860
5027
  matched_by: matchedBy,
@@ -4863,6 +5030,17 @@ function resolveMachineWorkspace(options) {
4863
5030
  },
4864
5031
  warnings
4865
5032
  };
5033
+ const diagnostics2 = workspaceDiagnostics({
5034
+ machine,
5035
+ localMachineId: topology.local_machine_id,
5036
+ resolution: resolution2,
5037
+ openFilesRepoName
5038
+ });
5039
+ return {
5040
+ ...resolution2,
5041
+ diagnostics: diagnostics2.diagnostics,
5042
+ repair_hints: diagnostics2.repairHints
5043
+ };
4866
5044
  }
4867
5045
  const metadata = machine.metadata;
4868
5046
  const workspaceRootPath = options.workspaceRoot ?? machine.workspace_path;
@@ -4881,7 +5059,7 @@ function resolveMachineWorkspace(options) {
4881
5059
  warnings.push(`open_files_root_inferred:${options.projectId}`);
4882
5060
  if (!projectRootPath)
4883
5061
  warnings.push(`project_root_unresolved:${options.projectId}`);
4884
- return {
5062
+ const resolution = {
4885
5063
  schema_version: MACHINES_CONSUMER_CONTRACT_VERSION,
4886
5064
  package: topology.package,
4887
5065
  ok: Boolean(projectRootPath),
@@ -4904,6 +5082,8 @@ function resolveMachineWorkspace(options) {
4904
5082
  project_root: { path: projectRootPath, source: projectRootSource },
4905
5083
  open_files_root: { path: openFilesRootPath, source: openFilesRootSource }
4906
5084
  },
5085
+ diagnostics: [],
5086
+ repair_hints: [],
4907
5087
  evidence: {
4908
5088
  topology: true,
4909
5089
  matched_by: matchedBy,
@@ -4912,10 +5092,21 @@ function resolveMachineWorkspace(options) {
4912
5092
  },
4913
5093
  warnings
4914
5094
  };
5095
+ const diagnostics = workspaceDiagnostics({
5096
+ machine,
5097
+ localMachineId: topology.local_machine_id,
5098
+ resolution,
5099
+ openFilesRepoName
5100
+ });
5101
+ return {
5102
+ ...resolution,
5103
+ diagnostics: diagnostics.diagnostics,
5104
+ repair_hints: diagnostics.repairHints
5105
+ };
4915
5106
  }
4916
5107
 
4917
5108
  // src/commands/ssh.ts
4918
- function shellQuote(value) {
5109
+ function shellQuote2(value) {
4919
5110
  return `'${value.replace(/'/g, "'\\''")}'`;
4920
5111
  }
4921
5112
  function resolveSshTarget(machineId, options = {}) {
@@ -4936,11 +5127,11 @@ function resolveSshTarget(machineId, options = {}) {
4936
5127
  }
4937
5128
  function buildSshCommand(machineId, remoteCommand, options = {}) {
4938
5129
  const resolved = resolveSshTarget(machineId, options);
4939
- return remoteCommand ? `ssh ${resolved.target} ${shellQuote(remoteCommand)}` : `ssh ${resolved.target}`;
5130
+ return remoteCommand ? `ssh ${resolved.target} ${shellQuote2(remoteCommand)}` : `ssh ${resolved.target}`;
4940
5131
  }
4941
5132
 
4942
5133
  // src/remote.ts
4943
- function shellQuote2(value) {
5134
+ function shellQuote3(value) {
4944
5135
  return `'${value.replace(/'/g, "'\\''")}'`;
4945
5136
  }
4946
5137
  function machineIsLocal(machineId, localMachineId) {
@@ -4958,7 +5149,7 @@ function resolveMachineCommand(machineId, command, localMachineId = getLocalMach
4958
5149
  } catch (error) {
4959
5150
  const message = String(error.message ?? error);
4960
5151
  if (message.includes("Machine route not found") || message.includes("Machine not found in manifest")) {
4961
- return { source: "ssh", shellCommand: `ssh ${shellQuote2(machineId)} ${shellQuote2(command)}` };
5152
+ return { source: "ssh", shellCommand: `ssh ${shellQuote3(machineId)} ${shellQuote3(command)}` };
4962
5153
  }
4963
5154
  throw error;
4964
5155
  }
@@ -4991,7 +5182,7 @@ function getAppManager(machine, app) {
4991
5182
  return "winget";
4992
5183
  return "apt";
4993
5184
  }
4994
- function shellQuote3(value) {
5185
+ function shellQuote4(value) {
4995
5186
  return `'${value.replace(/'/g, `'\\''`)}'`;
4996
5187
  }
4997
5188
  function buildAppCommand(machine, app) {
@@ -5012,7 +5203,7 @@ function buildAppCommand(machine, app) {
5012
5203
  return `sudo apt-get install -y ${packageName}`;
5013
5204
  }
5014
5205
  function buildAppProbeCommand(machine, app) {
5015
- const packageName = shellQuote3(getPackageName(app));
5206
+ const packageName = shellQuote4(getPackageName(app));
5016
5207
  const manager = getAppManager(machine, app);
5017
5208
  if (manager === "custom") {
5018
5209
  return `if command -v ${packageName} >/dev/null 2>&1; then printf 'installed=1\\nversion=custom\\n'; else printf 'installed=0\\n'; fi`;
@@ -5522,7 +5713,7 @@ var notificationConfigSchema = exports_external.object({
5522
5713
  function sortChannels(channels) {
5523
5714
  return [...channels].sort((left, right) => left.id.localeCompare(right.id));
5524
5715
  }
5525
- function shellQuote4(value) {
5716
+ function shellQuote5(value) {
5526
5717
  return `'${value.replace(/'/g, `'\\''`)}'`;
5527
5718
  }
5528
5719
  function hasCommand2(binary) {
@@ -5569,7 +5760,7 @@ ${message}
5569
5760
  };
5570
5761
  }
5571
5762
  if (hasCommand2("mail")) {
5572
- const command = `printf %s ${shellQuote4(message)} | mail -s ${shellQuote4(subject)} ${shellQuote4(channel.target)}`;
5763
+ const command = `printf %s ${shellQuote5(message)} | mail -s ${shellQuote5(subject)} ${shellQuote5(channel.target)}`;
5573
5764
  const result = Bun.spawnSync(["bash", "-lc", command], {
5574
5765
  stdout: "pipe",
5575
5766
  stderr: "pipe",
@@ -6363,7 +6554,7 @@ var DEFAULT_COMMANDS = [
6363
6554
  function defaultPackages() {
6364
6555
  return [{ name: "@hasna/machines", command: "machines", expectedVersion: getPackageVersion(), required: true }];
6365
6556
  }
6366
- function shellQuote5(value) {
6557
+ function shellQuote6(value) {
6367
6558
  return `'${value.replace(/'/g, "'\\''")}'`;
6368
6559
  }
6369
6560
  function commandId(value) {
@@ -6414,7 +6605,7 @@ function defaultRunner2(machineId, command) {
6414
6605
  return runMachineCommand(machineId, command);
6415
6606
  }
6416
6607
  function inspectCommand(machineId, spec, runner) {
6417
- const command = shellQuote5(spec.command);
6608
+ const command = shellQuote6(spec.command);
6418
6609
  const versionArgs = spec.versionArgs ?? "--version";
6419
6610
  const script = [
6420
6611
  `cmd=${command}`,
@@ -6443,7 +6634,7 @@ function fieldCommand(field) {
6443
6634
  }
6444
6635
  function inspectWorkspace(machineId, spec, runner) {
6445
6636
  const script = [
6446
- `path=${shellQuote5(spec.path)}`,
6637
+ `path=${shellQuote6(spec.path)}`,
6447
6638
  'printf "exists=%s\\n" "$(test -d "$path" && printf yes || printf no)"',
6448
6639
  'pkg="$path/package.json"',
6449
6640
  'printf "package_json=%s\\n" "$(test -f "$pkg" && printf yes || printf no)"',
@@ -54,6 +54,7 @@ export interface MachinesConsumerCapabilities {
54
54
  route_resolution: true;
55
55
  cli_json_fallback: true;
56
56
  workspace_path_mapping?: true;
57
+ workspace_diagnostics?: true;
57
58
  }
58
59
  export type MachinesConsumerEnvelope = "topology" | "route" | "workspace" | "compatibility";
59
60
  export interface MachinesConsumerContract {
@@ -114,6 +115,24 @@ export interface MachineWorkspacePath {
114
115
  path: string | null;
115
116
  source: MachineWorkspacePathSource;
116
117
  }
118
+ export type MachineWorkspaceDiagnosticStatus = "ok" | "missing" | "inferred" | "stale" | "untrusted" | "unknown_auth" | "missing_manifest";
119
+ export interface MachineWorkspaceDiagnostic {
120
+ id: string;
121
+ status: MachineWorkspaceDiagnosticStatus;
122
+ severity: "ok" | "warn" | "fail";
123
+ message: string;
124
+ path: string | null;
125
+ source: MachineWorkspacePathSource | "manifest" | "trust" | "auth";
126
+ path_exists: boolean | null;
127
+ }
128
+ export interface MachineWorkspaceRepairHint {
129
+ id: string;
130
+ reason: string;
131
+ command: string[];
132
+ shell_command: string;
133
+ apply_command: string[];
134
+ apply_shell_command: string;
135
+ }
117
136
  export interface MachineWorkspaceProject {
118
137
  project_id: string;
119
138
  repo_name: string | null;
@@ -138,6 +157,8 @@ export interface MachineWorkspaceResolution {
138
157
  project_root: MachineWorkspacePath;
139
158
  open_files_root: MachineWorkspacePath;
140
159
  };
160
+ diagnostics: MachineWorkspaceDiagnostic[];
161
+ repair_hints: MachineWorkspaceRepairHint[];
141
162
  evidence: {
142
163
  topology: boolean;
143
164
  matched_by: MachineRouteResolution["evidence"]["matched_by"];
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/machines",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "description": "Machine fleet management CLI + MCP for developers",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",