AllenAI Auto-Submit Listener

Listens for postMessage events on playground.allenai.org, enters into chat input, and auto-submits

Από την 03/08/2025. Δείτε την τελευταία έκδοση.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==UserScript==
// @name         AllenAI Auto-Submit Listener
// @description  Listens for postMessage events on playground.allenai.org, enters into chat input, and auto-submits
// @match        https://playground.allenai.org/*
// @version 0.0.1.20250803162659
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==

(function () {
  'use strict';

  function setNativeValue(element, value) {
    const lastValue = element.value;
    element.value = value;
    const tracker = element._valueTracker;
    if (tracker) {
      tracker.setValue(lastValue);
    }
    element.dispatchEvent(new Event('input', { bubbles: true }));
  }

  window.addEventListener('message', event => {

    if (event.data?.type === 'newChatButtonClicked') {
      const newChatLink = document.querySelector('a[aria-label="Create a new thread"]');
      if (newChatLink) {
        newChatLink.click();
      }
      return;
    }

    //hide shit
    //inline properties get swept away
    //need properties to be set in style element

    let allenAiCssStyleId = document.getElementById('allenAiCssStyleId');

    let chatMessageInput = document.querySelector('div:has(> div > form > div > div > div > textarea[name="content"])');
    let header = document.querySelector('header');
    let termsParagraph = document.querySelector('div:has(> p > a[href="https://allenai.org/terms"])');
    let termsParagraphRule = 'div:has(> p > a[href="https://allenai.org/terms"]) {display: none !important;}';

    let termsHr = document.querySelector('div:has(> p > a[href="https://allenai.org/terms"]) + hr');
    let modelSelector = document.querySelector('div:has(> div > div > svg > path[d="M7 10l5 5 5-5z"])');
    //if event data type is defaultChatMessageInputDisplay
    if (event.data?.type === 'defaultChatMessageInputDisplay') {
      console.log('default');
      if (chatMessageInput) {

        //delete the rules here
        chatMessageInput.style.removeProperty('display');
        header.style.removeProperty('display');

        allenAiCssStyleId.innerHTML = allenAiCssStyleId.innerHTML.replace(`${termsParagraphRule}`, '');
        //termsParagraph.style.removeProperty('display');
        termsHr.style.removeProperty('display');
        modelSelector.style.removeProperty('display');

        //return
        return;
      }
    }

    if (event.data?.type === 'customizeChatMessageInputDisplay') {
      console.log('customize');
      if (chatMessageInput) {

        //add the rules here
        chatMessageInput.style.display = 'none';
        header.style.display = 'none';

        allenAiCssStyleId.innerHTML += `${termsParagraphRule}`

        //termsParagraph.style.display = 'none';
        termsHr.style.display = 'none';
        modelSelector.style.display = 'none';

        //return
        return;
      }
    }

    if (event.data.type !== 'prompt' || event.data.content === 'recaptcha-setup') return;

    const message = event.data.content;

    // find the MUI/React textarea
    const textarea = document.querySelector(
      'textarea[name="content"], textarea[aria-label="Message OLMo"]'
    );
    if (!textarea) return;

    // inject into React state
    setNativeValue(textarea, message);

    // find and click the submit button
    const sendButton = document.querySelector('button[aria-label="Submit prompt"]');
    if (sendButton) {
      sendButton.click();
    }
  });
})();