@messenger-box/platform-server 10.0.3-alpha.72 → 10.0.3-alpha.74

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 (98) hide show
  1. package/lib/config/env-config.d.ts +7 -0
  2. package/lib/config/env-config.js +20 -0
  3. package/lib/config/env-config.js.map +1 -1
  4. package/lib/containers/containers.js +6 -1
  5. package/lib/containers/containers.js.map +1 -1
  6. package/lib/containers/context-services-from-container.js +4 -2
  7. package/lib/containers/context-services-from-container.js.map +1 -1
  8. package/lib/graphql/resolvers/ai-fragment.d.ts +3 -0
  9. package/lib/graphql/resolvers/ai-fragment.js +276 -0
  10. package/lib/graphql/resolvers/ai-fragment.js.map +1 -0
  11. package/lib/graphql/resolvers/channel.js +29 -0
  12. package/lib/graphql/resolvers/channel.js.map +1 -1
  13. package/lib/graphql/resolvers/index.js +1 -1
  14. package/lib/graphql/resolvers/index.js.map +1 -1
  15. package/lib/graphql/resolvers/post.js +187 -14
  16. package/lib/graphql/resolvers/post.js.map +1 -1
  17. package/lib/graphql/schema/ai-fragment.graphql +311 -0
  18. package/lib/graphql/schema/ai-fragment.graphql.js +1 -0
  19. package/lib/graphql/schema/ai-fragment.graphql.js.map +1 -0
  20. package/lib/graphql/schema/channel.graphql +19 -0
  21. package/lib/graphql/schema/channel.graphql.js +1 -1
  22. package/lib/graphql/schema/index.js +2 -2
  23. package/lib/graphql/schema/index.js.map +1 -1
  24. package/lib/graphql/schema/post.graphql +76 -0
  25. package/lib/graphql/schema/post.graphql.js +1 -1
  26. package/lib/graphql/schema/services.graphql +19 -0
  27. package/lib/index.js.map +1 -1
  28. package/lib/inngest/factory.d.ts +20 -0
  29. package/lib/inngest/factory.js +4 -0
  30. package/lib/inngest/factory.js.map +1 -0
  31. package/lib/inngest/functions.d.ts +235 -0
  32. package/lib/inngest/functions.js +1385 -0
  33. package/lib/inngest/functions.js.map +1 -0
  34. package/lib/inngest/index.d.ts +3 -0
  35. package/lib/inngest/prompt.d.ts +6 -0
  36. package/lib/inngest/prompt.js +871 -0
  37. package/lib/inngest/prompt.js.map +1 -0
  38. package/lib/inngest/utils.d.ts +5 -0
  39. package/lib/inngest/utils.js +32 -0
  40. package/lib/inngest/utils.js.map +1 -0
  41. package/lib/module.js +10 -3
  42. package/lib/module.js.map +1 -1
  43. package/lib/plugins/ai-fragment-moleculer-service.d.ts +29 -0
  44. package/lib/plugins/ai-fragment-moleculer-service.js +516 -0
  45. package/lib/plugins/ai-fragment-moleculer-service.js.map +1 -0
  46. package/lib/plugins/channel-moleculer-service.js +9 -0
  47. package/lib/plugins/channel-moleculer-service.js.map +1 -1
  48. package/lib/plugins/index.d.ts +1 -0
  49. package/lib/plugins/post-moleculer-service.js +116 -0
  50. package/lib/plugins/post-moleculer-service.js.map +1 -1
  51. package/lib/services/ai-fragment-service.d.ts +195 -0
  52. package/lib/services/ai-fragment-service.js +631 -0
  53. package/lib/services/ai-fragment-service.js.map +1 -0
  54. package/lib/services/channel-service.d.ts +4 -2
  55. package/lib/services/channel-service.js +24 -2
  56. package/lib/services/channel-service.js.map +1 -1
  57. package/lib/services/index.d.ts +2 -0
  58. package/lib/services/post-service.d.ts +9 -2
  59. package/lib/services/post-service.js +225 -5
  60. package/lib/services/post-service.js.map +1 -1
  61. package/lib/services/proxy-services/ai-fragment-microservice.d.ts +23 -0
  62. package/lib/services/proxy-services/ai-fragment-microservice.js +78 -0
  63. package/lib/services/proxy-services/ai-fragment-microservice.js.map +1 -0
  64. package/lib/services/proxy-services/channel-microservice.d.ts +2 -1
  65. package/lib/services/proxy-services/channel-microservice.js +6 -0
  66. package/lib/services/proxy-services/channel-microservice.js.map +1 -1
  67. package/lib/services/proxy-services/index.d.ts +1 -0
  68. package/lib/services/proxy-services/post-microservice.d.ts +22 -1
  69. package/lib/services/proxy-services/post-microservice.js +80 -0
  70. package/lib/services/proxy-services/post-microservice.js.map +1 -1
  71. package/lib/services/sandbox-error-service.d.ts +23 -0
  72. package/lib/services/sandbox-error-service.js +422 -0
  73. package/lib/services/sandbox-error-service.js.map +1 -0
  74. package/lib/store/models/ai-fragment.d.ts +4 -0
  75. package/lib/store/models/ai-fragment.js +125 -0
  76. package/lib/store/models/ai-fragment.js.map +1 -0
  77. package/lib/store/models/channel.js +5 -0
  78. package/lib/store/models/channel.js.map +1 -1
  79. package/lib/store/models/index.d.ts +1 -0
  80. package/lib/store/repositories/ai-fragment-repository.d.ts +15 -0
  81. package/lib/store/repositories/ai-fragment-repository.js +69 -0
  82. package/lib/store/repositories/ai-fragment-repository.js.map +1 -0
  83. package/lib/store/repositories/channel-repository.js +1 -1
  84. package/lib/store/repositories/channel-repository.js.map +1 -1
  85. package/lib/store/repositories/index.d.ts +1 -0
  86. package/lib/store/repositories/post-repository.js +1 -1
  87. package/lib/store/repositories/post-repository.js.map +1 -1
  88. package/lib/store/repositories/post-thread-repository.js +1 -1
  89. package/lib/store/repositories/post-thread-repository.js.map +1 -1
  90. package/lib/store/repositories/reaction-repository.js +1 -1
  91. package/lib/store/repositories/reaction-repository.js.map +1 -1
  92. package/lib/templates/constants/SERVER_TYPES.ts.template +4 -1
  93. package/lib/templates/repositories/AiFragmentRepository.ts.template +4 -0
  94. package/lib/templates/services/AiFragmentService.ts.template +123 -0
  95. package/lib/templates/services/ChannelService.ts.template +11 -1
  96. package/lib/templates/services/PostService.ts.template +82 -1
  97. package/lib/templates/services/SandboxErrorService.ts.template +125 -0
  98. package/package.json +12 -6
