genaicode 0.8.4 → 0.8.5

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 (162) hide show
  1. package/dist/ai-service/anthropic.js +1 -1
  2. package/dist/ai-service/anthropic.js.map +1 -1
  3. package/dist/ai-service/common.d.ts +2 -1
  4. package/dist/ai-service/common.js +1 -2
  5. package/dist/ai-service/common.js.map +1 -1
  6. package/dist/ai-service/openai.d.ts +8 -0
  7. package/dist/ai-service/openai.js +182 -0
  8. package/dist/ai-service/openai.js.map +1 -0
  9. package/dist/ai-service/service-configurations.js +9 -3
  10. package/dist/ai-service/service-configurations.js.map +1 -1
  11. package/dist/cli/cli-options.js +1 -1
  12. package/dist/cli/cli-options.js.map +1 -1
  13. package/dist/cli/service-autodetect.js +1 -1
  14. package/dist/cli/service-autodetect.js.map +1 -1
  15. package/dist/cli/validate-cli-params.js +1 -1
  16. package/dist/cli/validate-cli-params.js.map +1 -1
  17. package/dist/files/find-files.js +5 -2
  18. package/dist/files/find-files.js.map +1 -1
  19. package/dist/files/read-files.d.ts +1 -0
  20. package/dist/files/read-files.js +13 -5
  21. package/dist/files/read-files.js.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +4 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/main/codegen-types.d.ts +56 -4
  26. package/dist/main/codegen-utils.js +1 -1
  27. package/dist/main/codegen-utils.js.map +1 -1
  28. package/dist/main/codegen.js +5 -5
  29. package/dist/main/codegen.js.map +1 -1
  30. package/dist/main/common/content-bus-types.d.ts +1 -1
  31. package/dist/main/config-lib.d.ts +7 -1
  32. package/dist/main/config-lib.js +4 -1
  33. package/dist/main/config-lib.js.map +1 -1
  34. package/dist/main/config-schema.d.ts +14 -0
  35. package/dist/main/config-schema.js +145 -0
  36. package/dist/main/config-schema.js.map +1 -0
  37. package/dist/main/config.d.ts +1 -0
  38. package/dist/main/config.js +11 -3
  39. package/dist/main/config.js.map +1 -1
  40. package/dist/main/interactive/select-ai-service.js +1 -1
  41. package/dist/main/interactive/select-ai-service.js.map +1 -1
  42. package/dist/main/plugin-loader.d.ts +18 -3
  43. package/dist/main/plugin-loader.js +155 -48
  44. package/dist/main/plugin-loader.js.map +1 -1
  45. package/dist/main/ui/backend/api-handlers.d.ts +6 -0
  46. package/dist/main/ui/backend/api-handlers.js +5 -0
  47. package/dist/main/ui/backend/api-handlers.js.map +1 -0
  48. package/dist/main/ui/backend/api.d.ts +1 -0
  49. package/dist/main/ui/backend/api.js +6 -313
  50. package/dist/main/ui/backend/api.js.map +1 -1
  51. package/dist/main/ui/backend/endpoints/config-endpoint.d.ts +1 -0
  52. package/dist/main/ui/backend/endpoints/config-endpoint.js +39 -0
  53. package/dist/main/ui/backend/endpoints/config-endpoint.js.map +1 -0
  54. package/dist/main/ui/backend/endpoints/content-endpoint.d.ts +1 -0
  55. package/dist/main/ui/backend/endpoints/content-endpoint.js +14 -0
  56. package/dist/main/ui/backend/endpoints/content-endpoint.js.map +1 -0
  57. package/dist/main/ui/backend/endpoints/edit-message-endpoint.d.ts +1 -0
  58. package/dist/main/ui/backend/endpoints/edit-message-endpoint.js +34 -0
  59. package/dist/main/ui/backend/endpoints/edit-message-endpoint.js.map +1 -0
  60. package/dist/main/ui/backend/endpoints/execute-codegen-endpoint.d.ts +1 -0
  61. package/dist/main/ui/backend/endpoints/execute-codegen-endpoint.js +44 -0
  62. package/dist/main/ui/backend/endpoints/execute-codegen-endpoint.js.map +1 -0
  63. package/dist/main/ui/backend/endpoints/execution-status-endpoint.d.ts +1 -0
  64. package/dist/main/ui/backend/endpoints/execution-status-endpoint.js +37 -0
  65. package/dist/main/ui/backend/endpoints/execution-status-endpoint.js.map +1 -0
  66. package/dist/main/ui/backend/endpoints/generate-content-endpoint.d.ts +1 -0
  67. package/dist/main/ui/backend/endpoints/generate-content-endpoint.js +29 -0
  68. package/dist/main/ui/backend/endpoints/generate-content-endpoint.js.map +1 -0
  69. package/dist/main/ui/backend/endpoints/index.d.ts +11 -0
  70. package/dist/main/ui/backend/endpoints/index.js +12 -0
  71. package/dist/main/ui/backend/endpoints/index.js.map +1 -0
  72. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.d.ts +1 -0
  73. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js +14 -0
  74. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js.map +1 -0
  75. package/dist/main/ui/backend/endpoints/iteration-endpoint.d.ts +1 -0
  76. package/dist/main/ui/backend/endpoints/iteration-endpoint.js +16 -0
  77. package/dist/main/ui/backend/endpoints/iteration-endpoint.js.map +1 -0
  78. package/dist/main/ui/backend/endpoints/question-endpoint.d.ts +1 -0
  79. package/dist/main/ui/backend/endpoints/question-endpoint.js +37 -0
  80. package/dist/main/ui/backend/endpoints/question-endpoint.js.map +1 -0
  81. package/dist/main/ui/backend/endpoints/service-configuration-endpoint.d.ts +1 -0
  82. package/dist/main/ui/backend/endpoints/service-configuration-endpoint.js +54 -0
  83. package/dist/main/ui/backend/endpoints/service-configuration-endpoint.js.map +1 -0
  84. package/dist/main/ui/backend/endpoints/usage-endpoint.d.ts +1 -0
  85. package/dist/main/ui/backend/endpoints/usage-endpoint.js +15 -0
  86. package/dist/main/ui/backend/endpoints/usage-endpoint.js.map +1 -0
  87. package/dist/main/ui/common/api-types.d.ts +5 -1
  88. package/dist/main/ui/frontend/assets/index-DY7-_JMu.js +1759 -0
  89. package/dist/main/ui/frontend/index.html +1 -1
  90. package/dist/prompt/ai-service-fallback.js +10 -3
  91. package/dist/prompt/ai-service-fallback.js.map +1 -1
  92. package/dist/prompt/function-calling-validate.d.ts +1 -1
  93. package/dist/prompt/function-calling-validate.js +13 -5
  94. package/dist/prompt/function-calling-validate.js.map +1 -1
  95. package/dist/prompt/function-defs/ask-question.js +80 -39
  96. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  97. package/dist/prompt/limits.js +2 -2
  98. package/dist/prompt/prompt-service.js +2 -1
  99. package/dist/prompt/prompt-service.js.map +1 -1
  100. package/dist/prompt/prompt-service.test-utils.d.ts +1 -1
  101. package/dist/prompt/prompt-service.test-utils.js +1 -1
  102. package/dist/prompt/prompt-service.test-utils.js.map +1 -1
  103. package/dist/prompt/static-prompts.d.ts +2 -1
  104. package/dist/prompt/static-prompts.js +2 -1
  105. package/dist/prompt/static-prompts.js.map +1 -1
  106. package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.d.ts +1 -1
  107. package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js +2 -2
  108. package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js.map +1 -1
  109. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js +15 -15
  110. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js.map +1 -1
  111. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.d.ts +1 -1
  112. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js +3 -3
  113. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js.map +1 -1
  114. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.d.ts +1 -1
  115. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js +2 -2
  116. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js.map +1 -1
  117. package/dist/prompt/steps/step-ask-question/handlers/default-action.d.ts +1 -1
  118. package/dist/prompt/steps/step-ask-question/handlers/default-action.js +2 -2
  119. package/dist/prompt/steps/step-ask-question/handlers/default-action.js.map +1 -1
  120. package/dist/prompt/steps/step-ask-question/handlers/handle-search-code.d.ts +1 -1
  121. package/dist/prompt/steps/step-ask-question/handlers/handle-search-code.js +5 -5
  122. package/dist/prompt/steps/step-ask-question/handlers/handle-search-code.js.map +1 -1
  123. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.d.ts +1 -1
  124. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js +4 -4
  125. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js.map +1 -1
  126. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.d.ts +1 -1
  127. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +3 -3
  128. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
  129. package/dist/prompt/steps/step-ask-question/handlers/lint.d.ts +1 -1
  130. package/dist/prompt/steps/step-ask-question/handlers/lint.js +4 -4
  131. package/dist/prompt/steps/step-ask-question/handlers/lint.js.map +1 -1
  132. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.d.ts +1 -1
  133. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js +3 -3
  134. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js.map +1 -1
  135. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.d.ts +1 -1
  136. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js +7 -7
  137. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js.map +1 -1
  138. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.d.ts +1 -1
  139. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js +4 -4
  140. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js.map +1 -1
  141. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +15 -3
  142. package/dist/prompt/steps/step-ask-question/step-ask-question.js +12 -7
  143. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  144. package/dist/prompt/steps/step-codegen-planning.js +63 -3
  145. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  146. package/dist/prompt/steps/step-context-optimization.js +3 -1
  147. package/dist/prompt/steps/step-context-optimization.js.map +1 -1
  148. package/dist/prompt/steps/step-generate-codegen-summary.js +3 -5
  149. package/dist/prompt/steps/step-generate-codegen-summary.js.map +1 -1
  150. package/dist/prompt/steps/step-process-file-updates.js +56 -10
  151. package/dist/prompt/steps/step-process-file-updates.js.map +1 -1
  152. package/dist/prompt/steps/step-summarization.js +2 -0
  153. package/dist/prompt/steps/step-summarization.js.map +1 -1
  154. package/dist/prompt/steps/step-validate-recover.js +5 -5
  155. package/dist/prompt/steps/step-validate-recover.js.map +1 -1
  156. package/dist/prompt/systemprompt.js +4 -0
  157. package/dist/prompt/systemprompt.js.map +1 -1
  158. package/dist/vite-genaicode/vite-genaicode-plugin.d.ts +4 -2
  159. package/dist/vite-genaicode/vite-genaicode-plugin.js +41 -24
  160. package/dist/vite-genaicode/vite-genaicode-plugin.js.map +1 -1
  161. package/package.json +7 -7
  162. package/dist/main/ui/frontend/assets/index-jwSqt8cG.js +0 -1337
