codevf 1.0.0 → 1.0.2

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 (203) hide show
  1. package/LICENSE +30 -21
  2. package/README.md +7 -2
  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 +263 -207
  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/projects.d.ts +32 -0
  30. package/dist/lib/api/projects.d.ts.map +1 -0
  31. package/dist/lib/api/projects.js +61 -0
  32. package/dist/lib/api/projects.js.map +1 -0
  33. package/dist/lib/api/tasks.d.ts +36 -0
  34. package/dist/lib/api/tasks.d.ts.map +1 -0
  35. package/dist/lib/api/tasks.js +62 -0
  36. package/dist/lib/api/tasks.js.map +1 -0
  37. package/dist/lib/api/websocket.d.ts +50 -0
  38. package/dist/lib/api/websocket.d.ts.map +1 -0
  39. package/dist/lib/api/websocket.js +153 -0
  40. package/dist/lib/api/websocket.js.map +1 -0
  41. package/dist/lib/auth/oauth-flow.d.ts +37 -0
  42. package/dist/lib/auth/oauth-flow.d.ts.map +1 -0
  43. package/dist/lib/auth/oauth-flow.js +119 -0
  44. package/dist/lib/auth/oauth-flow.js.map +1 -0
  45. package/dist/lib/auth/token-manager.d.ts +26 -0
  46. package/dist/lib/auth/token-manager.d.ts.map +1 -0
  47. package/dist/lib/auth/token-manager.js +87 -0
  48. package/dist/lib/auth/token-manager.js.map +1 -0
  49. package/dist/lib/config/manager.d.ts +50 -0
  50. package/dist/lib/config/manager.d.ts.map +1 -0
  51. package/dist/lib/config/manager.js +84 -0
  52. package/dist/lib/config/manager.js.map +1 -0
  53. package/dist/lib/utils/errors.d.ts +28 -0
  54. package/dist/lib/utils/errors.d.ts.map +1 -0
  55. package/dist/lib/utils/errors.js +44 -0
  56. package/dist/lib/utils/errors.js.map +1 -0
  57. package/dist/lib/utils/logger.d.ts +20 -0
  58. package/dist/lib/utils/logger.d.ts.map +1 -0
  59. package/dist/lib/utils/logger.js +40 -0
  60. package/dist/lib/utils/logger.js.map +1 -0
  61. package/dist/mcp/index.d.ts +7 -0
  62. package/dist/mcp/index.d.ts.map +1 -0
  63. package/dist/mcp/index.js +160 -0
  64. package/dist/mcp/index.js.map +1 -0
  65. package/dist/mcp/tools/chat.d.ts +30 -0
  66. package/dist/mcp/tools/chat.d.ts.map +1 -0
  67. package/dist/mcp/tools/chat.js +82 -0
  68. package/dist/mcp/tools/chat.js.map +1 -0
  69. package/dist/mcp/tools/instant.d.ts +38 -0
  70. package/dist/mcp/tools/instant.d.ts.map +1 -0
  71. package/dist/mcp/tools/instant.js +106 -0
  72. package/dist/mcp/tools/instant.js.map +1 -0
  73. package/dist/modules/aiAgent.d.ts +75 -0
  74. package/dist/modules/aiAgent.d.ts.map +1 -0
  75. package/dist/modules/aiAgent.js +707 -0
  76. package/dist/modules/aiAgent.js.map +1 -0
  77. package/dist/modules/api.d.ts +7 -0
  78. package/dist/modules/api.d.ts.map +1 -1
  79. package/dist/modules/api.js +13 -4
  80. package/dist/modules/api.js.map +1 -1
  81. package/dist/modules/commandHandler.d.ts +40 -0
  82. package/dist/modules/commandHandler.d.ts.map +1 -0
  83. package/dist/modules/commandHandler.js +328 -0
  84. package/dist/modules/commandHandler.js.map +1 -0
  85. package/dist/modules/config.d.ts +2 -0
  86. package/dist/modules/config.d.ts.map +1 -1
  87. package/dist/modules/config.js +9 -0
  88. package/dist/modules/config.js.map +1 -1
  89. package/dist/modules/constants.d.ts +83 -0
  90. package/dist/modules/constants.d.ts.map +1 -0
  91. package/dist/modules/constants.js +75 -0
  92. package/dist/modules/constants.js.map +1 -0
  93. package/dist/modules/permissions.d.ts +14 -0
  94. package/dist/modules/permissions.d.ts.map +1 -1
  95. package/dist/modules/permissions.js +94 -0
  96. package/dist/modules/permissions.js.map +1 -1
  97. package/dist/modules/toolRegistry.d.ts +50 -0
  98. package/dist/modules/toolRegistry.d.ts.map +1 -0
  99. package/dist/modules/toolRegistry.js +114 -0
  100. package/dist/modules/toolRegistry.js.map +1 -0
  101. package/dist/modules/tunnel.d.ts +33 -0
  102. package/dist/modules/tunnel.d.ts.map +1 -0
  103. package/dist/modules/tunnel.js +79 -0
  104. package/dist/modules/tunnel.js.map +1 -0
  105. package/dist/modules/vibeHelper.d.ts +16 -0
  106. package/dist/modules/vibeHelper.d.ts.map +1 -0
  107. package/dist/modules/vibeHelper.js +38 -0
  108. package/dist/modules/vibeHelper.js.map +1 -0
  109. package/dist/modules/websocket.d.ts +9 -0
  110. package/dist/modules/websocket.d.ts.map +1 -1
  111. package/dist/modules/websocket.js +70 -0
  112. package/dist/modules/websocket.js.map +1 -1
  113. package/dist/tools/consultEngineer.d.ts +13 -0
  114. package/dist/tools/consultEngineer.d.ts.map +1 -0
  115. package/dist/tools/consultEngineer.js +161 -0
  116. package/dist/tools/consultEngineer.js.map +1 -0
  117. package/dist/tools/realtimeChat.d.ts +9 -0
  118. package/dist/tools/realtimeChat.d.ts.map +1 -0
  119. package/dist/tools/realtimeChat.js +101 -0
  120. package/dist/tools/realtimeChat.js.map +1 -0
  121. package/dist/types/index.d.ts +183 -0
  122. package/dist/types/index.d.ts.map +1 -1
  123. package/dist/types/index.js.map +1 -1
  124. package/dist/ui/InteractiveApp.d.ts +13 -0
  125. package/dist/ui/InteractiveApp.d.ts.map +1 -0
  126. package/dist/ui/InteractiveApp.js +84 -0
  127. package/dist/ui/InteractiveApp.js.map +1 -0
  128. package/dist/ui/InteractivePrompt.d.ts +53 -0
  129. package/dist/ui/InteractivePrompt.d.ts.map +1 -0
  130. package/dist/ui/InteractivePrompt.js +422 -0
  131. package/dist/ui/InteractivePrompt.js.map +1 -0
  132. package/dist/ui/LiveSession.d.ts +2 -0
  133. package/dist/ui/LiveSession.d.ts.map +1 -1
  134. package/dist/ui/LiveSession.js +461 -180
  135. package/dist/ui/LiveSession.js.map +1 -1
  136. package/dist/ui/PromptInput.d.ts +14 -0
  137. package/dist/ui/PromptInput.d.ts.map +1 -0
  138. package/dist/ui/PromptInput.js +206 -0
  139. package/dist/ui/PromptInput.js.map +1 -0
  140. package/dist/ui/SessionUI.d.ts +40 -0
  141. package/dist/ui/SessionUI.d.ts.map +1 -0
  142. package/dist/ui/SessionUI.js +218 -0
  143. package/dist/ui/SessionUI.js.map +1 -0
  144. package/dist/ui/input/Command.d.ts +22 -0
  145. package/dist/ui/input/Command.d.ts.map +1 -0
  146. package/dist/ui/input/Command.js +30 -0
  147. package/dist/ui/input/Command.js.map +1 -0
  148. package/dist/ui/input/CustomInput.d.ts +15 -0
  149. package/dist/ui/input/CustomInput.d.ts.map +1 -0
  150. package/dist/ui/input/CustomInput.js +182 -0
  151. package/dist/ui/input/CustomInput.js.map +1 -0
  152. package/dist/ui/input/handlers/handleCursor.d.ts +22 -0
  153. package/dist/ui/input/handlers/handleCursor.d.ts.map +1 -0
  154. package/dist/ui/input/handlers/handleCursor.js +53 -0
  155. package/dist/ui/input/handlers/handleCursor.js.map +1 -0
  156. package/dist/ui/input/handlers/handleEdit.d.ts +18 -0
  157. package/dist/ui/input/handlers/handleEdit.d.ts.map +1 -0
  158. package/dist/ui/input/handlers/handleEdit.js +55 -0
  159. package/dist/ui/input/handlers/handleEdit.js.map +1 -0
  160. package/dist/ui/input/handlers/handleHistory.d.ts +18 -0
  161. package/dist/ui/input/handlers/handleHistory.d.ts.map +1 -0
  162. package/dist/ui/input/handlers/handleHistory.js +85 -0
  163. package/dist/ui/input/handlers/handleHistory.js.map +1 -0
  164. package/dist/ui/input/handlers/handlePaste.d.ts +19 -0
  165. package/dist/ui/input/handlers/handlePaste.d.ts.map +1 -0
  166. package/dist/ui/input/handlers/handlePaste.js +49 -0
  167. package/dist/ui/input/handlers/handlePaste.js.map +1 -0
  168. package/dist/ui/input/handlers/handleSubmit.d.ts +18 -0
  169. package/dist/ui/input/handlers/handleSubmit.d.ts.map +1 -0
  170. package/dist/ui/input/handlers/handleSubmit.js +39 -0
  171. package/dist/ui/input/handlers/handleSubmit.js.map +1 -0
  172. package/dist/ui/input/helpers.d.ts +4 -0
  173. package/dist/ui/input/helpers.d.ts.map +1 -0
  174. package/dist/ui/input/helpers.js +13 -0
  175. package/dist/ui/input/helpers.js.map +1 -0
  176. package/dist/ui/input/keyMatchers.d.ts +14 -0
  177. package/dist/ui/input/keyMatchers.d.ts.map +1 -0
  178. package/dist/ui/input/keyMatchers.js +49 -0
  179. package/dist/ui/input/keyMatchers.js.map +1 -0
  180. package/dist/ui/input/types.d.ts +33 -0
  181. package/dist/ui/input/types.d.ts.map +1 -0
  182. package/dist/ui/input/types.js +2 -0
  183. package/dist/ui/input/types.js.map +1 -0
  184. package/dist/ui/promptWithModes.d.ts +12 -0
  185. package/dist/ui/promptWithModes.d.ts.map +1 -0
  186. package/dist/ui/promptWithModes.js +24 -0
  187. package/dist/ui/promptWithModes.js.map +1 -0
  188. package/dist/ui/renderPrompt.d.ts +12 -0
  189. package/dist/ui/renderPrompt.d.ts.map +1 -0
  190. package/dist/ui/renderPrompt.js +14 -0
  191. package/dist/ui/renderPrompt.js.map +1 -0
  192. package/dist/ui/simplePrompt.d.ts +7 -0
  193. package/dist/ui/simplePrompt.d.ts.map +1 -0
  194. package/dist/ui/simplePrompt.js +38 -0
  195. package/dist/ui/simplePrompt.js.map +1 -0
  196. package/dist/ui/spinner.d.ts +7 -0
  197. package/dist/ui/spinner.d.ts.map +1 -0
  198. package/dist/ui/spinner.js +13 -0
  199. package/dist/ui/spinner.js.map +1 -0
  200. package/package.json +36 -26
  201. package/ARCHITECTURE.md +0 -285
  202. package/BUILD_SUMMARY.md +0 -340
  203. package/QUICKSTART.md +0 -180
