@everstateai/mcp 1.3.2 → 1.3.4
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/README.md +42 -6
- package/dist/commands/api-client.d.ts +35 -0
- package/dist/commands/api-client.d.ts.map +1 -0
- package/dist/commands/api-client.js +138 -0
- package/dist/commands/api-client.js.map +1 -0
- package/dist/commands/done.d.ts +7 -0
- package/dist/commands/done.d.ts.map +1 -0
- package/dist/commands/done.js +57 -0
- package/dist/commands/done.js.map +1 -0
- package/dist/commands/recall.d.ts +7 -0
- package/dist/commands/recall.d.ts.map +1 -0
- package/dist/commands/recall.js +36 -0
- package/dist/commands/recall.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +33 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +34 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -5
- package/dist/index.js.map +1 -1
- package/dist/setup/auto-update.d.ts +20 -0
- package/dist/setup/auto-update.d.ts.map +1 -0
- package/dist/setup/auto-update.js +295 -0
- package/dist/setup/auto-update.js.map +1 -0
- package/dist/setup/commands/doctor.d.ts +15 -0
- package/dist/setup/commands/doctor.d.ts.map +1 -0
- package/dist/setup/commands/doctor.js +264 -0
- package/dist/setup/commands/doctor.js.map +1 -0
- package/dist/setup/commands/repair.d.ts +14 -0
- package/dist/setup/commands/repair.d.ts.map +1 -0
- package/dist/setup/commands/repair.js +252 -0
- package/dist/setup/commands/repair.js.map +1 -0
- package/dist/setup/environments.d.ts +48 -0
- package/dist/setup/environments.d.ts.map +1 -0
- package/dist/setup/environments.js +222 -0
- package/dist/setup/environments.js.map +1 -0
- package/dist/setup/hooks/templates.d.ts +30 -0
- package/dist/setup/hooks/templates.d.ts.map +1 -0
- package/dist/setup/hooks/templates.js +253 -0
- package/dist/setup/hooks/templates.js.map +1 -0
- package/dist/setup/types.d.ts +122 -0
- package/dist/setup/types.d.ts.map +1 -0
- package/dist/setup/types.js +66 -0
- package/dist/setup/types.js.map +1 -0
- package/dist/setup/validators/api-key.d.ts +8 -0
- package/dist/setup/validators/api-key.d.ts.map +1 -0
- package/dist/setup/validators/api-key.js +233 -0
- package/dist/setup/validators/api-key.js.map +1 -0
- package/dist/setup/validators/connectivity.d.ts +8 -0
- package/dist/setup/validators/connectivity.d.ts.map +1 -0
- package/dist/setup/validators/connectivity.js +150 -0
- package/dist/setup/validators/connectivity.js.map +1 -0
- package/dist/setup/validators/hooks.d.ts +8 -0
- package/dist/setup/validators/hooks.d.ts.map +1 -0
- package/dist/setup/validators/hooks.js +431 -0
- package/dist/setup/validators/hooks.js.map +1 -0
- package/dist/setup/validators/index.d.ts +18 -0
- package/dist/setup/validators/index.d.ts.map +1 -0
- package/dist/setup/validators/index.js +123 -0
- package/dist/setup/validators/index.js.map +1 -0
- package/dist/setup/validators/mcp-config.d.ts +9 -0
- package/dist/setup/validators/mcp-config.d.ts.map +1 -0
- package/dist/setup/validators/mcp-config.js +302 -0
- package/dist/setup/validators/mcp-config.js.map +1 -0
- package/dist/setup/validators/project.d.ts +8 -0
- package/dist/setup/validators/project.d.ts.map +1 -0
- package/dist/setup/validators/project.js +202 -0
- package/dist/setup/validators/project.js.map +1 -0
- package/dist/setup/version.d.ts +58 -0
- package/dist/setup/version.d.ts.map +1 -0
- package/dist/setup/version.js +262 -0
- package/dist/setup/version.js.map +1 -0
- package/dist/setup.d.ts +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +397 -214
- package/dist/setup.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/api-client.ts +117 -0
- package/src/commands/done.ts +63 -0
- package/src/commands/recall.ts +40 -0
- package/src/commands/status.ts +36 -0
- package/src/commands/sync.ts +37 -0
- package/src/index.ts +64 -5
- package/src/setup/auto-update.ts +328 -0
- package/src/setup/commands/doctor.ts +266 -0
- package/src/setup/commands/repair.ts +260 -0
- package/src/setup/environments.ts +225 -0
- package/src/setup/hooks/templates.ts +255 -0
- package/src/setup/types.ts +207 -0
- package/src/setup/validators/api-key.ts +218 -0
- package/src/setup/validators/connectivity.ts +176 -0
- package/src/setup/validators/hooks.ts +447 -0
- package/src/setup/validators/index.ts +137 -0
- package/src/setup/validators/mcp-config.ts +288 -0
- package/src/setup/validators/project.ts +179 -0
- package/src/setup/version.ts +267 -0
- package/src/setup.ts +471 -232
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Configuration Validator
|
|
4
|
+
*
|
|
5
|
+
* Validates that all detected AI tools have correct MCP configuration.
|
|
6
|
+
* Uses the ToolEnvironment registry for multi-tool support.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.mcpConfigValidator = void 0;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const types_js_1 = require("../types.js");
|
|
46
|
+
const environments_js_1 = require("../environments.js");
|
|
47
|
+
exports.mcpConfigValidator = {
|
|
48
|
+
name: 'MCP Configuration',
|
|
49
|
+
async validate(context) {
|
|
50
|
+
const results = [];
|
|
51
|
+
for (const env of environments_js_1.TOOL_ENVIRONMENTS) {
|
|
52
|
+
const toolResults = await validateToolConfig(env);
|
|
53
|
+
results.push(...toolResults);
|
|
54
|
+
}
|
|
55
|
+
return results;
|
|
56
|
+
},
|
|
57
|
+
async repair(result, context) {
|
|
58
|
+
if (result.repairAction?.type === 'install' || result.repairAction?.type === 'configure') {
|
|
59
|
+
const toolId = result.details?.toolId;
|
|
60
|
+
if (toolId) {
|
|
61
|
+
const env = environments_js_1.TOOL_ENVIRONMENTS.find((t) => t.id === toolId);
|
|
62
|
+
if (env) {
|
|
63
|
+
return await repairToolConfig(env);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Fallback: try to repair by check name (backwards compat)
|
|
67
|
+
if (result.check === 'Claude Code config' || result.check === 'Everstate MCP entry') {
|
|
68
|
+
const claudeCode = environments_js_1.TOOL_ENVIRONMENTS.find((t) => t.id === 'claude-code');
|
|
69
|
+
if (claudeCode)
|
|
70
|
+
return await repairToolConfig(claudeCode);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Validate a single tool's MCP configuration.
|
|
78
|
+
*/
|
|
79
|
+
async function validateToolConfig(env) {
|
|
80
|
+
const results = [];
|
|
81
|
+
const configPath = env.getConfigPath();
|
|
82
|
+
// Skip tools without a config path (e.g. Linux Claude Desktop)
|
|
83
|
+
if (!configPath)
|
|
84
|
+
return results;
|
|
85
|
+
// If tool isn't installed, just note it
|
|
86
|
+
if (!env.isInstalled()) {
|
|
87
|
+
results.push({
|
|
88
|
+
component: 'MCP Config',
|
|
89
|
+
check: `${env.name}`,
|
|
90
|
+
status: 'warn',
|
|
91
|
+
message: `${env.name} not installed`,
|
|
92
|
+
details: { toolId: env.id, path: configPath },
|
|
93
|
+
});
|
|
94
|
+
return results;
|
|
95
|
+
}
|
|
96
|
+
// Check 1: Config file exists
|
|
97
|
+
if (!fs.existsSync(configPath)) {
|
|
98
|
+
results.push({
|
|
99
|
+
component: 'MCP Config',
|
|
100
|
+
check: `${env.name} config`,
|
|
101
|
+
status: 'fail',
|
|
102
|
+
message: `Config not found at ${configPath}`,
|
|
103
|
+
details: { toolId: env.id },
|
|
104
|
+
repairAction: {
|
|
105
|
+
type: 'install',
|
|
106
|
+
description: `Create ${env.name} configuration`,
|
|
107
|
+
automatic: true,
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
return results;
|
|
111
|
+
}
|
|
112
|
+
// Check 2: Valid JSON
|
|
113
|
+
let config;
|
|
114
|
+
try {
|
|
115
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
116
|
+
config = JSON.parse(content);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
results.push({
|
|
120
|
+
component: 'MCP Config',
|
|
121
|
+
check: `${env.name} config`,
|
|
122
|
+
status: 'fail',
|
|
123
|
+
message: `Invalid JSON: ${err instanceof Error ? err.message : 'Parse error'}`,
|
|
124
|
+
details: { toolId: env.id },
|
|
125
|
+
repairAction: {
|
|
126
|
+
type: 'configure',
|
|
127
|
+
description: 'Fix JSON syntax or restore backup',
|
|
128
|
+
automatic: false,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
return results;
|
|
132
|
+
}
|
|
133
|
+
results.push({
|
|
134
|
+
component: 'MCP Config',
|
|
135
|
+
check: `${env.name} config`,
|
|
136
|
+
status: 'pass',
|
|
137
|
+
message: `Valid at ${configPath}`,
|
|
138
|
+
details: { toolId: env.id },
|
|
139
|
+
});
|
|
140
|
+
// Check 3: mcpServers key exists
|
|
141
|
+
const mcpServers = config[env.mcpServersKey];
|
|
142
|
+
if (!mcpServers) {
|
|
143
|
+
results.push({
|
|
144
|
+
component: 'MCP Config',
|
|
145
|
+
check: `${env.name} mcpServers`,
|
|
146
|
+
status: 'fail',
|
|
147
|
+
message: `No ${env.mcpServersKey} section in config`,
|
|
148
|
+
details: { toolId: env.id },
|
|
149
|
+
repairAction: {
|
|
150
|
+
type: 'configure',
|
|
151
|
+
description: `Add ${env.mcpServersKey} configuration`,
|
|
152
|
+
automatic: true,
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
return results;
|
|
156
|
+
}
|
|
157
|
+
// Check 4: Everstate entry exists
|
|
158
|
+
const everstateConfig = mcpServers.everstate;
|
|
159
|
+
if (!everstateConfig) {
|
|
160
|
+
results.push({
|
|
161
|
+
component: 'MCP Config',
|
|
162
|
+
check: `${env.name} Everstate entry`,
|
|
163
|
+
status: 'fail',
|
|
164
|
+
message: `Everstate not configured in ${env.name}`,
|
|
165
|
+
details: { toolId: env.id },
|
|
166
|
+
repairAction: {
|
|
167
|
+
type: 'configure',
|
|
168
|
+
description: `Add Everstate MCP to ${env.name}`,
|
|
169
|
+
automatic: true,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
return results;
|
|
173
|
+
}
|
|
174
|
+
results.push({
|
|
175
|
+
component: 'MCP Config',
|
|
176
|
+
check: `${env.name} Everstate entry`,
|
|
177
|
+
status: 'pass',
|
|
178
|
+
message: `Everstate configured in ${env.name}`,
|
|
179
|
+
details: { toolId: env.id },
|
|
180
|
+
});
|
|
181
|
+
// Check 5: Command is valid
|
|
182
|
+
const command = everstateConfig.command;
|
|
183
|
+
const args = everstateConfig.args;
|
|
184
|
+
if (command === 'npx' && args?.includes('@everstateai/mcp')) {
|
|
185
|
+
results.push({
|
|
186
|
+
component: 'MCP Config',
|
|
187
|
+
check: `${env.name} MCP command`,
|
|
188
|
+
status: 'pass',
|
|
189
|
+
message: 'Using npx @everstateai/mcp (recommended)',
|
|
190
|
+
details: { toolId: env.id },
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
else if (command === 'node') {
|
|
194
|
+
results.push({
|
|
195
|
+
component: 'MCP Config',
|
|
196
|
+
check: `${env.name} MCP command`,
|
|
197
|
+
status: 'warn',
|
|
198
|
+
message: 'Using local node path - consider using npx for auto-updates',
|
|
199
|
+
details: { toolId: env.id, command, args },
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
results.push({
|
|
204
|
+
component: 'MCP Config',
|
|
205
|
+
check: `${env.name} MCP command`,
|
|
206
|
+
status: 'warn',
|
|
207
|
+
message: `Non-standard command: ${command}`,
|
|
208
|
+
details: { toolId: env.id, command, args },
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
// Check 6: API key (only for Claude Code which is the primary tool)
|
|
212
|
+
if (env.id === 'claude-code') {
|
|
213
|
+
const envVars = everstateConfig.env;
|
|
214
|
+
if (!envVars?.EVERSTATE_API_KEY) {
|
|
215
|
+
const apiKeyPath = `${(0, types_js_1.getEverstateDir)()}/api-key`;
|
|
216
|
+
if (!fs.existsSync(apiKeyPath)) {
|
|
217
|
+
results.push({
|
|
218
|
+
component: 'MCP Config',
|
|
219
|
+
check: 'API key configuration',
|
|
220
|
+
status: 'fail',
|
|
221
|
+
message: 'No API key in MCP config or key file',
|
|
222
|
+
details: { toolId: env.id },
|
|
223
|
+
repairAction: {
|
|
224
|
+
type: 'configure',
|
|
225
|
+
description: 'Configure API key',
|
|
226
|
+
automatic: false,
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
results.push({
|
|
232
|
+
component: 'MCP Config',
|
|
233
|
+
check: 'API key configuration',
|
|
234
|
+
status: 'pass',
|
|
235
|
+
message: 'Using API key from file (hooks will read it)',
|
|
236
|
+
details: { toolId: env.id },
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
results.push({
|
|
242
|
+
component: 'MCP Config',
|
|
243
|
+
check: 'API key configuration',
|
|
244
|
+
status: 'pass',
|
|
245
|
+
message: 'API key configured in MCP env',
|
|
246
|
+
details: { toolId: env.id },
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return results;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Repair a tool's MCP config by adding/fixing the Everstate entry.
|
|
254
|
+
*/
|
|
255
|
+
async function repairToolConfig(env) {
|
|
256
|
+
const configPath = env.getConfigPath();
|
|
257
|
+
if (!configPath)
|
|
258
|
+
return false;
|
|
259
|
+
try {
|
|
260
|
+
let config = {};
|
|
261
|
+
if (fs.existsSync(configPath)) {
|
|
262
|
+
try {
|
|
263
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
264
|
+
config = JSON.parse(content);
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// Invalid JSON - start fresh
|
|
268
|
+
config = {};
|
|
269
|
+
}
|
|
270
|
+
// Backup existing
|
|
271
|
+
fs.copyFileSync(configPath, `${configPath}.backup`);
|
|
272
|
+
}
|
|
273
|
+
if (!config[env.mcpServersKey]) {
|
|
274
|
+
config[env.mcpServersKey] = {};
|
|
275
|
+
}
|
|
276
|
+
const mcpServers = config[env.mcpServersKey];
|
|
277
|
+
const everstateEntry = {
|
|
278
|
+
command: 'npx',
|
|
279
|
+
args: ['-y', '@everstateai/mcp'],
|
|
280
|
+
env: {},
|
|
281
|
+
};
|
|
282
|
+
// Add API key if available
|
|
283
|
+
const apiKeyPath = `${(0, types_js_1.getEverstateDir)()}/api-key`;
|
|
284
|
+
if (fs.existsSync(apiKeyPath)) {
|
|
285
|
+
const apiKey = fs.readFileSync(apiKeyPath, 'utf8').trim();
|
|
286
|
+
if (apiKey) {
|
|
287
|
+
everstateEntry.env.EVERSTATE_API_KEY = apiKey;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
mcpServers.everstate = everstateEntry;
|
|
291
|
+
const dir = path.dirname(configPath);
|
|
292
|
+
if (!fs.existsSync(dir)) {
|
|
293
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
294
|
+
}
|
|
295
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=mcp-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/setup/validators/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/setup/validators/project.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,SAAS,EAIV,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,gBAAgB,EAAE,SAmK9B,CAAC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Project Validator
|
|
4
|
+
*
|
|
5
|
+
* Validates project-level configuration (.everstate.json).
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.projectValidator = void 0;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const types_js_1 = require("../types.js");
|
|
45
|
+
exports.projectValidator = {
|
|
46
|
+
name: 'Project',
|
|
47
|
+
async validate(context) {
|
|
48
|
+
const results = [];
|
|
49
|
+
if (!context.projectDir) {
|
|
50
|
+
results.push({
|
|
51
|
+
component: 'Project',
|
|
52
|
+
check: 'Project directory',
|
|
53
|
+
status: 'warn',
|
|
54
|
+
message: 'No project directory specified (running globally)',
|
|
55
|
+
});
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
58
|
+
const configPath = path.join(context.projectDir, '.everstate.json');
|
|
59
|
+
// Check 1: Config file exists
|
|
60
|
+
if (!fs.existsSync(configPath)) {
|
|
61
|
+
results.push({
|
|
62
|
+
component: 'Project',
|
|
63
|
+
check: '.everstate.json exists',
|
|
64
|
+
status: 'fail',
|
|
65
|
+
message: `Not found at ${configPath}`,
|
|
66
|
+
repairAction: {
|
|
67
|
+
type: 'install',
|
|
68
|
+
description: 'Initialize project with everstate',
|
|
69
|
+
automatic: false, // Requires user input for project name
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
return results;
|
|
73
|
+
}
|
|
74
|
+
results.push({
|
|
75
|
+
component: 'Project',
|
|
76
|
+
check: '.everstate.json exists',
|
|
77
|
+
status: 'pass',
|
|
78
|
+
message: `Found at ${configPath}`,
|
|
79
|
+
});
|
|
80
|
+
// Check 2: Valid JSON
|
|
81
|
+
let config;
|
|
82
|
+
try {
|
|
83
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
84
|
+
config = JSON.parse(content);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
results.push({
|
|
88
|
+
component: 'Project',
|
|
89
|
+
check: '.everstate.json valid',
|
|
90
|
+
status: 'fail',
|
|
91
|
+
message: 'Invalid JSON syntax',
|
|
92
|
+
details: { error: String(error) },
|
|
93
|
+
repairAction: {
|
|
94
|
+
type: 'configure',
|
|
95
|
+
description: 'Fix JSON syntax in .everstate.json',
|
|
96
|
+
automatic: false,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
return results;
|
|
100
|
+
}
|
|
101
|
+
results.push({
|
|
102
|
+
component: 'Project',
|
|
103
|
+
check: '.everstate.json valid',
|
|
104
|
+
status: 'pass',
|
|
105
|
+
message: 'Valid JSON',
|
|
106
|
+
});
|
|
107
|
+
// Check 3: Has projectId
|
|
108
|
+
const projectId = config.projectId;
|
|
109
|
+
if (!projectId) {
|
|
110
|
+
results.push({
|
|
111
|
+
component: 'Project',
|
|
112
|
+
check: 'Project ID',
|
|
113
|
+
status: 'fail',
|
|
114
|
+
message: 'Missing projectId field',
|
|
115
|
+
repairAction: {
|
|
116
|
+
type: 'configure',
|
|
117
|
+
description: 'Add projectId to .everstate.json',
|
|
118
|
+
automatic: false,
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
return results;
|
|
122
|
+
}
|
|
123
|
+
// Check 4: Valid projectId format
|
|
124
|
+
if (!projectId.startsWith('proj_')) {
|
|
125
|
+
results.push({
|
|
126
|
+
component: 'Project',
|
|
127
|
+
check: 'Project ID format',
|
|
128
|
+
status: 'warn',
|
|
129
|
+
message: `Unusual format: ${projectId} (expected proj_...)`,
|
|
130
|
+
details: { projectId },
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
results.push({
|
|
135
|
+
component: 'Project',
|
|
136
|
+
check: 'Project ID format',
|
|
137
|
+
status: 'pass',
|
|
138
|
+
message: `Valid format: ${projectId.substring(0, 20)}...`,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
// Check 5: Verify project exists on server (if not skipping network)
|
|
142
|
+
if (!context.skipNetwork && context.apiKey) {
|
|
143
|
+
try {
|
|
144
|
+
const response = await fetch(`${types_js_1.EVERSTATE_API_URL}/api/project/${projectId}`, {
|
|
145
|
+
headers: {
|
|
146
|
+
Authorization: `Bearer ${context.apiKey}`,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
if (response.ok) {
|
|
150
|
+
const data = (await response.json());
|
|
151
|
+
results.push({
|
|
152
|
+
component: 'Project',
|
|
153
|
+
check: 'Project exists on server',
|
|
154
|
+
status: 'pass',
|
|
155
|
+
message: `Project "${data.name || projectId}" found`,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
else if (response.status === 404) {
|
|
159
|
+
results.push({
|
|
160
|
+
component: 'Project',
|
|
161
|
+
check: 'Project exists on server',
|
|
162
|
+
status: 'warn',
|
|
163
|
+
message: 'Project not found on server (may need to sync)',
|
|
164
|
+
details: { projectId },
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
else if (response.status === 401) {
|
|
168
|
+
results.push({
|
|
169
|
+
component: 'Project',
|
|
170
|
+
check: 'Project exists on server',
|
|
171
|
+
status: 'warn',
|
|
172
|
+
message: 'Cannot verify - API key may not have access',
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
results.push({
|
|
177
|
+
component: 'Project',
|
|
178
|
+
check: 'Project exists on server',
|
|
179
|
+
status: 'warn',
|
|
180
|
+
message: `Unexpected response: ${response.status}`,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
results.push({
|
|
186
|
+
component: 'Project',
|
|
187
|
+
check: 'Project exists on server',
|
|
188
|
+
status: 'warn',
|
|
189
|
+
message: 'Could not verify (network error)',
|
|
190
|
+
details: { error: String(error) },
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return results;
|
|
195
|
+
},
|
|
196
|
+
async repair(result, context) {
|
|
197
|
+
// Project repairs typically require user input
|
|
198
|
+
// The setup command handles project initialization
|
|
199
|
+
return false;
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/setup/validators/project.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,0CAKqB;AAER,QAAA,gBAAgB,GAAc;IACzC,IAAI,EAAE,SAAS;IAEf,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mDAAmD;aAC7D,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEpE,8BAA8B;QAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,wBAAwB;gBAC/B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,gBAAgB,UAAU,EAAE;gBACrC,YAAY,EAAE;oBACZ,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,mCAAmC;oBAChD,SAAS,EAAE,KAAK,EAAE,uCAAuC;iBAC1D;aACF,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY,UAAU,EAAE;SAClC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,uBAAuB;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;gBACjC,YAAY,EAAE;oBACZ,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,oCAAoC;oBACjD,SAAS,EAAE,KAAK;iBACjB;aACF,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,uBAAuB;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,SAA+B,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,yBAAyB;gBAClC,YAAY,EAAE;oBACZ,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,kCAAkC;oBAC/C,SAAS,EAAE,KAAK;iBACjB;aACF,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mBAAmB,SAAS,sBAAsB;gBAC3D,OAAO,EAAE,EAAE,SAAS,EAAE;aACvB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,iBAAiB,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;aAC1D,CAAC,CAAC;QACL,CAAC;QAED,qEAAqE;QACrE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,4BAAiB,gBAAgB,SAAS,EAAE,EAAE;oBAC5E,OAAO,EAAE;wBACP,aAAa,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE;qBAC1C;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;oBAC1D,OAAO,CAAC,IAAI,CAAC;wBACX,SAAS,EAAE,SAAS;wBACpB,KAAK,EAAE,0BAA0B;wBACjC,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,YAAY,IAAI,CAAC,IAAI,IAAI,SAAS,SAAS;qBACrD,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC;wBACX,SAAS,EAAE,SAAS;wBACpB,KAAK,EAAE,0BAA0B;wBACjC,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,gDAAgD;wBACzD,OAAO,EAAE,EAAE,SAAS,EAAE;qBACvB,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC;wBACX,SAAS,EAAE,SAAS;wBACpB,KAAK,EAAE,0BAA0B;wBACjC,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,6CAA6C;qBACvD,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC;wBACX,SAAS,EAAE,SAAS;wBACpB,KAAK,EAAE,0BAA0B;wBACjC,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,wBAAwB,QAAQ,CAAC,MAAM,EAAE;qBACnD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC;oBACX,SAAS,EAAE,SAAS;oBACpB,KAAK,EAAE,0BAA0B;oBACjC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,kCAAkC;oBAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAwB,EAAE,OAA0B;QAC/D,+CAA+C;QAC/C,mDAAmD;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version File Management
|
|
3
|
+
*
|
|
4
|
+
* Tracks installed component versions for upgrades and validation.
|
|
5
|
+
* Stored at ~/.everstate/version.json
|
|
6
|
+
*/
|
|
7
|
+
import { VersionFile, HOOK_VERSIONS } from './types.js';
|
|
8
|
+
export { HOOK_VERSIONS };
|
|
9
|
+
declare const VERSION_FILE_PATH: string;
|
|
10
|
+
/**
|
|
11
|
+
* Get the current MCP proxy version from package.json
|
|
12
|
+
*/
|
|
13
|
+
export declare function getMcpProxyVersion(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Read the current version file
|
|
16
|
+
*/
|
|
17
|
+
export declare function readVersionFile(): VersionFile | null;
|
|
18
|
+
/**
|
|
19
|
+
* Write the version file
|
|
20
|
+
*/
|
|
21
|
+
export declare function writeVersionFile(versionFile: VersionFile): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Create a fresh version file with current versions
|
|
24
|
+
*/
|
|
25
|
+
export declare function createVersionFile(installedBy?: 'setup' | 'npx' | 'manual'): VersionFile;
|
|
26
|
+
/**
|
|
27
|
+
* Update the version file after setup or repair
|
|
28
|
+
*/
|
|
29
|
+
export declare function updateVersionFile(updates: Partial<VersionFile>): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Record a project installation
|
|
32
|
+
*/
|
|
33
|
+
export declare function recordProjectInstallation(projectId: string, configVersion: string, hooksVersion: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Check if components need updating
|
|
36
|
+
*/
|
|
37
|
+
export declare function checkForUpdates(): {
|
|
38
|
+
needsUpdate: boolean;
|
|
39
|
+
outdated: string[];
|
|
40
|
+
};
|
|
41
|
+
export { VERSION_FILE_PATH };
|
|
42
|
+
/**
|
|
43
|
+
* Server update info (matches dashboard UI)
|
|
44
|
+
*/
|
|
45
|
+
export interface ServerUpdate {
|
|
46
|
+
id: string;
|
|
47
|
+
version: string;
|
|
48
|
+
category: 'hooks' | 'mcp-proxy' | 'config';
|
|
49
|
+
title: string;
|
|
50
|
+
description: string;
|
|
51
|
+
breaking: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check for updates from the Everstate server
|
|
55
|
+
* This is the same data shown in the dashboard UI
|
|
56
|
+
*/
|
|
57
|
+
export declare function checkServerUpdates(apiKey: string): Promise<ServerUpdate[]>;
|
|
58
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/setup/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAuF,MAAM,YAAY,CAAC;AAG7I,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,QAAA,MAAM,iBAAiB,QAAsC,CAAC;AAE9D;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAmB3C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAWpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAiBlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,OAAO,GAAG,KAAK,GAAG,QAAkB,GAAG,WAAW,CAsBhG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CA8BxE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAkCA;AAoBD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA6BhF"}
|