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.
- package/.env +15 -0
- package/README.md +85 -0
- package/dist/bin/agentstudio.d.ts +3 -0
- package/dist/bin/agentstudio.d.ts.map +1 -0
- package/dist/bin/agentstudio.js +141 -0
- package/dist/bin/agentstudio.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +87 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/auth.d.ts +7 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +21 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/routes/agents.d.ts +4 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +804 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/auth.d.ts +4 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +60 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/files.d.ts +4 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +301 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/mcp.d.ts +4 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +652 -0
- package/dist/routes/mcp.js.map +1 -0
- package/dist/routes/media.d.ts +5 -0
- package/dist/routes/media.d.ts.map +1 -0
- package/dist/routes/media.js +117 -0
- package/dist/routes/media.js.map +1 -0
- package/dist/routes/slides.d.ts +4 -0
- package/dist/routes/slides.d.ts.map +1 -0
- package/dist/routes/slides.js +146 -0
- package/dist/routes/slides.js.map +1 -0
- package/dist/services/claudeSession.d.ts +83 -0
- package/dist/services/claudeSession.d.ts.map +1 -0
- package/dist/services/claudeSession.js +255 -0
- package/dist/services/claudeSession.js.map +1 -0
- package/dist/services/messageQueue.d.ts +31 -0
- package/dist/services/messageQueue.d.ts.map +1 -0
- package/dist/services/messageQueue.js +67 -0
- package/dist/services/messageQueue.js.map +1 -0
- package/dist/services/sessionManager.d.ts +132 -0
- package/dist/services/sessionManager.d.ts.map +1 -0
- package/dist/services/sessionManager.js +439 -0
- package/dist/services/sessionManager.js.map +1 -0
- package/dist/types/claude-history.d.ts +48 -0
- package/dist/types/claude-history.d.ts.map +1 -0
- package/dist/types/claude-history.js +2 -0
- package/dist/types/claude-history.js.map +1 -0
- package/dist/types/claude-versions.d.ts +31 -0
- package/dist/types/claude-versions.d.ts.map +1 -0
- package/dist/types/claude-versions.js +2 -0
- package/dist/types/claude-versions.js.map +1 -0
- package/dist/types/commands.d.ts +32 -0
- package/dist/types/commands.d.ts.map +1 -0
- package/dist/types/commands.js +2 -0
- package/dist/types/commands.js.map +1 -0
- package/dist/types/index.d.ts +81 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +150 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/subagents.d.ts +88 -0
- package/dist/types/subagents.d.ts.map +1 -0
- package/dist/types/subagents.js +2 -0
- package/dist/types/subagents.js.map +1 -0
- package/dist/utils/agentStorage.d.ts +19 -0
- package/dist/utils/agentStorage.d.ts.map +1 -0
- package/dist/utils/agentStorage.js +110 -0
- package/dist/utils/agentStorage.js.map +1 -0
- package/dist/utils/claudeVersionStorage.d.ts +33 -0
- package/dist/utils/claudeVersionStorage.d.ts.map +1 -0
- package/dist/utils/claudeVersionStorage.js +168 -0
- package/dist/utils/claudeVersionStorage.js.map +1 -0
- package/dist/utils/jwt.d.ts +15 -0
- package/dist/utils/jwt.d.ts.map +1 -0
- package/dist/utils/jwt.js +28 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/projectMetadataStorage.d.ts +21 -0
- package/dist/utils/projectMetadataStorage.d.ts.map +1 -0
- package/dist/utils/projectMetadataStorage.js +68 -0
- package/dist/utils/projectMetadataStorage.js.map +1 -0
- package/frontend/dist/index.html +86 -0
- package/package.json +66 -0
- package/src/bin/agentstudio.ts +161 -0
- package/src/index.ts +100 -0
- package/src/middleware/auth.ts +26 -0
- package/src/routes/agents.ts +885 -0
- package/src/routes/auth.ts +73 -0
- package/src/routes/commands.ts.bak +441 -0
- package/src/routes/files.ts +352 -0
- package/src/routes/mcp.ts +751 -0
- package/src/routes/media.ts +140 -0
- package/src/routes/projects.ts.bak +601 -0
- package/src/routes/sessions.ts.bak +809 -0
- package/src/routes/settings.ts.bak +718 -0
- package/src/routes/slides.ts +170 -0
- package/src/routes/subagents.ts.bak +364 -0
- package/src/services/claudeSession.ts +293 -0
- package/src/services/messageQueue.ts +71 -0
- package/src/services/sessionManager.ts +532 -0
- package/src/types/claude-history.ts +50 -0
- package/src/types/claude-versions.ts +33 -0
- package/src/types/commands.ts +35 -0
- package/src/types/index.ts +248 -0
- package/src/types/subagents.ts +106 -0
- package/src/utils/agentStorage.ts +126 -0
- package/src/utils/claudeVersionStorage.ts +199 -0
- package/src/utils/jwt.ts +36 -0
- package/src/utils/projectMetadataStorage.ts +86 -0
- 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
|
+
}
|