@chrishdx/llm-dev-server 1.0.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 (184) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +164 -0
  3. package/backend/bin/llm-dev-server.js +3 -0
  4. package/backend/dist/cli.d.ts +15 -0
  5. package/backend/dist/cli.d.ts.map +1 -0
  6. package/backend/dist/cli.js +326 -0
  7. package/backend/dist/cli.js.map +1 -0
  8. package/backend/dist/config/database.d.ts +10 -0
  9. package/backend/dist/config/database.d.ts.map +1 -0
  10. package/backend/dist/config/database.js +61 -0
  11. package/backend/dist/config/database.js.map +1 -0
  12. package/backend/dist/config/environment.d.ts +20 -0
  13. package/backend/dist/config/environment.d.ts.map +1 -0
  14. package/backend/dist/config/environment.js +77 -0
  15. package/backend/dist/config/environment.js.map +1 -0
  16. package/backend/dist/controllers/AuthController.d.ts +18 -0
  17. package/backend/dist/controllers/AuthController.d.ts.map +1 -0
  18. package/backend/dist/controllers/AuthController.js +282 -0
  19. package/backend/dist/controllers/AuthController.js.map +1 -0
  20. package/backend/dist/controllers/ConversationController.d.ts +44 -0
  21. package/backend/dist/controllers/ConversationController.d.ts.map +1 -0
  22. package/backend/dist/controllers/ConversationController.js +193 -0
  23. package/backend/dist/controllers/ConversationController.js.map +1 -0
  24. package/backend/dist/controllers/JobController.d.ts +49 -0
  25. package/backend/dist/controllers/JobController.d.ts.map +1 -0
  26. package/backend/dist/controllers/JobController.js +227 -0
  27. package/backend/dist/controllers/JobController.js.map +1 -0
  28. package/backend/dist/index.d.ts +2 -0
  29. package/backend/dist/index.d.ts.map +1 -0
  30. package/backend/dist/index.js +160 -0
  31. package/backend/dist/index.js.map +1 -0
  32. package/backend/dist/middleware/auth.middleware.d.ts +25 -0
  33. package/backend/dist/middleware/auth.middleware.d.ts.map +1 -0
  34. package/backend/dist/middleware/auth.middleware.js +116 -0
  35. package/backend/dist/middleware/auth.middleware.js.map +1 -0
  36. package/backend/dist/middleware/authelia.middleware.d.ts +26 -0
  37. package/backend/dist/middleware/authelia.middleware.d.ts.map +1 -0
  38. package/backend/dist/middleware/authelia.middleware.js +165 -0
  39. package/backend/dist/middleware/authelia.middleware.js.map +1 -0
  40. package/backend/dist/middleware/error.middleware.d.ts +23 -0
  41. package/backend/dist/middleware/error.middleware.d.ts.map +1 -0
  42. package/backend/dist/middleware/error.middleware.js +59 -0
  43. package/backend/dist/middleware/error.middleware.js.map +1 -0
  44. package/backend/dist/models/AuthToken.d.ts +42 -0
  45. package/backend/dist/models/AuthToken.d.ts.map +1 -0
  46. package/backend/dist/models/AuthToken.js +97 -0
  47. package/backend/dist/models/AuthToken.js.map +1 -0
  48. package/backend/dist/models/Conversation.d.ts +36 -0
  49. package/backend/dist/models/Conversation.d.ts.map +1 -0
  50. package/backend/dist/models/Conversation.js +100 -0
  51. package/backend/dist/models/Conversation.js.map +1 -0
  52. package/backend/dist/models/FileOperation.d.ts +36 -0
  53. package/backend/dist/models/FileOperation.d.ts.map +1 -0
  54. package/backend/dist/models/FileOperation.js +117 -0
  55. package/backend/dist/models/FileOperation.js.map +1 -0
  56. package/backend/dist/models/Job.d.ts +48 -0
  57. package/backend/dist/models/Job.d.ts.map +1 -0
  58. package/backend/dist/models/Job.js +87 -0
  59. package/backend/dist/models/Job.js.map +1 -0
  60. package/backend/dist/models/Message.d.ts +38 -0
  61. package/backend/dist/models/Message.d.ts.map +1 -0
  62. package/backend/dist/models/Message.js +87 -0
  63. package/backend/dist/models/Message.js.map +1 -0
  64. package/backend/dist/models/User.d.ts +26 -0
  65. package/backend/dist/models/User.d.ts.map +1 -0
  66. package/backend/dist/models/User.js +67 -0
  67. package/backend/dist/models/User.js.map +1 -0
  68. package/backend/dist/models/index.d.ts +13 -0
  69. package/backend/dist/models/index.d.ts.map +1 -0
  70. package/backend/dist/models/index.js +24 -0
  71. package/backend/dist/models/index.js.map +1 -0
  72. package/backend/dist/routes/auth.routes.d.ts +3 -0
  73. package/backend/dist/routes/auth.routes.d.ts.map +1 -0
  74. package/backend/dist/routes/auth.routes.js +27 -0
  75. package/backend/dist/routes/auth.routes.js.map +1 -0
  76. package/backend/dist/routes/conversation.routes.d.ts +3 -0
  77. package/backend/dist/routes/conversation.routes.d.ts.map +1 -0
  78. package/backend/dist/routes/conversation.routes.js +17 -0
  79. package/backend/dist/routes/conversation.routes.js.map +1 -0
  80. package/backend/dist/routes/filesystem.routes.d.ts +3 -0
  81. package/backend/dist/routes/filesystem.routes.d.ts.map +1 -0
  82. package/backend/dist/routes/filesystem.routes.js +64 -0
  83. package/backend/dist/routes/filesystem.routes.js.map +1 -0
  84. package/backend/dist/routes/index.d.ts +3 -0
  85. package/backend/dist/routes/index.d.ts.map +1 -0
  86. package/backend/dist/routes/index.js +27 -0
  87. package/backend/dist/routes/index.js.map +1 -0
  88. package/backend/dist/routes/job.routes.d.ts +3 -0
  89. package/backend/dist/routes/job.routes.d.ts.map +1 -0
  90. package/backend/dist/routes/job.routes.js +18 -0
  91. package/backend/dist/routes/job.routes.js.map +1 -0
  92. package/backend/dist/services/auth/BaseAuthService.d.ts +49 -0
  93. package/backend/dist/services/auth/BaseAuthService.d.ts.map +1 -0
  94. package/backend/dist/services/auth/BaseAuthService.js +97 -0
  95. package/backend/dist/services/auth/BaseAuthService.js.map +1 -0
  96. package/backend/dist/services/auth/ClaudeAuthService.d.ts +69 -0
  97. package/backend/dist/services/auth/ClaudeAuthService.d.ts.map +1 -0
  98. package/backend/dist/services/auth/ClaudeAuthService.js +401 -0
  99. package/backend/dist/services/auth/ClaudeAuthService.js.map +1 -0
  100. package/backend/dist/services/auth/CodexAuthService.d.ts +37 -0
  101. package/backend/dist/services/auth/CodexAuthService.d.ts.map +1 -0
  102. package/backend/dist/services/auth/CodexAuthService.js +186 -0
  103. package/backend/dist/services/auth/CodexAuthService.js.map +1 -0
  104. package/backend/dist/services/auth/GeminiAuthService.d.ts +50 -0
  105. package/backend/dist/services/auth/GeminiAuthService.d.ts.map +1 -0
  106. package/backend/dist/services/auth/GeminiAuthService.js +284 -0
  107. package/backend/dist/services/auth/GeminiAuthService.js.map +1 -0
  108. package/backend/dist/services/auth/JwtService.d.ts +27 -0
  109. package/backend/dist/services/auth/JwtService.d.ts.map +1 -0
  110. package/backend/dist/services/auth/JwtService.js +65 -0
  111. package/backend/dist/services/auth/JwtService.js.map +1 -0
  112. package/backend/dist/services/auth/TokenRefreshService.d.ts +36 -0
  113. package/backend/dist/services/auth/TokenRefreshService.d.ts.map +1 -0
  114. package/backend/dist/services/auth/TokenRefreshService.js +178 -0
  115. package/backend/dist/services/auth/TokenRefreshService.js.map +1 -0
  116. package/backend/dist/services/conversation/ConversationService.d.ts +89 -0
  117. package/backend/dist/services/conversation/ConversationService.d.ts.map +1 -0
  118. package/backend/dist/services/conversation/ConversationService.js +255 -0
  119. package/backend/dist/services/conversation/ConversationService.js.map +1 -0
  120. package/backend/dist/services/job/JobService.d.ts +83 -0
  121. package/backend/dist/services/job/JobService.d.ts.map +1 -0
  122. package/backend/dist/services/job/JobService.js +213 -0
  123. package/backend/dist/services/job/JobService.js.map +1 -0
  124. package/backend/dist/services/job/WorkingDirectoryService.d.ts +73 -0
  125. package/backend/dist/services/job/WorkingDirectoryService.d.ts.map +1 -0
  126. package/backend/dist/services/job/WorkingDirectoryService.js +289 -0
  127. package/backend/dist/services/job/WorkingDirectoryService.js.map +1 -0
  128. package/backend/dist/services/llm/ClaudeProvider.d.ts +16 -0
  129. package/backend/dist/services/llm/ClaudeProvider.d.ts.map +1 -0
  130. package/backend/dist/services/llm/ClaudeProvider.js +229 -0
  131. package/backend/dist/services/llm/ClaudeProvider.js.map +1 -0
  132. package/backend/dist/services/llm/CodexProvider.d.ts +15 -0
  133. package/backend/dist/services/llm/CodexProvider.d.ts.map +1 -0
  134. package/backend/dist/services/llm/CodexProvider.js +301 -0
  135. package/backend/dist/services/llm/CodexProvider.js.map +1 -0
  136. package/backend/dist/services/llm/GeminiProvider.d.ts +17 -0
  137. package/backend/dist/services/llm/GeminiProvider.d.ts.map +1 -0
  138. package/backend/dist/services/llm/GeminiProvider.js +190 -0
  139. package/backend/dist/services/llm/GeminiProvider.js.map +1 -0
  140. package/backend/dist/services/llm/LLMProviderBase.d.ts +76 -0
  141. package/backend/dist/services/llm/LLMProviderBase.d.ts.map +1 -0
  142. package/backend/dist/services/llm/LLMProviderBase.js +34 -0
  143. package/backend/dist/services/llm/LLMProviderBase.js.map +1 -0
  144. package/backend/dist/services/llm/ProviderFactory.d.ts +17 -0
  145. package/backend/dist/services/llm/ProviderFactory.d.ts.map +1 -0
  146. package/backend/dist/services/llm/ProviderFactory.js +58 -0
  147. package/backend/dist/services/llm/ProviderFactory.js.map +1 -0
  148. package/backend/dist/utils/crypto.d.ts +33 -0
  149. package/backend/dist/utils/crypto.d.ts.map +1 -0
  150. package/backend/dist/utils/crypto.js +165 -0
  151. package/backend/dist/utils/crypto.js.map +1 -0
  152. package/backend/dist/utils/logger.d.ts +4 -0
  153. package/backend/dist/utils/logger.d.ts.map +1 -0
  154. package/backend/dist/utils/logger.js +44 -0
  155. package/backend/dist/utils/logger.js.map +1 -0
  156. package/backend/dist/utils/validators.d.ts +22 -0
  157. package/backend/dist/utils/validators.d.ts.map +1 -0
  158. package/backend/dist/utils/validators.js +127 -0
  159. package/backend/dist/utils/validators.js.map +1 -0
  160. package/backend/package.json +45 -0
  161. package/backend/public/assets/index-C207-KqP.js +188 -0
  162. package/backend/public/index.html +12 -0
  163. package/package.json +96 -0
  164. package/shared/dist/index.d.ts +5 -0
  165. package/shared/dist/index.d.ts.map +1 -0
  166. package/shared/dist/index.js +25 -0
  167. package/shared/dist/index.js.map +1 -0
  168. package/shared/dist/types/api.d.ts +27 -0
  169. package/shared/dist/types/api.d.ts.map +1 -0
  170. package/shared/dist/types/api.js +3 -0
  171. package/shared/dist/types/api.js.map +1 -0
  172. package/shared/dist/types/auth.d.ts +62 -0
  173. package/shared/dist/types/auth.d.ts.map +1 -0
  174. package/shared/dist/types/auth.js +3 -0
  175. package/shared/dist/types/auth.js.map +1 -0
  176. package/shared/dist/types/conversation.d.ts +98 -0
  177. package/shared/dist/types/conversation.d.ts.map +1 -0
  178. package/shared/dist/types/conversation.js +3 -0
  179. package/shared/dist/types/conversation.js.map +1 -0
  180. package/shared/dist/types/job.d.ts +93 -0
  181. package/shared/dist/types/job.d.ts.map +1 -0
  182. package/shared/dist/types/job.js +3 -0
  183. package/shared/dist/types/job.js.map +1 -0
  184. package/shared/package.json +15 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = require("express");
