enzostvs HF Staff commited on
Commit
d8d6fb5
·
1 Parent(s): 4060ddc

✨ patch diff

Browse files
server.js CHANGED
@@ -308,11 +308,7 @@ app.post("/api/ask-ai", async (req, res) => {
308
  content: prompt,
309
  },
310
  ],
311
- ...(selectedProvider.id !== "sambanova"
312
- ? {
313
- max_tokens: selectedProvider.max_tokens,
314
- }
315
- : {}),
316
  });
317
 
318
  while (true) {
@@ -513,40 +509,61 @@ ${REPLACE_END}
513
  });
514
 
515
  const chunk = response.choices[0]?.message?.content;
 
 
 
 
 
 
 
516
 
517
- // return the new HTML using the html and the chunk
518
  if (chunk) {
519
- const searchStartIndex = chunk.indexOf(SEARCH_START);
520
- const replaceEndIndex = chunk.indexOf(REPLACE_END);
521
-
522
- if (
523
- searchStartIndex === -1 ||
524
- replaceEndIndex === -1 ||
525
- replaceEndIndex <= searchStartIndex
526
- ) {
527
- return res.status(400).send({
528
- ok: false,
529
- message: "Invalid response format",
530
- });
531
- }
532
 
533
- const searchBlock = chunk.substring(
534
- searchStartIndex + SEARCH_START.length,
535
- chunk.indexOf(DIVIDER)
536
- );
537
- const replaceBlock = chunk.substring(
538
- chunk.indexOf(DIVIDER) + DIVIDER.length,
539
- replaceEndIndex
540
- );
541
 
542
- let newHtml = html;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
543
 
544
- if (searchBlock.trim() === "") {
545
- // Inserting at the beginning
546
- newHtml = `${replaceBlock}\n${newHtml}`;
547
- } else {
548
- // Replacing existing code
549
- newHtml = newHtml.replace(searchBlock, replaceBlock);
550
  }
551
 
552
  return res.status(200).send({
 
308
  content: prompt,
309
  },
310
  ],
311
+ max_tokens: selectedProvider.max_tokens,
 
 
 
 
312
  });
313
 
314
  while (true) {
 
509
  });
510
 
511
  const chunk = response.choices[0]?.message?.content;
512
+ // TO DO: handle the case where there are multiple SEARCH/REPLACE blocks
513
+ if (!chunk) {
514
+ return res.status(400).send({
515
+ ok: false,
516
+ message: "No content returned from the model",
517
+ });
518
+ }
519
 
 
520
  if (chunk) {
521
+ let newHtml = html;
 
 
 
 
 
 
 
 
 
 
 
 
522
 
523
+ // Find all search/replace blocks in the chunk
524
+ let position = 0;
525
+ let moreBlocks = true;
 
 
 
 
 
526
 
527
+ while (moreBlocks) {
528
+ const searchStartIndex = chunk.indexOf(SEARCH_START, position);
529
+ if (searchStartIndex === -1) {
530
+ moreBlocks = false;
531
+ continue;
532
+ }
533
+
534
+ const dividerIndex = chunk.indexOf(DIVIDER, searchStartIndex);
535
+ if (dividerIndex === -1) {
536
+ moreBlocks = false;
537
+ continue;
538
+ }
539
+
540
+ const replaceEndIndex = chunk.indexOf(REPLACE_END, dividerIndex);
541
+ if (replaceEndIndex === -1) {
542
+ moreBlocks = false;
543
+ continue;
544
+ }
545
+
546
+ // Extract the search and replace blocks
547
+ const searchBlock = chunk.substring(
548
+ searchStartIndex + SEARCH_START.length,
549
+ dividerIndex
550
+ );
551
+ const replaceBlock = chunk.substring(
552
+ dividerIndex + DIVIDER.length,
553
+ replaceEndIndex
554
+ );
555
+
556
+ // Apply the replacement
557
+ if (searchBlock.trim() === "") {
558
+ // Inserting at the beginning
559
+ newHtml = `${replaceBlock}\n${newHtml}`;
560
+ } else {
561
+ // Replacing existing code
562
+ newHtml = newHtml.replace(searchBlock, replaceBlock);
563
+ }
564
 
565
+ // Move position to after this block to find the next one
566
+ position = replaceEndIndex + REPLACE_END.length;
 
 
 
 
567
  }
568
 
569
  return res.status(200).send({
src/components/ask-ai/ask-ai.tsx CHANGED
@@ -63,8 +63,7 @@ function AskAI({
63
  let thinkResponse = "";
64
  let lastRenderTime = 0;
65
 
66
- const isFollowUp =
67
- previousPrompt && previousPrompt.length > 0 && html !== defaultHTML;
68
  try {
69
  onNewPrompt(prompt);
70
  if (isFollowUp) {
@@ -102,6 +101,7 @@ function AskAI({
102
  setPrompt("");
103
  setisAiWorking(false);
104
  onSuccess(res.html, prompt);
 
105
  }
106
  } else {
107
  const request = await fetch("/api/ask-ai", {
 
63
  let thinkResponse = "";
64
  let lastRenderTime = 0;
65
 
66
+ const isFollowUp = html !== defaultHTML;
 
67
  try {
68
  onNewPrompt(prompt);
69
  if (isFollowUp) {
 
101
  setPrompt("");
102
  setisAiWorking(false);
103
  onSuccess(res.html, prompt);
104
+ audio.play();
105
  }
106
  } else {
107
  const request = await fetch("/api/ask-ai", {
src/components/preview/preview.tsx CHANGED
@@ -53,7 +53,7 @@ function Preview({
53
  "w-full select-none transition-all duration-200 bg-black max-lg:h-full",
54
  {
55
  "pointer-events-none": isResizing || isAiWorking,
56
- "lg:max-w-md lg:mx-auto lg:h-[80dvh] lg:!rounded-[64px] lg:border-[8px] lg:border-neutral-700 lg:shadow-2xl":
57
  device === "mobile",
58
  "h-full": device === "desktop",
59
  "lg:border-[8px] lg:border-neutral-700 lg:shadow-2xl lg:rounded-[44px]":
 
53
  "w-full select-none transition-all duration-200 bg-black max-lg:h-full",
54
  {
55
  "pointer-events-none": isResizing || isAiWorking,
56
+ "lg:max-w-md lg:mx-auto lg:h-[80dvh] lg:!rounded-[48px] lg:border-[8px] lg:border-neutral-700 lg:shadow-2xl":
57
  device === "mobile",
58
  "h-full": device === "desktop",
59
  "lg:border-[8px] lg:border-neutral-700 lg:shadow-2xl lg:rounded-[44px]":