hawkeye-mcp-server 2.2.0 → 2.3.0

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 (54) hide show
  1. package/README.md +82 -2
  2. package/build/config/config.d.ts +6 -1
  3. package/build/config/config.js +24 -5
  4. package/build/config/config.js.map +1 -1
  5. package/build/db/index.d.ts +51 -0
  6. package/build/db/index.js +174 -0
  7. package/build/db/index.js.map +1 -0
  8. package/build/db/postgres-state-provider.d.ts +52 -0
  9. package/build/db/postgres-state-provider.js +165 -0
  10. package/build/db/postgres-state-provider.js.map +1 -0
  11. package/build/index.d.ts +4 -1
  12. package/build/index.js +17 -84
  13. package/build/index.js.map +1 -1
  14. package/build/mcp-server-factory.d.ts +36 -0
  15. package/build/mcp-server-factory.js +92 -0
  16. package/build/mcp-server-factory.js.map +1 -0
  17. package/build/server.d.ts +9 -0
  18. package/build/server.js +337 -0
  19. package/build/server.js.map +1 -0
  20. package/build/services/auth.service.d.ts +38 -0
  21. package/build/services/auth.service.js +64 -0
  22. package/build/services/auth.service.js.map +1 -1
  23. package/build/services/project.service.d.ts +11 -0
  24. package/build/services/project.service.js +31 -0
  25. package/build/services/project.service.js.map +1 -1
  26. package/build/services/state.service.d.ts +115 -0
  27. package/build/services/state.service.js +172 -0
  28. package/build/services/state.service.js.map +1 -0
  29. package/build/tools/create-connection.d.ts +12 -0
  30. package/build/tools/create-connection.js +6 -0
  31. package/build/tools/create-connection.js.map +1 -1
  32. package/build/tools/create-manual-investigation.js +10 -6
  33. package/build/tools/create-manual-investigation.js.map +1 -1
  34. package/build/tools/get-connection-info.js +1 -0
  35. package/build/tools/get-connection-info.js.map +1 -1
  36. package/build/tools/get-session-link.js +1 -2
  37. package/build/tools/get-session-link.js.map +1 -1
  38. package/build/tools/get-status.js +2 -4
  39. package/build/tools/get-status.js.map +1 -1
  40. package/build/tools/index.js +11 -1
  41. package/build/tools/index.js.map +1 -1
  42. package/build/tools/inspect-session.js +1 -2
  43. package/build/tools/inspect-session.js.map +1 -1
  44. package/build/tools/list-connection-types.js +9 -0
  45. package/build/tools/list-connection-types.js.map +1 -1
  46. package/build/types/hawkeye.d.ts +7 -0
  47. package/build/types/hawkeye.js.map +1 -1
  48. package/build/utils/connection-builders.d.ts +8 -0
  49. package/build/utils/connection-builders.js +48 -1
  50. package/build/utils/connection-builders.js.map +1 -1
  51. package/build/utils/state.d.ts +24 -17
  52. package/build/utils/state.js +63 -72
  53. package/build/utils/state.js.map +1 -1
  54. package/package.json +12 -4
@@ -1,25 +1,26 @@
1
1
  /**
2
2
  * State management for persisting user preferences
3
- * Stores default project UUID, base URL, etc. in ~/.hawkeye-mcp/state.json
3
+ *
4
+ * BACKWARDS COMPATIBILITY LAYER
5
+ * This file maintains the original StateManager API for existing code.
6
+ * It delegates to the new StateProvider abstraction which supports
7
+ * multiple backends (file-based for stdio, PostgreSQL for HTTP/SSE).
8
+ *
9
+ * For new code, prefer using StateProvider directly from '../services/state.service.js'
10
+ */
11
+ import { StateProvider, StateData } from '../services/state.service.js';
12
+ /**
13
+ * StateManager - backwards compatible wrapper around StateProvider
14
+ * Maintains the original synchronous-looking API for existing code
15
+ *
16
+ * @deprecated For new code, use StateProvider from '../services/state.service.js'
4
17
  */
