@chaaskit/server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/api/admin.js +438 -0
  2. package/dist/api/admin.js.map +1 -0
  3. package/dist/api/agents.js +21 -0
  4. package/dist/api/agents.js.map +1 -0
  5. package/dist/api/api-keys.js +122 -0
  6. package/dist/api/api-keys.js.map +1 -0
  7. package/dist/api/auth.js +399 -0
  8. package/dist/api/auth.js.map +1 -0
  9. package/dist/api/chat.js +900 -0
  10. package/dist/api/chat.js.map +1 -0
  11. package/dist/api/config.js +91 -0
  12. package/dist/api/config.js.map +1 -0
  13. package/dist/api/documents.js +237 -0
  14. package/dist/api/documents.js.map +1 -0
  15. package/dist/api/export.js +107 -0
  16. package/dist/api/export.js.map +1 -0
  17. package/dist/api/health.js +25 -0
  18. package/dist/api/health.js.map +1 -0
  19. package/dist/api/mcp-server.js +84 -0
  20. package/dist/api/mcp-server.js.map +1 -0
  21. package/dist/api/mcp.js +400 -0
  22. package/dist/api/mcp.js.map +1 -0
  23. package/dist/api/mentions.js +94 -0
  24. package/dist/api/mentions.js.map +1 -0
  25. package/dist/api/oauth.js +366 -0
  26. package/dist/api/oauth.js.map +1 -0
  27. package/dist/api/payments.js +473 -0
  28. package/dist/api/payments.js.map +1 -0
  29. package/dist/api/projects.js +301 -0
  30. package/dist/api/projects.js.map +1 -0
  31. package/dist/api/scheduled-prompts.js +617 -0
  32. package/dist/api/scheduled-prompts.js.map +1 -0
  33. package/dist/api/search.js +85 -0
  34. package/dist/api/search.js.map +1 -0
  35. package/dist/api/share.js +188 -0
  36. package/dist/api/share.js.map +1 -0
  37. package/dist/api/slack.js +468 -0
  38. package/dist/api/slack.js.map +1 -0
  39. package/dist/api/teams.js +693 -0
  40. package/dist/api/teams.js.map +1 -0
  41. package/dist/api/templates.js +134 -0
  42. package/dist/api/templates.js.map +1 -0
  43. package/dist/api/threads.js +323 -0
  44. package/dist/api/threads.js.map +1 -0
  45. package/dist/api/upload.js +57 -0
  46. package/dist/api/upload.js.map +1 -0
  47. package/dist/api/user.js +111 -0
  48. package/dist/api/user.js.map +1 -0
  49. package/dist/api/v1/openai.js +245 -0
  50. package/dist/api/v1/openai.js.map +1 -0
  51. package/dist/app.js +168 -0
  52. package/dist/app.js.map +1 -0
  53. package/dist/bin/cli.js +57 -0
  54. package/dist/bin/cli.js.map +1 -0
  55. package/dist/commands/db-sync.js +108 -0
  56. package/dist/commands/db-sync.js.map +1 -0
  57. package/dist/config/loader.js +374 -0
  58. package/dist/config/loader.js.map +1 -0
  59. package/dist/documents/extractors.js +136 -0
  60. package/dist/documents/extractors.js.map +1 -0
  61. package/dist/extensions/glob.js +53 -0
  62. package/dist/extensions/glob.js.map +1 -0
  63. package/dist/extensions/loader.js +72 -0
  64. package/dist/extensions/loader.js.map +1 -0
  65. package/dist/index.js +25 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/loaders/index.js +75 -0
  68. package/dist/loaders/index.js.map +1 -0
  69. package/dist/mcp/client.js +551 -0
  70. package/dist/mcp/client.js.map +1 -0
  71. package/dist/mcp/server.js +335 -0
  72. package/dist/mcp/server.js.map +1 -0
  73. package/dist/middleware/apiKeyAuth.js +136 -0
  74. package/dist/middleware/apiKeyAuth.js.map +1 -0
  75. package/dist/middleware/auth.js +192 -0
  76. package/dist/middleware/auth.js.map +1 -0
  77. package/dist/middleware/errorHandler.js +41 -0
  78. package/dist/middleware/errorHandler.js.map +1 -0
  79. package/dist/middleware/mcpServerAuth.js +164 -0
  80. package/dist/middleware/mcpServerAuth.js.map +1 -0
  81. package/dist/middleware/requestLogger.js +9 -0
  82. package/dist/middleware/requestLogger.js.map +1 -0
  83. package/dist/middleware/team.js +132 -0
  84. package/dist/middleware/team.js.map +1 -0
  85. package/dist/oauth/server.js +410 -0
  86. package/dist/oauth/server.js.map +1 -0
  87. package/dist/queue/cli.js +93 -0
  88. package/dist/queue/cli.js.map +1 -0
  89. package/dist/queue/handlers/index.js +91 -0
  90. package/dist/queue/handlers/index.js.map +1 -0
  91. package/dist/queue/handlers/scheduled-prompt.js +270 -0
  92. package/dist/queue/handlers/scheduled-prompt.js.map +1 -0
  93. package/dist/queue/index.js +91 -0
  94. package/dist/queue/index.js.map +1 -0
  95. package/dist/queue/providers/memory.js +296 -0
  96. package/dist/queue/providers/memory.js.map +1 -0
  97. package/dist/queue/providers/sqs.js +275 -0
  98. package/dist/queue/providers/sqs.js.map +1 -0
  99. package/dist/queue/scheduler.js +355 -0
  100. package/dist/queue/scheduler.js.map +1 -0
  101. package/dist/queue/types.js +5 -0
  102. package/dist/queue/types.js.map +1 -0
  103. package/dist/queue/worker.js +230 -0
  104. package/dist/queue/worker.js.map +1 -0
  105. package/dist/registry/index.js +40 -0
  106. package/dist/registry/index.js.map +1 -0
  107. package/dist/server.js +207 -0
  108. package/dist/server.js.map +1 -0
  109. package/dist/services/agent.js +530 -0
  110. package/dist/services/agent.js.map +1 -0
  111. package/dist/services/agents.js +194 -0
  112. package/dist/services/agents.js.map +1 -0
  113. package/dist/services/documents.js +507 -0
  114. package/dist/services/documents.js.map +1 -0
  115. package/dist/services/email/index.js +91 -0
  116. package/dist/services/email/index.js.map +1 -0
  117. package/dist/services/email/providers/ses.js +97 -0
  118. package/dist/services/email/providers/ses.js.map +1 -0
  119. package/dist/services/email/templates.js +194 -0
  120. package/dist/services/email/templates.js.map +1 -0
  121. package/dist/services/email/types.js +5 -0
  122. package/dist/services/email/types.js.map +1 -0
  123. package/dist/services/encryption.js +69 -0
  124. package/dist/services/encryption.js.map +1 -0
  125. package/dist/services/oauth-discovery.js +226 -0
  126. package/dist/services/oauth-discovery.js.map +1 -0
  127. package/dist/services/pendingConfirmation.js +105 -0
  128. package/dist/services/pendingConfirmation.js.map +1 -0
  129. package/dist/services/scheduledPrompts.js +70 -0
  130. package/dist/services/scheduledPrompts.js.map +1 -0
  131. package/dist/services/slack/client.js +174 -0
  132. package/dist/services/slack/client.js.map +1 -0
  133. package/dist/services/slack/events.js +189 -0
  134. package/dist/services/slack/events.js.map +1 -0
  135. package/dist/services/slack/index.js +6 -0
  136. package/dist/services/slack/index.js.map +1 -0
  137. package/dist/services/slack/notifications.js +124 -0
  138. package/dist/services/slack/notifications.js.map +1 -0
  139. package/dist/services/slack/signature.js +74 -0
  140. package/dist/services/slack/signature.js.map +1 -0
  141. package/dist/services/slack/thread-context.js +191 -0
  142. package/dist/services/slack/thread-context.js.map +1 -0
  143. package/dist/services/toolConfirmation.js +55 -0
  144. package/dist/services/toolConfirmation.js.map +1 -0
  145. package/dist/services/usage.js +241 -0
  146. package/dist/services/usage.js.map +1 -0
  147. package/dist/ssr/build.js +90 -0
  148. package/dist/ssr/build.js.map +1 -0
  149. package/dist/ssr/components/SSRMessageList.js +120 -0
  150. package/dist/ssr/components/SSRMessageList.js.map +1 -0
  151. package/dist/ssr/entry.client.js +8 -0
  152. package/dist/ssr/entry.client.js.map +1 -0
  153. package/dist/ssr/entry.server.js +71 -0
  154. package/dist/ssr/entry.server.js.map +1 -0
  155. package/dist/ssr/handler.js +51 -0
  156. package/dist/ssr/handler.js.map +1 -0
  157. package/dist/ssr/root.js +184 -0
  158. package/dist/ssr/root.js.map +1 -0
  159. package/dist/ssr/routes/login.js +140 -0
  160. package/dist/ssr/routes/login.js.map +1 -0
  161. package/dist/ssr/routes/pricing.js +195 -0
  162. package/dist/ssr/routes/pricing.js.map +1 -0
  163. package/dist/ssr/routes/privacy.js +39 -0
  164. package/dist/ssr/routes/privacy.js.map +1 -0
  165. package/dist/ssr/routes/register.js +148 -0
  166. package/dist/ssr/routes/register.js.map +1 -0
  167. package/dist/ssr/routes/shared.$shareId.js +153 -0
  168. package/dist/ssr/routes/shared.$shareId.js.map +1 -0
  169. package/dist/ssr/routes/terms.js +39 -0
  170. package/dist/ssr/routes/terms.js.map +1 -0
  171. package/dist/storage/index.js +43 -0
  172. package/dist/storage/index.js.map +1 -0
  173. package/dist/storage/providers/database.js +38 -0
  174. package/dist/storage/providers/database.js.map +1 -0
  175. package/dist/storage/providers/filesystem.js +51 -0
  176. package/dist/storage/providers/filesystem.js.map +1 -0
  177. package/dist/storage/types.js +2 -0
  178. package/dist/storage/types.js.map +1 -0
  179. package/dist/tools/documents.js +336 -0
  180. package/dist/tools/documents.js.map +1 -0
  181. package/dist/tools/get-plan-usage.js +82 -0
  182. package/dist/tools/get-plan-usage.js.map +1 -0
  183. package/dist/tools/index.js +106 -0
  184. package/dist/tools/index.js.map +1 -0
  185. package/dist/tools/types.js +2 -0
  186. package/dist/tools/types.js.map +1 -0
  187. package/dist/tools/web-scrape.js +145 -0
  188. package/dist/tools/web-scrape.js.map +1 -0
  189. package/package.json +93 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/queue/scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Queue system type definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/queue/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Queue Worker
