akhaliq HF Staff commited on
Commit
47565e8
Β·
1 Parent(s): da59e40

fix deploy

Browse files
Files changed (1) hide show
  1. frontend/src/app/page.tsx +64 -33
frontend/src/app/page.tsx CHANGED
@@ -163,49 +163,80 @@ export default function Home() {
163
  return;
164
  }
165
 
166
- // Determine if we're updating an existing space or creating a new one
167
- let existingRepoId = currentRepoId;
168
 
169
- // If we have a current repo, check if user owns it
170
- if (currentRepoId && username) {
171
- const ownsSpace = currentRepoId.startsWith(`${username}/`);
172
- if (ownsSpace) {
173
- // Update existing space without asking
174
- console.log('[Deploy] Updating existing space:', currentRepoId);
175
- } else {
176
- // User doesn't own the imported space, create a new one
177
- existingRepoId = null;
178
- console.log('[Deploy] Creating new space (user does not own imported space)');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  }
180
- } else {
181
- console.log('[Deploy] Creating new space (no current repo)');
182
  }
183
 
184
  // Auto-generate space name (never prompt user)
185
  let spaceName = undefined; // undefined = backend will auto-generate
186
 
187
  try {
188
- console.log('[Deploy] ========== DEPLOY START ==========');
189
- console.log('[Deploy] Current username:', username);
190
- console.log('[Deploy] Current repo ID (state):', currentRepoId);
191
- console.log('[Deploy] Existing repo ID (var):', existingRepoId);
192
- console.log('[Deploy] Space name:', spaceName);
193
- console.log('[Deploy] Language:', selectedLanguage);
194
- console.log('[Deploy] Code length:', generatedCode.length);
195
- console.log('[Deploy] ========================================');
196
 
197
  const deployRequest = {
198
  code: generatedCode,
199
  space_name: spaceName,
200
  language: selectedLanguage,
201
- existing_repo_id: existingRepoId || undefined,
202
- commit_message: existingRepoId ? 'Update via AnyCoder' : undefined,
203
  };
204
 
205
- console.log('[Deploy] πŸš€ Sending request to backend:', JSON.stringify({
206
- ...deployRequest,
207
- code: `${deployRequest.code.substring(0, 100)}... (${deployRequest.code.length} chars)`
208
- }, null, 2));
 
 
209
 
210
  const response = await apiClient.deploy(deployRequest);
211
 
@@ -223,12 +254,12 @@ export default function Home() {
223
  }
224
  }
225
 
226
- // Add deployment message to chat
227
  const deployMessage: Message = {
228
  role: 'assistant',
229
- content: existingRepoId
230
- ? `βœ… Updated space: ${response.space_url}`
231
- : `βœ… Published to: ${response.space_url}`,
232
  timestamp: new Date().toISOString(),
233
  };
234
  setMessages((prev) => [...prev, deployMessage]);
@@ -240,7 +271,7 @@ export default function Home() {
240
  const isDev = response.dev_mode;
241
  const message = isDev
242
  ? 'πŸš€ Opening HuggingFace Spaces creation page...\nPlease complete the space setup in the new tab.'
243
- : existingRepoId
244
  ? `βœ… Updated successfully!\n\nOpening: ${response.space_url}`
245
  : `βœ… Published successfully!\n\nOpening: ${response.space_url}`;
246
  alert(message);
 
163
  return;
164
  }
165
 
166
+ // SAME LOGIC AS GRADIO VERSION: Parse message history to find existing space
167
+ let existingSpace: string | null = null;
168
 
