@achieveai/hitl-mcp-server 1.2.0 → 2.1.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 (58) 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/mcp-server.js +237 -0
  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 +43 -0
  22. package/dist/setup.d.ts.map +1 -0
  23. package/dist/setup.js +184 -0
  24. package/dist/setup.js.map +1 -0
  25. package/package.json +61 -63
  26. package/scripts/postinstall.js +33 -0
  27. package/LICENSE +0 -20
  28. package/README.md +0 -422
  29. package/config/claude-desktop.json +0 -11
  30. package/config/cursor-mcp.json +0 -17
  31. package/config/vscode-mcp.json +0 -17
  32. package/dist/__tests__/dialog-manager.test.d.ts +0 -2
  33. package/dist/__tests__/dialog-manager.test.d.ts.map +0 -1
  34. package/dist/__tests__/dialog-manager.test.js +0 -140
  35. package/dist/__tests__/dialog-manager.test.js.map +0 -1
  36. package/dist/dialog-manager.d.ts +0 -37
  37. package/dist/dialog-manager.d.ts.map +0 -1
  38. package/dist/dialog-manager.js +0 -644
  39. package/dist/dialog-manager.js.map +0 -1
  40. package/dist/dialog-manager.test.d.ts +0 -2
  41. package/dist/dialog-manager.test.d.ts.map +0 -1
  42. package/dist/dialog-manager.test.js +0 -156
  43. package/dist/dialog-manager.test.js.map +0 -1
  44. package/dist/index.d.ts +0 -3
  45. package/dist/index.d.ts.map +0 -1
  46. package/dist/index.js +0 -222
  47. package/dist/index.js.map +0 -1
  48. package/dist/test-client.d.ts +0 -3
  49. package/dist/test-client.d.ts.map +0 -1
  50. package/dist/test-client.js +0 -125
  51. package/dist/test-client.js.map +0 -1
  52. package/dist/test-dialog-manager.d.ts +0 -2
  53. package/dist/test-dialog-manager.d.ts.map +0 -1
  54. package/dist/test-dialog-manager.js +0 -156
  55. package/dist/test-dialog-manager.js.map +0 -1
  56. package/example-usage.md +0 -223
  57. package/mcp.json +0 -152
  58. 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 DELETED
