replicas-cli 0.2.25 → 0.2.27
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/index.js +2873 -313
- package/package.json +4 -3
- package/dist/commands/claude-auth.d.ts +0 -5
- package/dist/commands/claude-auth.d.ts.map +0 -1
- package/dist/commands/claude-auth.js +0 -52
- package/dist/commands/claude-auth.js.map +0 -1
- package/dist/commands/code.d.ts +0 -4
- package/dist/commands/code.d.ts.map +0 -1
- package/dist/commands/code.js +0 -67
- package/dist/commands/code.js.map +0 -1
- package/dist/commands/codex-auth.d.ts +0 -5
- package/dist/commands/codex-auth.d.ts.map +0 -1
- package/dist/commands/codex-auth.js +0 -52
- package/dist/commands/codex-auth.js.map +0 -1
- package/dist/commands/config.d.ts +0 -4
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -74
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/connect.d.ts +0 -4
- package/dist/commands/connect.d.ts.map +0 -1
- package/dist/commands/connect.js +0 -40
- package/dist/commands/connect.js.map +0 -1
- package/dist/commands/dev-sync.d.ts +0 -2
- package/dist/commands/dev-sync.d.ts.map +0 -1
- package/dist/commands/dev-sync.js +0 -78
- package/dist/commands/dev-sync.js.map +0 -1
- package/dist/commands/init.d.ts +0 -4
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -45
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -203
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -2
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js +0 -17
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/org.d.ts +0 -3
- package/dist/commands/org.d.ts.map +0 -1
- package/dist/commands/org.js +0 -83
- package/dist/commands/org.js.map +0 -1
- package/dist/commands/replica.d.ts +0 -23
- package/dist/commands/replica.d.ts.map +0 -1
- package/dist/commands/replica.js +0 -448
- package/dist/commands/replica.js.map +0 -1
- package/dist/commands/repositories.d.ts +0 -2
- package/dist/commands/repositories.d.ts.map +0 -1
- package/dist/commands/repositories.js +0 -41
- package/dist/commands/repositories.js.map +0 -1
- package/dist/commands/tools.d.ts +0 -2
- package/dist/commands/tools.d.ts.map +0 -1
- package/dist/commands/tools.js +0 -70
- package/dist/commands/tools.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -31
- package/dist/commands/whoami.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/api.d.ts +0 -7
- package/dist/lib/api.d.ts.map +0 -1
- package/dist/lib/api.js +0 -81
- package/dist/lib/api.js.map +0 -1
- package/dist/lib/auth.d.ts +0 -4
- package/dist/lib/auth.d.ts.map +0 -1
- package/dist/lib/auth.js +0 -62
- package/dist/lib/auth.js.map +0 -1
- package/dist/lib/claude-oauth.d.ts +0 -10
- package/dist/lib/claude-oauth.d.ts.map +0 -1
- package/dist/lib/claude-oauth.js +0 -131
- package/dist/lib/claude-oauth.js.map +0 -1
- package/dist/lib/codex-oauth.d.ts +0 -11
- package/dist/lib/codex-oauth.d.ts.map +0 -1
- package/dist/lib/codex-oauth.js +0 -183
- package/dist/lib/codex-oauth.js.map +0 -1
- package/dist/lib/config.d.ts +0 -12
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js +0 -84
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/git.d.ts +0 -4
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js +0 -39
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/organization.d.ts +0 -5
- package/dist/lib/organization.d.ts.map +0 -1
- package/dist/lib/organization.js +0 -29
- package/dist/lib/organization.js.map +0 -1
- package/dist/lib/pkce.d.ts +0 -14
- package/dist/lib/pkce.d.ts.map +0 -1
- package/dist/lib/pkce.js +0 -37
- package/dist/lib/pkce.js.map +0 -1
- package/dist/lib/ports.d.ts +0 -3
- package/dist/lib/ports.d.ts.map +0 -1
- package/dist/lib/ports.js +0 -44
- package/dist/lib/ports.js.map +0 -1
- package/dist/lib/replicas-config.d.ts +0 -8
- package/dist/lib/replicas-config.d.ts.map +0 -1
- package/dist/lib/replicas-config.js +0 -64
- package/dist/lib/replicas-config.js.map +0 -1
- package/dist/lib/ssh-config.d.ts +0 -12
- package/dist/lib/ssh-config.d.ts.map +0 -1
- package/dist/lib/ssh-config.js +0 -122
- package/dist/lib/ssh-config.js.map +0 -1
- package/dist/lib/ssh.d.ts +0 -5
- package/dist/lib/ssh.d.ts.map +0 -1
- package/dist/lib/ssh.js +0 -82
- package/dist/lib/ssh.js.map +0 -1
- package/dist/lib/supabase.d.ts +0 -5
- package/dist/lib/supabase.d.ts.map +0 -1
- package/dist/lib/supabase.js +0 -15
- package/dist/lib/supabase.js.map +0 -1
- package/dist/lib/version-check.d.ts +0 -2
- package/dist/lib/version-check.d.ts.map +0 -1
- package/dist/lib/version-check.js +0 -44
- package/dist/lib/version-check.js.map +0 -1
- package/dist/lib/workspace-connection.d.ts +0 -11
- package/dist/lib/workspace-connection.d.ts.map +0 -1
- package/dist/lib/workspace-connection.js +0 -132
- package/dist/lib/workspace-connection.js.map +0 -1
- package/dist/types/index.d.ts +0 -52
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "replicas-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.27",
|
|
4
4
|
"description": "CLI for managing Replicas workspaces - SSH into cloud dev environments with automatic port forwarding",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"dist"
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "
|
|
13
|
+
"build": "tsup",
|
|
14
14
|
"dev": "tsx src/index.ts",
|
|
15
15
|
"start": "node dist/index.js",
|
|
16
16
|
"prepublishOnly": "yarn build"
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"directory": "cli"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@replicas/shared": "*",
|
|
38
37
|
"@supabase/supabase-js": "^2.39.0",
|
|
39
38
|
"@types/prompts": "^2.4.9",
|
|
40
39
|
"chalk": "^4.1.2",
|
|
@@ -46,7 +45,9 @@
|
|
|
46
45
|
"tslib": "^2.6.2"
|
|
47
46
|
},
|
|
48
47
|
"devDependencies": {
|
|
48
|
+
"@replicas/shared": "*",
|
|
49
49
|
"@types/node": "^20.11.0",
|
|
50
|
+
"tsup": "^8.5.0",
|
|
50
51
|
"tsx": "^4.7.0",
|
|
51
52
|
"typescript": "^5.3.3"
|
|
52
53
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-auth.d.ts","sourceRoot":"","sources":["../../src/commands/claude-auth.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,iBAsDtE"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.claudeAuthCommand = claudeAuthCommand;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const api_1 = require("../lib/api");
|
|
9
|
-
const claude_oauth_1 = require("../lib/claude-oauth");
|
|
10
|
-
async function claudeAuthCommand(options = {}) {
|
|
11
|
-
const isUserScoped = options.user === true;
|
|
12
|
-
const scopeLabel = isUserScoped ? 'personal' : 'organization';
|
|
13
|
-
console.log(chalk_1.default.cyan(`Authenticating with Claude Code (${scopeLabel})...\n`));
|
|
14
|
-
try {
|
|
15
|
-
const tokens = await (0, claude_oauth_1.runClaudeOAuthFlow)();
|
|
16
|
-
console.log(chalk_1.default.gray('\nUploading credentials to Replicas...'));
|
|
17
|
-
// Upload credentials to Replicas API
|
|
18
|
-
const endpoint = isUserScoped ? '/v1/claude/user/credentials' : '/v1/claude/credentials';
|
|
19
|
-
const response = await (0, api_1.orgAuthenticatedFetch)(endpoint, {
|
|
20
|
-
method: 'POST',
|
|
21
|
-
body: {
|
|
22
|
-
access_token: tokens.accessToken,
|
|
23
|
-
refresh_token: tokens.refreshToken,
|
|
24
|
-
token_type: tokens.tokenType,
|
|
25
|
-
scope: tokens.scope,
|
|
26
|
-
expires_at: tokens.expiresAt,
|
|
27
|
-
refresh_token_expires_at: tokens.refreshTokenExpiresAt,
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
if (!response.success) {
|
|
31
|
-
throw new Error(response.error || 'Failed to upload Claude credentials to Replicas');
|
|
32
|
-
}
|
|
33
|
-
console.log(chalk_1.default.green('\n✓ Claude authentication complete!'));
|
|
34
|
-
if (response.email) {
|
|
35
|
-
console.log(chalk_1.default.gray(` Account: ${response.email}`));
|
|
36
|
-
}
|
|
37
|
-
if (response.planType) {
|
|
38
|
-
console.log(chalk_1.default.gray(` Plan: ${response.planType}`));
|
|
39
|
-
}
|
|
40
|
-
if (isUserScoped) {
|
|
41
|
-
console.log(chalk_1.default.gray('\nYour personal Claude credentials have been saved.\n'));
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.log(chalk_1.default.gray('\nYou can now use Claude Code in your workspaces.\n'));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
console.log(chalk_1.default.red('\n✗ Error:'), error instanceof Error ? error.message : error);
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=claude-auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../../src/commands/claude-auth.ts"],"names":[],"mappings":";;;;;AAQA,8CAsDC;AA9DD,kDAA0B;AAC1B,oCAAmD;AACnD,sDAAyD;AAMlD,KAAK,UAAU,iBAAiB,CAAC,UAA6B,EAAE;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;IAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;IAE9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,UAAU,QAAQ,CAAC,CAAC,CAAC;IAEhF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAkB,GAAE,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAElE,qCAAqC;QACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,wBAAwB,CAAC;QACzF,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAqB,EAO1C,QAAQ,EACR;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,YAAY,EAAE,MAAM,CAAC,WAAW;gBAChC,aAAa,EAAE,MAAM,CAAC,YAAY;gBAClC,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,wBAAwB,EAAE,MAAM,CAAC,qBAAqB;aACvD;SACF,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,iDAAiD,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/commands/code.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEnG"}
|
package/dist/commands/code.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.codeCommand = codeCommand;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const child_process_1 = require("child_process");
|
|
9
|
-
const config_1 = require("../lib/config");
|
|
10
|
-
const workspace_connection_1 = require("../lib/workspace-connection");
|
|
11
|
-
const ssh_config_1 = require("../lib/ssh-config");
|
|
12
|
-
async function codeCommand(workspaceName, options) {
|
|
13
|
-
if (!(0, config_1.isAuthenticated)()) {
|
|
14
|
-
console.log(chalk_1.default.red('Not logged in. Please run "replicas login" first.'));
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
const { workspace, sshKeyPath, portMappings, repoName } = await (0, workspace_connection_1.prepareWorkspaceConnection)(workspaceName, options);
|
|
19
|
-
const hostAlias = (0, ssh_config_1.getWorkspaceHostAlias)(workspace.name);
|
|
20
|
-
console.log(chalk_1.default.blue('\nConfiguring SSH connection...'));
|
|
21
|
-
(0, ssh_config_1.addOrUpdateSSHConfigEntry)({
|
|
22
|
-
host: hostAlias,
|
|
23
|
-
hostname: workspace.ipv4_address,
|
|
24
|
-
user: 'ubuntu',
|
|
25
|
-
identityFile: sshKeyPath,
|
|
26
|
-
portForwards: portMappings,
|
|
27
|
-
});
|
|
28
|
-
console.log(chalk_1.default.green(`✓ SSH config entry created: ${hostAlias}`));
|
|
29
|
-
const remotePath = repoName
|
|
30
|
-
? `/home/ubuntu/workspaces/${repoName}`
|
|
31
|
-
: '/home/ubuntu';
|
|
32
|
-
const ideCommand = (0, config_1.getIdeCommand)();
|
|
33
|
-
const fullCommand = `${ideCommand} --remote ssh-remote+${hostAlias} ${remotePath}`;
|
|
34
|
-
console.log(chalk_1.default.blue(`\nOpening ${ideCommand} for workspace ${workspace.name}...`));
|
|
35
|
-
console.log(chalk_1.default.gray(`Command: ${fullCommand}`));
|
|
36
|
-
if (portMappings.size > 0) {
|
|
37
|
-
console.log(chalk_1.default.cyan('\nPort forwarding configured:'));
|
|
38
|
-
for (const [remotePort, localPort] of portMappings) {
|
|
39
|
-
console.log(chalk_1.default.cyan(` • localhost:${localPort} → workspace:${remotePort}`));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
const ide = (0, child_process_1.spawn)(ideCommand, [
|
|
43
|
-
'--remote',
|
|
44
|
-
`ssh-remote+${hostAlias}`,
|
|
45
|
-
remotePath
|
|
46
|
-
], {
|
|
47
|
-
stdio: 'inherit',
|
|
48
|
-
detached: false,
|
|
49
|
-
});
|
|
50
|
-
ide.on('error', (error) => {
|
|
51
|
-
console.error(chalk_1.default.red(`\nFailed to launch ${ideCommand}: ${error.message}`));
|
|
52
|
-
console.log(chalk_1.default.yellow(`\nMake sure ${ideCommand} is installed and available in your PATH.`));
|
|
53
|
-
console.log(chalk_1.default.gray(`You can configure a different IDE with: replicas config set ide <command>`));
|
|
54
|
-
process.exit(1);
|
|
55
|
-
});
|
|
56
|
-
ide.on('close', (code) => {
|
|
57
|
-
if (code === 0) {
|
|
58
|
-
console.log(chalk_1.default.green(`\n✓ ${ideCommand} closed successfully.\n`));
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
console.error(chalk_1.default.red(`\nError: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=code.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":";;;;;AAMA,kCAqEC;AA3ED,kDAA0B;AAC1B,iDAAsC;AACtC,0CAA+D;AAC/D,sEAAyE;AACzE,kDAAqF;AAE9E,KAAK,UAAU,WAAW,CAAC,aAAqB,EAAE,OAA2B;IAClF,IAAI,CAAC,IAAA,wBAAe,GAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,iDAA0B,EACxF,aAAa,EACb,OAAO,CACR,CAAC;QAEF,MAAM,SAAS,GAAG,IAAA,kCAAqB,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAExD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC3D,IAAA,sCAAyB,EAAC;YACxB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS,CAAC,YAAa;YACjC,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,UAAU;YACxB,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC,CAAC;QAErE,MAAM,UAAU,GAAG,QAAQ;YACzB,CAAC,CAAC,2BAA2B,QAAQ,EAAE;YACvC,CAAC,CAAC,cAAc,CAAC;QAEnB,MAAM,UAAU,GAAG,IAAA,sBAAa,GAAE,CAAC;QAEnC,MAAM,WAAW,GAAG,GAAG,UAAU,wBAAwB,SAAS,IAAI,UAAU,EAAE,CAAC;QAEnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,UAAU,kBAAkB,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC,CAAC;QAEnD,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,YAAY,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,qBAAK,EAAC,UAAU,EAAE;YAC5B,UAAU;YACV,cAAc,SAAS,EAAE;YACzB,UAAU;SACX,EAAE;YACD,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sBAAsB,UAAU,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,eAAe,UAAU,2CAA2C,CAAC,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC,CAAC;YACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,UAAU,yBAAyB,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-auth.d.ts","sourceRoot":"","sources":["../../src/commands/codex-auth.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,iBAoDpE"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.codexAuthCommand = codexAuthCommand;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const api_1 = require("../lib/api");
|
|
9
|
-
const codex_oauth_1 = require("../lib/codex-oauth");
|
|
10
|
-
async function codexAuthCommand(options = {}) {
|
|
11
|
-
const isUserScoped = options.user === true;
|
|
12
|
-
const scopeLabel = isUserScoped ? 'personal' : 'organization';
|
|
13
|
-
console.log(chalk_1.default.cyan(`Authenticating with Codex (${scopeLabel})...\n`));
|
|
14
|
-
try {
|
|
15
|
-
// Run OAuth flow (opens browser, starts local server, gets tokens)
|
|
16
|
-
const tokens = await (0, codex_oauth_1.runCodexOAuthFlow)();
|
|
17
|
-
console.log(chalk_1.default.gray('\nUploading credentials to Replicas...'));
|
|
18
|
-
// Upload credentials to Replicas API
|
|
19
|
-
const endpoint = isUserScoped ? '/v1/codex/user/credentials' : '/v1/codex/credentials';
|
|
20
|
-
const response = await (0, api_1.orgAuthenticatedFetch)(endpoint, {
|
|
21
|
-
method: 'POST',
|
|
22
|
-
body: {
|
|
23
|
-
access_token: tokens.accessToken,
|
|
24
|
-
refresh_token: tokens.refreshToken,
|
|
25
|
-
id_token: tokens.idToken,
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
if (response.success) {
|
|
29
|
-
console.log(chalk_1.default.green('\n✓ Codex authentication complete!'));
|
|
30
|
-
if (response.email) {
|
|
31
|
-
console.log(chalk_1.default.gray(` Account: ${response.email}`));
|
|
32
|
-
}
|
|
33
|
-
if (response.planType) {
|
|
34
|
-
console.log(chalk_1.default.gray(` Plan: ${response.planType}`));
|
|
35
|
-
}
|
|
36
|
-
if (isUserScoped) {
|
|
37
|
-
console.log(chalk_1.default.gray('\nYour personal Codex credentials have been saved.\n'));
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
console.log(chalk_1.default.gray('\nYou can now use Codex in your workspaces.\n'));
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
throw new Error(response.error || 'Failed to upload Codex credentials to Replicas');
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
console.log(chalk_1.default.red('\n✗ Error:'), error instanceof Error ? error.message : error);
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=codex-auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-auth.js","sourceRoot":"","sources":["../../src/commands/codex-auth.ts"],"names":[],"mappings":";;;;;AAQA,4CAoDC;AA5DD,kDAA0B;AAC1B,oCAAmD;AACnD,oDAAuD;AAMhD,KAAK,UAAU,gBAAgB,CAAC,UAA4B,EAAE;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;IAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;IAE9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,UAAU,QAAQ,CAAC,CAAC,CAAC;IAE1E,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAiB,GAAE,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAElE,qCAAqC;QACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,uBAAuB,CAAC;QACvF,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAqB,EAO1C,QAAQ,EACR;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,YAAY,EAAE,MAAM,CAAC,WAAW;gBAChC,aAAa,EAAE,MAAM,CAAC,YAAY;gBAClC,QAAQ,EAAE,MAAM,CAAC,OAAO;aACzB;SACF,CACF,CAAC;QAEF,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC/D,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,gDAAgD,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBjE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBvD"}
|
package/dist/commands/config.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.configGetCommand = configGetCommand;
|
|
7
|
-
exports.configSetCommand = configSetCommand;
|
|
8
|
-
exports.configListCommand = configListCommand;
|
|
9
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
-
const config_1 = require("../lib/config");
|
|
11
|
-
async function configGetCommand(key) {
|
|
12
|
-
if (!(0, config_1.isAuthenticated)()) {
|
|
13
|
-
console.log(chalk_1.default.red('Not logged in. Please run "replicas login" first.'));
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
try {
|
|
17
|
-
if (key === 'ide') {
|
|
18
|
-
const ideCommand = (0, config_1.getIdeCommand)();
|
|
19
|
-
console.log(chalk_1.default.green(`\nIDE command: ${ideCommand}\n`));
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
console.log(chalk_1.default.red(`Unknown config key: ${key}`));
|
|
23
|
-
console.log(chalk_1.default.gray('Available keys: ide'));
|
|
24
|
-
process.exit(1);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
async function configSetCommand(key, value) {
|
|
33
|
-
if (!(0, config_1.isAuthenticated)()) {
|
|
34
|
-
console.log(chalk_1.default.red('Not logged in. Please run "replicas login" first.'));
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
if (key === 'ide') {
|
|
39
|
-
(0, config_1.setIdeCommand)(value);
|
|
40
|
-
console.log(chalk_1.default.green(`\n✓ IDE command set to: ${value}\n`));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.log(chalk_1.default.red(`Unknown config key: ${key}`));
|
|
44
|
-
console.log(chalk_1.default.gray('Available keys: ide'));
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async function configListCommand() {
|
|
54
|
-
if (!(0, config_1.isAuthenticated)()) {
|
|
55
|
-
console.log(chalk_1.default.red('Not logged in. Please run "replicas login" first.'));
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
try {
|
|
59
|
-
const config = (0, config_1.readConfig)();
|
|
60
|
-
if (!config) {
|
|
61
|
-
console.log(chalk_1.default.red('No config found. Please login first.'));
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
console.log(chalk_1.default.green('\nCurrent configuration:'));
|
|
65
|
-
console.log(chalk_1.default.gray(` Organization ID: ${config.organization_id || '(not set)'}`));
|
|
66
|
-
console.log(chalk_1.default.gray(` IDE command: ${config.ide_command || 'code (default)'}`));
|
|
67
|
-
console.log();
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
console.error(chalk_1.default.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCtG"}
|
package/dist/commands/connect.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.connectCommand = connectCommand;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const config_1 = require("../lib/config");
|
|
9
|
-
const ssh_1 = require("../lib/ssh");
|
|
10
|
-
const workspace_connection_1 = require("../lib/workspace-connection");
|
|
11
|
-
async function connectCommand(workspaceName, options) {
|
|
12
|
-
if (!(0, config_1.isAuthenticated)()) {
|
|
13
|
-
console.log(chalk_1.default.red('Not logged in. Please run "replicas login" first.'));
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
try {
|
|
17
|
-
const { workspace, sshKeyPath, portMappings } = await (0, workspace_connection_1.prepareWorkspaceConnection)(workspaceName, options);
|
|
18
|
-
console.log(chalk_1.default.blue(`\nConnecting to ${workspace.name}...`));
|
|
19
|
-
let sshCommand = `ssh -i ${sshKeyPath}`;
|
|
20
|
-
for (const [remotePort, localPort] of portMappings) {
|
|
21
|
-
sshCommand += ` -L ${localPort}:localhost:${remotePort}`;
|
|
22
|
-
}
|
|
23
|
-
sshCommand += ` ubuntu@${workspace.ipv4_address}`;
|
|
24
|
-
console.log(chalk_1.default.gray(`SSH command: ${sshCommand}`));
|
|
25
|
-
if (portMappings.size > 0) {
|
|
26
|
-
console.log(chalk_1.default.cyan('\nPort forwarding active:'));
|
|
27
|
-
for (const [remotePort, localPort] of portMappings) {
|
|
28
|
-
console.log(chalk_1.default.cyan(` • localhost:${localPort} → workspace:${remotePort}`));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
console.log(chalk_1.default.gray('\nPress Ctrl+D to disconnect.\n'));
|
|
32
|
-
await (0, ssh_1.connectSSH)(sshKeyPath, workspace.ipv4_address, portMappings);
|
|
33
|
-
console.log(chalk_1.default.green('\n✓ Disconnected from workspace.\n'));
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
console.error(chalk_1.default.red(`\nError: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
37
|
-
process.exit(1);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=connect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":";;;;;AAKA,wCAsCC;AA3CD,kDAA0B;AAC1B,0CAAgD;AAChD,oCAAwC;AACxC,sEAAyE;AAElE,KAAK,UAAU,cAAc,CAAC,aAAqB,EAAE,OAA2B;IACrF,IAAI,CAAC,IAAA,wBAAe,GAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,iDAA0B,EAC9E,aAAa,EACb,OAAO,CACR,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAEhE,IAAI,UAAU,GAAG,UAAU,UAAU,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,YAAY,EAAE,CAAC;YACnD,UAAU,IAAI,OAAO,SAAS,cAAc,UAAU,EAAE,CAAC;QAC3D,CAAC;QACD,UAAU,IAAI,WAAW,SAAS,CAAC,YAAY,EAAE,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC;QAEtD,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,YAAY,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAE3D,MAAM,IAAA,gBAAU,EAAC,UAAU,EAAE,SAAS,CAAC,YAAa,EAAE,YAAY,CAAC,CAAC;QAEpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-sync.d.ts","sourceRoot":"","sources":["../../src/commands/dev-sync.ts"],"names":[],"mappings":"AAMA,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EzE"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.devSyncCommand = devSyncCommand;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const child_process_1 = require("child_process");
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const config_1 = require("../lib/config");
|
|
11
|
-
const workspace_connection_1 = require("../lib/workspace-connection");
|
|
12
|
-
async function devSyncCommand(workspaceName) {
|
|
13
|
-
if (!(0, config_1.isAuthenticated)()) {
|
|
14
|
-
console.log(chalk_1.default.red('Not logged in. Please run "replicas login" first.'));
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
const { workspace, sshKeyPath } = await (0, workspace_connection_1.prepareWorkspaceConnection)(workspaceName, {});
|
|
19
|
-
if (!workspace.ipv4_address) {
|
|
20
|
-
throw new Error('Workspace does not have an IP address');
|
|
21
|
-
}
|
|
22
|
-
console.log(chalk_1.default.blue(`\nSyncing engine to ${workspace.name}...`));
|
|
23
|
-
// Path to dev-sync.sh script in engine/scripts/
|
|
24
|
-
// From cli/dist/commands/ -> ../../../engine/scripts/
|
|
25
|
-
const scriptPath = path_1.default.resolve(__dirname, '../../../engine/scripts/dev-sync.sh');
|
|
26
|
-
// Spawn the dev-sync script
|
|
27
|
-
const devSync = (0, child_process_1.spawn)(scriptPath, [
|
|
28
|
-
'--ip',
|
|
29
|
-
workspace.ipv4_address,
|
|
30
|
-
'--key',
|
|
31
|
-
sshKeyPath,
|
|
32
|
-
], {
|
|
33
|
-
stdio: 'inherit',
|
|
34
|
-
shell: true,
|
|
35
|
-
});
|
|
36
|
-
// Wait for the script to complete
|
|
37
|
-
await new Promise((resolve, reject) => {
|
|
38
|
-
devSync.on('close', (code) => {
|
|
39
|
-
if (code === 0) {
|
|
40
|
-
resolve();
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
reject(new Error(`dev-sync script exited with code ${code}`));
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
devSync.on('error', (error) => {
|
|
47
|
-
reject(error);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
console.log(chalk_1.default.green('\n✓ Engine synced successfully.\n'));
|
|
51
|
-
console.log(chalk_1.default.blue('Viewing logs (Ctrl+C to exit)...\n'));
|
|
52
|
-
// Follow logs after sync
|
|
53
|
-
const logs = (0, child_process_1.spawn)('ssh', [
|
|
54
|
-
'-i',
|
|
55
|
-
sshKeyPath,
|
|
56
|
-
`ubuntu@${workspace.ipv4_address}`,
|
|
57
|
-
'sudo journalctl -fu replicas-engine',
|
|
58
|
-
], {
|
|
59
|
-
stdio: 'inherit',
|
|
60
|
-
});
|
|
61
|
-
// Handle Ctrl+C gracefully
|
|
62
|
-
process.on('SIGINT', () => {
|
|
63
|
-
logs.kill('SIGTERM');
|
|
64
|
-
console.log(chalk_1.default.green('\n\n✓ Disconnected from logs.\n'));
|
|
65
|
-
process.exit(0);
|
|
66
|
-
});
|
|
67
|
-
await new Promise((resolve) => {
|
|
68
|
-
logs.on('close', () => {
|
|
69
|
-
resolve();
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
console.error(chalk_1.default.red(`\nError: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=dev-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-sync.js","sourceRoot":"","sources":["../../src/commands/dev-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmBA,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAsC9D"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.initCommand = initCommand;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const REPLICAS_CONFIG_FILENAME = 'replicas.json';
|
|
11
|
-
function getDefaultConfig() {
|
|
12
|
-
return {
|
|
13
|
-
copy: [],
|
|
14
|
-
ports: [],
|
|
15
|
-
systemPrompt: '',
|
|
16
|
-
startHook: {
|
|
17
|
-
timeout: 300000,
|
|
18
|
-
commands: [],
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
function initCommand(options) {
|
|
23
|
-
const configPath = path_1.default.join(process.cwd(), REPLICAS_CONFIG_FILENAME);
|
|
24
|
-
if (fs_1.default.existsSync(configPath) && !options.force) {
|
|
25
|
-
console.log(chalk_1.default.yellow(`${REPLICAS_CONFIG_FILENAME} already exists in this directory.`));
|
|
26
|
-
console.log(chalk_1.default.gray('Use --force to overwrite the existing file.'));
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const defaultConfig = getDefaultConfig();
|
|
30
|
-
const configContent = JSON.stringify(defaultConfig, null, 2);
|
|
31
|
-
try {
|
|
32
|
-
fs_1.default.writeFileSync(configPath, configContent + '\n', 'utf-8');
|
|
33
|
-
console.log(chalk_1.default.green(`✓ Created ${REPLICAS_CONFIG_FILENAME}`));
|
|
34
|
-
console.log('');
|
|
35
|
-
console.log(chalk_1.default.gray('Configuration options:'));
|
|
36
|
-
console.log(chalk_1.default.gray(' copy - Files to sync to the workspace (e.g., [".env"])'));
|
|
37
|
-
console.log(chalk_1.default.gray(' ports - Ports to forward from the workspace (e.g., [3000, 8080])'));
|
|
38
|
-
console.log(chalk_1.default.gray(' systemPrompt - Custom instructions for AI coding assistants'));
|
|
39
|
-
console.log(chalk_1.default.gray(' startHook - Commands to run on workspace startup'));
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
throw new Error(`Failed to create ${REPLICAS_CONFIG_FILENAME}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAmBA,kCAsCC;AAzDD,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AAGxB,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAEjD,SAAS,gBAAgB;IACvB,OAAO;QACL,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE;YACT,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,EAAE;SACb;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,OAA4B;IACtD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAEtE,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,GAAG,wBAAwB,oCAAoC,CAChE,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,wBAAwB,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAC9E,CAAC;QACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CACvF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAC5E,CAAC;QACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CACnE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,oBAAoB,wBAAwB,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC5G,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/commands/login.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAgBA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA6MlD"}
|