169
+ // Look for previous deployment or imported space in history
170
+ if (messages.length > 0 && username) {
171
+ console.log('[Deploy] Scanning message history for existing deployments...');
172
+
173
+ for (let i = messages.length - 1; i >= 0; i--) {
174
+ const msg = messages[i];
175
+
176
+ // Check for deployment messages
177
+ if (msg.role === 'assistant' && msg.content.includes('βœ… Deployed')) {
178
+ const match = msg.content.match(/huggingface\.co\/spaces\/([^\/\s\)]+\/[^\/\s\)]+)/);
179
+ if (match) {
180
+ existingSpace = match[1];
181
+ console.log('[Deploy] Found previous deployment:', existingSpace);
182
+ break;
183
+ }
184
+ }
185
+
186
+ // Check for update messages
187
+ if (msg.role === 'assistant' && msg.content.includes('βœ… Updated')) {
188
+ const match = msg.content.match(/huggingface\.co\/spaces\/([^\/\s\)]+\/[^\/\s\)]+)/);
189
+ if (match) {
190
+ existingSpace = match[1];
191
+ console.log('[Deploy] Found previous update:', existingSpace);
192
+ break;
193
+ }
194
+ }
195
+
196
+ // Check for imported space messages - THE KEY PART!
197
+ if (msg.role === 'user' && msg.content.startsWith('Imported Space from')) {
198
+ const match = msg.content.match(/huggingface\.co\/spaces\/([^\/\s\)]+\/[^\/\s\)]+)/);
199
+ if (match) {
200
+ const importedSpace = match[1];
201
+ // Only use imported space if user owns it (can update it)
202
+ if (importedSpace.startsWith(`${username}/`)) {
203
+ existingSpace = importedSpace;
204
+ console.log('[Deploy] Found imported space (user owns it):', existingSpace);
205
+ break;
206
+ } else {
207
+ console.log('[Deploy] Found imported space but user does not own it:', importedSpace);
208
+ // If user doesn't own the imported space, we'll create a new one
209
+ // (existingSpace remains null, triggering new deployment)
210
+ }
211
+ }
212
+ }
213
  }
 
 
214
  }
215
 
216
  // Auto-generate space name (never prompt user)
217
  let spaceName = undefined; // undefined = backend will auto-generate
218
 
219
  try {
220
+ console.log('[Deploy] ========== DEPLOY START (Gradio-style history parsing) ==========');
221
+ console.log('[Deploy] Username:', username);
222
+ console.log('[Deploy] Existing space from history:', existingSpace);
223
+ console.log('[Deploy] Will create new space?', !existingSpace);
224
+ console.log('[Deploy] =================================================================');
 
 
 
225
 
226
  const deployRequest = {
227
  code: generatedCode,
228
  space_name: spaceName,
229
  language: selectedLanguage,
230
+ existing_repo_id: existingSpace || undefined,
231
+ commit_message: existingSpace ? 'Update via AnyCoder' : undefined,
232
  };
233
 
234
+ console.log('[Deploy] πŸš€ Sending to backend:', {
235
+ existing_repo_id: deployRequest.existing_repo_id,
236
+ space_name: deployRequest.space_name,
237
+ language: deployRequest.language,
238
+ has_code: !!deployRequest.code
239
+ });
240
 
241
  const response = await apiClient.deploy(deployRequest);
242
 
 
254
  }
255
  }
256
 
257
+ // Add deployment message to chat (matches Gradio format)
258
  const deployMessage: Message = {
259
  role: 'assistant',
260
+ content: existingSpace
261
+ ? `βœ… Updated! View at: ${response.space_url}`
262
+ : `βœ… Deployed! View at: ${response.space_url}`,
263
  timestamp: new Date().toISOString(),
264
  };
265
  setMessages((prev) => [...prev, deployMessage]);
 
271
  const isDev = response.dev_mode;
272
  const message = isDev
273
  ? 'πŸš€ Opening HuggingFace Spaces creation page...\nPlease complete the space setup in the new tab.'
274
+ : existingSpace
275
  ? `βœ… Updated successfully!\n\nOpening: ${response.space_url}`
276
  : `βœ… Published successfully!\n\nOpening: ${response.space_url}`;
277
  alert(message);