@@ -0,0 +1,39 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ import { rcConfig as globalRcConfig } from '../../../config.js';
3
+ import { getSupportedAiServices } from '../../../codegen-utils.js';
4
+ registerEndpoint((router, service) => {
5
+ // Get default CodegenOptions
6
+ router.get('/default-codegen-options', async (_, res) => {
7
+ try {
8
+ const defaultOptions = service.getCodegenOptions();
9
+ res.json({ options: defaultOptions });
10
+ }
11
+ catch (error) {
12
+ console.error('Error getting default codegen options:', error);
13
+ res.status(500).json({ error: 'An error occurred while getting default codegen options' });
14
+ }
15
+ });
16
+ // Get rcConfig settings
17
+ router.get('/rcconfig', async (_, res) => {
18
+ try {
19
+ const rcConfigSettings = globalRcConfig;
20
+ res.json({ rcConfig: rcConfigSettings });
21
+ }
22
+ catch (error) {
23
+ console.error('Error getting rcConfig settings:', error);
24
+ res.status(500).json({ error: 'An error occurred while getting rcConfig settings' });
25
+ }
26
+ });
27
+ // Fetch available AI services
28
+ router.get('/available-ai-services', async (_, res) => {
29
+ try {
30
+ const availableServices = getSupportedAiServices();
31
+ res.json({ services: availableServices });
32
+ }
33
+ catch (error) {
34
+ console.error('Error fetching available AI services:', error);
35
+ res.status(500).json({ error: 'An error occurred while fetching available AI services' });
36
+ }
37
+ });
38
+ });
39
+ //# sourceMappingURL=config-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/config-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,6BAA6B;IAC7B,MAAM,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yDAAyD,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,cAAc,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,sBAAsB,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ registerEndpoint((router, service) => {
3
+ router.get('/content', async (_, res) => {
4
+ try {
5
+ const content = service.getContent();
6
+ res.json({ content });
7
+ }
8
+ catch (error) {
9
+ console.error('Error getting content:', error);
10
+ res.status(500).json({ error: 'An error occurred while getting content' });
11
+ }
12
+ });
13
+ });
14
+ //# sourceMappingURL=content-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/content-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ registerEndpoint((router, service) => {
3
+ router.post('/edit-message', async (req, res) => {
4
+ try {
5
+ const { messageId, newContent } = req.body;
6
+ if (!messageId || typeof messageId !== 'string') {
7
+ return res.status(400).json({ error: 'Invalid message ID' });
8
+ }
9
+ if (!newContent || typeof newContent !== 'string') {
10
+ return res.status(400).json({ error: 'Invalid message content' });
11
+ }
12
+ if (newContent.trim().length === 0) {
13
+ return res.status(400).json({ error: 'Message content cannot be empty' });
14
+ }
15
+ const success = await service.editMessage(messageId, newContent);
16
+ if (success) {
17
+ res.json({ message: 'Message edited successfully' });
18
+ }
19
+ else {
20
+ res.status(404).json({ error: 'Message not found' });
21
+ }
22
+ }
23
+ catch (error) {
24
+ console.error('Error editing message:', error);
25
+ if (error instanceof Error) {
26
+ res.status(400).json({ error: error.message });
27
+ }
28
+ else {
29
+ res.status(500).json({ error: 'An error occurred while editing the message' });
30
+ }
31
+ }
32
+ });
33
+ });
34
+ //# sourceMappingURL=edit-message-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-message-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/edit-message-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,IAGrC,CAAC;YAEF,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEjE,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import multer from 'multer';
2
+ import { registerEndpoint } from '../api-handlers.js';
3
+ const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB
4
+ const MAX_IMAGES = 5;
5
+ const storage = multer.memoryStorage();
6
+ const upload = multer({
7
+ storage: storage,
8
+ limits: {
9
+ fileSize: MAX_FILE_SIZE,
10
+ files: MAX_IMAGES,
11
+ },
12
+ });
13
+ registerEndpoint((router, service) => {
14
+ router.post('/execute-codegen', upload.array('images', MAX_IMAGES), async (req, res) => {
15
+ try {
16
+ const prompt = req.body.prompt;
17
+ const options = JSON.parse(req.body.options);
18
+ const files = req.files;
19
+ if (!prompt || typeof prompt !== 'string') {
20
+ return res.status(400).json({ error: 'Invalid prompt' });
21
+ }
22
+ const images = files?.map((file) => ({
23
+ buffer: file.buffer,
24
+ mimetype: file.mimetype,
25
+ originalname: file.originalname,
26
+ }));
27
+ const result = await service.executeCodegen(prompt, options, images);
28
+ res.json({ result });
29
+ }
30
+ catch (error) {
31
+ console.error('Error executing codegen:', error);
32
+ if (error instanceof multer.MulterError) {
33
+ if (error.code === 'LIMIT_FILE_SIZE') {
34
+ return res.status(400).json({ error: 'File size exceeds the 5MB limit' });
35
+ }
36
+ if (error.code === 'LIMIT_FILE_COUNT') {
37
+ return res.status(400).json({ error: `Maximum of ${MAX_IMAGES} images allowed` });
38
+ }
39
+ }
40
+ res.status(500).json({ error: 'An error occurred while executing codegen' });
41
+ }
42
+ });
43
+ });
44
+ //# sourceMappingURL=execute-codegen-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-codegen-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/execute-codegen-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAC7C,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;AACvC,MAAM,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE;QACN,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,UAAU;KAClB;CACF,CAAC,CAAC;AAEH,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACrF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAA8B,CAAC;YAEjD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAmE;gBAClF,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACrE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,KAAK,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACrC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;gBAC5E,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACtC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,UAAU,iBAAiB,EAAE,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ registerEndpoint((router, service) => {
3
+ // Get execution status
4
+ router.get('/execution-status', async (_, res) => {
5
+ try {
6
+ const status = await service.getExecutionStatus();
7
+ res.json({ status });
8
+ }
9
+ catch (error) {
10
+ console.error('Error getting execution status:', error);
11
+ res.status(500).json({ error: 'An error occurred while getting execution status' });
12
+ }
13
+ });
14
+ // Pause execution
15
+ router.post('/pause-execution', async (_, res) => {
16
+ try {
17
+ await service.pauseExecution();
18
+ res.json({ message: 'Execution paused successfully' });
19
+ }
20
+ catch (error) {
21
+ console.error('Error pausing execution:', error);
22
+ res.status(500).json({ error: 'An error occurred while pausing execution' });
23
+ }
24
+ });
25
+ // Resume execution
26
+ router.post('/resume-execution', async (_, res) => {
27
+ try {
28
+ await service.resumeExecution();
29
+ res.json({ message: 'Execution resumed successfully' });
30
+ }
31
+ catch (error) {
32
+ console.error('Error resuming execution:', error);
33
+ res.status(500).json({ error: 'An error occurred while resuming execution' });
34
+ }
35
+ });
36
+ });
37
+ //# sourceMappingURL=execution-status-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-status-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/execution-status-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,uBAAuB;IACvB,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ registerEndpoint((router, service) => {
3
+ router.post('/generate-content', async (req, res) => {
4
+ try {
5
+ const { prompt, temperature, cheap, options } = req.body;
6
+ if (!prompt || typeof prompt !== 'string') {
7
+ return res.status(400).json({ error: 'Invalid prompt: must be a string' });
8
+ }
9
+ if (typeof temperature !== 'number' || temperature < 0 || temperature > 2) {
10
+ return res.status(400).json({ error: 'Invalid temperature: must be a number between 0 and 2' });
11
+ }
12
+ if (typeof cheap !== 'boolean') {
13
+ return res.status(400).json({ error: 'Invalid cheap parameter: must be a boolean' });
14
+ }
15
+ const result = await service.generateContent(prompt, temperature, cheap, options);
16
+ res.json({ result });
17
+ }
18
+ catch (error) {
19
+ console.error('Error generating content:', error);
20
+ if (error instanceof Error) {
21
+ res.status(500).json({ error: `An error occurred while generating content: ${error.message}` });
22
+ }
23
+ else {
24
+ res.status(500).json({ error: 'An unknown error occurred while generating content' });
25
+ }
26
+ }
27
+ });
28
+ });
29
+ //# sourceMappingURL=generate-content-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-content-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/generate-content-endpoint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAKnD,CAAC;YAEF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC1E,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC,CAAC;YAClG,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC,CAAC;YACvF,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAClF,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+CAA+C,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import './content-endpoint.js';
2
+ import './edit-message-endpoint.js';
3
+ import './execute-codegen-endpoint.js';
4
+ import './execution-status-endpoint.js';
5
+ import './generate-content-endpoint.js';
6
+ import './interrupt-execution-endpoint.js';
7
+ import './service-configuration-endpoint.js';
8
+ import './question-endpoint.js';
9
+ import './usage-endpoint.js';
10
+ import './config-endpoint.js';
11
+ import './iteration-endpoint.js';
@@ -0,0 +1,12 @@
1
+ import './content-endpoint.js';
2
+ import './edit-message-endpoint.js';
3
+ import './execute-codegen-endpoint.js';
4
+ import './execution-status-endpoint.js';
5
+ import './generate-content-endpoint.js';
6
+ import './interrupt-execution-endpoint.js';
7
+ import './service-configuration-endpoint.js';
8
+ import './question-endpoint.js';
9
+ import './usage-endpoint.js';
10
+ import './config-endpoint.js';
11
+ import './iteration-endpoint.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,gCAAgC,CAAC;AACxC,OAAO,gCAAgC,CAAC;AACxC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ registerEndpoint((router, service) => {
3
+ router.post('/interrupt-execution', async (_, res) => {
4
+ try {
5
+ await service.interruptExecution();
6
+ res.json({ message: 'Execution interrupted successfully' });
7
+ }
8
+ catch (error) {
9
+ console.error('Error interrupting execution:', error);
10
+ res.status(500).json({ error: 'An error occurred while interrupting execution' });
11
+ }
12
+ });
13
+ });
14
+ //# sourceMappingURL=interrupt-execution-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupt-execution-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/interrupt-execution-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ registerEndpoint((router, service) => {
3
+ // Delete an iteration
4
+ router.delete('/delete-iteration/:iterationId', async (req, res) => {
5
+ try {
6
+ const { iterationId } = req.params;
7
+ await service.deleteIteration(iterationId);
8
+ res.json({ message: 'Iteration deleted successfully' });
9
+ }
10
+ catch (error) {
11
+ console.error('Error deleting iteration:', error);
12
+ res.status(500).json({ error: 'An error occurred while deleting the iteration' });
13
+ }
14
+ });
15
+ });
16
+ //# sourceMappingURL=iteration-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iteration-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/iteration-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,sBAAsB;IACtB,MAAM,CAAC,MAAM,CAAC,gCAAgC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YACnC,MAAM,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ import { validateCodegenOptions } from '../api-utils.js';
3
+ registerEndpoint((router, service) => {
4
+ // Get current question
5
+ router.get('/current-question', async (_, res) => {
6
+ try {
7
+ const question = await service.getCurrentQuestion();
8
+ res.json({ question });
9
+ }
10
+ catch (error) {
11
+ console.error('Error getting current question:', error);
12
+ res.status(500).json({ error: 'An error occurred while getting current question' });
13
+ }
14
+ });
15
+ // Answer question
16
+ router.post('/answer-question', async (req, res) => {
17
+ try {
18
+ const { questionId, answer, confirmed, options } = req.body;
19
+ if (!questionId || typeof answer !== 'string' || typeof questionId !== 'string') {
20
+ return res.status(400).json({ error: 'Invalid question ID or answer' });
21
+ }
22
+ if (options) {
23
+ const validationErrors = validateCodegenOptions(options);
24
+ if (validationErrors.length > 0) {
25
+ return res.status(400).json({ errors: validationErrors });
26
+ }
27
+ }
28
+ await service.answerQuestion(questionId, answer, confirmed, options);
29
+ res.json({ message: 'Question answered successfully' });
30
+ }
31
+ catch (error) {
32
+ console.error('Error answering question:', error);
33
+ res.status(500).json({ error: 'An error occurred while answering question' });
34
+ }
35
+ });
36
+ });
37
+ //# sourceMappingURL=question-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/question-endpoint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,uBAAuB;IACvB,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAE5D,IAAI,CAAC,UAAU,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAChF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAyB,CAAC,CAAC;YACvF,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ import { getSupportedAiServices } from '../../../codegen-utils.js';
3
+ registerEndpoint((router, service) => {
4
+ // Get service configurations
5
+ router.get('/service-configurations', async (_, res) => {
6
+ try {
7
+ const configurations = service.getServiceConfigurations();
8
+ res.json({ configurations });
9
+ }
10
+ catch (error) {
11
+ console.error('Error getting service configurations:', error);
12
+ res.status(500).json({ error: 'An error occurred while getting service configurations' });
13
+ }
14
+ });
15
+ // Update service configuration
16
+ router.post('/service-configuration', async (req, res) => {
17
+ try {
18
+ const { serviceType, config } = req.body;
19
+ // Validate service type
20
+ if (!serviceType || typeof serviceType !== 'string') {
21
+ return res.status(400).json({ error: 'Invalid service type' });
22
+ }
23
+ // Validate that the service type is supported
24
+ const supportedServices = getSupportedAiServices();
25
+ if (!supportedServices.includes(serviceType)) {
26
+ return res.status(400).json({ error: 'Unsupported service type' });
27
+ }
28
+ // Validate config object
29
+ if (!config || typeof config !== 'object') {
30
+ return res.status(400).json({ error: 'Invalid configuration object' });
31
+ }
32
+ // Validate API key if provided
33
+ if (config.apiKey !== undefined && typeof config.apiKey !== 'string') {
34
+ return res.status(400).json({ error: 'Invalid API key format' });
35
+ }
36
+ // Validate model overrides if provided
37
+ if (config.modelOverrides) {
38
+ if (config.modelOverrides.default !== undefined && typeof config.modelOverrides.default !== 'string') {
39
+ return res.status(400).json({ error: 'Invalid default model override' });
40
+ }
41
+ if (config.modelOverrides.cheap !== undefined && typeof config.modelOverrides.cheap !== 'string') {
42
+ return res.status(400).json({ error: 'Invalid cheap model override' });
43
+ }
44
+ }
45
+ service.updateServiceConfiguration({ serviceType: serviceType, config });
46
+ res.json({ message: 'Service configuration updated successfully' });
47
+ }
48
+ catch (error) {
49
+ console.error('Error updating service configuration:', error);
50
+ res.status(500).json({ error: 'An error occurred while updating service configuration' });
51
+ }
52
+ });
53
+ });
54
+ //# sourceMappingURL=service-configuration-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-configuration-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/service-configuration-endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { registerEndpoint } from '../api-handlers.js';
2
+ registerEndpoint((router, service) => {
3
+ // Get total cost of prompts in the current session
4
+ router.get('/usage', async (_, res) => {
5
+ try {
6
+ const usageMetrics = await service.getUsageMetrics();
7
+ res.json({ usageMetrics });
8
+ }
9
+ catch (error) {
10
+ console.error('Error getting total cost:', error);
11
+ res.status(500).json({ error: 'An error occurred while getting total cost' });
12
+ }
13
+ });
14
+ });
15
+ //# sourceMappingURL=usage-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-endpoint.js","sourceRoot":"","sources":["../../../../../src/main/ui/backend/endpoints/usage-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnC,mDAAmD;IACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -32,8 +32,9 @@ export type ServiceConfigRequirements = {
32
32
  googleCloudProjectId: string;