@@ -1,222 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
- import { CallToolRequestSchema, ListToolsRequestSchema, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
5
- import { DialogManager } from './dialog-manager.js';
6
- import { v4 as uuidv4 } from 'uuid';
7
- const TOOL_NAME = 'ask_human';
8
- const SERVER_NAME = 'hitl-mcp-server';
9
- const SERVER_VERSION = '1.0.0';
10
- class HumanInTheLoopServer {
11
- server;
12
- dialogManager;
13
- constructor() {
14
- this.server = new Server({
15
- name: SERVER_NAME,
16
- version: SERVER_VERSION,
17
- }, {
18
- capabilities: {
19
- tools: {},
20
- },
21
- });
22
- this.dialogManager = new DialogManager();
23
- this.setupHandlers();
24
- }
25
- setupHandlers() {
26
- this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
27
- tools: [
28
- {
29
- name: TOOL_NAME,
30
- description: `CRITICAL: Use this tool whenever you have ANY doubt or need human decision-making. This tool is ESSENTIAL for:
31
-
32
- WHEN TO USE (err on the side of asking):
33
- • You have even slight uncertainty about what the user wants
34
- • You need clarification on ambiguous requirements or instructions
35
- • The user explicitly told you to ask for their input on decisions
36
- • Multiple valid approaches exist and you're unsure which to choose
37
- • A decision could have significant consequences
38
- • You're about to make assumptions that might be wrong
39
- • You need confirmation before critical or irreversible actions
40
- • You need additional context not provided in your instructions
41
-
42
- HOW TO USE:
43
- • Provide clear, specific options for the human to choose from
44
- • Think carefully about which option you would recommend and mark it with "(RECOMMENDED)" in the label
45
- Example: { label: "PostgreSQL (RECOMMENDED)", value: "postgres", description: "Best for complex queries" }
46
- • The human can select one or more options AND provide additional context
47
- • The "(RECOMMENDED)" marker helps guide the user but won't appear in the returned value
48
-
49
- This tool opens an interactive browser dialog with a pleasant notification sound. The human can select options and optionally provide additional context to guide your next steps.
50
-
51
- IMPORTANT: When in doubt, ASK. Using this tool is far better than making incorrect assumptions. Getting human input ensures accuracy and alignment with user expectations.`,
52
- inputSchema: {
53
- type: 'object',
54
- properties: {
55
- question: {
56
- type: 'string',
57
- description: 'The question or decision you need help with. Be clear and specific.'
58
- },
59
- options: {
60
- type: 'array',
61
- description: 'Array of possible choices for the human to select from',
62
- items: {
63
- type: 'object',
64
- properties: {
65
- label: {
66
- type: 'string',
67
- description: 'Display label for this option'
68
- },
69
- value: {
70
- type: 'string',
71
- description: 'Value to return if this option is selected'
72
- },
73
- description: {
74
- type: 'string',
75
- description: 'Optional detailed description of what this option means'
76
- }
77
- },
78
- required: ['label', 'value']
79
- },
80
- minItems: 1
81
- },
82
- allowMultiple: {
83
- type: 'boolean',
84
- description: 'Whether to allow selecting multiple options (checkbox vs radio)',
85
- default: true
86
- },
87
- allowOther: {
88
- type: 'boolean',
89
- description: 'Whether to show an "Additional Context" text field where the user can provide supplementary information alongside their selection(s)',
90
- default: true
91
- },
92
- context: {
93
- type: 'string',
94
- description: 'Additional context to help the human understand the situation'
95
- },
96
- timeout: {
97
- type: 'number',
98
- description: 'Timeout in milliseconds (default: no timeout)',
99
- minimum: 1000,
100
- maximum: 3600000
101
- }
102
- },
103
- required: ['question', 'options']
104
- }
105
- }
106
- ]
107
- }));
108
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
109
- if (request.params.name !== TOOL_NAME) {
110
- throw new McpError(ErrorCode.MethodNotFound, `Tool not found: ${request.params.name}`);
111
- }
112
- const args = request.params.arguments;
113
- if (!args.question || !Array.isArray(args.options) || args.options.length === 0) {
114
- throw new McpError(ErrorCode.InvalidParams, 'Missing required parameters: question and options array');
115
- }
116
- try {
117
- const dialogOptions = args.options.map((opt) => ({
118
- label: opt.label || opt.value,
119
- value: opt.value,
120
- description: opt.description
121
- }));
122
- const response = await this.dialogManager.showDialog({
123
- id: uuidv4(),
124
- question: args.question,
125
- options: dialogOptions,
126
- allowMultiple: args.allowMultiple !== false,
127
- allowOther: args.allowOther !== false,
128
- context: args.context,
129
- timeout: args.timeout
130
- });
131
- // Helper function to strip (RECOMMENDED) markers from values
132
- const stripRecommended = (value) => {
133
- return value.replace(/\s*\(RECOMMENDED\)\s*/gi, '').trim();
134
- };
135
- let result = {
136
- success: true,
137
- timestamp: response.timestamp
138
- };
139
- if (response.otherText === 'SKIPPED') {
140
- result.skipped = true;
141
- result.response = 'User skipped this question';
142
- result.responseType = 'skipped';
143
- }
144
- else {
145
- // Clean the selected values
146
- const cleanedValues = response.selectedValues.map(stripRecommended);
147
- // Include selected values if any
148
- if (cleanedValues.length > 0) {
149
- result.selectedValues = args.allowMultiple ? cleanedValues : cleanedValues[0];
150
- }
151
- // Include context if provided
152
- if (response.otherText && response.otherText !== '') {
153
- result.context = response.otherText;
154
- }
155
- // Determine response type
156
- if (cleanedValues.length > 0 && result.context) {
157
- result.responseType = 'selection_with_context';
158
- }
159
- else if (cleanedValues.length > 0) {
160
- result.responseType = 'selection';
161
- }
162
- else if (result.context) {
163
- result.responseType = 'context_only';
164
- }
165
- else {
166
- result.responseType = 'none';
167
- }
168
- }
169
- return {
170
- content: [
171
- {
172
- type: 'text',
173
- text: JSON.stringify(result, null, 2)
174
- }
175
- ]
176
- };
177
- }
178
- catch (error) {
179
- console.error('Dialog error:', error);
180
- if (error instanceof Error && error.message === 'Dialog timeout') {
181
- return {
182
- content: [
183
- {
184
- type: 'text',
185
- text: JSON.stringify({
186
- success: false,
187
- error: 'timeout',
188
- message: 'The user did not respond within the timeout period'
189
- }, null, 2)
190
- }
191
- ]
192
- };
193
- }
194
- throw new McpError(ErrorCode.InternalError, `Failed to show dialog: ${error instanceof Error ? error.message : 'Unknown error'}`);
195
- }
196
- });
197
- }
198
- async run() {
199
- const transport = new StdioServerTransport();
200
- await this.dialogManager.initialize();
201
- await this.server.connect(transport);
202
- console.error(`${SERVER_NAME} v${SERVER_VERSION} running on stdio`);
203
- process.on('SIGINT', async () => {
204
- await this.cleanup();
205
- process.exit(0);
206
- });
207
- process.on('SIGTERM', async () => {
208
- await this.cleanup();
209
- process.exit(0);
210
- });
211
- }
212
- async cleanup() {
213
- console.error('Shutting down...');
214
- await this.dialogManager.close();
215
- }
216
- }
217
- const server = new HumanInTheLoopServer();
218
- server.run().catch((error) => {
219
- console.error('Server error:', error);
220
- process.exit(1);
221
- });
222
- //# sourceMappingURL=index.js.map
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":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,KAAK,UAAU,iBAAiB;IAC9B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAE3B,MAAM,SAAS,GAAG;QAChB;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE;gBACP,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE,yEAAyE;gBACnF,OAAO,EAAE;oBACP;wBACE,KAAK,EAAE,YAAY;wBACnB,KAAK,EAAE,KAAK;wBACZ,WAAW,EAAE,gDAAgD;qBAC9D;oBACD;wBACE,KAAK,EAAE,eAAe;wBACtB,KAAK,EAAE,SAAS;wBAChB,WAAW,EAAE,4CAA4C;qBAC1D;oBACD;wBACE,KAAK,EAAE,WAAW;wBAClB,KAAK,EAAE,OAAO;wBACd,WAAW,EAAE,gDAAgD;qBAC9D;iBACF;gBACD,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE;;;;;;;;;;;;;;wDAcuC;aACjD;SACF;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE;gBACP,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE,6CAA6C;gBACvD,OAAO,EAAE;oBACP;wBACE,KAAK,EAAE,aAAa;wBACpB,KAAK,EAAE,SAAS;wBAChB,WAAW,EAAE,4BAA4B;qBAC1C;oBACD;wBACE,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,eAAe;wBACtB,WAAW,EAAE,2BAA2B;qBACzC;oBACD;wBACE,KAAK,EAAE,oBAAoB;wBAC3B,KAAK,EAAE,cAAc;wBACrB,WAAW,EAAE,+BAA+B;qBAC7C;oBACD;wBACE,KAAK,EAAE,WAAW;wBAClB,KAAK,EAAE,QAAQ;wBACf,WAAW,EAAE,uBAAuB;qBACrC;iBACF;gBACD,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,2DAA2D;aACrE;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE,iEAAiE;gBAC3E,OAAO,EAAE;oBACP;wBACE,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,KAAK;qBACb;oBACD;wBACE,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,IAAI;qBACZ;iBACF;gBACD,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;aACf;SACF;KACF,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC;QAED,2BAA2B;QAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,eAAe;AACf,iBAAiB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IAChC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -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":""}