codevf 1.0.0 → 1.0.1

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 (199) hide show
  1. package/LICENSE +30 -21
  2. package/README.md +6 -1
  3. package/bin/codevf-mcp.js +11 -0
  4. package/dist/commands/fix.d.ts +5 -1
  5. package/dist/commands/fix.d.ts.map +1 -1
  6. package/dist/commands/fix.js +170 -13
  7. package/dist/commands/fix.js.map +1 -1
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +72 -2
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/mcp-tools.d.ts +17 -0
  12. package/dist/commands/mcp-tools.d.ts.map +1 -0
  13. package/dist/commands/mcp-tools.js +237 -0
  14. package/dist/commands/mcp-tools.js.map +1 -0
  15. package/dist/commands/setup.d.ts +8 -0
  16. package/dist/commands/setup.d.ts.map +1 -0
  17. package/dist/commands/setup.js +250 -0
  18. package/dist/commands/setup.js.map +1 -0
  19. package/dist/commands/welcome.d.ts +9 -0
  20. package/dist/commands/welcome.d.ts.map +1 -0
  21. package/dist/commands/welcome.js +175 -0
  22. package/dist/commands/welcome.js.map +1 -0
  23. package/dist/index.js +194 -149
  24. package/dist/index.js.map +1 -1
  25. package/dist/lib/api/client.d.ts +28 -0
  26. package/dist/lib/api/client.d.ts.map +1 -0
  27. package/dist/lib/api/client.js +66 -0
  28. package/dist/lib/api/client.js.map +1 -0
  29. package/dist/lib/api/tasks.d.ts +36 -0
  30. package/dist/lib/api/tasks.d.ts.map +1 -0
  31. package/dist/lib/api/tasks.js +62 -0
  32. package/dist/lib/api/tasks.js.map +1 -0
  33. package/dist/lib/api/websocket.d.ts +50 -0
  34. package/dist/lib/api/websocket.d.ts.map +1 -0
  35. package/dist/lib/api/websocket.js +153 -0
  36. package/dist/lib/api/websocket.js.map +1 -0
  37. package/dist/lib/auth/oauth-flow.d.ts +37 -0
  38. package/dist/lib/auth/oauth-flow.d.ts.map +1 -0
  39. package/dist/lib/auth/oauth-flow.js +119 -0
  40. package/dist/lib/auth/oauth-flow.js.map +1 -0
  41. package/dist/lib/auth/token-manager.d.ts +26 -0
  42. package/dist/lib/auth/token-manager.d.ts.map +1 -0
  43. package/dist/lib/auth/token-manager.js +87 -0
  44. package/dist/lib/auth/token-manager.js.map +1 -0
  45. package/dist/lib/config/manager.d.ts +50 -0
  46. package/dist/lib/config/manager.d.ts.map +1 -0
  47. package/dist/lib/config/manager.js +84 -0
  48. package/dist/lib/config/manager.js.map +1 -0
  49. package/dist/lib/utils/errors.d.ts +28 -0
  50. package/dist/lib/utils/errors.d.ts.map +1 -0
  51. package/dist/lib/utils/errors.js +44 -0
  52. package/dist/lib/utils/errors.js.map +1 -0
  53. package/dist/lib/utils/logger.d.ts +20 -0
  54. package/dist/lib/utils/logger.d.ts.map +1 -0
  55. package/dist/lib/utils/logger.js +40 -0
  56. package/dist/lib/utils/logger.js.map +1 -0
  57. package/dist/mcp/index.d.ts +7 -0
  58. package/dist/mcp/index.d.ts.map +1 -0
  59. package/dist/mcp/index.js +158 -0
  60. package/dist/mcp/index.js.map +1 -0
  61. package/dist/mcp/tools/chat.d.ts +30 -0
  62. package/dist/mcp/tools/chat.d.ts.map +1 -0
  63. package/dist/mcp/tools/chat.js +82 -0
  64. package/dist/mcp/tools/chat.js.map +1 -0
  65. package/dist/mcp/tools/instant.d.ts +36 -0
  66. package/dist/mcp/tools/instant.d.ts.map +1 -0
  67. package/dist/mcp/tools/instant.js +100 -0
  68. package/dist/mcp/tools/instant.js.map +1 -0
  69. package/dist/modules/aiAgent.d.ts +75 -0
  70. package/dist/modules/aiAgent.d.ts.map +1 -0
  71. package/dist/modules/aiAgent.js +707 -0
  72. package/dist/modules/aiAgent.js.map +1 -0
  73. package/dist/modules/api.d.ts +7 -0
  74. package/dist/modules/api.d.ts.map +1 -1
  75. package/dist/modules/api.js +13 -4
  76. package/dist/modules/api.js.map +1 -1
  77. package/dist/modules/commandHandler.d.ts +40 -0
  78. package/dist/modules/commandHandler.d.ts.map +1 -0
  79. package/dist/modules/commandHandler.js +345 -0
  80. package/dist/modules/commandHandler.js.map +1 -0
  81. package/dist/modules/config.d.ts +2 -0
  82. package/dist/modules/config.d.ts.map +1 -1
  83. package/dist/modules/config.js +9 -0
  84. package/dist/modules/config.js.map +1 -1
  85. package/dist/modules/constants.d.ts +83 -0
  86. package/dist/modules/constants.d.ts.map +1 -0
  87. package/dist/modules/constants.js +75 -0
  88. package/dist/modules/constants.js.map +1 -0
  89. package/dist/modules/permissions.d.ts +14 -0
  90. package/dist/modules/permissions.d.ts.map +1 -1
  91. package/dist/modules/permissions.js +94 -0
  92. package/dist/modules/permissions.js.map +1 -1
  93. package/dist/modules/toolRegistry.d.ts +50 -0
  94. package/dist/modules/toolRegistry.d.ts.map +1 -0
  95. package/dist/modules/toolRegistry.js +114 -0
  96. package/dist/modules/toolRegistry.js.map +1 -0
  97. package/dist/modules/tunnel.d.ts +33 -0
  98. package/dist/modules/tunnel.d.ts.map +1 -0
  99. package/dist/modules/tunnel.js +79 -0
  100. package/dist/modules/tunnel.js.map +1 -0
  101. package/dist/modules/vibeHelper.d.ts +16 -0
  102. package/dist/modules/vibeHelper.d.ts.map +1 -0
  103. package/dist/modules/vibeHelper.js +38 -0
  104. package/dist/modules/vibeHelper.js.map +1 -0
  105. package/dist/modules/websocket.d.ts +9 -0
  106. package/dist/modules/websocket.d.ts.map +1 -1
  107. package/dist/modules/websocket.js +70 -0
  108. package/dist/modules/websocket.js.map +1 -1
  109. package/dist/tools/consultEngineer.d.ts +13 -0
  110. package/dist/tools/consultEngineer.d.ts.map +1 -0
  111. package/dist/tools/consultEngineer.js +161 -0
  112. package/dist/tools/consultEngineer.js.map +1 -0
  113. package/dist/tools/realtimeChat.d.ts +9 -0
  114. package/dist/tools/realtimeChat.d.ts.map +1 -0
  115. package/dist/tools/realtimeChat.js +101 -0
  116. package/dist/tools/realtimeChat.js.map +1 -0
  117. package/dist/types/index.d.ts +183 -0
  118. package/dist/types/index.d.ts.map +1 -1
  119. package/dist/types/index.js.map +1 -1
  120. package/dist/ui/InteractiveApp.d.ts +13 -0
  121. package/dist/ui/InteractiveApp.d.ts.map +1 -0
  122. package/dist/ui/InteractiveApp.js +84 -0
  123. package/dist/ui/InteractiveApp.js.map +1 -0
  124. package/dist/ui/InteractivePrompt.d.ts +53 -0
  125. package/dist/ui/InteractivePrompt.d.ts.map +1 -0
  126. package/dist/ui/InteractivePrompt.js +422 -0
  127. package/dist/ui/InteractivePrompt.js.map +1 -0
  128. package/dist/ui/LiveSession.d.ts +2 -0
  129. package/dist/ui/LiveSession.d.ts.map +1 -1
  130. package/dist/ui/LiveSession.js +461 -180
  131. package/dist/ui/LiveSession.js.map +1 -1
  132. package/dist/ui/PromptInput.d.ts +14 -0
  133. package/dist/ui/PromptInput.d.ts.map +1 -0
  134. package/dist/ui/PromptInput.js +206 -0
  135. package/dist/ui/PromptInput.js.map +1 -0
  136. package/dist/ui/SessionUI.d.ts +40 -0
  137. package/dist/ui/SessionUI.d.ts.map +1 -0
  138. package/dist/ui/SessionUI.js +227 -0
  139. package/dist/ui/SessionUI.js.map +1 -0
  140. package/dist/ui/input/Command.d.ts +22 -0
  141. package/dist/ui/input/Command.d.ts.map +1 -0
  142. package/dist/ui/input/Command.js +30 -0
  143. package/dist/ui/input/Command.js.map +1 -0
  144. package/dist/ui/input/CustomInput.d.ts +15 -0
  145. package/dist/ui/input/CustomInput.d.ts.map +1 -0
  146. package/dist/ui/input/CustomInput.js +182 -0
  147. package/dist/ui/input/CustomInput.js.map +1 -0
  148. package/dist/ui/input/handlers/handleCursor.d.ts +22 -0
  149. package/dist/ui/input/handlers/handleCursor.d.ts.map +1 -0
  150. package/dist/ui/input/handlers/handleCursor.js +53 -0
  151. package/dist/ui/input/handlers/handleCursor.js.map +1 -0
  152. package/dist/ui/input/handlers/handleEdit.d.ts +18 -0
  153. package/dist/ui/input/handlers/handleEdit.d.ts.map +1 -0
  154. package/dist/ui/input/handlers/handleEdit.js +55 -0
  155. package/dist/ui/input/handlers/handleEdit.js.map +1 -0
  156. package/dist/ui/input/handlers/handleHistory.d.ts +18 -0
  157. package/dist/ui/input/handlers/handleHistory.d.ts.map +1 -0
  158. package/dist/ui/input/handlers/handleHistory.js +85 -0
  159. package/dist/ui/input/handlers/handleHistory.js.map +1 -0
  160. package/dist/ui/input/handlers/handlePaste.d.ts +19 -0
  161. package/dist/ui/input/handlers/handlePaste.d.ts.map +1 -0
  162. package/dist/ui/input/handlers/handlePaste.js +49 -0
  163. package/dist/ui/input/handlers/handlePaste.js.map +1 -0
  164. package/dist/ui/input/handlers/handleSubmit.d.ts +18 -0
  165. package/dist/ui/input/handlers/handleSubmit.d.ts.map +1 -0
  166. package/dist/ui/input/handlers/handleSubmit.js +39 -0
  167. package/dist/ui/input/handlers/handleSubmit.js.map +1 -0
  168. package/dist/ui/input/helpers.d.ts +4 -0
  169. package/dist/ui/input/helpers.d.ts.map +1 -0
  170. package/dist/ui/input/helpers.js +13 -0
  171. package/dist/ui/input/helpers.js.map +1 -0
  172. package/dist/ui/input/keyMatchers.d.ts +14 -0
  173. package/dist/ui/input/keyMatchers.d.ts.map +1 -0
  174. package/dist/ui/input/keyMatchers.js +49 -0
  175. package/dist/ui/input/keyMatchers.js.map +1 -0
  176. package/dist/ui/input/types.d.ts +33 -0
  177. package/dist/ui/input/types.d.ts.map +1 -0
  178. package/dist/ui/input/types.js +2 -0
  179. package/dist/ui/input/types.js.map +1 -0
  180. package/dist/ui/promptWithModes.d.ts +12 -0
  181. package/dist/ui/promptWithModes.d.ts.map +1 -0
  182. package/dist/ui/promptWithModes.js +24 -0
  183. package/dist/ui/promptWithModes.js.map +1 -0
  184. package/dist/ui/renderPrompt.d.ts +12 -0
  185. package/dist/ui/renderPrompt.d.ts.map +1 -0
  186. package/dist/ui/renderPrompt.js +14 -0
  187. package/dist/ui/renderPrompt.js.map +1 -0
  188. package/dist/ui/simplePrompt.d.ts +7 -0
  189. package/dist/ui/simplePrompt.d.ts.map +1 -0
  190. package/dist/ui/simplePrompt.js +38 -0
  191. package/dist/ui/simplePrompt.js.map +1 -0
  192. package/dist/ui/spinner.d.ts +7 -0
  193. package/dist/ui/spinner.d.ts.map +1 -0
  194. package/dist/ui/spinner.js +13 -0
  195. package/dist/ui/spinner.js.map +1 -0
  196. package/package.json +36 -25
  197. package/ARCHITECTURE.md +0 -285
  198. package/BUILD_SUMMARY.md +0 -340
  199. package/QUICKSTART.md +0 -180
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CodeVF MCP Server
4
+ * Enables Claude Code to delegate tasks to human engineers
5
+ */
6
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
9
+ import { ConfigManager } from '../lib/config/manager.js';
10
+ import { TokenManager } from '../lib/auth/token-manager.js';
11
+ import { ApiClient } from '../lib/api/client.js';
12
+ import { TasksApi } from '../lib/api/tasks.js';
13
+ import { InstantTool } from './tools/instant.js';
14
+ import { ChatTool } from './tools/chat.js';
15
+ import { logger, LogLevel } from '../lib/utils/logger.js';
16
+ /**
17
+ * Initialize MCP Server
18
+ */
19
+ async function main() {
20
+ // Set log level from environment
21
+ if (process.env.DEBUG) {
22
+ logger.setLevel(LogLevel.DEBUG);
23
+ }
24
+ // Check if configured
25
+ const configManager = new ConfigManager('mcp-config.json');
26
+ if (!configManager.exists()) {
27
+ console.error('Error: Not configured. Run: codevf setup');
28
+ process.exit(1);
29
+ }
30
+ // Load configuration
31
+ let config;
32
+ try {
33
+ config = configManager.load();
34
+ }
35
+ catch (error) {
36
+ console.error('Error loading config:', error.message);
37
+ process.exit(1);
38
+ }
39
+ // Initialize components
40
+ const tokenManager = new TokenManager(configManager);
41
+ const apiClient = new ApiClient(config.baseUrl, tokenManager);
42
+ const defaultProjectId = config.defaults?.projectId || '1';
43
+ const tasksApi = new TasksApi(apiClient, config.baseUrl, defaultProjectId);
44
+ const instantTool = new InstantTool(tasksApi, tokenManager, config.baseUrl);
45
+ const chatTool = new ChatTool(tasksApi, config.baseUrl);
46
+ // Create MCP server
47
+ const server = new Server({
48
+ name: 'codevf',
49
+ version: '0.1.0',
50
+ }, {
51
+ capabilities: {
52
+ tools: {},
53
+ },
54
+ });
55
+ // Register tools
56
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
57
+ return {
58
+ tools: [
59
+ {
60
+ name: 'codevf-instant',
61
+ description: 'Get quick validation from human engineer (1-10 credits). Use for: testing if fix works, identifying errors, quick questions. Returns single response from engineer.',
62
+ inputSchema: {
63
+ type: 'object',
64
+ properties: {
65
+ message: {
66
+ type: 'string',
67
+ description: 'Question or request for the engineer',
68
+ },
69
+ maxCredits: {
70
+ type: 'number',
71
+ description: 'Maximum credits to spend (1-10, default: 10)',
72
+ default: 10,
73
+ minimum: 1,
74
+ maximum: 10,
75
+ },
76
+ },
77
+ required: ['message'],
78
+ },
79
+ },
80
+ {
81
+ name: 'codevf-chat',
82
+ description: 'Start extended debugging session with human engineer (4-1920 credits). Use for: complex bugs, multi-step debugging, architecture questions. Returns session URL for monitoring.',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {
86
+ message: {
87
+ type: 'string',
88
+ description: 'Initial message or problem description for the engineer',
89
+ },
90
+ maxCredits: {
91
+ type: 'number',
92
+ description: 'Maximum credits to spend (4-1920, default: 240). Rate: 2 credits/minute',
93
+ default: 240,
94
+ minimum: 4,
95
+ maximum: 1920,
96
+ },
97
+ },
98
+ required: ['message'],
99
+ },
100
+ },
101
+ ],
102
+ };
103
+ });
104
+ // Handle tool calls
105
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
106
+ const { name, arguments: args } = request.params;
107
+ try {
108
+ let result;
109
+ switch (name) {
110
+ case 'codevf-instant':
111
+ result = await instantTool.execute(args);
112
+ break;
113
+ case 'codevf-chat':
114
+ result = await chatTool.execute(args);
115
+ break;
116
+ default:
117
+ result = {
118
+ content: [
119
+ {
120
+ type: 'text',
121
+ text: `Unknown tool: ${name}`,
122
+ },
123
+ ],
124
+ isError: true,
125
+ };
126
+ }
127
+ return result;
128
+ }
129
+ catch (error) {
130
+ logger.error('Tool execution error', error);
131
+ return {
132
+ content: [
133
+ {
134
+ type: 'text',
135
+ text: `Error: ${error.message}`,
136
+ },
137
+ ],
138
+ isError: true,
139
+ };
140
+ }
141
+ });
142
+ // Start server
143
+ const transport = new StdioServerTransport();
144
+ await server.connect(transport);
145
+ logger.info('CodeVF MCP Server started');
146
+ // Handle shutdown
147
+ process.on('SIGINT', async () => {
148
+ logger.info('Shutting down...');
149
+ await server.close();
150
+ process.exit(0);
151
+ });
152
+ }
153
+ // Run server
154
+ main().catch((error) => {
155
+ console.error('Fatal error:', error);
156
+ process.exit(1);
157
+ });
158
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,iCAAiC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,sBAAsB;IACtB,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3D,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,GAAG,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAExD,oBAAoB;IACpB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EACT,qKAAqK;oBACvK,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sCAAsC;6BACpD;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8CAA8C;gCAC3D,OAAO,EAAE,EAAE;gCACX,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,EAAE;6BACZ;yBACF;wBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;qBACtB;iBACF;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,WAAW,EACT,iLAAiL;oBACnL,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yDAAyD;6BACvE;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,yEAAyE;gCAC3E,OAAO,EAAE,GAAG;gCACZ,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,IAAI;6BACd;yBACF;wBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;qBACtB;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC;YACX,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,gBAAgB;oBACnB,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAW,CAAC,CAAC;oBAChD,MAAM;gBAER,KAAK,aAAa;oBAChB,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAW,CAAC,CAAC;oBAC7C,MAAM;gBAER;oBACE,MAAM,GAAG;wBACP,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,iBAAiB,IAAI,EAAE;6BAC9B;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;YACN,CAAC;YAED,OAAO,MAAa,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAE5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAW,KAAe,CAAC,OAAO,EAAE;qBAC3C;iBACF;gBACD,OAAO,EAAE,IAAI;aACP,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAEzC,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,aAAa;AACb,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * codevf-chat tool implementation
3
+ * Extended collaboration sessions
4
+ */
5
+ import { TasksApi } from '../../lib/api/tasks.js';
6
+ export interface ChatToolArgs {
7
+ message: string;
8
+ maxCredits?: number;
9
+ }
10
+ export interface ChatToolResult {
11
+ content: Array<{
12
+ type: string;
13
+ text: string;
14
+ }>;
15
+ isError?: boolean;
16
+ }
17
+ export declare class ChatTool {
18
+ private tasksApi;
19
+ private baseUrl;
20
+ constructor(tasksApi: TasksApi, baseUrl: string);
21
+ /**
22
+ * Handle codevf-chat tool call
23
+ */
24
+ execute(args: ChatToolArgs): Promise<ChatToolResult>;
25
+ /**
26
+ * Format chat session info
27
+ */
28
+ private formatResponse;
29
+ }
30
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/chat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IAK/C;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAwD1D;;OAEG;IACH,OAAO,CAAC,cAAc;CAyBvB"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * codevf-chat tool implementation
3
+ * Extended collaboration sessions
4
+ */
5
+ import { logger } from '../../lib/utils/logger.js';
6
+ export class ChatTool {
7
+ constructor(tasksApi, baseUrl) {
8
+ this.tasksApi = tasksApi;
9
+ this.baseUrl = baseUrl;
10
+ }
11
+ /**
12
+ * Handle codevf-chat tool call
13
+ */
14
+ async execute(args) {
15
+ try {
16
+ logger.info('Executing codevf-chat', { message: args.message });
17
+ // Validate credits
18
+ const maxCredits = args.maxCredits || 240;
19
+ if (maxCredits < 4 || maxCredits > 1920) {
20
+ return {
21
+ content: [
22
+ {
23
+ type: 'text',
24
+ text: 'Error: maxCredits must be between 4 and 1920 for chat sessions',
25
+ },
26
+ ],
27
+ isError: true,
28
+ };
29
+ }
30
+ // Create task
31
+ const task = await this.tasksApi.create({
32
+ message: args.message,
33
+ taskMode: 'realtime_chat',
34
+ maxCredits,
35
+ });
36
+ logger.info('Chat session created', {
37
+ taskId: task.taskId,
38
+ actionId: task.actionId,
39
+ });
40
+ // Format response with session info
41
+ const formattedResponse = this.formatResponse(task, maxCredits);
42
+ return {
43
+ content: [
44
+ {
45
+ type: 'text',
46
+ text: formattedResponse,
47
+ },
48
+ ],
49
+ };
50
+ }
51
+ catch (error) {
52
+ logger.error('codevf-chat failed', error);
53
+ return {
54
+ content: [
55
+ {
56
+ type: 'text',
57
+ text: `Error: ${error.message}`,
58
+ },
59
+ ],
60
+ isError: true,
61
+ };
62
+ }
63
+ }
64
+ /**
65
+ * Format chat session info
66
+ */
67
+ formatResponse(task, maxCredits) {
68
+ const sessionUrl = `${this.baseUrl}/session/${task.actionId}`;
69
+ let output = 'Chat session started with engineer.\n\n';
70
+ output += `Session URL: ${sessionUrl}\n\n`;
71
+ output += 'Share this link with your user to monitor the conversation.\n\n';
72
+ output += `Max credits: ${maxCredits}\n`;
73
+ output += `Rate: 2 credits/minute\n`;
74
+ output += `Estimated duration: ${Math.floor(maxCredits / 2)} minutes\n`;
75
+ if (task.warning) {
76
+ output += `\n⚠️ ${task.warning}\n`;
77
+ }
78
+ output += `\nCredits remaining: ${task.creditsRemaining}\n`;
79
+ return output;
80
+ }
81
+ }
82
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/mcp/tools/chat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAYnD,MAAM,OAAO,QAAQ;IAInB,YAAY,QAAkB,EAAE,OAAe;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAkB;QAC9B,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAEhE,mBAAmB;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;YAC1C,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gEAAgE;yBACvE;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,cAAc;YACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,eAAe;gBACzB,UAAU;aACX,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAClC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YAEH,oCAAoC;YACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iBAAiB;qBACxB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAE1C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAW,KAAe,CAAC,OAAO,EAAE;qBAC3C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,IAIC,EACD,UAAkB;QAElB,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9D,IAAI,MAAM,GAAG,yCAAyC,CAAC;QACvD,MAAM,IAAI,gBAAgB,UAAU,MAAM,CAAC;QAC3C,MAAM,IAAI,iEAAiE,CAAC;QAC5E,MAAM,IAAI,gBAAgB,UAAU,IAAI,CAAC;QACzC,MAAM,IAAI,0BAA0B,CAAC;QACrC,MAAM,IAAI,uBAAuB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC;QAExE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC;QACtC,CAAC;QAED,MAAM,IAAI,wBAAwB,IAAI,CAAC,gBAAgB,IAAI,CAAC;QAE5D,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * codevf-instant tool implementation
3
+ * Quick validation queries with single response
4
+ */
5
+ import { TasksApi } from '../../lib/api/tasks.js';
6
+ import { TokenManager } from '../../lib/auth/token-manager.js';
7
+ export interface InstantToolArgs {
8
+ message: string;
9
+ maxCredits?: number;
10
+ }
11
+ export interface InstantToolResult {
12
+ content: Array<{
13
+ type: string;
14
+ text: string;
15
+ }>;
16
+ isError?: boolean;
17
+ }
18
+ export declare class InstantTool {
19
+ private tasksApi;
20
+ private tokenManager;
21
+ private baseUrl;
22
+ constructor(tasksApi: TasksApi, tokenManager: TokenManager, baseUrl: string);
23
+ /**
24
+ * Handle codevf-instant tool call
25
+ */
26
+ execute(args: InstantToolArgs): Promise<InstantToolResult>;
27
+ /**
28
+ * Get WebSocket connection URL
29
+ */
30
+ private getWebSocketUrl;
31
+ /**
32
+ * Format engineer response
33
+ */
34
+ private formatResponse;
35
+ }
36
+ //# sourceMappingURL=instant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/instant.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAS;gBAEZ,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;IAM3E;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyEhE;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,cAAc;CAgBvB"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * codevf-instant tool implementation
3
+ * Quick validation queries with single response
4
+ */
5
+ import { WebSocketClient } from '../../lib/api/websocket.js';
6
+ import { logger } from '../../lib/utils/logger.js';
7
+ export class InstantTool {
8
+ constructor(tasksApi, tokenManager, baseUrl) {
9
+ this.tasksApi = tasksApi;
10
+ this.tokenManager = tokenManager;
11
+ this.baseUrl = baseUrl;
12
+ }
13
+ /**
14
+ * Handle codevf-instant tool call
15
+ */
16
+ async execute(args) {
17
+ try {
18
+ logger.info('Executing codevf-instant', { message: args.message });
19
+ // Validate credits
20
+ const maxCredits = args.maxCredits || 10;
21
+ if (maxCredits < 1 || maxCredits > 10) {
22
+ return {
23
+ content: [
24
+ {
25
+ type: 'text',
26
+ text: 'Error: maxCredits must be between 1 and 10 for instant queries',
27
+ },
28
+ ],
29
+ isError: true,
30
+ };
31
+ }
32
+ // Create task
33
+ const task = await this.tasksApi.create({
34
+ message: args.message,
35
+ taskMode: 'realtime_answer',
36
+ maxCredits,
37
+ });
38
+ logger.info('Task created', { taskId: task.taskId });
39
+ // Show warning if low balance
40
+ if (task.warning) {
41
+ logger.warn('Credit warning', { warning: task.warning });
42
+ }
43
+ // Connect WebSocket
44
+ const token = await this.tokenManager.getValidToken();
45
+ const wsUrl = this.getWebSocketUrl(task.taskId, token);
46
+ const ws = new WebSocketClient(wsUrl);
47
+ await ws.connect();
48
+ logger.info('Waiting for engineer response...');
49
+ // Wait for response (5 min timeout)
50
+ const response = await ws.waitForResponse(300000);
51
+ // Disconnect
52
+ ws.disconnect();
53
+ // Format response
54
+ const formattedResponse = this.formatResponse(response, task.warning);
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: formattedResponse,
60
+ },
61
+ ],
62
+ };
63
+ }
64
+ catch (error) {
65
+ logger.error('codevf-instant failed', error);
66
+ return {
67
+ content: [
68
+ {
69
+ type: 'text',
70
+ text: `Error: ${error.message}`,
71
+ },
72
+ ],
73
+ isError: true,
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * Get WebSocket connection URL
79
+ */
80
+ getWebSocketUrl(taskId, token) {
81
+ const wsProtocol = this.baseUrl.startsWith('https://') ? 'wss://' : 'ws://';
82
+ const host = this.baseUrl.replace(/^https?:\/\//, '');
83
+ return `${wsProtocol}${host}/ws?taskId=${taskId}&userType=customer&token=${token}`;
84
+ }
85
+ /**
86
+ * Format engineer response
87
+ */
88
+ formatResponse(response, warning) {
89
+ let output = 'Engineer Response:\n\n';
90
+ output += response.text + '\n\n';
91
+ output += '---\n';
92
+ output += `Credits used: ${response.creditsUsed}\n`;
93
+ output += `Session time: ${response.duration}\n`;
94
+ if (warning) {
95
+ output += `\n⚠️ ${warning}\n`;
96
+ }
97
+ return output;
98
+ }
99
+ }
100
+ //# sourceMappingURL=instant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instant.js","sourceRoot":"","sources":["../../../src/mcp/tools/instant.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { ConfigManager } from './config.js';
2
+ import { AiTool } from '../types/index.js';
3
+ export interface AiRunResult {
4
+ output: string;
5
+ transcript: string[];
6
+ confidence?: 'high' | 'low' | 'failed';
7
+ suggestFallback?: boolean;
8
+ needsMoreInfo?: boolean;
9
+ clarificationQuestion?: string;
10
+ }
11
+ /**
12
+ * Wrapper around the opencode SDK using the client-only mode.
13
+ * - Uses dynamic import so the CLI still works without the SDK installed.
14
+ * - Avoids starting a local server by using `createOpencodeClient` (caller must have a server running).
15
+ * - Creates a session per request, sends prompt, prints response parts, and logs transcripts locally.
16
+ */
17
+ export declare class AiAgent {
18
+ private static clientCache;
19
+ private static baseUrlCache;
20
+ private static serverStarted;
21
+ private static serverCloser;
22
+ private configManager;
23
+ constructor(configManager?: ConfigManager);
24
+ run(prompt: string, opts?: {
25
+ timeoutMs?: number | null;
26
+ baseUrl?: string;
27
+ startServer?: boolean;
28
+ verbose?: boolean;
29
+ signal?: AbortSignal;
30
+ agent?: 'plan' | 'build';
31
+ spinner?: any;
32
+ }): Promise<AiRunResult>;
33
+ /**
34
+ * Run AI with tool calling support
35
+ *
36
+ * This method wraps the standard run() method to add tool calling capabilities.
37
+ * It detects TOOL_CALL patterns in the AI's response, executes the requested tools,
38
+ * and feeds the results back to the AI in a conversation loop.
39
+ */
40
+ runWithTools(prompt: string, tools: AiTool[], opts?: {
41
+ timeoutMs?: number | null;
42
+ baseUrl?: string;
43
+ startServer?: boolean;
44
+ verbose?: boolean;
45
+ signal?: AbortSignal;
46
+ maxToolCalls?: number;
47
+ agent?: 'plan' | 'build';
48
+ spinner?: any;
49
+ }): Promise<AiRunResult>;
50
+ /**
51
+ * Execute a tool directly from the tools array
52
+ */
53
+ private executeTool;
54
+ /**
55
+ * Build system prompt with tool definitions
56
+ */
57
+ private buildSystemPromptWithTools;
58
+ /**
59
+ * Detect TOOL_CALL pattern in AI output
60
+ */
61
+ private detectToolCall;
62
+ /**
63
+ * Format tool result for AI consumption
64
+ */
65
+ private formatToolResult;
66
+ private executeWithClient;
67
+ private setupExitCleanup;
68
+ private invoke;
69
+ private analyzeResponseQuality;
70
+ private detectClarificationQuestion;
71
+ private appendTranscript;
72
+ private highlightOutput;
73
+ private withTimeout;
74
+ }
75
+ //# sourceMappingURL=aiAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiAgent.d.ts","sourceRoot":"","sources":["../../src/modules/aiAgent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoB;IAC9C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAuB;IAClD,OAAO,CAAC,MAAM,CAAC,aAAa,CAAS;IACrC,OAAO,CAAC,MAAM,CAAC,YAAY,CAA6C;IAExE,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,gBAAsB;IAIzC,GAAG,CACP,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,GACA,OAAO,CAAC,WAAW,CAAC;IAmIvB;;;;;;OAMG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,GACA,OAAO,CAAC,WAAW,CAAC;IA8DvB;;OAEG;YACW,WAAW;IAoBzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6ClC;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;YAkBV,iBAAiB;IAoD/B,OAAO,CAAC,gBAAgB;YAoBV,MAAM;IAyQpB,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,2BAA2B;IAuBnC,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;YAsET,WAAW;CAW1B"}