@everstateai/mcp 1.3.2 → 1.3.3

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 (70) hide show
  1. package/dist/index.d.ts +5 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +32 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/setup/auto-update.d.ts +20 -0
  6. package/dist/setup/auto-update.d.ts.map +1 -0
  7. package/dist/setup/auto-update.js +295 -0
  8. package/dist/setup/auto-update.js.map +1 -0
  9. package/dist/setup/commands/doctor.d.ts +15 -0
  10. package/dist/setup/commands/doctor.d.ts.map +1 -0
  11. package/dist/setup/commands/doctor.js +264 -0
  12. package/dist/setup/commands/doctor.js.map +1 -0
  13. package/dist/setup/commands/repair.d.ts +14 -0
  14. package/dist/setup/commands/repair.d.ts.map +1 -0
  15. package/dist/setup/commands/repair.js +252 -0
  16. package/dist/setup/commands/repair.js.map +1 -0
  17. package/dist/setup/hooks/templates.d.ts +30 -0
  18. package/dist/setup/hooks/templates.d.ts.map +1 -0
  19. package/dist/setup/hooks/templates.js +237 -0
  20. package/dist/setup/hooks/templates.js.map +1 -0
  21. package/dist/setup/types.d.ts +120 -0
  22. package/dist/setup/types.d.ts.map +1 -0
  23. package/dist/setup/types.js +58 -0
  24. package/dist/setup/types.js.map +1 -0
  25. package/dist/setup/validators/api-key.d.ts +8 -0
  26. package/dist/setup/validators/api-key.d.ts.map +1 -0
  27. package/dist/setup/validators/api-key.js +233 -0
  28. package/dist/setup/validators/api-key.js.map +1 -0
  29. package/dist/setup/validators/connectivity.d.ts +8 -0
  30. package/dist/setup/validators/connectivity.d.ts.map +1 -0
  31. package/dist/setup/validators/connectivity.js +150 -0
  32. package/dist/setup/validators/connectivity.js.map +1 -0
  33. package/dist/setup/validators/hooks.d.ts +8 -0
  34. package/dist/setup/validators/hooks.d.ts.map +1 -0
  35. package/dist/setup/validators/hooks.js +431 -0
  36. package/dist/setup/validators/hooks.js.map +1 -0
  37. package/dist/setup/validators/index.d.ts +18 -0
  38. package/dist/setup/validators/index.d.ts.map +1 -0
  39. package/dist/setup/validators/index.js +123 -0
  40. package/dist/setup/validators/index.js.map +1 -0
  41. package/dist/setup/validators/mcp-config.d.ts +8 -0
  42. package/dist/setup/validators/mcp-config.d.ts.map +1 -0
  43. package/dist/setup/validators/mcp-config.js +333 -0
  44. package/dist/setup/validators/mcp-config.js.map +1 -0
  45. package/dist/setup/validators/project.d.ts +8 -0
  46. package/dist/setup/validators/project.d.ts.map +1 -0
  47. package/dist/setup/validators/project.js +202 -0
  48. package/dist/setup/validators/project.js.map +1 -0
  49. package/dist/setup/version.d.ts +58 -0
  50. package/dist/setup/version.d.ts.map +1 -0
  51. package/dist/setup/version.js +262 -0
  52. package/dist/setup/version.js.map +1 -0
  53. package/dist/setup.d.ts.map +1 -1
  54. package/dist/setup.js +207 -27
  55. package/dist/setup.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/index.ts +32 -5
  58. package/src/setup/auto-update.ts +328 -0
  59. package/src/setup/commands/doctor.ts +266 -0
  60. package/src/setup/commands/repair.ts +260 -0
  61. package/src/setup/hooks/templates.ts +239 -0
  62. package/src/setup/types.ts +199 -0
  63. package/src/setup/validators/api-key.ts +218 -0
  64. package/src/setup/validators/connectivity.ts +176 -0
  65. package/src/setup/validators/hooks.ts +447 -0
  66. package/src/setup/validators/index.ts +137 -0
  67. package/src/setup/validators/mcp-config.ts +329 -0
  68. package/src/setup/validators/project.ts +179 -0
  69. package/src/setup/version.ts +267 -0
  70. package/src/setup.ts +229 -27
