@hasna/machines 0.0.38 → 0.0.40
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/agent/index.js +12 -3
- package/dist/cli/index.js +13 -4
- package/dist/consumer.js +12 -3
- package/dist/db.d.ts +1 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/index.js +14 -4
- package/dist/mcp/index.js +13 -4
- package/dist/storage.js +9 -0
- package/package.json +1 -1
package/dist/agent/index.js
CHANGED
|
@@ -6949,12 +6949,12 @@ var {
|
|
|
6949
6949
|
} = import__.default;
|
|
6950
6950
|
|
|
6951
6951
|
// src/version.ts
|
|
6952
|
-
import { existsSync, readFileSync } from "fs";
|
|
6952
|
+
import { existsSync, readFileSync, realpathSync } from "fs";
|
|
6953
6953
|
import { dirname, join } from "path";
|
|
6954
6954
|
import { fileURLToPath } from "url";
|
|
6955
6955
|
function getPackageVersion() {
|
|
6956
6956
|
try {
|
|
6957
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
6957
|
+
const here = dirname(realpathSync(fileURLToPath(import.meta.url)));
|
|
6958
6958
|
const candidates = [join(here, "..", "package.json"), join(here, "..", "..", "package.json")];
|
|
6959
6959
|
const pkgPath = candidates.find((candidate) => existsSync(candidate));
|
|
6960
6960
|
if (!pkgPath) {
|
|
@@ -7150,6 +7150,15 @@ function listHeartbeats(machineId) {
|
|
|
7150
7150
|
FROM agent_heartbeats
|
|
7151
7151
|
ORDER BY updated_at DESC`).all();
|
|
7152
7152
|
}
|
|
7153
|
+
function latestHeartbeatByMachine(heartbeats) {
|
|
7154
|
+
const byMachine = new Map;
|
|
7155
|
+
for (const heartbeat of heartbeats) {
|
|
7156
|
+
if (!byMachine.has(heartbeat.machine_id)) {
|
|
7157
|
+
byMachine.set(heartbeat.machine_id, heartbeat);
|
|
7158
|
+
}
|
|
7159
|
+
}
|
|
7160
|
+
return byMachine;
|
|
7161
|
+
}
|
|
7153
7162
|
|
|
7154
7163
|
// src/agent/runtime.ts
|
|
7155
7164
|
import { execFileSync } from "child_process";
|
|
@@ -11616,7 +11625,7 @@ function discoverMachineTopology(options = {}) {
|
|
|
11616
11625
|
const warnings = [];
|
|
11617
11626
|
const manifest = readManifest();
|
|
11618
11627
|
const heartbeats = listHeartbeats();
|
|
11619
|
-
const heartbeatByMachine =
|
|
11628
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
11620
11629
|
const localMachineId = getLocalMachineId();
|
|
11621
11630
|
const peers = options.includeTailscale === false ? new Map : loadTailscalePeers(runner, warnings);
|
|
11622
11631
|
const machineIds = new Set([
|
package/dist/cli/index.js
CHANGED
|
@@ -2219,6 +2219,15 @@ function listHeartbeats(machineId) {
|
|
|
2219
2219
|
FROM agent_heartbeats
|
|
2220
2220
|
ORDER BY updated_at DESC`).all();
|
|
2221
2221
|
}
|
|
2222
|
+
function latestHeartbeatByMachine(heartbeats) {
|
|
2223
|
+
const byMachine = new Map;
|
|
2224
|
+
for (const heartbeat of heartbeats) {
|
|
2225
|
+
if (!byMachine.has(heartbeat.machine_id)) {
|
|
2226
|
+
byMachine.set(heartbeat.machine_id, heartbeat);
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
return byMachine;
|
|
2230
|
+
}
|
|
2222
2231
|
function countRuns(table) {
|
|
2223
2232
|
const db = getDb();
|
|
2224
2233
|
const row = db.query(`SELECT COUNT(*) as count FROM ${table}`).get();
|
|
@@ -3173,12 +3182,12 @@ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
|
|
|
3173
3182
|
var source_default = chalk;
|
|
3174
3183
|
|
|
3175
3184
|
// src/version.ts
|
|
3176
|
-
import { existsSync, readFileSync } from "fs";
|
|
3185
|
+
import { existsSync, readFileSync, realpathSync } from "fs";
|
|
3177
3186
|
import { dirname, join } from "path";
|
|
3178
3187
|
import { fileURLToPath } from "url";
|
|
3179
3188
|
function getPackageVersion() {
|
|
3180
3189
|
try {
|
|
3181
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
3190
|
+
const here = dirname(realpathSync(fileURLToPath(import.meta.url)));
|
|
3182
3191
|
const candidates = [join(here, "..", "package.json"), join(here, "..", "..", "package.json")];
|
|
3183
3192
|
const pkgPath = candidates.find((candidate) => existsSync(candidate));
|
|
3184
3193
|
if (!pkgPath) {
|
|
@@ -7755,7 +7764,7 @@ function discoverMachineTopology(options = {}) {
|
|
|
7755
7764
|
const warnings = [];
|
|
7756
7765
|
const manifest = readManifest();
|
|
7757
7766
|
const heartbeats = listHeartbeats();
|
|
7758
|
-
const heartbeatByMachine =
|
|
7767
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
7759
7768
|
const localMachineId = getLocalMachineId();
|
|
7760
7769
|
const peers = options.includeTailscale === false ? new Map : loadTailscalePeers(runner, warnings);
|
|
7761
7770
|
const machineIds = new Set([
|
|
@@ -9966,7 +9975,7 @@ function parseJsonObject(value) {
|
|
|
9966
9975
|
function getStatus() {
|
|
9967
9976
|
const manifest = readManifest();
|
|
9968
9977
|
const heartbeats = listHeartbeats();
|
|
9969
|
-
const heartbeatByMachine =
|
|
9978
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
9970
9979
|
const machineIds = new Set([
|
|
9971
9980
|
...manifest.machines.map((machine) => machine.id),
|
|
9972
9981
|
...heartbeats.map((heartbeat) => heartbeat.machine_id)
|
package/dist/consumer.js
CHANGED
|
@@ -253,6 +253,15 @@ function listHeartbeats(machineId) {
|
|
|
253
253
|
FROM agent_heartbeats
|
|
254
254
|
ORDER BY updated_at DESC`).all();
|
|
255
255
|
}
|
|
256
|
+
function latestHeartbeatByMachine(heartbeats) {
|
|
257
|
+
const byMachine = new Map;
|
|
258
|
+
for (const heartbeat of heartbeats) {
|
|
259
|
+
if (!byMachine.has(heartbeat.machine_id)) {
|
|
260
|
+
byMachine.set(heartbeat.machine_id, heartbeat);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return byMachine;
|
|
264
|
+
}
|
|
256
265
|
function countRuns(table) {
|
|
257
266
|
const db = getDb();
|
|
258
267
|
const row = db.query(`SELECT COUNT(*) as count FROM ${table}`).get();
|
|
@@ -4568,12 +4577,12 @@ function detectCurrentMachineManifest() {
|
|
|
4568
4577
|
}
|
|
4569
4578
|
|
|
4570
4579
|
// src/version.ts
|
|
4571
|
-
import { existsSync as existsSync3, readFileSync as readFileSync2 } from "fs";
|
|
4580
|
+
import { existsSync as existsSync3, readFileSync as readFileSync2, realpathSync } from "fs";
|
|
4572
4581
|
import { dirname as dirname3, join as join2 } from "path";
|
|
4573
4582
|
import { fileURLToPath } from "url";
|
|
4574
4583
|
function getPackageVersion() {
|
|
4575
4584
|
try {
|
|
4576
|
-
const here = dirname3(fileURLToPath(import.meta.url));
|
|
4585
|
+
const here = dirname3(realpathSync(fileURLToPath(import.meta.url)));
|
|
4577
4586
|
const candidates = [join2(here, "..", "package.json"), join2(here, "..", "..", "package.json")];
|
|
4578
4587
|
const pkgPath = candidates.find((candidate) => existsSync3(candidate));
|
|
4579
4588
|
if (!pkgPath) {
|
|
@@ -4886,7 +4895,7 @@ function discoverMachineTopology(options = {}) {
|
|
|
4886
4895
|
const warnings = [];
|
|
4887
4896
|
const manifest = readManifest();
|
|
4888
4897
|
const heartbeats = listHeartbeats();
|
|
4889
|
-
const heartbeatByMachine =
|
|
4898
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
4890
4899
|
const localMachineId = getLocalMachineId();
|
|
4891
4900
|
const peers = options.includeTailscale === false ? new Map : loadTailscalePeers(runner, warnings);
|
|
4892
4901
|
const machineIds = new Set([
|
package/dist/db.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export interface StoredHeartbeat {
|
|
|
44
44
|
private_metadata: number;
|
|
45
45
|
}
|
|
46
46
|
export declare function listHeartbeats(machineId?: string): StoredHeartbeat[];
|
|
47
|
+
export declare function latestHeartbeatByMachine(heartbeats: readonly StoredHeartbeat[]): Map<string, StoredHeartbeat>;
|
|
47
48
|
export declare function countRuns(table: "setup_runs" | "sync_runs"): number;
|
|
48
49
|
export declare function setHeartbeatStatus(machineId: string, pid: number, status: "online" | "offline"): void;
|
|
49
50
|
export declare function recordSetupRun(machineId: string, status: string, details: unknown): void;
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6720,6 +6720,15 @@ function listHeartbeats(machineId) {
|
|
|
6720
6720
|
FROM agent_heartbeats
|
|
6721
6721
|
ORDER BY updated_at DESC`).all();
|
|
6722
6722
|
}
|
|
6723
|
+
function latestHeartbeatByMachine(heartbeats) {
|
|
6724
|
+
const byMachine = new Map;
|
|
6725
|
+
for (const heartbeat of heartbeats) {
|
|
6726
|
+
if (!byMachine.has(heartbeat.machine_id)) {
|
|
6727
|
+
byMachine.set(heartbeat.machine_id, heartbeat);
|
|
6728
|
+
}
|
|
6729
|
+
}
|
|
6730
|
+
return byMachine;
|
|
6731
|
+
}
|
|
6723
6732
|
function countRuns(table) {
|
|
6724
6733
|
const db = getDb();
|
|
6725
6734
|
const row = db.query(`SELECT COUNT(*) as count FROM ${table}`).get();
|
|
@@ -11408,12 +11417,12 @@ import { arch as arch2, hostname as hostname3, platform as platform2, userInfo a
|
|
|
11408
11417
|
import { spawnSync } from "child_process";
|
|
11409
11418
|
|
|
11410
11419
|
// src/version.ts
|
|
11411
|
-
import { existsSync as existsSync3, readFileSync as readFileSync2 } from "fs";
|
|
11420
|
+
import { existsSync as existsSync3, readFileSync as readFileSync2, realpathSync } from "fs";
|
|
11412
11421
|
import { dirname as dirname3, join as join2 } from "path";
|
|
11413
11422
|
import { fileURLToPath } from "url";
|
|
11414
11423
|
function getPackageVersion() {
|
|
11415
11424
|
try {
|
|
11416
|
-
const here = dirname3(fileURLToPath(import.meta.url));
|
|
11425
|
+
const here = dirname3(realpathSync(fileURLToPath(import.meta.url)));
|
|
11417
11426
|
const candidates = [join2(here, "..", "package.json"), join2(here, "..", "..", "package.json")];
|
|
11418
11427
|
const pkgPath = candidates.find((candidate) => existsSync3(candidate));
|
|
11419
11428
|
if (!pkgPath) {
|
|
@@ -11726,7 +11735,7 @@ function discoverMachineTopology(options = {}) {
|
|
|
11726
11735
|
const warnings = [];
|
|
11727
11736
|
const manifest = readManifest();
|
|
11728
11737
|
const heartbeats = listHeartbeats();
|
|
11729
|
-
const heartbeatByMachine =
|
|
11738
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
11730
11739
|
const localMachineId = getLocalMachineId();
|
|
11731
11740
|
const peers = options.includeTailscale === false ? new Map : loadTailscalePeers(runner, warnings);
|
|
11732
11741
|
const machineIds = new Set([
|
|
@@ -14807,7 +14816,7 @@ function parseJsonObject2(value) {
|
|
|
14807
14816
|
function getStatus() {
|
|
14808
14817
|
const manifest = readManifest();
|
|
14809
14818
|
const heartbeats = listHeartbeats();
|
|
14810
|
-
const heartbeatByMachine =
|
|
14819
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
14811
14820
|
const machineIds = new Set([
|
|
14812
14821
|
...manifest.machines.map((machine) => machine.id),
|
|
14813
14822
|
...heartbeats.map((heartbeat) => heartbeat.machine_id)
|
|
@@ -25145,6 +25154,7 @@ export {
|
|
|
25145
25154
|
listHeartbeats,
|
|
25146
25155
|
listDomainMappings,
|
|
25147
25156
|
listApps,
|
|
25157
|
+
latestHeartbeatByMachine,
|
|
25148
25158
|
isSensitiveKey,
|
|
25149
25159
|
isPrivateOutputEnabled,
|
|
25150
25160
|
isPrivateMetadataEnabled,
|
package/dist/mcp/index.js
CHANGED
|
@@ -19,12 +19,12 @@ var __export = (target, all) => {
|
|
|
19
19
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
20
20
|
|
|
21
21
|
// src/version.ts
|
|
22
|
-
import { existsSync, readFileSync } from "fs";
|
|
22
|
+
import { existsSync, readFileSync, realpathSync } from "fs";
|
|
23
23
|
import { dirname, join } from "path";
|
|
24
24
|
import { fileURLToPath } from "url";
|
|
25
25
|
function getPackageVersion() {
|
|
26
26
|
try {
|
|
27
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
27
|
+
const here = dirname(realpathSync(fileURLToPath(import.meta.url)));
|
|
28
28
|
const candidates = [join(here, "..", "package.json"), join(here, "..", "..", "package.json")];
|
|
29
29
|
const pkgPath = candidates.find((candidate) => existsSync(candidate));
|
|
30
30
|
if (!pkgPath) {
|
|
@@ -4582,6 +4582,15 @@ function listHeartbeats(machineId) {
|
|
|
4582
4582
|
FROM agent_heartbeats
|
|
4583
4583
|
ORDER BY updated_at DESC`).all();
|
|
4584
4584
|
}
|
|
4585
|
+
function latestHeartbeatByMachine(heartbeats) {
|
|
4586
|
+
const byMachine = new Map;
|
|
4587
|
+
for (const heartbeat of heartbeats) {
|
|
4588
|
+
if (!byMachine.has(heartbeat.machine_id)) {
|
|
4589
|
+
byMachine.set(heartbeat.machine_id, heartbeat);
|
|
4590
|
+
}
|
|
4591
|
+
}
|
|
4592
|
+
return byMachine;
|
|
4593
|
+
}
|
|
4585
4594
|
function countRuns(table) {
|
|
4586
4595
|
const db = getDb();
|
|
4587
4596
|
const row = db.query(`SELECT COUNT(*) as count FROM ${table}`).get();
|
|
@@ -4836,7 +4845,7 @@ function discoverMachineTopology(options = {}) {
|
|
|
4836
4845
|
const warnings = [];
|
|
4837
4846
|
const manifest = readManifest();
|
|
4838
4847
|
const heartbeats = listHeartbeats();
|
|
4839
|
-
const heartbeatByMachine =
|
|
4848
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
4840
4849
|
const localMachineId = getLocalMachineId();
|
|
4841
4850
|
const peers = options.includeTailscale === false ? new Map : loadTailscalePeers(runner, warnings);
|
|
4842
4851
|
const machineIds = new Set([
|
|
@@ -7383,7 +7392,7 @@ function parseJsonObject2(value) {
|
|
|
7383
7392
|
function getStatus() {
|
|
7384
7393
|
const manifest = readManifest();
|
|
7385
7394
|
const heartbeats = listHeartbeats();
|
|
7386
|
-
const heartbeatByMachine =
|
|
7395
|
+
const heartbeatByMachine = latestHeartbeatByMachine(heartbeats);
|
|
7387
7396
|
const machineIds = new Set([
|
|
7388
7397
|
...manifest.machines.map((machine) => machine.id),
|
|
7389
7398
|
...heartbeats.map((heartbeat) => heartbeat.machine_id)
|
package/dist/storage.js
CHANGED
|
@@ -248,6 +248,15 @@ function listHeartbeats(machineId) {
|
|
|
248
248
|
FROM agent_heartbeats
|
|
249
249
|
ORDER BY updated_at DESC`).all();
|
|
250
250
|
}
|
|
251
|
+
function latestHeartbeatByMachine(heartbeats) {
|
|
252
|
+
const byMachine = new Map;
|
|
253
|
+
for (const heartbeat of heartbeats) {
|
|
254
|
+
if (!byMachine.has(heartbeat.machine_id)) {
|
|
255
|
+
byMachine.set(heartbeat.machine_id, heartbeat);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return byMachine;
|
|
259
|
+
}
|
|
251
260
|
function countRuns(table) {
|
|
252
261
|
const db = getDb();
|
|
253
262
|
const row = db.query(`SELECT COUNT(*) as count FROM ${table}`).get();
|