From 96159ee9ff4adb39fe5bb58e09fdc09f6a92dda5 Mon Sep 17 00:00:00 2001 From: MuaazWahid Date: Sun, 15 Mar 2026 16:36:43 -0700 Subject: [PATCH 01/17] hotfix #4 - updating codespace startup: the main problem is that the terminal that sets up goodmem immediately closes, and the terminal the user is presented with, does not see goodmem as a valid command --- .devcontainer/devcontainer.json | 10 ++++++++-- .devcontainer/post-setup.sh | 8 ++++++++ README.md | 12 ++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c5d0a48..e99404e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,10 +1,16 @@ { "name": "GoodMem Dev Container", + // Option 1: Build docker image from local Dockerfile // "build": { "dockerfile": "Dockerfile" }, + + // Option 2: Use pre-built docker image from GitHub Container Registry "image": "ghcr.io/pair-systems-inc/devcontainer-codespace:latest", - // "postCreateCommand": "bash .devcontainer/setup.sh", # Skip example code setup - "postCreateCommand": "bash .devcontainer/post-setup.sh", + // run setup scripts after setting up docker container + "postCreateCommand" : [ + "bash .devcontainer/setup.sh", + "bash .devcontainer/post-setup.sh" + ], "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {} diff --git a/.devcontainer/post-setup.sh b/.devcontainer/post-setup.sh index 3536c1e..4107ad6 100755 --- a/.devcontainer/post-setup.sh +++ b/.devcontainer/post-setup.sh @@ -37,3 +37,11 @@ fi echo "=== Post-setup script completed ===" + +echo "=====================================" +echo " " +echo "Welcome to the GoodMem Dev Container! ๐ŸŽ‰" +echo "Click on the README.md file to get started!" +echo " " +echo "=====================================" + diff --git a/README.md b/README.md index 4549ccf..c83a9a7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ +# GitHub Codespace Quick Start + +to get started with GoodMem lets create a few memories. + +### prerequisites + +you will need an openai api key for this quick start + +if you do not want to use an openai api key, +please provide an api key from an embedding provider we support + + # GoodMem DevContainer The **GoodMem DevContainer** is a pre-configured, zero-setup development environment designed to help you start building immediately. It includes all necessary SDKs, tools, and extensions in a single, consistent container image. From 2fa86b22c7f963d82869850085c6135a3ba1b09f Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Mon, 16 Mar 2026 16:10:55 -0700 Subject: [PATCH 02/17] updating text files so goodmem cli works on launch --- .devcontainer/Dockerfile | 183 +++++++++++---------- .devcontainer/devcontainer.json | 39 +++-- .devcontainer/post-setup.sh | 6 +- .gitignore | 67 ++++++++ README.md | 278 +++++++++++++++++--------------- social_media_study.pdf | Bin 0 -> 327260 bytes 6 files changed, 330 insertions(+), 243 deletions(-) create mode 100644 .gitignore create mode 100644 social_media_study.pdf diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index e9a0126..2ebe1d0 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,94 +1,99 @@ FROM ubuntu:24.04 -LABEL org.opencontainers.image.title="GoodMem Dev Environment" \ - org.opencontainers.image.description="Minimal setup for developing with GoodMem APIs (Python + JS + .NET)" \ - org.opencontainers.image.version="1.1.0" +# LABEL org.opencontainers.image.title="GoodMem Dev Environment" \ +# org.opencontainers.image.description="Minimal setup for developing with GoodMem APIs (Python + JS + .NET)" \ +# org.opencontainers.image.version="1.1.0" + + LABEL org.opencontainers.image.title="GoodMem Local Dev Env" \ + org.opencontainers.image.description="Minimal setup for developing with GoodMem APIs" \ + org.opencontainers.image.version="1.2.0" SHELL ["/bin/bash", "-c"] # Base deps RUN apt-get update && apt-get install -y --no-install-recommends \ curl wget git unzip gnupg ca-certificates software-properties-common \ - build-essential apt-transport-https sudo \ - python3 python3-venv python3-pip python3-dev \ - libffi-dev libssl-dev libpq-dev cargo - -# Node.js 20 -RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ - apt-get install -y nodejs - -# .NET SDK 9.0 -RUN add-apt-repository ppa:dotnet/backports && \ - apt-get update && \ - apt-get install -y dotnet-sdk-9.0 - -#Go -ARG GO_VERSION=1.24.6 -RUN curl -fsSL https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz -o /tmp/go.tgz \ - && rm -rf /usr/local/go \ - && tar -C /usr/local -xzf /tmp/go.tgz \ - && rm /tmp/go.tgz -ENV GOROOT=/usr/local/go -ENV GOPATH=/home/vscode/go -ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH -# quick sanity -RUN go version - -# ---- Java (OpenJDK 21) ---- -RUN apt-get install -y --no-install-recommends \ - openjdk-21-jdk \ - && rm -rf /var/lib/apt/lists/* -ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 -ENV PATH="$JAVA_HOME/bin:${PATH}" - -# quick sanity -RUN java -version && javac -version - -# ---- Gradle (official binary) ---- -RUN curl -fsSL https://services.gradle.org/distributions/gradle-8.9-bin.zip -o /tmp/gradle.zip \ - && unzip -q /tmp/gradle.zip -d /opt \ - && ln -s /opt/gradle-8.9 /opt/gradle \ - && rm -f /tmp/gradle.zip -ENV PATH="/opt/gradle/bin:${PATH}" - - -# quick sanity -RUN gradle -v - -# Python defaults -RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 -ENV PIP_DISABLE_PIP_VERSION_CHECK=1 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 - -# Global Python deps -RUN pip install --no-cache-dir --break-system-packages \ - goodmem_client openai requests python-dotenv \ - jupyter lab - -# Dotnet Interactive (for Jupyter) -RUN dotnet tool install --global Microsoft.dotnet-interactive -ENV PATH="/root/.dotnet/tools:${PATH}" -RUN dotnet interactive jupyter install - -# IJavascript (Node.js kernel for Jupyter) -RUN npm config set prefix $HOME -RUN npm install -g ijavascript -ENV PATH="/root/bin:${PATH}" -RUN ijsinstall - -# JJava (Java kernel for Jupyter) -RUN curl -fsSL https://github.com/dflib/jjava/releases/download/1.0-a5/jjava-1.0-a5-kernelspec.zip -o /tmp/jjava.zip && \ - unzip -q /tmp/jjava.zip -d /tmp/jjava-1.0-a5-kernelspec && \ - cd /tmp && \ - jupyter kernelspec install jjava-1.0-a5-kernelspec --user --name=java - -# GONB (Go kernel for Jupyter) -RUN go install github.com/janpfeifer/gonb@latest && \ - go install golang.org/x/tools/cmd/goimports@latest && \ - go install golang.org/x/tools/gopls@latest -RUN gonb --install - -# APT clean up -RUN rm -rf /var/lib/apt/lists/* + apt-transport-https sudo + # build-essential apt-transport-https sudo \ + # python3 python3-venv python3-pip python3-dev \ + # libffi-dev libssl-dev libpq-dev cargo + +# # Node.js 20 +# RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ +# apt-get install -y nodejs + +# # .NET SDK 9.0 +# RUN add-apt-repository ppa:dotnet/backports && \ +# apt-get update && \ +# apt-get install -y dotnet-sdk-9.0 + +# #Go +# ARG GO_VERSION=1.24.6 +# RUN curl -fsSL https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz -o /tmp/go.tgz \ +# && rm -rf /usr/local/go \ +# && tar -C /usr/local -xzf /tmp/go.tgz \ +# && rm /tmp/go.tgz +# ENV GOROOT=/usr/local/go +# ENV GOPATH=/home/vscode/go +# ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH +# # quick sanity +# RUN go version + +# # ---- Java (OpenJDK 21) ---- +# RUN apt-get install -y --no-install-recommends \ +# openjdk-21-jdk \ +# && rm -rf /var/lib/apt/lists/* +# ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 +# ENV PATH="$JAVA_HOME/bin:${PATH}" + +# # quick sanity +# RUN java -version && javac -version + +# # ---- Gradle (official binary) ---- +# RUN curl -fsSL https://services.gradle.org/distributions/gradle-8.9-bin.zip -o /tmp/gradle.zip \ +# && unzip -q /tmp/gradle.zip -d /opt \ +# && ln -s /opt/gradle-8.9 /opt/gradle \ +# && rm -f /tmp/gradle.zip +# ENV PATH="/opt/gradle/bin:${PATH}" + + +# # quick sanity +# RUN gradle -v + +# # Python defaults +# RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 +# ENV PIP_DISABLE_PIP_VERSION_CHECK=1 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 + +# # Global Python deps +# RUN pip install --no-cache-dir --break-system-packages \ +# goodmem_client openai requests python-dotenv \ +# jupyter lab + +# # Dotnet Interactive (for Jupyter) +# RUN dotnet tool install --global Microsoft.dotnet-interactive +# ENV PATH="/root/.dotnet/tools:${PATH}" +# RUN dotnet interactive jupyter install + +# # IJavascript (Node.js kernel for Jupyter) +# RUN npm config set prefix $HOME +# RUN npm install -g ijavascript +# ENV PATH="/root/bin:${PATH}" +# RUN ijsinstall + +# # JJava (Java kernel for Jupyter) +# RUN curl -fsSL https://github.com/dflib/jjava/releases/download/1.0-a5/jjava-1.0-a5-kernelspec.zip -o /tmp/jjava.zip && \ +# unzip -q /tmp/jjava.zip -d /tmp/jjava-1.0-a5-kernelspec && \ +# cd /tmp && \ +# jupyter kernelspec install jjava-1.0-a5-kernelspec --user --name=java + +# # GONB (Go kernel for Jupyter) +# RUN go install github.com/janpfeifer/gonb@latest && \ +# go install golang.org/x/tools/cmd/goimports@latest && \ +# go install golang.org/x/tools/gopls@latest +# RUN gonb --install + +# # APT clean up +# RUN rm -rf /var/lib/apt/lists/* # Dev user # EDIT: DISABLED for now to avoid permission issues with mounted volumes @@ -100,10 +105,10 @@ RUN rm -rf /var/lib/apt/lists/* # USER vscode -# Use Codespaces default; the repo will be mounted at /workspaces/ -WORKDIR /workspaces +# # Use Codespaces default; the repo will be mounted at /workspaces/ +# WORKDIR /workspaces -# Create Python virtual environment and activate it by default -RUN python3 -m venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" -ENV VIRTUAL_ENV="/opt/venv" +# # Create Python virtual environment and activate it by default +# RUN python3 -m venv /opt/venv +# ENV PATH="/opt/venv/bin:$PATH" +# ENV VIRTUAL_ENV="/opt/venv" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index e99404e..54bb491 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,27 +1,24 @@ { "name": "GoodMem Dev Container", - // Option 1: Build docker image from local Dockerfile - // "build": { "dockerfile": "Dockerfile" }, + // build docker image from local Dockerfile + "build": { "dockerfile": "Dockerfile" }, - // Option 2: Use pre-built docker image from GitHub Container Registry - "image": "ghcr.io/pair-systems-inc/devcontainer-codespace:latest", + // build docker image from latest build on github container registry + // "image": "ghcr.io/pair-systems-inc/devcontainer-codespace:latest", - // run setup scripts after setting up docker container - "postCreateCommand" : [ - "bash .devcontainer/setup.sh", - "bash .devcontainer/post-setup.sh" - ], + // "postCreateCommand": "bash .devcontainer/setup.sh", + "postCreateCommand": "bash .devcontainer/post-setup.sh", - "features": { - "ghcr.io/devcontainers/features/docker-in-docker:2": {} - }, - "customizations": { - "vscode": { - "extensions": [ - "ms-python.python", - "ms-vscode.vscode-docker", - "ms-toolsai.jupyter" - ] - } - } + // "features": { + // "ghcr.io/devcontainers/features/docker-in-docker:2": {} + // }, + // "customizations": { + // "vscode": { + // "extensions": [ + // // "ms-python.python", + // // "ms-vscode.vscode-docker", + // // "ms-toolsai.jupyter" + // ] + // } + // } } diff --git a/.devcontainer/post-setup.sh b/.devcontainer/post-setup.sh index 4107ad6..49c90fe 100755 --- a/.devcontainer/post-setup.sh +++ b/.devcontainer/post-setup.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -e +# set -e echo "=== Post-setup script started ===" @@ -12,8 +12,8 @@ else echo "GoodMem repository already exists at $GOODMEM_REPO_DIR" fi -# 1. Install GoodMem -echo "Installing GoodMem..." +# 1. Initialize GoodMem (binary already installed in image; re-run installer to set up DB and API key) +echo "Initializing GoodMem..." curl -s https://get.goodmem.ai | bash -s -- --handsfree --db-password "hjsaFGDGHS1726HSBD" # 2. Extract API key and add to ~/.bashrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..313a4ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,67 @@ +# OS +.DS_Store +Thumbs.db + +# Editor +.vscode/settings.json +.idea/ +*.swp +*.swo + +# LLM / AI tools +.cursor/ +.copilot/ +.aider* +.claude/ +.continue/ +*.cursorrules +.github/copilot-instructions.md +claude.json +CLAUDE.md +AGENTS.md +GEMINI.md +COPILOT.md + +# Env files +.env +.env.local +.env*.local + +# Jupyter +.ipynb_checkpoints/ + +# Python +__pycache__/ +*.py[cod] +*.pyo +*.pyd +.env +.venv/ +venv/ +*.egg-info/ +dist/ +build/ + +# Node.js +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# Java / Gradle +.gradle/ +build/ +*.class +*.jar +*.war + +# .NET +bin/ +obj/ +*.user +*.suo +.vs/ + +# Go +vendor/ \ No newline at end of file diff --git a/README.md b/README.md index c83a9a7..c046fa2 100644 --- a/README.md +++ b/README.md @@ -1,168 +1,186 @@ # GitHub Codespace Quick Start -to get started with GoodMem lets create a few memories. + +This GitHub Codespace is a pre-configured development environment to help you start building with GoodMem immediately through the command line tool. -### prerequisites +**Please make sure to read the requirements section.** -you will need an openai api key for this quick start +To get started with GoodMem lets create a few memories by navigating to the [quick start instructions section](#quick-start-instructions). -if you do not want to use an openai api key, -please provide an api key from an embedding provider we support +> Note: If you would prefer to interact with GoodMem through a Jupyter Notebook or an SDK, please navigate to the [optional features section](#optional-features) -# GoodMem DevContainer +## Requirements -The **GoodMem DevContainer** is a pre-configured, zero-setup development environment designed to help you start building immediately. It includes all necessary SDKs, tools, and extensions in a single, consistent container image. +- An OpenAI API key (access at https://platform.openai.com/) +- A running GoodMem server (already setup) +- A GoodMem API key (already setup, access with `goodmem apikey list`) ---- +> If you do not want to use an OpenAI API key, please use an embedding provider we support +(Cohere, Jina, Voyage AI, vLLM, TEI, OpenAI) -## Features +# Quick Start Instructions -### Language Support -- **Python 3.10** โ€” includes the GoodMem SDK and OpenAI integration -- **Java 17** -- **.NET 9** -- **Go 1.22** -- **Node.js 20** with `pnpm` +By now you should have installed GoodMem through the devcontainer. Below is a tutorial on how to use the Goodmem CLI. -### Preinstalled Tooling -- **Visual Studio Code Extensions** โ€” language servers, formatters, linters, and productivity tools for all supported languages +**Please follow the instructions in order** ---- +1. **Launch The Terminal** -# Next Steps +The terminal is usually located on the bottom half of the screen and should say display text like `root@codespaces` -By now you should have installed GoodMem through the devcontainer. Below is a tutorial on how to use the Goodmem CLI. +If the terminal is not already open, you can launch the terminal in a few ways: + +- click the three bars (sandwich icon) at the top left of the screen -> View -> Terminal +- click the bottom left warning icon -> Terminal +- use keyboard shortcut `control + j` +- use keyboard shortcut ```control + ` ``` + +2. **Save Your GoodMem API Key** + +Copy paste this command, then copy and store your GoodMem API key. + +`goodmem apikey list` + +3. **Obtain your OpenAI API Key** from the [OpenAI dashboard](https://platform.openai.com/api-keys) and copy and store it. + +4. **Create an embedder** (must be created before a space): + +```bash +goodmem embedder create \ + --display-name "OpenAI Small Embedder" \ + --provider-type OPENAI \ + --endpoint-url "https://api.openai.com/v1" \ + --model-identifier "text-embedding-3-small" \ + --dimensionality 1536 \ + --credentials "YOUR_OPENAI_API_KEY_FROM_STEP_3" +``` +The command should output: + +> Embedder created successfully!\ +>\ +> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Display Name: OpenAI Small Embedder\ +> Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Provider Type: OPENAI\ +> Distribution: DENSE\ +> Endpoint URL: https://api.openai.com/v1\ +> API Path: /embeddings\ +> Model: text-embedding-3-small +> Dimensionality: 1536 +> Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +> Created at: 2025-08-20T21:09:00Z + +**SAVE THE ID** -1. In the logs, locate output similar to the following: - - ```text - Connecting to gRPC API at https://localhost:9090 - Using TLS with certificate verification disabled (insecure mode) - System initialized successfully - Root API key: gm_xxxxxxxxxxxxxxxxxxxxxxxx - User ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - ``` - -2. **Save Your Root API Key** - - The Root API Key `(gm_xxxxxxxxxxxxxxxxxxxxxxxx)` is shown only once. Itโ€™s best to copy and store it now. - You may also locate the `api_key` under `~/.goodmem/config.json` - -4. **Obtain your OpenAI API Key** from the [OpenAI dashboard](https://platform.openai.com/api-keys) and keep it ready for the next step. - -5. **Create an embedder** (must be created before a space): - - ```bash - goodmem embedder create \ - --display-name "OpenAI Small Embedder" \ - --provider-type OPENAI \ - --endpoint-url "https://api.openai.com/v1" \ - --model-identifier "text-embedding-3-small" \ - --dimensionality 1536 \ - --credentials "YOUR_OPENAI_API_KEY_FROM_STEP_3" - ``` - The command should output: - - > Embedder created successfully!\ - >\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Display Name: OpenAI Small Embedder\ - > Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Provider Type: OPENAI\ - > Distribution: DENSE\ - > Endpoint URL: https://api.openai.com/v1\ - > API Path: /embeddings\ - > Model: text-embedding-3-small - - **SAVE THE ID** - -6. **Create a space** linked to that embedder: - - ```bash - goodmem space create \ - --name "My OpenAI Small Space" \ - --embedder-id - ``` - - The command should output: - - > Space created successfully!\ - >\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Name: My OpenAI Small Space\ - > Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Created at: 2025-08-20T21:08:20Z\ - > Public: false\ - > Embedder: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (weight: 1.0) - - **SAVE THE ID** +5. **Create a space** linked to that embedder: + +```bash +goodmem space create \ + --name "My OpenAI Small Space" \ + --embedder-id YOUR_EMBEDDER_ID_FROM_STEP_4 +``` + +The command should output: + +> Space created successfully!\ +>\ +> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Name: My OpenAI Small Space\ +> Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Created at: 2025-08-20T21:08:20Z\ +> Public: false\ +> Embedder: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (weight: 1.0) + +**SAVE THE ID** 7. **Create an LLM**: - ```bash - goodmem llm create \ - --display-name "My GPT-4" \ - --provider-type OPENAI \ - --endpoint-url "https://api.openai.com/v1" \ - --model-identifier "gpt-4o" - ``` +```bash +goodmem llm create \ + --display-name "My GPT-4" \ + --provider-type OPENAI \ + --endpoint-url "https://api.openai.com/v1" \ + --model-identifier "gpt-4o" +``` - The command should output: +The command should output: - > LLM created successfully!\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Name: My GPT-4\ - > Provider: LLM_PROVIDER_TYPE_OPENAI\ - > Model: gpt-4o +> LLM created successfully!\ +> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Name: My GPT-4\ +> Provider: LLM_PROVIDER_TYPE_OPENAI\ +> Model: gpt-4o - **SAVE THE ID** +**SAVE THE ID** ### Testing the Queries -The next major step is to upload content into memory so it can be queried. To do this, we will first upload a PDF and store it in memory. After that, we will run some queries. Follow the directions below: +The next major step is to upload content into memory so it can be queried. +To do this, we will first upload a PDF and store it in memory. After that, we will run some queries. Follow the directions below: -1. **Begin by creating a memory.** In this case, I will be using this PDF, which I recommend you use as well for testing: +1. **Begin by creating a memory.** We will be using this pre-downloaded PDF: - [An Excellent Study of Social Media and Its Positive and Negative Effects on Human Beingโ€™s Mental Health](https://dr.lib.iastate.edu/server/api/core/bitstreams/8d3ccb03-cbc4-4b8a-b452-0ebccf0dde55/content) +An Excellent Study of Social Media and Its Positive and Negative Effects on Human Beingโ€™s Mental Health - Then run this command: +Then run this command: - ```bash - goodmem memory create \ - --space-id \ - --file "path to where you downloaded the pdf" \ - --content-type "application/pdf" - ``` +```bash +goodmem memory create \ + --space-id YOUR_SPACE_ID_FROM_STEP_5 \ + --file "social_media_study.pdf" \ + --content-type "application/pdf" +``` - It should output: +It should output: - > Memory created successfully!\ - >\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Space ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Content Type: application/pdf\ - > Status: PENDING\ - > Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Created at: 2025-08-20T21:20:00Z +> Memory created successfully!\ +>\ +> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Space ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Content Type: application/pdf\ +> Status: PENDING\ +> Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ +> Created at: 2025-08-20T21:20:00Z - **SAVE THE ID** (not the space ID since you already have that) +**SAVE THE ID** (not the space ID since you already have that) 2. To run a query, you have two options: non-interactive mode and interactive mode. - **Non-interactive mode:** - ```bash - goodmem memory retrieve \ - "what are the top three negative affects of social media?" \ - --space-id - ``` +**Non-interactive mode:** +```bash +goodmem memory retrieve \ + --space-id YOUR_SPACE_ID_FROM_STEP_5\ + "what are the top three negative affects of social media?" +``` + +**Interactive mode (easier to retrieve results):** + +```bash +goodmem memory retrieve \ + --space-id YOUR_SPACE_ID_FROM_STEP_5\ + --post-processor-interactive "what are the top three negative affects of social media?" +``` + +# Optional Features - **Interactive mode (easier to retrieve results):** +To enable optional features, follow the instructions below. +1. copy and paste this command in the terminal - ```bash - goodmem memory retrieve \ - --space-id \ - --post-processor-interactive "what are the top three negative affects of social media?" - ``` +`source feature-installer.sh` + +2. hit enter + +3. follow the installer instructions + +### Language Support +- **Python 3.10** โ€” includes the GoodMem SDK and OpenAI integration +- **Java 17** +- **.NET 9** +- **Go 1.22** +- **Node.js 20** with `pnpm` + +### Preinstalled Tooling +- **Visual Studio Code Extensions** โ€” language servers, formatters, linters, and productivity tools for all supported languages diff --git a/social_media_study.pdf b/social_media_study.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0928e2e7a2c2ea8fa556ef6f7c8ae043a60c035d GIT binary patch literal 327260 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

