@hasna/machines 0.0.33 → 0.0.35
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 +53 -36
- package/dist/cli/index.js +332 -29
- package/dist/commands/doctor.d.ts +23 -2
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/heal-daemon.d.ts.map +1 -1
- package/dist/consumer.js +206 -12
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +340 -27
- package/dist/manifests.d.ts +22 -1
- package/dist/manifests.d.ts.map +1 -1
- package/dist/mcp/index.js +321 -22
- package/dist/redaction.d.ts +11 -0
- package/dist/redaction.d.ts.map +1 -0
- package/dist/topology.d.ts.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/consumer-conformance.mjs +3 -2
package/dist/mcp/index.js
CHANGED
|
@@ -4158,7 +4158,103 @@ function ensureParentDir(filePath) {
|
|
|
4158
4158
|
}
|
|
4159
4159
|
}
|
|
4160
4160
|
|
|
4161
|
+
// src/redaction.ts
|
|
4162
|
+
var REDACTED_VALUE = "[redacted]";
|
|
4163
|
+
var SENSITIVE_KEY_PATTERN = /(password|passwd|token|credential|private[_-]?key|privateKey|api[_-]?key|github.*key|pem|secret)/i;
|
|
4164
|
+
var SECRET_REFERENCE_KEY_PATTERN = /(secret(ref(erence)?|key)?|secretRef|secretKey)$/i;
|
|
4165
|
+
var SENSITIVE_VALUE_PATTERNS = [
|
|
4166
|
+
/-----BEGIN [A-Z ]*PRIVATE KEY-----/,
|
|
4167
|
+
/\bghp_[A-Za-z0-9_]{20,}\b/,
|
|
4168
|
+
/\bgithub_pat_[A-Za-z0-9_]{20,}\b/,
|
|
4169
|
+
/\bxox[baprs]-[A-Za-z0-9-]{20,}\b/,
|
|
4170
|
+
/\bAKIA[0-9A-Z]{16}\b/,
|
|
4171
|
+
/\bsk-[A-Za-z0-9_-]{20,}\b/
|
|
4172
|
+
];
|
|
4173
|
+
function isSensitiveKey(key) {
|
|
4174
|
+
return SENSITIVE_KEY_PATTERN.test(key);
|
|
4175
|
+
}
|
|
4176
|
+
function isSecretReferenceKey(key) {
|
|
4177
|
+
return SECRET_REFERENCE_KEY_PATTERN.test(key);
|
|
4178
|
+
}
|
|
4179
|
+
function looksSensitiveString(value) {
|
|
4180
|
+
return SENSITIVE_VALUE_PATTERNS.some((pattern) => pattern.test(value));
|
|
4181
|
+
}
|
|
4182
|
+
function isRecord(value) {
|
|
4183
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
4184
|
+
}
|
|
4185
|
+
function redactPath(value) {
|
|
4186
|
+
return value.replace(/\/home\/[^/\s]+/g, "/home/<user>").replace(/\/Users\/[^/\s]+/g, "/Users/<user>").replace(/[A-Za-z]:\\Users\\[^\\\s]+/g, "C:\\Users\\<user>");
|
|
4187
|
+
}
|
|
4188
|
+
function redactPrivateRef(value) {
|
|
4189
|
+
const trimmed = value.trim();
|
|
4190
|
+
const scheme = trimmed.match(/^([a-z][a-z0-9+.-]*:\/\/)/i);
|
|
4191
|
+
if (scheme)
|
|
4192
|
+
return `${scheme[1]}<redacted>`;
|
|
4193
|
+
const colon = trimmed.match(/^([a-z][a-z0-9+.-]*):/i);
|
|
4194
|
+
if (colon)
|
|
4195
|
+
return `${colon[1]}:<redacted>`;
|
|
4196
|
+
return "<private-manifest-ref:redacted>";
|
|
4197
|
+
}
|
|
4198
|
+
function redactIdentifier(value) {
|
|
4199
|
+
return value.replace(/[^a-zA-Z0-9_.-]/g, "_").slice(0, 80) || "adapter";
|
|
4200
|
+
}
|
|
4201
|
+
function redactSensitiveValue(value, key = "") {
|
|
4202
|
+
if (typeof value === "string") {
|
|
4203
|
+
if (isSensitiveKey(key) && !(isSecretReferenceKey(key) && !looksSensitiveString(value))) {
|
|
4204
|
+
return REDACTED_VALUE;
|
|
4205
|
+
}
|
|
4206
|
+
if (looksSensitiveString(value))
|
|
4207
|
+
return REDACTED_VALUE;
|
|
4208
|
+
return redactPath(value);
|
|
4209
|
+
}
|
|
4210
|
+
if (Array.isArray(value)) {
|
|
4211
|
+
return value.map((entry) => redactSensitiveValue(entry, key));
|
|
4212
|
+
}
|
|
4213
|
+
if (isRecord(value)) {
|
|
4214
|
+
const redacted = {};
|
|
4215
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
4216
|
+
redacted[entryKey] = redactSensitiveValue(entryValue, entryKey);
|
|
4217
|
+
}
|
|
4218
|
+
return redacted;
|
|
4219
|
+
}
|
|
4220
|
+
return value;
|
|
4221
|
+
}
|
|
4222
|
+
function publicMetadataKeys(metadata) {
|
|
4223
|
+
return Object.keys(metadata ?? {}).filter((key) => !isSensitiveKey(key)).sort();
|
|
4224
|
+
}
|
|
4225
|
+
function redactMetadata(metadata) {
|
|
4226
|
+
return redactSensitiveValue(metadata ?? {});
|
|
4227
|
+
}
|
|
4228
|
+
function redactManifestForDiagnostics(machine) {
|
|
4229
|
+
const metadata = redactMetadata(machine.metadata);
|
|
4230
|
+
for (const key of ["user", "username", "login"]) {
|
|
4231
|
+
if (typeof metadata[key] === "string")
|
|
4232
|
+
metadata[key] = REDACTED_VALUE;
|
|
4233
|
+
}
|
|
4234
|
+
return {
|
|
4235
|
+
id: machine.id,
|
|
4236
|
+
hostname: machine.hostname ? REDACTED_VALUE : undefined,
|
|
4237
|
+
sshAddress: machine.sshAddress ? REDACTED_VALUE : undefined,
|
|
4238
|
+
tailscaleName: machine.tailscaleName ? REDACTED_VALUE : undefined,
|
|
4239
|
+
platform: machine.platform,
|
|
4240
|
+
connection: machine.connection,
|
|
4241
|
+
workspacePath: redactPath(machine.workspacePath),
|
|
4242
|
+
bunPath: machine.bunPath ? redactPath(machine.bunPath) : undefined,
|
|
4243
|
+
tags: machine.tags ?? [],
|
|
4244
|
+
metadata,
|
|
4245
|
+
packages: machine.packages?.map((pkg) => ({ ...pkg })),
|
|
4246
|
+
apps: machine.apps?.map((app) => ({ ...app })),
|
|
4247
|
+
files: machine.files?.map((file) => ({
|
|
4248
|
+
...file,
|
|
4249
|
+
source: redactPath(file.source),
|
|
4250
|
+
target: redactPath(file.target)
|
|
4251
|
+
}))
|
|
4252
|
+
};
|
|
4253
|
+
}
|
|
4254
|
+
|
|
4161
4255
|
// src/manifests.ts
|
|
4256
|
+
var PRIVATE_MANIFEST_REF_ENV = "HASNA_MACHINES_PRIVATE_MANIFEST_REF";
|
|
4257
|
+
var PRIVATE_MANIFEST_BACKEND_ENV = "HASNA_MACHINES_PRIVATE_MANIFEST_BACKEND";
|
|
4162
4258
|
var packageSchema = exports_external.object({
|
|
4163
4259
|
name: exports_external.string(),
|
|
4164
4260
|
manager: exports_external.enum(["bun", "brew", "apt", "custom"]).optional(),
|
|
@@ -4211,6 +4307,42 @@ function normalizePlatform() {
|
|
|
4211
4307
|
function normalizeMachines(machines) {
|
|
4212
4308
|
return [...machines].sort((left, right) => left.id.localeCompare(right.id));
|
|
4213
4309
|
}
|
|
4310
|
+
function inferPrivateBackend(rawRef, explicitBackend) {
|
|
4311
|
+
if (explicitBackend?.trim())
|
|
4312
|
+
return explicitBackend.trim();
|
|
4313
|
+
const scheme = rawRef.trim().match(/^([a-z][a-z0-9+.-]*)(?::\/\/|:)/i);
|
|
4314
|
+
return scheme?.[1] ?? null;
|
|
4315
|
+
}
|
|
4316
|
+
function fileSourceRef(path) {
|
|
4317
|
+
return {
|
|
4318
|
+
kind: "file",
|
|
4319
|
+
ref: redactPath(path),
|
|
4320
|
+
backend: "file",
|
|
4321
|
+
private: false,
|
|
4322
|
+
publicSafe: true
|
|
4323
|
+
};
|
|
4324
|
+
}
|
|
4325
|
+
function privateSourceRef(rawRef, backend) {
|
|
4326
|
+
return {
|
|
4327
|
+
kind: "private-ref",
|
|
4328
|
+
ref: redactPrivateRef(rawRef),
|
|
4329
|
+
backend: inferPrivateBackend(rawRef, backend),
|
|
4330
|
+
private: true,
|
|
4331
|
+
publicSafe: true
|
|
4332
|
+
};
|
|
4333
|
+
}
|
|
4334
|
+
function privateRefFromOptions(options) {
|
|
4335
|
+
const env = options.env ?? process.env;
|
|
4336
|
+
return options.privateRef?.trim() || env[PRIVATE_MANIFEST_REF_ENV]?.trim() || env["MACHINES_PRIVATE_MANIFEST_REF"]?.trim() || null;
|
|
4337
|
+
}
|
|
4338
|
+
function getManifestSourceRef(options = {}) {
|
|
4339
|
+
const rawPrivateRef = privateRefFromOptions(options);
|
|
4340
|
+
if (rawPrivateRef) {
|
|
4341
|
+
const env = options.env ?? process.env;
|
|
4342
|
+
return privateSourceRef(rawPrivateRef, options.privateBackend ?? env[PRIVATE_MANIFEST_BACKEND_ENV]);
|
|
4343
|
+
}
|
|
4344
|
+
return fileSourceRef(options.path ?? getManifestPath());
|
|
4345
|
+
}
|
|
4214
4346
|
function getDefaultManifest() {
|
|
4215
4347
|
return {
|
|
4216
4348
|
version: 1,
|
|
@@ -4225,6 +4357,53 @@ function readManifest(path = getManifestPath()) {
|
|
|
4225
4357
|
const raw = JSON.parse(readFileSync2(path, "utf8"));
|
|
4226
4358
|
return fleetSchema.parse(raw);
|
|
4227
4359
|
}
|
|
4360
|
+
function readManifestWithSource(options = {}) {
|
|
4361
|
+
const path = options.path ?? getManifestPath();
|
|
4362
|
+
const source = getManifestSourceRef(options);
|
|
4363
|
+
const warnings = [];
|
|
4364
|
+
if (source.kind === "private-ref") {
|
|
4365
|
+
const rawRef = privateRefFromOptions(options);
|
|
4366
|
+
if (rawRef && options.adapter) {
|
|
4367
|
+
try {
|
|
4368
|
+
const manifest2 = options.adapter.readManifest({ source, rawRef });
|
|
4369
|
+
if (manifest2) {
|
|
4370
|
+
return {
|
|
4371
|
+
manifest: fleetSchema.parse(manifest2),
|
|
4372
|
+
info: {
|
|
4373
|
+
source,
|
|
4374
|
+
loadedFrom: "private-ref",
|
|
4375
|
+
warnings
|
|
4376
|
+
}
|
|
4377
|
+
};
|
|
4378
|
+
}
|
|
4379
|
+
warnings.push(`private_manifest_adapter_empty:${redactIdentifier(options.adapter.id)}`);
|
|
4380
|
+
} catch (error) {
|
|
4381
|
+
warnings.push(`private_manifest_adapter_failed:${redactIdentifier(options.adapter.id)}`);
|
|
4382
|
+
}
|
|
4383
|
+
} else {
|
|
4384
|
+
warnings.push("private_manifest_ref_without_adapter");
|
|
4385
|
+
}
|
|
4386
|
+
const fallbackSource = fileSourceRef(path);
|
|
4387
|
+
const manifest = readManifest(path);
|
|
4388
|
+
return {
|
|
4389
|
+
manifest,
|
|
4390
|
+
info: {
|
|
4391
|
+
source,
|
|
4392
|
+
loadedFrom: existsSync3(path) ? "fallback" : "default",
|
|
4393
|
+
fallbackSource,
|
|
4394
|
+
warnings
|
|
4395
|
+
}
|
|
4396
|
+
};
|
|
4397
|
+
}
|
|
4398
|
+
return {
|
|
4399
|
+
manifest: readManifest(path),
|
|
4400
|
+
info: {
|
|
4401
|
+
source,
|
|
4402
|
+
loadedFrom: existsSync3(path) ? "file" : "default",
|
|
4403
|
+
warnings
|
|
4404
|
+
}
|
|
4405
|
+
};
|
|
4406
|
+
}
|
|
4228
4407
|
function validateManifest(path = getManifestPath()) {
|
|
4229
4408
|
return readManifest(path);
|
|
4230
4409
|
}
|
|
@@ -4479,6 +4658,19 @@ function manifestHostReachable(target) {
|
|
|
4479
4658
|
return null;
|
|
4480
4659
|
return overrides.has(target);
|
|
4481
4660
|
}
|
|
4661
|
+
function userFromSshAddress(address) {
|
|
4662
|
+
if (!address)
|
|
4663
|
+
return null;
|
|
4664
|
+
const at = address.indexOf("@");
|
|
4665
|
+
if (at <= 0)
|
|
4666
|
+
return null;
|
|
4667
|
+
return address.slice(0, at);
|
|
4668
|
+
}
|
|
4669
|
+
function commandTargetForRoute(target, user) {
|
|
4670
|
+
if (target.kind === "local" || target.target.includes("@") || !user)
|
|
4671
|
+
return target.target;
|
|
4672
|
+
return `${user}@${target.target}`;
|
|
4673
|
+
}
|
|
4482
4674
|
function routeHints(input) {
|
|
4483
4675
|
const hints = [];
|
|
4484
4676
|
if (input.machineId === input.localMachineId) {
|
|
@@ -4529,6 +4721,7 @@ function buildEntry(input) {
|
|
|
4529
4721
|
});
|
|
4530
4722
|
const selectedRoute = selectRouteHint(hints);
|
|
4531
4723
|
const route = selectedRoute?.kind === "ssh" ? "ssh" : selectedRoute?.kind ?? "unknown";
|
|
4724
|
+
const routeUser = userFromSshAddress(manifest?.sshAddress) ?? (typeof manifest?.metadata?.user === "string" ? manifest.metadata.user : null);
|
|
4532
4725
|
return {
|
|
4533
4726
|
machine_id: input.machineId,
|
|
4534
4727
|
hostname: manifest?.hostname ?? peer?.HostName ?? null,
|
|
@@ -4549,11 +4742,11 @@ function buildEntry(input) {
|
|
|
4549
4742
|
ssh: {
|
|
4550
4743
|
address: manifest?.sshAddress ?? null,
|
|
4551
4744
|
route,
|
|
4552
|
-
command_target: selectedRoute
|
|
4745
|
+
command_target: selectedRoute ? commandTargetForRoute(selectedRoute, routeUser) : null
|
|
4553
4746
|
},
|
|
4554
4747
|
route_hints: hints,
|
|
4555
4748
|
tags: manifest?.tags ?? [],
|
|
4556
|
-
metadata: manifest?.metadata
|
|
4749
|
+
metadata: redactMetadata(manifest?.metadata)
|
|
4557
4750
|
};
|
|
4558
4751
|
}
|
|
4559
4752
|
function discoverMachineTopology(options = {}) {
|
|
@@ -4757,6 +4950,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4757
4950
|
const local = route === "local" || machine.machine_id === topology.local_machine_id;
|
|
4758
4951
|
const confidence = routeConfidence({ machine, hint: selectedHint, matchedBy });
|
|
4759
4952
|
const ok = Boolean(selectedHint?.target);
|
|
4953
|
+
const commandTarget = selectedHint ? commandTargetForRoute(selectedHint, userFromSshAddress(machine.ssh.address) ?? machine.user) : null;
|
|
4760
4954
|
return {
|
|
4761
4955
|
schema_version: MACHINES_CONSUMER_CONTRACT_VERSION,
|
|
4762
4956
|
package: topology.package,
|
|
@@ -4767,7 +4961,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4767
4961
|
route,
|
|
4768
4962
|
source: route,
|
|
4769
4963
|
target: selectedHint?.target ?? null,
|
|
4770
|
-
command_target:
|
|
4964
|
+
command_target: commandTarget,
|
|
4771
4965
|
confidence,
|
|
4772
4966
|
local,
|
|
4773
4967
|
evidence: {
|
|
@@ -4790,7 +4984,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4790
4984
|
warnings
|
|
4791
4985
|
};
|
|
4792
4986
|
}
|
|
4793
|
-
function
|
|
4987
|
+
function isRecord2(value) {
|
|
4794
4988
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
4795
4989
|
}
|
|
4796
4990
|
function metadataString(metadata, keys) {
|
|
@@ -4820,13 +5014,13 @@ function metadataStringArray(metadata, keys) {
|
|
|
4820
5014
|
function readMappedPath(input) {
|
|
4821
5015
|
for (const containerName of input.containers) {
|
|
4822
5016
|
const container = input.metadata[containerName];
|
|
4823
|
-
if (!
|
|
5017
|
+
if (!isRecord2(container))
|
|
4824
5018
|
continue;
|
|
4825
5019
|
for (const key of input.keys) {
|
|
4826
5020
|
const value = container[key];
|
|
4827
5021
|
if (typeof value === "string" && value.trim())
|
|
4828
5022
|
return value.trim();
|
|
4829
|
-
if (
|
|
5023
|
+
if (isRecord2(value)) {
|
|
4830
5024
|
const path = metadataString(value, ["path", "root", "workspacePath", "workspace_path"]);
|
|
4831
5025
|
if (path)
|
|
4832
5026
|
return path;
|
|
@@ -5080,7 +5274,7 @@ function primaryMachine(machine, projectId, primaryMachineId) {
|
|
|
5080
5274
|
return machine.tags.includes("primary");
|
|
5081
5275
|
}
|
|
5082
5276
|
function metadataKeysForDiagnostics(metadata) {
|
|
5083
|
-
return
|
|
5277
|
+
return publicMetadataKeys(metadata);
|
|
5084
5278
|
}
|
|
5085
5279
|
function resolveMachineWorkspace(options) {
|
|
5086
5280
|
const now = options.now ?? new Date;
|
|
@@ -5225,7 +5419,7 @@ function resolveSshTarget(machineId, options = {}) {
|
|
|
5225
5419
|
}
|
|
5226
5420
|
return {
|
|
5227
5421
|
machineId: resolved.machine_id ?? machineId,
|
|
5228
|
-
target: resolved.target,
|
|
5422
|
+
target: resolved.command_target ?? resolved.target,
|
|
5229
5423
|
route: resolved.route,
|
|
5230
5424
|
confidence: resolved.confidence,
|
|
5231
5425
|
warnings: resolved.warnings
|
|
@@ -5590,12 +5784,28 @@ function diffMachines(leftMachineId, rightMachineId) {
|
|
|
5590
5784
|
}
|
|
5591
5785
|
|
|
5592
5786
|
// src/commands/doctor.ts
|
|
5593
|
-
|
|
5594
|
-
|
|
5787
|
+
var DOCTOR_OPTIONAL_ADAPTER_DOMAINS = ["secrets", "configs", "monitor", "repos", "mcps", "shield"];
|
|
5788
|
+
function makeCheck(id, status, summary, detail, extra = {}) {
|
|
5789
|
+
const { data, ...rest } = extra;
|
|
5790
|
+
return {
|
|
5791
|
+
...rest,
|
|
5792
|
+
id,
|
|
5793
|
+
status,
|
|
5794
|
+
summary,
|
|
5795
|
+
detail,
|
|
5796
|
+
data: data ? redactSensitiveValue(data) : undefined
|
|
5797
|
+
};
|
|
5595
5798
|
}
|
|
5596
5799
|
function parseKeyValueOutput(stdout) {
|
|
5597
|
-
|
|
5598
|
-
|
|
5800
|
+
const result = {};
|
|
5801
|
+
for (const line of stdout.trim().split(`
|
|
5802
|
+
`)) {
|
|
5803
|
+
const index = line.indexOf("=");
|
|
5804
|
+
if (index <= 0)
|
|
5805
|
+
continue;
|
|
5806
|
+
result[line.slice(0, index)] = line.slice(index + 1);
|
|
5807
|
+
}
|
|
5808
|
+
return result;
|
|
5599
5809
|
}
|
|
5600
5810
|
function buildDoctorCommand() {
|
|
5601
5811
|
return [
|
|
@@ -5603,9 +5813,11 @@ function buildDoctorCommand() {
|
|
|
5603
5813
|
'manifest_path="${HASNA_MACHINES_MANIFEST_PATH:-$data_dir/machines.json}"',
|
|
5604
5814
|
'db_path="${HASNA_MACHINES_DB_PATH:-$data_dir/machines.db}"',
|
|
5605
5815
|
'notifications_path="${HASNA_MACHINES_NOTIFICATIONS_PATH:-$data_dir/notifications.json}"',
|
|
5816
|
+
`printf 'data_dir=%s\\n' "$data_dir"`,
|
|
5606
5817
|
`printf 'manifest_path=%s\\n' "$manifest_path"`,
|
|
5607
5818
|
`printf 'db_path=%s\\n' "$db_path"`,
|
|
5608
5819
|
`printf 'notifications_path=%s\\n' "$notifications_path"`,
|
|
5820
|
+
`printf 'data_dir_exists=%s\\n' "$(test -d "$data_dir" && printf yes || printf no)"`,
|
|
5609
5821
|
`printf 'manifest_exists=%s\\n' "$(test -e "$manifest_path" && printf yes || printf no)"`,
|
|
5610
5822
|
`printf 'db_exists=%s\\n' "$(test -e "$db_path" && printf yes || printf no)"`,
|
|
5611
5823
|
`printf 'notifications_exists=%s\\n' "$(test -e "$notifications_path" && printf yes || printf no)"`,
|
|
@@ -5616,28 +5828,115 @@ function buildDoctorCommand() {
|
|
|
5616
5828
|
`printf 'machines_mcp=%s\\n' "$(command -v machines-mcp 2>/dev/null || printf missing)"`
|
|
5617
5829
|
].join("; ");
|
|
5618
5830
|
}
|
|
5619
|
-
function
|
|
5620
|
-
|
|
5831
|
+
function fallbackAdapterCheck(domain) {
|
|
5832
|
+
return makeCheck(`${domain}-adapter`, "ok", `Optional ${domain} adapter`, `No ${domain} adapter configured; skipped optional private integration check.`, {
|
|
5833
|
+
optional: true,
|
|
5834
|
+
source: "open-machines",
|
|
5835
|
+
data: { configured: false, fallback: true }
|
|
5836
|
+
});
|
|
5837
|
+
}
|
|
5838
|
+
function sanitizeAdapterCheck(check, domain, adapterId) {
|
|
5839
|
+
const safeAdapterId = redactIdentifier(adapterId);
|
|
5840
|
+
return makeCheck(check.id.startsWith(`${domain}-`) || check.id.startsWith(`${domain}:`) ? check.id : `${domain}:${check.id}`, check.status, check.summary, String(redactSensitiveValue(check.detail)), {
|
|
5841
|
+
...check,
|
|
5842
|
+
optional: check.optional ?? true,
|
|
5843
|
+
source: check.source ? String(redactSensitiveValue(check.source)) : `adapter:${safeAdapterId}`,
|
|
5844
|
+
data: check.data ? redactSensitiveValue(check.data) : undefined
|
|
5845
|
+
});
|
|
5846
|
+
}
|
|
5847
|
+
function runOptionalAdapterChecks(context, adapters) {
|
|
5848
|
+
const checks = [];
|
|
5849
|
+
for (const domain of DOCTOR_OPTIONAL_ADAPTER_DOMAINS) {
|
|
5850
|
+
const adapter2 = adapters.find((candidate) => candidate.checks?.[domain]);
|
|
5851
|
+
const hook = adapter2?.checks?.[domain];
|
|
5852
|
+
if (!adapter2 || !hook) {
|
|
5853
|
+
checks.push(fallbackAdapterCheck(domain));
|
|
5854
|
+
continue;
|
|
5855
|
+
}
|
|
5856
|
+
try {
|
|
5857
|
+
const result = hook(context);
|
|
5858
|
+
const domainChecks = Array.isArray(result) ? result : result ? [result] : [fallbackAdapterCheck(domain)];
|
|
5859
|
+
checks.push(...domainChecks.map((check) => sanitizeAdapterCheck(check, domain, adapter2.id)));
|
|
5860
|
+
} catch {
|
|
5861
|
+
const safeAdapterId = redactIdentifier(adapter2.id);
|
|
5862
|
+
checks.push(makeCheck(`${domain}-adapter`, "warn", `Optional ${domain} adapter failed`, "Adapter failed; details are intentionally hidden to avoid leaking private refs or credentials.", {
|
|
5863
|
+
optional: true,
|
|
5864
|
+
source: `adapter:${safeAdapterId}`,
|
|
5865
|
+
data: { adapter: safeAdapterId, fallback: true }
|
|
5866
|
+
}));
|
|
5867
|
+
}
|
|
5868
|
+
}
|
|
5869
|
+
return checks;
|
|
5870
|
+
}
|
|
5871
|
+
function runDoctor(machineId = getLocalMachineId(), options = {}) {
|
|
5872
|
+
const now = options.now ?? new Date;
|
|
5873
|
+
const { manifest, info: manifestSource } = readManifestWithSource({ adapter: options.manifestAdapter ?? null });
|
|
5621
5874
|
const commandChecks = runMachineCommand(machineId, buildDoctorCommand());
|
|
5622
5875
|
const details = parseKeyValueOutput(commandChecks.stdout);
|
|
5623
5876
|
const machineInManifest = manifest.machines.find((machine) => machine.id === machineId);
|
|
5877
|
+
const optionalAdapterChecks = options.includeOptionalAdapters === false ? [] : runOptionalAdapterChecks({
|
|
5878
|
+
machineId,
|
|
5879
|
+
manifest,
|
|
5880
|
+
manifestSource,
|
|
5881
|
+
commandDetails: details,
|
|
5882
|
+
now
|
|
5883
|
+
}, options.adapters ?? []);
|
|
5624
5884
|
const checks = [
|
|
5625
|
-
makeCheck("manifest-
|
|
5626
|
-
|
|
5627
|
-
|
|
5628
|
-
|
|
5885
|
+
makeCheck("manifest-source", manifestSource.warnings.length > 0 ? "warn" : "ok", "Manifest source boundary", `${manifestSource.source.kind}:${manifestSource.source.ref} loaded from ${manifestSource.loadedFrom}`, {
|
|
5886
|
+
data: {
|
|
5887
|
+
source: manifestSource.source,
|
|
5888
|
+
loadedFrom: manifestSource.loadedFrom,
|
|
5889
|
+
fallbackSource: manifestSource.fallbackSource,
|
|
5890
|
+
warnings: manifestSource.warnings
|
|
5891
|
+
},
|
|
5892
|
+
remediation: manifestSource.warnings.length > 0 ? ["Provide a private manifest adapter or unset the private manifest ref to use the local manifest only."] : undefined
|
|
5893
|
+
}),
|
|
5894
|
+
makeCheck("manifest-entry", machineInManifest ? "ok" : "warn", machineInManifest ? "Machine exists in manifest" : "Machine missing from manifest", machineInManifest ? JSON.stringify(redactManifestForDiagnostics(machineInManifest)) : `No manifest entry for ${machineId}`, {
|
|
5895
|
+
data: {
|
|
5896
|
+
declared: Boolean(machineInManifest),
|
|
5897
|
+
machine: machineInManifest ? redactManifestForDiagnostics(machineInManifest) : null
|
|
5898
|
+
}
|
|
5899
|
+
}),
|
|
5900
|
+
makeCheck("data-dir", details["data_dir_exists"] === "yes" ? "ok" : "warn", "Data directory check", `${redactPath(details["data_dir"] || "unknown")} ${details["data_dir_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5901
|
+
data: {
|
|
5902
|
+
path: redactPath(details["data_dir"] || "unknown"),
|
|
5903
|
+
exists: details["data_dir_exists"] === "yes"
|
|
5904
|
+
}
|
|
5905
|
+
}),
|
|
5906
|
+
makeCheck("manifest-path", details["manifest_exists"] === "yes" ? "ok" : "warn", "Manifest path check", `${redactPath(details["manifest_path"] || "unknown")} ${details["manifest_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5907
|
+
data: {
|
|
5908
|
+
path: redactPath(details["manifest_path"] || "unknown"),
|
|
5909
|
+
exists: details["manifest_exists"] === "yes"
|
|
5910
|
+
}
|
|
5911
|
+
}),
|
|
5912
|
+
makeCheck("db-path", details["db_exists"] === "yes" ? "ok" : "warn", "DB path check", `${redactPath(details["db_path"] || "unknown")} ${details["db_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5913
|
+
data: {
|
|
5914
|
+
path: redactPath(details["db_path"] || "unknown"),
|
|
5915
|
+
exists: details["db_exists"] === "yes"
|
|
5916
|
+
}
|
|
5917
|
+
}),
|
|
5918
|
+
makeCheck("notifications-path", details["notifications_exists"] === "yes" ? "ok" : "warn", "Notifications path check", `${redactPath(details["notifications_path"] || "unknown")} ${details["notifications_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5919
|
+
data: {
|
|
5920
|
+
path: redactPath(details["notifications_path"] || "unknown"),
|
|
5921
|
+
exists: details["notifications_exists"] === "yes"
|
|
5922
|
+
}
|
|
5923
|
+
}),
|
|
5629
5924
|
makeCheck("bun", details["bun"] && details["bun"] !== "missing" ? "ok" : "fail", "Bun availability", details["bun"] || "missing"),
|
|
5630
5925
|
makeCheck("machines-cli", details["machines"] && details["machines"] !== "missing" ? "ok" : "warn", "machines CLI availability", details["machines"] || "missing"),
|
|
5631
5926
|
makeCheck("machines-agent-cli", details["machines_agent"] && details["machines_agent"] !== "missing" ? "ok" : "warn", "machines-agent availability", details["machines_agent"] || "missing"),
|
|
5632
5927
|
makeCheck("machines-mcp-cli", details["machines_mcp"] && details["machines_mcp"] !== "missing" ? "ok" : "warn", "machines-mcp availability", details["machines_mcp"] || "missing"),
|
|
5633
|
-
makeCheck("ssh", details["ssh"] === "ok" ? "ok" : "warn", "SSH availability", details["ssh"] || "missing")
|
|
5928
|
+
makeCheck("ssh", details["ssh"] === "ok" ? "ok" : "warn", "SSH availability", details["ssh"] || "missing"),
|
|
5929
|
+
...optionalAdapterChecks
|
|
5634
5930
|
];
|
|
5635
5931
|
return {
|
|
5636
5932
|
machineId,
|
|
5637
5933
|
source: commandChecks.source,
|
|
5638
|
-
|
|
5639
|
-
|
|
5640
|
-
|
|
5934
|
+
schemaVersion: 1,
|
|
5935
|
+
generatedAt: now.toISOString(),
|
|
5936
|
+
manifestSource,
|
|
5937
|
+
manifestPath: details["manifest_path"] ? redactPath(details["manifest_path"]) : undefined,
|
|
5938
|
+
dbPath: details["db_path"] ? redactPath(details["db_path"]) : undefined,
|
|
5939
|
+
notificationsPath: details["notifications_path"] ? redactPath(details["notifications_path"]) : undefined,
|
|
5641
5940
|
checks
|
|
5642
5941
|
};
|
|
5643
5942
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MachineManifest } from "./types.js";
|
|
2
|
+
export declare const REDACTED_VALUE = "[redacted]";
|
|
3
|
+
export declare function isSensitiveKey(key: string): boolean;
|
|
4
|
+
export declare function redactPath(value: string): string;
|
|
5
|
+
export declare function redactPrivateRef(value: string): string;
|
|
6
|
+
export declare function redactIdentifier(value: string): string;
|
|
7
|
+
export declare function redactSensitiveValue(value: unknown, key?: string): unknown;
|
|
8
|
+
export declare function publicMetadataKeys(metadata: Record<string, unknown> | undefined): string[];
|
|
9
|
+
export declare function redactMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
10
|
+
export declare function redactManifestForDiagnostics(machine: MachineManifest): Record<string, unknown>;
|
|
11
|
+
//# sourceMappingURL=redaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,cAAc,eAAe,CAAC;AAa3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAcD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAK,GAAG,OAAO,CAsBtE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,EAAE,CAI1F;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErG;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyB9F"}
|
package/dist/topology.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -35,6 +35,20 @@ export interface FleetManifest {
|
|
|
35
35
|
generatedAt?: string;
|
|
36
36
|
machines: MachineManifest[];
|
|
37
37
|
}
|
|
38
|
+
export type ManifestSourceKind = "file" | "private-ref";
|
|
39
|
+
export interface ManifestSourceRef {
|
|
40
|
+
kind: ManifestSourceKind;
|
|
41
|
+
ref: string;
|
|
42
|
+
backend: string | null;
|
|
43
|
+
private: boolean;
|
|
44
|
+
publicSafe: true;
|
|
45
|
+
}
|
|
46
|
+
export interface ManifestLoadInfo {
|
|
47
|
+
source: ManifestSourceRef;
|
|
48
|
+
loadedFrom: ManifestSourceKind | "default" | "fallback";
|
|
49
|
+
fallbackSource?: ManifestSourceRef;
|
|
50
|
+
warnings: string[];
|
|
51
|
+
}
|
|
38
52
|
export interface AgentHeartbeat {
|
|
39
53
|
machineId: string;
|
|
40
54
|
pid: number;
|
|
@@ -166,10 +180,17 @@ export interface DoctorCheck {
|
|
|
166
180
|
status: "ok" | "warn" | "fail";
|
|
167
181
|
summary: string;
|
|
168
182
|
detail: string;
|
|
183
|
+
optional?: boolean;
|
|
184
|
+
source?: string;
|
|
185
|
+
data?: Record<string, unknown>;
|
|
186
|
+
remediation?: string[];
|
|
169
187
|
}
|
|
170
188
|
export interface DoctorReport {
|
|
171
189
|
machineId: string;
|
|
172
190
|
source: "local" | "lan" | "tailscale" | "ssh";
|
|
191
|
+
schemaVersion?: 1;
|
|
192
|
+
generatedAt?: string;
|
|
193
|
+
manifestSource?: ManifestLoadInfo;
|
|
173
194
|
manifestPath?: string;
|
|
174
195
|
dbPath?: string;
|
|
175
196
|
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":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -86,6 +86,7 @@ function packagePath(root, packageName) {
|
|
|
86
86
|
function copyPackage(source, target) {
|
|
87
87
|
if (!existsSync(source)) throw new Error(`Package source does not exist: ${source}`);
|
|
88
88
|
const sourceRoot = resolve(source);
|
|
89
|
+
const privateArtifactDir = `.${"takumi"}`;
|
|
89
90
|
cpSync(source, target, {
|
|
90
91
|
recursive: true,
|
|
91
92
|
filter: (path) => {
|
|
@@ -97,8 +98,8 @@ function copyPackage(source, target) {
|
|
|
97
98
|
&& !normalized.startsWith(".git/")
|
|
98
99
|
&& normalized !== ".hasna"
|
|
99
100
|
&& !normalized.startsWith(".hasna/")
|
|
100
|
-
&& normalized !==
|
|
101
|
-
&& !normalized.startsWith(
|
|
101
|
+
&& normalized !== privateArtifactDir
|
|
102
|
+
&& !normalized.startsWith(`${privateArtifactDir}/`);
|
|
102
103
|
},
|
|
103
104
|
});
|
|
104
105
|
}
|