agentstudio 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 (115) hide show
  1. package/.env +15 -0
  2. package/README.md +85 -0
  3. package/dist/bin/agentstudio.d.ts +3 -0
  4. package/dist/bin/agentstudio.d.ts.map +1 -0
  5. package/dist/bin/agentstudio.js +141 -0
  6. package/dist/bin/agentstudio.js.map +1 -0
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +87 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/middleware/auth.d.ts +7 -0
  12. package/dist/middleware/auth.d.ts.map +1 -0
  13. package/dist/middleware/auth.js +21 -0
  14. package/dist/middleware/auth.js.map +1 -0
  15. package/dist/routes/agents.d.ts +4 -0
  16. package/dist/routes/agents.d.ts.map +1 -0
  17. package/dist/routes/agents.js +804 -0
  18. package/dist/routes/agents.js.map +1 -0
  19. package/dist/routes/auth.d.ts +4 -0
  20. package/dist/routes/auth.d.ts.map +1 -0
  21. package/dist/routes/auth.js +60 -0
  22. package/dist/routes/auth.js.map +1 -0
  23. package/dist/routes/files.d.ts +4 -0
  24. package/dist/routes/files.d.ts.map +1 -0
  25. package/dist/routes/files.js +301 -0
  26. package/dist/routes/files.js.map +1 -0
  27. package/dist/routes/mcp.d.ts +4 -0
  28. package/dist/routes/mcp.d.ts.map +1 -0
  29. package/dist/routes/mcp.js +652 -0
  30. package/dist/routes/mcp.js.map +1 -0
  31. package/dist/routes/media.d.ts +5 -0
  32. package/dist/routes/media.d.ts.map +1 -0
  33. package/dist/routes/media.js +117 -0
  34. package/dist/routes/media.js.map +1 -0
  35. package/dist/routes/slides.d.ts +4 -0
  36. package/dist/routes/slides.d.ts.map +1 -0
  37. package/dist/routes/slides.js +146 -0
  38. package/dist/routes/slides.js.map +1 -0
  39. package/dist/services/claudeSession.d.ts +83 -0
  40. package/dist/services/claudeSession.d.ts.map +1 -0
  41. package/dist/services/claudeSession.js +255 -0
  42. package/dist/services/claudeSession.js.map +1 -0
  43. package/dist/services/messageQueue.d.ts +31 -0
  44. package/dist/services/messageQueue.d.ts.map +1 -0
  45. package/dist/services/messageQueue.js +67 -0
  46. package/dist/services/messageQueue.js.map +1 -0
  47. package/dist/services/sessionManager.d.ts +132 -0
  48. package/dist/services/sessionManager.d.ts.map +1 -0
  49. package/dist/services/sessionManager.js +439 -0
  50. package/dist/services/sessionManager.js.map +1 -0
  51. package/dist/types/claude-history.d.ts +48 -0
  52. package/dist/types/claude-history.d.ts.map +1 -0
  53. package/dist/types/claude-history.js +2 -0
  54. package/dist/types/claude-history.js.map +1 -0
  55. package/dist/types/claude-versions.d.ts +31 -0
  56. package/dist/types/claude-versions.d.ts.map +1 -0
  57. package/dist/types/claude-versions.js +2 -0
  58. package/dist/types/claude-versions.js.map +1 -0
  59. package/dist/types/commands.d.ts +32 -0
  60. package/dist/types/commands.d.ts.map +1 -0
  61. package/dist/types/commands.js +2 -0
  62. package/dist/types/commands.js.map +1 -0
  63. package/dist/types/index.d.ts +81 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +150 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/dist/types/subagents.d.ts +88 -0
  68. package/dist/types/subagents.d.ts.map +1 -0
  69. package/dist/types/subagents.js +2 -0
  70. package/dist/types/subagents.js.map +1 -0
  71. package/dist/utils/agentStorage.d.ts +19 -0
  72. package/dist/utils/agentStorage.d.ts.map +1 -0
  73. package/dist/utils/agentStorage.js +110 -0
  74. package/dist/utils/agentStorage.js.map +1 -0
  75. package/dist/utils/claudeVersionStorage.d.ts +33 -0
  76. package/dist/utils/claudeVersionStorage.d.ts.map +1 -0
  77. package/dist/utils/claudeVersionStorage.js +168 -0
  78. package/dist/utils/claudeVersionStorage.js.map +1 -0
  79. package/dist/utils/jwt.d.ts +15 -0
  80. package/dist/utils/jwt.d.ts.map +1 -0
  81. package/dist/utils/jwt.js +28 -0
  82. package/dist/utils/jwt.js.map +1 -0
  83. package/dist/utils/projectMetadataStorage.d.ts +21 -0
  84. package/dist/utils/projectMetadataStorage.d.ts.map +1 -0
  85. package/dist/utils/projectMetadataStorage.js +68 -0
  86. package/dist/utils/projectMetadataStorage.js.map +1 -0
  87. package/frontend/dist/index.html +86 -0
  88. package/package.json +66 -0
  89. package/src/bin/agentstudio.ts +161 -0
  90. package/src/index.ts +100 -0
  91. package/src/middleware/auth.ts +26 -0
  92. package/src/routes/agents.ts +885 -0
  93. package/src/routes/auth.ts +73 -0
  94. package/src/routes/commands.ts.bak +441 -0
  95. package/src/routes/files.ts +352 -0
  96. package/src/routes/mcp.ts +751 -0
  97. package/src/routes/media.ts +140 -0
  98. package/src/routes/projects.ts.bak +601 -0
  99. package/src/routes/sessions.ts.bak +809 -0
  100. package/src/routes/settings.ts.bak +718 -0
  101. package/src/routes/slides.ts +170 -0
  102. package/src/routes/subagents.ts.bak +364 -0
  103. package/src/services/claudeSession.ts +293 -0
  104. package/src/services/messageQueue.ts +71 -0
  105. package/src/services/sessionManager.ts +532 -0
  106. package/src/types/claude-history.ts +50 -0
  107. package/src/types/claude-versions.ts +33 -0
  108. package/src/types/commands.ts +35 -0
  109. package/src/types/index.ts +248 -0
  110. package/src/types/subagents.ts +106 -0
  111. package/src/utils/agentStorage.ts +126 -0
  112. package/src/utils/claudeVersionStorage.ts +199 -0
  113. package/src/utils/jwt.ts +36 -0
  114. package/src/utils/projectMetadataStorage.ts +86 -0
  115. package/tsconfig.json +26 -0
