@hasna/machines 0.0.1
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 +71 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +11776 -0
- package/dist/agent/runtime.d.ts +10 -0
- package/dist/agent/runtime.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +17594 -0
- package/dist/commands/apps.d.ts +11 -0
- package/dist/commands/apps.d.ts.map +1 -0
- package/dist/commands/backup.d.ts +7 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/cert.d.ts +7 -0
- package/dist/commands/cert.d.ts.map +1 -0
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/dns.d.ts +14 -0
- package/dist/commands/dns.d.ts.map +1 -0
- package/dist/commands/install-claude.d.ts +14 -0
- package/dist/commands/install-claude.d.ts.map +1 -0
- package/dist/commands/install-tailscale.d.ts +7 -0
- package/dist/commands/install-tailscale.d.ts.map +1 -0
- package/dist/commands/manifest.d.ts +9 -0
- package/dist/commands/manifest.d.ts.map +1 -0
- package/dist/commands/notifications.d.ts +12 -0
- package/dist/commands/notifications.d.ts.map +1 -0
- package/dist/commands/ports.d.ts +13 -0
- package/dist/commands/ports.d.ts.map +1 -0
- package/dist/commands/serve.d.ts +14 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/setup.d.ts +7 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/ssh.d.ts +8 -0
- package/dist/commands/ssh.d.ts.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/db.d.ts +18 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30553 -0
- package/dist/manifests.d.ts +271 -0
- package/dist/manifests.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15019 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/paths.d.ts +7 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/types.d.ts +119 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare const MACHINE_MCP_TOOL_NAMES: readonly ["machines_status", "machines_apps_list", "machines_apps_plan", "machines_apps_apply", "machines_manifest", "machines_manifest_validate", "machines_manifest_bootstrap", "machines_manifest_get", "machines_manifest_remove", "machines_agent_status", "machines_setup_preview", "machines_setup_apply", "machines_sync_preview", "machines_sync_apply", "machines_diff", "machines_install_tailscale_preview", "machines_install_tailscale_apply", "machines_install_claude_preview", "machines_install_claude_apply", "machines_ssh_resolve", "machines_ports", "machines_backup_preview", "machines_backup_apply", "machines_cert_preview", "machines_cert_apply", "machines_dns_add", "machines_dns_list", "machines_dns_render", "machines_notifications_add", "machines_notifications_list", "machines_notifications_test", "machines_notifications_remove", "machines_serve_info", "machines_serve_dashboard"];
|
|
3
|
+
export declare function createMcpServer(version: string): McpServer;
|
|
4
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBpE,eAAO,MAAM,sBAAsB,g4BAmCzB,CAAC;AAEX,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAkX1D"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function getDataDir(): string;
|
|
2
|
+
export declare function getDbPath(): string;
|
|
3
|
+
export declare function getManifestPath(): string;
|
|
4
|
+
export declare function getNotificationsPath(): string;
|
|
5
|
+
export declare function ensureParentDir(filePath: string): void;
|
|
6
|
+
export declare function ensureDataDir(): string;
|
|
7
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAOA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMtD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAItC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
export type MachinePlatform = "linux" | "macos" | "windows";
|
|
2
|
+
export type MachineConnection = "local" | "ssh" | "tailscale";
|
|
3
|
+
export interface ManifestPackageSpec {
|
|
4
|
+
name: string;
|
|
5
|
+
manager?: "bun" | "brew" | "apt" | "custom";
|
|
6
|
+
version?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ManifestAppSpec {
|
|
9
|
+
name: string;
|
|
10
|
+
manager?: "brew" | "cask" | "apt" | "winget" | "custom";
|
|
11
|
+
packageName?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ManifestFileSyncSpec {
|
|
14
|
+
source: string;
|
|
15
|
+
target: string;
|
|
16
|
+
mode?: "copy" | "symlink";
|
|
17
|
+
}
|
|
18
|
+
export interface MachineManifest {
|
|
19
|
+
id: string;
|
|
20
|
+
hostname?: string;
|
|
21
|
+
sshAddress?: string;
|
|
22
|
+
tailscaleName?: string;
|
|
23
|
+
platform: MachinePlatform;
|
|
24
|
+
connection?: MachineConnection;
|
|
25
|
+
workspacePath: string;
|
|
26
|
+
bunPath?: string;
|
|
27
|
+
tags?: string[];
|
|
28
|
+
packages?: ManifestPackageSpec[];
|
|
29
|
+
apps?: ManifestAppSpec[];
|
|
30
|
+
files?: ManifestFileSyncSpec[];
|
|
31
|
+
}
|
|
32
|
+
export interface FleetManifest {
|
|
33
|
+
version: 1;
|
|
34
|
+
generatedAt?: string;
|
|
35
|
+
machines: MachineManifest[];
|
|
36
|
+
}
|
|
37
|
+
export interface AgentHeartbeat {
|
|
38
|
+
machineId: string;
|
|
39
|
+
pid: number;
|
|
40
|
+
status: "online" | "offline";
|
|
41
|
+
updatedAt: string;
|
|
42
|
+
}
|
|
43
|
+
export interface SetupResult {
|
|
44
|
+
machineId: string;
|
|
45
|
+
mode: "plan" | "apply";
|
|
46
|
+
steps: SetupStep[];
|
|
47
|
+
executed: number;
|
|
48
|
+
}
|
|
49
|
+
export interface SetupStep {
|
|
50
|
+
id: string;
|
|
51
|
+
title: string;
|
|
52
|
+
command: string;
|
|
53
|
+
manager: "shell" | "bun" | "brew" | "apt" | "custom";
|
|
54
|
+
privileged?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface SyncResult {
|
|
57
|
+
machineId: string;
|
|
58
|
+
mode: "plan" | "apply";
|
|
59
|
+
actions: SyncAction[];
|
|
60
|
+
executed: number;
|
|
61
|
+
}
|
|
62
|
+
export interface SyncAction {
|
|
63
|
+
id: string;
|
|
64
|
+
title: string;
|
|
65
|
+
command: string;
|
|
66
|
+
status: "ok" | "missing" | "drifted";
|
|
67
|
+
kind: "package" | "file" | "summary";
|
|
68
|
+
}
|
|
69
|
+
export interface MachineDiff {
|
|
70
|
+
leftMachineId: string;
|
|
71
|
+
rightMachineId: string;
|
|
72
|
+
changedFields: string[];
|
|
73
|
+
missingPackages: {
|
|
74
|
+
leftOnly: string[];
|
|
75
|
+
rightOnly: string[];
|
|
76
|
+
};
|
|
77
|
+
missingFiles: {
|
|
78
|
+
leftOnly: string[];
|
|
79
|
+
rightOnly: string[];
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export interface FleetStatusMachine {
|
|
83
|
+
machineId: string;
|
|
84
|
+
platform?: string;
|
|
85
|
+
manifestDeclared: boolean;
|
|
86
|
+
heartbeatStatus: "online" | "offline" | "unknown";
|
|
87
|
+
lastHeartbeatAt?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface FleetStatus {
|
|
90
|
+
machineId: string;
|
|
91
|
+
manifestPath: string;
|
|
92
|
+
dbPath: string;
|
|
93
|
+
notificationsPath: string;
|
|
94
|
+
manifestMachineCount: number;
|
|
95
|
+
heartbeatCount: number;
|
|
96
|
+
machines: FleetStatusMachine[];
|
|
97
|
+
recentSetupRuns: number;
|
|
98
|
+
recentSyncRuns: number;
|
|
99
|
+
}
|
|
100
|
+
export type NotificationChannelType = "email" | "webhook" | "command";
|
|
101
|
+
export interface NotificationChannel {
|
|
102
|
+
id: string;
|
|
103
|
+
type: NotificationChannelType;
|
|
104
|
+
target: string;
|
|
105
|
+
events: string[];
|
|
106
|
+
enabled: boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface NotificationConfig {
|
|
109
|
+
version: 1;
|
|
110
|
+
updatedAt?: string;
|
|
111
|
+
channels: NotificationChannel[];
|
|
112
|
+
}
|
|
113
|
+
export interface NotificationTestResult {
|
|
114
|
+
channelId: string;
|
|
115
|
+
mode: "plan" | "apply";
|
|
116
|
+
delivered: boolean;
|
|
117
|
+
preview: string;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C"}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hasna/machines",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Machine fleet management CLI + MCP for developers",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"machines": "dist/cli/index.js",
|
|
17
|
+
"machines-mcp": "dist/mcp/index.js",
|
|
18
|
+
"machines-agent": "dist/agent/index.js"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "bun build src/cli/index.ts --outdir dist/cli --target bun && bun build src/mcp/index.ts --outdir dist/mcp --target bun --external @modelcontextprotocol/sdk && bun build src/agent/index.ts --outdir dist/agent --target bun && bun build src/index.ts --outdir dist --target bun && tsc --emitDeclarationOnly --outDir dist",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
27
|
+
"test": "bun test",
|
|
28
|
+
"dev": "bun run src/cli/index.ts",
|
|
29
|
+
"dev:mcp": "bun run src/mcp/index.ts",
|
|
30
|
+
"dev:agent": "bun run src/agent/index.ts",
|
|
31
|
+
"prepublishOnly": "bun run build",
|
|
32
|
+
"postinstall": "mkdir -p $HOME/.hasna/machines 2>/dev/null || true"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"machines",
|
|
36
|
+
"fleet",
|
|
37
|
+
"mcp",
|
|
38
|
+
"cli",
|
|
39
|
+
"developer-tools",
|
|
40
|
+
"sync",
|
|
41
|
+
"provisioning"
|
|
42
|
+
],
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"registry": "https://registry.npmjs.org",
|
|
45
|
+
"access": "public"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/hasna/machines.git"
|
|
50
|
+
},
|
|
51
|
+
"homepage": "https://github.com/hasna/machines",
|
|
52
|
+
"bugs": {
|
|
53
|
+
"url": "https://github.com/hasna/machines/issues"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"bun": ">=1.0.0"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@hasna/cloud": "^0.1.13",
|
|
60
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
61
|
+
"chalk": "^5.6.2",
|
|
62
|
+
"commander": "^13.1.0",
|
|
63
|
+
"zod": "^3.24.2"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@types/bun": "latest",
|
|
67
|
+
"@types/node": "^20.14.0",
|
|
68
|
+
"typescript": "^5.7.3"
|
|
69
|
+
}
|
|
70
|
+
}
|