@astroanywhere/agent 0.1.0
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/LICENSE +76 -0
- package/README.md +178 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +401 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +9 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/mcp.d.ts +16 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +19 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/setup.d.ts +20 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +585 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/start.d.ts +16 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +638 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +63 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +5 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +85 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/execution/direct-strategy.d.ts +18 -0
- package/dist/execution/direct-strategy.d.ts.map +1 -0
- package/dist/execution/direct-strategy.js +156 -0
- package/dist/execution/direct-strategy.js.map +1 -0
- package/dist/execution/docker-strategy.d.ts +26 -0
- package/dist/execution/docker-strategy.d.ts.map +1 -0
- package/dist/execution/docker-strategy.js +222 -0
- package/dist/execution/docker-strategy.js.map +1 -0
- package/dist/execution/index.d.ts +14 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +13 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/kubernetes-exec-strategy.d.ts +23 -0
- package/dist/execution/kubernetes-exec-strategy.d.ts.map +1 -0
- package/dist/execution/kubernetes-exec-strategy.js +232 -0
- package/dist/execution/kubernetes-exec-strategy.js.map +1 -0
- package/dist/execution/registry.d.ts +41 -0
- package/dist/execution/registry.d.ts.map +1 -0
- package/dist/execution/registry.js +84 -0
- package/dist/execution/registry.js.map +1 -0
- package/dist/execution/slurm-strategy.d.ts +22 -0
- package/dist/execution/slurm-strategy.d.ts.map +1 -0
- package/dist/execution/slurm-strategy.js +219 -0
- package/dist/execution/slurm-strategy.js.map +1 -0
- package/dist/execution/types.d.ts +72 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +10 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +35 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +126 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/config.d.ts +174 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +399 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/copy-worktree.d.ts +73 -0
- package/dist/lib/copy-worktree.d.ts.map +1 -0
- package/dist/lib/copy-worktree.js +374 -0
- package/dist/lib/copy-worktree.js.map +1 -0
- package/dist/lib/git-pr.d.ts +63 -0
- package/dist/lib/git-pr.d.ts.map +1 -0
- package/dist/lib/git-pr.js +224 -0
- package/dist/lib/git-pr.js.map +1 -0
- package/dist/lib/hardware-id.d.ts +25 -0
- package/dist/lib/hardware-id.d.ts.map +1 -0
- package/dist/lib/hardware-id.js +186 -0
- package/dist/lib/hardware-id.js.map +1 -0
- package/dist/lib/hpc-context.d.ts +35 -0
- package/dist/lib/hpc-context.d.ts.map +1 -0
- package/dist/lib/hpc-context.js +167 -0
- package/dist/lib/hpc-context.js.map +1 -0
- package/dist/lib/prompt-templates.d.ts +195 -0
- package/dist/lib/prompt-templates.d.ts.map +1 -0
- package/dist/lib/prompt-templates.js +353 -0
- package/dist/lib/prompt-templates.js.map +1 -0
- package/dist/lib/providers.d.ts +27 -0
- package/dist/lib/providers.d.ts.map +1 -0
- package/dist/lib/providers.js +372 -0
- package/dist/lib/providers.js.map +1 -0
- package/dist/lib/repo-context.d.ts +18 -0
- package/dist/lib/repo-context.d.ts.map +1 -0
- package/dist/lib/repo-context.js +61 -0
- package/dist/lib/repo-context.js.map +1 -0
- package/dist/lib/repo-utils.d.ts +35 -0
- package/dist/lib/repo-utils.d.ts.map +1 -0
- package/dist/lib/repo-utils.js +222 -0
- package/dist/lib/repo-utils.js.map +1 -0
- package/dist/lib/resources.d.ts +17 -0
- package/dist/lib/resources.d.ts.map +1 -0
- package/dist/lib/resources.js +227 -0
- package/dist/lib/resources.js.map +1 -0
- package/dist/lib/slurm-detect.d.ts +15 -0
- package/dist/lib/slurm-detect.d.ts.map +1 -0
- package/dist/lib/slurm-detect.js +148 -0
- package/dist/lib/slurm-detect.js.map +1 -0
- package/dist/lib/slurm-executor.d.ts +70 -0
- package/dist/lib/slurm-executor.d.ts.map +1 -0
- package/dist/lib/slurm-executor.js +402 -0
- package/dist/lib/slurm-executor.js.map +1 -0
- package/dist/lib/slurm-job-monitor.d.ts +52 -0
- package/dist/lib/slurm-job-monitor.d.ts.map +1 -0
- package/dist/lib/slurm-job-monitor.js +212 -0
- package/dist/lib/slurm-job-monitor.js.map +1 -0
- package/dist/lib/ssh-discovery.d.ts +17 -0
- package/dist/lib/ssh-discovery.d.ts.map +1 -0
- package/dist/lib/ssh-discovery.js +287 -0
- package/dist/lib/ssh-discovery.js.map +1 -0
- package/dist/lib/ssh-installer.d.ts +69 -0
- package/dist/lib/ssh-installer.d.ts.map +1 -0
- package/dist/lib/ssh-installer.js +230 -0
- package/dist/lib/ssh-installer.js.map +1 -0
- package/dist/lib/streaming-prompt.d.ts +48 -0
- package/dist/lib/streaming-prompt.d.ts.map +1 -0
- package/dist/lib/streaming-prompt.js +91 -0
- package/dist/lib/streaming-prompt.js.map +1 -0
- package/dist/lib/task-executor.d.ts +114 -0
- package/dist/lib/task-executor.d.ts.map +1 -0
- package/dist/lib/task-executor.js +753 -0
- package/dist/lib/task-executor.js.map +1 -0
- package/dist/lib/websocket-client.d.ts +200 -0
- package/dist/lib/websocket-client.d.ts.map +1 -0
- package/dist/lib/websocket-client.js +781 -0
- package/dist/lib/websocket-client.js.map +1 -0
- package/dist/lib/workdir-safety.d.ts +63 -0
- package/dist/lib/workdir-safety.d.ts.map +1 -0
- package/dist/lib/workdir-safety.js +247 -0
- package/dist/lib/workdir-safety.js.map +1 -0
- package/dist/lib/worktree-include.d.ts +14 -0
- package/dist/lib/worktree-include.d.ts.map +1 -0
- package/dist/lib/worktree-include.js +68 -0
- package/dist/lib/worktree-include.js.map +1 -0
- package/dist/lib/worktree-setup.d.ts +18 -0
- package/dist/lib/worktree-setup.d.ts.map +1 -0
- package/dist/lib/worktree-setup.js +60 -0
- package/dist/lib/worktree-setup.js.map +1 -0
- package/dist/lib/worktree.d.ts +37 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +411 -0
- package/dist/lib/worktree.js.map +1 -0
- package/dist/mcp/index.d.ts +8 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +45 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +153 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session-bridge.d.ts +87 -0
- package/dist/mcp/session-bridge.d.ts.map +1 -0
- package/dist/mcp/session-bridge.js +317 -0
- package/dist/mcp/session-bridge.js.map +1 -0
- package/dist/mcp/tools.d.ts +70 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +234 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +197 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +16 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/providers/base-adapter.d.ts +56 -0
- package/dist/providers/base-adapter.d.ts.map +1 -0
- package/dist/providers/base-adapter.js +5 -0
- package/dist/providers/base-adapter.js.map +1 -0
- package/dist/providers/claude-code-adapter.d.ts +27 -0
- package/dist/providers/claude-code-adapter.d.ts.map +1 -0
- package/dist/providers/claude-code-adapter.js +298 -0
- package/dist/providers/claude-code-adapter.js.map +1 -0
- package/dist/providers/claude-sdk-adapter.d.ts +60 -0
- package/dist/providers/claude-sdk-adapter.d.ts.map +1 -0
- package/dist/providers/claude-sdk-adapter.js +632 -0
- package/dist/providers/claude-sdk-adapter.js.map +1 -0
- package/dist/providers/codex-adapter.d.ts +21 -0
- package/dist/providers/codex-adapter.d.ts.map +1 -0
- package/dist/providers/codex-adapter.js +197 -0
- package/dist/providers/codex-adapter.js.map +1 -0
- package/dist/providers/index.d.ts +26 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +58 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/slurm-adapter.d.ts +26 -0
- package/dist/providers/slurm-adapter.d.ts.map +1 -0
- package/dist/providers/slurm-adapter.js +146 -0
- package/dist/providers/slurm-adapter.js.map +1 -0
- package/dist/types.d.ts +592 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client for device auth using native fetch (Node 18+)
|
|
3
|
+
*/
|
|
4
|
+
export class DeviceAuthApiError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
statusCode;
|
|
7
|
+
constructor(message, code, statusCode) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.statusCode = statusCode;
|
|
11
|
+
this.name = 'DeviceAuthApiError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// API functions
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Request a device authorization code from the backend.
|
|
19
|
+
* POST /api/device/authorize
|
|
20
|
+
*/
|
|
21
|
+
export async function requestDeviceCode(apiUrl, machineInfo) {
|
|
22
|
+
let res;
|
|
23
|
+
try {
|
|
24
|
+
res = await fetch(`${apiUrl}/api/device/authorize`, {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
headers: { 'Content-Type': 'application/json' },
|
|
27
|
+
body: JSON.stringify({
|
|
28
|
+
scopes: ['machine:connect', 'machine:execute', 'machine:read'],
|
|
29
|
+
machineInfo,
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
throw new DeviceAuthApiError(`Cannot reach API server at ${apiUrl}: ${err.message}`, 'network');
|
|
35
|
+
}
|
|
36
|
+
if (!res.ok) {
|
|
37
|
+
const body = await res.text();
|
|
38
|
+
throw new DeviceAuthApiError(`Device authorize request failed (${res.status}): ${body}`, 'server_error', res.status);
|
|
39
|
+
}
|
|
40
|
+
return (await res.json());
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Poll the backend until the user authorizes (or denies/expires).
|
|
44
|
+
* POST /api/device/token
|
|
45
|
+
*
|
|
46
|
+
* Handles RFC 8628 states:
|
|
47
|
+
* authorization_pending → keep polling
|
|
48
|
+
* slow_down → increase interval +5s
|
|
49
|
+
* access_denied → throw
|
|
50
|
+
* expired_token → throw
|
|
51
|
+
*/
|
|
52
|
+
export async function pollForToken(apiUrl, userCode, intervalSec, timeoutSec) {
|
|
53
|
+
const deadline = Date.now() + timeoutSec * 1000;
|
|
54
|
+
let currentInterval = intervalSec;
|
|
55
|
+
while (Date.now() < deadline) {
|
|
56
|
+
// Wait before polling
|
|
57
|
+
await sleep(currentInterval * 1000);
|
|
58
|
+
let res;
|
|
59
|
+
try {
|
|
60
|
+
res = await fetch(`${apiUrl}/api/device/token`, {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers: { 'Content-Type': 'application/json' },
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
userCode,
|
|
65
|
+
grantType: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
66
|
+
}),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
throw new DeviceAuthApiError(`Cannot reach API server while polling: ${err.message}`, 'network');
|
|
71
|
+
}
|
|
72
|
+
// Success → 200
|
|
73
|
+
if (res.ok) {
|
|
74
|
+
return (await res.json());
|
|
75
|
+
}
|
|
76
|
+
// Error → parse RFC 8628 error body
|
|
77
|
+
const body = (await res.json());
|
|
78
|
+
switch (body.error) {
|
|
79
|
+
case 'authorization_pending':
|
|
80
|
+
// Keep polling
|
|
81
|
+
continue;
|
|
82
|
+
case 'slow_down':
|
|
83
|
+
currentInterval += 5;
|
|
84
|
+
continue;
|
|
85
|
+
case 'access_denied':
|
|
86
|
+
throw new DeviceAuthApiError('User denied authorization', 'denied', res.status);
|
|
87
|
+
case 'expired_token':
|
|
88
|
+
throw new DeviceAuthApiError('Device code expired', 'expired', res.status);
|
|
89
|
+
default:
|
|
90
|
+
throw new DeviceAuthApiError(`Unexpected error: ${body.error} — ${body.errorDescription}`, 'server_error', res.status);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
throw new DeviceAuthApiError('Polling timed out waiting for authorization', 'timeout');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Register an authenticated machine with the backend.
|
|
97
|
+
* POST /api/device/register (Bearer token)
|
|
98
|
+
*/
|
|
99
|
+
export async function registerMachine(apiUrl, accessToken, machineInfo) {
|
|
100
|
+
let res;
|
|
101
|
+
try {
|
|
102
|
+
res = await fetch(`${apiUrl}/api/device/register`, {
|
|
103
|
+
method: 'POST',
|
|
104
|
+
headers: {
|
|
105
|
+
'Content-Type': 'application/json',
|
|
106
|
+
Authorization: `Bearer ${accessToken}`,
|
|
107
|
+
},
|
|
108
|
+
body: JSON.stringify({ machineInfo }),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
throw new DeviceAuthApiError(`Cannot reach API server for registration: ${err.message}`, 'network');
|
|
113
|
+
}
|
|
114
|
+
if (!res.ok) {
|
|
115
|
+
const body = await res.text();
|
|
116
|
+
throw new DeviceAuthApiError(`Machine registration failed (${res.status}): ${body}`, 'server_error', res.status);
|
|
117
|
+
}
|
|
118
|
+
return (await res.json());
|
|
119
|
+
}
|
|
120
|
+
// ============================================================================
|
|
121
|
+
// Helpers
|
|
122
|
+
// ============================================================================
|
|
123
|
+
function sleep(ms) {
|
|
124
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration management using conf (electron-conf compatible)
|
|
3
|
+
*/
|
|
4
|
+
import type { StoredConfig, ProviderType, DiscoveredHost } from '../types.js';
|
|
5
|
+
declare class ConfigManager {
|
|
6
|
+
private conf;
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* Check if initial setup has been completed
|
|
10
|
+
*/
|
|
11
|
+
isSetupComplete(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Get all stored configuration
|
|
14
|
+
*/
|
|
15
|
+
getConfig(): StoredConfig & {
|
|
16
|
+
apiUrl: string;
|
|
17
|
+
accessToken?: string;
|
|
18
|
+
refreshToken?: string;
|
|
19
|
+
wsToken?: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Get runner ID, generating one if not set
|
|
23
|
+
*/
|
|
24
|
+
getRunnerId(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Initialize machine ID using hardware-based identifier
|
|
27
|
+
* Should be called during setup - async operation
|
|
28
|
+
*/
|
|
29
|
+
initializeMachineId(): Promise<{
|
|
30
|
+
id: string;
|
|
31
|
+
source: 'uuid' | 'mac' | 'random';
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Get machine ID (synchronous)
|
|
35
|
+
* Returns existing ID or generates a temporary one if not initialized
|
|
36
|
+
* Call initializeMachineId() during setup for proper hardware-based ID
|
|
37
|
+
*/
|
|
38
|
+
getMachineId(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get machine display name (e.g., SSH alias like "nebius-2")
|
|
41
|
+
*/
|
|
42
|
+
getMachineName(): string | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Set machine display name
|
|
45
|
+
*/
|
|
46
|
+
setMachineName(name: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Get relay URL.
|
|
49
|
+
* Returns stored value unless it's the hardcoded default, in which case
|
|
50
|
+
* env-based resolution takes precedence (allows mode switching without re-setup).
|
|
51
|
+
*/
|
|
52
|
+
getRelayUrl(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Set relay URL
|
|
55
|
+
*/
|
|
56
|
+
setRelayUrl(url: string): void;
|
|
57
|
+
/**
|
|
58
|
+
* Get API URL.
|
|
59
|
+
* Returns stored value unless it's the hardcoded default, in which case
|
|
60
|
+
* env-based resolution takes precedence (allows mode switching without re-setup).
|
|
61
|
+
*/
|
|
62
|
+
getApiUrl(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Set API URL
|
|
65
|
+
*/
|
|
66
|
+
setApiUrl(url: string): void;
|
|
67
|
+
/**
|
|
68
|
+
* Get access token
|
|
69
|
+
*/
|
|
70
|
+
getAccessToken(): string | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Set access token
|
|
73
|
+
* Validates token format to prevent storing invalid values
|
|
74
|
+
*/
|
|
75
|
+
setAccessToken(token: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Get refresh token
|
|
78
|
+
*/
|
|
79
|
+
getRefreshToken(): string | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Set refresh token
|
|
82
|
+
* Validates token format to prevent storing invalid values
|
|
83
|
+
*/
|
|
84
|
+
setRefreshToken(token: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get WebSocket token
|
|
87
|
+
*/
|
|
88
|
+
getWsToken(): string | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Set WebSocket token
|
|
91
|
+
* Validates token format to prevent storing invalid values
|
|
92
|
+
*/
|
|
93
|
+
setWsToken(token: string): void;
|
|
94
|
+
/**
|
|
95
|
+
* Get Claude OAuth token (from `claude setup-token`)
|
|
96
|
+
*/
|
|
97
|
+
getClaudeOauthToken(): string | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Set Claude OAuth token
|
|
100
|
+
*/
|
|
101
|
+
setClaudeOauthToken(token: string): void;
|
|
102
|
+
/**
|
|
103
|
+
* Clear Claude OAuth token
|
|
104
|
+
*/
|
|
105
|
+
clearClaudeOauthToken(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Set machine ID (e.g., from backend registration response)
|
|
108
|
+
* Validates ID to prevent storing invalid values
|
|
109
|
+
*/
|
|
110
|
+
setMachineId(id: string): void;
|
|
111
|
+
/**
|
|
112
|
+
* Get device token
|
|
113
|
+
*/
|
|
114
|
+
getDeviceToken(): string | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* Set device token
|
|
117
|
+
*/
|
|
118
|
+
setDeviceToken(token: string): void;
|
|
119
|
+
/**
|
|
120
|
+
* Get configured providers
|
|
121
|
+
*/
|
|
122
|
+
getProviders(): ProviderType[];
|
|
123
|
+
/**
|
|
124
|
+
* Set configured providers
|
|
125
|
+
*/
|
|
126
|
+
setProviders(providers: ProviderType[]): void;
|
|
127
|
+
/**
|
|
128
|
+
* Get auto-start setting
|
|
129
|
+
*/
|
|
130
|
+
getAutoStart(): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Set auto-start setting
|
|
133
|
+
*/
|
|
134
|
+
setAutoStart(autoStart: boolean): void;
|
|
135
|
+
/**
|
|
136
|
+
* Get log level
|
|
137
|
+
*/
|
|
138
|
+
getLogLevel(): 'debug' | 'info' | 'warn' | 'error';
|
|
139
|
+
/**
|
|
140
|
+
* Set log level
|
|
141
|
+
*/
|
|
142
|
+
setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void;
|
|
143
|
+
/**
|
|
144
|
+
* Update last connected timestamp
|
|
145
|
+
*/
|
|
146
|
+
updateLastConnected(): void;
|
|
147
|
+
/**
|
|
148
|
+
* Get last connected timestamp
|
|
149
|
+
*/
|
|
150
|
+
getLastConnected(): string | undefined;
|
|
151
|
+
/**
|
|
152
|
+
* Mark setup as complete
|
|
153
|
+
*/
|
|
154
|
+
completeSetup(): void;
|
|
155
|
+
/**
|
|
156
|
+
* Get stored remote hosts (from SSH discovery + install)
|
|
157
|
+
*/
|
|
158
|
+
getRemoteHosts(): DiscoveredHost[];
|
|
159
|
+
/**
|
|
160
|
+
* Set stored remote hosts
|
|
161
|
+
*/
|
|
162
|
+
setRemoteHosts(hosts: DiscoveredHost[]): void;
|
|
163
|
+
/**
|
|
164
|
+
* Reset all configuration
|
|
165
|
+
*/
|
|
166
|
+
reset(): void;
|
|
167
|
+
/**
|
|
168
|
+
* Get the configuration file path
|
|
169
|
+
*/
|
|
170
|
+
getConfigPath(): string;
|
|
171
|
+
}
|
|
172
|
+
export declare const config: ConfigManager;
|
|
173
|
+
export { ConfigManager };
|
|
174
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgF9E,cAAM,aAAa;IACjB,OAAO,CAAC,IAAI,CAAqB;;IAyBjC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,SAAS,IAAI,YAAY,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAiB7G;;OAEG;IACH,WAAW,IAAI,MAAM;IASrB;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;KAAE,CAAC;IAgBvF;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAWtB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAMrB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAMnB;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmBnC;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmBpC;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAqB/B;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;;OAGG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAY9B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,YAAY,IAAI,YAAY,EAAE;IAI9B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI;IAI7C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC;;OAEG;IACH,WAAW,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAIlD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAI7D;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,cAAc,IAAI,cAAc,EAAE;IAIlC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAI7C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB;AAGD,eAAO,MAAM,MAAM,eAAsB,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,CAAC"}
|