replicas-cli 0.2.23 → 0.2.26

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.
Files changed (125) hide show
  1. package/dist/index.js +2877 -300
  2. package/package.json +4 -2
  3. package/dist/commands/claude-auth.d.ts +0 -5
  4. package/dist/commands/claude-auth.d.ts.map +0 -1
  5. package/dist/commands/claude-auth.js +0 -52
  6. package/dist/commands/claude-auth.js.map +0 -1
  7. package/dist/commands/code.d.ts +0 -4
  8. package/dist/commands/code.d.ts.map +0 -1
  9. package/dist/commands/code.js +0 -67
  10. package/dist/commands/code.js.map +0 -1
  11. package/dist/commands/codex-auth.d.ts +0 -5
  12. package/dist/commands/codex-auth.d.ts.map +0 -1
  13. package/dist/commands/codex-auth.js +0 -52
  14. package/dist/commands/codex-auth.js.map +0 -1
  15. package/dist/commands/config.d.ts +0 -4
  16. package/dist/commands/config.d.ts.map +0 -1
  17. package/dist/commands/config.js +0 -74
  18. package/dist/commands/config.js.map +0 -1
  19. package/dist/commands/connect.d.ts +0 -4
  20. package/dist/commands/connect.d.ts.map +0 -1
  21. package/dist/commands/connect.js +0 -40
  22. package/dist/commands/connect.js.map +0 -1
  23. package/dist/commands/dev-sync.d.ts +0 -2
  24. package/dist/commands/dev-sync.d.ts.map +0 -1
  25. package/dist/commands/dev-sync.js +0 -78
  26. package/dist/commands/dev-sync.js.map +0 -1
  27. package/dist/commands/init.d.ts +0 -4
  28. package/dist/commands/init.d.ts.map +0 -1
  29. package/dist/commands/init.js +0 -45
  30. package/dist/commands/init.js.map +0 -1
  31. package/dist/commands/login.d.ts +0 -2
  32. package/dist/commands/login.d.ts.map +0 -1
  33. package/dist/commands/login.js +0 -203
  34. package/dist/commands/login.js.map +0 -1
  35. package/dist/commands/logout.d.ts +0 -2
  36. package/dist/commands/logout.d.ts.map +0 -1
  37. package/dist/commands/logout.js +0 -17
  38. package/dist/commands/logout.js.map +0 -1
  39. package/dist/commands/org.d.ts +0 -3
  40. package/dist/commands/org.d.ts.map +0 -1
  41. package/dist/commands/org.js +0 -83
  42. package/dist/commands/org.js.map +0 -1
  43. package/dist/commands/replica.d.ts +0 -19
  44. package/dist/commands/replica.d.ts.map +0 -1
  45. package/dist/commands/replica.js +0 -289
  46. package/dist/commands/replica.js.map +0 -1
  47. package/dist/commands/repositories.d.ts +0 -2
  48. package/dist/commands/repositories.d.ts.map +0 -1
  49. package/dist/commands/repositories.js +0 -41
  50. package/dist/commands/repositories.js.map +0 -1
  51. package/dist/commands/tools.d.ts +0 -2
  52. package/dist/commands/tools.d.ts.map +0 -1
  53. package/dist/commands/tools.js +0 -70
  54. package/dist/commands/tools.js.map +0 -1
  55. package/dist/commands/whoami.d.ts +0 -2
  56. package/dist/commands/whoami.d.ts.map +0 -1
  57. package/dist/commands/whoami.js +0 -31
  58. package/dist/commands/whoami.js.map +0 -1
  59. package/dist/index.d.ts +0 -4
  60. package/dist/index.d.ts.map +0 -1
  61. package/dist/index.js.map +0 -1
  62. package/dist/lib/api.d.ts +0 -7
  63. package/dist/lib/api.d.ts.map +0 -1
  64. package/dist/lib/api.js +0 -81
  65. package/dist/lib/api.js.map +0 -1
  66. package/dist/lib/auth.d.ts +0 -4
  67. package/dist/lib/auth.d.ts.map +0 -1
  68. package/dist/lib/auth.js +0 -62
  69. package/dist/lib/auth.js.map +0 -1
  70. package/dist/lib/claude-oauth.d.ts +0 -10
  71. package/dist/lib/claude-oauth.d.ts.map +0 -1
  72. package/dist/lib/claude-oauth.js +0 -131
  73. package/dist/lib/claude-oauth.js.map +0 -1
  74. package/dist/lib/codex-oauth.d.ts +0 -11
  75. package/dist/lib/codex-oauth.d.ts.map +0 -1
  76. package/dist/lib/codex-oauth.js +0 -183
  77. package/dist/lib/codex-oauth.js.map +0 -1
  78. package/dist/lib/config.d.ts +0 -12
  79. package/dist/lib/config.d.ts.map +0 -1
  80. package/dist/lib/config.js +0 -84
  81. package/dist/lib/config.js.map +0 -1
  82. package/dist/lib/git.d.ts +0 -4
  83. package/dist/lib/git.d.ts.map +0 -1
  84. package/dist/lib/git.js +0 -39
  85. package/dist/lib/git.js.map +0 -1
  86. package/dist/lib/organization.d.ts +0 -5
  87. package/dist/lib/organization.d.ts.map +0 -1
  88. package/dist/lib/organization.js +0 -29
  89. package/dist/lib/organization.js.map +0 -1
  90. package/dist/lib/pkce.d.ts +0 -14
  91. package/dist/lib/pkce.d.ts.map +0 -1
  92. package/dist/lib/pkce.js +0 -37
  93. package/dist/lib/pkce.js.map +0 -1
  94. package/dist/lib/ports.d.ts +0 -3
  95. package/dist/lib/ports.d.ts.map +0 -1
  96. package/dist/lib/ports.js +0 -44
  97. package/dist/lib/ports.js.map +0 -1
  98. package/dist/lib/replicas-config.d.ts +0 -8
  99. package/dist/lib/replicas-config.d.ts.map +0 -1
  100. package/dist/lib/replicas-config.js +0 -64
  101. package/dist/lib/replicas-config.js.map +0 -1
  102. package/dist/lib/ssh-config.d.ts +0 -12
  103. package/dist/lib/ssh-config.d.ts.map +0 -1
  104. package/dist/lib/ssh-config.js +0 -122
  105. package/dist/lib/ssh-config.js.map +0 -1
  106. package/dist/lib/ssh.d.ts +0 -5
  107. package/dist/lib/ssh.d.ts.map +0 -1
  108. package/dist/lib/ssh.js +0 -82
  109. package/dist/lib/ssh.js.map +0 -1
  110. package/dist/lib/supabase.d.ts +0 -5
  111. package/dist/lib/supabase.d.ts.map +0 -1
  112. package/dist/lib/supabase.js +0 -15
  113. package/dist/lib/supabase.js.map +0 -1
  114. package/dist/lib/version-check.d.ts +0 -2
  115. package/dist/lib/version-check.d.ts.map +0 -1
  116. package/dist/lib/version-check.js +0 -44
  117. package/dist/lib/version-check.js.map +0 -1
  118. package/dist/lib/workspace-connection.d.ts +0 -11
  119. package/dist/lib/workspace-connection.d.ts.map +0 -1
  120. package/dist/lib/workspace-connection.js +0 -132
  121. package/dist/lib/workspace-connection.js.map +0 -1
  122. package/dist/types/index.d.ts +0 -52
  123. package/dist/types/index.d.ts.map +0 -1
  124. package/dist/types/index.js +0 -3
  125. package/dist/types/index.js.map +0 -1
