@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,53 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ /**
4
+ * Simple glob implementation for matching files.
5
+ * Supports basic patterns like *.ts, *.js, *.{ts,js}
6
+ */
7
+ export async function glob(pattern) {
8
+ const dir = path.dirname(pattern);
9
+ const filePattern = path.basename(pattern);
10
+ // Parse the pattern
11
+ let regex;
12
+ if (filePattern.includes('{')) {
13
+ // Handle {ts,js} style patterns
14
+ const match = filePattern.match(/^(.*)\.?\{([^}]+)\}$/);
15
+ if (match) {
16
+ const [, prefix, extensions] = match;
17
+ const extList = extensions.split(',').map(e => e.trim());
18
+ const escapedPrefix = prefix ? escapeRegex(prefix) : '';
19
+ regex = new RegExp(`^${escapedPrefix}.*\\.(${extList.join('|')})$`);
20
+ }
21
+ else {
22
+ regex = patternToRegex(filePattern);
23
+ }
24
+ }
25
+ else {
26
+ regex = patternToRegex(filePattern);
27
+ }
28
+ try {
29
+ const entries = await fs.readdir(dir, { withFileTypes: true });
30
+ const matches = [];
31
+ for (const entry of entries) {
32
+ if (entry.isFile() && regex.test(entry.name)) {
33
+ matches.push(path.join(dir, entry.name));
34
+ }
35
+ }
36
+ return matches;
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ }
42
+ function escapeRegex(str) {
43
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
44
+ }
45
+ function patternToRegex(pattern) {
46
+ // Convert glob pattern to regex
47
+ const regexStr = pattern
48
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape special chars except * and ?
49
+ .replace(/\*/g, '.*')
50
+ .replace(/\?/g, '.');
51
+ return new RegExp(`^${regexStr}$`);
52
+ }
53
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/extensions/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAe;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE3C,oBAAoB;IACpB,IAAI,KAAa,CAAC;IAClB,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,gCAAgC;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,aAAa,SAAS,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,gCAAgC;IAChC,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,sCAAsC;SAC3E,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,IAAI,MAAM,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,72 @@
1
+ import path from 'path';
2
+ import fs from 'fs/promises';
3
+ import { pathToFileURL } from 'url';
4
+ import { glob } from './glob.js';
5
+ /**
6
+ * Check if a directory exists
7
+ */
8
+ async function directoryExists(dirPath) {
9
+ try {
10
+ const stat = await fs.stat(dirPath);
11
+ return stat.isDirectory();
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ /**
18
+ * Simple glob implementation for finding extension files
19
+ */
20
+ async function findExtensionFiles(pattern) {
21
+ try {
22
+ return await glob(pattern);
23
+ }
24
+ catch {
25
+ return [];
26
+ }
27
+ }
28
+ /**
29
+ * Load extensions from the user's project directory.
30
+ *
31
+ * Extensions are loaded from:
32
+ * - extensions/agents/*.{ts,js} - Custom AI agents
33
+ * - extensions/payment-plans/*.{ts,js} - Custom pricing plans
34
+ * - extensions/auth-providers/*.{ts,js} - Custom auth providers
35
+ *
36
+ * Extensions should register themselves with the registry when imported.
37
+ *
38
+ * @param basePath - Base directory to look for extensions. Defaults to process.cwd()
39
+ */
40
+ export async function loadExtensions(basePath = process.cwd()) {
41
+ const extensionDirs = [
42
+ 'extensions/agents',
43
+ 'extensions/payment-plans',
44
+ 'extensions/auth-providers',
45
+ 'extensions/mcp-resources',
46
+ ];
47
+ let loadedCount = 0;
48
+ for (const dir of extensionDirs) {
49
+ const fullPath = path.join(basePath, dir);
50
+ if (!await directoryExists(fullPath)) {
51
+ continue;
52
+ }
53
+ // Find all .ts and .js files (except index files)
54
+ const files = await findExtensionFiles(path.join(fullPath, '*.{ts,js}'));
55
+ const filteredFiles = files.filter(f => !path.basename(f).startsWith('index.'));
56
+ for (const file of filteredFiles) {
57
+ try {
58
+ // Import the extension - it should self-register with the registry
59
+ await import(pathToFileURL(file).href);
60
+ loadedCount++;
61
+ console.log(`[Extensions] Loaded: ${path.relative(basePath, file)}`);
62
+ }
63
+ catch (error) {
64
+ console.error(`[Extensions] Failed to load ${file}:`, error instanceof Error ? error.message : error);
65
+ }
66
+ }
67
+ }
68
+ if (loadedCount > 0) {
69
+ console.log(`[Extensions] Loaded ${loadedCount} extension(s)`);
70
+ }
71
+ }
72
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/extensions/loader.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IACnE,MAAM,aAAa,GAAG;QACpB,mBAAmB;QACnB,0BAA0B;QAC1B,2BAA2B;QAC3B,0BAA0B;KAC3B,CAAC;IAEF,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QAED,kDAAkD;QAClD,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEhF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,mEAAmE;gBACnE,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvC,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,IAAI,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxG,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,eAAe,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ // Main library exports for @chaaskit/server
2
+ // This file exports factory functions and utilities for programmatic use.
3
+ // For CLI usage, use the bin/cli.ts entry point.
4
+ // App and Server factories
5
+ export { createApp } from './app.js';
6
+ export { createServer, startServer } from './server.js';
7
+ // Config management
8
+ export { loadConfigAsync, loadConfig, getConfig, setConfig, resetConfig, } from './config/loader.js';
9
+ // Registry and base classes for extensions
10
+ export { registry, BaseAgent, BasePricingPlan, BaseAuthProvider, } from './registry/index.js';
11
+ // Extension loader
12
+ export { loadExtensions } from './extensions/loader.js';
13
+ // Services
14
+ export { createAgentService } from './services/agent.js';
15
+ // Queue system
16
+ export {
17
+ // Provider
18
+ createQueueProvider, initializeQueueProvider, closeQueueProvider, getQueueProvider, resetQueueProvider, getDefaultProviderConfig,
19
+ // Worker
20
+ Worker, startWorker, stopWorker, getWorker, resetWorker,
21
+ // Scheduler
22
+ Scheduler, startScheduler, stopScheduler, getScheduler, resetScheduler,
23
+ // Handlers
24
+ registerJobHandler, getJobHandler, hasJobHandler, getRegisteredJobTypes, unregisterJobHandler, clearJobHandlers, executeJob, } from './queue/index.js';
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,0EAA0E;AAC1E,iDAAiD;AAEjD,2BAA2B;AAC3B,OAAO,EAAE,SAAS,EAAyB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAA2C,MAAM,aAAa,CAAC;AAEjG,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,2CAA2C;AAC3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,WAAW;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,eAAe;AACf,OAAO;AACL,WAAW;AACX,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB;AACxB,SAAS;AACT,MAAM,EACN,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW;AACX,YAAY;AACZ,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc;AACd,WAAW;AACX,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,GAaX,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Data loaders for React Router v7 routes.
3
+ *
4
+ * These functions load data on the server for SSR pages.
5
+ * Import them in your React Router route loaders.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * // app/routes/shared.$shareId.tsx
10
+ * import { loadSharedThread } from '@chaaskit/server/loaders';
11
+ *
12
+ * export async function loader({ params }: Route.LoaderArgs) {
13
+ * const data = await loadSharedThread(params.shareId!);
14
+ * return data;
15
+ * }
16
+ * ```
17
+ */
18
+ import { db } from '@chaaskit/db';
19
+ // ============================================
20
+ // Shared Thread Loader
21
+ // ============================================
22
+ /**
23
+ * Loads a shared thread by its share ID.
24
+ * Returns the thread data including all messages.
25
+ *
26
+ * @throws Error with status 404 if thread not found
27
+ * @throws Error with status 410 if share link has expired
28
+ */
29
+ export async function loadSharedThread(shareId) {
30
+ const shared = await db.sharedThread.findUnique({
31
+ where: { shareId },
32
+ include: {
33
+ thread: {
34
+ include: {
35
+ messages: {
36
+ orderBy: { createdAt: 'asc' },
37
+ select: {
38
+ id: true,
39
+ role: true,
40
+ content: true,
41
+ createdAt: true,
42
+ threadId: true,
43
+ },
44
+ },
45
+ },
46
+ },
47
+ },
48
+ });
49
+ if (!shared) {
50
+ const error = new Error('Shared thread not found');
51
+ error.status = 404;
52
+ throw error;
53
+ }
54
+ // Check expiration
55
+ if (shared.expiresAt && shared.expiresAt < new Date()) {
56
+ const error = new Error('Share link has expired');
57
+ error.status = 410;
58
+ throw error;
59
+ }
60
+ return {
61
+ thread: {
62
+ id: shared.thread.id,
63
+ title: shared.thread.title,
64
+ messages: shared.thread.messages.map((m) => ({
65
+ id: m.id,
66
+ role: m.role,
67
+ content: m.content,
68
+ createdAt: m.createdAt,
69
+ threadId: m.threadId,
70
+ })),
71
+ createdAt: shared.thread.createdAt,
72
+ },
73
+ };
74
+ }
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loaders/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AA2BlC,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IACpD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;QAC9C,KAAK,EAAE,EAAE,OAAO,EAAE;QAClB,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,OAAO,EAAE;oBACP,QAAQ,EAAE;wBACR,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;wBAC7B,MAAM,EAAE;4BACN,EAAE,EAAE,IAAI;4BACR,IAAI,EAAE,IAAI;4BACV,OAAO,EAAE,IAAI;4BACb,SAAS,EAAE,IAAI;4BACf,QAAQ,EAAE,IAAI;yBACf;qBACF;iBACF;aACF;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAgB,CAAC;QAClE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAgB,CAAC;QACjE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;YACpB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;YAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3C,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAuC;gBAC/C,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC,CAAC;YACH,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;SACnC;KACF,CAAC;AACJ,CAAC"}