@@ -1,6 +1,6 @@
1
1
  import { ServiceBroker } from 'moleculer';
2
2
  import { CdmLogger } from '@cdm-logger/core';
3
- import { IChannelModel, MoleculerTopics as MoleculerTopics, IUserAccount, IChannelService, ISaveChannelParams, ISavePublicChannelParams, ISaveDirectChannelParams, ICreateDirectChannelParams, ISaveMembersToChannelParams, AsDomainType, FilterCriteria } from 'common/server';
3
+ import { IChannelModel, MoleculerTopics as MoleculerTopics, IUserAccount, IChannelService, ISaveChannelParams, ISavePublicChannelParams, ISaveDirectChannelParams, ICreateDirectChannelParams, ISaveMembersToChannelParams, AsDomainType, FilterCriteria, IChannelInput } from 'common/server';
4
4
  import { BaseProxyService } from '@common-stack/store-mongo';
5
5
  type MethodsNames = keyof IChannelService;
6
6
  type MethodResponse<T extends MethodsNames> = ReturnType<IChannelService[T]>;
@@ -42,5 +42,6 @@ export declare class ChannelProxyService extends BaseProxyService<IChannelModel>
42
42
  isMember(channelId: string, user: string): Promise<boolean>;
43
43
  viewChannel(id: string, user: string): Promise<boolean>;
44
44
  bulkDelete(criteria: FilterCriteria<AsDomainType<IChannelModel>>): Promise<number>;
45
+ createChannelWithProjectId(projectId: string, channelInput: IChannelInput): Promise<boolean>;
45
46
  }
46
47
  export {};
@@ -201,6 +201,12 @@ import {__decorate,__param,__metadata}from'tslib';import {injectable,inject}from
201
201
  criteria
202
202
  });
203
203
  }
204
+ createChannelWithProjectId(projectId, channelInput) {
205
+ return this.callAction(ChannelServiceCommands.CreateChannelWithProjectId, {
206
+ projectId,
207
+ channelInput
208
+ });
209
+ }
204
210
  };