@@ -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,38 @@
1
+ /**
2
+ * codevf-instant tool implementation
3
+ * Quick validation queries with single response
4
+ */
5
+ import { TasksApi } from '../../lib/api/tasks.js';
6
+ import { ProjectsApi } from '../../lib/api/projects.js';
7
+ import { TokenManager } from '../../lib/auth/token-manager.js';
8
+ export interface InstantToolArgs {
9
+ message: string;
10
+ maxCredits?: number;
11
+ }
12
+ export interface InstantToolResult {
13
+ content: Array<{
14
+ type: string;
15
+ text: string;
16
+ }>;
17
+ isError?: boolean;
18
+ }
19
+ export declare class InstantTool {
20
+ private tasksApi;
21
+ private projectsApi;
22
+ private tokenManager;
23
+ private baseUrl;
24
+ constructor(tasksApi: TasksApi, projectsApi: ProjectsApi, tokenManager: TokenManager, baseUrl: string);
25
+ /**
26
+ * Handle codevf-instant tool call
27
+ */
28
+ execute(args: InstantToolArgs): Promise<InstantToolResult>;
29
+ /**
30
+ * Get WebSocket connection URL
31
+ */
32
+ private getWebSocketUrl;
33
+ /**
34
+ * Format engineer response
35
+ */
36
+ private formatResponse;
37
+ }
38
+ //# 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;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,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,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAS;gBAEZ,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;IAOrG;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+EhE;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,cAAc;CAgBvB"}
@@ -0,0 +1,106 @@
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, projectsApi, tokenManager, baseUrl) {
9
+ this.tasksApi = tasksApi;
10
+ this.projectsApi = projectsApi;
11
+ this.tokenManager = tokenManager;
12
+ this.baseUrl = baseUrl;
13
+ }
14
+ /**
15
+ * Handle codevf-instant tool call
16
+ */
17
+ async execute(args) {
18
+ try {
19
+ logger.info('Executing codevf-instant', { message: args.message });
20
+ // Validate credits
21
+ const maxCredits = args.maxCredits || 10;
22
+ if (maxCredits < 1 || maxCredits > 10) {
23
+ return {
24
+ content: [
25
+ {
26
+ type: 'text',
27
+ text: 'Error: maxCredits must be between 1 and 10 for instant queries',
28
+ },
29
+ ],
30
+ isError: true,
31
+ };
32
+ }
33
+ // Get or create a project for this task
34
+ logger.info('Getting or creating project for instant query');
35
+ const project = await this.projectsApi.getOrCreateDefault();
36
+ logger.info('Using project', { projectId: project.id, repoUrl: project.repoUrl });
37
+ // Create task
38
+ const task = await this.tasksApi.create({
39
+ message: args.message,
40
+ taskMode: 'realtime_answer',
41
+ maxCredits,
42
+ projectId: project.id.toString(),
43
+ });
44
+ logger.info('Task created', { taskId: task.taskId });
45
+ // Show warning if low balance
46
+ if (task.warning) {
47
+ logger.warn('Credit warning', { warning: task.warning });
48
+ }
49
+ // Connect WebSocket
50
+ const token = await this.tokenManager.getValidToken();
51
+ const wsUrl = this.getWebSocketUrl(task.taskId, token);
52
+ const ws = new WebSocketClient(wsUrl);
53
+ await ws.connect();
54
+ logger.info('Waiting for engineer response...');
55
+ // Wait for response (5 min timeout)
56
+ const response = await ws.waitForResponse(300000);
57
+ // Disconnect
58
+ ws.disconnect();
59
+ // Format response
60
+ const formattedResponse = this.formatResponse(response, task.warning);
61
+ return {
62
+ content: [
63
+ {
64
+ type: 'text',
65
+ text: formattedResponse,
66
+ },
67
+ ],
68
+ };
69
+ }
70
+ catch (error) {
71
+ logger.error('codevf-instant failed', error);
72
+ return {
73
+ content: [
74
+ {
75
+ type: 'text',
76
+ text: `Error: ${error.message}`,
77
+ },
78
+ ],
79
+ isError: true,
80
+ };
81
+ }
82
+ }
83
+ /**
84
+ * Get WebSocket connection URL
85
+ */
86
+ getWebSocketUrl(taskId, token) {
87
+ const wsProtocol = this.baseUrl.startsWith('https://') ? 'wss://' : 'ws://';
88
+ const host = this.baseUrl.replace(/^https?:\/\//, '');
89
+ return `${wsProtocol}${host}/ws?taskId=${taskId}&userType=customer&token=${token}`;
90
+ }
91
+ /**
92
+ * Format engineer response
93
+ */
94
+ formatResponse(response, warning) {
95
+ let output = 'Engineer Response:\n\n';
96
+ output += response.text + '\n\n';
97
+ output += '---\n';
98
+ output += `Credits used: ${response.creditsUsed}\n`;
99
+ output += `Session time: ${response.duration}\n`;
100
+ if (warning) {
101
+ output += `\n⚠️ ${warning}\n`;
102
+ }
103
+ return output;
104
+ }
105
+ }
106
+ //# 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"}