Sahil commited on
Commit
7ae716f
Β·
verified Β·
1 Parent(s): e9892f3

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +29 -40
index.html CHANGED
@@ -4,9 +4,7 @@
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' https://js.puter.com; connect-src 'self' https://api.puter.com https://puter.com; style-src 'self' 'unsafe-inline';">
8
  <title>ContinuumLearner - AI Training Pipeline</title>
9
- <script src="https://js.puter.com/v2/" crossorigin="anonymous"></script>
10
  <style>
11
  * {
12
  margin: 0;
@@ -261,29 +259,6 @@
261
  <script>
262
  let selectedModel = "puter:gpt-5-nano";
263
  let sessionCount = 0;
264
- let puterReady = false;
265
-
266
- // Check if Puter.js is loaded
267
- function checkPuterLoaded() {
268
- if (typeof puter !== 'undefined' && puter.ai) {
269
- puterReady = true;
270
- addLog('βœ… Puter.js loaded successfully', 'success');
271
- return true;
272
- }
273
- addLog('❌ Puter.js not loaded - Check your internet connection', 'error');
274
- return false;
275
- }
276
-
277
- // Wait for Puter.js to load
278
- window.addEventListener('load', function() {
279
- setTimeout(() => {
280
- if (!checkPuterLoaded()) {
281
- addLog('⚠️ Puter.js failed to load. Retrying...', 'error');
282
- // Retry after 2 seconds
283
- setTimeout(checkPuterLoaded, 2000);
284
- }
285
- }, 1000);
286
- });
287
 
288
  // Model selector
289
  document.querySelectorAll('.model-btn').forEach(btn => {
@@ -302,21 +277,35 @@
302
  return;
303
  }
304
 
305
- // Check if Puter.js is available
306
- if (typeof puter === 'undefined' || !puter.ai) {
307
- alert('❌ Puter.js is not loaded. Please refresh the page and check your internet connection.');
308
- addLog('❌ Puter.js not available', 'error');
309
- return;
310
- }
311
-
312
  const responseText = document.getElementById('responseText');
313
  responseText.innerHTML = '<div class="loading"></div> Generating response...';
314
 
315
  try {
316
- // Get AI response using Puter.js
317
  addLog(`πŸ”„ Calling ${selectedModel}...`, 'success');
318
- const response = await puter.ai.chat(userInput, { model: selectedModel });
319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  responseText.textContent = response;
321
  addLog(`βœ… Generated response using ${selectedModel}`, 'success');
322
 
@@ -332,16 +321,16 @@
332
  });
333
 
334
  const trainData = await trainResponse.json();
335
-
336
  if (trainData.success) {
337
  sessionCount++;
338
  document.getElementById('sessionCount').textContent = sessionCount;
339
  document.getElementById('bufferedCount').textContent = trainData.buffered;
340
  addLog(trainData.message, 'success');
341
-
342
  // Clear input
343
  document.getElementById('userInput').value = '';
344
-
345
  // Auto-save when buffer is full
346
  if (trainData.buffered >= 10) {
347
  addLog('Buffer full! Auto-saving to HuggingFace...', 'success');
@@ -361,7 +350,7 @@
361
  try {
362
  const response = await fetch('/api/flush-buffer', { method: 'POST' });
363
  const data = await response.json();
364
-
365
  if (data.success) {
366
  addLog(`πŸ’Ύ ${data.message}`, 'success');
367
  await refreshStats();
@@ -377,7 +366,7 @@
377
  try {
378
  const response = await fetch('/api/dataset-stats');
379
  const data = await response.json();
380
-
381
  if (data.success) {
382
  document.getElementById('totalConversations').textContent = data.total_examples;
383
  document.getElementById('totalTokens').textContent = data.total_tokens.toLocaleString();
@@ -395,7 +384,7 @@
395
  entry.className = `log-entry ${type}`;
396
  entry.textContent = `[${new Date().toLocaleTimeString()}] ${message}`;
397
  log.insertBefore(entry, log.firstChild);
398
-
399
  // Keep only last 50 entries
400
  while (log.children.length > 50) {
401
  log.removeChild(log.lastChild);
 
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
7
  <title>ContinuumLearner - AI Training Pipeline</title>
 
8
  <style>
9
  * {
10
  margin: 0;
 
259
  <script>
260
  let selectedModel = "puter:gpt-5-nano";
261
  let sessionCount = 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
 
263
  // Model selector
264
  document.querySelectorAll('.model-btn').forEach(btn => {
 
277
  return;
278
  }
279
 
 
 
 
 
 
 
 
280
  const responseText = document.getElementById('responseText');
281
  responseText.innerHTML = '<div class="loading"></div> Generating response...';
282
 
283
  try {
284
+ // Get AI response from backend
285
  addLog(`πŸ”„ Calling ${selectedModel}...`, 'success');
 
286
 
287
+ const generateResponse = await fetch('/api/generate', {
288
+ method: 'POST',
289
+ headers: { 'Content-Type': 'application/json' },
290
+ body: JSON.stringify({
291
+ prompt: userInput,
292
+ model: selectedModel
293
+ })
294
+ });
295
+
296
+ const generateData = await generateResponse.json();
297
+
298
+ if (!generateData.success) {
299
+ responseText.textContent = `Error: ${generateData.error}`;
300
+ addLog(`❌ Error: ${generateData.error}`, 'error');
301
+
302
+ if (generateData.error.includes('HF_TOKEN')) {
303
+ addLog('πŸ’‘ Add HF_TOKEN environment variable to enable AI model training', 'error');
304
+ }
305
+ return;
306
+ }
307
+
308
+ const response = generateData.response;
309
  responseText.textContent = response;
310
  addLog(`βœ… Generated response using ${selectedModel}`, 'success');
311
 
 
321
  });
322
 
323
  const trainData = await trainResponse.json();
324
+
325
  if (trainData.success) {
326
  sessionCount++;
327
  document.getElementById('sessionCount').textContent = sessionCount;
328
  document.getElementById('bufferedCount').textContent = trainData.buffered;
329
  addLog(trainData.message, 'success');
330
+
331
  // Clear input
332
  document.getElementById('userInput').value = '';
333
+
334
  // Auto-save when buffer is full
335
  if (trainData.buffered >= 10) {
336
  addLog('Buffer full! Auto-saving to HuggingFace...', 'success');
 
350
  try {
351
  const response = await fetch('/api/flush-buffer', { method: 'POST' });
352
  const data = await response.json();
353
+
354
  if (data.success) {
355
  addLog(`πŸ’Ύ ${data.message}`, 'success');
356
  await refreshStats();
 
366
  try {
367
  const response = await fetch('/api/dataset-stats');
368
  const data = await response.json();
369
+
370
  if (data.success) {
371
  document.getElementById('totalConversations').textContent = data.total_examples;
372
  document.getElementById('totalTokens').textContent = data.total_tokens.toLocaleString();
 
384
  entry.className = `log-entry ${type}`;
385
  entry.textContent = `[${new Date().toLocaleTimeString()}] ${message}`;
386
  log.insertBefore(entry, log.firstChild);
387
+
388
  // Keep only last 50 entries
389
  while (log.children.length > 50) {
390
  log.removeChild(log.lastChild);