ceetrix 1.0.13 → 1.0.15
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/bin/ceetrix.js +0 -0
- package/dist/antigravity.d.ts +29 -0
- package/dist/antigravity.d.ts.map +1 -0
- package/dist/antigravity.js +84 -0
- package/dist/antigravity.js.map +1 -0
- package/dist/claude.d.ts +12 -2
- package/dist/claude.d.ts.map +1 -1
- package/dist/claude.js +73 -9
- package/dist/claude.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -2
- package/dist/constants.js.map +1 -1
- package/dist/debug.d.ts.map +1 -1
- package/dist/debug.js +25 -0
- package/dist/debug.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -28
- package/dist/index.js.map +1 -1
- package/dist/invite.d.ts +29 -0
- package/dist/invite.d.ts.map +1 -0
- package/dist/invite.js +126 -0
- package/dist/invite.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +21 -5
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/bin/ceetrix.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity integration
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if the CLI is running within an Antigravity environment.
|
|
6
|
+
*
|
|
7
|
+
* @returns true if ANTIGRAVITY_AGENT is set
|
|
8
|
+
*/
|
|
9
|
+
export declare function isAntigravityAvailable(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Add Ceetrix MCP server configuration to Antigravity.
|
|
12
|
+
*
|
|
13
|
+
* Writes to ~/.gemini/antigravity/mcp_config.json
|
|
14
|
+
*
|
|
15
|
+
* @param apiKey - The API key to use for authentication
|
|
16
|
+
* @param url - The MCP server URL
|
|
17
|
+
*/
|
|
18
|
+
export declare function addConfig(apiKey: string, url: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Check if Ceetrix is already configured in Antigravity.
|
|
21
|
+
*
|
|
22
|
+
* @returns true if ceetrix server is configured
|
|
23
|
+
*/
|
|
24
|
+
export declare function checkExistingConfig(): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Remove Ceetrix configuration from Antigravity.
|
|
27
|
+
*/
|
|
28
|
+
export declare function removeConfig(): Promise<void>;
|
|
29
|
+
//# sourceMappingURL=antigravity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../src/antigravity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B1E;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ5D;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAYlD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity integration
|
|
3
|
+
*/
|
|
4
|
+
import { writeFile, readFile, mkdir } from 'fs/promises';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { homedir } from 'os';
|
|
7
|
+
/** Antigravity global config path */
|
|
8
|
+
const ANTIGRAVITY_CONFIG_DIR = join(homedir(), '.gemini', 'antigravity');
|
|
9
|
+
const ANTIGRAVITY_CONFIG_PATH = join(ANTIGRAVITY_CONFIG_DIR, 'mcp_config.json');
|
|
10
|
+
/**
|
|
11
|
+
* Check if the CLI is running within an Antigravity environment.
|
|
12
|
+
*
|
|
13
|
+
* @returns true if ANTIGRAVITY_AGENT is set
|
|
14
|
+
*/
|
|
15
|
+
export function isAntigravityAvailable() {
|
|
16
|
+
return process.env.ANTIGRAVITY_AGENT === '1';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Add Ceetrix MCP server configuration to Antigravity.
|
|
20
|
+
*
|
|
21
|
+
* Writes to ~/.gemini/antigravity/mcp_config.json
|
|
22
|
+
*
|
|
23
|
+
* @param apiKey - The API key to use for authentication
|
|
24
|
+
* @param url - The MCP server URL
|
|
25
|
+
*/
|
|
26
|
+
export async function addConfig(apiKey, url) {
|
|
27
|
+
// Ensure directory exists
|
|
28
|
+
await mkdir(ANTIGRAVITY_CONFIG_DIR, { recursive: true });
|
|
29
|
+
let config = { mcpServers: {} };
|
|
30
|
+
try {
|
|
31
|
+
const existingContent = await readFile(ANTIGRAVITY_CONFIG_PATH, 'utf-8');
|
|
32
|
+
if (existingContent.trim()) {
|
|
33
|
+
config = JSON.parse(existingContent);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
// File doesn't exist or is invalid, start with empty config
|
|
38
|
+
}
|
|
39
|
+
// Ensure mcpServers object exists
|
|
40
|
+
if (!config.mcpServers) {
|
|
41
|
+
config.mcpServers = {};
|
|
42
|
+
}
|
|
43
|
+
// Add or update ceetrix server
|
|
44
|
+
config.mcpServers.ceetrix = {
|
|
45
|
+
type: 'remote',
|
|
46
|
+
url: url,
|
|
47
|
+
headers: {
|
|
48
|
+
'X-API-Key': apiKey,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
await writeFile(ANTIGRAVITY_CONFIG_PATH, JSON.stringify(config, null, 2), 'utf-8');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if Ceetrix is already configured in Antigravity.
|
|
55
|
+
*
|
|
56
|
+
* @returns true if ceetrix server is configured
|
|
57
|
+
*/
|
|
58
|
+
export async function checkExistingConfig() {
|
|
59
|
+
try {
|
|
60
|
+
const existingContent = await readFile(ANTIGRAVITY_CONFIG_PATH, 'utf-8');
|
|
61
|
+
const config = JSON.parse(existingContent);
|
|
62
|
+
return !!(config.mcpServers && config.mcpServers.ceetrix);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Remove Ceetrix configuration from Antigravity.
|
|
70
|
+
*/
|
|
71
|
+
export async function removeConfig() {
|
|
72
|
+
try {
|
|
73
|
+
const existingContent = await readFile(ANTIGRAVITY_CONFIG_PATH, 'utf-8');
|
|
74
|
+
const config = JSON.parse(existingContent);
|
|
75
|
+
if (config.mcpServers && config.mcpServers.ceetrix) {
|
|
76
|
+
delete config.mcpServers.ceetrix;
|
|
77
|
+
await writeFile(ANTIGRAVITY_CONFIG_PATH, JSON.stringify(config, null, 2), 'utf-8');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// File doesn't exist or other error, nothing to remove
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=antigravity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../src/antigravity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,qCAAqC;AACrC,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACzE,MAAM,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,GAAW;IACzD,0BAA0B;IAC1B,MAAM,KAAK,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,IAAI,MAAM,GAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACzE,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4DAA4D;IAC9D,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG;QAC1B,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,GAAG;QACR,OAAO,EAAE;YACP,WAAW,EAAE,MAAM;SACpB;KACF,CAAC;IAEF,MAAM,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YACjC,MAAM,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;AACH,CAAC"}
|
package/dist/claude.d.ts
CHANGED
|
@@ -19,8 +19,7 @@ export declare function checkClaudeCli(): Promise<boolean>;
|
|
|
19
19
|
/**
|
|
20
20
|
* Add Ceetrix MCP server configuration to Claude Code.
|
|
21
21
|
*
|
|
22
|
-
* Uses `claude mcp add` with --transport
|
|
23
|
-
* Older Claude CLI (< 2.x) only supports stdio and sse, not http.
|
|
22
|
+
* Uses `claude mcp add` with --transport http. Requires Claude CLI >= 2.0.
|
|
24
23
|
*
|
|
25
24
|
* @param apiKey - The API key to use for authentication
|
|
26
25
|
* @throws Error if Claude CLI not found or command fails
|
|
@@ -38,4 +37,15 @@ export declare function checkExistingConfig(): Promise<boolean>;
|
|
|
38
37
|
* @throws Error if Claude CLI not found or command fails
|
|
39
38
|
*/
|
|
40
39
|
export declare function removeConfig(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Write Ceetrix MCP config directly to a file.
|
|
42
|
+
*
|
|
43
|
+
* This bypasses `claude mcp add` and writes the config JSON directly,
|
|
44
|
+
* allowing tests to use a custom config file without touching ~/.claude.json.
|
|
45
|
+
*
|
|
46
|
+
* @param apiKey - The API key for authentication
|
|
47
|
+
* @param url - The MCP server URL
|
|
48
|
+
* @param filePath - Path to write the config file
|
|
49
|
+
*/
|
|
50
|
+
export declare function writeConfigToFile(apiKey: string, url: string, filePath: string): Promise<void>;
|
|
41
51
|
//# sourceMappingURL=claude.d.ts.map
|
package/dist/claude.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqIH;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAGvD;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7D;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAY5D;AAED;;;;GAIG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CASlD;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
package/dist/claude.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { exec } from 'child_process';
|
|
14
14
|
import { promisify } from 'util';
|
|
15
|
+
import { writeFile } from 'fs/promises';
|
|
15
16
|
import which from 'which';
|
|
16
17
|
import { getMcpServerUrl } from './constants.js';
|
|
17
18
|
const execAsync = promisify(exec);
|
|
@@ -21,6 +22,8 @@ const CLAUDE_COMMAND_TIMEOUT_MS = 10000;
|
|
|
21
22
|
const VERSION_CHECK_TIMEOUT_MS = 3000;
|
|
22
23
|
/** Expected string in Claude Code version output */
|
|
23
24
|
const CLAUDE_CODE_VERSION_MARKER = 'Claude Code';
|
|
25
|
+
/** Minimum required Claude CLI version (2.0 supports http transport) */
|
|
26
|
+
const MIN_CLAUDE_VERSION = { major: 2, minor: 0 };
|
|
24
27
|
/** Common installation paths for Claude CLI (fallback when not in PATH) */
|
|
25
28
|
const COMMON_CLAUDE_PATHS = [
|
|
26
29
|
'/opt/homebrew/bin/claude', // macOS Homebrew ARM
|
|
@@ -30,17 +33,55 @@ const COMMON_CLAUDE_PATHS = [
|
|
|
30
33
|
/** Cached path to claude executable */
|
|
31
34
|
let cachedClaudePath = null;
|
|
32
35
|
/**
|
|
33
|
-
*
|
|
36
|
+
* Parse version string like "2.0.76 (Claude Code)" into major/minor numbers.
|
|
37
|
+
*
|
|
38
|
+
* @param versionOutput - Output from claude --version
|
|
39
|
+
* @returns Object with major and minor version, or null if parsing fails
|
|
40
|
+
*/
|
|
41
|
+
function parseClaudeVersion(versionOutput) {
|
|
42
|
+
// Match patterns like "2.0.76" or "0.2.126"
|
|
43
|
+
const match = versionOutput.match(/^(\d+)\.(\d+)\./);
|
|
44
|
+
if (!match)
|
|
45
|
+
return null;
|
|
46
|
+
return {
|
|
47
|
+
major: parseInt(match[1], 10),
|
|
48
|
+
minor: parseInt(match[2], 10),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if version meets minimum requirements.
|
|
53
|
+
*
|
|
54
|
+
* @param version - Parsed version object
|
|
55
|
+
* @returns true if version >= MIN_CLAUDE_VERSION
|
|
56
|
+
*/
|
|
57
|
+
function meetsMinVersion(version) {
|
|
58
|
+
if (version.major > MIN_CLAUDE_VERSION.major)
|
|
59
|
+
return true;
|
|
60
|
+
if (version.major < MIN_CLAUDE_VERSION.major)
|
|
61
|
+
return false;
|
|
62
|
+
return version.minor >= MIN_CLAUDE_VERSION.minor;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Verify a path is actually Claude Code with sufficient version.
|
|
34
66
|
*
|
|
35
67
|
* @param path - Path to executable
|
|
36
|
-
* @returns true if responds with "Claude Code"
|
|
68
|
+
* @returns true if responds with "Claude Code" and version >= 2.0
|
|
37
69
|
*/
|
|
38
70
|
async function isClaudeCode(path) {
|
|
39
71
|
try {
|
|
40
72
|
const { stdout } = await execAsync(`"${path}" --version`, {
|
|
41
73
|
timeout: VERSION_CHECK_TIMEOUT_MS,
|
|
42
74
|
});
|
|
43
|
-
|
|
75
|
+
// Must be Claude Code
|
|
76
|
+
if (!stdout.includes(CLAUDE_CODE_VERSION_MARKER)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
// Must meet minimum version
|
|
80
|
+
const version = parseClaudeVersion(stdout);
|
|
81
|
+
if (!version || !meetsMinVersion(version)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return true;
|
|
44
85
|
}
|
|
45
86
|
catch {
|
|
46
87
|
// Timeout, error, or doesn't respond correctly
|
|
@@ -95,8 +136,7 @@ export async function checkClaudeCli() {
|
|
|
95
136
|
/**
|
|
96
137
|
* Add Ceetrix MCP server configuration to Claude Code.
|
|
97
138
|
*
|
|
98
|
-
* Uses `claude mcp add` with --transport
|
|
99
|
-
* Older Claude CLI (< 2.x) only supports stdio and sse, not http.
|
|
139
|
+
* Uses `claude mcp add` with --transport http. Requires Claude CLI >= 2.0.
|
|
100
140
|
*
|
|
101
141
|
* @param apiKey - The API key to use for authentication
|
|
102
142
|
* @throws Error if Claude CLI not found or command fails
|
|
@@ -104,12 +144,12 @@ export async function checkClaudeCli() {
|
|
|
104
144
|
export async function addConfig(apiKey) {
|
|
105
145
|
const claudePath = await getClaudePath();
|
|
106
146
|
if (!claudePath) {
|
|
107
|
-
throw new Error('Claude CLI not found'
|
|
147
|
+
throw new Error('Claude CLI not found or version too old. Requires Claude Code >= 2.0. ' +
|
|
148
|
+
'Install/update: https://docs.anthropic.com/en/docs/claude-code');
|
|
108
149
|
}
|
|
109
150
|
const url = getMcpServerUrl();
|
|
110
|
-
// Use
|
|
111
|
-
|
|
112
|
-
await execAsync(`"${claudePath}" mcp add --transport sse -H "X-API-Key: ${apiKey}" --scope user ceetrix "${url}"`, {
|
|
151
|
+
// Use http transport (requires Claude CLI >= 2.0)
|
|
152
|
+
await execAsync(`"${claudePath}" mcp add --transport http -H "X-API-Key: ${apiKey}" --scope user ceetrix "${url}"`, {
|
|
113
153
|
timeout: CLAUDE_COMMAND_TIMEOUT_MS,
|
|
114
154
|
});
|
|
115
155
|
}
|
|
@@ -146,4 +186,28 @@ export async function removeConfig() {
|
|
|
146
186
|
timeout: CLAUDE_COMMAND_TIMEOUT_MS,
|
|
147
187
|
});
|
|
148
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Write Ceetrix MCP config directly to a file.
|
|
191
|
+
*
|
|
192
|
+
* This bypasses `claude mcp add` and writes the config JSON directly,
|
|
193
|
+
* allowing tests to use a custom config file without touching ~/.claude.json.
|
|
194
|
+
*
|
|
195
|
+
* @param apiKey - The API key for authentication
|
|
196
|
+
* @param url - The MCP server URL
|
|
197
|
+
* @param filePath - Path to write the config file
|
|
198
|
+
*/
|
|
199
|
+
export async function writeConfigToFile(apiKey, url, filePath) {
|
|
200
|
+
const config = {
|
|
201
|
+
mcpServers: {
|
|
202
|
+
ceetrix: {
|
|
203
|
+
type: 'http',
|
|
204
|
+
url: url,
|
|
205
|
+
headers: {
|
|
206
|
+
'X-API-Key': apiKey,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
await writeFile(filePath, JSON.stringify(config, null, 2), 'utf-8');
|
|
212
|
+
}
|
|
149
213
|
//# sourceMappingURL=claude.js.map
|
package/dist/claude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,sDAAsD;AACtD,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAExC,8DAA8D;AAC9D,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,oDAAoD;AACpD,MAAM,0BAA0B,GAAG,aAAa,CAAC;AAEjD,2EAA2E;AAC3E,MAAM,mBAAmB,GAAG;IAC1B,0BAA0B,EAAE,qBAAqB;IACjD,uBAAuB,EAAE,+BAA+B;IACxD,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB,EAAE,0BAA0B;CACpE,CAAC;AAEF,uCAAuC;AACvC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,IAAI,aAAa,EAAE;YACxD,OAAO,EAAE,wBAAwB;SAClC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -14,6 +14,6 @@ export declare const AUTH_TIMEOUT_MS: number;
|
|
|
14
14
|
export declare const DEFAULT_PORT = 54321;
|
|
15
15
|
/** Ports to try for callback server if default is in use */
|
|
16
16
|
export declare const PORT_RANGE: number[];
|
|
17
|
-
/** MCP server URL for Claude Code config (
|
|
17
|
+
/** MCP server URL for Claude Code config (HTTP transport) */
|
|
18
18
|
export declare function getMcpServerUrl(): string;
|
|
19
19
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,yBAAyB;AACzB,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,yDAAyD;AACzD,eAAO,MAAM,eAAe,QAAgB,CAAC;AAE7C,6CAA6C;AAC7C,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,4DAA4D;AAC5D,eAAO,MAAM,UAAU,UAAsC,CAAC;AAE9D,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,yBAAyB;AACzB,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,yDAAyD;AACzD,eAAO,MAAM,eAAe,QAAgB,CAAC;AAE7C,6CAA6C;AAC7C,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,4DAA4D;AAC5D,eAAO,MAAM,UAAU,UAAsC,CAAC;AAE9D,6DAA6D;AAC7D,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/constants.js
CHANGED
|
@@ -18,8 +18,8 @@ export const AUTH_TIMEOUT_MS = 5 * 60 * 1000;
|
|
|
18
18
|
export const DEFAULT_PORT = 54321;
|
|
19
19
|
/** Ports to try for callback server if default is in use */
|
|
20
20
|
export const PORT_RANGE = [54321, 54322, 54323, 54324, 54325];
|
|
21
|
-
/** MCP server URL for Claude Code config (
|
|
21
|
+
/** MCP server URL for Claude Code config (HTTP transport) */
|
|
22
22
|
export function getMcpServerUrl() {
|
|
23
|
-
return process.env.CEETRIX_MCP_URL || 'https://api.ceetrix.com/
|
|
23
|
+
return process.env.CEETRIX_MCP_URL || 'https://api.ceetrix.com/mcp';
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAC;AAClE,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,aAAa,EAAE,QAAQ,CAAC;AACpC,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAElC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE9D,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAC;AAClE,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,aAAa,EAAE,QAAQ,CAAC;AACpC,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAElC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE9D,6DAA6D;AAC7D,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,6BAA6B,CAAC;AACtE,CAAC"}
|
package/dist/debug.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAsHpD"}
|
package/dist/debug.js
CHANGED
|
@@ -20,6 +20,8 @@ const DIAG_TIMEOUT_MS = 5000;
|
|
|
20
20
|
const VERSION_CHECK_TIMEOUT_MS = 3000;
|
|
21
21
|
/** Expected marker in Claude Code version output */
|
|
22
22
|
const CLAUDE_CODE_MARKER = 'Claude Code';
|
|
23
|
+
/** Minimum required Claude CLI version */
|
|
24
|
+
const MIN_VERSION = { major: 2, minor: 0 };
|
|
23
25
|
/**
|
|
24
26
|
* Print debug diagnostics and exit.
|
|
25
27
|
*/
|
|
@@ -44,6 +46,22 @@ export async function printDebugInfo() {
|
|
|
44
46
|
// Claude CLI detection
|
|
45
47
|
console.log('Claude CLI Detection');
|
|
46
48
|
console.log('────────────────────');
|
|
49
|
+
console.log(` Min required: v${MIN_VERSION.major}.${MIN_VERSION.minor} (for HTTP transport)`);
|
|
50
|
+
// Helper to parse version string
|
|
51
|
+
function parseVersion(versionOutput) {
|
|
52
|
+
const match = versionOutput.match(/^(\d+)\.(\d+)\./);
|
|
53
|
+
if (!match)
|
|
54
|
+
return null;
|
|
55
|
+
return { major: parseInt(match[1], 10), minor: parseInt(match[2], 10) };
|
|
56
|
+
}
|
|
57
|
+
// Helper to check if version meets minimum
|
|
58
|
+
function meetsMinVersion(v) {
|
|
59
|
+
if (v.major > MIN_VERSION.major)
|
|
60
|
+
return true;
|
|
61
|
+
if (v.major < MIN_VERSION.major)
|
|
62
|
+
return false;
|
|
63
|
+
return v.minor >= MIN_VERSION.minor;
|
|
64
|
+
}
|
|
47
65
|
// Helper to check if path is real Claude Code
|
|
48
66
|
async function checkClaudeCode(path) {
|
|
49
67
|
try {
|
|
@@ -51,6 +69,13 @@ export async function printDebugInfo() {
|
|
|
51
69
|
timeout: VERSION_CHECK_TIMEOUT_MS,
|
|
52
70
|
});
|
|
53
71
|
if (stdout.includes(CLAUDE_CODE_MARKER)) {
|
|
72
|
+
const version = parseVersion(stdout);
|
|
73
|
+
if (version && meetsMinVersion(version)) {
|
|
74
|
+
return `✓ Claude Code v${version.major}.${version.minor} (meets min)`;
|
|
75
|
+
}
|
|
76
|
+
else if (version) {
|
|
77
|
+
return `✗ Claude Code v${version.major}.${version.minor} (BELOW MIN - update required)`;
|
|
78
|
+
}
|
|
54
79
|
return `✓ Claude Code (${stdout.trim()})`;
|
|
55
80
|
}
|
|
56
81
|
return `✗ NOT Claude Code (responds: ${stdout.trim().slice(0, 40)})`;
|
package/dist/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,+CAA+C;AAC/C,MAAM,mBAAmB,GAAG;IAC1B,0BAA0B;IAC1B,uBAAuB;IACvB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB;CACxC,CAAC;AAEF,sCAAsC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,6CAA6C;AAC7C,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,oDAAoD;AACpD,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;IACP,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwCH;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA0F1C"}
|
package/dist/index.js
CHANGED
|
@@ -6,20 +6,44 @@ import { checkExistingConfig, removeExistingConfig } from './config.js';
|
|
|
6
6
|
import { startCallbackServer } from './server.js';
|
|
7
7
|
import { openBrowser } from './browser.js';
|
|
8
8
|
import { promptForRepo, promptExistingConfig } from './prompts.js';
|
|
9
|
-
import { checkClaudeCli, addConfig } from './claude.js';
|
|
10
|
-
import { getSetupUrl, AUTH_TIMEOUT_MS } from './constants.js';
|
|
9
|
+
import { checkClaudeCli, addConfig, writeConfigToFile } from './claude.js';
|
|
10
|
+
import { getSetupUrl, AUTH_TIMEOUT_MS, getMcpServerUrl } from './constants.js';
|
|
11
|
+
import { printDebugInfo } from './debug.js';
|
|
11
12
|
import { enforceLatestVersion } from './version-check.js';
|
|
12
13
|
import { requestPermissionOrExit } from './permissions.js';
|
|
14
|
+
import { runInviteFlow } from './invite.js';
|
|
15
|
+
/** Parse command line arguments */
|
|
16
|
+
function parseArgs() {
|
|
17
|
+
const args = process.argv.slice(2);
|
|
18
|
+
// Parse --config <path>
|
|
19
|
+
let configPath = null;
|
|
20
|
+
const configIndex = args.findIndex(arg => arg === '--config' || arg === '-c');
|
|
21
|
+
if (configIndex !== -1 && args[configIndex + 1]) {
|
|
22
|
+
configPath = args[configIndex + 1];
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
debug: args.includes('--debug') || args.includes('-d'),
|
|
26
|
+
configPath,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
13
29
|
/** Supported platform for this release */
|
|
14
30
|
const SUPPORTED_PLATFORM = 'darwin';
|
|
15
31
|
/**
|
|
16
32
|
* Main CLI entry point
|
|
17
33
|
*/
|
|
18
34
|
export async function main() {
|
|
35
|
+
const cliContext = parseArgs();
|
|
36
|
+
// Handle --debug flag
|
|
37
|
+
if (cliContext.debug) {
|
|
38
|
+
await printDebugInfo();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
19
41
|
console.log('\nCeetrix Setup');
|
|
20
42
|
console.log('─────────────\n');
|
|
21
43
|
// Version check - refuse to run outdated cached versions
|
|
22
44
|
await enforceLatestVersion();
|
|
45
|
+
// Invite code check - gate access before setup
|
|
46
|
+
await runInviteFlow();
|
|
23
47
|
// Platform check - macOS only for now
|
|
24
48
|
if (process.platform !== SUPPORTED_PLATFORM) {
|
|
25
49
|
console.error(`✗ Unsupported platform: ${process.platform}\n`);
|
|
@@ -29,29 +53,44 @@ export async function main() {
|
|
|
29
53
|
console.error('Join the Discord for updates: https://ceetrix.com/discord\n');
|
|
30
54
|
process.exit(1);
|
|
31
55
|
}
|
|
32
|
-
// Single upfront permission for all CLI operations
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const claudeAvailable = await checkClaudeCli();
|
|
36
|
-
if (!claudeAvailable) {
|
|
37
|
-
console.error('✗ Claude Code CLI not found\n');
|
|
38
|
-
console.error('Install Claude Code first: https://claude.ai/download');
|
|
39
|
-
console.error('');
|
|
40
|
-
console.error('If Claude Code is installed, run: npx ceetrix --debug');
|
|
41
|
-
console.error('and post the output to: https://ceetrix.com/discord\n');
|
|
42
|
-
process.exit(1);
|
|
56
|
+
// Single upfront permission for all CLI operations (skip if using custom config)
|
|
57
|
+
if (!cliContext.configPath) {
|
|
58
|
+
await requestPermissionOrExit();
|
|
43
59
|
}
|
|
44
|
-
// Check if
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
60
|
+
// Check Claude CLI is available (skip if using custom config - we write directly)
|
|
61
|
+
if (!cliContext.configPath) {
|
|
62
|
+
const claudeAvailable = await checkClaudeCli();
|
|
63
|
+
if (!claudeAvailable) {
|
|
64
|
+
console.error('✗ Claude Code CLI not found or version too old\n');
|
|
65
|
+
console.error('Ceetrix requires Claude Code version 2.0 or later.');
|
|
66
|
+
console.error('Install/update: https://docs.anthropic.com/en/docs/claude-code');
|
|
67
|
+
console.error('');
|
|
68
|
+
console.error('Run: npx ceetrix --debug');
|
|
69
|
+
console.error('for diagnostic info to share at: https://ceetrix.com/discord\n');
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
// Check if already configured (only when writing to default location)
|
|
73
|
+
const existingConfig = await checkExistingConfig();
|
|
74
|
+
if (existingConfig) {
|
|
75
|
+
const action = await handleExistingConfig();
|
|
76
|
+
if (action === 'cancel' || action === 'done') {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// For 'continue', proceed with normal flow
|
|
50
80
|
}
|
|
51
|
-
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.log(`Writing config to: ${cliContext.configPath}\n`);
|
|
52
84
|
}
|
|
53
85
|
// Detect or prompt for repo
|
|
54
|
-
|
|
86
|
+
let detection;
|
|
87
|
+
try {
|
|
88
|
+
detection = await detectGitRemote();
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Git detection failed (e.g., git not installed) - fall back to prompt
|
|
92
|
+
detection = { status: 'no-git-repo' };
|
|
93
|
+
}
|
|
55
94
|
let repo;
|
|
56
95
|
if (detection.status === 'detected') {
|
|
57
96
|
console.log(`Detected repository: github.com/${detection.repo}\n`);
|
|
@@ -73,7 +112,7 @@ export async function main() {
|
|
|
73
112
|
repo = await promptForRepo();
|
|
74
113
|
}
|
|
75
114
|
// Run the setup flow
|
|
76
|
-
await runSetupFlow(repo);
|
|
115
|
+
await runSetupFlow(repo, cliContext.configPath);
|
|
77
116
|
}
|
|
78
117
|
/**
|
|
79
118
|
* Handle case when Ceetrix is already configured.
|
|
@@ -119,8 +158,9 @@ async function handleExistingConfig() {
|
|
|
119
158
|
* Run the OAuth setup flow.
|
|
120
159
|
*
|
|
121
160
|
* @param repo - The repository to set up (owner/repo)
|
|
161
|
+
* @param configPath - Optional custom config file path (null = use claude mcp add)
|
|
122
162
|
*/
|
|
123
|
-
async function runSetupFlow(repo) {
|
|
163
|
+
async function runSetupFlow(repo, configPath) {
|
|
124
164
|
// Start callback server
|
|
125
165
|
const { port, waitForCallback, close } = await startCallbackServer();
|
|
126
166
|
try {
|
|
@@ -160,11 +200,20 @@ async function runSetupFlow(repo) {
|
|
|
160
200
|
console.log('');
|
|
161
201
|
}
|
|
162
202
|
// Add to Claude config
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
203
|
+
if (configPath) {
|
|
204
|
+
// Write directly to custom config file (non-destructive to ~/.claude.json)
|
|
205
|
+
console.log(`Writing Ceetrix config to ${configPath}...`);
|
|
206
|
+
await writeConfigToFile(result.apiKey, getMcpServerUrl(), configPath);
|
|
207
|
+
console.log('✓ Configuration written\n');
|
|
208
|
+
printCustomConfigNotice(configPath);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Use claude mcp add (writes to ~/.claude.json)
|
|
212
|
+
console.log('Adding Ceetrix to Claude Code...');
|
|
213
|
+
await addConfig(result.apiKey);
|
|
214
|
+
console.log('✓ Configuration added\n');
|
|
215
|
+
printRestartNotice();
|
|
216
|
+
}
|
|
168
217
|
}
|
|
169
218
|
finally {
|
|
170
219
|
close();
|
|
@@ -198,4 +247,17 @@ function printRestartNotice() {
|
|
|
198
247
|
console.log('│ want to build and ask Claude to "create a story for it". │');
|
|
199
248
|
console.log('└─────────────────────────────────────────────────────────────────┘\n');
|
|
200
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* Print notice for custom config file usage.
|
|
252
|
+
*/
|
|
253
|
+
function printCustomConfigNotice(configPath) {
|
|
254
|
+
console.log('┌─────────────────────────────────────────────────────────────────┐');
|
|
255
|
+
console.log('│ Config written to custom file (not ~/.claude.json) │');
|
|
256
|
+
console.log('│ │');
|
|
257
|
+
console.log('│ To use this config with Claude: │');
|
|
258
|
+
console.log(`│ claude --mcp-config ${configPath}`);
|
|
259
|
+
console.log('│ │');
|
|
260
|
+
console.log('│ Your production ~/.claude.json was NOT modified. │');
|
|
261
|
+
console.log('└─────────────────────────────────────────────────────────────────┘\n');
|
|
262
|
+
}
|
|
201
263
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAsB,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/invite.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invite code validation and waitlist signup
|
|
3
|
+
* Story 265: Gate CLI installation with invite code system
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Validate an invite code against the API.
|
|
7
|
+
*
|
|
8
|
+
* @param code - The invite code to validate
|
|
9
|
+
* @returns Whether the code is valid
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateInviteCode(code: string): Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Submit a waitlist signup.
|
|
14
|
+
*
|
|
15
|
+
* @param email - User's email address
|
|
16
|
+
* @param reason - Optional reason for wanting access
|
|
17
|
+
* @returns Whether submission succeeded
|
|
18
|
+
*/
|
|
19
|
+
export declare function submitSignup(email: string, reason?: string): Promise<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* Run the invite code flow.
|
|
22
|
+
*
|
|
23
|
+
* If the user has a valid invite code, returns true and setup continues.
|
|
24
|
+
* If the user doesn't have a code, prompts for waitlist signup and exits.
|
|
25
|
+
*
|
|
26
|
+
* @returns true if user has valid invite code, exits process otherwise
|
|
27
|
+
*/
|
|
28
|
+
export declare function runInviteFlow(): Promise<boolean>;
|
|
29
|
+
//# sourceMappingURL=invite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../src/invite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BvE;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBnF;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAsDtD"}
|
package/dist/invite.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invite code validation and waitlist signup
|
|
3
|
+
* Story 265: Gate CLI installation with invite code system
|
|
4
|
+
*/
|
|
5
|
+
import { input } from '@inquirer/prompts';
|
|
6
|
+
import { getApiBaseUrl } from './constants.js';
|
|
7
|
+
/** Request timeout in milliseconds */
|
|
8
|
+
const REQUEST_TIMEOUT_MS = 10000;
|
|
9
|
+
/**
|
|
10
|
+
* Validate an invite code against the API.
|
|
11
|
+
*
|
|
12
|
+
* @param code - The invite code to validate
|
|
13
|
+
* @returns Whether the code is valid
|
|
14
|
+
*/
|
|
15
|
+
export async function validateInviteCode(code) {
|
|
16
|
+
const url = `${getApiBaseUrl()}/invite/validate`;
|
|
17
|
+
try {
|
|
18
|
+
const controller = new AbortController();
|
|
19
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
20
|
+
const response = await fetch(url, {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
headers: { 'Content-Type': 'application/json' },
|
|
23
|
+
body: JSON.stringify({ code }),
|
|
24
|
+
signal: controller.signal,
|
|
25
|
+
});
|
|
26
|
+
clearTimeout(timeoutId);
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
console.error(`API error: ${response.status}`);
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const result = await response.json();
|
|
32
|
+
return result.valid;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
36
|
+
console.error('Request timed out');
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.error('Network error:', error instanceof Error ? error.message : String(error));
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Submit a waitlist signup.
|
|
46
|
+
*
|
|
47
|
+
* @param email - User's email address
|
|
48
|
+
* @param reason - Optional reason for wanting access
|
|
49
|
+
* @returns Whether submission succeeded
|
|
50
|
+
*/
|
|
51
|
+
export async function submitSignup(email, reason) {
|
|
52
|
+
const url = `${getApiBaseUrl()}/signups`;
|
|
53
|
+
try {
|
|
54
|
+
const controller = new AbortController();
|
|
55
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
56
|
+
const response = await fetch(url, {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
headers: { 'Content-Type': 'application/json' },
|
|
59
|
+
body: JSON.stringify({ email, reason }),
|
|
60
|
+
signal: controller.signal,
|
|
61
|
+
});
|
|
62
|
+
clearTimeout(timeoutId);
|
|
63
|
+
return response.ok;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('Signup error:', error instanceof Error ? error.message : String(error));
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Run the invite code flow.
|
|
72
|
+
*
|
|
73
|
+
* If the user has a valid invite code, returns true and setup continues.
|
|
74
|
+
* If the user doesn't have a code, prompts for waitlist signup and exits.
|
|
75
|
+
*
|
|
76
|
+
* @returns true if user has valid invite code, exits process otherwise
|
|
77
|
+
*/
|
|
78
|
+
export async function runInviteFlow() {
|
|
79
|
+
// Prompt for invite code
|
|
80
|
+
const code = await input({
|
|
81
|
+
message: 'Enter your invite code:',
|
|
82
|
+
validate: (value) => {
|
|
83
|
+
if (!value.trim()) {
|
|
84
|
+
return 'Please enter an invite code';
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
// Validate the code
|
|
90
|
+
console.log('Validating invite code...');
|
|
91
|
+
const valid = await validateInviteCode(code.trim());
|
|
92
|
+
if (valid) {
|
|
93
|
+
console.log('✓ Invite code accepted\n');
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
// Invalid code - offer waitlist signup
|
|
97
|
+
console.log('✗ Invalid invite code\n');
|
|
98
|
+
console.log('Ceetrix is currently invite-only.');
|
|
99
|
+
console.log('Join the waitlist to be notified when access opens up.\n');
|
|
100
|
+
const email = await input({
|
|
101
|
+
message: 'Email address for waitlist:',
|
|
102
|
+
validate: (value) => {
|
|
103
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
104
|
+
if (!emailRegex.test(value.trim())) {
|
|
105
|
+
return 'Please enter a valid email address';
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
const reason = await input({
|
|
111
|
+
message: 'What would you use Ceetrix for? (optional):',
|
|
112
|
+
default: '',
|
|
113
|
+
});
|
|
114
|
+
console.log('Submitting...');
|
|
115
|
+
const submitted = await submitSignup(email.trim(), reason.trim() || undefined);
|
|
116
|
+
if (submitted) {
|
|
117
|
+
console.log('\n✓ You\'re on the waitlist!\n');
|
|
118
|
+
console.log('We\'ll email you when access is available.');
|
|
119
|
+
console.log('Questions? https://ceetrix.com/discord\n');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log('\n✗ Could not submit signup. Please try again later.\n');
|
|
123
|
+
}
|
|
124
|
+
process.exit(0);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=invite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invite.js","sourceRoot":"","sources":["../src/invite.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -21,4 +21,11 @@ export interface CallbackServer {
|
|
|
21
21
|
* @throws Error if no ports are available
|
|
22
22
|
*/
|
|
23
23
|
export declare function startCallbackServer(): Promise<CallbackServer>;
|
|
24
|
+
/**
|
|
25
|
+
* HTML page shown in browser after successful callback.
|
|
26
|
+
* If webAppUrl is provided, includes a JS redirect after a short delay.
|
|
27
|
+
*
|
|
28
|
+
* @param webAppUrl - Optional URL to redirect to after showing success message
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSuccessHtml(webAppUrl?: string): string;
|
|
24
31
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC,CA2BnE"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC,CA2BnE;AAyCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA6CzD"}
|
package/dist/server.js
CHANGED
|
@@ -50,24 +50,40 @@ function handleRequest(req, res, resolveCallback) {
|
|
|
50
50
|
const username = url.searchParams.get('username');
|
|
51
51
|
const reposParam = url.searchParams.get('repos');
|
|
52
52
|
const repos = reposParam ? reposParam.split(',').filter(Boolean) : [];
|
|
53
|
+
const webAppUrl = url.searchParams.get('web_app_url');
|
|
53
54
|
if (!apiKey || !username) {
|
|
54
55
|
res.writeHead(400, { 'Content-Type': 'text/plain' });
|
|
55
56
|
res.end('Missing required parameters');
|
|
56
57
|
return;
|
|
57
58
|
}
|
|
58
|
-
// Return success page
|
|
59
|
+
// Return success page with optional redirect to web app
|
|
59
60
|
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
60
|
-
res.end(getSuccessHtml());
|
|
61
|
+
res.end(getSuccessHtml(webAppUrl || undefined));
|
|
61
62
|
resolveCallback({ apiKey, username, repos });
|
|
62
63
|
}
|
|
64
|
+
/** Delay before redirecting to web app (ms) */
|
|
65
|
+
const REDIRECT_DELAY_MS = 1500;
|
|
63
66
|
/**
|
|
64
67
|
* HTML page shown in browser after successful callback.
|
|
68
|
+
* If webAppUrl is provided, includes a JS redirect after a short delay.
|
|
69
|
+
*
|
|
70
|
+
* @param webAppUrl - Optional URL to redirect to after showing success message
|
|
65
71
|
*/
|
|
66
|
-
function getSuccessHtml() {
|
|
72
|
+
export function getSuccessHtml(webAppUrl) {
|
|
73
|
+
const redirectScript = webAppUrl
|
|
74
|
+
? `<script>setTimeout(function() { window.location.href = '${webAppUrl}'; }, ${REDIRECT_DELAY_MS});</script>`
|
|
75
|
+
: '';
|
|
76
|
+
const message = webAppUrl
|
|
77
|
+
? 'Redirecting to Ceetrix...'
|
|
78
|
+
: 'Return to your terminal.';
|
|
79
|
+
const subMessage = webAppUrl
|
|
80
|
+
? 'You can also return to your terminal.'
|
|
81
|
+
: 'You can close this tab.';
|
|
67
82
|
return `<!DOCTYPE html>
|
|
68
83
|
<html>
|
|
69
84
|
<head>
|
|
70
85
|
<title>Ceetrix Setup</title>
|
|
86
|
+
${redirectScript}
|
|
71
87
|
<style>
|
|
72
88
|
body {
|
|
73
89
|
font-family: system-ui, -apple-system, sans-serif;
|
|
@@ -90,8 +106,8 @@ function getSuccessHtml() {
|
|
|
90
106
|
<body>
|
|
91
107
|
<div class="container">
|
|
92
108
|
<h1>Setup complete!</h1>
|
|
93
|
-
<p
|
|
94
|
-
<p style="color: #999;"
|
|
109
|
+
<p>${message}</p>
|
|
110
|
+
<p style="color: #999;">${subMessage}</p>
|
|
95
111
|
</div>
|
|
96
112
|
</body>
|
|
97
113
|
</html>`;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAA2C,MAAM,MAAM,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB5C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,eAAiD,CAAC;IACtD,MAAM,eAAe,GAAG,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;QAC9D,eAAe,GAAG,OAAO,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;QACxE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI;QACJ,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe;QACtC,KAAK,EAAE,GAAG,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,0EAA0E;YAC1E,wDAAwD;YACxD,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,GAAoB,EACpB,GAAmB,EACnB,eAAiD;IAEjD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|