33
33
  googleCloudRegion: string;
34
34
  };
35
- 'chat-gpt': {
35
+ openai: {
36
36
  apiKey: string | undefined;
37
+ openaiBaseUrl?: string | undefined;
37
38
  googleCloudProjectId?: never;
38
39
  googleCloudRegion?: never;
39
40
  };
@@ -63,6 +64,7 @@ export type ServiceConfig<T extends AiServiceType = AiServiceType> = {
63
64
  };
64
65
  } & (T extends keyof ServiceConfigRequirements ? ServiceConfigRequirements[T] : {
65
66
  apiKey?: string;
67
+ openaiBaseUrl?: string;
66
68
  googleCloudProjectId?: string;
67
69
  googleCloudRegion?: string;
68
70
  });
@@ -87,10 +89,12 @@ export type SanitizedServiceConfig = {
87
89
  hasApiKey?: boolean;
88
90
  googleCloudProjectId?: '';
89
91
  googleCloudRegion?: '';
92
+ openaiBaseUrl?: string;
90
93
  } | {
91
94
  hasApiKey: false;
92
95
  googleCloudProjectId?: string;
93
96
  googleCloudRegion?: string;
97
+ openaiBaseUrl?: '';
94
98
  });
95
99
  /**
96
100
  * Map of service configurations by service type.