package/src/index.ts ADDED
@@ -0,0 +1,100 @@
1
+ import express from 'express';
2
+ import cors from 'cors';
3
+ import helmet from 'helmet';
4
+ import dotenv from 'dotenv';
5
+ import path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+
8
+ // Import routes
9
+ import agentsRouter from './routes/agents.js';
10
+ import authRouter from './routes/auth.js';
11
+ import filesRouter from './routes/files.js';
12
+ import mcpRouter from './routes/mcp.js';
13
+ import mediaRouter from './routes/media.js';
14
+ import slidesRouter from './routes/slides.js';
15
+
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const __dirname = path.dirname(__filename);
18
+
19
+ // Load environment variables
20
+ const envPath = process.env.ENV_PATH || '.env';
21
+ dotenv.config({ path: envPath });
22
+
23
+ const app = express();
24
+ const PORT = process.env.PORT || 4936;
25
+ const HOST = process.env.HOST || 'localhost';
26
+
27
+ // Security middleware
28
+ app.use(helmet({
29
+ crossOriginEmbedderPolicy: false,
30
+ contentSecurityPolicy: {
31
+ directives: {
32
+ defaultSrc: ["'self'"],
33
+ scriptSrc: ["'self'", "'unsafe-inline'"],
34
+ styleSrc: ["'self'", "'unsafe-inline'"],
35
+ imgSrc: ["'self'", "data:", "blob:"],
36
+ connectSrc: ["'self'", "ws:", "wss:"],
37
+ },
38
+ },
39
+ }));
40
+
41
+ // CORS configuration
42
+ const corsOrigins = process.env.CORS_ORIGINS ?
43
+ process.env.CORS_ORIGINS.split(',').map(origin => origin.trim()) :
44
+ [
45
+ 'http://localhost:3000',
46
+ 'http://127.0.0.1:3000',
47
+ 'https://*.vercel.app'
48
+ ];
49
+
50
+ app.use(cors({
51
+ origin: corsOrigins,
52
+ credentials: true
53
+ }));
54
+
55
+ // Body parsing middleware
56
+ app.use(express.json({ limit: '50mb' }));
57
+ app.use(express.urlencoded({ extended: true, limit: '50mb' }));
58
+
59
+ // Serve static files
60
+ const frontendDistPath = path.join(__dirname, '../frontend/dist');
61
+ app.use(express.static(frontendDistPath));
62
+
63
+ // API routes
64
+ app.use('/api/agents', agentsRouter);
65
+ app.use('/api/auth', authRouter);
66
+ app.use('/api/files', filesRouter);
67
+ app.use('/api/mcp', mcpRouter);
68
+ app.use('/api/media', mediaRouter);
69
+ app.use('/api/slides', slidesRouter);
70
+
71
+ // Health check endpoint
72
+ app.get('/api/health', (req, res) => {
73
+ res.json({
74
+ status: 'ok',
75
+ timestamp: new Date().toISOString(),
76
+ version: '0.1.0'
77
+ });
78
+ });
79
+
80
+ // Serve frontend for all other routes (SPA routing)
81
+ app.get('*', (req, res) => {
82
+ res.sendFile(path.join(frontendDistPath, 'index.html'));
83
+ });
84
+
85
+ export function startServer(): Promise<void> {
86
+ return new Promise((resolve) => {
87
+ const port = parseInt(process.env.PORT || PORT.toString());
88
+ const host = process.env.HOST || HOST;
89
+ const server = app.listen(port, host, () => {
90
+ console.log(`🚀 AgentStudio running on http://${host}:${port}`);
91
+ console.log('📖 Open your browser to start using AgentStudio');
92
+ resolve();
93
+ });
94
+ });
95
+ }
96
+
97
+ // Only start server if this file is run directly
98
+ if (import.meta.url === `file://${process.argv[1]}`) {
99
+ startServer().catch(console.error);
100
+ }
@@ -0,0 +1,26 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import { verifyToken } from '../utils/jwt.js';
3
+
4
+ /**
5
+ * Middleware to authenticate requests using JWT token
6
+ * Expects token in Authorization header as "Bearer <token>"
7
+ */
8
+ export function authMiddleware(req: Request, res: Response, next: NextFunction): void {
9
+ const authHeader = req.headers.authorization;
10
+
11
+ if (!authHeader || !authHeader.startsWith('Bearer ')) {
12
+ res.status(401).json({ error: 'Unauthorized: No token provided' });
13
+ return;
14
+ }
15
+
16
+ const token = authHeader.substring(7); // Remove "Bearer " prefix
17
+ const payload = verifyToken(token);
18
+
19
+ if (!payload) {
20
+ res.status(401).json({ error: 'Unauthorized: Invalid or expired token' });
21
+ return;
22
+ }
23
+
24
+ // Token is valid, proceed to next middleware
25
+ next();
26
+ }