iR>s+h^38x)8LVpoi#>81CYekWb5ql@hzC*Dc2 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

  • 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

    ^!ZCafU8AO|U*Y!-t&-isKb3i6o) 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

    4&z_(-d^AUVi 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

    8^z<@Pv~oC2y*{Ngx;g4_-E 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 Date: Mon, 16 Mar 2026 16:43:22 -0700 Subject: [PATCH 03/17] adding sdk installer script --- .devcontainer/devcontainer.json | 2 +- README.md | 2 +- optional-feature-installer.sh | 90 +++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 2 deletions(-) create mode 100755 optional-feature-installer.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 54bb491..001259f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,7 +7,7 @@ // "image": "ghcr.io/pair-systems-inc/devcontainer-codespace:latest", // "postCreateCommand": "bash .devcontainer/setup.sh", - "postCreateCommand": "bash .devcontainer/post-setup.sh", + "postCreateCommand": "bash .devcontainer/post-setup.sh" // "features": { // "ghcr.io/devcontainers/features/docker-in-docker:2": {} diff --git a/README.md b/README.md index c046fa2..f534d94 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ goodmem memory retrieve \ To enable optional features, follow the instructions below. 1. copy and paste this command in the terminal -`source feature-installer.sh` +`source optional-feature-installer.sh` 2. hit enter diff --git a/optional-feature-installer.sh b/optional-feature-installer.sh new file mode 100755 index 0000000..a84ffeb --- /dev/null +++ b/optional-feature-installer.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +options=( + "Jupyter Notebook" + "Python SDK" + "Java SDK" + ".NET SDK" + "Go SDK" +) + +selected=0 +total=${#options[@]} + +print_menu() { + for i in "${!options[@]}"; do + if [ "$i" -eq "$selected" ]; then + echo " > ${options[$i]}" + else + echo " ${options[$i]}" + fi + done +} + +# Print header once +echo "" +echo "======================================" +echo " Welcome to GoodMem Dev Container" +echo "======================================" +echo "" +echo "Use UP/DOWN arrows to select, then press ENTER:" +echo "" + +# Print menu for the first time +print_menu + +while true; do + IFS= read -rsn1 key + if [[ $key == $'\x1b' ]]; then + read -rsn2 -t 0.1 key + case $key in + '[A') (( selected = (selected - 1 + total) % total )) ;; # Up + '[B') (( selected = (selected + 1) % total )) ;; # Down + *) continue ;; + esac + # Move cursor up $total lines and redraw only the menu + printf '\033[%dA' "$total" + print_menu + elif [[ $key == '' ]]; then + break # Enter + fi +done + +echo "" +echo "Selected: ${options[$selected]}" +echo "" + +case $selected in + 0) + echo "Starting Jupyter Lab..." + jupyter lab --ip=0.0.0.0 --no-browser --allow-root + ;; + 1) + echo "Starting Python with GoodMem SDK..." + echo " - SDK docs: https://docs.goodmem.ai/python" + echo " - Sample: src/test.py" + echo "" + python3 + ;; + 2) + echo "Java SDK selected." + echo " - SDK docs: https://docs.goodmem.ai/java" + echo " - Add to build.gradle:" + echo " implementation 'ai.goodmem:goodmem-client:'" + echo "" + ;; + 3) + echo ".NET SDK selected." + echo " - SDK docs: https://docs.goodmem.ai/dotnet" + echo " - Install package:" + echo " dotnet add package Pairsystems.GoodMem.Client" + echo "" + ;; + 4) + echo "Go SDK selected." + echo " - SDK docs: https://docs.goodmem.ai/go" + echo " - Install package:" + echo " go get github.com/PAIR-Systems-Inc/goodmem-go-client" + echo "" + ;; +esac From 4c23946c84da2fdea5da3eae3f7dacf9db9bb4b8 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Mon, 16 Mar 2026 17:34:28 -0700 Subject: [PATCH 04/17] addressing #4, modify goodmem installation command for cli to work on launch --- .devcontainer/Dockerfile | 14 +-- .devcontainer/devcontainer.json | 25 +++-- .devcontainer/post-setup.sh | 3 +- goodmem-samples | 1 + next.md | 165 -------------------------------- optional-feature-installer.sh | 4 + 6 files changed, 23 insertions(+), 189 deletions(-) create mode 160000 goodmem-samples delete mode 100644 next.md diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2ebe1d0..5500a83 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,16 +1,12 @@ FROM ubuntu:24.04 -# LABEL org.opencontainers.image.title="GoodMem Dev Environment" \ -# org.opencontainers.image.description="Minimal setup for developing with GoodMem APIs (Python + JS + .NET)" \ -# org.opencontainers.image.version="1.1.0" - - LABEL org.opencontainers.image.title="GoodMem Local Dev Env" \ - org.opencontainers.image.description="Minimal setup for developing with GoodMem APIs" \ +LABEL org.opencontainers.image.title="GoodMem Dev Environment" \ + org.opencontainers.image.description="Minimal setup for developing with GoodMem API through GoodMem CLI" \ org.opencontainers.image.version="1.2.0" SHELL ["/bin/bash", "-c"] -# Base deps +# Base dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ curl wget git unzip gnupg ca-certificates software-properties-common \ apt-transport-https sudo @@ -92,8 +88,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # go install golang.org/x/tools/gopls@latest # RUN gonb --install -# # APT clean up -# RUN rm -rf /var/lib/apt/lists/* +# APT clean up +RUN rm -rf /var/lib/apt/lists/* # Dev user # EDIT: DISABLED for now to avoid permission issues with mounted volumes diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 001259f..eb278cb 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,18 +7,15 @@ // "image": "ghcr.io/pair-systems-inc/devcontainer-codespace:latest", // "postCreateCommand": "bash .devcontainer/setup.sh", - "postCreateCommand": "bash .devcontainer/post-setup.sh" - - // "features": { - // "ghcr.io/devcontainers/features/docker-in-docker:2": {} - // }, - // "customizations": { - // "vscode": { - // "extensions": [ - // // "ms-python.python", - // // "ms-vscode.vscode-docker", - // // "ms-toolsai.jupyter" - // ] - // } - // } + "postCreateCommand": "bash .devcontainer/post-setup.sh", + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:2": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-vscode.vscode-docker" + ] + } + } } diff --git a/.devcontainer/post-setup.sh b/.devcontainer/post-setup.sh index 49c90fe..5fc2ca5 100755 --- a/.devcontainer/post-setup.sh +++ b/.devcontainer/post-setup.sh @@ -14,7 +14,8 @@ fi # 1. Initialize GoodMem (binary already installed in image; re-run installer to set up DB and API key) echo "Initializing GoodMem..." -curl -s https://get.goodmem.ai | bash -s -- --handsfree --db-password "hjsaFGDGHS1726HSBD" +curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "my-secure-password" +# curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "hjsaFGDGHS1726HSBD" # 2. Extract API key and add to ~/.bashrc echo "Configuring GoodMem API key..." diff --git a/goodmem-samples b/goodmem-samples new file mode 160000 index 0000000..8729bfc --- /dev/null +++ b/goodmem-samples @@ -0,0 +1 @@ +Subproject commit 8729bfc8bf7403b66b352cc16ef03f12a69f36a6 diff --git a/next.md b/next.md deleted file mode 100644 index 892ceb9..0000000 --- a/next.md +++ /dev/null @@ -1,165 +0,0 @@ -# Next Steps - -By now you should have installed GoodMem, either manually or through the devcontainer. If you have not completed this step, please proceed with the installation. - -### Devcontainer Setup (Skip if you installed GoodMem manually) - -1. Click below to open a Codespace using the GoodMem template repository: - - [Open Codespace](https://github.com/codespaces/new?repo=PAIR-Systems-Inc/devcontainer-codespace) - - -2. After your Codespace launches, check the **bottom-left corner** of VS Code. Click on the `Codespaces: [name]` badge and choose **View Creation Logs**. - -### Configuration Steps - -1. In the logs, locate output similar to the following: - - ```text - Connecting to gRPC API at https://localhost:9090 - Using TLS with certificate verification disabled (insecure mode) - System initialized successfully - Root API key: gm_xxxxxxxxxxxxxxxxxxxxxxxx - User ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - ``` - -2. **Save Your Root API Key**\ - - The Root API Key `(gm_xxxxxxxxxxxxxxxxxxxxxxxx)` is shown only once. Itโ€™s best to copy and store it now. - -4. **Obtain your OpenAI API Key** from the [OpenAI dashboard](https://platform.openai.com/api-keys) and keep it ready for the next step. - -5. **Create an embedder** (must be created before a space): - - ```bash - goodmem embedder create \ - --display-name "OpenAI Small Embedder" \ - --provider-type OPENAI \ - --endpoint-url "https://api.openai.com/v1" \ - --model-identifier "text-embedding-3-small" \ - --dimensionality 1536 \ - --credentials "YOUR_OPENAI_API_KEY_FROM_STEP_3" - ``` - The command should output: - - > Embedder created successfully!\ - >\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Display Name: OpenAI Small Embedder\ - > Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Provider Type: OPENAI\ - > Distribution: DENSE\ - > Endpoint URL: https://api.openai.com/v1\ - > API Path: /embeddings\ - > Model: text-embedding-3-small - - **SAVE THE ID** - -6. **Create a space** linked to that embedder: - - ```bash - goodmem space create \ - --name "My OpenAI Small Space" \ - --embedder-id - ``` - - The command should output: - - > Space created successfully!\ - >\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Name: My OpenAI Small Space\ - > Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Created at: 2025-08-20T21:08:20Z\ - > Public: false\ - > Embedder: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (weight: 1.0) - - **SAVE THE ID** - -7. **Create an LLM**: - - ```bash - goodmem llm create \ - --display-name "My GPT-4" \ - --provider-type OPENAI \ - --endpoint-url "https://api.openai.com/v1" \ - --model-identifier "gpt-4o" - ``` - - The command should output: - - > LLM created successfully!\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Name: My GPT-4\ - > Provider: LLM_PROVIDER_TYPE_OPENAI\ - > Model: gpt-4o - - **SAVE THE ID** - -### Testing the Queries - -The next major step is to upload content into memory so it can be queried. To do this, we will first upload a PDF and store it in memory. After that, we will run some queries. Follow the directions below: - -1. **Begin by creating a memory.** In this case, I will be using this PDF, which I recommend you use as well for testing: - - [An Excellent Study of Social Media and Its Positive and Negative Effects on Human Beingโ€™s Mental Health](https://dr.lib.iastate.edu/server/api/core/bitstreams/8d3ccb03-cbc4-4b8a-b452-0ebccf0dde55/content) - - - Then run this command: - - ```bash - goodmem memory create \ - --space-id \ - --file "path to where you downloaded the pdf" \ - --content-type "application/pdf" - ``` - - It should output: - - > Memory created successfully!\ - >\ - > ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Space ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Content Type: application/pdf\ - > Status: PENDING\ - > Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ - > Created at: 2025-08-20T21:20:00Z - - **SAVE THE ID** (not the space ID since you already have that) - -2. To run a query, you have two options: non-interactive mode and interactive mode. - - **Non-interactive mode:** - ```bash - goodmem memory retrieve \ - "what are the top three negative affects of social media?" \ - --space-id - ``` - - **Interactive mode (easier to retrieve results):** - - ```bash - goodmem memory retrieve \ - --space-id \ - --post-processor-interactive "what are the top three negative affects of social media?" - ``` - - -### Next Step: Test Your SDK (for devcontainer) - -**Setup your environment**: - -1. Obtain your **OpenAI API Key** from the OpenAI dashboard and paste it into the `.env` file that was automatically generated in your workspace. Also paste the Root API key from step 4. - - Example `.env` file: - - ```env - OPENAI_API_KEY=sk-... - ADD_API_KEY=gm_xxxxxxxxxxxxxxxxxxxxxxxx - ``` - -**Verify your setup**: -- Navigate to the `src/test/` directory -- Choose a test in your preferred language (Python, Java, Go, etc.) -- Run it and confirm that it connects successfully to the local GoodMem server and returns the expected output diff --git a/optional-feature-installer.sh b/optional-feature-installer.sh index a84ffeb..d9f4921 100755 --- a/optional-feature-installer.sh +++ b/optional-feature-installer.sh @@ -56,10 +56,14 @@ echo "" case $selected in 0) + echo "Installing Jupyter VS Code extension..." + code --install-extension ms-toolsai.jupyter 2>/dev/null || true echo "Starting Jupyter Lab..." jupyter lab --ip=0.0.0.0 --no-browser --allow-root ;; 1) + echo "Installing Python VS Code extension..." + code --install-extension ms-python.python 2>/dev/null || true echo "Starting Python with GoodMem SDK..." echo " - SDK docs: https://docs.goodmem.ai/python" echo " - Sample: src/test.py" From 5d0c41d29b0a353529b35edd7751a308c80237dc Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Mon, 16 Mar 2026 17:53:02 -0700 Subject: [PATCH 05/17] updating launch ux --- .devcontainer/post-setup.sh | 4 ++++ README.md | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.devcontainer/post-setup.sh b/.devcontainer/post-setup.sh index 5fc2ca5..34d4b25 100755 --- a/.devcontainer/post-setup.sh +++ b/.devcontainer/post-setup.sh @@ -39,10 +39,14 @@ fi echo "=== Post-setup script completed ===" +echo "=====================================" +echo "=====================================" echo "=====================================" echo " " echo "Welcome to the GoodMem Dev Container! ๐ŸŽ‰" echo "Click on the README.md file to get started!" echo " " echo "=====================================" +echo "=====================================" +echo "=====================================" diff --git a/README.md b/README.md index f534d94..7bfce49 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,17 @@ # GitHub Codespace Quick Start + - This GitHub Codespace is a pre-configured development environment to help you start building with GoodMem immediately through the command line tool. **Please make sure to read the requirements section.** -To get started with GoodMem lets create a few memories by navigating to the [quick start instructions section](#quick-start-instructions). +To get started with GoodMem navigate to the [quick start instructions section](#quick-start-instructions). > Note: If you would prefer to interact with GoodMem through a Jupyter Notebook or an SDK, please navigate to the [optional features section](#optional-features) From b5afa9450a6449a502229137c41bac9e0a612cac Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Mon, 16 Mar 2026 18:07:06 -0700 Subject: [PATCH 06/17] cleaning post setup script and: goodmem-samples will only be installed if user selects jupyter notebook on optional features installation --- .devcontainer/post-setup.sh | 18 ++++-------------- goodmem-samples | 1 - optional-feature-installer.sh | 10 ++++++++++ 3 files changed, 14 insertions(+), 15 deletions(-) delete mode 160000 goodmem-samples diff --git a/.devcontainer/post-setup.sh b/.devcontainer/post-setup.sh index 34d4b25..6e65606 100755 --- a/.devcontainer/post-setup.sh +++ b/.devcontainer/post-setup.sh @@ -1,17 +1,7 @@ #!/bin/bash -# set -e echo "=== Post-setup script started ===" -# 0. Clone the goodmem-samples repository -GOODMEM_REPO_DIR="goodmem-samples" -if [ ! -d "$GOODMEM_REPO_DIR" ]; then - git clone https://github.com/PAIR-Systems-Inc/goodmem-samples.git "$GOODMEM_REPO_DIR" - echo "GoodMem repository cloned to $GOODMEM_REPO_DIR" -else - echo "GoodMem repository already exists at $GOODMEM_REPO_DIR" -fi - # 1. Initialize GoodMem (binary already installed in image; re-run installer to set up DB and API key) echo "Initializing GoodMem..." curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "my-secure-password" @@ -19,8 +9,8 @@ curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "my-secu # 2. Extract API key and add to ~/.bashrc echo "Configuring GoodMem API key..." -if [ -f ~/.goodmem/config.json ]; then - API_KEY=$(grep -o '"api_key"[[:space:]]*:[[:space:]]*"[^"]*"' ~/.goodmem/config.json | cut -d'"' -f4) +if [ -f ~/.goodmem/config.toml ]; then + API_KEY=$(grep -o '"api_key"[[:space:]]*:[[:space:]]*"[^"]*"' ~/.goodmem/config.toml | cut -d'"' -f4) if [ -n "$API_KEY" ]; then if ! grep -q "GOODMEM_API_KEY" ~/.bashrc; then echo "export GOODMEM_API_KEY=\"$API_KEY\"" >> ~/.bashrc @@ -30,10 +20,10 @@ if [ -f ~/.goodmem/config.json ]; then fi echo "***REMEMBER GOODMEM_API_KEY=\"$API_KEY\"***" else - echo "Warning: Could not extract api_key from config.json" + echo "Warning: Could not extract api_key from config.toml" fi else - echo "Warning: ~/.goodmem/config.json not found" + echo "Warning: ~/.goodmem/config.toml not found" fi diff --git a/goodmem-samples b/goodmem-samples deleted file mode 160000 index 8729bfc..0000000 --- a/goodmem-samples +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8729bfc8bf7403b66b352cc16ef03f12a69f36a6 diff --git a/optional-feature-installer.sh b/optional-feature-installer.sh index d9f4921..42104e8 100755 --- a/optional-feature-installer.sh +++ b/optional-feature-installer.sh @@ -59,6 +59,16 @@ case $selected in echo "Installing Jupyter VS Code extension..." code --install-extension ms-toolsai.jupyter 2>/dev/null || true echo "Starting Jupyter Lab..." + + # clone the goodmem-samples repository + GOODMEM_REPO_DIR="goodmem-samples" + if [ ! -d "$GOODMEM_REPO_DIR" ]; then + git clone https://github.com/PAIR-Systems-Inc/goodmem-samples.git "$GOODMEM_REPO_DIR" + echo "GoodMem repository cloned to $GOODMEM_REPO_DIR" + else + echo "GoodMem repository already exists at $GOODMEM_REPO_DIR" + fi + jupyter lab --ip=0.0.0.0 --no-browser --allow-root ;; 1) From ed2ac51d192ab26d504d76bf1b3950bc01fc56b4 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Tue, 17 Mar 2026 14:30:04 -0700 Subject: [PATCH 07/17] fixing api key logic and polishing readme --- .devcontainer/post-setup.sh | 6 +++--- README.md | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.devcontainer/post-setup.sh b/.devcontainer/post-setup.sh index 6e65606..c2e255c 100755 --- a/.devcontainer/post-setup.sh +++ b/.devcontainer/post-setup.sh @@ -2,15 +2,15 @@ echo "=== Post-setup script started ===" -# 1. Initialize GoodMem (binary already installed in image; re-run installer to set up DB and API key) -echo "Initializing GoodMem..." +# 1. Install GoodMem and initialize (create root user and generate API key while saving it to config.toml) +echo "Installing GoodMem..." curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "my-secure-password" # curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "hjsaFGDGHS1726HSBD" # 2. Extract API key and add to ~/.bashrc echo "Configuring GoodMem API key..." if [ -f ~/.goodmem/config.toml ]; then - API_KEY=$(grep -o '"api_key"[[:space:]]*:[[:space:]]*"[^"]*"' ~/.goodmem/config.toml | cut -d'"' -f4) + API_KEY=$(grep "^api_key" ~/.goodmem/config.toml | cut -d"'" -f2) if [ -n "$API_KEY" ]; then if ! grep -q "GOODMEM_API_KEY" ~/.bashrc; then echo "export GOODMEM_API_KEY=\"$API_KEY\"" >> ~/.bashrc diff --git a/README.md b/README.md index 7bfce49..05df0fb 100644 --- a/README.md +++ b/README.md @@ -31,16 +31,22 @@ By now you should have installed GoodMem through the devcontainer. Below is a tu **Please follow the instructions in order** -1. **Launch The Terminal** +1. **Setup The Terminal** -The terminal is usually located on the bottom half of the screen and should say display text like `root@codespaces` +The terminal is usually located on the bottom half of the screen and should display the text `root@codespaces` If the terminal is not already open, you can launch the terminal in a few ways: - click the three bars (sandwich icon) at the top left of the screen -> View -> Terminal - click the bottom left warning icon -> Terminal -- use keyboard shortcut `control + j` -- use keyboard shortcut ```control + ` ``` +- use the keyboard shortcut `control + j` +- use the keyboard shortcut ```control + ` ``` + +If the terminal is open but it does not display the text `root@codespaces` you can do the following to open a new terminal: + +- click the '+' sign at the top right of the terminal +- use the keyboard shortcut ```control + shift + ` ``` +- use the keyboard shortcut `control + shift + c` 2. **Save Your GoodMem API Key** @@ -158,7 +164,7 @@ It should output: **Non-interactive mode:** ```bash goodmem memory retrieve \ - --space-id YOUR_SPACE_ID_FROM_STEP_5\ + --space-id YOUR_SPACE_ID_FROM_STEP_5 \ "what are the top three negative affects of social media?" ``` @@ -166,7 +172,7 @@ goodmem memory retrieve \ ```bash goodmem memory retrieve \ - --space-id YOUR_SPACE_ID_FROM_STEP_5\ + --space-id YOUR_SPACE_ID_FROM_STEP_5 \ --post-processor-interactive "what are the top three negative affects of social media?" ``` From d1123126bc25166d450fb2e10c91c13442728d94 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Tue, 17 Mar 2026 18:16:55 -0700 Subject: [PATCH 08/17] removed unnecessary sdk files: added dependency, sdk, and package installations support in the optional features installation script supports python, java, go, and .NET --- .devcontainer/Dockerfile | 41 +--- .devcontainer/optional-feature-installer.sh | 224 ++++++++++++++++++++ .devcontainer/setup.sh | 56 ----- README.md | 148 +++++++------ optional-feature-installer.sh | 104 --------- package.json | 14 -- src/test.js | 108 ---------- src/test.py | 102 --------- 8 files changed, 319 insertions(+), 478 deletions(-) create mode 100755 .devcontainer/optional-feature-installer.sh delete mode 100755 optional-feature-installer.sh delete mode 100644 package.json delete mode 100644 src/test.js delete mode 100644 src/test.py diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 5500a83..2e19787 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -11,30 +11,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ curl wget git unzip gnupg ca-certificates software-properties-common \ apt-transport-https sudo # build-essential apt-transport-https sudo \ - # python3 python3-venv python3-pip python3-dev \ - # libffi-dev libssl-dev libpq-dev cargo + # libffi-dev libssl-dev libpq-dev cargo \ + # python3 python3-venv python3-pip python3-dev # # Node.js 20 # RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ # apt-get install -y nodejs -# # .NET SDK 9.0 -# RUN add-apt-repository ppa:dotnet/backports && \ -# apt-get update && \ -# apt-get install -y dotnet-sdk-9.0 - -# #Go -# ARG GO_VERSION=1.24.6 -# RUN curl -fsSL https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz -o /tmp/go.tgz \ -# && rm -rf /usr/local/go \ -# && tar -C /usr/local -xzf /tmp/go.tgz \ -# && rm /tmp/go.tgz -# ENV GOROOT=/usr/local/go -# ENV GOPATH=/home/vscode/go -# ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH -# # quick sanity -# RUN go version - # # ---- Java (OpenJDK 21) ---- # RUN apt-get install -y --no-install-recommends \ # openjdk-21-jdk \ @@ -52,18 +35,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # && rm -f /tmp/gradle.zip # ENV PATH="/opt/gradle/bin:${PATH}" - # # quick sanity # RUN gradle -v -# # Python defaults -# RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 -# ENV PIP_DISABLE_PIP_VERSION_CHECK=1 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 -# # Global Python deps -# RUN pip install --no-cache-dir --break-system-packages \ -# goodmem_client openai requests python-dotenv \ -# jupyter lab +### JUPYTER KERNELS (optional, for users who want to use Jupyter notebooks in the container) # # Dotnet Interactive (for Jupyter) # RUN dotnet tool install --global Microsoft.dotnet-interactive @@ -88,9 +64,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # go install golang.org/x/tools/gopls@latest # RUN gonb --install -# APT clean up -RUN rm -rf /var/lib/apt/lists/* - # Dev user # EDIT: DISABLED for now to avoid permission issues with mounted volumes # RUN useradd -m -s /bin/bash vscode && \ @@ -99,12 +72,10 @@ RUN rm -rf /var/lib/apt/lists/* # mkdir -p /home/vscode/.goodmem/data/database && \ # chown -R vscode:vscode /home/vscode/.goodmem +# APT clean up +RUN rm -rf /var/lib/apt/lists/* + # USER vscode # # Use Codespaces default; the repo will be mounted at /workspaces/ # WORKDIR /workspaces - -# # Create Python virtual environment and activate it by default -# RUN python3 -m venv /opt/venv -# ENV PATH="/opt/venv/bin:$PATH" -# ENV VIRTUAL_ENV="/opt/venv" diff --git a/.devcontainer/optional-feature-installer.sh b/.devcontainer/optional-feature-installer.sh new file mode 100755 index 0000000..8adfc5b --- /dev/null +++ b/.devcontainer/optional-feature-installer.sh @@ -0,0 +1,224 @@ +#!/bin/bash + +# This script provides an interactive menu for users to choose which GoodMem SDK or tool they want install in the dev container. + +# Logic for printing menu +options=( + "Jupyter Notebook" + "Python SDK" + "Java SDK" + ".NET SDK" + "Go SDK" +) + +selected=0 +total=${#options[@]} + +print_menu() { + for i in "${!options[@]}"; do + if [ "$i" -eq "$selected" ]; then + echo " > ${options[$i]}" + else + echo " ${options[$i]}" + fi + done +} + +# Print header once +echo "" +echo "======================================" +echo " Welcome to GoodMem Dev Container" +echo "======================================" +echo "" +echo "Use UP/DOWN arrows to select, then press ENTER:" +echo "" + +# Print menu for the first time +print_menu + +while true; do + IFS= read -rsn1 key + if [[ $key == $'\x1b' ]]; then + read -rsn2 -t 0.1 key + case $key in + '[A') (( selected = (selected - 1 + total) % total )) ;; # Up + '[B') (( selected = (selected + 1) % total )) ;; # Down + *) continue ;; + esac + # Move cursor up $total lines and redraw only the menu + printf '\033[%dA' "$total" + print_menu + elif [[ $key == '' ]]; then + break # Enter + fi +done + +echo "" +echo "Selected: ${options[$selected]}" +echo "" + +case $selected in + 0) + echo "Installing Jupyter VS Code extension..." + code --install-extension ms-toolsai.jupyter 2>/dev/null || true + echo "Starting Jupyter Lab..." + + # clone the goodmem-samples repository + GOODMEM_REPO_DIR="goodmem-samples" + if [ ! -d "$GOODMEM_REPO_DIR" ]; then + git clone https://github.com/PAIR-Systems-Inc/goodmem-samples.git "$GOODMEM_REPO_DIR" + echo "GoodMem repository cloned to $GOODMEM_REPO_DIR" + else + echo "GoodMem repository already exists at $GOODMEM_REPO_DIR" + fi + + jupyter lab --ip=0.0.0.0 --no-browser --allow-root + ;; + 1) + echo "Installing Python VS Code extension..." + code --install-extension ms-python.python 2>/dev/null || true + + echo "Installing Python dependencies..." + sudo apt-get install -y --no-install-recommends \ + build-essential python3-pip python3-dev \ + libffi-dev libssl-dev + sudo rm -rf /var/lib/apt/lists/* + sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1 + + echo "Installing Python SDK packages..." + pip install --no-cache-dir --break-system-packages goodmem_client openai requests python-dotenv + # jupyter lab + echo "Python environment ready" + ;; + 2) + echo "Installing Java (OpenJDK 21) and Gradle 8.9..." + sudo apt-get update && sudo apt-get install -y --no-install-recommends openjdk-21-jdk + sudo rm -rf /var/lib/apt/lists/* + + export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 + export PATH="$JAVA_HOME/bin:$PATH" + + curl -fsSL https://services.gradle.org/distributions/gradle-8.9-bin.zip -o /tmp/gradle.zip + sudo unzip -q /tmp/gradle.zip -d /opt + sudo ln -sf /opt/gradle-8.9 /opt/gradle + rm -f /tmp/gradle.zip + export PATH="/opt/gradle/bin:$PATH" + + if ! grep -q 'JAVA_HOME' ~/.bashrc; then + cat >> ~/.bashrc <<'JAVAEOF' +export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 +export PATH="$JAVA_HOME/bin:/opt/gradle/bin:$PATH" +JAVAEOF + fi + + java -version + gradle -v + + echo "Creating Java sample app with GoodMem client..." + mkdir -p src + JAVA_APP_DIR="src/GoodMemJavaApp" + + if [ ! -d "$JAVA_APP_DIR" ]; then + mkdir -p "$JAVA_APP_DIR" + cd "$JAVA_APP_DIR" + + printf "1\n" | gradle -q init \ + --type java-application \ + --dsl kotlin \ + --test-framework junit \ + --project-name GoodMemJavaApp \ + --package com.pairsystems.goodmem.sample \ + --java-version 21 + + if [ -f "build.gradle.kts" ]; then + awk '1;/dependencies *\{/ && !x{print " implementation(\"com.pairsystems:goodmem-client:1.0.0\")"; x=1}' \ + build.gradle.kts > build.gradle.kts.tmp && mv build.gradle.kts.tmp build.gradle.kts + fi + else + cd "$JAVA_APP_DIR" + fi + + ./gradlew --no-daemon build || echo "WARN: build failed (artifact may not be published yet)" + cd - >/dev/null + + echo "Java environment ready" + echo " - Sample app: $JAVA_APP_DIR" + ;; + 3) + echo "Installing .NET SDK 8.0..." + sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0 + sudo rm -rf /var/lib/apt/lists/* + echo "Creating .NET sample app with GoodMem client..." + mkdir -p src + DOTNET_APP_DIR="src/GoodMemDotnetApp" + if [ ! -d "$DOTNET_APP_DIR" ]; then + dotnet new console -o "$DOTNET_APP_DIR" -n GoodMemDotnetApp + ( cd "$DOTNET_APP_DIR" && dotnet add package Pairsystems.Goodmem.Client ) + fi + ( cd "$DOTNET_APP_DIR" && dotnet restore && dotnet build ) + + echo ".NET environment ready" + echo " - Sample app: $DOTNET_APP_DIR" + ;; + 4) + echo "Installing Go 1.24.6..." + GO_VERSION=1.24.6 + curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -o /tmp/go.tgz + sudo rm -rf /usr/local/go + sudo tar -C /usr/local -xzf /tmp/go.tgz + rm /tmp/go.tgz + + export GOROOT=/usr/local/go + export GOPATH="$HOME/go" + export PATH="$GOROOT/bin:$GOPATH/bin:$PATH" + + if ! grep -q 'GOROOT' ~/.bashrc; then + cat >> ~/.bashrc <<'GOEOF' +export GOROOT=/usr/local/go +export GOPATH="$HOME/go" +export PATH="$GOROOT/bin:$GOPATH/bin:$PATH" +GOEOF + fi + + go version + + echo "Creating Go sample app with GoodMem client..." + mkdir -p src + GO_APP_DIR="src/GoodMemGoApp" + GO_SDK_MOD="github.com/PAIR-Systems-Inc/goodmem/clients/go@v1.0.10" + + if [ ! -d "$GO_APP_DIR" ]; then + mkdir -p "$GO_APP_DIR" + fi + + cd "$GO_APP_DIR" + + if [ ! -f go.mod ]; then + go mod init goodmem-app + fi + + go get "$GO_SDK_MOD" + + if [ ! -f main.go ]; then + cat > main.go <<'EOF' +package main + +import ( + "fmt" + _ "github.com/PAIR-Systems-Inc/goodmem/clients/go" +) + +func main() { + fmt.Println("Go SDK wired; import ok") +} +EOF + fi + + go mod tidy + go build ./... + cd - >/dev/null # is this line logical + + echo "Go environment ready" + echo " - Sample app: $GO_APP_DIR" + ;; +esac diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh index 91d6fb0..935a96b 100644 --- a/.devcontainer/setup.sh +++ b/.devcontainer/setup.sh @@ -6,63 +6,7 @@ echo "[setup.sh] start PWD=$(pwd) USER=$(whoami)" BASE_DIR="src" mkdir -p "$BASE_DIR" -########## .NET sample (GoodMemDotnetApp) ########## -DOTNET_APP_DIR="$BASE_DIR/GoodMemDotnetApp" -if [[ ! -d "$DOTNET_APP_DIR" ]]; then - echo "[setup.sh] creating $DOTNET_APP_DIR" - dotnet new console -o "$DOTNET_APP_DIR" -n GoodMemDotnetApp - ( cd "$DOTNET_APP_DIR" && dotnet add package Pairsystems.Goodmem.Client ) -else - echo "[setup.sh] $DOTNET_APP_DIR exists; skipping scaffold" -fi - -echo "[setup.sh] restoring/building GoodMemDotnetApp" -( cd "$DOTNET_APP_DIR" && dotnet restore && dotnet build ) - -########## Go sample (GoodMemGoApp) ########## -if command -v go >/dev/null 2>&1; then - GO_APP_DIR="$BASE_DIR/GoodMemGoApp" - GO_SDK_MOD="github.com/PAIR-Systems-Inc/goodmem/clients/go@v1.0.10" - - if [[ ! -d "$GO_APP_DIR" ]]; then - echo "[setup.sh] creating $GO_APP_DIR" - mkdir -p "$GO_APP_DIR" - fi - - pushd "$GO_APP_DIR" >/dev/null - - if [[ ! -f go.mod ]]; then - echo "[setup.sh] go mod init goodmem-app" - go mod init goodmem-app - fi - echo "[setup.sh] ensuring Go SDK: $GO_SDK_MOD" - go get "$GO_SDK_MOD" - - if [[ ! -f main.go ]]; then - echo "[setup.sh] writing main.go" - cat > main.go <<'EOF' -package main - -import ( - "fmt" - _ "github.com/PAIR-Systems-Inc/goodmem/clients/go" -) - -func main() { - fmt.Println("Go SDK wired; import ok") -} -EOF - fi - - echo "[setup.sh] go mod tidy && go build" - go mod tidy - go build ./... - - popd >/dev/null -else - echo "[setup.sh] Go not installed; skipping GoodMemGoApp" -fi ########## Java sample (GoodMemJavaApp via Gradle) ########## if command -v javac >/dev/null 2>&1; then diff --git a/README.md b/README.md index 05df0fb..efbe78b 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ To get started with GoodMem navigate to the [quick start instructions section](# > Note: If you would prefer to interact with GoodMem through a Jupyter Notebook or an SDK, please navigate to the [optional features section](#optional-features) - ## Requirements - An OpenAI API key (access at https://platform.openai.com/) @@ -27,32 +26,37 @@ To get started with GoodMem navigate to the [quick start instructions section](# # Quick Start Instructions -By now you should have installed GoodMem through the devcontainer. Below is a tutorial on how to use the Goodmem CLI. +Below is a tutorial on how to use the Goodmem CLI (command line interface). + +You can use `control + c`, `control + shift + c`, `control + v`, and `control + shift + v` to copy paste commands for the tutorial below. **Please follow the instructions in order** 1. **Setup The Terminal** -The terminal is usually located on the bottom half of the screen and should display the text `root@codespaces` +The terminal is usually located on the bottom half of the screen and should display the text `devcontainer-codespace` If the terminal is not already open, you can launch the terminal in a few ways: -- click the three bars (sandwich icon) at the top left of the screen -> View -> Terminal -- click the bottom left warning icon -> Terminal - use the keyboard shortcut `control + j` - use the keyboard shortcut ```control + ` ``` +- click the bottom left warning icon -> Terminal +- click the three horizontal bars at the top left of the screen -> Terminal -> New Terminal +- click the three horizontal bars at the top left of the screen -> View -> Terminal -If the terminal is open but it does not display the text `root@codespaces` you can do the following to open a new terminal: +If the terminal is open but it does not display the text `devcontainer-codespace` try these options to open a new terminal: -- click the '+' sign at the top right of the terminal - use the keyboard shortcut ```control + shift + ` ``` -- use the keyboard shortcut `control + shift + c` +- click the '+' sign at the top right of the terminal +- click the three bars (sandwich icon) at the top left of the screen -> Terminal -> New Terminal 2. **Save Your GoodMem API Key** -Copy paste this command, then copy and store your GoodMem API key. +Copy paste this command into the terminal using `control + shift + v`. -`goodmem apikey list` +`grep key ~/.goodmem/config.toml` + +Copy and store the value, this is your GoodMem API key. 3. **Obtain your OpenAI API Key** from the [OpenAI dashboard](https://platform.openai.com/api-keys) and copy and store it. @@ -65,23 +69,25 @@ goodmem embedder create \ --endpoint-url "https://api.openai.com/v1" \ --model-identifier "text-embedding-3-small" \ --dimensionality 1536 \ - --credentials "YOUR_OPENAI_API_KEY_FROM_STEP_3" + --cred-api-key "YOUR_OPENAI_API_KEY_FROM_STEP_3" ``` The command should output: -> Embedder created successfully!\ ->\ -> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Display Name: OpenAI Small Embedder\ -> Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Provider Type: OPENAI\ -> Distribution: DENSE\ -> Endpoint URL: https://api.openai.com/v1\ -> API Path: /embeddings\ -> Model: text-embedding-3-small -> Dimensionality: 1536 -> Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -> Created at: 2025-08-20T21:09:00Z +``` +Embedder created successfully! + +ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Display Name: OpenAI Small Embedder +Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Provider Type: OPENAI +Distribution: DENSE +Endpoint URL: https://api.openai.com/v1 +API Path: /embeddings +Model: text-embedding-3-small +Dimensionality: 1536 +Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Created at: 2026-03-17T22:51:57Z +``` **SAVE THE ID** @@ -95,15 +101,17 @@ goodmem space create \ The command should output: -> Space created successfully!\ ->\ -> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Name: My OpenAI Small Space\ -> Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Created at: 2025-08-20T21:08:20Z\ -> Public: false\ -> Embedder: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (weight: 1.0) +``` +Space created successfully! + +ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Name: My OpenAI Small Space +Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Created at: 2026-03-17T23:04:06Z +Public: false +Embedder: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (weight: 1) +``` **SAVE THE ID** @@ -119,43 +127,65 @@ goodmem llm create \ The command should output: -> LLM created successfully!\ -> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Name: My GPT-4\ -> Provider: LLM_PROVIDER_TYPE_OPENAI\ -> Model: gpt-4o +``` +LLM created successfully! + +ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Display Name: My GPT-4 +Owner: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Provider Type: OPENAI +Endpoint URL: https://api.openai.com/v1 +API Path: /chat/completions +Model: gpt-4o +Modalities: TEXT +Capabilities: Chat, Completion, Functions, System Messages, Streaming, Sampling Parameters +Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Created at: 2026-03-17T23:06:04Z + +Capability Inference: + โœ“ Chat Support: true (detected from model family 'gpt-4o') + โœ“ Completion Support: true (detected from model family 'gpt-4o') + โœ“ Function Calling: true (detected from model family 'gpt-4o') + โœ“ System Messages: true (detected from model family 'gpt-4o') + โœ“ Streaming: true (detected from model family 'gpt-4o') + โœ“ Sampling Parameters: true (detected from model family 'gpt-4o') +``` **SAVE THE ID** -### Testing the Queries +## Testing the Queries The next major step is to upload content into memory so it can be queried. -To do this, we will first upload a PDF and store it in memory. After that, we will run some queries. Follow the directions below: +To do this, we will first upload a PDF and store it in memory. After that, we will run some queries. 1. **Begin by creating a memory.** We will be using this pre-downloaded PDF: -An Excellent Study of Social Media and Its Positive and Negative Effects on Human Beingโ€™s Mental Health - +### An Excellent Study of Social Media and Its Positive and Negative Effects on Human Beingโ€™s Mental Health Then run this command: ```bash goodmem memory create \ - --space-id YOUR_SPACE_ID_FROM_STEP_5 \ --file "social_media_study.pdf" \ - --content-type "application/pdf" + --content-type "application/pdf" \ + --space-id YOUR_SPACE_ID_FROM_STEP_5 ``` It should output: -> Memory created successfully!\ ->\ -> ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Space ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Content Type: application/pdf\ -> Status: PENDING\ -> Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ -> Created at: 2025-08-20T21:20:00Z +``` +Memory created successfully! + +ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Space ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Content Type: application/pdf +Page images: enabled +Status: PENDING +Created by: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +Created at: 2026-03-17T23:18:33Z +Metadata: + filename: social_media_study.pdf +``` **SAVE THE ID** (not the space ID since you already have that) @@ -164,16 +194,16 @@ It should output: **Non-interactive mode:** ```bash goodmem memory retrieve \ - --space-id YOUR_SPACE_ID_FROM_STEP_5 \ - "what are the top three negative affects of social media?" + "what are the top three negative affects of social media?" \ + --space-id YOUR_SPACE_ID_FROM_STEP_5 ``` **Interactive mode (easier to retrieve results):** ```bash goodmem memory retrieve \ - --space-id YOUR_SPACE_ID_FROM_STEP_5 \ - --post-processor-interactive "what are the top three negative affects of social media?" + --post-processor-interactive "what are the top three negative affects of social media?" \ + --space-id YOUR_SPACE_ID_FROM_STEP_5 ``` # Optional Features @@ -181,14 +211,14 @@ goodmem memory retrieve \ To enable optional features, follow the instructions below. 1. copy and paste this command in the terminal -`source optional-feature-installer.sh` +`source .devcontainer/optional-feature-installer.sh` 2. hit enter 3. follow the installer instructions -### Language Support -- **Python 3.10** โ€” includes the GoodMem SDK and OpenAI integration +### optional features Language Support +- **Python 3.10** - includes the GoodMem SDK and OpenAI integration - **Java 17** - **.NET 9** - **Go 1.22** diff --git a/optional-feature-installer.sh b/optional-feature-installer.sh deleted file mode 100755 index 42104e8..0000000 --- a/optional-feature-installer.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/bash - -options=( - "Jupyter Notebook" - "Python SDK" - "Java SDK" - ".NET SDK" - "Go SDK" -) - -selected=0 -total=${#options[@]} - -print_menu() { - for i in "${!options[@]}"; do - if [ "$i" -eq "$selected" ]; then - echo " > ${options[$i]}" - else - echo " ${options[$i]}" - fi - done -} - -# Print header once -echo "" -echo "======================================" -echo " Welcome to GoodMem Dev Container" -echo "======================================" -echo "" -echo "Use UP/DOWN arrows to select, then press ENTER:" -echo "" - -# Print menu for the first time -print_menu - -while true; do - IFS= read -rsn1 key - if [[ $key == $'\x1b' ]]; then - read -rsn2 -t 0.1 key - case $key in - '[A') (( selected = (selected - 1 + total) % total )) ;; # Up - '[B') (( selected = (selected + 1) % total )) ;; # Down - *) continue ;; - esac - # Move cursor up $total lines and redraw only the menu - printf '\033[%dA' "$total" - print_menu - elif [[ $key == '' ]]; then - break # Enter - fi -done - -echo "" -echo "Selected: ${options[$selected]}" -echo "" - -case $selected in - 0) - echo "Installing Jupyter VS Code extension..." - code --install-extension ms-toolsai.jupyter 2>/dev/null || true - echo "Starting Jupyter Lab..." - - # clone the goodmem-samples repository - GOODMEM_REPO_DIR="goodmem-samples" - if [ ! -d "$GOODMEM_REPO_DIR" ]; then - git clone https://github.com/PAIR-Systems-Inc/goodmem-samples.git "$GOODMEM_REPO_DIR" - echo "GoodMem repository cloned to $GOODMEM_REPO_DIR" - else - echo "GoodMem repository already exists at $GOODMEM_REPO_DIR" - fi - - jupyter lab --ip=0.0.0.0 --no-browser --allow-root - ;; - 1) - echo "Installing Python VS Code extension..." - code --install-extension ms-python.python 2>/dev/null || true - echo "Starting Python with GoodMem SDK..." - echo " - SDK docs: https://docs.goodmem.ai/python" - echo " - Sample: src/test.py" - echo "" - python3 - ;; - 2) - echo "Java SDK selected." - echo " - SDK docs: https://docs.goodmem.ai/java" - echo " - Add to build.gradle:" - echo " implementation 'ai.goodmem:goodmem-client:'" - echo "" - ;; - 3) - echo ".NET SDK selected." - echo " - SDK docs: https://docs.goodmem.ai/dotnet" - echo " - Install package:" - echo " dotnet add package Pairsystems.GoodMem.Client" - echo "" - ;; - 4) - echo "Go SDK selected." - echo " - SDK docs: https://docs.goodmem.ai/go" - echo " - Install package:" - echo " go get github.com/PAIR-Systems-Inc/goodmem-go-client" - echo "" - ;; -esac diff --git a/package.json b/package.json deleted file mode 100644 index 00bff91..0000000 --- a/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "goodmem-js-example", - "version": "1.0.0", - "description": "Automated dev environment for the GoodMem JS SDK", - "main": "index.js", - "type": "module", - "scripts": { - "start": "node index.js" - }, - "dependencies": { - "dotenv": "^16.4.5", - "goodmem": "0.1.0" - } -} diff --git a/src/test.js b/src/test.js deleted file mode 100644 index f3fbe96..0000000 --- a/src/test.js +++ /dev/null @@ -1,108 +0,0 @@ -import dotenv from "dotenv"; -import fetch from "node-fetch"; // Use node-fetch for environments without built-in fetch -import { GoodMem } from "goodmem"; -import OpenAI from "openai"; - -// --- Main async function to run the script --- -async function runDiagnostics() { - // --- Load environment variables --- - console.log("\nLoading environment variables..."); - dotenv.config(); // Looks for a .env file - - const HOST_URL = process.env.HOST_URL || "http://localhost:8080"; - const API_KEY = process.env.ADD_API_KEY; - const OPENAI_API_KEY = process.env.OPENAI_API_KEY; - - console.log( - `API_KEY loaded: ${API_KEY && !API_KEY.includes("ADD") ? "FOUND" : "โŒ MISSING or PLACEHOLDER"}` - ); - console.log( - `OPENAI_API_KEY loaded: ${OPENAI_API_KEY && !OPENAI_API_KEY.includes("your-openai-key") ? "FOUND" : "โŒ MISSING or PLACEHOLDER"}` - ); - - // --- Test direct HTTP access --- - console.log("\nTesting raw HTTP API..."); - try { - const headers = (API_KEY && !API_KEY.includes("ADD")) ? { "x-api-key": API_KEY } : {}; - const response = await fetch(`${HOST_URL}/v1/spaces`, { headers }); - - console.log(`Response status: ${response.status}`); - if (response.ok) { - console.log("API endpoint is reachable."); - } else { - const errorText = await response.text(); - console.log(`API responded but with error: ${errorText}`); - } - } catch (e) { - console.log(`API request failed: ${e.message}`); - } - - // --- Setup API Client --- - let client = null; - if (API_KEY && !API_KEY.includes("ADD")) { - client = new GoodMem({ - apiKey: API_KEY, - baseUrl: HOST_URL, - }); - } else { - console.log("Cannot initialize SDK โ€” API key missing."); - } - - // --- Test JavaScript SDK: List Spaces --- - console.log("\nTesting GoodMem JavaScript SDK..."); - if (!client) { - console.log("Skipping SDK space listing due to missing client."); - } else { - try { - console.log("Fetching spaces via SDK..."); - // The JS SDK listSpaces directly returns the array of spaces - const spaces = await client.spaces.listSpaces(); - console.log(`SDK list_spaces succeeded with ${spaces.length} space(s).`); - for (const space of spaces) { - const name = space.name || "(no name)"; - const labels = space.labels || {}; - console.log(` - ID: ${space.spaceId}, Name: ${name}, Labels: ${JSON.stringify(labels)}`); - } - } catch (e) { - console.log(`SDK test failed: ${e.message}`); - } - } - - // --- Test OpenAI Embeddings + GoodMem Integration --- - console.log("\nTesting OpenAI Embeddings and GoodMem integration..."); - if (!OPENAI_API_KEY || OPENAI_API_KEY.includes("your-openai-key")) { - console.log("Skipping OpenAI test due to missing key."); - } else if (!client) { - console.log("Cannot run memory test โ€” SDK client not initialized."); - } else { - try { - const openai = new OpenAI({ apiKey: OPENAI_API_KEY }); - console.log("Creating embedding with OpenAI..."); - // This step is just to verify the OpenAI key works; the GoodMem SDK handles embedding internally. - await openai.embeddings.create({ - input: "test text", - model: "text-embedding-3-small", - }); - console.log("OpenAI key verified successfully."); - - console.log("Creating memory in GoodMem..."); - const spaces = await client.spaces.listSpaces(); - if (spaces.length > 0) { - const spaceId = spaces[0].spaceId; - const memory = await client.memories.createMemory({ - originalContent: "test memory with open ai.", - contentType: "text/plain", - spaceId: spaceId, - }); - console.log(`Memory created. ID: ${memory.memoryId}`); - } else { - console.log("No spaces available for memory creation."); - } - } catch (e) { - console.log(`OpenAI + GoodMem integration test failed: ${e.message}`); - } - } -} - -// Run the main function and catch any top-level errors -runDiagnostics().catch(console.error); diff --git a/src/test.py b/src/test.py deleted file mode 100644 index 3cee986..0000000 --- a/src/test.py +++ /dev/null @@ -1,102 +0,0 @@ -import os - -import requests -from dotenv import load_dotenv -from goodmem_client.api import APIKeysApi, MemoriesApi, SpacesApi -from goodmem_client.api_client import ApiClient -from goodmem_client.configuration import Configuration - -# --- Load environment variables --- -print("\nLoading environment variables...") -load_dotenv(dotenv_path=".env") - -HOST_URL = "http://localhost:8080" -API_KEY = os.getenv("ADD_API_KEY") -OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") - -print( - f"API_KEY loaded: {'FOUND' if API_KEY and 'ADD' not in API_KEY else 'โŒ MISSING or PLACEHOLDER'}" -) -print( - f"OPENAI_API_KEY loaded: {'FOUND' if OPENAI_API_KEY and 'your-openai-key' not in OPENAI_API_KEY else 'โŒ MISSING or PLACEHOLDER'}" -) - -# --- Test direct HTTP access --- -print("\nTesting raw HTTP API...") - -try: - headers = {"x-api-key": API_KEY} if API_KEY and "ADD" not in API_KEY else {} - response = requests.get(f"{HOST_URL}/v1/spaces", headers=headers) - print(f"Response status: {response.status_code}") - if response.ok: - print("API endpoint is reachable.") - else: - print(f"API responded but with error: {response.text}") -except Exception as e: - print(f"API request failed: {e}") - -# --- Setup API Client --- -api_client = None -spaces_api_instance = None - -if API_KEY and "ADD" not in API_KEY: - configuration = Configuration() - configuration.host = HOST_URL - api_client = ApiClient(configuration=configuration) - api_client.default_headers["x-api-key"] = API_KEY - spaces_api_instance = SpacesApi(api_client) -else: - print("Cannot initialize SDK โ€” API key missing.") - -# --- Test Python SDK: List Spaces --- -print("\nTesting GoodMem Python SDK...") - -if not spaces_api_instance: - print("Skipping SDK space listing due to missing client.") -else: - try: - print("Fetching spaces via SDK...") - response = spaces_api_instance.list_spaces() - print(f"SDK list_spaces succeeded with {len(response.spaces)} space(s).") - for space in response.spaces: - name = getattr(space, "name", "(no name)") - labels = getattr(space, "labels", {}) - print(f" - ID: {space.space_id}, Name: {name}, Labels: {labels}") - except Exception as e: - print(f"SDK test failed: {e}") - -# --- Test OpenAI Embeddings + GoodMem Integration --- -print("\nTesting OpenAI Embeddings and GoodMem integration...") - -if not OPENAI_API_KEY or "your-openai-key" in OPENAI_API_KEY: - print("Skipping OpenAI test due to missing key.") -elif not api_client: - print("Cannot run memory test โ€” SDK client not initialized.") -else: - try: - from openai import OpenAI - - client = OpenAI(api_key=OPENAI_API_KEY) - print("Creating embedding with OpenAI...") - embedding_response = client.embeddings.create( - input="test text", model="text-embedding-3-small" - ) - print("OpenAI embedding succeeded.") - - print("Creating memory in GoodMem using embedding...") - spaces_response = spaces_api_instance.list_spaces() - if spaces_response.spaces: - space_id = spaces_response.spaces[0].space_id - memories_api = MemoriesApi(api_client) - memory = { - "original_content": "test memory w open ai.", - "contentType": "text/plain", - "spaceId": space_id, - } - memory_response = memories_api.create_memory(memory) - print(f"Memory created. ID: {memory_response.memory_id}") - else: - print("No spaces available for memory creation.") - - except Exception as e: - print(f"OpenAI + GoodMem integration test failed: {e}") From e2af9037d9807b50db15326b9390514b06560fd0 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Tue, 17 Mar 2026 18:42:27 -0700 Subject: [PATCH 09/17] modified optional feature installation process: reordered .NET and java for readability deleted unnecessary setup.sh file, incorporated into optional feature installation script added back test.py file --- .devcontainer/Dockerfile | 24 ----- .devcontainer/optional-feature-installer.sh | 66 +++++++------ .devcontainer/setup.sh | 43 --------- src/tests/test.py | 102 ++++++++++++++++++++ 4 files changed, 140 insertions(+), 95 deletions(-) delete mode 100644 .devcontainer/setup.sh create mode 100644 src/tests/test.py diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2e19787..75a3d75 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -10,35 +10,11 @@ SHELL ["/bin/bash", "-c"] RUN apt-get update && apt-get install -y --no-install-recommends \ curl wget git unzip gnupg ca-certificates software-properties-common \ apt-transport-https sudo - # build-essential apt-transport-https sudo \ - # libffi-dev libssl-dev libpq-dev cargo \ - # python3 python3-venv python3-pip python3-dev # # Node.js 20 # RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ # apt-get install -y nodejs -# # ---- Java (OpenJDK 21) ---- -# RUN apt-get install -y --no-install-recommends \ -# openjdk-21-jdk \ -# && rm -rf /var/lib/apt/lists/* -# ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 -# ENV PATH="$JAVA_HOME/bin:${PATH}" - -# # quick sanity -# RUN java -version && javac -version - -# # ---- Gradle (official binary) ---- -# RUN curl -fsSL https://services.gradle.org/distributions/gradle-8.9-bin.zip -o /tmp/gradle.zip \ -# && unzip -q /tmp/gradle.zip -d /opt \ -# && ln -s /opt/gradle-8.9 /opt/gradle \ -# && rm -f /tmp/gradle.zip -# ENV PATH="/opt/gradle/bin:${PATH}" - -# # quick sanity -# RUN gradle -v - - ### JUPYTER KERNELS (optional, for users who want to use Jupyter notebooks in the container) # # Dotnet Interactive (for Jupyter) diff --git a/.devcontainer/optional-feature-installer.sh b/.devcontainer/optional-feature-installer.sh index 8adfc5b..248e25f 100755 --- a/.devcontainer/optional-feature-installer.sh +++ b/.devcontainer/optional-feature-installer.sh @@ -6,8 +6,8 @@ options=( "Jupyter Notebook" "Python SDK" - "Java SDK" ".NET SDK" + "Java SDK" "Go SDK" ) @@ -74,6 +74,9 @@ case $selected in jupyter lab --ip=0.0.0.0 --no-browser --allow-root ;; + ############################################################### + ##################### installing Python ####################### + ############################################################### 1) echo "Installing Python VS Code extension..." code --install-extension ms-python.python 2>/dev/null || true @@ -88,9 +91,33 @@ case $selected in echo "Installing Python SDK packages..." pip install --no-cache-dir --break-system-packages goodmem_client openai requests python-dotenv # jupyter lab + echo "Python environment ready" ;; + ############################################################### + ###################### installing .NET ######################## + ############################################################### 2) + echo "Installing .NET SDK 8.0..." + sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0 + sudo rm -rf /var/lib/apt/lists/* + echo "Creating .NET sample app with GoodMem client..." + + DOTNET_APP_DIR="src/GoodMemDotnetApp" + if [ ! -d "$DOTNET_APP_DIR" ]; then + dotnet new console -o "$DOTNET_APP_DIR" -n GoodMemDotnetApp + ( cd "$DOTNET_APP_DIR" && dotnet add package Pairsystems.Goodmem.Client ) + fi + ( cd "$DOTNET_APP_DIR" && dotnet restore && dotnet build ) + + echo ".NET environment ready" + echo " - Sample app: $DOTNET_APP_DIR" + ;; + + ############################################################### + ###################### installing Java ######################## + ############################################################### + 3) echo "Installing Java (OpenJDK 21) and Gradle 8.9..." sudo apt-get update && sudo apt-get install -y --no-install-recommends openjdk-21-jdk sudo rm -rf /var/lib/apt/lists/* @@ -105,17 +132,15 @@ case $selected in export PATH="/opt/gradle/bin:$PATH" if ! grep -q 'JAVA_HOME' ~/.bashrc; then - cat >> ~/.bashrc <<'JAVAEOF' -export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 -export PATH="$JAVA_HOME/bin:/opt/gradle/bin:$PATH" -JAVAEOF + echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64' >> ~/.bashrc + echo 'export PATH="$JAVA_HOME/bin:/opt/gradle/bin:$PATH"' >> ~/.bashrc fi java -version gradle -v echo "Creating Java sample app with GoodMem client..." - mkdir -p src + JAVA_APP_DIR="src/GoodMemJavaApp" if [ ! -d "$JAVA_APP_DIR" ]; then @@ -144,22 +169,9 @@ JAVAEOF echo "Java environment ready" echo " - Sample app: $JAVA_APP_DIR" ;; - 3) - echo "Installing .NET SDK 8.0..." - sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0 - sudo rm -rf /var/lib/apt/lists/* - echo "Creating .NET sample app with GoodMem client..." - mkdir -p src - DOTNET_APP_DIR="src/GoodMemDotnetApp" - if [ ! -d "$DOTNET_APP_DIR" ]; then - dotnet new console -o "$DOTNET_APP_DIR" -n GoodMemDotnetApp - ( cd "$DOTNET_APP_DIR" && dotnet add package Pairsystems.Goodmem.Client ) - fi - ( cd "$DOTNET_APP_DIR" && dotnet restore && dotnet build ) - - echo ".NET environment ready" - echo " - Sample app: $DOTNET_APP_DIR" - ;; + ############################################################### + ######################## installing Go ######################## + ############################################################### 4) echo "Installing Go 1.24.6..." GO_VERSION=1.24.6 @@ -173,17 +185,15 @@ JAVAEOF export PATH="$GOROOT/bin:$GOPATH/bin:$PATH" if ! grep -q 'GOROOT' ~/.bashrc; then - cat >> ~/.bashrc <<'GOEOF' -export GOROOT=/usr/local/go -export GOPATH="$HOME/go" -export PATH="$GOROOT/bin:$GOPATH/bin:$PATH" -GOEOF + echo 'export GOROOT=/usr/local/go' >> ~/.bashrc + echo 'export GOPATH="$HOME/go"' >> ~/.bashrc + echo 'export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"' >> ~/.bashrc fi go version echo "Creating Go sample app with GoodMem client..." - mkdir -p src + GO_APP_DIR="src/GoodMemGoApp" GO_SDK_MOD="github.com/PAIR-Systems-Inc/goodmem/clients/go@v1.0.10" diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh deleted file mode 100644 index 935a96b..0000000 --- a/.devcontainer/setup.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo "[setup.sh] start PWD=$(pwd) USER=$(whoami)" - -BASE_DIR="src" -mkdir -p "$BASE_DIR" - - - -########## Java sample (GoodMemJavaApp via Gradle) ########## -if command -v javac >/dev/null 2>&1; then - JAVA_APP_DIR="$BASE_DIR/GoodMemJavaApp" - - if [[ ! -d "$JAVA_APP_DIR" ]]; then - echo "[setup.sh] creating $JAVA_APP_DIR" - mkdir -p "$JAVA_APP_DIR" - cd "$JAVA_APP_DIR" - - printf "1\n" | gradle -q init \ - --type java-application \ - --dsl kotlin \ - --test-framework junit \ - --project-name GoodMemJavaApp \ - --package com.pairsystems.goodmem.sample \ - --java-version 21 - - if [[ -f "build.gradle.kts" ]]; then - awk '1;/dependencies *\{/ && !x{print " implementation(\"com.pairsystems:goodmem-client:1.0.0\")"; x=1}' \ - build.gradle.kts > build.gradle.kts.tmp && mv build.gradle.kts.tmp build.gradle.kts - fi - else - cd "$JAVA_APP_DIR" - fi - - echo "[setup.sh] ./gradlew build" - ./gradlew --no-daemon build || echo "[setup.sh] WARN: build failed (artifact may not be published yet)" - cd - >/dev/null -else - echo "[setup.sh] Java not installed; skipping GoodMemJavaApp" -fi - -echo "[setup.sh] done" diff --git a/src/tests/test.py b/src/tests/test.py new file mode 100644 index 0000000..3cee986 --- /dev/null +++ b/src/tests/test.py @@ -0,0 +1,102 @@ +import os + +import requests +from dotenv import load_dotenv +from goodmem_client.api import APIKeysApi, MemoriesApi, SpacesApi +from goodmem_client.api_client import ApiClient +from goodmem_client.configuration import Configuration + +# --- Load environment variables --- +print("\nLoading environment variables...") +load_dotenv(dotenv_path=".env") + +HOST_URL = "http://localhost:8080" +API_KEY = os.getenv("ADD_API_KEY") +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") + +print( + f"API_KEY loaded: {'FOUND' if API_KEY and 'ADD' not in API_KEY else 'โŒ MISSING or PLACEHOLDER'}" +) +print( + f"OPENAI_API_KEY loaded: {'FOUND' if OPENAI_API_KEY and 'your-openai-key' not in OPENAI_API_KEY else 'โŒ MISSING or PLACEHOLDER'}" +) + +# --- Test direct HTTP access --- +print("\nTesting raw HTTP API...") + +try: + headers = {"x-api-key": API_KEY} if API_KEY and "ADD" not in API_KEY else {} + response = requests.get(f"{HOST_URL}/v1/spaces", headers=headers) + print(f"Response status: {response.status_code}") + if response.ok: + print("API endpoint is reachable.") + else: + print(f"API responded but with error: {response.text}") +except Exception as e: + print(f"API request failed: {e}") + +# --- Setup API Client --- +api_client = None +spaces_api_instance = None + +if API_KEY and "ADD" not in API_KEY: + configuration = Configuration() + configuration.host = HOST_URL + api_client = ApiClient(configuration=configuration) + api_client.default_headers["x-api-key"] = API_KEY + spaces_api_instance = SpacesApi(api_client) +else: + print("Cannot initialize SDK โ€” API key missing.") + +# --- Test Python SDK: List Spaces --- +print("\nTesting GoodMem Python SDK...") + +if not spaces_api_instance: + print("Skipping SDK space listing due to missing client.") +else: + try: + print("Fetching spaces via SDK...") + response = spaces_api_instance.list_spaces() + print(f"SDK list_spaces succeeded with {len(response.spaces)} space(s).") + for space in response.spaces: + name = getattr(space, "name", "(no name)") + labels = getattr(space, "labels", {}) + print(f" - ID: {space.space_id}, Name: {name}, Labels: {labels}") + except Exception as e: + print(f"SDK test failed: {e}") + +# --- Test OpenAI Embeddings + GoodMem Integration --- +print("\nTesting OpenAI Embeddings and GoodMem integration...") + +if not OPENAI_API_KEY or "your-openai-key" in OPENAI_API_KEY: + print("Skipping OpenAI test due to missing key.") +elif not api_client: + print("Cannot run memory test โ€” SDK client not initialized.") +else: + try: + from openai import OpenAI + + client = OpenAI(api_key=OPENAI_API_KEY) + print("Creating embedding with OpenAI...") + embedding_response = client.embeddings.create( + input="test text", model="text-embedding-3-small" + ) + print("OpenAI embedding succeeded.") + + print("Creating memory in GoodMem using embedding...") + spaces_response = spaces_api_instance.list_spaces() + if spaces_response.spaces: + space_id = spaces_response.spaces[0].space_id + memories_api = MemoriesApi(api_client) + memory = { + "original_content": "test memory w open ai.", + "contentType": "text/plain", + "spaceId": space_id, + } + memory_response = memories_api.create_memory(memory) + print(f"Memory created. ID: {memory_response.memory_id}") + else: + print("No spaces available for memory creation.") + + except Exception as e: + print(f"OpenAI + GoodMem integration test failed: {e}") From 3019d2aa4c9f4d0ad679dbab021bd574ee878ed9 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Tue, 17 Mar 2026 18:45:48 -0700 Subject: [PATCH 10/17] removed old reference to setup script --- .devcontainer/devcontainer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index eb278cb..98ad813 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,7 +6,6 @@ // build docker image from latest build on github container registry // "image": "ghcr.io/pair-systems-inc/devcontainer-codespace:latest", - // "postCreateCommand": "bash .devcontainer/setup.sh", "postCreateCommand": "bash .devcontainer/post-setup.sh", "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {} From 309c1dfda1950155b87fef4a3af0fdecff0c6957 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Wed, 18 Mar 2026 16:59:14 -0700 Subject: [PATCH 11/17] adding test files back for simplicity --- src/tests/test.js | 108 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/tests/test.js diff --git a/src/tests/test.js b/src/tests/test.js new file mode 100644 index 0000000..f3fbe96 --- /dev/null +++ b/src/tests/test.js @@ -0,0 +1,108 @@ +import dotenv from "dotenv"; +import fetch from "node-fetch"; // Use node-fetch for environments without built-in fetch +import { GoodMem } from "goodmem"; +import OpenAI from "openai"; + +// --- Main async function to run the script --- +async function runDiagnostics() { + // --- Load environment variables --- + console.log("\nLoading environment variables..."); + dotenv.config(); // Looks for a .env file + + const HOST_URL = process.env.HOST_URL || "http://localhost:8080"; + const API_KEY = process.env.ADD_API_KEY; + const OPENAI_API_KEY = process.env.OPENAI_API_KEY; + + console.log( + `API_KEY loaded: ${API_KEY && !API_KEY.includes("ADD") ? "FOUND" : "โŒ MISSING or PLACEHOLDER"}` + ); + console.log( + `OPENAI_API_KEY loaded: ${OPENAI_API_KEY && !OPENAI_API_KEY.includes("your-openai-key") ? "FOUND" : "โŒ MISSING or PLACEHOLDER"}` + ); + + // --- Test direct HTTP access --- + console.log("\nTesting raw HTTP API..."); + try { + const headers = (API_KEY && !API_KEY.includes("ADD")) ? { "x-api-key": API_KEY } : {}; + const response = await fetch(`${HOST_URL}/v1/spaces`, { headers }); + + console.log(`Response status: ${response.status}`); + if (response.ok) { + console.log("API endpoint is reachable."); + } else { + const errorText = await response.text(); + console.log(`API responded but with error: ${errorText}`); + } + } catch (e) { + console.log(`API request failed: ${e.message}`); + } + + // --- Setup API Client --- + let client = null; + if (API_KEY && !API_KEY.includes("ADD")) { + client = new GoodMem({ + apiKey: API_KEY, + baseUrl: HOST_URL, + }); + } else { + console.log("Cannot initialize SDK โ€” API key missing."); + } + + // --- Test JavaScript SDK: List Spaces --- + console.log("\nTesting GoodMem JavaScript SDK..."); + if (!client) { + console.log("Skipping SDK space listing due to missing client."); + } else { + try { + console.log("Fetching spaces via SDK..."); + // The JS SDK listSpaces directly returns the array of spaces + const spaces = await client.spaces.listSpaces(); + console.log(`SDK list_spaces succeeded with ${spaces.length} space(s).`); + for (const space of spaces) { + const name = space.name || "(no name)"; + const labels = space.labels || {}; + console.log(` - ID: ${space.spaceId}, Name: ${name}, Labels: ${JSON.stringify(labels)}`); + } + } catch (e) { + console.log(`SDK test failed: ${e.message}`); + } + } + + // --- Test OpenAI Embeddings + GoodMem Integration --- + console.log("\nTesting OpenAI Embeddings and GoodMem integration..."); + if (!OPENAI_API_KEY || OPENAI_API_KEY.includes("your-openai-key")) { + console.log("Skipping OpenAI test due to missing key."); + } else if (!client) { + console.log("Cannot run memory test โ€” SDK client not initialized."); + } else { + try { + const openai = new OpenAI({ apiKey: OPENAI_API_KEY }); + console.log("Creating embedding with OpenAI..."); + // This step is just to verify the OpenAI key works; the GoodMem SDK handles embedding internally. + await openai.embeddings.create({ + input: "test text", + model: "text-embedding-3-small", + }); + console.log("OpenAI key verified successfully."); + + console.log("Creating memory in GoodMem..."); + const spaces = await client.spaces.listSpaces(); + if (spaces.length > 0) { + const spaceId = spaces[0].spaceId; + const memory = await client.memories.createMemory({ + originalContent: "test memory with open ai.", + contentType: "text/plain", + spaceId: spaceId, + }); + console.log(`Memory created. ID: ${memory.memoryId}`); + } else { + console.log("No spaces available for memory creation."); + } + } catch (e) { + console.log(`OpenAI + GoodMem integration test failed: ${e.message}`); + } + } +} + +// Run the main function and catch any top-level errors +runDiagnostics().catch(console.error); From 915de3900d2fa428321e7a6165d52d9ff0a7229b Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Wed, 18 Mar 2026 17:01:54 -0700 Subject: [PATCH 12/17] renamed goodmem setup script --- .devcontainer/configure-goodmem.sh | 26 ++++++++++++++++++ .devcontainer/devcontainer.json | 2 +- .devcontainer/post-setup.sh | 42 ------------------------------ 3 files changed, 27 insertions(+), 43 deletions(-) create mode 100755 .devcontainer/configure-goodmem.sh delete mode 100755 .devcontainer/post-setup.sh diff --git a/.devcontainer/configure-goodmem.sh b/.devcontainer/configure-goodmem.sh new file mode 100755 index 0000000..e57ac98 --- /dev/null +++ b/.devcontainer/configure-goodmem.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Install GoodMem and initialize (create root user and generate API key while saving it to config.toml) +echo "Installing GoodMem..." +curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "my-secure-password" + +# Extract API key and add to ~/.bashrc +echo "Configuring GoodMem API key..." +if [ -f ~/.goodmem/config.toml ]; then + API_KEY=$(grep "^api_key" ~/.goodmem/config.toml | cut -d"'" -f2) + if [ -n "$API_KEY" ]; then + if ! grep -q "GOODMEM_API_KEY" ~/.bashrc; then + echo "export GOODMEM_API_KEY=\"$API_KEY\"" >> ~/.bashrc + echo "Added GOODMEM_API_KEY to ~/.bashrc" + else + echo "GOODMEM_API_KEY already exists in ~/.bashrc" + fi + echo "***REMEMBER GOODMEM_API_KEY=\"$API_KEY\"***" + else + echo "Warning: Could not extract api_key from config.toml" + fi +else + echo "Warning: ~/.goodmem/config.toml not found" +fi + +echo "GoodMem installation and configuration complete!" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 98ad813..c8c19f2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ // build docker image from latest build on github container registry // "image": "ghcr.io/pair-systems-inc/devcontainer-codespace:latest", - "postCreateCommand": "bash .devcontainer/post-setup.sh", + "postCreateCommand": "bash .devcontainer/configure-goodmem.sh", "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {} }, diff --git a/.devcontainer/post-setup.sh b/.devcontainer/post-setup.sh deleted file mode 100755 index c2e255c..0000000 --- a/.devcontainer/post-setup.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -echo "=== Post-setup script started ===" - -# 1. Install GoodMem and initialize (create root user and generate API key while saving it to config.toml) -echo "Installing GoodMem..." -curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "my-secure-password" -# curl -s "https://get.goodmem.ai" | bash -s -- --handsfree --db-password "hjsaFGDGHS1726HSBD" - -# 2. Extract API key and add to ~/.bashrc -echo "Configuring GoodMem API key..." -if [ -f ~/.goodmem/config.toml ]; then - API_KEY=$(grep "^api_key" ~/.goodmem/config.toml | cut -d"'" -f2) - if [ -n "$API_KEY" ]; then - if ! grep -q "GOODMEM_API_KEY" ~/.bashrc; then - echo "export GOODMEM_API_KEY=\"$API_KEY\"" >> ~/.bashrc - echo "Added GOODMEM_API_KEY to ~/.bashrc" - else - echo "GOODMEM_API_KEY already exists in ~/.bashrc" - fi - echo "***REMEMBER GOODMEM_API_KEY=\"$API_KEY\"***" - else - echo "Warning: Could not extract api_key from config.toml" - fi -else - echo "Warning: ~/.goodmem/config.toml not found" -fi - - -echo "=== Post-setup script completed ===" - -echo "=====================================" -echo "=====================================" -echo "=====================================" -echo " " -echo "Welcome to the GoodMem Dev Container! ๐ŸŽ‰" -echo "Click on the README.md file to get started!" -echo " " -echo "=====================================" -echo "=====================================" -echo "=====================================" - From c85e90c73f54310e4e237512acd43597a325b152 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Wed, 18 Mar 2026 17:02:29 -0700 Subject: [PATCH 13/17] added nodejs support and simplified README --- .devcontainer/optional-feature-installer.sh | 53 +++++++++++++++++++-- README.md | 4 +- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/.devcontainer/optional-feature-installer.sh b/.devcontainer/optional-feature-installer.sh index 248e25f..cc3236a 100755 --- a/.devcontainer/optional-feature-installer.sh +++ b/.devcontainer/optional-feature-installer.sh @@ -7,6 +7,7 @@ options=( "Jupyter Notebook" "Python SDK" ".NET SDK" + "Node.js SDK" "Java SDK" "Go SDK" ) @@ -113,11 +114,55 @@ case $selected in echo ".NET environment ready" echo " - Sample app: $DOTNET_APP_DIR" ;; + ############################################################### + ################### installing Node.js ######################## + ############################################################### + 3) + echo "Installing Node.js 20..." + curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash - + sudo apt-get install -y nodejs + sudo rm -rf /var/lib/apt/lists/* + + npm install -g pnpm + + node --version + pnpm --version + + echo "Creating Node.js sample app with GoodMem client..." + NODE_APP_DIR="src/GoodMemNodeApp" + + if [ ! -d "$NODE_APP_DIR" ]; then + mkdir -p "$NODE_APP_DIR" + cd "$NODE_APP_DIR" + + cat > package.json <<'NODEPKG' +{ + "name": "goodmem-js-example", + "version": "1.0.0", + "description": "Automated dev environment for the GoodMem JS SDK", + "main": "index.js", + "type": "module", + "scripts": { + "start": "node index.js" + }, + "dependencies": { + "dotenv": "^16.4.5", + "goodmem": "0.1.0" + } +} +NODEPKG + + pnpm install + cd - >/dev/null + fi + echo "Node.js environment ready" + echo " - Sample app: $NODE_APP_DIR" + ;; ############################################################### ###################### installing Java ######################## ############################################################### - 3) + 4) echo "Installing Java (OpenJDK 21) and Gradle 8.9..." sudo apt-get update && sudo apt-get install -y --no-install-recommends openjdk-21-jdk sudo rm -rf /var/lib/apt/lists/* @@ -172,7 +217,7 @@ case $selected in ############################################################### ######################## installing Go ######################## ############################################################### - 4) + 5) echo "Installing Go 1.24.6..." GO_VERSION=1.24.6 curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -o /tmp/go.tgz @@ -226,8 +271,8 @@ EOF go mod tidy go build ./... - cd - >/dev/null # is this line logical - + + cd - >/dev/null echo "Go environment ready" echo " - Sample app: $GO_APP_DIR" ;; diff --git a/README.md b/README.md index efbe78b..f6c38bd 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ To get started with GoodMem navigate to the [quick start instructions section](# - An OpenAI API key (access at https://platform.openai.com/) - A running GoodMem server (already setup) -- A GoodMem API key (already setup, access with `goodmem apikey list`) +- A GoodMem API key (already setup, access with `grep key ~/.goodmem/config.toml`) > If you do not want to use an OpenAI API key, please use an embedding provider we support (Cohere, Jina, Voyage AI, vLLM, TEI, OpenAI) @@ -52,7 +52,7 @@ If the terminal is open but it does not display the text `devcontainer-codespace 2. **Save Your GoodMem API Key** -Copy paste this command into the terminal using `control + shift + v`. +Copy paste the command below into the terminal using `control + shift + v`. `grep key ~/.goodmem/config.toml` From 3a0bd00f04f7a24ebeea41618b16d787ae1c80ef Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Wed, 18 Mar 2026 17:20:35 -0700 Subject: [PATCH 14/17] simplifying README --- README.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f6c38bd..2d5d08e 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,21 @@ This GitHub Codespace is a pre-configured development environment to help you start building with GoodMem immediately through the command line tool. **Please make sure to read the requirements section.** -To get started with GoodMem navigate to the [quick start instructions section](#quick-start-instructions). +> If you would prefer to interact with GoodMem through a Jupyter Notebook or an SDK, please navigate to the [optional features section](#optional-features) -> Note: If you would prefer to interact with GoodMem through a Jupyter Notebook or an SDK, please navigate to the [optional features section](#optional-features) +To get started with GoodMem navigate to the [quick start instructions section](#quick-start-instructions). ## Requirements @@ -28,13 +31,15 @@ To get started with GoodMem navigate to the [quick start instructions section](# Below is a tutorial on how to use the Goodmem CLI (command line interface). -You can use `control + c`, `control + shift + c`, `control + v`, and `control + shift + v` to copy paste commands for the tutorial below. +You can use `control + c`, `control + shift + c`, `control + v`, and `control + shift + v` to copy paste commands and data for the tutorial below. **Please follow the instructions in order** 1. **Setup The Terminal** -The terminal is usually located on the bottom half of the screen and should display the text `devcontainer-codespace` +The terminal is usually located on the bottom half of the screen and should display the text `devcontainer-codespace`. + +If the terminal displays "Running postCreateCommand" please wait a few seconds for GoodMem to complete installation. If the terminal is not already open, you can launch the terminal in a few ways: From 6dfea5106adb2ac53141669007e44a17e751f637 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Wed, 18 Mar 2026 17:38:01 -0700 Subject: [PATCH 15/17] simplifying README ux: added a note on how to resize terminal removed quotes from command in step 4 for easier ux hyperlinked demo pdf so curious users can inspect --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d5d08e..e9792a9 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ The terminal is usually located on the bottom half of the screen and should disp If the terminal displays "Running postCreateCommand" please wait a few seconds for GoodMem to complete installation. +You can also adjust the size of the terminal by dragging the top edge of the terminal screen. + If the terminal is not already open, you can launch the terminal in a few ways: - use the keyboard shortcut `control + j` @@ -74,7 +76,7 @@ goodmem embedder create \ --endpoint-url "https://api.openai.com/v1" \ --model-identifier "text-embedding-3-small" \ --dimensionality 1536 \ - --cred-api-key "YOUR_OPENAI_API_KEY_FROM_STEP_3" + --cred-api-key YOUR_OPENAI_API_KEY_FROM_STEP_3 ``` The command should output: @@ -165,7 +167,7 @@ To do this, we will first upload a PDF and store it in memory. After that, we wi 1. **Begin by creating a memory.** We will be using this pre-downloaded PDF: -### An Excellent Study of Social Media and Its Positive and Negative Effects on Human Beingโ€™s Mental Health +[An Excellent Study of Social Media and Its Positive and Negative Effects on Human Beingโ€™s Mental Health](https://dr.lib.iastate.edu/server/api/core/bitstreams/8d3ccb03-cbc4-4b8a-b452-0ebccf0dde55/content) Then run this command: From 1e2c9359805914a55206e133bc2bc6cebbde1935 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Wed, 18 Mar 2026 18:36:23 -0700 Subject: [PATCH 16/17] adding space to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e9792a9..f5baeac 100644 --- a/README.md +++ b/README.md @@ -216,6 +216,7 @@ goodmem memory retrieve \ # Optional Features To enable optional features, follow the instructions below. + 1. copy and paste this command in the terminal `source .devcontainer/optional-feature-installer.sh` From f379e6b93489133c8d8133f4e4ab84e292b03727 Mon Sep 17 00:00:00 2001 From: muaazwahid Date: Thu, 19 Mar 2026 17:44:21 -0700 Subject: [PATCH 17/17] remove unstable juptyer kernels: other languages will be supported by the python jupyter kernel --- .devcontainer/Dockerfile | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 75a3d75..38d65f4 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -11,35 +11,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ curl wget git unzip gnupg ca-certificates software-properties-common \ apt-transport-https sudo -# # Node.js 20 -# RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ -# apt-get install -y nodejs - -### JUPYTER KERNELS (optional, for users who want to use Jupyter notebooks in the container) - -# # Dotnet Interactive (for Jupyter) -# RUN dotnet tool install --global Microsoft.dotnet-interactive -# ENV PATH="/root/.dotnet/tools:${PATH}" -# RUN dotnet interactive jupyter install - -# # IJavascript (Node.js kernel for Jupyter) -# RUN npm config set prefix $HOME -# RUN npm install -g ijavascript -# ENV PATH="/root/bin:${PATH}" -# RUN ijsinstall - -# # JJava (Java kernel for Jupyter) -# RUN curl -fsSL https://github.com/dflib/jjava/releases/download/1.0-a5/jjava-1.0-a5-kernelspec.zip -o /tmp/jjava.zip && \ -# unzip -q /tmp/jjava.zip -d /tmp/jjava-1.0-a5-kernelspec && \ -# cd /tmp && \ -# jupyter kernelspec install jjava-1.0-a5-kernelspec --user --name=java - -# # GONB (Go kernel for Jupyter) -# RUN go install github.com/janpfeifer/gonb@latest && \ -# go install golang.org/x/tools/cmd/goimports@latest && \ -# go install golang.org/x/tools/gopls@latest -# RUN gonb --install - # Dev user # EDIT: DISABLED for now to avoid permission issues with mounted volumes # RUN useradd -m -s /bin/bash vscode && \