@@ -1,122 +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.removeSSHConfigEntry = removeSSHConfigEntry;
7
- exports.addOrUpdateSSHConfigEntry = addOrUpdateSSHConfigEntry;
8
- exports.getWorkspaceHostAlias = getWorkspaceHostAlias;
9
- const fs_1 = __importDefault(require("fs"));
10
- const path_1 = __importDefault(require("path"));
11
- const os_1 = __importDefault(require("os"));
12
- const SSH_CONFIG_PATH = path_1.default.join(os_1.default.homedir(), '.ssh', 'config');
13
- const REPLICAS_MARKER_START = '# === REPLICAS CLI MANAGED ENTRY START ===';
14
- const REPLICAS_MARKER_END = '# === REPLICAS CLI MANAGED ENTRY END ===';
15
- function ensureSSHDir() {
16
- const sshDir = path_1.default.join(os_1.default.homedir(), '.ssh');
17
- if (!fs_1.default.existsSync(sshDir)) {
18
- fs_1.default.mkdirSync(sshDir, { recursive: true, mode: 0o700 });
19
- }
20
- }
21
- function readSSHConfig() {
22
- ensureSSHDir();
23
- if (!fs_1.default.existsSync(SSH_CONFIG_PATH)) {
24
- return '';
25
- }
26
- return fs_1.default.readFileSync(SSH_CONFIG_PATH, 'utf-8');
27
- }
28
- function writeSSHConfig(content) {
29
- ensureSSHDir();
30
- fs_1.default.writeFileSync(SSH_CONFIG_PATH, content, { mode: 0o600 });
31
- }
32
- function generateConfigBlock(entry) {
33
- const lines = [
34
- REPLICAS_MARKER_START,
35
- `Host ${entry.host}`,
36
- ` HostName ${entry.hostname}`,
37
- ` User ${entry.user}`,
38
- ` IdentityFile ${entry.identityFile}`,
39
- ` StrictHostKeyChecking no`,
40
- ` UserKnownHostsFile /dev/null`,
41
- ];
42
- if (entry.portForwards && entry.portForwards.size > 0) {
43
- for (const [localPort, remotePort] of entry.portForwards) {
44
- lines.push(` LocalForward ${localPort} localhost:${remotePort}`);
45
- }
46
- }
47
- lines.push(REPLICAS_MARKER_END);
48
- return lines.join('\n');
49
- }
50
- function removeSSHConfigEntry(host) {
51
- const config = readSSHConfig();
52
- const lines = config.split('\n');
53
- const result = [];
54
- let inTargetBlock = false;
55
- for (const line of lines) {
56
- if (line.trim() === REPLICAS_MARKER_START) {
57
- const nextLines = lines.slice(lines.indexOf(line) + 1, lines.indexOf(line) + 3);
58
- const hostLine = nextLines.find(l => l.trim().startsWith('Host '));
59
- if (hostLine && hostLine.includes(host)) {
60
- inTargetBlock = true;
61
- continue;
62
- }
63
- result.push(line);
64
- continue;
65
- }
66
- if (line.trim() === REPLICAS_MARKER_END) {
67
- if (inTargetBlock) {
68
- inTargetBlock = false;
69
- continue;
70
- }
71
- result.push(line);
72
- continue;
73
- }
74
- if (inTargetBlock) {
75
- continue;
76
- }
77
- result.push(line);
78
- }
79
- writeSSHConfig(result.join('\n').trim() + '\n');
80
- }
81
- function addOrUpdateSSHConfigEntry(entry) {
82
- let config = readSSHConfig();
83
- const lines = config.split('\n');
84
- const result = [];
85
- let inTargetBlock = false;
86
- for (const line of lines) {
87
- if (line.trim() === REPLICAS_MARKER_START) {
88
- const nextLines = lines.slice(lines.indexOf(line) + 1, lines.indexOf(line) + 3);
89
- const hostLine = nextLines.find(l => l.trim().startsWith('Host '));
90
- if (hostLine && hostLine.includes(entry.host)) {
91
- inTargetBlock = true;
92
- continue;
93
- }
94
- result.push(line);
95
- continue;
96
- }
97
- if (line.trim() === REPLICAS_MARKER_END) {
98
- if (inTargetBlock) {
99
- inTargetBlock = false;
100
- continue;
101
- }
102
- result.push(line);
103
- continue;
104
- }
105
- if (inTargetBlock) {
106
- continue;
107
- }
108
- result.push(line);
109
- }
110
- config = result.join('\n');
111
- const newEntry = generateConfigBlock(entry);
112
- let finalConfig = config.trim();
113
- if (finalConfig.length > 0) {
114
- finalConfig += '\n\n';
115
- }
116
- finalConfig += newEntry + '\n';
117
- writeSSHConfig(finalConfig);
118
- }
119
- function getWorkspaceHostAlias(workspaceName) {
120
- return `replicas-${workspaceName.toLowerCase().replace(/[^a-z0-9-]/g, '-')}`;
121
- }
122
- //# sourceMappingURL=ssh-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssh-config.js","sourceRoot":"","sources":["../../src/lib/ssh-config.ts"],"names":[],"mappings":"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"}
package/dist/lib/ssh.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export declare function hasSSHKeyLocally(sshKeyId: string): boolean;
2
- export declare function getSSHKey(sshKeyId: string): Promise<string>;
3
- export declare function scpCopyFile(privateKeyPath: string, localPath: string, remotePath: string, remoteHost: string): Promise<void>;
4
- export declare function connectSSH(privateKeyPath: string, remoteHost: string, portMappings: Map<number, number>): Promise<void>;
5
- //# sourceMappingURL=ssh.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/lib/ssh.ts"],"names":[],"mappings":"AAwBA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjE;AAED,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,UAAU,CAC9B,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAwBf"}
package/dist/lib/ssh.js DELETED
@@ -1,82 +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.hasSSHKeyLocally = hasSSHKeyLocally;
7
- exports.getSSHKey = getSSHKey;
8
- exports.scpCopyFile = scpCopyFile;
9
- exports.connectSSH = connectSSH;
10
- const fs_1 = __importDefault(require("fs"));
11
- const path_1 = __importDefault(require("path"));
12
- const child_process_1 = require("child_process");
13
- const api_1 = require("./api");
14
- const config_1 = require("./config");
15
- const SSH_KEYS_DIR = path_1.default.join(config_1.CONFIG_DIR, 'keys');
16
- function ensureSSHKeysDir() {
17
- if (!fs_1.default.existsSync(SSH_KEYS_DIR)) {
18
- fs_1.default.mkdirSync(SSH_KEYS_DIR, { recursive: true, mode: 0o700 });
19
- }
20
- }
21
- function getSSHKeyPath(sshKeyId) {
22
- return path_1.default.join(SSH_KEYS_DIR, `${sshKeyId}.pem`);
23
- }
24
- function hasSSHKeyLocally(sshKeyId) {
25
- return fs_1.default.existsSync(getSSHKeyPath(sshKeyId));
26
- }
27
- async function getSSHKey(sshKeyId) {
28
- const keyPath = getSSHKeyPath(sshKeyId);
29
- if (fs_1.default.existsSync(keyPath)) {
30
- return fs_1.default.readFileSync(keyPath, 'utf-8');
31
- }
32
- const response = await (0, api_1.orgAuthenticatedFetch)(`/v1/keys/${sshKeyId}?includePrivateKey=true`);
33
- if (!response.privateKey) {
34
- throw new Error('Failed to retrieve private key from server');
35
- }
36
- ensureSSHKeysDir();
37
- fs_1.default.writeFileSync(keyPath, response.privateKey, { mode: 0o600 });
38
- return response.privateKey;
39
- }
40
- async function scpCopyFile(privateKeyPath, localPath, remotePath, remoteHost) {
41
- return new Promise((resolve, reject) => {
42
- const scp = (0, child_process_1.spawn)('scp', [
43
- '-i', privateKeyPath,
44
- '-o', 'StrictHostKeyChecking=no',
45
- '-o', 'UserKnownHostsFile=/dev/null',
46
- localPath,
47
- `ubuntu@${remoteHost}:${remotePath}`,
48
- ], {
49
- stdio: 'inherit',
50
- });
51
- scp.on('close', (code) => {
52
- if (code === 0) {
53
- resolve();
54
- }
55
- else {
56
- reject(new Error(`scp failed with exit code ${code}`));
57
- }
58
- });
59
- scp.on('error', reject);
60
- });
61
- }
62
- async function connectSSH(privateKeyPath, remoteHost, portMappings) {
63
- return new Promise((resolve, reject) => {
64
- const sshArgs = [
65
- '-i', privateKeyPath,
66
- '-o', 'StrictHostKeyChecking=no',
67
- '-o', 'UserKnownHostsFile=/dev/null',
68
- ];
69
- for (const [remotePort, localPort] of portMappings) {
70
- sshArgs.push('-L', `${localPort}:localhost:${remotePort}`);
71
- }
72
- sshArgs.push(`ubuntu@${remoteHost}`);
73
- const ssh = (0, child_process_1.spawn)('ssh', sshArgs, {
74
- stdio: 'inherit',
75
- });
76
- ssh.on('close', (code) => {
77
- resolve();
78
- });
79
- ssh.on('error', reject);
80
- });
81
- }
82
- //# sourceMappingURL=ssh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/lib/ssh.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { SupabaseClient } from '@supabase/supabase-js';
2
- declare const supabaseUrl: string;
3
- export declare const supabase: SupabaseClient;
4
- export { supabaseUrl };
5
- //# sourceMappingURL=supabase.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/lib/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAErE,QAAA,MAAM,WAAW,QAAkF,CAAC;AAIpG,eAAO,MAAM,QAAQ,EAAE,cAKrB,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.supabaseUrl = exports.supabase = void 0;
4
- const supabase_js_1 = require("@supabase/supabase-js");
5
- const supabaseUrl = process.env.REPLICAS_SUPABASE_URL || 'https://mxeqiomwgdgaesecwtct.supabase.co';
6
- exports.supabaseUrl = supabaseUrl;
7
- const supabaseAnonKey = process.env.REPLICAS_SUPABASE_ANON_KEY ||
8
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im14ZXFpb213Z2RnYWVzZWN3dGN0Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTk4OTk2ODAsImV4cCI6MjA3NTQ3NTY4MH0.zLRoK4r9Zep-WaLNkvWcb7DXlJBZFH26QXWO1ljMctM';
9
- exports.supabase = (0, supabase_js_1.createClient)(supabaseUrl, supabaseAnonKey, {
10
- auth: {
11
- persistSession: false,
12
- autoRefreshToken: false,
13
- },
14
- });
15
- //# sourceMappingURL=supabase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../src/lib/supabase.ts"],"names":[],"mappings":";;;AAAA,uDAAqE;AAErE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,0CAA0C,CAAC;AAW3F,kCAAW;AAVpB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B;IAC5D,kNAAkN,CAAC;AAExM,QAAA,QAAQ,GAAmB,IAAA,0BAAY,EAAC,WAAW,EAAE,eAAe,EAAE;IACjF,IAAI,EAAE;QACJ,cAAc,EAAE,KAAK;QACrB,gBAAgB,EAAE,KAAK;KACxB;CACF,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function checkForUpdates(currentVersion: string): Promise<void>;
2
- //# sourceMappingURL=version-check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/lib/version-check.ts"],"names":[],"mappings":"AAwBA,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB3E"}
@@ -1,44 +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.checkForUpdates = checkForUpdates;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const MONOLITH_URL = process.env.REPLICAS_MONOLITH_URL || 'https://api.replicas.dev';
9
- const VERSION_CHECK_TIMEOUT = 2000;
10
- function compareVersions(v1, v2) {
11
- const parts1 = v1.split('.').map(Number);
12
- const parts2 = v2.split('.').map(Number);
13
- for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
14
- const num1 = parts1[i] || 0;
15
- const num2 = parts2[i] || 0;
16
- if (num1 > num2)
17
- return 1;
18
- if (num1 < num2)
19
- return -1;
20
- }
21
- return 0;
22
- }
23
- async function checkForUpdates(currentVersion) {
24
- try {
25
- const controller = new AbortController();
26
- const timeoutId = setTimeout(() => controller.abort(), VERSION_CHECK_TIMEOUT);
27
- const response = await fetch(`${MONOLITH_URL}/v1/cli/version`, {
28
- signal: controller.signal,
29
- });
30
- clearTimeout(timeoutId);
31
- if (!response.ok)
32
- return;
33
- const data = (await response.json());
34
- const latestVersion = data.version;
35
- if (compareVersions(latestVersion, currentVersion) > 0) {
36
- console.error(chalk_1.default.gray(`\nUpdate available: ${currentVersion} → ${latestVersion}`));
37
- console.error(chalk_1.default.gray(`Run: npm i -g replicas-cli@latest\n`));
38
- }
39
- }
40
- catch {
41
- // Silently fail
42
- }
43
- }
44
- //# sourceMappingURL=version-check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/lib/version-check.ts"],"names":[],"mappings":";;;;;AAwBA,0CAuBC;AA/CD,kDAA0B;AAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,0BAA0B,CAAC;AACrF,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAMnC,SAAS,eAAe,CAAC,EAAU,EAAE,EAAU;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,cAAsB;IAC1D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAE9E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,iBAAiB,EAAE;YAC7D,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO;QAEzB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;QAEnC,IAAI,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,cAAc,MAAM,aAAa,EAAE,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;AACH,CAAC"}
@@ -1,11 +0,0 @@
1
- import { Workspace } from '../types';
2
- export interface WorkspaceConnectionInfo {
3
- workspace: Workspace;
4
- sshKeyPath: string;
5
- portMappings: Map<number, number>;
6
- repoName: string | null;
7
- }
8
- export declare function prepareWorkspaceConnection(workspaceName: string, options: {
9
- copy?: boolean;
10
- }): Promise<WorkspaceConnectionInfo>;
11
- //# sourceMappingURL=workspace-connection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-connection.d.ts","sourceRoot":"","sources":["../../src/lib/workspace-connection.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAcrC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,uBAAuB,CAAC,CA8IlC"}
@@ -1,132 +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.prepareWorkspaceConnection = prepareWorkspaceConnection;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const prompts_1 = __importDefault(require("prompts"));
9
- const path_1 = __importDefault(require("path"));
10
- const fs_1 = __importDefault(require("fs"));
11
- const config_1 = require("./config");
12
- const api_1 = require("./api");
13
- const ssh_1 = require("./ssh");
14
- const git_1 = require("./git");
15
- const replicas_config_1 = require("./replicas-config");
16
- const ports_1 = require("./ports");
17
- async function prepareWorkspaceConnection(workspaceName, options) {
18
- const orgId = (0, config_1.getOrganizationId)();
19
- if (!orgId) {
20
- throw new Error('No organization selected. Please run "replicas org switch" first.');
21
- }
22
- // Step 1: Query workspaces by name
23
- console.log(chalk_1.default.blue(`\nSearching for workspace: ${workspaceName}...`));
24
- const response = await (0, api_1.orgAuthenticatedFetch)(`/v1/workspaces?name=${encodeURIComponent(workspaceName)}`);
25
- if (response.workspaces.length === 0) {
26
- throw new Error(`No workspaces found with name matching "${workspaceName}".`);
27
- }
28
- // Step 2: If multiple workspaces, prompt user to select one
29
- let selectedWorkspace;
30
- if (response.workspaces.length === 1) {
31
- selectedWorkspace = response.workspaces[0];
32
- }
33
- else {
34
- console.log(chalk_1.default.yellow(`\nFound ${response.workspaces.length} workspaces matching "${workspaceName}":`));
35
- const selectResponse = await (0, prompts_1.default)({
36
- type: 'select',
37
- name: 'workspaceId',
38
- message: 'Select a workspace:',
39
- choices: response.workspaces.map(ws => ({
40
- title: `${ws.name} (${ws.status || 'unknown'})`,
41
- value: ws.id,
42
- description: `IP: ${ws.ipv4_address || 'N/A'} | Instance: ${ws.instance_type || 'N/A'}`,
43
- })),
44
- });
45
- if (!selectResponse.workspaceId) {
46
- throw new Error('Workspace selection cancelled.');
47
- }
48
- selectedWorkspace = response.workspaces.find(ws => ws.id === selectResponse.workspaceId);
49
- }
50
- console.log(chalk_1.default.green(`\n✓ Selected workspace: ${selectedWorkspace.name}`));
51
- console.log(chalk_1.default.gray(` IP: ${selectedWorkspace.ipv4_address}`));
52
- console.log(chalk_1.default.gray(` Status: ${selectedWorkspace.status || 'unknown'}`));
53
- // Check if workspace is sleeping
54
- if (selectedWorkspace.status === 'sleeping') {
55
- throw new Error('Workspace is currently sleeping. Please wake it up in the dashboard at https://replicas.dev before connecting.');
56
- }
57
- if (!selectedWorkspace.ipv4_address) {
58
- throw new Error('Workspace does not have an IP address. It may not be running yet.');
59
- }
60
- // Step 3: Get SSH key
61
- console.log(chalk_1.default.blue('\nRetrieving SSH key...'));
62
- const privateKey = await (0, ssh_1.getSSHKey)(selectedWorkspace.ssh_key_id);
63
- // Write key to a temporary file for SSH
64
- const keyPath = path_1.default.join(config_1.CONFIG_DIR, 'keys', `${selectedWorkspace.ssh_key_id}.pem`);
65
- fs_1.default.writeFileSync(keyPath, privateKey, { mode: 0o600 });
66
- console.log(chalk_1.default.green('✓ SSH key ready'));
67
- // Step 4: Handle --copy flag
68
- let repoName = null;
69
- if (options.copy) {
70
- if (!(0, git_1.isInsideGitRepo)()) {
71
- console.log(chalk_1.default.yellow('\nWarning: Not inside a git repository. Skipping file copy.'));
72
- }
73
- else {
74
- repoName = (0, git_1.getGitRepoName)();
75
- const replicasConfig = (0, replicas_config_1.readReplicasConfig)();
76
- if (!replicasConfig || !replicasConfig.copy || replicasConfig.copy.length === 0) {
77
- console.log(chalk_1.default.yellow('\nNo files to copy (replicas.json not found or empty).'));
78
- }
79
- else {
80
- console.log(chalk_1.default.blue(`\nCopying files to workspace (repo: ${repoName})...`));
81
- const { valid, invalid } = (0, replicas_config_1.validateCopyFiles)(replicasConfig.copy);
82
- if (invalid.length > 0) {
83
- console.log(chalk_1.default.yellow(`\nWarning: ${invalid.length} file(s) not found locally:`));
84
- invalid.forEach(file => console.log(chalk_1.default.gray(` - ${file}`)));
85
- }
86
- for (const file of valid) {
87
- const localPath = (0, replicas_config_1.getAbsoluteCopyPath)(file);
88
- const remotePath = `/home/ubuntu/workspaces/${repoName}/${file}`;
89
- console.log(chalk_1.default.gray(` Copying ${file}...`));
90
- try {
91
- await (0, ssh_1.scpCopyFile)(keyPath, localPath, remotePath, selectedWorkspace.ipv4_address);
92
- console.log(chalk_1.default.green(` ✓ ${file}`));
93
- }
94
- catch (error) {
95
- console.log(chalk_1.default.red(` ✗ Failed to copy ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`));
96
- }
97
- }
98
- console.log(chalk_1.default.green(`\n✓ File copy complete (${valid.length} files)`));
99
- }
100
- }
101
- }
102
- if (!repoName && (0, git_1.isInsideGitRepo)()) {
103
- try {
104
- repoName = (0, git_1.getGitRepoName)();
105
- }
106
- catch {
107
- // Ignore errors, repo name is optional
108
- }
109
- }
110
- // Step 6: Handle port forwarding
111
- const portMappings = new Map();
112
- // Add ports from replicas.json if inside a git repo
113
- console.log(chalk_1.default.blue('\nSetting up port forwarding...'));
114
- if ((0, git_1.isInsideGitRepo)()) {
115
- const replicasConfig = (0, replicas_config_1.readReplicasConfig)();
116
- if (replicasConfig && replicasConfig.ports && replicasConfig.ports.length > 0) {
117
- const mappings = await (0, ports_1.mapPortsToLocal)(replicasConfig.ports);
118
- for (const [remotePort, localPort] of mappings) {
119
- portMappings.set(remotePort, localPort);
120
- console.log(chalk_1.default.gray(` Forwarding localhost:${localPort} -> workspace:${remotePort}`));
121
- }
122
- }
123
- }
124
- console.log(chalk_1.default.green('✓ Port forwarding configured'));
125
- return {
126
- workspace: selectedWorkspace,
127
- sshKeyPath: keyPath,
128
- portMappings,
129
- repoName,
130
- };
131
- }
132
- //# sourceMappingURL=workspace-connection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-connection.js","sourceRoot":"","sources":["../../src/lib/workspace-connection.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- export interface Config {
2
- access_token: string;
3
- refresh_token: string;
4
- expires_at: number;
5
- organization_id?: string;
6
- ide_command?: string;
7
- }
8
- export interface User {
9
- id: string;
10
- email: string;
11
- }
12
- export interface Organization {
13
- id: string;
14
- name: string;
15
- created_at: string;
16
- }
17
- export interface Workspace {
18
- id: string;
19
- user_id: string;
20
- organization_id: string;
21
- name: string;
22
- aws_instance_id: string;
23
- ssh_key_id: string;
24
- ssh_key_name: string | null;
25
- instance_type: string | null;
26
- ipv4_address: string | null;
27
- ipv6_address: string | null;
28
- region: string;
29
- created_at: string;
30
- status?: string;
31
- }
32
- export interface SSHKey {
33
- id: string;
34
- organization_id: string;
35
- name: string;
36
- aws_key_name: string;
37
- public_key: string;
38
- private_key_secret_id: string | null;
39
- created_at: string;
40
- }
41
- export interface StartHookConfig {
42
- timeout?: number;
43
- commands: string[];
44
- }
45
- export interface ReplicasConfig {
46
- organizationId?: string;
47
- copy?: string[];
48
- ports?: number[];
49
- systemPrompt?: string;
50
- startHook?: StartHookConfig;
51
- }
52
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}