{#if showWebSearch}
{
e.preventDefault();
if (modelHasTools) {
if (webSearchIsOn) {
await settings.instantSet({
tools: ($settings.tools ?? []).filter(
(t) => t !== webSearchToolId && t !== fetchUrlToolId
),
});
} else {
await settings.instantSet({
tools: [...($settings.tools ?? []), webSearchToolId, fetchUrlToolId],
});
}
} else {
$webSearchParameters.useSearch = !webSearchIsOn;
}
}}
>
{#if webSearchIsOn}
Search
{/if}
{/if}
{#if showImageGen}
{
e.preventDefault();
if (modelHasTools) {
if (imageGenIsOn) {
await settings.instantSet({
tools: ($settings.tools ?? []).filter((t) => t !== imageGenToolId),
});
} else {
await settings.instantSet({
tools: [...($settings.tools ?? []), imageGenToolId],
});
}
}
}}
>
{#if imageGenIsOn}
Image Gen
{/if}
{/if}
{#if showFileUpload}
{@const mimeTypesString = mimeTypes
.map((m) => {
// if the mime type ends in *, grab the first part so image/* becomes image
if (m.endsWith("*")) {
return m.split("/")[0];
}
// otherwise, return the second part for example application/pdf becomes pdf
return m.split("/")[1];
})
.join(", ")}
{#if documentParserIsOn}
Document Parser
{/if}
{#if mimeTypes.includes("image/*")}
{
e.preventDefault();
const screenshot = await captureScreen();
// Convert base64 to blob
const base64Response = await fetch(screenshot);
const blob = await base64Response.blob();
// Create a File object from the blob
const file = new File([blob], "screenshot.png", { type: "image/png" });
files = [...files, file];
}}
>
{/if}
{/if}
{#if showExtraTools}
{#each extraTools as tool}
{
e.preventDefault();
goto(`${base}/tools/${tool._id}`);
}}
>
{#key tool.icon + tool.color}
{/key}
{tool.displayName}
{/each}
{/if}