@gracefultools/astrid-sdk 0.7.16 → 0.8.1

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 (114) hide show
  1. package/README.md +127 -341
  2. package/dist/channel/channel.d.ts +33 -0
  3. package/dist/channel/channel.d.ts.map +1 -0
  4. package/dist/channel/channel.js +90 -0
  5. package/dist/channel/channel.js.map +1 -0
  6. package/dist/channel/index.d.ts +13 -0
  7. package/dist/channel/index.d.ts.map +1 -0
  8. package/dist/channel/index.js +23 -0
  9. package/dist/channel/index.js.map +1 -0
  10. package/dist/channel/message-formatter.d.ts +14 -0
  11. package/dist/channel/message-formatter.d.ts.map +1 -0
  12. package/dist/channel/message-formatter.js +71 -0
  13. package/dist/channel/message-formatter.js.map +1 -0
  14. package/dist/channel/oauth-client.d.ts +15 -0
  15. package/dist/channel/oauth-client.d.ts.map +1 -0
  16. package/dist/channel/oauth-client.js +45 -0
  17. package/dist/channel/oauth-client.js.map +1 -0
  18. package/dist/channel/rest-client.d.ts +16 -0
  19. package/dist/channel/rest-client.d.ts.map +1 -0
  20. package/dist/channel/rest-client.js +66 -0
  21. package/dist/channel/rest-client.js.map +1 -0
  22. package/dist/channel/session-mapper.d.ts +14 -0
  23. package/dist/channel/session-mapper.d.ts.map +1 -0
  24. package/dist/channel/session-mapper.js +37 -0
  25. package/dist/channel/session-mapper.js.map +1 -0
  26. package/dist/channel/sse-client.d.ts +31 -0
  27. package/dist/channel/sse-client.d.ts.map +1 -0
  28. package/dist/channel/sse-client.js +171 -0
  29. package/dist/channel/sse-client.js.map +1 -0
  30. package/dist/channel/types.d.ts +65 -0
  31. package/dist/channel/types.d.ts.map +1 -0
  32. package/dist/channel/types.js +3 -0
  33. package/dist/channel/types.js.map +1 -0
  34. package/dist/config/agent-workflow.js +7 -7
  35. package/dist/index.d.ts +1 -8
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +16 -30
  38. package/dist/index.js.map +1 -1
  39. package/dist/types/index.d.ts +1 -1
  40. package/dist/types/index.d.ts.map +1 -1
  41. package/dist/utils/agent-config.d.ts.map +1 -1
  42. package/dist/utils/agent-config.js +14 -0
  43. package/dist/utils/agent-config.js.map +1 -1
  44. package/package.json +65 -77
  45. package/templates/.astrid.config.json +60 -60
  46. package/templates/ASTRID.template.md +74 -74
  47. package/dist/bin/cli.d.ts +0 -14
  48. package/dist/bin/cli.d.ts.map +0 -1
  49. package/dist/bin/cli.js +0 -1610
  50. package/dist/bin/cli.js.map +0 -1
  51. package/dist/executors/claude.d.ts +0 -65
  52. package/dist/executors/claude.d.ts.map +0 -1
  53. package/dist/executors/claude.js +0 -838
  54. package/dist/executors/claude.js.map +0 -1
  55. package/dist/executors/gemini.d.ts +0 -23
  56. package/dist/executors/gemini.d.ts.map +0 -1
  57. package/dist/executors/gemini.js +0 -558
  58. package/dist/executors/gemini.js.map +0 -1
  59. package/dist/executors/openai.d.ts +0 -17
  60. package/dist/executors/openai.d.ts.map +0 -1
  61. package/dist/executors/openai.js +0 -614
  62. package/dist/executors/openai.js.map +0 -1
  63. package/dist/executors/shared/index.d.ts +0 -9
  64. package/dist/executors/shared/index.d.ts.map +0 -1
  65. package/dist/executors/shared/index.js +0 -21
  66. package/dist/executors/shared/index.js.map +0 -1
  67. package/dist/executors/shared/tool-executor.d.ts +0 -52
  68. package/dist/executors/shared/tool-executor.d.ts.map +0 -1
  69. package/dist/executors/shared/tool-executor.js +0 -262
  70. package/dist/executors/shared/tool-executor.js.map +0 -1
  71. package/dist/executors/shared/tool-schemas.d.ts +0 -61
  72. package/dist/executors/shared/tool-schemas.d.ts.map +0 -1
  73. package/dist/executors/shared/tool-schemas.js +0 -135
  74. package/dist/executors/shared/tool-schemas.js.map +0 -1
  75. package/dist/executors/terminal-base.d.ts +0 -207
  76. package/dist/executors/terminal-base.d.ts.map +0 -1
  77. package/dist/executors/terminal-base.js +0 -552
  78. package/dist/executors/terminal-base.js.map +0 -1
  79. package/dist/executors/terminal-claude.d.ts +0 -116
  80. package/dist/executors/terminal-claude.d.ts.map +0 -1
  81. package/dist/executors/terminal-claude.js +0 -700
  82. package/dist/executors/terminal-claude.js.map +0 -1
  83. package/dist/executors/terminal-executors.test.d.ts +0 -8
  84. package/dist/executors/terminal-executors.test.d.ts.map +0 -1
  85. package/dist/executors/terminal-executors.test.js +0 -469
  86. package/dist/executors/terminal-executors.test.js.map +0 -1
  87. package/dist/executors/terminal-gemini.d.ts +0 -50
  88. package/dist/executors/terminal-gemini.d.ts.map +0 -1
  89. package/dist/executors/terminal-gemini.js +0 -401
  90. package/dist/executors/terminal-gemini.js.map +0 -1
  91. package/dist/executors/terminal-openai.d.ts +0 -50
  92. package/dist/executors/terminal-openai.d.ts.map +0 -1
  93. package/dist/executors/terminal-openai.js +0 -405
  94. package/dist/executors/terminal-openai.js.map +0 -1
  95. package/dist/server/astrid-client.d.ts +0 -77
  96. package/dist/server/astrid-client.d.ts.map +0 -1
  97. package/dist/server/astrid-client.js +0 -125
  98. package/dist/server/astrid-client.js.map +0 -1
  99. package/dist/server/index.d.ts +0 -38
  100. package/dist/server/index.d.ts.map +0 -1
  101. package/dist/server/index.js +0 -408
  102. package/dist/server/index.js.map +0 -1
  103. package/dist/server/repo-manager.d.ts +0 -41
  104. package/dist/server/repo-manager.d.ts.map +0 -1
  105. package/dist/server/repo-manager.js +0 -177
  106. package/dist/server/repo-manager.js.map +0 -1
  107. package/dist/server/session-manager.d.ts +0 -93
  108. package/dist/server/session-manager.d.ts.map +0 -1
  109. package/dist/server/session-manager.js +0 -217
  110. package/dist/server/session-manager.js.map +0 -1
  111. package/dist/server/webhook-signature.d.ts +0 -23
  112. package/dist/server/webhook-signature.d.ts.map +0 -1
  113. package/dist/server/webhook-signature.js +0 -74
  114. package/dist/server/webhook-signature.js.map +0 -1