205
211
  ChannelProxyService = __decorate([injectable()
206
212
  // @ts-ignore - Type compatibility issue between BaseProxyService and IChannelService
@@ -1 +1 @@
1
- {"version":3,"file":"channel-microservice.js","sources":["../../../src/services/proxy-services/channel-microservice.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel-microservice.js","sources":["../../../src/services/proxy-services/channel-microservice.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export * from './post-thread-microservice';
3
3
  export * from './post-microservice';
4
4
  export * from './reaction-microservice';
5
5
  export * from './messenger-notification-microservice';
6
+ export * from './ai-fragment-microservice';
@@ -1,5 +1,5 @@
1
1
  import { ServiceBroker } from 'moleculer';
2
- import { IFileInfo, IMessageIdentifier, MoleculerTopics as MoleculerTopics, IPostModel, IPostThread, IUploadedFileInput, IPostService, IPostServiceInput, CreatePostThreadOptions, AsDomainType } from 'common/server';
2
+ import { IFileInfo, IMessageIdentifier, MoleculerTopics as MoleculerTopics, IPostModel, IPostThread, IUploadedFileInput, IPostService, IPostServiceInput, CreatePostThreadOptions, AsDomainType, ICodeAgentRequest, IFileUpdateResponse } from 'common/server';
3
3
  import { BaseProxyService } from '@common-stack/store-mongo';
4
4
  import { CdmLogger } from '@cdm-logger/core';
5
5
  import { Disposable, DisposableCollection } from '@adminide-stack/core';
@@ -192,4 +192,25 @@ export declare class PostProxyService extends BaseProxyService<IPostModel, IPost
192
192
  * @returns {Promise<Array<AsDomainType<IPostModel>> | Error>} - Array of posts or error
193
193
  */
194
194
  getPostsByAuthor(authorId: string, limit?: number, offset?: number): Promise<Array<AsDomainType<IPostModel>> | Error>;
195
+ /**
196
+ * Retrieves previous messages for a specific project
197
+ *
198
+ * @description Fetches the most recent messages from a project, formatted for AI agent context.
199
+ *
200
+ * @param {string} projectId - The unique identifier of the project
201
+ * @param {number} limit - Maximum number of messages to retrieve (default: 5)
202
+ * @returns {Promise<Array<IPostModel> | Error>} - Array of formatted messages or error
203
+ */
204
+ getPreviousMessagesByProjectId(projectId: string, limit?: number): Promise<Array<IPostModel> | Error>;
205
+ /**
206
+ * Saves code agent result with comprehensive data
207
+ *
208
+ * @description Saves the result from a code agent operation including message creation,
209
+ * fragment generation, and project update publishing. Handles both success and error cases
210
+ * with proper message creation and fragment management.
211
+ */
212
+ saveCodeAgentResult(request: ICodeAgentRequest, sandboxUrl: string, fragmentTitle: string, responseContent: string, files: {
213
+ [path: string]: string;
214
+ }, summary: string, isError: boolean, canvasLayers?: any[]): Promise<any>;
215
+ updateSandboxFile(projectId: string, messageId: string, filePath: string, content: string): Promise<IFileUpdateResponse>;
195
216
  }
@@ -547,6 +547,86 @@ let PostProxyService = class PostProxyService extends BaseProxyService {
547
547
  return error instanceof Error ? error : new Error('Unknown error occurred while getting posts by author');
548
548
  }
549
549
  }
550
+ /**
551
+ * Retrieves previous messages for a specific project
552
+ *
553
+ * @description Fetches the most recent messages from a project, formatted for AI agent context.
554
+ *
555
+ * @param {string} projectId - The unique identifier of the project
556
+ * @param {number} limit - Maximum number of messages to retrieve (default: 5)
557
+ * @returns {Promise<Array<IPostModel> | Error>} - Array of formatted messages or error
558
+ */
559
+ // @ts-ignore - Enhanced error handling pattern with Error union type
560
+ async getPreviousMessagesByProjectId(projectId, limit) {
561
+ try {
562
+ this.logger.debug('Getting previous messages by project ID via microservice: %s', projectId);
563
+ const result = await this.callAction('getPreviousMessagesByProjectId', {
564
+ projectId,
565
+ limit
566
+ });
567
+ this.logger.debug('Successfully retrieved previous messages by project ID via microservice');
568
+ return result;
569
+ } catch (error) {
570
+ this.logger.error('Error getting previous messages by project ID via microservice: %o', error);
571
+ return error instanceof Error ? error : new Error('Unknown error occurred while getting previous messages by project ID');
572
+ }
573
+ }
574
+ /**
575
+ * Saves code agent result with comprehensive data
576
+ *
577
+ * @description Saves the result from a code agent operation including message creation,
578
+ * fragment generation, and project update publishing. Handles both success and error cases
579
+ * with proper message creation and fragment management.
580
+ */
581
+ async saveCodeAgentResult(request, sandboxUrl, fragmentTitle, responseContent, files, summary, isError, canvasLayers) {
582
+ try {
583
+ this.logger.debug('Saving code agent result via microservice', {
584
+ request,
585
+ sandboxUrl,
586
+ fragmentTitle,
587
+ responseContent,
588
+ files,
589
+ summary,
590
+ isError,
591
+ canvasLayers
592
+ });
593
+ const result = await this.callAction('saveCodeAgentResult', {
594
+ request,
595
+ sandboxUrl,
596
+ fragmentTitle,
597
+ responseContent,
598
+ files,
599
+ summary,
600
+ isError,
601
+ canvasLayers
602
+ });
603
+ this.logger.debug('Successfully saved code agent result via microservice');
604
+ return result;
605
+ } catch (error) {
606
+ this.logger.error('Error saving code agent result via microservice: %o', error);
607
+ return error instanceof Error ? error : new Error('Unknown error occurred while saving code agent result');
608
+ }
609
+ }
610
+ async updateSandboxFile(projectId, messageId, filePath, content) {
611
+ try {
612
+ const result = await this.callAction('updateSandboxFile', {
613
+ projectId,
614
+ messageId,
615
+ filePath,
616
+ content
617
+ });
618
+ return result;
619
+ } catch (error) {
620
+ this.logger.error('Error updating sandbox file via microservice: %o', error);
621
+ return {
622
+ success: false,
623
+ message: error instanceof Error ? error.message : 'Unknown error occurred while updating sandbox file',
624
+ filePath,
625
+ timestamp: new Date().toISOString(),
626
+ syncStatus: 'error'
627
+ };
628
+ }
629
+ }
550
630
  };
551
631
  PostProxyService = __decorate([injectable()
552
632
  // @ts-ignore - Type compatibility issue between BaseProxyService and IPostService
@@ -1 +1 @@
1
- {"version":3,"file":"post-microservice.js","sources":["../../../src/services/proxy-services/post-microservice.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-microservice.js","sources":["../../../src/services/proxy-services/post-microservice.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { PubSubEngine } from 'graphql-subscriptions';
2
+ import { CdmLogger } from '@cdm-logger/core';
3
+ import { ISandboxErrorService } from 'common/server';
4
+ export declare class SandboxErrorService implements ISandboxErrorService {
5
+ private readonly pubsub;
6
+ private errorMonitors;
7
+ private reportedErrors;
8
+ private logger;
9
+ constructor(pubsub: PubSubEngine, logger?: CdmLogger.ILogger);
10
+ startErrorMonitoring(projectId: string, sandboxId: string, url: string, id?: string): Promise<void>;
11
+ stopErrorMonitoring(sandboxId: string): Promise<void>;
12
+ private checkForErrors;
13
+ private checkNextJsLogs;
14
+ private parseCompilationErrors;
15
+ private checkPackageJsonErrors;
16
+ private checkServerStatus;
17
+ private checkRuntimeErrors;
18
+ private publishError;
19
+ private createErrorHash;
20
+ reportError(projectId: string, sandboxId: string, errorType: string, message: string, stack?: string, url?: string, id?: string): Promise<void>;
21
+ triggerTestError(projectId: string, id?: string): Promise<void>;
22
+ private isErrorFixable;
23
+ }
@@ -0,0 +1,422 @@
1
+ import {__decorate,__param,__metadata}from'tslib';import {injectable,inject}from'inversify';import {PubSubEngine}from'graphql-subscriptions';import {v4}from'uuid';import'@cdm-logger/core';import {getSandbox}from'../inngest/utils.js';var SandboxErrorService_1;
2
+ let SandboxErrorService = SandboxErrorService_1 = class SandboxErrorService {
3
+ pubsub;
4
+ errorMonitors = new Map();
5
+ reportedErrors = new Map(); // sandboxId -> Set of error hashes
6
+ logger;
7
+ constructor(pubsub, logger) {
8
+ this.pubsub = pubsub;
9
+ this.logger = logger?.child({
10
+ className: SandboxErrorService_1.name
11
+ });
12
+ }
13
+ async startErrorMonitoring(projectId, sandboxId, url, id) {
14
+ // Stop existing monitoring for this sandbox
15
+ await this.stopErrorMonitoring(sandboxId);
16
+ this.logger?.debug('Starting intensive error monitoring for sandbox', {
17
+ sandboxId,
18
+ projectId
19
+ });
20
+ let checkCount = 0;
21
+ // Aggressive monitoring schedule:
22
+ // First 30 seconds: every 2 seconds (15 checks)
23
+ // Next 60 seconds: every 5 seconds (12 checks)
24
+ // After that: every 10 seconds (until stopped)
25
+ const monitor = setInterval(async () => {
26
+ try {
27
+ checkCount++;
28
+ // Determine check interval based on how long we've been monitoring
29
+ let shouldCheck = false;
30
+ if (checkCount <= 15) {
31
+ // First 30 seconds: check every time (every 2 seconds)
32
+ shouldCheck = true;
33
+ } else if (checkCount <= 27) {
34
+ // Next 60 seconds: check every 2.5 iterations (approximately every 5 seconds)
35
+ shouldCheck = checkCount % 2 === 0;
36
+ } else {
37
+ // After 90 seconds: check every 5 iterations (approximately every 10 seconds)
38
+ shouldCheck = checkCount % 5 === 0;
39
+ }
40
+ if (shouldCheck) {
41
+ await this.checkForErrors(projectId, sandboxId, url, id);
42
+ }
43
+ } catch (error) {
44
+ this.logger?.error(`Error monitoring sandbox ${sandboxId}:`, error);
45
+ }
46
+ }, 2000); // Base interval: 2 seconds
47
+ this.errorMonitors.set(sandboxId, monitor);
48
+ }
49
+ async stopErrorMonitoring(sandboxId) {
50
+ const monitor = this.errorMonitors.get(sandboxId);
51
+ if (monitor) {
52
+ clearInterval(monitor);
53
+ this.errorMonitors.delete(sandboxId);
54
+ this.reportedErrors.delete(sandboxId); // Clear error history for this sandbox
55
+ this.logger?.debug('Stopped error monitoring for sandbox', {
56
+ sandboxId
57
+ });
58
+ }
59
+ }
60
+ async checkForErrors(projectId, sandboxId, url, id) {
61
+ try {
62
+ const sandbox = await getSandbox(sandboxId);
63
+ // Check multiple sources for errors sequentially (faster than parallel)
64
+ // Check compilation errors first as they're most common
65
+ await this.checkNextJsLogs(sandbox, projectId, sandboxId, url, id);
66
+ await this.checkServerStatus(sandbox, projectId, sandboxId, url, id);
67
+ await this.checkPackageJsonErrors(sandbox, projectId, sandboxId, url, id);
68
+ } catch (error) {
69
+ this.logger?.error(`Failed to check for errors in sandbox ${sandboxId}:`, error);
70
+ // If it's a connection error, the sandbox might be dead - stop monitoring
71
+ if (error.message.includes('fetch failed') || error.message.includes('connect') || error.message.includes('ECONNREFUSED')) {
72
+ this.logger?.warn('Sandbox appears to be disconnected, stopping monitoring', {
73
+ sandboxId
74
+ });
75
+ await this.stopErrorMonitoring(sandboxId);
76
+ // Report sandbox disconnection as an error only once
77
+ const connectionError = {
78
+ id: id || v4(),
79
+ projectId,
80
+ sandboxId,
81
+ errorType: 'SANDBOX_DISCONNECTED',
82
+ message: `Sandbox connection lost. This usually happens when there are compilation errors that prevent the server from starting, or the sandbox has been terminated.`,
83
+ timestamp: new Date().toISOString(),
84
+ url,
85
+ fixable: true // User can retry with fixed code
86
+ };
87
+ await this.publishError(connectionError);
88
+ return;
89
+ }
90
+ // For other monitoring errors, just log them and continue
91
+ this.logger?.debug(`Monitoring error for sandbox ${sandboxId}: ${error.message}`);
92
+ }
93
+ }
94
+ async checkNextJsLogs(sandbox, projectId, sandboxId, url, id) {
95
+ try {
96
+ // First, check for immediate compilation errors by looking at current Next.js process output
97
+ const immediateErrorCheck = await sandbox.commands.run('timeout 3 sh -c "cd /home/user && npm run dev 2>&1 | head -10" || echo "TIMEOUT_OR_ERROR"');
98
+ if (!immediateErrorCheck.stdout.includes('TIMEOUT_OR_ERROR')) {
99
+ const immediateErrors = this.parseCompilationErrors(immediateErrorCheck.stdout);
100
+ if (immediateErrors.length > 0) {
101
+ const error = {
102
+ id: id || v4(),
103
+ projectId,
104
+ sandboxId,
105
+ errorType: 'COMPILATION_ERROR',
106
+ message: `Immediate compilation error detected:\n${immediateErrors.join('\n')}`,
107
+ stack: immediateErrorCheck.stderr || '',
108
+ timestamp: new Date().toISOString(),
109
+ url,
110
+ fixable: true
111
+ };
112
+ this.logger?.error('Immediate compilation error found in sandbox', {
113
+ sandboxId,
114
+ message: error.message.substring(0, 200)
115
+ });
116
+ await this.publishError(error);
117
+ return;
118
+ }
119
+ }
120
+ // Check the enhanced error monitoring logs
121
+ const errorLogResult = await sandbox.commands.run('cat /home/user/logs/errors.log 2>/dev/null | tail -5 || echo "NO_ERROR_LOG"');
122
+ if (!errorLogResult.stdout.includes('NO_ERROR_LOG')) {
123
+ try {
124
+ const errorLines = errorLogResult.stdout.trim().split('\n').filter(line => line.length > 0);
125
+ for (const line of errorLines) {
126
+ const errorData = JSON.parse(line);
127
+ // Check if this is a recent error (within last 60 seconds for immediate detection)
128
+ const errorTime = new Date(errorData.timestamp);
129
+ const now = new Date();
130
+ const diffSeconds = (now.getTime() - errorTime.getTime()) / 1000;
131
+ if (diffSeconds <= 60 && ['COMPILATION_ERROR', 'UNCAUGHT_EXCEPTION', 'UNHANDLED_REJECTION'].includes(errorData.type)) {
132
+ const error = {
133
+ id: v4(),
134
+ projectId,
135
+ sandboxId,
136
+ errorType: errorData.type,
137
+ message: errorData.message,
138
+ stack: errorData.stack,
139
+ timestamp: new Date().toISOString(),
140
+ url,
141
+ fixable: true
142
+ };
143
+ console.log(`🚨 Structured error found in sandbox ${sandboxId}:`, error.message.substring(0, 200));
144
+ await this.publishError(error);
145
+ return; // Exit after first error found
146
+ }
147
+ }
148
+ } catch (parseError) {
149
+ this.logger?.debug(`Failed to parse error log for sandbox ${sandboxId}: ${parseError.message}`);
150
+ }
151
+ }
152
+ // Check console logs with more comprehensive patterns
153
+ const consoleLogResult = await sandbox.commands.run('cat /home/user/logs/nextjs-console.log 2>/dev/null | tail -30 || echo "NO_CONSOLE_LOG"');
154
+ if (!consoleLogResult.stdout.includes('NO_CONSOLE_LOG')) {
155
+ const compilationErrors = this.parseCompilationErrors(consoleLogResult.stdout);
156
+ if (compilationErrors.length > 0) {
157
+ const error = {
158
+ id: v4(),
159
+ projectId,
160
+ sandboxId,
161
+ errorType: 'COMPILATION_ERROR',
162
+ message: `Compilation errors detected:\n${compilationErrors.join('\n\n')}`,
163
+ timestamp: new Date().toISOString(),
164
+ url,
165
+ fixable: true
166
+ };
167
+ this.logger?.error('Console compilation error found in sandbox', {
168
+ sandboxId,
169
+ message: error.message.substring(0, 200)
170
+ });
171
+ await this.publishError(error);
172
+ return;
173
+ }
174
+ }
175
+ // Check build logs
176
+ const buildLogResult = await sandbox.commands.run('cat /home/user/logs/build.log 2>/dev/null | tail -10 || echo "NO_BUILD_LOG"');
177
+ if (!buildLogResult.stdout.includes('NO_BUILD_LOG')) {
178
+ try {
179
+ const buildLines = buildLogResult.stdout.trim().split('\n').filter(line => line.length > 0);
180
+ for (const line of buildLines) {
181
+ const buildData = JSON.parse(line);
182
+ if (buildData.level === 'error') {
183
+ const error = {
184
+ id: v4(),
185
+ projectId,
186
+ sandboxId,
187
+ errorType: 'BUILD_ERROR',
188
+ message: buildData.message,
189
+ timestamp: new Date().toISOString(),
190
+ url,
191
+ fixable: true
192
+ };
193
+ this.logger?.error('Build error found in sandbox', {
194
+ sandboxId,
195
+ message: error.message.substring(0, 200)
196
+ });
197
+ await this.publishError(error);
198
+ return;
199
+ }
200
+ }
201
+ } catch (parseError) {
202
+ this.logger?.debug(`Failed to parse build log for sandbox ${sandboxId}: ${parseError.message}`);
203
+ }
204
+ }
205
+ } catch (error) {
206
+ this.logger?.debug(`Next.js log check failed for sandbox ${sandboxId}: ${error.message}`);
207
+ }
208
+ }
209
+ parseCompilationErrors(output) {
210
+ const errors = [];
211
+ const lines = output.split('\n');
212
+ const errorPatterns = [/Error:/gi, /Failed to compile/gi, /Module not found/gi, /Syntax error/gi, /Cannot resolve/gi, /TypeError:/gi, /ReferenceError:/gi, /Parsing ecmascript source code failed/gi, /Expected.*but got/gi, /Unexpected token/gi];
213
+ let currentError = '';
214
+ let inError = false;
215
+ for (let i = 0; i < lines.length; i++) {
216
+ const line = lines[i];
217
+ // Check if this line indicates the start of an error
218
+ const isErrorLine = errorPatterns.some(pattern => pattern.test(line));
219
+ if (isErrorLine) {
220
+ // If we were already in an error, save the previous one
221
+ if (inError && currentError.trim()) {
222
+ errors.push(currentError.trim());
223
+ }
224
+ // Start a new error
225
+ currentError = line;
226
+ inError = true;
227
+ } else if (inError) {
228
+ // If we're in an error and this line has relevant context, add it
229
+ if (line.trim() && (line.includes('at ') || line.includes('->') || line.includes('|') || line.includes('^'))) {
230
+ currentError += `\n${line}`;
231
+ } else if (line.trim() === '') {
232
+ // Empty line might indicate end of error context
233
+ continue;
234
+ } else {
235
+ // Non-empty line that doesn't look like error context - end this error
236
+ if (currentError.trim()) {
237
+ errors.push(currentError.trim());
238
+ }
239
+ currentError = '';
240
+ inError = false;
241
+ }
242
+ }
243
+ }
244
+ // Don't forget the last error if we ended while in one
245
+ if (inError && currentError.trim()) {
246
+ errors.push(currentError.trim());
247
+ }
248
+ return errors.filter(error => error.length > 10); // Filter out very short/meaningless errors
249
+ }
250
+ async checkPackageJsonErrors(sandbox, projectId, sandboxId, url, id) {
251
+ try {
252
+ const result = await sandbox.commands.run('npm ls --depth=0 2>&1 || echo "NPM_CHECK_DONE"');
253
+ if (result.stdout.includes('ERESOLVE') || result.stdout.includes('missing:') || result.stdout.includes('invalid:')) {
254
+ const error = {
255
+ id: id || v4(),
256
+ projectId,
257
+ sandboxId,
258
+ errorType: 'DEPENDENCY_ERROR',
259
+ message: `Package dependency issues detected:\n${result.stdout.substring(0, 800)}`,
260
+ timestamp: new Date().toISOString(),
261
+ url,
262
+ fixable: true
263
+ };
264
+ await this.publishError(error);
265
+ }
266
+ } catch (error) {
267
+ this.logger?.debug(`Package.json check failed for sandbox ${sandboxId}: ${error.message}`);
268
+ }
269
+ }
270
+ async checkServerStatus(sandbox, projectId, sandboxId, url, id) {
271
+ try {
272
+ // Check if the server is responding with errors
273
+ const result = await sandbox.commands.run('curl -s -I http://localhost:3000 2>&1 || echo "CURL_FAILED"');
274
+ if (result.stdout.includes('CURL_FAILED') || result.stdout.includes('Connection refused')) {
275
+ // Server is down, check if it's a startup error
276
+ const processCheck = await sandbox.commands.run('ps aux | grep -i next || echo "NO_NEXT_PROCESS"');
277
+ if (processCheck.stdout.includes('NO_NEXT_PROCESS')) {
278
+ const error = {
279
+ id: id || v4(),
280
+ projectId,
281
+ sandboxId,
282
+ errorType: 'SERVER_START_ERROR',
283
+ message: 'Next.js development server failed to start. This usually indicates compilation errors.',
284
+ timestamp: new Date().toISOString(),
285
+ url,
286
+ fixable: true
287
+ };
288
+ await this.publishError(error);
289
+ }
290
+ }
291
+ } catch (error) {
292
+ this.logger?.debug(`Server status check failed for sandbox ${sandboxId}: ${error.message}`);
293
+ }
294
+ }
295
+ async checkRuntimeErrors(projectId, sandboxId, url) {
296
+ try {
297
+ const sandbox = await getSandbox(sandboxId);
298
+ // Check for React error boundaries or console errors
299
+ // This is a simplified approach - in practice you might want to inject a monitoring script
300
+ const checkScript = `
301
+ const puppeteer = require('puppeteer');
302
+ (async () => {
303
+ try {
304
+ const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox'] });
305
+ const page = await browser.newPage();
306
+
307
+ const errors = [];
308
+ page.on('pageerror', error => {
309
+ errors.push(error.message);
310
+ });
311
+
312
+ page.on('console', msg => {
313
+ if (msg.type() === 'error') {
314
+ errors.push(msg.text());
315
+ }
316
+ });
317
+
318
+ await page.goto('http://localhost:3000', { waitUntil: 'networkidle0', timeout: 10000 });
319
+ await browser.close();
320
+
321
+ if (errors.length > 0) {
322
+ console.log('RUNTIME_ERRORS:', JSON.stringify(errors));
323
+ }
324
+ } catch (e) {
325
+ console.log('PUPPETEER_ERROR:', e.message);
326
+ }
327
+ })();
328
+ `;
329
+ const result = await sandbox.commands.run(`node -e "${checkScript.replace(/"/g, '\\"')}"`);
330
+ if (result.stdout.includes('RUNTIME_ERRORS:')) {
331
+ const errorsMatch = result.stdout.match(/RUNTIME_ERRORS: (.+)/);
332
+ if (errorsMatch) {
333
+ const errors = JSON.parse(errorsMatch[1]);
334
+ const error = {
335
+ id: v4(),
336
+ projectId,
337
+ sandboxId,
338
+ errorType: 'RUNTIME_ERROR',
339
+ message: errors.join('\n'),
340
+ timestamp: new Date().toISOString(),
341
+ url,
342
+ fixable: true
343
+ };
344
+ await this.publishError(error);
345
+ }
346
+ }
347
+ } catch (error) {
348
+ // Silently handle puppeteer check failures as they're not critical
349
+ this.logger?.debug(`Runtime error check failed for sandbox ${sandboxId}: ${error.message}`);
350
+ }
351
+ }
352
+ async publishError(error) {
353
+ try {
354
+ // Create a hash of the error message to prevent duplicates
355
+ const errorHash = this.createErrorHash(error.message, error.errorType);
356
+ // Check if we've already reported this error for this sandbox
357
+ const reportedForSandbox = this.reportedErrors.get(error.sandboxId) || new Set();
358
+ if (reportedForSandbox.has(errorHash)) {
359
+ this.logger?.debug('Skipping duplicate error for sandbox', {
360
+ sandboxId: error.sandboxId,
361
+ message: `${error.message.substring(0, 100)}...`
362
+ });
363
+ return;
364
+ }
365
+ // Mark this error as reported
366
+ reportedForSandbox.add(errorHash);
367
+ this.reportedErrors.set(error.sandboxId, reportedForSandbox);
368
+ await this.pubsub.publish('SANDBOX_ERROR', {
369
+ sandboxError: {
370
+ projectId: error.projectId,
371
+ sandboxId: error.sandboxId,
372
+ error
373
+ }
374
+ });
375
+ this.logger?.debug('Published new sandbox error for project', {
376
+ projectId: error.projectId,
377
+ message: `${error.message.substring(0, 100)}...`
378
+ });
379
+ } catch (publishError) {
380
+ this.logger?.error('Failed to publish sandbox error: %o', publishError);
381
+ }
382
+ }
383
+ createErrorHash(message, errorType) {
384
+ // Create a simple hash from error message and type to identify duplicates
385
+ // Remove ANSI color codes and normalize whitespace for consistent hashing
386
+ const cleanMessage = message.replace(/\u001b\[[0-9;]*m/g, '') // Remove ANSI color codes
387
+ .replace(/\s+/g, ' ') // Normalize whitespace
388
+ .trim().substring(0, 200); // Use first 200 chars for hash
389
+ return `${errorType}:${cleanMessage}`;
390
+ }
391
+ // Method to manually report an error (can be called from sandbox monitoring tools)
392
+ async reportError(projectId, sandboxId, errorType, message, stack, url, id) {
393
+ const error = {
394
+ id: id || v4(),
395
+ projectId,
396
+ sandboxId,
397
+ errorType,
398
+ message,
399
+ stack,
400
+ timestamp: new Date().toISOString(),
401
+ url,
402
+ fixable: this.isErrorFixable(errorType, message)
403
+ };
404
+ this.logger?.debug('Publishing sandbox error for project', {
405
+ projectId,
406
+ errorType,
407
+ message: `${message.substring(0, 100)}...`,
408
+ fixable: error.fixable
409
+ });
410
+ await this.publishError(error);
411
+ }
412
+ // Method to trigger a test error for debugging
413
+ async triggerTestError(projectId, id) {
414
+ await this.reportError(projectId, `test-sandbox-${Date.now()}`, 'TEST_ERROR', 'This is a test error to verify the sandbox error monitoring system is working correctly.', 'Test stack trace', 'https://test-sandbox.com', id);
415
+ }
416
+ isErrorFixable(errorType, message) {
417
+ // Determine if the error is likely fixable by an LLM
418
+ const fixablePatterns = [/syntax error/i, /module not found/i, /cannot find module/i, /typescript error/i, /type error/i, /compilation error/i, /reference error/i, /undefined variable/i, /missing import/i, /property.*does not exist/i];
419
+ return fixablePatterns.some(pattern => pattern.test(message) || pattern.test(errorType));
420
+ }
421
+ };
422
+ SandboxErrorService = SandboxErrorService_1 = __decorate([injectable(), __param(0, inject('PubSub')), __param(1, inject('Logger')), __metadata("design:paramtypes", [PubSubEngine, Object])], SandboxErrorService);export{SandboxErrorService};//# sourceMappingURL=sandbox-error-service.js.map