3
+ *
4
+ * Processes jobs from the queue using registered handlers.
5
+ * Supports concurrent job processing with configurable concurrency.
6
+ */
7
+ import { executeJob, hasJobHandler } from './handlers/index.js';
8
+ /**
9
+ * Worker that processes jobs from a queue.
10
+ */
11
+ export class Worker {
12
+ provider;
13
+ concurrency;
14
+ shutdownTimeout;
15
+ running = false;
16
+ shuttingDown = false;
17
+ activeJobs = new Set();
18
+ stats = {
19
+ processed: 0,
20
+ succeeded: 0,
21
+ failed: 0,
22
+ };
23
+ abortController = null;
24
+ constructor(options) {
25
+ this.provider = options.provider;
26
+ this.concurrency = options.config.concurrency ?? 5;
27
+ this.shutdownTimeout = options.config.shutdownTimeout ?? 30000;
28
+ }
29
+ /**
30
+ * Start the worker.
31
+ * The worker will continuously poll for jobs and process them.
32
+ */
33
+ async start() {
34
+ if (this.running) {
35
+ console.warn('[Worker] Already running');
36
+ return;
37
+ }
38
+ this.running = true;
39
+ this.shuttingDown = false;
40
+ this.abortController = new AbortController();
41
+ console.log(`[Worker] Starting with concurrency ${this.concurrency}`);
42
+ // Start multiple concurrent worker loops
43
+ const workers = Array.from({ length: this.concurrency }, (_, i) => this.workerLoop(i));
44
+ // Wait for all worker loops to complete (they run until stop() is called)
45
+ await Promise.all(workers);
46
+ console.log('[Worker] Stopped');
47
+ }
48
+ /**
49
+ * Stop the worker gracefully.
50
+ * Waits for active jobs to complete up to shutdownTimeout.
51
+ */
52
+ async stop() {
53
+ if (!this.running) {
54
+ return;
55
+ }
56
+ console.log('[Worker] Stopping...');
57
+ this.shuttingDown = true;
58
+ this.abortController?.abort();
59
+ // Wait for active jobs to complete
60
+ const deadline = Date.now() + this.shutdownTimeout;
61
+ while (this.activeJobs.size > 0 && Date.now() < deadline) {
62
+ console.log(`[Worker] Waiting for ${this.activeJobs.size} active job(s)...`);
63
+ await sleep(1000);
64
+ }
65
+ if (this.activeJobs.size > 0) {
66
+ console.warn(`[Worker] Forcing shutdown with ${this.activeJobs.size} active job(s)`);
67
+ }
68
+ this.running = false;
69
+ }
70
+ /**
71
+ * Get worker statistics.
72
+ */
73
+ getStats() {
74
+ return {
75
+ ...this.stats,
76
+ active: this.activeJobs.size,
77
+ running: this.running,
78
+ };
79
+ }
80
+ /**
81
+ * Check if the worker is running.
82
+ */
83
+ isRunning() {
84
+ return this.running;
85
+ }
86
+ /**
87
+ * Individual worker loop that receives and processes jobs.
88
+ */
89
+ async workerLoop(workerId) {
90
+ const prefix = `[Worker:${workerId}]`;
91
+ while (this.running && !this.shuttingDown) {
92
+ try {
93
+ // Wait for a job from the queue (long polling)
94
+ const jobs = await this.provider.receive(1, 20);
95
+ if (jobs.length === 0) {
96
+ // No jobs received, loop will continue and poll again
97
+ continue;
98
+ }
99
+ const job = jobs[0];
100
+ // Check if we have a handler for this job type
101
+ if (!hasJobHandler(job.type)) {
102
+ console.error(`${prefix} No handler for job type: ${job.type}, failing job`);
103
+ await this.provider.fail(job.receiptHandle, new Error(`No handler for job type: ${job.type}`));
104
+ continue;
105
+ }
106
+ // Process the job
107
+ await this.processJob(job, prefix);
108
+ }
109
+ catch (error) {
110
+ // Only log if not shutting down
111
+ if (!this.shuttingDown) {
112
+ console.error(`${prefix} Error in worker loop:`, error);
113
+ // Brief pause before retrying to avoid tight error loops
114
+ await sleep(1000);
115
+ }
116
+ }
117
+ }
118
+ }
119
+ /**
120
+ * Process a single job.
121
+ */
122
+ async processJob(job, prefix) {
123
+ this.activeJobs.add(job.id);
124
+ const startTime = Date.now();
125
+ console.log(`${prefix} Processing job ${job.id} (type: ${job.type}, attempt: ${job.attempts})`);
126
+ // Create abort controller for job timeout
127
+ const jobAbortController = new AbortController();
128
+ const timeoutId = setTimeout(() => {
129
+ jobAbortController.abort();
130
+ }, job.options.timeout);
131
+ // Create job context
132
+ const ctx = {
133
+ jobId: job.id,
134
+ attempt: job.attempts,
135
+ log: (message, ...args) => {
136
+ console.log(`${prefix} [${job.id}] ${message}`, ...args);
137
+ },
138
+ progress: (percent) => {
139
+ // Progress reporting could be extended to update job metadata
140
+ console.log(`${prefix} [${job.id}] Progress: ${percent}%`);
141
+ },
142
+ signal: jobAbortController.signal,
143
+ };
144
+ try {
145
+ // Execute the job handler
146
+ await executeJob(job, ctx);
147
+ // Acknowledge successful completion
148
+ await this.provider.acknowledge(job.receiptHandle);
149
+ const duration = Date.now() - startTime;
150
+ console.log(`${prefix} Job ${job.id} completed in ${duration}ms`);
151
+ this.stats.processed++;
152
+ this.stats.succeeded++;
153
+ }
154
+ catch (error) {
155
+ const duration = Date.now() - startTime;
156
+ const errorMessage = error instanceof Error ? error.message : String(error);
157
+ if (jobAbortController.signal.aborted) {
158
+ console.error(`${prefix} Job ${job.id} timed out after ${duration}ms`);
159
+ }
160
+ else {
161
+ console.error(`${prefix} Job ${job.id} failed after ${duration}ms:`, errorMessage);
162
+ }
163
+ // Mark job as failed (will be retried if attempts remain)
164
+ try {
165
+ await this.provider.fail(job.receiptHandle, error instanceof Error ? error : new Error(errorMessage));
166
+ }
167
+ catch (failError) {
168
+ console.error(`${prefix} Error failing job ${job.id}:`, failError);
169
+ }
170
+ this.stats.processed++;
171
+ this.stats.failed++;
172
+ }
173
+ finally {
174
+ clearTimeout(timeoutId);
175
+ this.activeJobs.delete(job.id);
176
+ }
177
+ }
178
+ }
179
+ /**
180
+ * Helper to sleep for a given number of milliseconds.
181
+ */
182
+ function sleep(ms) {
183
+ return new Promise((resolve) => setTimeout(resolve, ms));
184
+ }
185
+ // Singleton worker instance
186
+ let workerInstance = null;
187
+ /**
188
+ * Get or create the worker singleton.
189
+ */
190
+ export function getWorker(options) {
191
+ if (!workerInstance && options) {
192
+ workerInstance = new Worker(options);
193
+ }
194
+ return workerInstance;
195
+ }
196
+ /**
197
+ * Start the worker with the given options.
198
+ * Returns the worker instance.
199
+ */
200
+ export async function startWorker(options) {
201
+ if (workerInstance) {
202
+ console.warn('[Worker] Worker already exists');
203
+ if (!workerInstance.isRunning()) {
204
+ await workerInstance.start();
205
+ }
206
+ return workerInstance;
207
+ }
208
+ workerInstance = new Worker(options);
209
+ // Start in background (don't await)
210
+ workerInstance.start().catch((error) => {
211
+ console.error('[Worker] Worker crashed:', error);
212
+ });
213
+ return workerInstance;
214
+ }
215
+ /**
216
+ * Stop the worker.
217
+ */
218
+ export async function stopWorker() {
219
+ if (workerInstance) {
220
+ await workerInstance.stop();
221
+ workerInstance = null;
222
+ }
223
+ }
224
+ /**
225
+ * Reset the worker singleton (for testing).
226
+ */
227
+ export function resetWorker() {
228
+ workerInstance = null;
229
+ }
230
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/queue/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ class Registry {
2
+ providers = new Map();
3
+ register(category, name, implementation) {
4
+ if (!this.providers.has(category)) {
5
+ this.providers.set(category, new Map());
6
+ }
7
+ this.providers.get(category).set(name, implementation);
8
+ console.log(`[Registry] Registered ${category}:${name}`);
9
+ }
10
+ get(category, name) {
11
+ return this.providers.get(category)?.get(name);
12
+ }
13
+ getAll(category) {
14
+ return this.providers.get(category) || new Map();
15
+ }
16
+ has(category, name) {
17
+ return this.providers.get(category)?.has(name) || false;
18
+ }
19
+ unregister(category, name) {
20
+ return this.providers.get(category)?.delete(name) || false;
21
+ }
22
+ }
23
+ // Singleton instance
24
+ export const registry = new Registry();
25
+ // Base classes for extensions
26
+ export class BaseAgent {
27
+ }
28
+ export class BasePricingPlan {
29
+ }
30
+ export class BaseAuthProvider {
31
+ }
32
+ /**
33
+ * Base class for MCP resources that can be exposed via the MCP server.
34
+ *
35
+ * Extensions can register custom resources by extending this class and
36
+ * registering with: registry.register('mcp-resource', 'resource-name', new MyResource())
37
+ */
38
+ export class BaseMCPResource {
39
+ }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAOA,MAAM,QAAQ;IACJ,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE5D,QAAQ,CAAI,QAA0B,EAAE,IAAY,EAAE,cAAiB;QACrE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,GAAG,CAAI,QAA0B,EAAE,IAAY;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAkB,CAAC;IAClE,CAAC;IAED,MAAM,CAAI,QAA0B;QAClC,OAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAoB,IAAI,IAAI,GAAG,EAAE,CAAC;IACvE,CAAC;IAED,GAAG,CAAC,QAA0B,EAAE,IAAY;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAC1D,CAAC;IAED,UAAU,CAAC,QAA0B,EAAE,IAAY;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAC7D,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAEvC,8BAA8B;AAC9B,MAAM,OAAgB,SAAS;CAO9B;AAED,MAAM,OAAgB,eAAe;CAOpC;AAED,MAAM,OAAgB,gBAAgB;CAKrC;AAED;;;;;GAKG;AACH,MAAM,OAAgB,eAAe;CAmBpC"}
package/dist/server.js ADDED
@@ -0,0 +1,207 @@
1
+ import { createApp } from './app.js';
2
+ import { getConfig } from './config/loader.js';
3
+ import { mcpManager } from './mcp/client.js';
4
+ import { initializeQueueProvider, closeQueueProvider, startWorker, stopWorker, getQueueProvider, startScheduler, stopScheduler, } from './queue/index.js';
5
+ import { initializeEmailProvider, closeEmailProvider, } from './services/email/index.js';
6
+ // Import scheduled prompt handlers to register them
7
+ import './queue/handlers/scheduled-prompt.js';
8
+ import { syncScheduledPromptsToRecurringJobs } from './services/scheduledPrompts.js';
9
+ /**
10
+ * Initialize the queue system based on configuration.
11
+ * Starts the worker and scheduler in in-process mode if configured.
12
+ */
13
+ async function initializeQueue() {
14
+ const config = getConfig();
15
+ if (!config.queue?.enabled) {
16
+ console.log('[Queue] Queue system is disabled');
17
+ return;
18
+ }
19
+ // Initialize the queue provider
20
+ await initializeQueueProvider(config.queue);
21
+ const provider = getQueueProvider();
22
+ // Start worker if in-process mode
23
+ const workerMode = config.queue.worker?.mode ?? 'in-process';
24
+ if (workerMode === 'in-process') {
25
+ const workerConfig = {
26
+ mode: workerMode,
27
+ concurrency: config.queue.worker?.concurrency ?? 5,
28
+ pollInterval: config.queue.worker?.pollInterval ?? 1000,
29
+ shutdownTimeout: config.queue.worker?.shutdownTimeout ?? 30000,
30
+ };
31
+ console.log('[Queue] Starting in-process worker...');
32
+ await startWorker({ provider, config: workerConfig });
33
+ console.log('[Queue] In-process worker started');
34
+ }
35
+ else {
36
+ console.log('[Queue] Worker mode is standalone - not starting worker');
37
+ console.log('[Queue] Run `pnpm queue-worker` to start standalone workers');
38
+ }
39
+ // Start scheduler if enabled
40
+ if (config.queue.scheduler?.enabled) {
41
+ const schedulerConfig = {
42
+ enabled: true,
43
+ pollInterval: config.queue.scheduler.pollInterval ?? 60000,
44
+ };
45
+ console.log('[Queue] Starting scheduler...');
46
+ await startScheduler({ provider, config: schedulerConfig });
47
+ console.log('[Queue] Scheduler started');
48
+ }
49
+ }
50
+ /**
51
+ * Initialize email provider based on configuration.
52
+ */
53
+ async function initializeEmail() {
54
+ const config = getConfig();
55
+ if (!config.email?.enabled) {
56
+ console.log('[Email] Email system is disabled');
57
+ return;
58
+ }
59
+ try {
60
+ await initializeEmailProvider(config.email);
61
+ }
62
+ catch (error) {
63
+ console.error('[Email] Failed to initialize:', error instanceof Error ? error.message : error);
64
+ }
65
+ }
66
+ /**
67
+ * Initialize scheduled prompts by syncing to recurring jobs.
68
+ * Only runs if scheduler is enabled.
69
+ */
70
+ async function initializeScheduledPrompts() {
71
+ const config = getConfig();
72
+ if (!config.scheduledPrompts?.enabled) {
73
+ console.log('[ScheduledPrompts] Feature is disabled');
74
+ return;
75
+ }
76
+ if (!config.queue?.scheduler?.enabled) {
77
+ console.log('[ScheduledPrompts] Scheduler is disabled, skipping sync');
78
+ return;
79
+ }
80
+ try {
81
+ const count = await syncScheduledPromptsToRecurringJobs();
82
+ console.log(`[ScheduledPrompts] Synced ${count} enabled prompts to recurring jobs`);
83
+ }
84
+ catch (error) {
85
+ console.error('[ScheduledPrompts] Failed to sync:', error instanceof Error ? error.message : error);
86
+ }
87
+ }
88
+ /**
89
+ * Initialize MCP servers based on configuration.
90
+ * Only connects to servers that don't require user credentials at startup.
91
+ */
92
+ async function initializeMCP() {
93
+ const config = getConfig();
94
+ if (!config.mcp?.servers || config.mcp.servers.length === 0) {
95
+ console.log('[MCP] No MCP servers configured');
96
+ return;
97
+ }
98
+ // Filter to only servers that can connect without user credentials
99
+ const globalServers = config.mcp.servers.filter(server => {
100
+ const authMode = server.authMode || 'none';
101
+ return authMode === 'none' || authMode === 'admin';
102
+ });
103
+ const userServers = config.mcp.servers.filter(server => {
104
+ const authMode = server.authMode || 'none';
105
+ return authMode === 'user-apikey' || authMode === 'user-oauth';
106
+ });
107
+ if (globalServers.length === 0 && userServers.length === 0) {
108
+ console.log('[MCP] No MCP servers configured');
109
+ return;
110
+ }
111
+ if (globalServers.length > 0) {
112
+ console.log(`[MCP] Initializing ${globalServers.length} global MCP server(s)...`);
113
+ }
114
+ if (userServers.length > 0) {
115
+ console.log(`[MCP] ${userServers.length} MCP server(s) require user credentials (will connect on-demand)`);
116
+ for (const server of userServers) {
117
+ if (server.enabled) {
118
+ console.log(`[MCP] - ${server.name} (${server.authMode})`);
119
+ }
120
+ }
121
+ }
122
+ for (const server of globalServers) {
123
+ if (!server.enabled) {
124
+ console.log(`[MCP] Skipping disabled server: ${server.name}`);
125
+ continue;
126
+ }
127
+ try {
128
+ await mcpManager.connect(server);
129
+ console.log(`[MCP] Connected to ${server.name}`);
130
+ }
131
+ catch (error) {
132
+ console.error(`[MCP] Failed to connect to ${server.name}:`, error instanceof Error ? error.message : error);
133
+ }
134
+ }
135
+ }
136
+ /**
137
+ * Creates and starts an HTTP server with the ChaasKit application.
138
+ */
139
+ export async function createServer(options = {}) {
140
+ const app = await createApp(options);
141
+ const port = options.port || parseInt(process.env.PORT || '3000', 10);
142
+ return new Promise((resolve, reject) => {
143
+ const server = app.listen(port, async () => {
144
+ console.log(`Server running on port ${port}`);
145
+ // Initialize MCP servers
146
+ await initializeMCP();
147
+ // Initialize email system
148
+ await initializeEmail();
149
+ // Initialize queue system
150
+ await initializeQueue();
151
+ // Sync scheduled prompts to recurring jobs
152
+ await initializeScheduledPrompts();
153
+ // Setup graceful shutdown
154
+ let isShuttingDown = false;
155
+ const shutdown = async () => {
156
+ if (isShuttingDown) {
157
+ // Already shutting down, force exit on second signal
158
+ console.log('[Server] Forced shutdown');
159
+ process.exit(1);
160
+ }
161
+ isShuttingDown = true;
162
+ console.log('[Server] Shutting down...');
163
+ try {
164
+ // Stop queue system (worker and scheduler)
165
+ await stopScheduler();
166
+ await stopWorker();
167
+ await closeQueueProvider();
168
+ // Close email provider
169
+ await closeEmailProvider();
170
+ await mcpManager.disconnectAll();
171
+ server.close(() => {
172
+ console.log('[Server] Closed');
173
+ process.exit(0);
174
+ });
175
+ }
176
+ catch (error) {
177
+ console.error('[Server] Error during shutdown:', error);
178
+ process.exit(1);
179
+ }
180
+ };
181
+ process.on('SIGINT', shutdown);
182
+ process.on('SIGTERM', shutdown);
183
+ resolve({
184
+ app,
185
+ server,
186
+ port,
187
+ close: async () => {
188
+ await stopScheduler();
189
+ await stopWorker();
190
+ await closeQueueProvider();
191
+ await closeEmailProvider();
192
+ await mcpManager.disconnectAll();
193
+ return new Promise((res) => server.close(() => res()));
194
+ },
195
+ });
196
+ });
197
+ server.on('error', reject);
198
+ });
199
+ }
200
+ /**
201
+ * Convenience function to start the server and log to console.
202
+ * For programmatic use, prefer createServer() which returns the server instance.
203
+ */
204
+ export async function startServer(options = {}) {
205
+ await createServer(options);
206
+ }
207
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}