@achieveai/hitl-mcp-server 1.2.0 → 2.0.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 (56) hide show
  1. package/dist/cli.d.ts +3 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +131 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/config.d.ts +19 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +54 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/git-context.d.ts +7 -0
  10. package/dist/git-context.d.ts.map +1 -0
  11. package/dist/git-context.js +29 -0
  12. package/dist/git-context.js.map +1 -0
  13. package/dist/mcp-server.d.ts +3 -0
  14. package/dist/mcp-server.d.ts.map +1 -0
  15. package/dist/{index.js → mcp-server.js} +124 -113
  16. package/dist/mcp-server.js.map +1 -0
  17. package/dist/ntfy-transport.d.ts +41 -0
  18. package/dist/ntfy-transport.d.ts.map +1 -0
  19. package/dist/ntfy-transport.js +150 -0
  20. package/dist/ntfy-transport.js.map +1 -0
  21. package/dist/setup.d.ts +38 -0
  22. package/dist/setup.d.ts.map +1 -0
  23. package/dist/setup.js +130 -0
  24. package/dist/setup.js.map +1 -0
  25. package/package.json +58 -63
  26. package/LICENSE +0 -20
  27. package/README.md +0 -422
  28. package/config/claude-desktop.json +0 -11
  29. package/config/cursor-mcp.json +0 -17
  30. package/config/vscode-mcp.json +0 -17
  31. package/dist/__tests__/dialog-manager.test.d.ts +0 -2
  32. package/dist/__tests__/dialog-manager.test.d.ts.map +0 -1
  33. package/dist/__tests__/dialog-manager.test.js +0 -140
  34. package/dist/__tests__/dialog-manager.test.js.map +0 -1
  35. package/dist/dialog-manager.d.ts +0 -37
  36. package/dist/dialog-manager.d.ts.map +0 -1
  37. package/dist/dialog-manager.js +0 -644
  38. package/dist/dialog-manager.js.map +0 -1
  39. package/dist/dialog-manager.test.d.ts +0 -2
  40. package/dist/dialog-manager.test.d.ts.map +0 -1
  41. package/dist/dialog-manager.test.js +0 -156
  42. package/dist/dialog-manager.test.js.map +0 -1
  43. package/dist/index.d.ts +0 -3
  44. package/dist/index.d.ts.map +0 -1
  45. package/dist/index.js.map +0 -1
  46. package/dist/test-client.d.ts +0 -3
  47. package/dist/test-client.d.ts.map +0 -1
  48. package/dist/test-client.js +0 -125
  49. package/dist/test-client.js.map +0 -1
  50. package/dist/test-dialog-manager.d.ts +0 -2
  51. package/dist/test-dialog-manager.d.ts.map +0 -1
  52. package/dist/test-dialog-manager.js +0 -156
  53. package/dist/test-dialog-manager.js.map +0 -1
  54. package/example-usage.md +0 -223
  55. package/mcp.json +0 -152
  56. package/sounds/notification.wav +0 -0