7
+ const WorkingDirectoryService_1 = require("../services/job/WorkingDirectoryService");
8
+ const auth_middleware_1 = require("../middleware/auth.middleware");
9
+ const logger_1 = __importDefault(require("../utils/logger"));
10
+ const router = (0, express_1.Router)();
11
+ router.use(auth_middleware_1.authMiddleware);
12
+ /**
13
+ * Browse server filesystem
14
+ * GET /api/filesystem/browse?path=/some/path
15
+ */
16
+ router.get("/browse", async (req, res) => {
17
+ try {
18
+ const targetPath = req.query.path;
19
+ const result = await WorkingDirectoryService_1.WorkingDirectoryService.browse(targetPath);
20
+ res.json(result);
21
+ }
22
+ catch (error) {
23
+ const message = error instanceof Error ? error.message : String(error);
24
+ logger_1.default.error("Error browsing filesystem:", message);
25
+ res.status(400).json({ error: message });
26
+ }
27
+ });
28
+ /**
29
+ * Get available root directories
30
+ * GET /api/filesystem/roots
31
+ */
32
+ router.get("/roots", async (req, res) => {
33
+ try {
34
+ const roots = WorkingDirectoryService_1.WorkingDirectoryService.getRoots();
35
+ res.json({ roots });
36
+ }
37
+ catch (error) {
38
+ const message = error instanceof Error ? error.message : String(error);
39
+ logger_1.default.error("Error getting roots:", message);
40
+ res.status(500).json({ error: message });
41
+ }
42
+ });
43
+ /**
44
+ * Create a new directory
45
+ * POST /api/filesystem/mkdir
46
+ */
47
+ router.post("/mkdir", async (req, res) => {
48
+ try {
49
+ const { parentPath, name } = req.body;
50
+ if (!parentPath || !name) {
51
+ res.status(400).json({ error: "parentPath and name are required" });
52
+ return;
53
+ }
54
+ const newPath = await WorkingDirectoryService_1.WorkingDirectoryService.createDirectory(parentPath, name);
55
+ res.status(201).json({ path: newPath });
56
+ }
57
+ catch (error) {
58
+ const message = error instanceof Error ? error.message : String(error);
59
+ logger_1.default.error("Error creating directory:", message);
60
+ res.status(400).json({ error: message });
61
+ }
62
+ });
63
+ exports.default = router;
64
+ //# sourceMappingURL=filesystem.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.routes.js","sourceRoot":"","sources":["../../src/routes/filesystem.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAkBxB,eAAe,MAAM,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = require("express");
7
+ const auth_routes_1 = __importDefault(require("./auth.routes"));
8
+ const job_routes_1 = __importDefault(require("./job.routes"));
9
+ const conversation_routes_1 = __importDefault(require("./conversation.routes"));
10
+ const filesystem_routes_1 = __importDefault(require("./filesystem.routes"));
11
+ const router = (0, express_1.Router)();
12
+ router.use("/auth", auth_routes_1.default);
13
+ router.use("/jobs", job_routes_1.default);
14
+ router.use("/conversations", conversation_routes_1.default);
15
+ router.use("/filesystem", filesystem_routes_1.default);
16
+ router.get("/health", (req, res) => {
17
+ res.json({
18
+ data: {
19
+ status: "ok",
20
+ timestamp: new Date().toISOString(),
21
+ version: "1.0.0",
22
+ uptime: process.uptime(),
23
+ },
24
+ });
25
+ });
26
+ exports.default = router;
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":";;;;;AAAA,qCAAiC;AACjC,gEAAuC;AACvC,8DAAqC;AACrC,gFAAuD;AACvD,4EAAmD;AAEnD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAU,CAAC,CAAC;AAChC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAS,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,6BAAkB,CAAC,CAAC;AACjD,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,2BAAgB,CAAC,CAAC;AAE5C,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,GAAG,CAAC,IAAI,CAAC;QACP,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;SACzB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=job.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.routes.d.ts","sourceRoot":"","sources":["../../src/routes/job.routes.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAaxB,eAAe,MAAM,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const express_1 = require("express");
4
+ const JobController_1 = require("../controllers/JobController");
5
+ const auth_middleware_1 = require("../middleware/auth.middleware");
6
+ const router = (0, express_1.Router)();
7
+ router.use(auth_middleware_1.authMiddleware);
8
+ router.post("/", JobController_1.JobController.create);
9
+ router.get("/", JobController_1.JobController.list);
10
+ router.get("/:jobId", JobController_1.JobController.get);
11
+ router.patch("/:jobId", JobController_1.JobController.update);
12
+ router.delete("/:jobId", JobController_1.JobController.delete);
13
+ router.get("/:jobId/status", JobController_1.JobController.getStatus);
14
+ router.post("/:jobId/cancel", JobController_1.JobController.cancel);
15
+ router.get("/:jobId/files", JobController_1.JobController.listFiles);
16
+ router.get("/:jobId/conversations", JobController_1.JobController.getConversations);
17
+ exports.default = router;
18
+ //# sourceMappingURL=job.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.routes.js","sourceRoot":"","sources":["../../src/routes/job.routes.ts"],"names":[],"mappings":";;AAAA,qCAAiC;AACjC,gEAA6D;AAC7D,mEAA+D;AAE/D,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AACxB,MAAM,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC;AAE3B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,6BAAa,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,6BAAa,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,6BAAa,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,6BAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,6BAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,6BAAa,CAAC,SAAS,CAAC,CAAC;AACtD,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,6BAAa,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,6BAAa,CAAC,SAAS,CAAC,CAAC;AACrD,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,6BAAa,CAAC,gBAAgB,CAAC,CAAC;AAEpE,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { AuthToken, LLMProvider } from '../../models';
2
+ export interface OAuthLoginSession {
3
+ sessionId: string;
4
+ state: string;
5
+ codeVerifier: string;
6
+ provider: LLMProvider;
7
+ redirectUri?: string;
8
+ loginMode?: string;
9
+ localPort?: number;
10
+ expiresAt: Date;
11
+ }
12
+ export declare abstract class BaseAuthService {
13
+ protected provider: LLMProvider;
14
+ constructor(provider: LLMProvider);
15
+ /**
16
+ * Store OAuth login session in memory
17
+ */
18
+ protected storeLoginSession(session: OAuthLoginSession): Promise<void>;
19
+ /**
20
+ * Get OAuth login session
21
+ */
22
+ protected getLoginSession(sessionId: string): Promise<OAuthLoginSession | null>;
23
+ /**
24
+ * Delete OAuth login session
25
+ */
26
+ protected deleteLoginSession(sessionId: string): Promise<void>;
27
+ /**
28
+ * Encrypt sensitive data
29
+ */
30
+ protected encrypt(data: string): string;
31
+ /**
32
+ * Decrypt sensitive data
33
+ */
34
+ protected decrypt(data: string): string;
35
+ /**
36
+ * Get active auth token for provider
37
+ */
38
+ getActiveToken(): Promise<AuthToken | null>;
39
+ /**
40
+ * Deactivate all tokens for provider
41
+ */
42
+ deactivateAllTokens(): Promise<void>;
43
+ /**
44
+ * Delete token by ID
45
+ */
46
+ deleteToken(tokenId: string): Promise<void>;
47
+ }
48
+ export default BaseAuthService;
49
+ //# sourceMappingURL=BaseAuthService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAuthService.d.ts","sourceRoot":"","sources":["../../../src/services/auth/BaseAuthService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAKD,8BAAsB,eAAe;IACnC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC;gBAEpB,QAAQ,EAAE,WAAW;IAIjC;;OAEG;cACa,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5E;;OAEG;cACa,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAgBrF;;OAEG;cACa,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IASjD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUlD;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseAuthService = void 0;
7
+ const models_1 = require("../../models");
8
+ const crypto_1 = require("../../utils/crypto");
9
+ const logger_1 = __importDefault(require("../../utils/logger"));
10
+ // In-memory storage for OAuth login sessions (15 minute TTL)
11
+ const loginSessions = new Map();
12
+ class BaseAuthService {
13
+ constructor(provider) {
14
+ this.provider = provider;
15
+ }
16
+ /**
17
+ * Store OAuth login session in memory
18
+ */
19
+ async storeLoginSession(session) {
20
+ loginSessions.set(session.sessionId, session);
21
+ // Auto-cleanup after expiration
22
+ setTimeout(() => {
23
+ loginSessions.delete(session.sessionId);
24
+ }, 15 * 60 * 1000);
25
+ logger_1.default.debug(`Stored login session: ${session.sessionId}`);
26
+ }
27
+ /**
28
+ * Get OAuth login session
29
+ */
30
+ async getLoginSession(sessionId) {
31
+ const session = loginSessions.get(sessionId);
32
+ if (!session) {
33
+ return null;
34
+ }
35
+ // Check expiration
36
+ if (new Date() > session.expiresAt) {
37
+ loginSessions.delete(sessionId);
38
+ return null;
39
+ }
40
+ return session;
41
+ }
42
+ /**
43
+ * Delete OAuth login session
44
+ */
45
+ async deleteLoginSession(sessionId) {
46
+ loginSessions.delete(sessionId);
47
+ }
48
+ /**
49
+ * Encrypt sensitive data
50
+ */
51
+ encrypt(data) {
52
+ return (0, crypto_1.encrypt)(data);
53
+ }
54
+ /**
55
+ * Decrypt sensitive data
56
+ */
57
+ decrypt(data) {
58
+ return (0, crypto_1.decrypt)(data);
59
+ }
60
+ /**
61
+ * Get active auth token for provider
62
+ */
63
+ async getActiveToken() {
64
+ return await models_1.AuthToken.findOne({
65
+ where: {
66
+ provider: this.provider,
67
+ isActive: true,
68
+ },
69
+ });
70
+ }
71
+ /**
72
+ * Deactivate all tokens for provider
73
+ */
74
+ async deactivateAllTokens() {
75
+ await models_1.AuthToken.update({ isActive: false }, {
76
+ where: {
77
+ provider: this.provider,
78
+ isActive: true,
79
+ },
80
+ });
81
+ logger_1.default.info(`Deactivated all ${this.provider} tokens`);
82
+ }
83
+ /**
84
+ * Delete token by ID
85
+ */
86
+ async deleteToken(tokenId) {
87
+ const token = await models_1.AuthToken.findByPk(tokenId);
88
+ if (!token || token.provider !== this.provider) {
89
+ throw new Error('Token not found');
90
+ }
91
+ await token.destroy();
92
+ logger_1.default.info(`Deleted ${this.provider} token: ${tokenId}`);
93
+ }
94
+ }
95
+ exports.BaseAuthService = BaseAuthService;
96
+ exports.default = BaseAuthService;
97
+ //# sourceMappingURL=BaseAuthService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseAuthService.js","sourceRoot":"","sources":["../../../src/services/auth/BaseAuthService.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAsD;AACtD,+CAAsD;AACtD,gEAAwC;AAaxC,6DAA6D;AAC7D,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE3D,MAAsB,eAAe;IAGnC,YAAY,QAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,iBAAiB,CAAC,OAA0B;QAC1D,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9C,gCAAgC;QAChC,UAAU,CAAC,GAAG,EAAE;YACd,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEnB,gBAAM,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,eAAe,CAAC,SAAiB;QAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YACnC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAClD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,IAAY;QAC5B,OAAO,IAAA,gBAAO,EAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,IAAY;QAC5B,OAAO,IAAA,gBAAO,EAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,kBAAS,CAAC,OAAO,CAAC;YAC7B,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI;aACf;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,kBAAS,CAAC,MAAM,CACpB,EAAE,QAAQ,EAAE,KAAK,EAAE,EACnB;YACE,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI;aACf;SACF,CACF,CAAC;QACF,gBAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,KAAK,GAAG,MAAM,kBAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,gBAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,WAAW,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAtGD,0CAsGC;AAED,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { BaseAuthService } from './BaseAuthService';
2
+ import { AuthToken } from '../../models';
3
+ export declare class ClaudeAuthService extends BaseAuthService {
4
+ private claudeConfigDir;
5
+ constructor();
6
+ /**
7
+ * Parse various callback input formats (URL, query params, or raw code)
8
+ * Based on n8n plugin implementation
9
+ */
10
+ static parseCallbackInput(input: string): {
11
+ code?: string;
12
+ state?: string;
13
+ };
14
+ /**
15
+ * Start Claude OAuth login flow
16
+ */
17
+ startLogin(options: {
18
+ loginWithClaudeAi?: boolean;
19
+ }): Promise<{
20
+ loginUrl: string;
21
+ sessionId: string;
22
+ state: string;
23
+ }>;
24
+ /**
25
+ * Complete Claude OAuth login flow
26
+ */
27
+ completeLogin(params: {
28
+ sessionId: string;
29
+ code: string;
30
+ state: string;
31
+ }): Promise<AuthToken>;
32
+ /**
33
+ * Load credentials from file on server startup
34
+ */
35
+ loadFromFile(): Promise<AuthToken | null>;
36
+ /**
37
+ * Refresh Claude access token
38
+ */
39
+ refreshToken(token: AuthToken): Promise<{
40
+ accessToken: string;
41
+ refreshToken?: string;
42
+ expiresAt: Date;
43
+ }>;
44
+ /**
45
+ * Get current authentication status
46
+ */
47
+ getStatus(): Promise<{
48
+ loggedIn: boolean;
49
+ tokenId?: string;
50
+ email?: string;
51
+ expiresAt?: Date;
52
+ hasInferenceScope?: boolean;
53
+ }>;
54
+ /**
55
+ * Start Claude OAuth login flow for manual code entry
56
+ * Uses official Anthropic static callback page for displaying authorization code
57
+ */
58
+ startLoginWithRedirect(_redirectUri?: string, loginWithClaudeAi?: boolean): Promise<{
59
+ loginUrl: string;
60
+ state: string;
61
+ }>;
62
+ /**
63
+ * Complete Claude OAuth login with manual code entry
64
+ * Accepts full callback URL or just the authorization code
65
+ */
66
+ completeLoginFromCallback(code: string, state: string): Promise<AuthToken>;
67
+ }
68
+ export default ClaudeAuthService;
69
+ //# sourceMappingURL=ClaudeAuthService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeAuthService.d.ts","sourceRoot":"","sources":["../../../src/services/auth/ClaudeAuthService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAqCzC,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,eAAe,CAAS;;IAOhC;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA+D3E;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE;QACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAuCF;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,SAAS,CAAC;IAmFtB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAqC/C;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;QAC5C,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,IAAI,CAAC;KACjB,CAAC;IAiCF;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QACzB,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;IAgBF;;;OAGG;IACG,sBAAsB,CAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,iBAAiB,UAAO,GACvB,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAsCF;;;OAGG;IACG,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;CAoGjF;AAED,eAAe,iBAAiB,CAAC"}