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
@@ -0,0 +1,36 @@
1
+ import jwt from 'jsonwebtoken';
2
+
3
+ const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key-change-this-in-production';
4
+ const JWT_EXPIRES_IN = process.env.JWT_EXPIRES_IN || '7d';
5
+
6
+ export interface JWTPayload {
7
+ authenticated: true;
8
+ iat?: number;
9
+ exp?: number;
10
+ }
11
+
12
+ /**
13
+ * Generate a JWT token for authentication
14
+ */
15
+ export function generateToken(): string {
16
+ const payload: JWTPayload = {
17
+ authenticated: true,
18
+ };
19
+
20
+ return jwt.sign(payload, JWT_SECRET, {
21
+ expiresIn: JWT_EXPIRES_IN,
22
+ } as jwt.SignOptions);
23
+ }
24
+
25
+ /**
26
+ * Verify and decode a JWT token
27
+ * @returns Decoded payload if valid, null if invalid
28
+ */
29
+ export function verifyToken(token: string): JWTPayload | null {
30
+ try {
31
+ const decoded = jwt.verify(token, JWT_SECRET) as JWTPayload;
32
+ return decoded;
33
+ } catch (error) {
34
+ return null;
35
+ }
36
+ }
@@ -0,0 +1,86 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = path.dirname(__filename);
7
+
8
+ export interface ProjectMetadata {
9
+ id: string;
10
+ name: string;
11
+ path: string;
12
+ description?: string;
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ agents: string[];
16
+ customData?: Record<string, unknown>;
17
+ }
18
+
19
+ export class ProjectMetadataStorage {
20
+ private dataDir: string;
21
+
22
+ constructor(dataDir?: string) {
23
+ this.dataDir = dataDir || path.join(__dirname, '../../data/projects');
24
+ }
25
+
26
+ private getProjectPath(projectId: string): string {
27
+ return path.join(this.dataDir, `${projectId}.json`);
28
+ }
29
+
30
+ async saveProject(project: ProjectMetadata): Promise<void> {
31
+ await fs.ensureDir(this.dataDir);
32
+ const projectPath = this.getProjectPath(project.id);
33
+ await fs.writeJson(projectPath, project, { spaces: 2 });
34
+ }
35
+
36
+ async loadProject(projectId: string): Promise<ProjectMetadata | null> {
37
+ const projectPath = this.getProjectPath(projectId);
38
+ try {
39
+ if (await fs.pathExists(projectPath)) {
40
+ return await fs.readJson(projectPath);
41
+ }
42
+ } catch (error) {
43
+ console.error(`Error loading project ${projectId}:`, error);
44
+ }
45
+ return null;
46
+ }
47
+
48
+ async deleteProject(projectId: string): Promise<void> {
49
+ const projectPath = this.getProjectPath(projectId);
50
+ try {
51
+ if (await fs.pathExists(projectPath)) {
52
+ await fs.remove(projectPath);
53
+ }
54
+ } catch (error) {
55
+ console.error(`Error deleting project ${projectId}:`, error);
56
+ throw error;
57
+ }
58
+ }
59
+
60
+ async listProjects(): Promise<ProjectMetadata[]> {
61
+ await fs.ensureDir(this.dataDir);
62
+ const files = await fs.readdir(this.dataDir);
63
+ const projects: ProjectMetadata[] = [];
64
+
65
+ for (const file of files) {
66
+ if (file.endsWith('.json')) {
67
+ const projectId = path.basename(file, '.json');
68
+ try {
69
+ const project = await this.loadProject(projectId);
70
+ if (project) {
71
+ projects.push(project);
72
+ }
73
+ } catch (error) {
74
+ console.error(`Error loading project from file ${file}:`, error);
75
+ }
76
+ }
77
+ }
78
+
79
+ return projects;
80
+ }
81
+
82
+ async projectExists(projectId: string): Promise<boolean> {
83
+ const projectPath = this.getProjectPath(projectId);
84
+ return await fs.pathExists(projectPath);
85
+ }
86
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "node",
6
+ "allowSyntheticDefaultImports": true,
7
+ "esModuleInterop": true,
8
+ "noEmit": false,
9
+ "strict": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "outDir": "./dist",
13
+ "rootDir": "./src",
14
+ "declaration": true,
15
+ "declarationMap": true,
16
+ "sourceMap": true,
17
+ "resolveJsonModule": true
18
+ },
19
+ "include": [
20
+ "src/**/*"
21
+ ],
22
+ "exclude": [
23
+ "node_modules",
24
+ "dist"
25
+ ]
26
+ }