@epiccontext/mcp 0.1.9 → 0.1.11
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/api/client.d.ts +1 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +84 -10
- package/dist/api/client.js.map +1 -1
- package/dist/cli/commands/link.d.ts.map +1 -1
- package/dist/cli/commands/link.js +30 -12
- package/dist/cli/commands/link.js.map +1 -1
- package/dist/cli/config.d.ts +18 -3
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +57 -5
- package/dist/cli/config.js.map +1 -1
- package/package.json +1 -1
package/dist/api/client.d.ts
CHANGED
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,UAAU,EAEX,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/client.js
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate project ID format - must be UUID or slug, not org/project
|
|
3
|
+
*/
|
|
4
|
+
function validateProjectId(id) {
|
|
5
|
+
if (!id || id.trim() === "") {
|
|
6
|
+
throw new Error("Project ID is empty. Run 'npx @epiccontext/mcp link' to connect to a project.");
|
|
7
|
+
}
|
|
8
|
+
// Check for common mistake: org/project format
|
|
9
|
+
if (id.includes("/")) {
|
|
10
|
+
throw new Error(`Invalid project ID format: "${id}" contains a slash. ` +
|
|
11
|
+
`The project ID should be a UUID (e.g., "550e8400-e29b-41d4-a716-446655440000") ` +
|
|
12
|
+
`or just the project slug (e.g., "my-project"). ` +
|
|
13
|
+
`Run 'npx @epiccontext/mcp link' to fix this.`);
|
|
14
|
+
}
|
|
15
|
+
// Check for URL in ID field
|
|
16
|
+
if (id.includes("http") || id.includes("://")) {
|
|
17
|
+
throw new Error(`Invalid project ID format: "${id}" looks like a URL. ` +
|
|
18
|
+
`The project ID should be a UUID or project slug only. ` +
|
|
19
|
+
`Run 'npx @epiccontext/mcp link' to fix this.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
1
22
|
/**
|
|
2
23
|
* EpicContext API Client
|
|
3
24
|
* Handles all communication with the EpicContext cloud API
|
|
@@ -7,23 +28,75 @@ export class EpicContextClient {
|
|
|
7
28
|
apiKey;
|
|
8
29
|
projectId;
|
|
9
30
|
constructor(config) {
|
|
31
|
+
// Validate project ID format before proceeding
|
|
32
|
+
validateProjectId(config.projectId);
|
|
10
33
|
this.baseUrl = config.baseUrl.replace(/\/$/, ""); // Remove trailing slash
|
|
11
34
|
this.apiKey = config.apiKey;
|
|
12
35
|
this.projectId = config.projectId;
|
|
13
36
|
}
|
|
14
37
|
async request(endpoint, options = {}) {
|
|
15
38
|
const url = `${this.baseUrl}/api/v1/projects/${this.projectId}${endpoint}`;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
39
|
+
let response;
|
|
40
|
+
try {
|
|
41
|
+
response = await fetch(url, {
|
|
42
|
+
...options,
|
|
43
|
+
headers: {
|
|
44
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
...options.headers,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (fetchError) {
|
|
51
|
+
// Network error - provide helpful message
|
|
52
|
+
const networkError = fetchError;
|
|
53
|
+
throw new Error(`Network error: Could not connect to ${this.baseUrl}. ` +
|
|
54
|
+
`${networkError.message || "Check your internet connection and verify the URL is correct."}`);
|
|
55
|
+
}
|
|
24
56
|
if (!response.ok) {
|
|
25
|
-
|
|
26
|
-
|
|
57
|
+
// Try to parse error response for detailed information
|
|
58
|
+
let errorMessage = `HTTP ${response.status}`;
|
|
59
|
+
let details = "";
|
|
60
|
+
let hint = "";
|
|
61
|
+
try {
|
|
62
|
+
const errorData = await response.json();
|
|
63
|
+
errorMessage = errorData.error || errorMessage;
|
|
64
|
+
details = errorData.details || "";
|
|
65
|
+
hint = errorData.hint || "";
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Response wasn't JSON
|
|
69
|
+
const textBody = await response.text().catch(() => "");
|
|
70
|
+
if (textBody) {
|
|
71
|
+
details = textBody.substring(0, 200);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Build a helpful error message
|
|
75
|
+
let fullError = errorMessage;
|
|
76
|
+
if (details) {
|
|
77
|
+
fullError += ` - ${details}`;
|
|
78
|
+
}
|
|
79
|
+
// Add status-specific hints if not provided by server
|
|
80
|
+
if (!hint) {
|
|
81
|
+
switch (response.status) {
|
|
82
|
+
case 401:
|
|
83
|
+
hint = "Check that your API key is valid and not expired";
|
|
84
|
+
break;
|
|
85
|
+
case 403:
|
|
86
|
+
hint = "Your API key may not have permission for this action, or the project may not exist";
|
|
87
|
+
break;
|
|
88
|
+
case 404:
|
|
89
|
+
hint = "The project was not found. Verify the project URL/ID is correct";
|
|
90
|
+
break;
|
|
91
|
+
case 500:
|
|
92
|
+
hint = "Server error. Please try again or check the project exists in the web app";
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (hint) {
|
|
97
|
+
fullError += `. Hint: ${hint}`;
|
|
98
|
+
}
|
|
99
|
+
throw new Error(fullError);
|
|
27
100
|
}
|
|
28
101
|
// Handle different response types
|
|
29
102
|
const contentType = response.headers.get("content-type");
|
|
@@ -139,6 +212,7 @@ export class EpicContextClient {
|
|
|
139
212
|
projectId: this.projectId,
|
|
140
213
|
projectName: "",
|
|
141
214
|
projectSlug: "",
|
|
215
|
+
error: error instanceof Error ? error.message : "Unknown connection error",
|
|
142
216
|
};
|
|
143
217
|
}
|
|
144
218
|
}
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,SAAS,CAAS;IAE1B,YAAY,MAA8D;QACxE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB;QAC1E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,QAAgB,EAChB,UAAuB,EAAE;QAEzB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,oBAAoB,IAAI,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;QAE3E,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAkDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAkDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+IrE"}
|
|
@@ -42,6 +42,8 @@ function parseProjectUrl(input) {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
export async function linkCommand(options) {
|
|
45
|
+
// Check if running non-interactively (both url and key provided)
|
|
46
|
+
const isNonInteractive = Boolean(options.url && options.key);
|
|
45
47
|
console.log(chalk.blue("Link to EpicContext project"));
|
|
46
48
|
console.log("");
|
|
47
49
|
// Check for existing config
|
|
@@ -51,18 +53,25 @@ export async function linkCommand(options) {
|
|
|
51
53
|
console.log(` Project: ${existingConfig.project.name || existingConfig.project.id}`);
|
|
52
54
|
console.log(` URL: ${existingConfig.project.url}`);
|
|
53
55
|
console.log("");
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
56
|
+
// Skip confirmation prompt if running non-interactively
|
|
57
|
+
if (!isNonInteractive) {
|
|
58
|
+
const { confirmRelink } = await inquirer.prompt([
|
|
59
|
+
{
|
|
60
|
+
type: "confirm",
|
|
61
|
+
name: "confirmRelink",
|
|
62
|
+
message: "Do you want to link to a different project?",
|
|
63
|
+
default: false,
|
|
64
|
+
},
|
|
65
|
+
]);
|
|
66
|
+
if (!confirmRelink) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
console.log("");
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(chalk.gray("Relinking to new project (non-interactive mode)..."));
|
|
73
|
+
console.log("");
|
|
64
74
|
}
|
|
65
|
-
console.log("");
|
|
66
75
|
}
|
|
67
76
|
// Get project URL
|
|
68
77
|
let projectUrl = options.url;
|
|
@@ -109,7 +118,16 @@ export async function linkCommand(options) {
|
|
|
109
118
|
if (!connection.connected) {
|
|
110
119
|
spinner.fail("Failed to connect");
|
|
111
120
|
console.error(chalk.red("Could not connect to EpicContext."));
|
|
112
|
-
console.error("
|
|
121
|
+
console.error("");
|
|
122
|
+
if (connection.error) {
|
|
123
|
+
console.error(chalk.yellow("Error details:"), connection.error);
|
|
124
|
+
console.error("");
|
|
125
|
+
}
|
|
126
|
+
console.error(chalk.gray("Troubleshooting:"));
|
|
127
|
+
console.error(chalk.gray(" 1. Verify the project exists at the URL you provided"));
|
|
128
|
+
console.error(chalk.gray(" 2. Check that your API key is valid and has not expired"));
|
|
129
|
+
console.error(chalk.gray(" 3. Ensure your API key has access to this organization/project"));
|
|
130
|
+
console.error(chalk.gray(` 4. Try opening ${parsed.baseUrl}/${parsed.orgSlug}/${parsed.projectSlug} in your browser`));
|
|
113
131
|
process.exit(1);
|
|
114
132
|
}
|
|
115
133
|
spinner.succeed("Connection verified!");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,KAAa;IAMpC,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE1D,2BAA2B;IAC3B,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE;gBACvC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,0CAA0C;gBACnE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,WAAW;YACtB,OAAO;YACP,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,4BAA4B;IAC5B,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IACpC,IAAI,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,cAAc,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,UAAU,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,KAAa;IAMpC,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE1D,2BAA2B;IAC3B,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE;gBACvC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,0CAA0C;gBACnE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,WAAW;YACtB,OAAO;YACP,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,4BAA4B;IAC5B,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IACpC,IAAI,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,cAAc,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,UAAU,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,wDAAwD;QACxD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC9C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,6CAA6C;oBACtD,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,2CAA2C;gBACpD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAC1B,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAyB;aACvD;SACF,CAAC,CAAC;QACH,UAAU,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,UAAW,CAAC,CAAC;IAE5C,cAAc;IACd,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IACzB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,+BAA+B;gBACxC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBAAE,OAAO,qBAAqB,CAAC;oBAChD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;wBAAE,OAAO,kCAAkC,CAAC;oBACzE,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAO;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAEjD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;YAC9F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,kBAAkB,CAAC,CAAC,CAAC;YACxH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAExC,cAAc;QACd,UAAU,CAAC;YACT,OAAO,EAAE;gBACP,EAAE,EAAE,UAAU,CAAC,SAAS;gBACxB,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE;gBAChE,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,IAAI,EAAE,UAAU,CAAC,WAAW;aAC7B;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAO;aAChB;SACF,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,cAAc,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,UAAU,CAAC,SAAS;YACxB,IAAI,EAAE,UAAU,CAAC,WAAW;YAC5B,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE;YAChE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,iCAAiC,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,0BAA0B,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/cli/config.d.ts
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
import Conf from "conf";
|
|
2
2
|
import type { EpicContextConfig } from "../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Validate that a project ID is in the correct format (UUID or slug, NOT org/project)
|
|
5
|
+
*/
|
|
6
|
+
export declare function isValidProjectId(id: string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Check if project ID looks like it was manually edited incorrectly
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectInvalidProjectIdFormat(id: string): string | null;
|
|
3
11
|
/**
|
|
4
12
|
* Find the config file in current or parent directories
|
|
5
13
|
*/
|
|
6
14
|
export declare function findConfigPath(startDir?: string): string | null;
|
|
7
15
|
/**
|
|
8
|
-
* Load configuration from .
|
|
16
|
+
* Load configuration from .epicontext file
|
|
9
17
|
*/
|
|
10
18
|
export declare function loadConfig(configPath?: string): EpicContextConfig | null;
|
|
11
19
|
/**
|
|
12
|
-
*
|
|
20
|
+
* Load and validate configuration, checking for common mistakes
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadAndValidateConfig(configPath?: string): {
|
|
23
|
+
config: EpicContextConfig | null;
|
|
24
|
+
error: string | null;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Save configuration to .epicontext file
|
|
13
28
|
*/
|
|
14
29
|
export declare function saveConfig(config: Partial<EpicContextConfig>, configPath?: string): void;
|
|
15
30
|
/**
|
|
16
|
-
* Get the project root directory (where .
|
|
31
|
+
* Get the project root directory (where .epicontext is located)
|
|
17
32
|
*/
|
|
18
33
|
export declare function getProjectRoot(): string | null;
|
|
19
34
|
/**
|
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI3D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAYpD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CActE;AA4BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAY9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAexE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG;IAC1D,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAcA;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAoBN;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAM9C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAS9C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;oBACP,MAAM;oBACN,KAAK,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;EAOF,CAAC"}
|
package/dist/cli/config.js
CHANGED
|
@@ -1,7 +1,39 @@
|
|
|
1
1
|
import Conf from "conf";
|
|
2
2
|
import * as fs from "fs";
|
|
3
3
|
import * as path from "path";
|
|
4
|
-
const CONFIG_FILENAME = ".
|
|
4
|
+
const CONFIG_FILENAME = ".epicontext";
|
|
5
|
+
/**
|
|
6
|
+
* Validate that a project ID is in the correct format (UUID or slug, NOT org/project)
|
|
7
|
+
*/
|
|
8
|
+
export function isValidProjectId(id) {
|
|
9
|
+
if (!id || id.trim() === "")
|
|
10
|
+
return false;
|
|
11
|
+
// UUID format
|
|
12
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
13
|
+
if (uuidRegex.test(id))
|
|
14
|
+
return true;
|
|
15
|
+
// Simple slug format (no slashes, no special chars except hyphen/underscore)
|
|
16
|
+
const slugRegex = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
|
|
17
|
+
if (slugRegex.test(id))
|
|
18
|
+
return true;
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if project ID looks like it was manually edited incorrectly
|
|
23
|
+
*/
|
|
24
|
+
export function detectInvalidProjectIdFormat(id) {
|
|
25
|
+
if (!id)
|
|
26
|
+
return "Project ID is empty. Run 'npx @epiccontext/mcp link' to connect to a project.";
|
|
27
|
+
// Common mistake: org/project format
|
|
28
|
+
if (id.includes("/")) {
|
|
29
|
+
return `Project ID "${id}" contains a slash. The ID should be a UUID or project slug only. Run 'npx @epiccontext/mcp link' to fix this.`;
|
|
30
|
+
}
|
|
31
|
+
// Contains URL fragments
|
|
32
|
+
if (id.includes("http") || id.includes("://")) {
|
|
33
|
+
return `Project ID "${id}" looks like a URL. The ID should be a UUID or project slug only. Run 'npx @epiccontext/mcp link' to fix this.`;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
5
37
|
/**
|
|
6
38
|
* Default configuration
|
|
7
39
|
*/
|
|
@@ -42,7 +74,7 @@ export function findConfigPath(startDir = process.cwd()) {
|
|
|
42
74
|
return null;
|
|
43
75
|
}
|
|
44
76
|
/**
|
|
45
|
-
* Load configuration from .
|
|
77
|
+
* Load configuration from .epicontext file
|
|
46
78
|
*/
|
|
47
79
|
export function loadConfig(configPath) {
|
|
48
80
|
const filePath = configPath || findConfigPath();
|
|
@@ -60,7 +92,22 @@ export function loadConfig(configPath) {
|
|
|
60
92
|
}
|
|
61
93
|
}
|
|
62
94
|
/**
|
|
63
|
-
*
|
|
95
|
+
* Load and validate configuration, checking for common mistakes
|
|
96
|
+
*/
|
|
97
|
+
export function loadAndValidateConfig(configPath) {
|
|
98
|
+
const config = loadConfig(configPath);
|
|
99
|
+
if (!config) {
|
|
100
|
+
return { config: null, error: null };
|
|
101
|
+
}
|
|
102
|
+
// Check for invalid project ID format
|
|
103
|
+
const idError = detectInvalidProjectIdFormat(config.project.id);
|
|
104
|
+
if (idError) {
|
|
105
|
+
return { config, error: idError };
|
|
106
|
+
}
|
|
107
|
+
return { config, error: null };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Save configuration to .epicontext file
|
|
64
111
|
*/
|
|
65
112
|
export function saveConfig(config, configPath) {
|
|
66
113
|
const filePath = configPath || path.join(process.cwd(), CONFIG_FILENAME);
|
|
@@ -73,10 +120,15 @@ export function saveConfig(config, configPath) {
|
|
|
73
120
|
sync: { ...existingConfig.sync, ...config.sync },
|
|
74
121
|
watch: { ...existingConfig.watch, ...config.watch },
|
|
75
122
|
};
|
|
76
|
-
|
|
123
|
+
// Add a comment header to warn AI tools not to edit the ID manually
|
|
124
|
+
const configWithWarning = {
|
|
125
|
+
_WARNING: "DO NOT manually edit 'project.id'. Use 'npx @epiccontext/mcp link' to configure.",
|
|
126
|
+
...mergedConfig,
|
|
127
|
+
};
|
|
128
|
+
fs.writeFileSync(filePath, JSON.stringify(configWithWarning, null, 2), "utf-8");
|
|
77
129
|
}
|
|
78
130
|
/**
|
|
79
|
-
* Get the project root directory (where .
|
|
131
|
+
* Get the project root directory (where .epicontext is located)
|
|
80
132
|
*/
|
|
81
133
|
export function getProjectRoot() {
|
|
82
134
|
const configPath = findConfigPath();
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,MAAM,eAAe,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|