@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/README.md +11 -3
- package/dist/cli/index.js +231 -15
- package/dist/consumer.d.ts +1 -1
- package/dist/consumer.d.ts.map +1 -1
- package/dist/consumer.js +201 -10
- package/dist/index.js +205 -14
- package/dist/mcp/index.js +205 -14
- package/dist/topology.d.ts +21 -0
- package/dist/topology.d.ts.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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
|
-
|
|
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
|
|
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} ${
|
|
5130
|
+
return remoteCommand ? `ssh ${resolved.target} ${shellQuote2(remoteCommand)}` : `ssh ${resolved.target}`;
|
|
4940
5131
|
}
|
|
4941
5132
|
|
|
4942
5133
|
// src/remote.ts
|
|
4943
|
-
function
|
|
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 ${
|
|
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
|
|
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 =
|
|
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
|
|
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 ${
|
|
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
|
|
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 =
|
|
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=${
|
|
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)"',
|
package/dist/topology.d.ts
CHANGED
|
@@ -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"];
|
package/dist/topology.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,YAAY,CAAC;AAGnE,eAAO,MAAM,kCAAkC,IAAI,CAAC;AACpD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,qBAAqB,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,KAAK,EAAE,gBAAgB,CAAC;QACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;IACF,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,qBAAqB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,IAAI,CAAC;IACf,aAAa,EAAE,IAAI,CAAC;IACpB,gBAAgB,EAAE,IAAI,CAAC;IACvB,iBAAiB,EAAE,IAAI,CAAC;IACxB,sBAAsB,CAAC,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"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"}
|