sessioncast-cli 2.4.0 → 2.4.2
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/runner.js +48 -29
- package/dist/config.d.ts +12 -0
- package/dist/config.js +86 -0
- package/dist/index.js +0 -0
- package/package.json +1 -1
package/dist/agent/runner.js
CHANGED
|
@@ -79,13 +79,11 @@ class AgentRunner {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
static async loadConfig(configPath) {
|
|
82
|
-
// Check if agent token is available (for relay connection)
|
|
83
|
-
const agentToken = (0, config_1.getAgentToken)();
|
|
84
82
|
// Check environment variable
|
|
85
83
|
const envPath = process.env.SESSIONCAST_CONFIG || process.env.TMUX_REMOTE_CONFIG;
|
|
86
84
|
// Try multiple default paths
|
|
87
85
|
const defaultPaths = [
|
|
88
|
-
|
|
86
|
+
(0, config_1.getYmlPath)(),
|
|
89
87
|
path.join(process.env.HOME || '', '.tmux-remote.yml'),
|
|
90
88
|
];
|
|
91
89
|
let finalPath = configPath || envPath;
|
|
@@ -97,40 +95,61 @@ class AgentRunner {
|
|
|
97
95
|
}
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
|
-
//
|
|
101
|
-
if (
|
|
102
|
-
console.log(
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
console.log(`Fetched relay URL from Platform API: ${relayUrl}`);
|
|
98
|
+
// Load from yml file if exists
|
|
99
|
+
if (finalPath && fs.existsSync(finalPath)) {
|
|
100
|
+
console.log(`Loading config from: ${finalPath}`);
|
|
101
|
+
const content = fs.readFileSync(finalPath, 'utf-8');
|
|
102
|
+
const ext = path.extname(finalPath).toLowerCase();
|
|
103
|
+
if (ext === '.json') {
|
|
104
|
+
return JSON.parse(content);
|
|
108
105
|
}
|
|
109
106
|
else {
|
|
110
|
-
|
|
111
|
-
console.log(`Using default relay URL: ${relayUrl}`);
|
|
107
|
+
return yaml.load(content);
|
|
112
108
|
}
|
|
113
|
-
return {
|
|
114
|
-
machineId,
|
|
115
|
-
relay: relayUrl,
|
|
116
|
-
token: agentToken,
|
|
117
|
-
api: {
|
|
118
|
-
enabled: false
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
109
|
}
|
|
122
|
-
if
|
|
123
|
-
|
|
110
|
+
// No yml file found - check if we have agent token
|
|
111
|
+
const agentToken = (0, config_1.getAgentToken)();
|
|
112
|
+
if (!agentToken) {
|
|
113
|
+
throw new Error('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n' +
|
|
114
|
+
' Not logged in\n' +
|
|
115
|
+
'━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n' +
|
|
116
|
+
' Please login first:\n' +
|
|
117
|
+
' $ sessioncast login\n\n' +
|
|
118
|
+
' Or with agent token:\n' +
|
|
119
|
+
' $ sessioncast login agt_YOUR_TOKEN\n\n' +
|
|
120
|
+
'━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
124
121
|
}
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
122
|
+
// Create yml file with agent token
|
|
123
|
+
const machineId = os.hostname();
|
|
124
|
+
// Try to fetch optimal relay URL from Platform API
|
|
125
|
+
let relayUrl = await AgentRunner.fetchRelayUrlForAgent(agentToken);
|
|
126
|
+
if (relayUrl) {
|
|
127
|
+
console.log(`Fetched relay URL from Platform API: ${relayUrl}`);
|
|
130
128
|
}
|
|
131
129
|
else {
|
|
132
|
-
|
|
130
|
+
relayUrl = (0, config_1.getRelayUrl)();
|
|
131
|
+
console.log(`Using default relay URL: ${relayUrl}`);
|
|
133
132
|
}
|
|
133
|
+
// Create config object
|
|
134
|
+
const newConfig = {
|
|
135
|
+
machineId,
|
|
136
|
+
relay: relayUrl,
|
|
137
|
+
token: agentToken,
|
|
138
|
+
api: {
|
|
139
|
+
enabled: false
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
// Save to yml file
|
|
143
|
+
const ymlPath = (0, config_1.getYmlPath)();
|
|
144
|
+
const ymlContent = yaml.dump(newConfig, {
|
|
145
|
+
indent: 2,
|
|
146
|
+
lineWidth: -1,
|
|
147
|
+
quotingType: '"',
|
|
148
|
+
forceQuotes: false
|
|
149
|
+
});
|
|
150
|
+
fs.writeFileSync(ymlPath, ymlContent, 'utf-8');
|
|
151
|
+
console.log(`Created config file: ${ymlPath}`);
|
|
152
|
+
return newConfig;
|
|
134
153
|
}
|
|
135
154
|
async start() {
|
|
136
155
|
if (this.running)
|
package/dist/config.d.ts
CHANGED
|
@@ -11,7 +11,19 @@ interface ConfigSchema {
|
|
|
11
11
|
machineId?: string;
|
|
12
12
|
hasSeenWelcome?: boolean;
|
|
13
13
|
}
|
|
14
|
+
interface YmlConfig {
|
|
15
|
+
machineId?: string;
|
|
16
|
+
relay?: string;
|
|
17
|
+
token?: string;
|
|
18
|
+
api?: {
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
agentId?: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
14
23
|
declare const config: Conf<ConfigSchema>;
|
|
24
|
+
export declare function getYmlPath(): string;
|
|
25
|
+
export declare function loadYmlConfig(): YmlConfig | null;
|
|
26
|
+
export declare function saveYmlConfig(ymlConfig: YmlConfig): void;
|
|
15
27
|
export declare function getApiKey(): string | undefined;
|
|
16
28
|
export declare function setApiKey(key: string): void;
|
|
17
29
|
export declare function clearApiKey(): void;
|
package/dist/config.js
CHANGED
|
@@ -1,8 +1,44 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.getYmlPath = getYmlPath;
|
|
40
|
+
exports.loadYmlConfig = loadYmlConfig;
|
|
41
|
+
exports.saveYmlConfig = saveYmlConfig;
|
|
6
42
|
exports.getApiKey = getApiKey;
|
|
7
43
|
exports.setApiKey = setApiKey;
|
|
8
44
|
exports.clearApiKey = clearApiKey;
|
|
@@ -28,6 +64,10 @@ exports.getConfigPath = getConfigPath;
|
|
|
28
64
|
exports.getRawAccessToken = getRawAccessToken;
|
|
29
65
|
exports.getTokenExpiresAt = getTokenExpiresAt;
|
|
30
66
|
const conf_1 = __importDefault(require("conf"));
|
|
67
|
+
const fs = __importStar(require("fs"));
|
|
68
|
+
const path = __importStar(require("path"));
|
|
69
|
+
const os = __importStar(require("os"));
|
|
70
|
+
const yaml = __importStar(require("js-yaml"));
|
|
31
71
|
const config = new conf_1.default({
|
|
32
72
|
projectName: 'sessioncast',
|
|
33
73
|
defaults: {
|
|
@@ -36,6 +76,34 @@ const config = new conf_1.default({
|
|
|
36
76
|
relayUrl: 'wss://relay.sessioncast.io/ws',
|
|
37
77
|
}
|
|
38
78
|
});
|
|
79
|
+
// YML file path
|
|
80
|
+
const YML_PATH = path.join(os.homedir(), '.sessioncast.yml');
|
|
81
|
+
function getYmlPath() {
|
|
82
|
+
return YML_PATH;
|
|
83
|
+
}
|
|
84
|
+
// Load config from yml file
|
|
85
|
+
function loadYmlConfig() {
|
|
86
|
+
try {
|
|
87
|
+
if (fs.existsSync(YML_PATH)) {
|
|
88
|
+
const content = fs.readFileSync(YML_PATH, 'utf-8');
|
|
89
|
+
return yaml.load(content);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
// Ignore errors
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
// Save config to yml file
|
|
98
|
+
function saveYmlConfig(ymlConfig) {
|
|
99
|
+
const content = yaml.dump(ymlConfig, {
|
|
100
|
+
indent: 2,
|
|
101
|
+
lineWidth: -1,
|
|
102
|
+
quotingType: '"',
|
|
103
|
+
forceQuotes: false
|
|
104
|
+
});
|
|
105
|
+
fs.writeFileSync(YML_PATH, content, 'utf-8');
|
|
106
|
+
}
|
|
39
107
|
function getApiKey() {
|
|
40
108
|
return config.get('apiKey');
|
|
41
109
|
}
|
|
@@ -84,11 +152,29 @@ function setRefreshToken(token) {
|
|
|
84
152
|
config.set('refreshToken', token);
|
|
85
153
|
}
|
|
86
154
|
// Agent token (for relay connection)
|
|
155
|
+
// Priority: yml > config.json
|
|
87
156
|
function getAgentToken() {
|
|
157
|
+
// First check yml
|
|
158
|
+
const ymlConfig = loadYmlConfig();
|
|
159
|
+
if (ymlConfig?.token) {
|
|
160
|
+
return ymlConfig.token;
|
|
161
|
+
}
|
|
162
|
+
// Fallback to config.json
|
|
88
163
|
return config.get('agentToken');
|
|
89
164
|
}
|
|
90
165
|
function setAgentToken(token) {
|
|
166
|
+
// Save to config.json (for compatibility)
|
|
91
167
|
config.set('agentToken', token);
|
|
168
|
+
// Save to yml file
|
|
169
|
+
const ymlConfig = loadYmlConfig() || {};
|
|
170
|
+
ymlConfig.token = token;
|
|
171
|
+
if (!ymlConfig.machineId) {
|
|
172
|
+
ymlConfig.machineId = config.get('machineId') || os.hostname();
|
|
173
|
+
}
|
|
174
|
+
if (!ymlConfig.relay) {
|
|
175
|
+
ymlConfig.relay = config.get('relayUrl');
|
|
176
|
+
}
|
|
177
|
+
saveYmlConfig(ymlConfig);
|
|
92
178
|
}
|
|
93
179
|
function getMachineId() {
|
|
94
180
|
return config.get('machineId');
|
package/dist/index.js
CHANGED
|
File without changes
|