-
Notifications
You must be signed in to change notification settings - Fork 0
/
TM-commandbar.auto.min.js
1 lines (1 loc) · 9.83 KB
/
TM-commandbar.auto.min.js
1
const main=async()=>{const e=MineTm.Mine,t={updateChatData:async(e,a)=>await t._withIndexeddbStore("readwrite",(t=>t.put(a,`CHAT_${e}`))),getChatData:async e=>(await t._withIndexeddbStore("readonly",(t=>t.get(`CHAT_${e}`)))).target.result,deleteCurrentChat:async()=>{const t=window.location.href,a=e.qs('[data-element-id="selected-chat-item"] button:has([d="M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z"])');a.click(),await e.waitFor((()=>"Sure?"===a.innerText)),a.click(),await e.waitFor((()=>window.location.href!==t)),await e.sleep(500);const n=e.qs('[data-tooltip-id="sync-button-tooltip"]');n&&await e.waitFor((()=>!n.disabled))},getAllIndexedDbItems:(e,t)=>new Promise(((a,n)=>{const s=indexedDB.open(e);s.onupgradeneeded=()=>{s.result.createObjectStore(t)},s.onsuccess=()=>{const e=s.result.transaction(t,"readonly").objectStore(t).getAll();e.onsuccess=()=>a(e.result),e.onerror=()=>n(e.error)},s.onerror=e=>n(e.target.error)})),getCurrentChatId:()=>window.location.hash.split("=")[1],_withIndexeddbStore:async(e,t)=>new Promise(((a,n)=>{const s=indexedDB.open("keyval-store");s.onerror=e=>n(e),s.onsuccess=s=>{const i=s.target.result,o=i.transaction("keyval",e),r=o.objectStore("keyval"),c=t(r);c.onerror=e=>n(e),c.onsuccess=e=>a(e),o.oncomplete=()=>i.close()}}))},a={stopAiResponse:async()=>{const t=e.qsaa("button").find((e=>"Stop"===e.innerText));t&&(t.click(),await e.sleep(500))},getResponseBlocks:()=>e.qsaa('[data-element-id="response-block"]'),deleteRespBlock:async t=>{const n=a.getResponseBlocks().length;t.querySelector('[id^="headlessui-menu-button-:"]').click();const s=await e.waitFor((()=>[...t.querySelectorAll("button")].find((e=>"Delete"===e.innerText))));s.click(),await e.waitFor((()=>"Sure?"===s.innerText),{timeoutMs:1e3}).catch((e=>null)),s?.click(),await e.waitFor((()=>a.getResponseBlocks().length<n))}};let n;MineTm.Mine.initCommandBarGetCommandsFnAsync((async()=>[{site:"https://www.typingmind.com/",title:"New chat",run:async()=>{window.location.href="https://www.typingmind.com/"}},{site:"https://www.typingmind.com/",title:"Diff last code",run:async()=>{const t={},a=e.qsaa('[data-element-id="user-message"]').reverse().find((e=>e.innerText.includes("\n\n"))).innerText.split("\n\n");t.a=a.slice(0,a.length-1).join("\n\n"),t.b=e.qsaa('[data-element-id="ai-response"] pre').pop().innerText;const n=encodeURIComponent(JSON.stringify(t));window.open(`https://www.textcompare.org/javascript/?mine_config=${n}`)}},...["Claude 3 Opus","GPT-4 Vision","GPT-4 Turbo","[Mine] Perplexity"].map((t=>({site:"https://www.typingmind.com/",title:`🧠 Switch to model: ${t}`,run:async()=>{e.qsaa('[data-element-id="current-chat-title"] button[aria-haspopup="menu"]')[0].click(),(await e.waitFor((()=>e.qsaa('[data-element-id="current-chat-title"] [role="menuitem"]').find((e=>e.innerText.split("\n")[0].toLowerCase()===t.toLowerCase()))))).click()}}))),{site:"https://www.typingmind.com/",title:"Go to message by timestamp",run:async()=>{const t=prompt('Enter timestamp (like "07:35")');if(!t?.trim())return;const a=t.trim().padStart(5,"0");e.qsaa('[id^="message-timestamp"]').find((e=>e.innerText===a))?.closest('[data-element-id="response-block"]').scrollIntoView({behavior:"smooth"})}},{site:"https://www.typingmind.com/.*chat",title:"Wipe plugin contexts",run:async()=>{const t=e.qsaa('[data-element-id="response-block"]').filter((e=>e.querySelector("details")||e.querySelector('[data-element-id="additional-actions-of-response-container"]')?.innerText.length)).reverse();for(let e=0;e<t.length;e++){const n=t[e];await a.deleteRespBlock(n)}}},{site:"https://www.typingmind.com/.*chat",title:"➖ Delete last exchange",hotkeySequence:"d+l",run:async()=>{await a.stopAiResponse();let t=0;const n=async()=>{const e=a.getResponseBlocks();await a.deleteRespBlock(e.slice(-1)[0]),t++};await n();const s=()=>a.getResponseBlocks().pop()?.querySelector('[data-element-id="user-message"]');for(;!s()&&t<3;)await n();s()&&await n(),e.qs("#chat-input-textbox").focus()}},...["chat","message"].map((t=>({site:"https://www.typingmind.com/",title:"🔍 Search "+("chat"===t?"chats":"individual chat messages"),run:async()=>{let a=prompt(`Search\n* terms are space separated\n* each term must exist in the ${t}\n* overrides textarea content`,n);if(!a)return;if(!a.trim())return;a=a.trim(),n=a;const s=e.qs('[id="chat-input-textbox"]');e.updateReactTypableFormValue(s,""),await e.sleep(100);const i="message"===t,o=[];await(async(e,t=!0)=>{try{const a=await(async()=>{const e="keyval";return new Promise(((t,a)=>{const n=indexedDB.open("keyval-store");n.onerror=e=>a(`Database error: ${e.target.error}`),n.onsuccess=a=>{const n=a.target.result.transaction([e],"readonly").objectStore(e),s=[];n.openCursor().onsuccess=e=>{const a=e.target.result;a?(a.key.startsWith("CHAT_")&&s.push({key:a.key,value:a.value}),a.continue()):t(s)}}}))})(),n=e.toLowerCase().split(" ").filter((e=>e.length>0));return a.filter((e=>{if(!e.value||"object"!=typeof e.value)return!1;const a=e.value.messages;if(!Array.isArray(a))return!1;if(t)return a.some((e=>{if(Array.isArray(e?.content))return!1;if("user"!==e.role||"string"!=typeof e?.content)return!1;const t=e.content.toLowerCase();return n.every((e=>t.includes(e)))}));{const e=a.filter((e=>"user"===e.role&&"string"==typeof e?.content)).map((e=>e.content.toLowerCase())).join(" ");return n.every((t=>e.includes(t)))}}))}catch(e){return console.error("Error filtering chat entries:",e),[]}})(a,i).then((t=>{t.map((e=>e.value)).map((e=>`https://www.typingmind.com/#chat=${e.chatID}\t${e.chatTitle}`)).forEach((e=>o.push(e)));const a=o.length?`Results (${o.length}):\n`+o.join("\n"):"No results.";e.updateReactTypableFormValue(s,a)}))}}))),{site:"https://www.typingmind.com/.*chat",title:"Retry last message",run:async()=>{const t=e.qsaa('[data-element-id="user-message"]').pop();t.scrollIntoView({behavior:"smooth"}),t.closest('[data-element-id="response-block"]').querySelector('button[data-element-id="edit-message-button"]').click()}},{site:"https://www.typingmind.com/.*chat",title:"Prune everything before latest context clear",run:async()=>{const e=t.getCurrentChatId(),a=await t.getChatData(e),n=(e=>{for(let t=e.length-1;t>=0;t--)if("clear-context"===e[t].type)return t;return-1})(a.messages);n<0||(a.messages.splice(0,n+1),await t.updateChatData(e,a),window.location.reload())}},...[0,3,5,10,20,25,50,100].map((t=>({site:"https://www.typingmind.com/.*chat",title:`Set lookback history to: ${t||"All"} msg${1===t?"":"s"}`,run:async()=>{(await e.waitForQs('[data-element-id="current-chat-title"] button:has([d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"])')).click(),(await e.waitFor((()=>e.qsaa('[id^="headlessui-menu-item"][role="menuitem"]').find((e=>e.innerText.toLowerCase()==="Model Settings (Current Chat)".toLowerCase()))))).click();const a=await e.waitForQs('[data-element-id="pop-up-modal"] select');e.updateReactTypableFormValue(a,t),e.qs('[data-element-id="save-model-settings-button"]').click()}}))),{site:"https://www.typingmind.com/.*chat",title:"Prune since last call",run:async()=>{const e=t.getCurrentChatId(),a=await t.getChatData(e),n=(e=>{for(let a=e.length-1;a>=0;a--)if("user"===(t=e[a]).role&&t.content.toLowerCase().startsWith("[operational message]")&&t.content.toLowerCase().includes("ready"))return a;var t;return-1})(a.messages);n<0||(a.messages.splice(n),await t.updateChatData(e,a),window.location.reload())}},{site:"https://www.typingmind.com/.*chat",title:"➖ Wipe chat clean",run:async()=>{await(async()=>{const t=e.qs("#chat-input-textbox"),a=t.value;e.updateReactTypableFormValue(t,""),e.qsaa('[data-element-id="user-message"]')[0].closest('[data-element-id="response-block"]').querySelector('[data-element-id="edit-message-button"]').click(),await e.waitFor((()=>!!t.value)),e.updateReactTypableFormValue(t,"."),e.qsaa('[data-element-id="message-input"] [d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]').forEach((t=>e.simulateClick(t.closest("svg")))),(await e.waitForQs('[data-element-id="send-button"]')).click(),e.updateReactTypableFormValue(t,a)})()}},{site:"https://www.typingmind.com/.*chat",title:"❌ Delete current chat",run:async(e={})=>{(!0===e.triggerEvent?.shiftKey||confirm("Are you sure you want to delete this chat?"))&&(await t.deleteCurrentChat(),window.location=window.location.origin)}},{site:"https://www.typingmind.com/.*chat",title:"❌ Destructive exit (dexit)",run:async(a={})=>{(!0===a.triggerEvent?.shiftKey||confirm("Are you sure you want to delete this chat and exit?"))&&(await t.deleteCurrentChat(),await e.sleep(200),e.Extension.closeTab())}},{site:"https://www.typingmind.com",title:"Export data snapshot",run:async(t={})=>{e.qs('[data-element-id="settings-button"]').click();const a=async t=>await e.waitFor((()=>{const a=e.qsaa("button").filter((e=>e.innerText===t));return 1===a.length&&a[0]}));(await a("Export")).click();const n=await a("Download File");await e.sleep(200),n.click(),(await a("Done")).click()}},...e.qsaa('[data-element-id="response-block"]').map((e=>({title:"🎯 Focus message: "+(e.querySelector('[data-element-id="ai-response"]')?"🤖":e.querySelector('[data-element-id="user-message"]')?"🧑🏻":"⚙️")+": "+e.innerText.split(" ").slice(0,10).join(" ").replace(/[^0-9a-zA-Z_\s]/g," ").replace(/\s+/g," "),run:async()=>e.scrollIntoView({behavior:"smooth"})})))]))};main().then();