@achieveai/hitl-mcp-server 1.1.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.
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +131 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +54 -0
- package/dist/config.js.map +1 -0
- package/dist/git-context.d.ts +7 -0
- package/dist/git-context.d.ts.map +1 -0
- package/dist/git-context.js +29 -0
- package/dist/git-context.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/{index.js → mcp-server.js} +124 -113
- package/dist/mcp-server.js.map +1 -0
- package/dist/ntfy-transport.d.ts +41 -0
- package/dist/ntfy-transport.d.ts.map +1 -0
- package/dist/ntfy-transport.js +150 -0
- package/dist/ntfy-transport.js.map +1 -0
- package/dist/setup.d.ts +38 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +130 -0
- package/dist/setup.js.map +1 -0
- package/package.json +58 -62
- package/LICENSE +0 -20
- package/README.md +0 -422
- package/config/claude-desktop.json +0 -11
- package/config/cursor-mcp.json +0 -17
- package/config/vscode-mcp.json +0 -17
- package/dist/__tests__/dialog-manager.test.d.ts +0 -2
- package/dist/__tests__/dialog-manager.test.d.ts.map +0 -1
- package/dist/__tests__/dialog-manager.test.js +0 -140
- package/dist/__tests__/dialog-manager.test.js.map +0 -1
- package/dist/dialog-manager.d.ts +0 -36
- package/dist/dialog-manager.d.ts.map +0 -1
- package/dist/dialog-manager.js +0 -529
- package/dist/dialog-manager.js.map +0 -1
- package/dist/dialog-manager.test.d.ts +0 -2
- package/dist/dialog-manager.test.d.ts.map +0 -1
- package/dist/dialog-manager.test.js +0 -156
- package/dist/dialog-manager.test.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/test-client.d.ts +0 -3
- package/dist/test-client.d.ts.map +0 -1
- package/dist/test-client.js +0 -111
- package/dist/test-client.js.map +0 -1
- package/dist/test-dialog-manager.d.ts +0 -2
- package/dist/test-dialog-manager.d.ts.map +0 -1
- package/dist/test-dialog-manager.js +0 -156
- package/dist/test-dialog-manager.js.map +0 -1
- package/example-usage.md +0 -223
- package/mcp.json +0 -152
|
@@ -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('<script>') || !html.includes('<b>')) {
|
|
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":"AAAA,iDAAiD;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,KAAK,UAAU,QAAQ;IACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,IAAI,CAAC,CAAC;QACvE,WAAW,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC;QACH,MAAM,IAAI,GAAI,OAAe,CAAC,kBAAkB,CAAC;YAC/C,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,+BAA+B;YACzC,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,4BAA4B;iBAC1C;aACF;YACD,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,WAAW,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC;QACH,MAAM,SAAS,GAAI,OAAe,CAAC,kBAAkB,CAAC;YACpD,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC1B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;aAC3B;YACD,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAI,OAAe,CAAC,kBAAkB,CAAC;YACvD,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC1B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;aAC3B;YACD,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,WAAW,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC;QACH,MAAM,SAAS,GAAI,OAAe,CAAC,kBAAkB,CAAC;YACpD,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACrC,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAI,OAAe,CAAC,kBAAkB,CAAC;YACvD,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACrC,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,WAAW,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,WAAW,GAAI,OAAe,CAAC,kBAAkB,CAAC;YACtD,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,+BAA+B;SACzC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAI,OAAe,CAAC,kBAAkB,CAAC;YACzD,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,WAAW,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,UAAU;IACV,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAEtB,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;IAEpD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,YAAY;AACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -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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"}
|
package/dist/test-client.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-client.d.ts","sourceRoot":"","sources":["../src/test-client.ts"],"names":[],"mappings":""}
|
package/dist/test-client.js
DELETED
|
@@ -1,111 +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
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: 'Multiple Choice Question',
|
|
37
|
-
request: {
|
|
38
|
-
id: 'test-2',
|
|
39
|
-
question: 'Which files should I include in the commit?',
|
|
40
|
-
options: [
|
|
41
|
-
{
|
|
42
|
-
label: 'src/auth.ts',
|
|
43
|
-
value: 'auth.ts',
|
|
44
|
-
description: 'Main authentication module'
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
label: 'src/middleware.ts',
|
|
48
|
-
value: 'middleware.ts',
|
|
49
|
-
description: 'Authentication middleware'
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
label: 'tests/auth.test.ts',
|
|
53
|
-
value: 'auth.test.ts',
|
|
54
|
-
description: 'Unit tests for authentication'
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
label: 'README.md',
|
|
58
|
-
value: 'readme',
|
|
59
|
-
description: 'Updated documentation'
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
allowMultiple: true,
|
|
63
|
-
allowOther: false,
|
|
64
|
-
context: 'Several files have been modified in the working directory'
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: 'Timeout Test',
|
|
69
|
-
request: {
|
|
70
|
-
id: 'test-3',
|
|
71
|
-
question: 'This dialog will timeout in 10 seconds. Do you want to proceed?',
|
|
72
|
-
options: [
|
|
73
|
-
{
|
|
74
|
-
label: 'Yes',
|
|
75
|
-
value: 'yes'
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
label: 'No',
|
|
79
|
-
value: 'no'
|
|
80
|
-
}
|
|
81
|
-
],
|
|
82
|
-
allowMultiple: false,
|
|
83
|
-
allowOther: false,
|
|
84
|
-
timeout: 10000
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
];
|
|
88
|
-
for (const testCase of testCases) {
|
|
89
|
-
console.log(`\\n=== ${testCase.name} ===`);
|
|
90
|
-
console.log(`Question: ${testCase.request.question}`);
|
|
91
|
-
console.log('Waiting for user response...');
|
|
92
|
-
try {
|
|
93
|
-
const response = await manager.showDialog(testCase.request);
|
|
94
|
-
console.log('Response received:', JSON.stringify(response, null, 2));
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
console.error('Error:', error instanceof Error ? error.message : error);
|
|
98
|
-
}
|
|
99
|
-
// Wait a bit between tests
|
|
100
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
101
|
-
}
|
|
102
|
-
console.log('\\nAll tests completed. Closing dialog manager...');
|
|
103
|
-
await manager.close();
|
|
104
|
-
process.exit(0);
|
|
105
|
-
}
|
|
106
|
-
// Run the test
|
|
107
|
-
testDialogManager().catch(error => {
|
|
108
|
-
console.error('Test failed:', error);
|
|
109
|
-
process.exit(1);
|
|
110
|
-
});
|
|
111
|
-
//# sourceMappingURL=test-client.js.map
|
package/dist/test-client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-client.js","sourceRoot":"","sources":["../src/test-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -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('<script>') || !html.includes('<b>')) {
|
|
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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"}
|