@@ -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":"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"}
@@ -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"}
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ /**
3
+ * Version File Management
4
+ *
5
+ * Tracks installed component versions for upgrades and validation.
6
+ * Stored at ~/.everstate/version.json
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.VERSION_FILE_PATH = exports.HOOK_VERSIONS = void 0;
43
+ exports.getMcpProxyVersion = getMcpProxyVersion;
44
+ exports.readVersionFile = readVersionFile;
45
+ exports.writeVersionFile = writeVersionFile;
46
+ exports.createVersionFile = createVersionFile;
47
+ exports.updateVersionFile = updateVersionFile;
48
+ exports.recordProjectInstallation = recordProjectInstallation;
49
+ exports.checkForUpdates = checkForUpdates;
50
+ exports.checkServerUpdates = checkServerUpdates;
51
+ const fs = __importStar(require("fs"));
52
+ const types_js_1 = require("./types.js");
53
+ Object.defineProperty(exports, "HOOK_VERSIONS", { enumerable: true, get: function () { return types_js_1.HOOK_VERSIONS; } });
54
+ const VERSION_FILE_PATH = `${(0, types_js_1.getEverstateDir)()}/version.json`;
55
+ exports.VERSION_FILE_PATH = VERSION_FILE_PATH;
56
+ /**
57
+ * Get the current MCP proxy version from package.json
58
+ */
59
+ function getMcpProxyVersion() {
60
+ try {
61
+ // Try to read from the package.json in the installed location
62
+ const packageJsonPaths = [
63
+ `${__dirname}/../../package.json`,
64
+ `${__dirname}/../../../package.json`,
65
+ ];
66
+ for (const path of packageJsonPaths) {
67
+ if (fs.existsSync(path)) {
68
+ const pkg = JSON.parse(fs.readFileSync(path, 'utf8'));
69
+ return pkg.version || '0.0.0';
70
+ }
71
+ }
72
+ return '0.0.0';
73
+ }
74
+ catch {
75
+ return '0.0.0';
76
+ }
77
+ }
78
+ /**
79
+ * Read the current version file
80
+ */
81
+ function readVersionFile() {
82
+ try {
83
+ if (!fs.existsSync(VERSION_FILE_PATH)) {
84
+ return null;
85
+ }
86
+ const content = fs.readFileSync(VERSION_FILE_PATH, 'utf8');
87
+ return JSON.parse(content);
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ }
93
+ /**
94
+ * Write the version file
95
+ */
96
+ function writeVersionFile(versionFile) {
97
+ try {
98
+ const dir = (0, types_js_1.getEverstateDir)();
99
+ if (!fs.existsSync(dir)) {
100
+ fs.mkdirSync(dir, { recursive: true });
101
+ }
102
+ fs.writeFileSync(VERSION_FILE_PATH, JSON.stringify(versionFile, null, 2) + '\n', { mode: 0o600 });
103
+ return true;
104
+ }
105
+ catch {
106
+ return false;
107
+ }
108
+ }
109
+ /**
110
+ * Create a fresh version file with current versions
111
+ */
112
+ function createVersionFile(installedBy = 'setup') {
113
+ const versionFile = {
114
+ installedAt: new Date().toISOString(),
115
+ installedBy,
116
+ components: {
117
+ mcpProxy: getMcpProxyVersion(),
118
+ hooks: {
119
+ sessionStart: types_js_1.HOOK_VERSIONS.sessionStart,
120
+ sessionEnd: types_js_1.HOOK_VERSIONS.sessionEnd,
121
+ syncTodos: types_js_1.HOOK_VERSIONS.syncTodos,
122
+ },
123
+ },
124
+ configPaths: {
125
+ claudeCode: (0, types_js_1.getClaudeConfigPath)(),
126
+ claudeDesktop: (0, types_js_1.getClaudeDesktopConfigPath)() || undefined,
127
+ apiKey: `${(0, types_js_1.getEverstateDir)()}/api-key`,
128
+ globalHooks: `${(0, types_js_1.getEverstateDir)()}/hooks`,
129
+ },
130
+ projects: {},
131
+ };
132
+ return versionFile;
133
+ }
134
+ /**
135
+ * Update the version file after setup or repair
136
+ */
137
+ function updateVersionFile(updates) {
138
+ let versionFile = readVersionFile();
139
+ if (!versionFile) {
140
+ versionFile = createVersionFile();
141
+ }
142
+ // Merge updates
143
+ const updated = {
144
+ ...versionFile,
145
+ ...updates,
146
+ components: {
147
+ ...versionFile.components,
148
+ ...(updates.components || {}),
149
+ hooks: {
150
+ ...versionFile.components.hooks,
151
+ ...(updates.components?.hooks || {}),
152
+ },
153
+ },
154
+ configPaths: {
155
+ ...versionFile.configPaths,
156
+ ...(updates.configPaths || {}),
157
+ },
158
+ projects: {
159
+ ...versionFile.projects,
160
+ ...(updates.projects || {}),
161
+ },
162
+ };
163
+ return writeVersionFile(updated);
164
+ }
165
+ /**
166
+ * Record a project installation
167
+ */
168
+ function recordProjectInstallation(projectId, configVersion, hooksVersion) {
169
+ return updateVersionFile({
170
+ projects: {
171
+ [projectId]: {
172
+ projectId,
173
+ configVersion,
174
+ hooksVersion,
175
+ lastValidated: new Date().toISOString(),
176
+ },
177
+ },
178
+ });
179
+ }
180
+ /**
181
+ * Check if components need updating
182
+ */
183
+ function checkForUpdates() {
184
+ const versionFile = readVersionFile();
185
+ if (!versionFile) {
186
+ return {
187
+ needsUpdate: true,
188
+ outdated: ['all (no version file)'],
189
+ };
190
+ }
191
+ const outdated = [];
192
+ const currentMcpVersion = getMcpProxyVersion();
193
+ // Check MCP proxy version
194
+ if (compareVersions(versionFile.components.mcpProxy, currentMcpVersion) < 0) {
195
+ outdated.push(`mcp-proxy (${versionFile.components.mcpProxy} → ${currentMcpVersion})`);
196
+ }
197
+ // Check hook versions
198
+ const hooks = versionFile.components.hooks;
199
+ if (compareVersions(hooks.syncTodos, types_js_1.HOOK_VERSIONS.syncTodos) < 0) {
200
+ outdated.push(`sync-todos (${hooks.syncTodos} → ${types_js_1.HOOK_VERSIONS.syncTodos})`);
201
+ }
202
+ if (compareVersions(hooks.sessionStart, types_js_1.HOOK_VERSIONS.sessionStart) < 0) {
203
+ outdated.push(`session-start (${hooks.sessionStart} → ${types_js_1.HOOK_VERSIONS.sessionStart})`);
204
+ }
205
+ if (compareVersions(hooks.sessionEnd, types_js_1.HOOK_VERSIONS.sessionEnd) < 0) {
206
+ outdated.push(`session-end (${hooks.sessionEnd} → ${types_js_1.HOOK_VERSIONS.sessionEnd})`);
207
+ }
208
+ return {
209
+ needsUpdate: outdated.length > 0,
210
+ outdated,
211
+ };
212
+ }
213
+ /**
214
+ * Compare two semver versions
215
+ * Returns: -1 if a < b, 0 if a == b, 1 if a > b
216
+ */
217
+ function compareVersions(a, b) {
218
+ const aParts = a.split('.').map(Number);
219
+ const bParts = b.split('.').map(Number);
220
+ for (let i = 0; i < 3; i++) {
221
+ const aNum = aParts[i] || 0;
222
+ const bNum = bParts[i] || 0;
223
+ if (aNum < bNum)
224
+ return -1;
225
+ if (aNum > bNum)
226
+ return 1;
227
+ }
228
+ return 0;
229
+ }
230
+ /**
231
+ * Check for updates from the Everstate server
232
+ * This is the same data shown in the dashboard UI
233
+ */
234
+ async function checkServerUpdates(apiKey) {
235
+ const versionFile = readVersionFile();
236
+ const installedVersions = versionFile ? {
237
+ mcpProxy: versionFile.components.mcpProxy,
238
+ syncTodos: versionFile.components.hooks.syncTodos,
239
+ } : {
240
+ mcpProxy: '0.0.0',
241
+ syncTodos: '0.0.0',
242
+ };
243
+ try {
244
+ const response = await fetch(`${types_js_1.EVERSTATE_API_URL}/api/updates/check`, {
245
+ method: 'POST',
246
+ headers: {
247
+ 'Authorization': `Bearer ${apiKey}`,
248
+ 'Content-Type': 'application/json',
249
+ },
250
+ body: JSON.stringify({ installedVersions }),
251
+ });
252
+ if (!response.ok) {
253
+ return [];
254
+ }
255
+ const data = await response.json();
256
+ return data.updates || [];
257
+ }
258
+ catch {
259
+ return [];
260
+ }
261
+ }
262
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/setup/version.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAshBH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,iBAuE5C"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AA2rBH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,iBA4G5C"}