CopilotKit/scripts/qa/langchain.sh
#!/bin/bash
source scripts/qa/lib/bash/prelude.sh

# Create the next app in /tmp
LC_APP_PATH="/tmp/test-langchain-app"
echo "Creating next app in $LC_APP_PATH"
echo ""

# Remove prev project and run create-next-app
rm -rf $LC_APP_PATH
npx create-next-app $LC_APP_PATH --ts --eslint --use-npm --no-tailwind --src-dir --app --import-alias="@/*"

# write to .env
echo "OPENAI_API_KEY=$OPENAI_API_KEY" > $LC_APP_PATH/.env

npm_install_packages $LC_APP_PATH 
(cd $LC_APP_PATH && npm install @langchain/community@latest @langchain/core@latest @langchain/langgraph@latest @langchain/openai@latest)

cp scripts/qa/lib/langchain/page.tsx $LC_APP_PATH/src/app/page.tsx

# Open VSCode
code $LC_APP_PATH

mkdir -p $LC_APP_PATH/src/app/api/copilotkit/langchain/
cp scripts/qa/lib/langchain/route.ts $LC_APP_PATH/src/app/api/copilotkit/langchain/route.ts

prompt "Open route.ts. Is it without errors in VSCode?"

# Temporarily disable -e 
set +e

pushd $LC_APP_PATH

npm run build

exit_status=$?

if [ $exit_status -eq 0 ]; then
    succeed "$pkg_manager build succeeded."
else
    fail "$pkg_manager build failed with status $exit_status."
    exit 1
fi

# Re-enable -e
set -e

npm run dev > /dev/null 2>&1 &

pid1=$!

popd

prompt "Open http://localhost:3000. Is the page without errors?"
prompt "Chat to check if regular text and message history works (2x)?"
prompt "Ask the copilot to change the message. Is the message changed?"
prompt "Ask the copilot to change the message again. Is the message changed?"
prompt "Ask for a long message. Does the custom render work & stream?"
prompt "Does it provide the current message when asked?"
prompt "Test the keyboard shortcut cmd-\\ to open close the sidebar. Does it work?"
prompt "Does the text input autofocus when the sidebar is opened?"
prompt "In the text area, start a text about elephants. Does the autosuggestions work?"

killall next-server;

succeed "Test completed successfully."

echo "===================="
echo "Test completed at $(date)"
echo "===================="

exit 0