@@ -1,156 +0,0 @@
1
- // Simple test to verify the dialog manager works
2
- import { DialogManager } from './dialog-manager.js';
3
- async function runTests() {
4
- console.log('Starting DialogManager tests...\n');
5
- const manager = new DialogManager();
6
- let testsPassed = 0;
7
- let testsFailed = 0;
8
- // Test 1: Initialization
9
- try {
10
- const port = await manager.initialize();
11
- console.log('✓ Test 1 - Initialization: Server started on port', port);
12
- testsPassed++;
13
- }
14
- catch (error) {
15
- console.error('✗ Test 1 - Initialization failed:', error);
16
- testsFailed++;
17
- }
18
- // Test 2: HTML generation with XSS protection
19
- try {
20
- const html = manager.generateDialogHTML({
21
- id: 'test',
22
- question: '<script>alert("XSS")</script>',
23
- options: [
24
- {
25
- label: '<b>Bold</b>',
26
- value: 'test',
27
- description: '"Quotes" & \'apostrophes\''
28
- }
29
- ],
30
- allowMultiple: false,
31
- allowOther: true
32
- });
33
- if (html.includes('<script>alert') || html.includes('<b>Bold</b>')) {
34
- throw new Error('XSS protection failed');
35
- }
36
- if (!html.includes('&lt;script&gt;') || !html.includes('&lt;b&gt;')) {
37
- throw new Error('HTML should be escaped');
38
- }
39
- console.log('✓ Test 2 - XSS Protection: HTML properly escaped');
40
- testsPassed++;
41
- }
42
- catch (error) {
43
- console.error('✗ Test 2 - XSS Protection failed:', error);
44
- testsFailed++;
45
- }
46
- // Test 3: Radio vs Checkbox rendering
47
- try {
48
- const radioHtml = manager.generateDialogHTML({
49
- id: 'test',
50
- question: 'Choose one',
51
- options: [
52
- { label: 'A', value: 'a' },
53
- { label: 'B', value: 'b' }
54
- ],
55
- allowMultiple: false,
56
- allowOther: false
57
- });
58
- const checkboxHtml = manager.generateDialogHTML({
59
- id: 'test',
60
- question: 'Choose many',
61
- options: [
62
- { label: 'A', value: 'a' },
63
- { label: 'B', value: 'b' }
64
- ],
65
- allowMultiple: true,
66
- allowOther: false
67
- });
68
- if (!radioHtml.includes('type="radio"') || radioHtml.includes('type="checkbox"')) {
69
- throw new Error('Single choice should use radio buttons');
70
- }
71
- if (!checkboxHtml.includes('type="checkbox"') || checkboxHtml.includes('type="radio"')) {
72
- throw new Error('Multiple choice should use checkboxes');
73
- }
74
- console.log('✓ Test 3 - Input Types: Correct radio/checkbox rendering');
75
- testsPassed++;
76
- }
77
- catch (error) {
78
- console.error('✗ Test 3 - Input Types failed:', error);
79
- testsFailed++;
80
- }
81
- // Test 4: Other field inclusion
82
- try {
83
- const withOther = manager.generateDialogHTML({
84
- id: 'test',
85
- question: 'Choose',
86
- options: [{ label: 'A', value: 'a' }],
87
- allowMultiple: false,
88
- allowOther: true
89
- });
90
- const withoutOther = manager.generateDialogHTML({
91
- id: 'test',
92
- question: 'Choose',
93
- options: [{ label: 'A', value: 'a' }],
94
- allowMultiple: false,
95
- allowOther: false
96
- });
97
- if (!withOther.includes('other-input')) {
98
- throw new Error('Should include other field when allowed');
99
- }
100
- if (withoutOther.includes('Other (please specify)')) {
101
- throw new Error('Should not include other field when not allowed');
102
- }
103
- console.log('✓ Test 4 - Other Field: Correctly included/excluded');
104
- testsPassed++;
105
- }
106
- catch (error) {
107
- console.error('✗ Test 4 - Other Field failed:', error);
108
- testsFailed++;
109
- }
110
- // Test 5: Context inclusion
111
- try {
112
- const withContext = manager.generateDialogHTML({
113
- id: 'test',
114
- question: 'Test question',
115
- options: [{ label: 'Option 1', value: 'opt1' }],
116
- allowMultiple: false,
117
- allowOther: false,
118
- context: 'Important context information'
119
- });
120
- const withoutContext = manager.generateDialogHTML({
121
- id: 'test',
122
- question: 'Test question',
123
- options: [{ label: 'Option 1', value: 'opt1' }],
124
- allowMultiple: false,
125
- allowOther: false
126
- });
127
- if (!withContext.includes('Important context information')) {
128
- throw new Error('Should include context when provided');
129
- }
130
- if (withoutContext.includes('Context:')) {
131
- throw new Error('Should not include context section when not provided');
132
- }
133
- console.log('✓ Test 5 - Context: Correctly included/excluded');
134
- testsPassed++;
135
- }
136
- catch (error) {
137
- console.error('✗ Test 5 - Context failed:', error);
138
- testsFailed++;
139
- }
140
- // Cleanup
141
- await manager.close();
142
- // Summary
143
- console.log(`\n========== Test Summary ==========`);
144
- console.log(`Passed: ${testsPassed}`);
145
- console.log(`Failed: ${testsFailed}`);
146
- console.log(`Total: ${testsPassed + testsFailed}`);
147
- if (testsFailed > 0) {
148
- process.exit(1);
149
- }
150
- }
151
- // Run tests
152
- runTests().catch(error => {
153
- console.error('Test suite failed:', error);
154
- process.exit(1);
155
- });
156
- //# sourceMappingURL=dialog-manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-manager.test.js","sourceRoot":"","sources":["../src/dialog-manager.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=test-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-client.d.ts","sourceRoot":"","sources":["../src/test-client.ts"],"names":[],"mappings":""}
@@ -1,125 +0,0 @@
1
- #!/usr/bin/env node
2
- import { DialogManager } from './dialog-manager.js';
3
- async function testDialogManager() {
4
- console.log('Starting Dialog Manager Test...\n');
5
- const manager = new DialogManager();
6
- await manager.initialize();
7
- const testCases = [
8
- {
9
- name: 'Single Choice Question',
10
- request: {
11
- id: 'test-1',
12
- question: 'Which approach should I use for implementing the authentication system?',
13
- options: [
14
- {
15
- label: 'JWT Tokens',
16
- value: 'jwt',
17
- description: 'Stateless authentication using JSON Web Tokens'
18
- },
19
- {
20
- label: 'Session-based',
21
- value: 'session',
22
- description: 'Traditional server-side session management'
23
- },
24
- {
25
- label: 'OAuth 2.0',
26
- value: 'oauth',
27
- description: 'Delegated authentication using OAuth providers'
28
- }
29
- ],
30
- allowMultiple: false,
31
- allowOther: true,
32
- context: `This is for a new web application with expected **10k daily active users**.
33
-
34
- **Requirements:**
35
- - Must support \`refresh tokens\`
36
- - Should integrate with existing \`Redis\` cache
37
- - Need to handle \`multi-device\` sessions
38
-
39
- > **Note:** Security is critical - use industry standard practices.
40
-
41
- \`\`\`javascript
42
- // Example usage
43
- const token = generateToken(user);
44
- \`\`\`
45
-
46
- See [OAuth 2.0 Spec](https://oauth.net/2/) for details.`
47
- }
48
- },
49
- {
50
- name: 'Multiple Choice Question',
51
- request: {
52
- id: 'test-2',
53
- question: 'Which files should I include in the commit?',
54
- options: [
55
- {
56
- label: 'src/auth.ts',
57
- value: 'auth.ts',
58
- description: 'Main authentication module'
59
- },
60
- {
61
- label: 'src/middleware.ts',
62
- value: 'middleware.ts',
63
- description: 'Authentication middleware'
64
- },
65
- {
66
- label: 'tests/auth.test.ts',
67
- value: 'auth.test.ts',
68
- description: 'Unit tests for authentication'
69
- },
70
- {
71
- label: 'README.md',
72
- value: 'readme',
73
- description: 'Updated documentation'
74
- }
75
- ],
76
- allowMultiple: true,
77
- allowOther: false,
78
- context: 'Several files have been modified in the working directory'
79
- }
80
- },
81
- {
82
- name: 'Timeout Test',
83
- request: {
84
- id: 'test-3',
85
- question: 'This dialog will timeout in 10 seconds. Do you want to proceed?',
86
- options: [
87
- {
88
- label: 'Yes',
89
- value: 'yes'
90
- },
91
- {
92
- label: 'No',
93
- value: 'no'
94
- }
95
- ],
96
- allowMultiple: false,
97
- allowOther: false,
98
- timeout: 10000
99
- }
100
- }
101
- ];
102
- for (const testCase of testCases) {
103
- console.log(`\\n=== ${testCase.name} ===`);
104
- console.log(`Question: ${testCase.request.question}`);
105
- console.log('Waiting for user response...');
106
- try {
107
- const response = await manager.showDialog(testCase.request);
108
- console.log('Response received:', JSON.stringify(response, null, 2));
109
- }
110
- catch (error) {
111
- console.error('Error:', error instanceof Error ? error.message : error);
112
- }
113
- // Wait a bit between tests
114
- await new Promise(resolve => setTimeout(resolve, 2000));
115
- }
116
- console.log('\\nAll tests completed. Closing dialog manager...');
117
- await manager.close();
118
- process.exit(0);
119
- }
120
- // Run the test
121
- testDialogManager().catch(error => {
122
- console.error('Test failed:', error);
123
- process.exit(1);
124
- });
125
- //# sourceMappingURL=test-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-client.js","sourceRoot":"","sources":["../src/test-client.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-dialog-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-dialog-manager.d.ts","sourceRoot":"","sources":["../src/test-dialog-manager.ts"],"names":[],"mappings":""}
@@ -1,156 +0,0 @@
1
- // Simple test to verify the dialog manager works
2
- import { DialogManager } from './dialog-manager.js';
3
- async function runTests() {
4
- console.log('Starting DialogManager tests...\n');
5
- const manager = new DialogManager();
6
- let testsPassed = 0;
7
- let testsFailed = 0;
8
- // Test 1: Initialization
9
- try {
10
- const port = await manager.initialize();
11
- console.log('✓ Test 1 - Initialization: Server started on port', port);
12
- testsPassed++;
13
- }
14
- catch (error) {
15
- console.error('✗ Test 1 - Initialization failed:', error);
16
- testsFailed++;
17
- }
18
- // Test 2: HTML generation with XSS protection
19
- try {
20
- const html = manager.generateDialogHTML({
21
- id: 'test',
22
- question: '<script>alert("XSS")</script>',
23
- options: [
24
- {
25
- label: '<b>Bold</b>',
26
- value: 'test',
27
- description: '"Quotes" & \'apostrophes\''
28
- }
29
- ],
30
- allowMultiple: false,
31
- allowOther: true
32
- });
33
- if (html.includes('<script>alert') || html.includes('<b>Bold</b>')) {
34
- throw new Error('XSS protection failed');
35
- }
36
- if (!html.includes('&lt;script&gt;') || !html.includes('&lt;b&gt;')) {
37
- throw new Error('HTML should be escaped');
38
- }
39
- console.log('✓ Test 2 - XSS Protection: HTML properly escaped');
40
- testsPassed++;
41
- }
42
- catch (error) {
43
- console.error('✗ Test 2 - XSS Protection failed:', error);
44
- testsFailed++;
45
- }
46
- // Test 3: Radio vs Checkbox rendering
47
- try {
48
- const radioHtml = manager.generateDialogHTML({
49
- id: 'test',
50
- question: 'Choose one',
51
- options: [
52
- { label: 'A', value: 'a' },
53
- { label: 'B', value: 'b' }
54
- ],
55
- allowMultiple: false,
56
- allowOther: false
57
- });
58
- const checkboxHtml = manager.generateDialogHTML({
59
- id: 'test',
60
- question: 'Choose many',
61
- options: [
62
- { label: 'A', value: 'a' },
63
- { label: 'B', value: 'b' }
64
- ],
65
- allowMultiple: true,
66
- allowOther: false
67
- });
68
- if (!radioHtml.includes('type="radio"') || radioHtml.includes('type="checkbox"')) {
69
- throw new Error('Single choice should use radio buttons');
70
- }
71
- if (!checkboxHtml.includes('type="checkbox"') || checkboxHtml.includes('type="radio"')) {
72
- throw new Error('Multiple choice should use checkboxes');
73
- }
74
- console.log('✓ Test 3 - Input Types: Correct radio/checkbox rendering');
75
- testsPassed++;
76
- }
77
- catch (error) {
78
- console.error('✗ Test 3 - Input Types failed:', error);
79
- testsFailed++;
80
- }
81
- // Test 4: Other field inclusion
82
- try {
83
- const withOther = manager.generateDialogHTML({
84
- id: 'test',
85
- question: 'Choose',
86
- options: [{ label: 'A', value: 'a' }],
87
- allowMultiple: false,
88
- allowOther: true
89
- });
90
- const withoutOther = manager.generateDialogHTML({
91
- id: 'test',
92
- question: 'Choose',
93
- options: [{ label: 'A', value: 'a' }],
94
- allowMultiple: false,
95
- allowOther: false
96
- });
97
- if (!withOther.includes('other-input')) {
98
- throw new Error('Should include other field when allowed');
99
- }
100
- if (withoutOther.includes('Other (please specify)')) {
101
- throw new Error('Should not include other field when not allowed');
102
- }
103
- console.log('✓ Test 4 - Other Field: Correctly included/excluded');
104
- testsPassed++;
105
- }
106
- catch (error) {
107
- console.error('✗ Test 4 - Other Field failed:', error);
108
- testsFailed++;
109
- }
110
- // Test 5: Context inclusion
111
- try {
112
- const withContext = manager.generateDialogHTML({
113
- id: 'test',
114
- question: 'Test question',
115
- options: [{ label: 'Option 1', value: 'opt1' }],
116
- allowMultiple: false,
117
- allowOther: false,
118
- context: 'Important context information'
119
- });
120
- const withoutContext = manager.generateDialogHTML({
121
- id: 'test',
122
- question: 'Test question',
123
- options: [{ label: 'Option 1', value: 'opt1' }],
124
- allowMultiple: false,
125
- allowOther: false
126
- });
127
- if (!withContext.includes('Important context information')) {
128
- throw new Error('Should include context when provided');
129
- }
130
- if (withoutContext.includes('Context:')) {
131
- throw new Error('Should not include context section when not provided');
132
- }
133
- console.log('✓ Test 5 - Context: Correctly included/excluded');
134
- testsPassed++;
135
- }
136
- catch (error) {
137
- console.error('✗ Test 5 - Context failed:', error);
138
- testsFailed++;
139
- }
140
- // Cleanup
141
- await manager.close();
142
- // Summary
143
- console.log(`\n========== Test Summary ==========`);
144
- console.log(`Passed: ${testsPassed}`);
145
- console.log(`Failed: ${testsFailed}`);
146
- console.log(`Total: ${testsPassed + testsFailed}`);
147
- if (testsFailed > 0) {
148
- process.exit(1);
149
- }
150
- }
151
- // Run tests
152
- runTests().catch(error => {
153
- console.error('Test suite failed:', error);
154
- process.exit(1);
155
- });
156
- //# sourceMappingURL=test-dialog-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-dialog-manager.js","sourceRoot":"","sources":["../src/test-dialog-manager.ts"],"names":[],"mappings":"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"}