xhawk 1.0.77
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 +87 -0
- package/bin/xhawk-darwin-amd64 +0 -0
- package/bin/xhawk-darwin-amd64.sha256 +1 -0
- package/bin/xhawk-darwin-arm64 +0 -0
- package/bin/xhawk-darwin-arm64.sha256 +1 -0
- package/bin/xhawk-linux-amd64 +0 -0
- package/bin/xhawk-linux-amd64.sha256 +1 -0
- package/bin/xhawk-linux-arm64 +0 -0
- package/bin/xhawk-linux-arm64.sha256 +1 -0
- package/bin/xhawk-windows-amd64.exe +0 -0
- package/bin/xhawk-windows-amd64.exe.sha256 +1 -0
- package/dist/binary.d.ts +8 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +151 -0
- package/dist/binary.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +324 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/installer.d.ts +21 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +330 -0
- package/dist/installer.js.map +1 -0
- package/package.json +58 -0
package/README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# XHawk Agent
|
|
2
|
+
|
|
3
|
+
AI-powered task execution agent with Claude CLI integration.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Run agent directly
|
|
9
|
+
npx xhawk <agent_token>
|
|
10
|
+
|
|
11
|
+
# Or install as daemon (auto-start on boot)
|
|
12
|
+
npx xhawk install <agent_token>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- **Claude CLI Integration**: Execute Claude commands with session continuity
|
|
18
|
+
- **Session Resumption**: Continue conversations across messages using `--resume`
|
|
19
|
+
- **JSON Streaming**: Parse Claude's stream-json output for structured responses
|
|
20
|
+
- **Daemon Mode**: Install as background service (launchd on macOS, systemd on Linux)
|
|
21
|
+
- **Auto-Reconnect**: Automatic WebSocket reconnection with exponential backoff
|
|
22
|
+
- **Permission Bypass**: Run with `--dangerously-skip-permissions` for automation
|
|
23
|
+
|
|
24
|
+
## Commands
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Run in foreground (for testing)
|
|
28
|
+
npx xhawk run <token>
|
|
29
|
+
|
|
30
|
+
# Install as daemon
|
|
31
|
+
npx xhawk install <token>
|
|
32
|
+
|
|
33
|
+
# Check status
|
|
34
|
+
npx xhawk status
|
|
35
|
+
|
|
36
|
+
# View logs
|
|
37
|
+
npx xhawk logs
|
|
38
|
+
npx xhawk logs -n 100 # Last 100 lines
|
|
39
|
+
|
|
40
|
+
# Restart daemon
|
|
41
|
+
npx xhawk restart
|
|
42
|
+
|
|
43
|
+
# Uninstall daemon
|
|
44
|
+
npx xhawk uninstall
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Get Your Agent Token
|
|
48
|
+
|
|
49
|
+
1. Go to [xhawk.ai/settings/agents](https://xhawk.ai/settings/agents)
|
|
50
|
+
2. Create a new agent
|
|
51
|
+
3. Copy the token (starts with `agt_`)
|
|
52
|
+
|
|
53
|
+
## How It Works
|
|
54
|
+
|
|
55
|
+
1. Agent connects to XHawk Cloud via WebSocket
|
|
56
|
+
2. Commands are received and executed using Claude CLI
|
|
57
|
+
3. Session IDs are tracked for conversation continuity
|
|
58
|
+
4. Results are streamed back to the server
|
|
59
|
+
|
|
60
|
+
## Architecture
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
XHawk Cloud <--WebSocket--> Agent Daemon <--CLI--> Claude Code
|
|
64
|
+
|
|
|
65
|
+
v
|
|
66
|
+
Claude Session
|
|
67
|
+
(--resume for continuity)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Requirements
|
|
71
|
+
|
|
72
|
+
- Node.js 18+
|
|
73
|
+
- Claude CLI (`npx @anthropic-ai/claude-code`)
|
|
74
|
+
- macOS or Linux
|
|
75
|
+
|
|
76
|
+
## Development
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cd xhawk-agent/npm
|
|
80
|
+
npm install
|
|
81
|
+
npm run build
|
|
82
|
+
npm run dev -- run <token>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## License
|
|
86
|
+
|
|
87
|
+
MIT
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6604810ebcc4f657d04e791821bc73d626d7f3db561d95601ec2969309f079b7 build/xhawk-darwin-amd64
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
97c0d736dfab6977c4ff44769fa8fb8df0e4005a3e5d934024ba4c40d4cf48ca build/xhawk-darwin-arm64
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1a9db3c17d69b7911aa4ef389798ae7322c599fcc5733d02d12acb7d2053bc22 build/xhawk-linux-amd64
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5db1269c09f5cef92861f1963750ec3e16fb0c530c61a8659b37399645f46c2e build/xhawk-linux-arm64
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1c6525a34e69e382ef4794179068a98e5fd114c6576c737b9b1c1e5484f642d3 build/xhawk-windows-amd64.exe
|
package/dist/binary.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ChildProcess } from 'child_process';
|
|
2
|
+
export declare function getPlatformBinary(): string;
|
|
3
|
+
export declare function getBinaryPath(): string;
|
|
4
|
+
export declare function isBinaryInstalled(): boolean;
|
|
5
|
+
export declare function ensureBinaryExists(): Promise<string>;
|
|
6
|
+
export declare function runBinary(args: string[]): ChildProcess;
|
|
7
|
+
export declare function runBinarySync(args: string[]): string;
|
|
8
|
+
//# sourceMappingURL=binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;AAU9D,wBAAgB,iBAAiB,IAAI,MAAM,CAoC1C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAiBtC;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAG3C;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CA8B1D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CActD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAWpD"}
|
package/dist/binary.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getPlatformBinary = getPlatformBinary;
|
|
37
|
+
exports.getBinaryPath = getBinaryPath;
|
|
38
|
+
exports.isBinaryInstalled = isBinaryInstalled;
|
|
39
|
+
exports.ensureBinaryExists = ensureBinaryExists;
|
|
40
|
+
exports.runBinary = runBinary;
|
|
41
|
+
exports.runBinarySync = runBinarySync;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const child_process_1 = require("child_process");
|
|
46
|
+
const BINARY_NAME = 'xhawk';
|
|
47
|
+
// Binary locations (checked in order)
|
|
48
|
+
// 1. Bundled with npm package (production)
|
|
49
|
+
// 2. Local build directory (development)
|
|
50
|
+
const BUNDLED_BIN_DIR = path.join(__dirname, '..', 'bin');
|
|
51
|
+
const LOCAL_BUILD_DIR = path.join(__dirname, '..', '..', 'build');
|
|
52
|
+
function getPlatformBinary() {
|
|
53
|
+
const platform = os.platform();
|
|
54
|
+
const arch = os.arch();
|
|
55
|
+
let osName;
|
|
56
|
+
let archName;
|
|
57
|
+
// Map Node.js platform to Go GOOS
|
|
58
|
+
switch (platform) {
|
|
59
|
+
case 'darwin':
|
|
60
|
+
osName = 'darwin';
|
|
61
|
+
break;
|
|
62
|
+
case 'linux':
|
|
63
|
+
osName = 'linux';
|
|
64
|
+
break;
|
|
65
|
+
case 'win32':
|
|
66
|
+
osName = 'windows';
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
70
|
+
}
|
|
71
|
+
// Map Node.js arch to Go GOARCH
|
|
72
|
+
switch (arch) {
|
|
73
|
+
case 'x64':
|
|
74
|
+
archName = 'amd64';
|
|
75
|
+
break;
|
|
76
|
+
case 'arm64':
|
|
77
|
+
archName = 'arm64';
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
throw new Error(`Unsupported architecture: ${arch}`);
|
|
81
|
+
}
|
|
82
|
+
const ext = platform === 'win32' ? '.exe' : '';
|
|
83
|
+
return `${BINARY_NAME}-${osName}-${archName}${ext}`;
|
|
84
|
+
}
|
|
85
|
+
function getBinaryPath() {
|
|
86
|
+
const binaryName = getPlatformBinary();
|
|
87
|
+
// Check bundled location first (npm package)
|
|
88
|
+
const bundledPath = path.join(BUNDLED_BIN_DIR, binaryName);
|
|
89
|
+
if (fs.existsSync(bundledPath)) {
|
|
90
|
+
return bundledPath;
|
|
91
|
+
}
|
|
92
|
+
// Fall back to local build (development)
|
|
93
|
+
const localPath = path.join(LOCAL_BUILD_DIR, binaryName);
|
|
94
|
+
if (fs.existsSync(localPath)) {
|
|
95
|
+
return localPath;
|
|
96
|
+
}
|
|
97
|
+
// Return bundled path (will fail with helpful error if not found)
|
|
98
|
+
return bundledPath;
|
|
99
|
+
}
|
|
100
|
+
function isBinaryInstalled() {
|
|
101
|
+
const binaryPath = getBinaryPath();
|
|
102
|
+
return fs.existsSync(binaryPath);
|
|
103
|
+
}
|
|
104
|
+
async function ensureBinaryExists() {
|
|
105
|
+
const binaryName = getPlatformBinary();
|
|
106
|
+
// Check bundled location
|
|
107
|
+
const bundledPath = path.join(BUNDLED_BIN_DIR, binaryName);
|
|
108
|
+
if (fs.existsSync(bundledPath)) {
|
|
109
|
+
return bundledPath;
|
|
110
|
+
}
|
|
111
|
+
// Check local build
|
|
112
|
+
const localPath = path.join(LOCAL_BUILD_DIR, binaryName);
|
|
113
|
+
if (fs.existsSync(localPath)) {
|
|
114
|
+
// Copy to bin directory for consistency
|
|
115
|
+
if (!fs.existsSync(BUNDLED_BIN_DIR)) {
|
|
116
|
+
fs.mkdirSync(BUNDLED_BIN_DIR, { recursive: true });
|
|
117
|
+
}
|
|
118
|
+
fs.copyFileSync(localPath, bundledPath);
|
|
119
|
+
if (os.platform() !== 'win32') {
|
|
120
|
+
fs.chmodSync(bundledPath, 0o755);
|
|
121
|
+
}
|
|
122
|
+
return bundledPath;
|
|
123
|
+
}
|
|
124
|
+
throw new Error(`XHawk binary not found for ${os.platform()}/${os.arch()}\n` +
|
|
125
|
+
`Expected: ${binaryName}\n\n` +
|
|
126
|
+
`For development, run:\n` +
|
|
127
|
+
` cd xhawk-agent && ./scripts/build.sh\n\n` +
|
|
128
|
+
`For production, ensure binaries are bundled in the npm package.`);
|
|
129
|
+
}
|
|
130
|
+
function runBinary(args) {
|
|
131
|
+
const binaryPath = getBinaryPath();
|
|
132
|
+
if (!fs.existsSync(binaryPath)) {
|
|
133
|
+
throw new Error(`XHawk binary not found at ${binaryPath}\n` +
|
|
134
|
+
`Run 'npx xhawk' to download it automatically.`);
|
|
135
|
+
}
|
|
136
|
+
return (0, child_process_1.spawn)(binaryPath, args, {
|
|
137
|
+
stdio: 'inherit',
|
|
138
|
+
env: process.env,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function runBinarySync(args) {
|
|
142
|
+
const binaryPath = getBinaryPath();
|
|
143
|
+
if (!fs.existsSync(binaryPath)) {
|
|
144
|
+
throw new Error(`XHawk binary not found at ${binaryPath}`);
|
|
145
|
+
}
|
|
146
|
+
return (0, child_process_1.execSync)(`"${binaryPath}" ${args.join(' ')}`, {
|
|
147
|
+
encoding: 'utf-8',
|
|
148
|
+
env: process.env,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const binary_1 = require("./binary");
|
|
11
|
+
const installer_1 = require("./installer");
|
|
12
|
+
const pkg = require('../package.json');
|
|
13
|
+
const VERSION = pkg.version;
|
|
14
|
+
// ASCII Art Banner
|
|
15
|
+
const banner = `
|
|
16
|
+
${chalk_1.default.hex('#E07A5F')('╔═══════════════════════════════════════╗')}
|
|
17
|
+
${chalk_1.default.hex('#E07A5F')('║')} ${chalk_1.default.bold.white('XHawk Agent')} ${chalk_1.default.gray(`v${VERSION}`)} ${chalk_1.default.hex('#E07A5F')('║')}
|
|
18
|
+
${chalk_1.default.hex('#E07A5F')('║')} ${chalk_1.default.gray('AI-Powered Task Execution')} ${chalk_1.default.hex('#E07A5F')('║')}
|
|
19
|
+
${chalk_1.default.hex('#E07A5F')('╚═══════════════════════════════════════╝')}
|
|
20
|
+
`;
|
|
21
|
+
// Custom help display
|
|
22
|
+
function showHelp() {
|
|
23
|
+
console.log(banner);
|
|
24
|
+
console.log(chalk_1.default.bold.white('USAGE'));
|
|
25
|
+
console.log(chalk_1.default.gray(' $ ') + chalk_1.default.cyan('npx xhawk') + chalk_1.default.white(' <command>') + chalk_1.default.gray(' [options]'));
|
|
26
|
+
console.log();
|
|
27
|
+
console.log(chalk_1.default.bold.white('QUICK START'));
|
|
28
|
+
console.log(chalk_1.default.gray(' Get your token from: ') + chalk_1.default.cyan('https://xhawk.ai/agents'));
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(chalk_1.default.gray(' # Run in foreground (for testing)'));
|
|
31
|
+
console.log(chalk_1.default.white(' $ npx xhawk agt_your_token_here'));
|
|
32
|
+
console.log();
|
|
33
|
+
console.log(chalk_1.default.gray(' # Install as background daemon (recommended)'));
|
|
34
|
+
console.log(chalk_1.default.white(' $ npx xhawk install agt_your_token_here'));
|
|
35
|
+
console.log();
|
|
36
|
+
console.log(chalk_1.default.bold.white('COMMANDS'));
|
|
37
|
+
console.log();
|
|
38
|
+
console.log(chalk_1.default.hex('#E07A5F')(' Running Agent'));
|
|
39
|
+
console.log(chalk_1.default.white(' run <token> ') + chalk_1.default.gray('Run agent in foreground mode'));
|
|
40
|
+
console.log(chalk_1.default.white(' <token> ') + chalk_1.default.gray('Shorthand for "run <token>"'));
|
|
41
|
+
console.log();
|
|
42
|
+
console.log(chalk_1.default.hex('#E07A5F')(' Daemon Management'));
|
|
43
|
+
console.log(chalk_1.default.white(' install <token> ') + chalk_1.default.gray('Install as background daemon (auto-start on boot)'));
|
|
44
|
+
console.log(chalk_1.default.white(' uninstall ') + chalk_1.default.gray('Remove daemon and stop agent'));
|
|
45
|
+
console.log(chalk_1.default.white(' status ') + chalk_1.default.gray('Check if daemon is running'));
|
|
46
|
+
console.log(chalk_1.default.white(' restart ') + chalk_1.default.gray('Restart the daemon'));
|
|
47
|
+
console.log(chalk_1.default.white(' logs ') + chalk_1.default.gray('View daemon logs'));
|
|
48
|
+
console.log();
|
|
49
|
+
console.log(chalk_1.default.bold.white('OPTIONS'));
|
|
50
|
+
console.log(chalk_1.default.white(' -s, --server <url> ') + chalk_1.default.gray('Custom server URL'));
|
|
51
|
+
console.log(chalk_1.default.white(' -d, --debug ') + chalk_1.default.gray('Enable debug output'));
|
|
52
|
+
console.log(chalk_1.default.white(' -n, --lines <num> ') + chalk_1.default.gray('Number of log lines (default: 50)'));
|
|
53
|
+
console.log(chalk_1.default.white(' -V, --version ') + chalk_1.default.gray('Show version'));
|
|
54
|
+
console.log(chalk_1.default.white(' -h, --help ') + chalk_1.default.gray('Show this help'));
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(chalk_1.default.bold.white('ENVIRONMENT VARIABLES'));
|
|
57
|
+
console.log(chalk_1.default.white(' XHAWK_SERVER ') + chalk_1.default.gray('Default server URL'));
|
|
58
|
+
console.log();
|
|
59
|
+
console.log(chalk_1.default.bold.white('EXAMPLES'));
|
|
60
|
+
console.log(chalk_1.default.gray(' # Test connection in foreground'));
|
|
61
|
+
console.log(chalk_1.default.white(' $ npx xhawk agt_abc123xyz'));
|
|
62
|
+
console.log();
|
|
63
|
+
console.log(chalk_1.default.gray(' # Install daemon with custom server'));
|
|
64
|
+
console.log(chalk_1.default.white(' $ npx xhawk install agt_abc123xyz --server https://my-server.com'));
|
|
65
|
+
console.log();
|
|
66
|
+
console.log(chalk_1.default.gray(' # View last 100 lines of logs'));
|
|
67
|
+
console.log(chalk_1.default.white(' $ npx xhawk logs -n 100'));
|
|
68
|
+
console.log();
|
|
69
|
+
console.log(chalk_1.default.gray(' # Check status and restart if needed'));
|
|
70
|
+
console.log(chalk_1.default.white(' $ npx xhawk status && npx xhawk restart'));
|
|
71
|
+
console.log();
|
|
72
|
+
console.log(chalk_1.default.gray('─'.repeat(45)));
|
|
73
|
+
console.log(chalk_1.default.gray(' Documentation: ') + chalk_1.default.cyan('https://xhawk.ai/docs'));
|
|
74
|
+
console.log(chalk_1.default.gray(' Support: ') + chalk_1.default.cyan('https://xhawk.ai/support'));
|
|
75
|
+
console.log(chalk_1.default.gray('─'.repeat(45)));
|
|
76
|
+
}
|
|
77
|
+
async function ensureBinary() {
|
|
78
|
+
if (!(0, binary_1.isBinaryInstalled)()) {
|
|
79
|
+
const spinner = (0, ora_1.default)({
|
|
80
|
+
text: 'Setting up XHawk binary...',
|
|
81
|
+
color: 'cyan',
|
|
82
|
+
}).start();
|
|
83
|
+
try {
|
|
84
|
+
await (0, binary_1.ensureBinaryExists)();
|
|
85
|
+
spinner.succeed(chalk_1.default.green('XHawk binary ready'));
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
spinner.fail(chalk_1.default.red('Binary not found'));
|
|
89
|
+
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const program = new commander_1.Command();
|
|
95
|
+
program
|
|
96
|
+
.name('xhawk')
|
|
97
|
+
.description('XHawk Agent CLI - Connect your machine to execute AI-powered tasks')
|
|
98
|
+
.version(VERSION)
|
|
99
|
+
.helpOption('-h, --help', 'Show help')
|
|
100
|
+
.addHelpCommand(false)
|
|
101
|
+
.configureHelp({
|
|
102
|
+
formatHelp: () => '', // Suppress default help
|
|
103
|
+
})
|
|
104
|
+
.on('--help', () => {
|
|
105
|
+
showHelp();
|
|
106
|
+
});
|
|
107
|
+
// Install command - installs xhawk as a daemon
|
|
108
|
+
program
|
|
109
|
+
.command('install')
|
|
110
|
+
.description('Install XHawk as a background daemon')
|
|
111
|
+
.argument('<token>', 'Agent token (e.g., agt_abc123xyz)')
|
|
112
|
+
.option('-s, --server <url>', 'Server URL', process.env.XHAWK_SERVER || 'https://supaamp-api-956843615563.us-central1.run.app')
|
|
113
|
+
.action(async (token, options) => {
|
|
114
|
+
console.log(banner);
|
|
115
|
+
if (!token.startsWith('agt_')) {
|
|
116
|
+
console.error(chalk_1.default.red('✖ Invalid token format. Token must start with "agt_"'));
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
// Ensure binary is downloaded first
|
|
120
|
+
await ensureBinary();
|
|
121
|
+
const spinner = (0, ora_1.default)({
|
|
122
|
+
text: 'Installing XHawk daemon...',
|
|
123
|
+
color: 'cyan',
|
|
124
|
+
}).start();
|
|
125
|
+
try {
|
|
126
|
+
await (0, installer_1.install)(token, options.server);
|
|
127
|
+
spinner.succeed(chalk_1.default.green('XHawk daemon installed successfully'));
|
|
128
|
+
console.log(chalk_1.default.gray('\n─'.repeat(45)));
|
|
129
|
+
console.log(chalk_1.default.white(' Token: ') + chalk_1.default.hex('#E07A5F')(token.substring(0, 20) + '...'));
|
|
130
|
+
console.log(chalk_1.default.white(' Server: ') + chalk_1.default.cyan(options.server));
|
|
131
|
+
console.log(chalk_1.default.white(' Status: ') + chalk_1.default.green('● Running'));
|
|
132
|
+
console.log(chalk_1.default.gray('─'.repeat(45)));
|
|
133
|
+
console.log(chalk_1.default.gray('\nCommands:'));
|
|
134
|
+
console.log(chalk_1.default.white(' npx xhawk status ') + chalk_1.default.gray('- Check daemon status'));
|
|
135
|
+
console.log(chalk_1.default.white(' npx xhawk logs ') + chalk_1.default.gray('- View daemon logs'));
|
|
136
|
+
console.log(chalk_1.default.white(' npx xhawk restart ') + chalk_1.default.gray('- Restart daemon'));
|
|
137
|
+
console.log(chalk_1.default.white(' npx xhawk uninstall ') + chalk_1.default.gray('- Remove daemon'));
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
spinner.fail(chalk_1.default.red('Failed to install daemon'));
|
|
141
|
+
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
// Uninstall command
|
|
146
|
+
program
|
|
147
|
+
.command('uninstall')
|
|
148
|
+
.description('Uninstall XHawk daemon')
|
|
149
|
+
.action(async () => {
|
|
150
|
+
console.log(banner);
|
|
151
|
+
const spinner = (0, ora_1.default)({
|
|
152
|
+
text: 'Uninstalling XHawk daemon...',
|
|
153
|
+
color: 'cyan',
|
|
154
|
+
}).start();
|
|
155
|
+
try {
|
|
156
|
+
await (0, installer_1.uninstall)();
|
|
157
|
+
spinner.succeed(chalk_1.default.green('XHawk daemon uninstalled'));
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
spinner.fail(chalk_1.default.red('Failed to uninstall'));
|
|
161
|
+
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
// Status command
|
|
166
|
+
program
|
|
167
|
+
.command('status')
|
|
168
|
+
.description('Check XHawk daemon status')
|
|
169
|
+
.action(async () => {
|
|
170
|
+
console.log(banner);
|
|
171
|
+
try {
|
|
172
|
+
const { running, pid, config } = await (0, installer_1.status)();
|
|
173
|
+
console.log(chalk_1.default.gray('─'.repeat(45)));
|
|
174
|
+
if (running) {
|
|
175
|
+
console.log(chalk_1.default.white(' Status: ') + chalk_1.default.green('● Running'));
|
|
176
|
+
if (pid) {
|
|
177
|
+
console.log(chalk_1.default.white(' PID: ') + chalk_1.default.cyan(pid.toString()));
|
|
178
|
+
}
|
|
179
|
+
if (config) {
|
|
180
|
+
console.log(chalk_1.default.white(' Server: ') + chalk_1.default.cyan(config.server));
|
|
181
|
+
console.log(chalk_1.default.white(' Since: ') + chalk_1.default.gray(config.installedAt));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
console.log(chalk_1.default.white(' Status: ') + chalk_1.default.red('○ Not running'));
|
|
186
|
+
if (config) {
|
|
187
|
+
console.log(chalk_1.default.gray(' (Daemon is installed but not running)'));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.log(chalk_1.default.gray(' (Daemon is not installed)'));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
console.log(chalk_1.default.gray('─'.repeat(45)));
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
197
|
+
process.exit(1);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
// Logs command
|
|
201
|
+
program
|
|
202
|
+
.command('logs')
|
|
203
|
+
.description('View XHawk daemon logs')
|
|
204
|
+
.option('-n, --lines <number>', 'Number of lines to show', '50')
|
|
205
|
+
.option('-f, --follow', 'Follow log output (not implemented)', false)
|
|
206
|
+
.action(async (options) => {
|
|
207
|
+
const lines = parseInt(options.lines, 10) || 50;
|
|
208
|
+
const { stdout, stderr } = (0, installer_1.getLogs)(lines);
|
|
209
|
+
if (stdout) {
|
|
210
|
+
console.log(chalk_1.default.green('=== stdout ==='));
|
|
211
|
+
console.log(stdout);
|
|
212
|
+
}
|
|
213
|
+
if (stderr) {
|
|
214
|
+
console.log(chalk_1.default.red('\n=== stderr ==='));
|
|
215
|
+
console.log(stderr);
|
|
216
|
+
}
|
|
217
|
+
if (!stdout && !stderr) {
|
|
218
|
+
console.log(chalk_1.default.gray('No logs found. Is the daemon installed?'));
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
// Restart command
|
|
222
|
+
program
|
|
223
|
+
.command('restart')
|
|
224
|
+
.description('Restart XHawk daemon')
|
|
225
|
+
.action(async () => {
|
|
226
|
+
console.log(banner);
|
|
227
|
+
const spinner = (0, ora_1.default)({
|
|
228
|
+
text: 'Restarting XHawk daemon...',
|
|
229
|
+
color: 'cyan',
|
|
230
|
+
}).start();
|
|
231
|
+
try {
|
|
232
|
+
(0, installer_1.restart)();
|
|
233
|
+
spinner.succeed(chalk_1.default.green('XHawk daemon restarted'));
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
spinner.fail(chalk_1.default.red('Failed to restart'));
|
|
237
|
+
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
238
|
+
process.exit(1);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
// Run command - runs the Go binary directly
|
|
242
|
+
program
|
|
243
|
+
.command('run')
|
|
244
|
+
.description('Run agent directly (foreground mode)')
|
|
245
|
+
.argument('<token>', 'Agent token')
|
|
246
|
+
.option('-s, --server <url>', 'Server URL', process.env.XHAWK_SERVER || 'https://supaamp-api-956843615563.us-central1.run.app')
|
|
247
|
+
.option('-d, --debug', 'Enable debug mode', false)
|
|
248
|
+
.action(async (token, options) => {
|
|
249
|
+
if (!token.startsWith('agt_')) {
|
|
250
|
+
console.error(chalk_1.default.red('✖ Invalid token format. Token must start with "agt_"'));
|
|
251
|
+
process.exit(1);
|
|
252
|
+
}
|
|
253
|
+
// Ensure binary is downloaded
|
|
254
|
+
await ensureBinary();
|
|
255
|
+
// Build args for Go binary
|
|
256
|
+
const args = ['run', '--token', token, '--server', options.server];
|
|
257
|
+
if (options.debug) {
|
|
258
|
+
args.push('--debug');
|
|
259
|
+
}
|
|
260
|
+
// Run the Go binary
|
|
261
|
+
const child = (0, binary_1.runBinary)(args);
|
|
262
|
+
// Handle signals
|
|
263
|
+
process.on('SIGINT', () => {
|
|
264
|
+
child.kill('SIGINT');
|
|
265
|
+
});
|
|
266
|
+
process.on('SIGTERM', () => {
|
|
267
|
+
child.kill('SIGTERM');
|
|
268
|
+
});
|
|
269
|
+
child.on('exit', (code) => {
|
|
270
|
+
process.exit(code || 0);
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
// Help command
|
|
274
|
+
program
|
|
275
|
+
.command('help')
|
|
276
|
+
.description('Show help information')
|
|
277
|
+
.action(() => {
|
|
278
|
+
showHelp();
|
|
279
|
+
});
|
|
280
|
+
// Default action - show help or run with token
|
|
281
|
+
program
|
|
282
|
+
.argument('[token]', 'Agent token (shorthand for "xhawk run <token>")')
|
|
283
|
+
.option('-s, --server <url>', 'Server URL', process.env.XHAWK_SERVER || 'https://supaamp-api-956843615563.us-central1.run.app')
|
|
284
|
+
.option('-d, --debug', 'Enable debug mode', false)
|
|
285
|
+
.action(async (token, options) => {
|
|
286
|
+
if (!token) {
|
|
287
|
+
showHelp();
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
// Treat as 'run' command
|
|
291
|
+
console.log(banner);
|
|
292
|
+
if (!token.startsWith('agt_')) {
|
|
293
|
+
console.error(chalk_1.default.red('✖ Invalid token format. Token must start with "agt_"'));
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
// Ensure binary is downloaded
|
|
297
|
+
await ensureBinary();
|
|
298
|
+
console.log(chalk_1.default.gray('─'.repeat(45)));
|
|
299
|
+
console.log(chalk_1.default.white(' Agent Token: ') + chalk_1.default.hex('#E07A5F')(token.substring(0, 20) + '...'));
|
|
300
|
+
console.log(chalk_1.default.white(' Server: ') + chalk_1.default.cyan(options.server));
|
|
301
|
+
console.log(chalk_1.default.gray('─'.repeat(45)));
|
|
302
|
+
console.log(chalk_1.default.yellow('\n⚠️ Running in foreground mode.'));
|
|
303
|
+
console.log(chalk_1.default.gray(' Use "npx xhawk install <token>" to run as daemon.\n'));
|
|
304
|
+
console.log(chalk_1.default.gray('Press Ctrl+C to disconnect\n'));
|
|
305
|
+
// Build args for Go binary
|
|
306
|
+
const args = ['run', '--token', token, '--server', options.server];
|
|
307
|
+
if (options.debug) {
|
|
308
|
+
args.push('--debug');
|
|
309
|
+
}
|
|
310
|
+
// Run the Go binary
|
|
311
|
+
const child = (0, binary_1.runBinary)(args);
|
|
312
|
+
process.on('SIGINT', () => {
|
|
313
|
+
console.log(chalk_1.default.yellow('\n\n⚡ Shutting down agent...'));
|
|
314
|
+
child.kill('SIGINT');
|
|
315
|
+
});
|
|
316
|
+
process.on('SIGTERM', () => {
|
|
317
|
+
child.kill('SIGTERM');
|
|
318
|
+
});
|
|
319
|
+
child.on('exit', (code) => {
|
|
320
|
+
process.exit(code || 0);
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
program.parse();
|
|
324
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runBinary = exports.ensureBinaryExists = exports.isBinaryInstalled = exports.getBinaryPath = exports.restart = exports.getLogs = exports.status = exports.uninstall = exports.install = void 0;
|
|
4
|
+
// XHawk Agent - npm wrapper for Go binary
|
|
5
|
+
var installer_1 = require("./installer");
|
|
6
|
+
Object.defineProperty(exports, "install", { enumerable: true, get: function () { return installer_1.install; } });
|
|
7
|
+
Object.defineProperty(exports, "uninstall", { enumerable: true, get: function () { return installer_1.uninstall; } });
|
|
8
|
+
Object.defineProperty(exports, "status", { enumerable: true, get: function () { return installer_1.status; } });
|
|
9
|
+
Object.defineProperty(exports, "getLogs", { enumerable: true, get: function () { return installer_1.getLogs; } });
|
|
10
|
+
Object.defineProperty(exports, "restart", { enumerable: true, get: function () { return installer_1.restart; } });
|
|
11
|
+
var binary_1 = require("./binary");
|
|
12
|
+
Object.defineProperty(exports, "getBinaryPath", { enumerable: true, get: function () { return binary_1.getBinaryPath; } });
|
|
13
|
+
Object.defineProperty(exports, "isBinaryInstalled", { enumerable: true, get: function () { return binary_1.isBinaryInstalled; } });
|
|
14
|
+
Object.defineProperty(exports, "ensureBinaryExists", { enumerable: true, get: function () { return binary_1.ensureBinaryExists; } });
|
|
15
|
+
Object.defineProperty(exports, "runBinary", { enumerable: true, get: function () { return binary_1.runBinary; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0CAA0C;AAC1C,yCAA2E;AAAlE,oGAAA,OAAO,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,mGAAA,MAAM,OAAA;AAAE,oGAAA,OAAO,OAAA;AAAE,oGAAA,OAAO,OAAA;AACrD,mCAA2F;AAAlF,uGAAA,aAAa,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAAE,mGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
interface DaemonConfig {
|
|
2
|
+
token: string;
|
|
3
|
+
server: string;
|
|
4
|
+
env: Record<string, string>;
|
|
5
|
+
installedAt: string;
|
|
6
|
+
binaryPath: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function install(token: string, server: string): Promise<void>;
|
|
9
|
+
export declare function uninstall(): Promise<void>;
|
|
10
|
+
export declare function status(): Promise<{
|
|
11
|
+
running: boolean;
|
|
12
|
+
pid?: number;
|
|
13
|
+
config?: DaemonConfig;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function getLogs(lines?: number): {
|
|
16
|
+
stdout: string;
|
|
17
|
+
stderr: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function restart(): void;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAWA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AA6HD,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE1E;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmC/C;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAmCjG;AAED,wBAAgB,OAAO,CAAC,KAAK,GAAE,MAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwB9E;AAED,wBAAgB,OAAO,IAAI,IAAI,CAqB9B"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.install = install;
|
|
37
|
+
exports.uninstall = uninstall;
|
|
38
|
+
exports.status = status;
|
|
39
|
+
exports.getLogs = getLogs;
|
|
40
|
+
exports.restart = restart;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const child_process_1 = require("child_process");
|
|
45
|
+
const binary_1 = require("./binary");
|
|
46
|
+
const DAEMON_NAME = 'ai.xhawk.agent';
|
|
47
|
+
const LOG_DIR = path.join(os.homedir(), '.xhawk', 'logs');
|
|
48
|
+
const CONFIG_DIR = path.join(os.homedir(), '.xhawk');
|
|
49
|
+
const ENV_FILE = path.join(CONFIG_DIR, 'env.json');
|
|
50
|
+
// Ensure directories exist
|
|
51
|
+
function ensureDirectories() {
|
|
52
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
53
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
54
|
+
}
|
|
55
|
+
if (!fs.existsSync(LOG_DIR)) {
|
|
56
|
+
fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Capture current environment for daemon use
|
|
60
|
+
function captureEnvironment() {
|
|
61
|
+
const important = [
|
|
62
|
+
'PATH', 'HOME', 'USER', 'SHELL', 'LANG', 'LC_ALL', 'LC_CTYPE',
|
|
63
|
+
'TERM', 'TMPDIR', 'XDG_RUNTIME_DIR', 'SSH_AUTH_SOCK',
|
|
64
|
+
// Node/npm paths
|
|
65
|
+
'NODE_PATH', 'NPM_CONFIG_PREFIX', 'NVM_DIR', 'NVM_BIN',
|
|
66
|
+
// Claude CLI may need these
|
|
67
|
+
'ANTHROPIC_API_KEY', 'CLAUDE_API_KEY',
|
|
68
|
+
];
|
|
69
|
+
const env = {};
|
|
70
|
+
for (const key of important) {
|
|
71
|
+
if (process.env[key]) {
|
|
72
|
+
env[key] = process.env[key];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Ensure PATH includes common locations
|
|
76
|
+
const pathDirs = new Set((env.PATH || '').split(':'));
|
|
77
|
+
['/usr/local/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin', '/opt/homebrew/bin'].forEach(d => pathDirs.add(d));
|
|
78
|
+
// Add node/npm bin directories
|
|
79
|
+
try {
|
|
80
|
+
const npmPrefix = (0, child_process_1.execSync)('npm config get prefix', { encoding: 'utf-8' }).trim();
|
|
81
|
+
if (npmPrefix) {
|
|
82
|
+
pathDirs.add(path.join(npmPrefix, 'bin'));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch { }
|
|
86
|
+
try {
|
|
87
|
+
const nodePath = (0, child_process_1.execSync)('which node', { encoding: 'utf-8' }).trim();
|
|
88
|
+
if (nodePath) {
|
|
89
|
+
pathDirs.add(path.dirname(nodePath));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch { }
|
|
93
|
+
env.PATH = Array.from(pathDirs).filter(Boolean).join(':');
|
|
94
|
+
env.HOME = os.homedir();
|
|
95
|
+
env.USER = os.userInfo().username;
|
|
96
|
+
return env;
|
|
97
|
+
}
|
|
98
|
+
// Get the Go binary path
|
|
99
|
+
async function getXhawkBinaryPath() {
|
|
100
|
+
// Ensure binary exists and get path
|
|
101
|
+
return await (0, binary_1.ensureBinaryExists)();
|
|
102
|
+
}
|
|
103
|
+
// macOS launchd plist - runs Go binary directly
|
|
104
|
+
function createLaunchdPlist(config) {
|
|
105
|
+
const envEntries = Object.entries(config.env)
|
|
106
|
+
.map(([key, value]) => ` <key>${key}</key>\n <string>${value}</string>`)
|
|
107
|
+
.join('\n');
|
|
108
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
109
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
110
|
+
<plist version="1.0">
|
|
111
|
+
<dict>
|
|
112
|
+
<key>Label</key>
|
|
113
|
+
<string>${DAEMON_NAME}</string>
|
|
114
|
+
<key>ProgramArguments</key>
|
|
115
|
+
<array>
|
|
116
|
+
<string>${config.binaryPath}</string>
|
|
117
|
+
<string>run</string>
|
|
118
|
+
<string>--token</string>
|
|
119
|
+
<string>${config.token}</string>
|
|
120
|
+
<string>--server</string>
|
|
121
|
+
<string>${config.server}</string>
|
|
122
|
+
</array>
|
|
123
|
+
<key>RunAtLoad</key>
|
|
124
|
+
<true/>
|
|
125
|
+
<key>KeepAlive</key>
|
|
126
|
+
<true/>
|
|
127
|
+
<key>StandardOutPath</key>
|
|
128
|
+
<string>${LOG_DIR}/xhawk.log</string>
|
|
129
|
+
<key>StandardErrorPath</key>
|
|
130
|
+
<string>${LOG_DIR}/xhawk.error.log</string>
|
|
131
|
+
<key>WorkingDirectory</key>
|
|
132
|
+
<string>${os.homedir()}</string>
|
|
133
|
+
<key>EnvironmentVariables</key>
|
|
134
|
+
<dict>
|
|
135
|
+
${envEntries}
|
|
136
|
+
</dict>
|
|
137
|
+
</dict>
|
|
138
|
+
</plist>`;
|
|
139
|
+
}
|
|
140
|
+
// Linux systemd service - runs Go binary directly
|
|
141
|
+
function createSystemdService(config) {
|
|
142
|
+
const envEntries = Object.entries(config.env)
|
|
143
|
+
.map(([key, value]) => `Environment="${key}=${value}"`)
|
|
144
|
+
.join('\n');
|
|
145
|
+
return `[Unit]
|
|
146
|
+
Description=XHawk AI Agent
|
|
147
|
+
After=network.target
|
|
148
|
+
|
|
149
|
+
[Service]
|
|
150
|
+
Type=simple
|
|
151
|
+
ExecStart=${config.binaryPath} run --token ${config.token} --server ${config.server}
|
|
152
|
+
Restart=always
|
|
153
|
+
RestartSec=10
|
|
154
|
+
WorkingDirectory=${os.homedir()}
|
|
155
|
+
${envEntries}
|
|
156
|
+
StandardOutput=append:${LOG_DIR}/xhawk.log
|
|
157
|
+
StandardError=append:${LOG_DIR}/xhawk.error.log
|
|
158
|
+
|
|
159
|
+
[Install]
|
|
160
|
+
WantedBy=default.target`;
|
|
161
|
+
}
|
|
162
|
+
async function install(token, server) {
|
|
163
|
+
ensureDirectories();
|
|
164
|
+
const platform = os.platform();
|
|
165
|
+
const env = captureEnvironment();
|
|
166
|
+
const binaryPath = await getXhawkBinaryPath();
|
|
167
|
+
const config = {
|
|
168
|
+
token,
|
|
169
|
+
server,
|
|
170
|
+
env,
|
|
171
|
+
installedAt: new Date().toISOString(),
|
|
172
|
+
binaryPath,
|
|
173
|
+
};
|
|
174
|
+
// Save config
|
|
175
|
+
fs.writeFileSync(ENV_FILE, JSON.stringify(config, null, 2));
|
|
176
|
+
if (platform === 'darwin') {
|
|
177
|
+
// macOS - use launchd
|
|
178
|
+
const plistPath = path.join(os.homedir(), 'Library', 'LaunchAgents', `${DAEMON_NAME}.plist`);
|
|
179
|
+
const plistDir = path.dirname(plistPath);
|
|
180
|
+
if (!fs.existsSync(plistDir)) {
|
|
181
|
+
fs.mkdirSync(plistDir, { recursive: true });
|
|
182
|
+
}
|
|
183
|
+
// Unload existing if present
|
|
184
|
+
try {
|
|
185
|
+
(0, child_process_1.execSync)(`launchctl unload "${plistPath}" 2>/dev/null`, { stdio: 'ignore' });
|
|
186
|
+
}
|
|
187
|
+
catch { }
|
|
188
|
+
// Write plist
|
|
189
|
+
fs.writeFileSync(plistPath, createLaunchdPlist(config));
|
|
190
|
+
console.log(`Created launchd plist: ${plistPath}`);
|
|
191
|
+
// Load the daemon
|
|
192
|
+
(0, child_process_1.execSync)(`launchctl load "${plistPath}"`);
|
|
193
|
+
console.log('Daemon loaded and started');
|
|
194
|
+
}
|
|
195
|
+
else if (platform === 'linux') {
|
|
196
|
+
// Linux - use systemd user service
|
|
197
|
+
const serviceDir = path.join(os.homedir(), '.config', 'systemd', 'user');
|
|
198
|
+
const servicePath = path.join(serviceDir, `${DAEMON_NAME}.service`);
|
|
199
|
+
if (!fs.existsSync(serviceDir)) {
|
|
200
|
+
fs.mkdirSync(serviceDir, { recursive: true });
|
|
201
|
+
}
|
|
202
|
+
// Write service file
|
|
203
|
+
fs.writeFileSync(servicePath, createSystemdService(config));
|
|
204
|
+
console.log(`Created systemd service: ${servicePath}`);
|
|
205
|
+
// Reload and start
|
|
206
|
+
(0, child_process_1.execSync)('systemctl --user daemon-reload');
|
|
207
|
+
(0, child_process_1.execSync)(`systemctl --user enable ${DAEMON_NAME}`);
|
|
208
|
+
(0, child_process_1.execSync)(`systemctl --user start ${DAEMON_NAME}`);
|
|
209
|
+
console.log('Daemon enabled and started');
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
throw new Error(`Unsupported platform: ${platform}. Only macOS and Linux are supported.`);
|
|
213
|
+
}
|
|
214
|
+
console.log(`\nXHawk agent installed as daemon.`);
|
|
215
|
+
console.log(`Logs: ${LOG_DIR}/xhawk.log`);
|
|
216
|
+
}
|
|
217
|
+
async function uninstall() {
|
|
218
|
+
const platform = os.platform();
|
|
219
|
+
if (platform === 'darwin') {
|
|
220
|
+
const plistPath = path.join(os.homedir(), 'Library', 'LaunchAgents', `${DAEMON_NAME}.plist`);
|
|
221
|
+
try {
|
|
222
|
+
(0, child_process_1.execSync)(`launchctl unload "${plistPath}" 2>/dev/null`, { stdio: 'ignore' });
|
|
223
|
+
}
|
|
224
|
+
catch { }
|
|
225
|
+
if (fs.existsSync(plistPath)) {
|
|
226
|
+
fs.unlinkSync(plistPath);
|
|
227
|
+
console.log('Removed launchd plist');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else if (platform === 'linux') {
|
|
231
|
+
try {
|
|
232
|
+
(0, child_process_1.execSync)(`systemctl --user stop ${DAEMON_NAME} 2>/dev/null`, { stdio: 'ignore' });
|
|
233
|
+
(0, child_process_1.execSync)(`systemctl --user disable ${DAEMON_NAME} 2>/dev/null`, { stdio: 'ignore' });
|
|
234
|
+
}
|
|
235
|
+
catch { }
|
|
236
|
+
const servicePath = path.join(os.homedir(), '.config', 'systemd', 'user', `${DAEMON_NAME}.service`);
|
|
237
|
+
if (fs.existsSync(servicePath)) {
|
|
238
|
+
fs.unlinkSync(servicePath);
|
|
239
|
+
(0, child_process_1.execSync)('systemctl --user daemon-reload');
|
|
240
|
+
console.log('Removed systemd service');
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Clean up config
|
|
244
|
+
if (fs.existsSync(ENV_FILE)) {
|
|
245
|
+
fs.unlinkSync(ENV_FILE);
|
|
246
|
+
}
|
|
247
|
+
console.log('XHawk agent uninstalled');
|
|
248
|
+
}
|
|
249
|
+
async function status() {
|
|
250
|
+
const platform = os.platform();
|
|
251
|
+
let running = false;
|
|
252
|
+
let pid;
|
|
253
|
+
if (platform === 'darwin') {
|
|
254
|
+
try {
|
|
255
|
+
const output = (0, child_process_1.execSync)(`launchctl list | grep ${DAEMON_NAME}`, { encoding: 'utf-8' });
|
|
256
|
+
const parts = output.trim().split(/\s+/);
|
|
257
|
+
if (parts[0] && parts[0] !== '-') {
|
|
258
|
+
pid = parseInt(parts[0], 10);
|
|
259
|
+
running = true;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch { }
|
|
263
|
+
}
|
|
264
|
+
else if (platform === 'linux') {
|
|
265
|
+
try {
|
|
266
|
+
const output = (0, child_process_1.execSync)(`systemctl --user is-active ${DAEMON_NAME}`, { encoding: 'utf-8' });
|
|
267
|
+
running = output.trim() === 'active';
|
|
268
|
+
if (running) {
|
|
269
|
+
const pidOutput = (0, child_process_1.execSync)(`systemctl --user show ${DAEMON_NAME} --property=MainPID`, { encoding: 'utf-8' });
|
|
270
|
+
const match = pidOutput.match(/MainPID=(\d+)/);
|
|
271
|
+
if (match) {
|
|
272
|
+
pid = parseInt(match[1], 10);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch { }
|
|
277
|
+
}
|
|
278
|
+
let config;
|
|
279
|
+
if (fs.existsSync(ENV_FILE)) {
|
|
280
|
+
config = JSON.parse(fs.readFileSync(ENV_FILE, 'utf-8'));
|
|
281
|
+
}
|
|
282
|
+
return { running, pid, config };
|
|
283
|
+
}
|
|
284
|
+
function getLogs(lines = 50) {
|
|
285
|
+
const stdoutPath = path.join(LOG_DIR, 'xhawk.log');
|
|
286
|
+
const stderrPath = path.join(LOG_DIR, 'xhawk.error.log');
|
|
287
|
+
let stdout = '';
|
|
288
|
+
let stderr = '';
|
|
289
|
+
if (fs.existsSync(stdoutPath)) {
|
|
290
|
+
try {
|
|
291
|
+
const content = fs.readFileSync(stdoutPath, 'utf-8');
|
|
292
|
+
const logLines = content.split('\n');
|
|
293
|
+
stdout = logLines.slice(-lines).join('\n');
|
|
294
|
+
}
|
|
295
|
+
catch { }
|
|
296
|
+
}
|
|
297
|
+
if (fs.existsSync(stderrPath)) {
|
|
298
|
+
try {
|
|
299
|
+
const content = fs.readFileSync(stderrPath, 'utf-8');
|
|
300
|
+
const logLines = content.split('\n');
|
|
301
|
+
stderr = logLines.slice(-lines).join('\n');
|
|
302
|
+
}
|
|
303
|
+
catch { }
|
|
304
|
+
}
|
|
305
|
+
return { stdout, stderr };
|
|
306
|
+
}
|
|
307
|
+
function restart() {
|
|
308
|
+
const platform = os.platform();
|
|
309
|
+
if (platform === 'darwin') {
|
|
310
|
+
const plistPath = path.join(os.homedir(), 'Library', 'LaunchAgents', `${DAEMON_NAME}.plist`);
|
|
311
|
+
try {
|
|
312
|
+
(0, child_process_1.execSync)(`launchctl unload "${plistPath}"`, { stdio: 'ignore' });
|
|
313
|
+
(0, child_process_1.execSync)(`launchctl load "${plistPath}"`);
|
|
314
|
+
console.log('Daemon restarted');
|
|
315
|
+
}
|
|
316
|
+
catch (e) {
|
|
317
|
+
throw new Error('Failed to restart daemon. Is it installed?');
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
else if (platform === 'linux') {
|
|
321
|
+
try {
|
|
322
|
+
(0, child_process_1.execSync)(`systemctl --user restart ${DAEMON_NAME}`);
|
|
323
|
+
console.log('Daemon restarted');
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
throw new Error('Failed to restart daemon. Is it installed?');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "xhawk",
|
|
3
|
+
"version": "1.0.77",
|
|
4
|
+
"description": "XHawk Agent CLI - Connect your machine to execute AI-powered tasks",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"xhawk": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "ts-node src/cli.ts",
|
|
12
|
+
"start": "node dist/cli.js",
|
|
13
|
+
"prepublishOnly": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"xhawk",
|
|
17
|
+
"ai",
|
|
18
|
+
"agent",
|
|
19
|
+
"automation",
|
|
20
|
+
"cli",
|
|
21
|
+
"devops",
|
|
22
|
+
"remote"
|
|
23
|
+
],
|
|
24
|
+
"author": "xhawk",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/SupaAmp/XHawk.git",
|
|
28
|
+
"directory": "xhawk-agent/npm"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"chalk": "^4.1.2",
|
|
32
|
+
"commander": "^11.1.0",
|
|
33
|
+
"ora": "^5.4.1",
|
|
34
|
+
"ws": "^8.16.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^20.10.0",
|
|
38
|
+
"@types/ws": "^8.5.10",
|
|
39
|
+
"ts-node": "^10.9.2",
|
|
40
|
+
"typescript": "^5.3.3"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=18.0.0"
|
|
44
|
+
},
|
|
45
|
+
"os": [
|
|
46
|
+
"darwin",
|
|
47
|
+
"linux",
|
|
48
|
+
"win32"
|
|
49
|
+
],
|
|
50
|
+
"cpu": [
|
|
51
|
+
"x64",
|
|
52
|
+
"arm64"
|
|
53
|
+
],
|
|
54
|
+
"files": [
|
|
55
|
+
"dist",
|
|
56
|
+
"bin"
|
|
57
|
+
]
|
|
58
|
+
}
|