@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.
Files changed (102) hide show
  1. package/README.md +42 -6
  2. package/dist/commands/api-client.d.ts +35 -0
  3. package/dist/commands/api-client.d.ts.map +1 -0
  4. package/dist/commands/api-client.js +138 -0
  5. package/dist/commands/api-client.js.map +1 -0
  6. package/dist/commands/done.d.ts +7 -0
  7. package/dist/commands/done.d.ts.map +1 -0
  8. package/dist/commands/done.js +57 -0
  9. package/dist/commands/done.js.map +1 -0
  10. package/dist/commands/recall.d.ts +7 -0
  11. package/dist/commands/recall.d.ts.map +1 -0
  12. package/dist/commands/recall.js +36 -0
  13. package/dist/commands/recall.js.map +1 -0
  14. package/dist/commands/status.d.ts +7 -0
  15. package/dist/commands/status.d.ts.map +1 -0
  16. package/dist/commands/status.js +33 -0
  17. package/dist/commands/status.js.map +1 -0
  18. package/dist/commands/sync.d.ts +7 -0
  19. package/dist/commands/sync.d.ts.map +1 -0
  20. package/dist/commands/sync.js +34 -0
  21. package/dist/commands/sync.js.map +1 -0
  22. package/dist/index.d.ts +9 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +68 -5
  25. package/dist/index.js.map +1 -1
  26. package/dist/setup/auto-update.d.ts +20 -0
  27. package/dist/setup/auto-update.d.ts.map +1 -0
  28. package/dist/setup/auto-update.js +295 -0
  29. package/dist/setup/auto-update.js.map +1 -0
  30. package/dist/setup/commands/doctor.d.ts +15 -0
  31. package/dist/setup/commands/doctor.d.ts.map +1 -0
  32. package/dist/setup/commands/doctor.js +264 -0
  33. package/dist/setup/commands/doctor.js.map +1 -0
  34. package/dist/setup/commands/repair.d.ts +14 -0
  35. package/dist/setup/commands/repair.d.ts.map +1 -0
  36. package/dist/setup/commands/repair.js +252 -0
  37. package/dist/setup/commands/repair.js.map +1 -0
  38. package/dist/setup/environments.d.ts +48 -0
  39. package/dist/setup/environments.d.ts.map +1 -0
  40. package/dist/setup/environments.js +222 -0
  41. package/dist/setup/environments.js.map +1 -0
  42. package/dist/setup/hooks/templates.d.ts +30 -0
  43. package/dist/setup/hooks/templates.d.ts.map +1 -0
  44. package/dist/setup/hooks/templates.js +253 -0
  45. package/dist/setup/hooks/templates.js.map +1 -0
  46. package/dist/setup/types.d.ts +122 -0
  47. package/dist/setup/types.d.ts.map +1 -0
  48. package/dist/setup/types.js +66 -0
  49. package/dist/setup/types.js.map +1 -0
  50. package/dist/setup/validators/api-key.d.ts +8 -0
  51. package/dist/setup/validators/api-key.d.ts.map +1 -0
  52. package/dist/setup/validators/api-key.js +233 -0
  53. package/dist/setup/validators/api-key.js.map +1 -0
  54. package/dist/setup/validators/connectivity.d.ts +8 -0
  55. package/dist/setup/validators/connectivity.d.ts.map +1 -0
  56. package/dist/setup/validators/connectivity.js +150 -0
  57. package/dist/setup/validators/connectivity.js.map +1 -0
  58. package/dist/setup/validators/hooks.d.ts +8 -0
  59. package/dist/setup/validators/hooks.d.ts.map +1 -0
  60. package/dist/setup/validators/hooks.js +431 -0
  61. package/dist/setup/validators/hooks.js.map +1 -0
  62. package/dist/setup/validators/index.d.ts +18 -0
  63. package/dist/setup/validators/index.d.ts.map +1 -0
  64. package/dist/setup/validators/index.js +123 -0
  65. package/dist/setup/validators/index.js.map +1 -0
  66. package/dist/setup/validators/mcp-config.d.ts +9 -0
  67. package/dist/setup/validators/mcp-config.d.ts.map +1 -0
  68. package/dist/setup/validators/mcp-config.js +302 -0
  69. package/dist/setup/validators/mcp-config.js.map +1 -0
  70. package/dist/setup/validators/project.d.ts +8 -0
  71. package/dist/setup/validators/project.d.ts.map +1 -0
  72. package/dist/setup/validators/project.js +202 -0
  73. package/dist/setup/validators/project.js.map +1 -0
  74. package/dist/setup/version.d.ts +58 -0
  75. package/dist/setup/version.d.ts.map +1 -0
  76. package/dist/setup/version.js +262 -0
  77. package/dist/setup/version.js.map +1 -0
  78. package/dist/setup.d.ts +1 -0
  79. package/dist/setup.d.ts.map +1 -1
  80. package/dist/setup.js +397 -214
  81. package/dist/setup.js.map +1 -1
  82. package/package.json +1 -1
  83. package/src/commands/api-client.ts +117 -0
  84. package/src/commands/done.ts +63 -0
  85. package/src/commands/recall.ts +40 -0
  86. package/src/commands/status.ts +36 -0
  87. package/src/commands/sync.ts +37 -0
  88. package/src/index.ts +64 -5
  89. package/src/setup/auto-update.ts +328 -0
  90. package/src/setup/commands/doctor.ts +266 -0
  91. package/src/setup/commands/repair.ts +260 -0
  92. package/src/setup/environments.ts +225 -0
  93. package/src/setup/hooks/templates.ts +255 -0
  94. package/src/setup/types.ts +207 -0
  95. package/src/setup/validators/api-key.ts +218 -0
  96. package/src/setup/validators/connectivity.ts +176 -0
  97. package/src/setup/validators/hooks.ts +447 -0
  98. package/src/setup/validators/index.ts +137 -0
  99. package/src/setup/validators/mcp-config.ts +288 -0
  100. package/src/setup/validators/project.ts +179 -0
  101. package/src/setup/version.ts +267 -0
  102. 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,8 @@
1
+ /**
2
+ * Project Validator
3
+ *
4
+ * Validates project-level configuration (.everstate.json).
5
+ */
6
+ import { Validator } from '../types.js';
7
+ export declare const projectValidator: Validator;
8
+ //# sourceMappingURL=project.d.ts.map
@@ -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"}