5
- interface StateData {
6
- defaultProjectUuid?: string;
7
- baseUrl?: string;
8
- }
9
18
  export declare class StateManager {
10
- private statePath;
11
- private state;
12
- constructor();
13
- /**
14
- * Load state from file
15
- */
16
- private load;
17
- /**
18
- * Save state to file
19
- */
20
- private save;
19
+ private provider;
20
+ constructor(provider?: StateProvider);
21
21
  /**
22
22
  * Get default project UUID
23
+ * Note: This is now async internally but we cache the result for sync access
23
24
  */
24
25
  getDefaultProjectUuid(): string | undefined;
25
26
  /**
@@ -53,6 +54,12 @@ export declare class StateManager {
53
54
  }
54
55
  /**
55
56
  * Get the state manager singleton
57
+ *
58
+ * @deprecated For new code, use getStateProvider() from '../services/state.service.js'
56
59
  */
57
60
  export declare function getStateManager(): StateManager;
58
- export {};
61
+ /**
62
+ * Reset the state manager (useful for testing)
63
+ */
64
+ export declare function resetStateManager(): void;
65
+ export type { StateData, StateProvider };
@@ -1,126 +1,111 @@
1
1
  /**
2
2
  * State management for persisting user preferences
3
- * Stores default project UUID, base URL, etc. in ~/.hawkeye-mcp/state.json
3
+ *
4
+ * BACKWARDS COMPATIBILITY LAYER
5
+ * This file maintains the original StateManager API for existing code.
6
+ * It delegates to the new StateProvider abstraction which supports
7
+ * multiple backends (file-based for stdio, PostgreSQL for HTTP/SSE).
8
+ *
9
+ * For new code, prefer using StateProvider directly from '../services/state.service.js'
4
10
  */
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- import * as os from 'os';
8
11
  import { logger } from './logger.js';
12
+ import { getFileStateProvider } from '../services/state.service.js';
13
+ /**
14
+ * StateManager - backwards compatible wrapper around StateProvider
15
+ * Maintains the original synchronous-looking API for existing code
16
+ *
17
+ * @deprecated For new code, use StateProvider from '../services/state.service.js'
18
+ */
9
19
  export class StateManager {
10
- statePath;
11
- state = {};
12
- constructor() {
13
- const homeDir = os.homedir();
14
- const stateDir = path.join(homeDir, '.hawkeye-mcp');
15
- this.statePath = path.join(stateDir, 'state.json');
16
- // Ensure state directory exists
17
- if (!fs.existsSync(stateDir)) {
18
- try {
19
- fs.mkdirSync(stateDir, { recursive: true });
20
- logger.info('Created state directory', { path: stateDir });
21
- }
22
- catch (error) {
23
- logger.error('Failed to create state directory', { error, path: stateDir });
24
- }
25
- }
26
- // Load existing state
27
- this.load();
28
- }
29
- /**
30
- * Load state from file
31
- */
32
- load() {
33
- try {
34
- if (fs.existsSync(this.statePath)) {
35
- const data = fs.readFileSync(this.statePath, 'utf-8');
36
- this.state = JSON.parse(data);
37
- logger.debug('Loaded state from file', { state: this.state });
38
- }
39
- else {
40
- logger.debug('No state file found, starting with empty state');
41
- }
42
- }
43
- catch (error) {
44
- logger.error('Failed to load state file', { error, path: this.statePath });
45
- this.state = {};
46
- }
47
- }
48
- /**
49
- * Save state to file
50
- */
51
- save() {
52
- try {
53
- const data = JSON.stringify(this.state, null, 2);
54
- fs.writeFileSync(this.statePath, data, 'utf-8');
55
- logger.debug('Saved state to file', { state: this.state });
56
- }
57
- catch (error) {
58
- logger.error('Failed to save state file', { error, path: this.statePath });
59
- }
20
+ provider;
21
+ constructor(provider) {
22
+ // Use provided provider or default to file-based
23
+ this.provider = provider || getFileStateProvider();
60
24
  }
61
25
  /**
62
26
  * Get default project UUID
27
+ * Note: This is now async internally but we cache the result for sync access
63
28
  */
64
29
  getDefaultProjectUuid() {
65
- return this.state.defaultProjectUuid;
30
+ // For backwards compatibility, we use the file provider which loads sync
31
+ // The FileStateProvider caches state in memory, so this is effectively sync
32
+ const fileProvider = this.provider;
33
+ if (fileProvider.state) {
34
+ return fileProvider.state.defaultProjectUuid;
35
+ }
36
+ // Fallback: return undefined (async operations should use StateProvider directly)
37
+ return undefined;
66
38
  }
67
39
  /**
68
40
  * Set default project UUID
69
41
  */
70
42
  setDefaultProjectUuid(projectUuid) {
71
- this.state.defaultProjectUuid = projectUuid;
72
- this.save();
73
- logger.info('Set default project UUID', { projectUuid });
43
+ // Fire and forget - the FileStateProvider handles this synchronously internally
44
+ this.provider.setDefaultProjectUuid(projectUuid).catch(error => {
45
+ logger.error('Failed to set default project UUID', { error, projectUuid });
46
+ });
74
47
  }
75
48
  /**
76
49
  * Clear default project UUID
77
50
  */
78
51
  clearDefaultProjectUuid() {
79
- delete this.state.defaultProjectUuid;
80
- this.save();
81
- logger.info('Cleared default project UUID');
52
+ this.provider.clearDefaultProjectUuid().catch(error => {
53
+ logger.error('Failed to clear default project UUID', { error });
54
+ });
82
55
  }
83
56
  /**
84
57
  * Get base URL
85
58
  */
86
59
  getBaseUrl() {
87
- return this.state.baseUrl;
60
+ // For backwards compatibility, access the cached state directly
61
+ const fileProvider = this.provider;
62
+ if (fileProvider.state) {
63
+ return fileProvider.state.baseUrl;
64
+ }
65
+ return undefined;
88
66
  }
89
67
  /**
90
68
  * Set base URL
91
69
  */
92
70
  setBaseUrl(baseUrl) {
93
- this.state.baseUrl = baseUrl;
94
- this.save();
95
- logger.info('Set base URL', { baseUrl });
71
+ this.provider.setBaseUrl(baseUrl).catch(error => {
72
+ logger.error('Failed to set base URL', { error, baseUrl });
73
+ });
96
74
  }
97
75
  /**
98
76
  * Clear base URL
99
77
  */
100
78
  clearBaseUrl() {
101
- delete this.state.baseUrl;
102
- this.save();
103
- logger.info('Cleared base URL');
79
+ this.provider.clearBaseUrl().catch(error => {
80
+ logger.error('Failed to clear base URL', { error });
81
+ });
104
82
  }
105
83
  /**
106
84
  * Clear all state
107
85
  */
108
86
  clearAll() {
109
- this.state = {};
110
- this.save();
111
- logger.info('Cleared all state');
87
+ this.provider.clearAll().catch(error => {
88
+ logger.error('Failed to clear all state', { error });
89
+ });
112
90
  }
113
91
  /**
114
92
  * Get all state
115
93
  */
116
94
  getAll() {
117
- return { ...this.state };
95
+ // For backwards compatibility, access the cached state directly
96
+ const fileProvider = this.provider;
97
+ if (fileProvider.state) {
98
+ return { ...fileProvider.state };
99
+ }
100
+ return {};
118
101
  }
119
102
  }
120
103
  // Singleton instance
121
104
  let stateManager = null;
122
105
  /**
123
106
  * Get the state manager singleton
107
+ *
108
+ * @deprecated For new code, use getStateProvider() from '../services/state.service.js'
124
109
  */
125
110
  export function getStateManager() {
126
111
  if (!stateManager) {
@@ -128,4 +113,10 @@ export function getStateManager() {
128
113
  }
129
114
  return stateManager;
130
115
  }
116
+ /**
117
+ * Reset the state manager (useful for testing)
118
+ */
119
+ export function resetStateManager() {
120
+ stateManager = null;
121
+ }
131
122
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hawkeye-mcp-server",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "MCP Server for Hawkeye automated incident investigation and root cause analysis",
5
5
  "private": false,
6
6
  "type": "module",
@@ -19,10 +19,12 @@
19
19
  ],
20
20
  "scripts": {
21
21
  "start": "node build/index.js",
22
- "build": "tsc && chmod 755 build/index.js",
22
+ "start:http": "TRANSPORT_MODE=http node build/server.js",
23
+ "build": "tsc && chmod 755 build/index.js && chmod 755 build/server.js",
23
24
  "typecheck": "tsc --noEmit",
24
25
  "prestart": "npm run build",
25
26
  "prepublishOnly": "npm run build",
27
+ "test": "npm run build && node --test tests/basic/**/*.test.mjs",
26
28
  "test:install": "node build/index.js --version"
27
29
  },
28
30
  "keywords": [
@@ -43,9 +45,9 @@
43
45
  "license": "MIT",
44
46
  "repository": {
45
47
  "type": "git",
46
- "url": "https://github.com/neubird/solutions"
48
+ "url": "https://github.com/neubirdai/mcp-server-hawkeye"
47
49
  },
48
- "homepage": "https://github.com/neubird/solutions/tree/main/hawkeye-mcp",
50
+ "homepage": "https://github.com/neubirdai/mcp-server-hawkeye/tree/main",
49
51
  "bugs": {
50
52
  "email": "support@neubird.ai"
51
53
  },
@@ -55,12 +57,18 @@
55
57
  "dependencies": {
56
58
  "@modelcontextprotocol/sdk": "^1.10.0",
57
59
  "axios": "^1.9.0",
60
+ "cors": "^2.8.5",
58
61
  "dotenv": "^16.4.5",
62
+ "express": "^5.2.1",
59
63
  "json-schema-to-zod": "^2.6.1",
64
+ "pg": "^8.16.3",
60
65
  "zod": "^3.24.3"
61
66
  },
62
67
  "devDependencies": {
68
+ "@types/cors": "^2.8.19",
69
+ "@types/express": "^5.0.6",
63
70
  "@types/node": "^22.15.2",
71
+ "@types/pg": "^8.15.6",
64
72
  "typescript": "^5.8.3"
65
73
  }
66
74
  }