@@ -1,38 +0,0 @@
1
- /**
2
- * Astrid SDK Server
3
- *
4
- * Express server that receives webhooks from Astrid and executes
5
- * AI coding agents (Claude, OpenAI, Gemini) with full tool access.
6
- *
7
- * Usage:
8
- * npx astrid-agent serve --port=3001
9
- */
10
- interface ExpressResponse {
11
- json(data: unknown): void;
12
- status(code: number): ExpressResponse;
13
- }
14
- interface ExpressApplication {
15
- use(handler: unknown): void;
16
- get(path: string, handler: (req: unknown, res: ExpressResponse) => void | Promise<void>): void;
17
- post(path: string, handler: (req: unknown, res: ExpressResponse) => void | Promise<void>): void;
18
- listen(port: number, host: string, callback: () => void): void;
19
- }
20
- export interface ServerConfig {
21
- port: number;
22
- webhookSecret?: string;
23
- callbackUrl?: string;
24
- }
25
- /**
26
- * Create and configure the Express server
27
- */
28
- export declare function createServer(config: ServerConfig): Promise<ExpressApplication>;
29
- /**
30
- * Start the server
31
- */
32
- export declare function startServer(config: ServerConfig): Promise<void>;
33
- export { Session, AIProvider } from './session-manager.js';
34
- export { AstridClient, AstridClientConfig, CallbackPayload } from './astrid-client.js';
35
- export { sessionManager } from './session-manager.js';
36
- export { astridClient } from './astrid-client.js';
37
- export { repoManager } from './repo-manager.js';
38
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,UAAU,eAAe;IACvB,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;CACtC;AAGD,UAAU,kBAAkB;IAC1B,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC3B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/F,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAC/D;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AA4RD;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmGpF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CrE;AAGD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,408 +0,0 @@
1
- "use strict";
2
- /**
3
- * Astrid SDK Server
4
- *
5
- * Express server that receives webhooks from Astrid and executes
6
- * AI coding agents (Claude, OpenAI, Gemini) with full tool access.
7
- *
8
- * Usage:
9
- * npx astrid-agent serve --port=3001
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.repoManager = exports.astridClient = exports.sessionManager = exports.AstridClient = void 0;
13
- exports.createServer = createServer;
14
- exports.startServer = startServer;
15
- const webhook_signature_js_1 = require("./webhook-signature.js");
16
- const session_manager_js_1 = require("./session-manager.js");
17
- const astrid_client_js_1 = require("./astrid-client.js");
18
- const repo_manager_js_1 = require("./repo-manager.js");
19
- const claude_js_1 = require("../executors/claude.js");
20
- const openai_js_1 = require("../executors/openai.js");
21
- const gemini_js_1 = require("../executors/gemini.js");
22
- const agent_config_js_1 = require("../utils/agent-config.js");
23
- /**
24
- * Get model for provider, handling unknown case
25
- */
26
- function getModelForProvider(provider) {
27
- if (provider === 'unknown') {
28
- return agent_config_js_1.DEFAULT_MODELS['claude']; // Default to claude
29
- }
30
- return agent_config_js_1.DEFAULT_MODELS[provider];
31
- }
32
- // Track active executions to prevent concurrent runs for the same task
33
- const activeExecutions = new Set();
34
- /**
35
- * Detect provider from agent info
36
- */
37
- function detectProvider(aiAgent) {
38
- const email = aiAgent?.email?.toLowerCase() || '';
39
- const type = aiAgent?.type?.toLowerCase() || '';
40
- if (email.includes('claude') || type.includes('claude'))
41
- return 'claude';
42
- if (email.includes('openai') || email.includes('gpt') || type.includes('openai'))
43
- return 'openai';
44
- if (email.includes('gemini') || email.includes('google') || type.includes('gemini'))
45
- return 'gemini';
46
- return 'claude'; // Default
47
- }
48
- /**
49
- * Get provider display name
50
- */
51
- function getProviderName(provider) {
52
- switch (provider) {
53
- case 'claude': return 'Claude';
54
- case 'openai': return 'OpenAI';
55
- case 'gemini': return 'Gemini';
56
- default: return 'AI Agent';
57
- }
58
- }
59
- /**
60
- * Get API key for provider
61
- */
62
- function getApiKeyForProvider(provider) {
63
- switch (provider) {
64
- case 'claude': return process.env.ANTHROPIC_API_KEY;
65
- case 'openai': return process.env.OPENAI_API_KEY;
66
- case 'gemini': return process.env.GEMINI_API_KEY;
67
- default: return undefined;
68
- }
69
- }
70
- /**
71
- * Get project path from list configuration
72
- */
73
- function getProjectPath(list) {
74
- if (!list?.id) {
75
- return process.env.DEFAULT_PROJECT_PATH || undefined;
76
- }
77
- // Try to get from environment based on list ID
78
- const envKey = `PROJECT_PATH_${list.id.replace(/-/g, '_').toUpperCase()}`;
79
- if (process.env[envKey]) {
80
- return process.env[envKey];
81
- }
82
- return process.env.DEFAULT_PROJECT_PATH || undefined;
83
- }
84
- /**
85
- * Handle new task assignment
86
- */
87
- async function handleTaskAssigned(payload) {
88
- const { task, list, comments, aiAgent } = payload;
89
- // Prevent concurrent executions for the same task
90
- if (activeExecutions.has(task.id)) {
91
- console.log(`⚠️ Task ${task.id} already executing, skipping duplicate`);
92
- return;
93
- }
94
- activeExecutions.add(task.id);
95
- console.log(`🔒 Acquired execution lock for task ${task.id}`);
96
- // Detect which AI provider to use based on the agent
97
- const provider = detectProvider(aiAgent || {});
98
- const providerName = getProviderName(provider);
99
- const apiKey = getApiKeyForProvider(provider);
100
- console.log(`🆕 New task assigned: ${task.title}`);
101
- console.log(`🤖 AI Provider: ${providerName}`);
102
- console.log(`📋 List: ${list?.name}, Repo: ${list?.githubRepositoryId || 'none'}`);
103
- console.log(`💬 Comments provided: ${comments?.length || 0}`);
104
- if (!apiKey) {
105
- console.error(`❌ No API key configured for ${providerName}`);
106
- activeExecutions.delete(task.id);
107
- return;
108
- }
109
- // Check if we already have a session for this task
110
- let session = await session_manager_js_1.sessionManager.getByTaskId(task.id);
111
- if (session) {
112
- console.log(`📂 Session already exists for task ${task.id}, status: ${session.status}`);
113
- if (session.status === 'interrupted' || session.status === 'error') {
114
- console.log(`🔄 Restarting session for task ${task.id}`);
115
- await session_manager_js_1.sessionManager.deleteSession(task.id);
116
- session = undefined;
117
- }
118
- else if (session.status === 'running') {
119
- // Check if the session is stale
120
- const thirtyMinutesAgo = Date.now() - 30 * 60 * 1000;
121
- const lastUpdate = new Date(session.updatedAt).getTime();
122
- if (lastUpdate < thirtyMinutesAgo) {
123
- console.log(`⚠️ Session appears stuck, resetting`);
124
- await session_manager_js_1.sessionManager.deleteSession(task.id);
125
- session = undefined;
126
- }
127
- else {
128
- console.log(`⚠️ Session already running for task ${task.id}`);
129
- activeExecutions.delete(task.id);
130
- return;
131
- }
132
- }
133
- }
134
- // Clone/update repository if specified
135
- let projectPath = getProjectPath(list || {});
136
- if (list?.githubRepositoryId) {
137
- console.log(`📥 Setting up repository: ${list.githubRepositoryId}`);
138
- const repoInfo = await repo_manager_js_1.repoManager.getRepo(list.githubRepositoryId);
139
- if (repoInfo) {
140
- projectPath = repoInfo.path;
141
- console.log(`✅ Repository ready at: ${projectPath}`);
142
- try {
143
- const branchName = await repo_manager_js_1.repoManager.createTaskBranch(repoInfo.path, task.id);
144
- console.log(`🌿 Working on branch: ${branchName}`);
145
- }
146
- catch (err) {
147
- console.log(`⚠️ Could not create task branch, working on main`);
148
- }
149
- }
150
- else {
151
- console.error(`❌ Failed to setup repository: ${list.githubRepositoryId}`);
152
- }
153
- }
154
- if (!projectPath) {
155
- console.log(`⚠️ No project path - ${providerName} will work without file context`);
156
- projectPath = process.cwd();
157
- }
158
- // Create new session
159
- session = await session_manager_js_1.sessionManager.createSession({
160
- taskId: task.id,
161
- title: task.title,
162
- description: task.description || '',
163
- projectPath,
164
- provider,
165
- metadata: {
166
- listId: list?.id,
167
- listName: list?.name,
168
- repository: list?.githubRepositoryId,
169
- aiAgent: aiAgent
170
- }
171
- });
172
- await session_manager_js_1.sessionManager.updateSession(task.id, { status: 'running' });
173
- await astrid_client_js_1.astridClient.notifyStarted(task.id, session.id, `Starting work on: ${task.title} (using ${providerName})`);
174
- try {
175
- const config = {
176
- repoPath: projectPath,
177
- apiKey,
178
- model: getModelForProvider(provider),
179
- maxBudgetUsd: parseFloat(process.env.MAX_BUDGET_USD || '10.0'),
180
- maxTurns: 50,
181
- maxIterations: 50,
182
- logger: (level, msg) => console.log(`[${level}] ${msg}`),
183
- onProgress: (msg) => {
184
- astrid_client_js_1.astridClient.notifyProgress(task.id, session.id, msg);
185
- },
186
- };
187
- // Plan phase
188
- console.log(`📋 Planning phase starting...`);
189
- let planResult;
190
- switch (provider) {
191
- case 'claude':
192
- planResult = await (0, claude_js_1.planWithClaude)(task.title, task.description || null, config);
193
- break;
194
- case 'openai':
195
- planResult = await (0, openai_js_1.planWithOpenAI)(task.title, task.description || null, config);
196
- break;
197
- case 'gemini':
198
- planResult = await (0, gemini_js_1.planWithGemini)(task.title, task.description || null, config);
199
- break;
200
- }
201
- if (!planResult?.success || !planResult?.plan) {
202
- throw new Error(`Planning failed: ${planResult?.error || 'No plan generated'}`);
203
- }
204
- console.log(`✅ Plan created: ${planResult.plan.summary}`);
205
- // Execute phase
206
- console.log(`🔨 Execution phase starting...`);
207
- let execResult;
208
- switch (provider) {
209
- case 'claude':
210
- execResult = await (0, claude_js_1.executeWithClaude)(planResult.plan, task.title, task.description || null, config);
211
- break;
212
- case 'openai':
213
- execResult = await (0, openai_js_1.executeWithOpenAI)(planResult.plan, task.title, task.description || null, config);
214
- break;
215
- case 'gemini':
216
- execResult = await (0, gemini_js_1.executeWithGemini)(planResult.plan, task.title, task.description || null, config);
217
- break;
218
- }
219
- if (!execResult?.success) {
220
- throw new Error(`Execution failed: ${execResult?.error || 'Unknown error'}`);
221
- }
222
- console.log(`✅ Execution complete: ${execResult.files.length} files modified`);
223
- await session_manager_js_1.sessionManager.updateSession(task.id, { status: 'completed' });
224
- await astrid_client_js_1.astridClient.notifyCompleted(task.id, session.id, {
225
- summary: execResult.commitMessage || planResult.plan.summary,
226
- files: execResult.files.map(f => f.path),
227
- prUrl: execResult.prUrl
228
- });
229
- }
230
- catch (error) {
231
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
232
- console.error(`❌ ${providerName} execution failed:`, error);
233
- await session_manager_js_1.sessionManager.updateSession(task.id, { status: 'error' });
234
- await astrid_client_js_1.astridClient.notifyError(task.id, session.id, errorMessage);
235
- }
236
- finally {
237
- activeExecutions.delete(task.id);
238
- console.log(`🔓 Released execution lock for task ${task.id}`);
239
- }
240
- }
241
- /**
242
- * Handle comment on assigned task
243
- */
244
- async function handleCommentCreated(payload) {
245
- const { task, comment, comments, aiAgent } = payload;
246
- console.log(`💬 Comment received on task ${task.id}: ${comment.content.slice(0, 50)}...`);
247
- // Get existing session
248
- const session = await session_manager_js_1.sessionManager.getByTaskId(task.id);
249
- if (!session) {
250
- console.log(`⚠️ No session found for task ${task.id}, creating new one`);
251
- await handleTaskAssigned(payload);
252
- return;
253
- }
254
- // For now, treat comments as continuing the task
255
- // Could implement specific comment handling (e.g., "retry", "ship it")
256
- await session_manager_js_1.sessionManager.incrementMessageCount(task.id);
257
- console.log(`📝 Comment logged for session ${session.id}`);
258
- }
259
- /**
260
- * Create and configure the Express server
261
- */
262
- async function createServer(config) {
263
- // Dynamic import of express
264
- const expressModule = await import('express');
265
- const express = expressModule.default || expressModule;
266
- const app = express();
267
- const webhookSecret = config.webhookSecret || process.env.ASTRID_WEBHOOK_SECRET;
268
- if (!webhookSecret) {
269
- throw new Error('ASTRID_WEBHOOK_SECRET not configured');
270
- }
271
- // Parse JSON with raw body preservation for signature verification
272
- app.use(express.json({
273
- verify: (req, _res, buf) => {
274
- req.rawBody = buf;
275
- }
276
- }));
277
- // Health check endpoint
278
- app.get('/health', async (_req, res) => {
279
- const claudeAvailable = !!process.env.ANTHROPIC_API_KEY;
280
- const openaiAvailable = !!process.env.OPENAI_API_KEY;
281
- const geminiAvailable = !!process.env.GEMINI_API_KEY;
282
- const activeSessions = await session_manager_js_1.sessionManager.getActiveSessions();
283
- res.json({
284
- status: (claudeAvailable || openaiAvailable || geminiAvailable) ? 'healthy' : 'degraded',
285
- providers: {
286
- claude: claudeAvailable ? 'available' : 'not configured',
287
- openai: openaiAvailable ? 'available' : 'not configured',
288
- gemini: geminiAvailable ? 'available' : 'not configured'
289
- },
290
- activeSessions: activeSessions.length,
291
- timestamp: new Date().toISOString()
292
- });
293
- });
294
- // Webhook endpoint
295
- app.post('/webhook', async (rawReq, res) => {
296
- const req = rawReq;
297
- const signature = req.headers['x-astrid-signature'];
298
- const timestamp = req.headers['x-astrid-timestamp'];
299
- const event = req.headers['x-astrid-event'];
300
- const rawBody = req.rawBody?.toString() || JSON.stringify(req.body);
301
- const verification = (0, webhook_signature_js_1.verifyWebhookSignature)(rawBody, signature, webhookSecret, timestamp);
302
- if (!verification.valid) {
303
- console.error(`❌ Webhook signature verification failed: ${verification.error}`);
304
- res.status(401).json({ error: verification.error });
305
- return;
306
- }
307
- console.log(`📥 Received webhook: ${event}`);
308
- // Respond immediately
309
- res.json({ success: true, event, message: 'Processing started' });
310
- // Process webhook asynchronously
311
- setImmediate(async () => {
312
- try {
313
- const body = req.body;
314
- switch (event) {
315
- case 'task.assigned':
316
- await handleTaskAssigned(body);
317
- break;
318
- case 'comment.created':
319
- await handleCommentCreated(body);
320
- break;
321
- case 'task.updated':
322
- console.log(`📝 Task updated: ${body.task?.id}`);
323
- break;
324
- default:
325
- console.log(`⚠️ Unknown event type: ${event}`);
326
- }
327
- }
328
- catch (error) {
329
- console.error(`❌ Error handling webhook:`, error);
330
- }
331
- });
332
- });
333
- // List sessions endpoint
334
- app.get('/sessions', async (_req, res) => {
335
- const sessions = await session_manager_js_1.sessionManager.getAllSessions();
336
- res.json({
337
- count: sessions.length,
338
- sessions: sessions.map(s => ({
339
- id: s.id,
340
- taskId: s.taskId,
341
- title: s.title,
342
- status: s.status,
343
- provider: s.provider,
344
- updatedAt: s.updatedAt
345
- }))
346
- });
347
- });
348
- return app;
349
- }
350
- /**
351
- * Start the server
352
- */
353
- async function startServer(config) {
354
- const providers = [];
355
- if (process.env.ANTHROPIC_API_KEY)
356
- providers.push('Claude');
357
- if (process.env.OPENAI_API_KEY)
358
- providers.push('OpenAI');
359
- if (process.env.GEMINI_API_KEY)
360
- providers.push('Gemini');
361
- if (providers.length === 0) {
362
- console.warn(`⚠️ No AI providers configured! Add at least one:
363
- ANTHROPIC_API_KEY=sk-ant-... (for Claude)
364
- OPENAI_API_KEY=sk-... (for OpenAI)
365
- GEMINI_API_KEY=AIza... (for Gemini)
366
- `);
367
- }
368
- else {
369
- console.log(`✅ Available providers: ${providers.join(', ')}`);
370
- }
371
- // Recover interrupted sessions
372
- await session_manager_js_1.sessionManager.recoverSessions();
373
- await session_manager_js_1.sessionManager.cleanupExpired();
374
- const app = await createServer(config);
375
- app.listen(config.port, '0.0.0.0', () => {
376
- const providerStatus = providers.length > 0 ? providers.join(', ') : 'None';
377
- console.log(`
378
- ╔════════════════════════════════════════════════════════════════╗
379
- ║ Astrid SDK Server ║
380
- ╠════════════════════════════════════════════════════════════════╣
381
- ║ Status: Running ║
382
- ║ Providers: ${providerStatus.padEnd(42)} ║
383
- ║ Address: http://0.0.0.0:${config.port} ║
384
- ║ Webhook: http://0.0.0.0:${config.port}/webhook ║
385
- ║ Health: http://0.0.0.0:${config.port}/health ║
386
- ╠════════════════════════════════════════════════════════════════╣
387
- ║ Supported AI Agents: ║
388
- ║ - claude@astrid.cc → Claude Agent SDK ║
389
- ║ - openai@astrid.cc → OpenAI API (GPT-4o) ║
390
- ║ - gemini@astrid.cc → Google Gemini API ║
391
- ╠════════════════════════════════════════════════════════════════╣
392
- ║ Configure in Astrid: ║
393
- ║ 1. Go to Settings → AI Agent Settings ║
394
- ║ 2. Set URL to your server's /webhook endpoint ║
395
- ║ 3. Copy the webhook secret to ASTRID_WEBHOOK_SECRET ║
396
- ╚════════════════════════════════════════════════════════════════╝
397
- `);
398
- });
399
- }
400
- var astrid_client_js_2 = require("./astrid-client.js");
401
- Object.defineProperty(exports, "AstridClient", { enumerable: true, get: function () { return astrid_client_js_2.AstridClient; } });
402
- var session_manager_js_2 = require("./session-manager.js");
403
- Object.defineProperty(exports, "sessionManager", { enumerable: true, get: function () { return session_manager_js_2.sessionManager; } });
404
- var astrid_client_js_3 = require("./astrid-client.js");
405
- Object.defineProperty(exports, "astridClient", { enumerable: true, get: function () { return astrid_client_js_3.astridClient; } });
406
- var repo_manager_js_2 = require("./repo-manager.js");
407
- Object.defineProperty(exports, "repoManager", { enumerable: true, get: function () { return repo_manager_js_2.repoManager; } });
408
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Repository Manager
3
- *
4
- * Handles cloning and updating GitHub repositories for AI agents to work on.
5
- */
6
- export interface RepoInfo {
7
- path: string;
8
- url: string;
9
- branch: string;
10
- }
11
- declare class RepoManager {
12
- private reposDir;
13
- constructor();
14
- /**
15
- * Get or clone a repository
16
- */
17
- getRepo(repoId: string): Promise<RepoInfo | null>;
18
- /**
19
- * Build repository URL (supports GitHub token for private repos)
20
- */
21
- private buildRepoUrl;
22
- /**
23
- * Clone a repository
24
- */
25
- private cloneRepo;
26
- /**
27
- * Pull latest changes
28
- */
29
- private pullLatest;
30
- /**
31
- * Get current branch name
32
- */
33
- private getCurrentBranch;
34
- /**
35
- * Create a new branch for the task
36
- */
37
- createTaskBranch(repoPath: string, taskId: string): Promise<string>;
38
- }
39
- export declare const repoManager: RepoManager;
40
- export {};
41
- //# sourceMappingURL=repo-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repo-manager.d.ts","sourceRoot":"","sources":["../../src/server/repo-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf;AAED,cAAM,WAAW;IACf,OAAO,CAAC,QAAQ,CAAQ;;IAUxB;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA0CvD;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;YACW,SAAS;IA0CvB;;OAEG;YACW,UAAU;IA0BxB;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoB1E;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA"}