Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
d2a8312
Add basic project configuration
WiktorProsowicz Dec 1, 2025
097596c
added first sub devcontainer
yancostrishevsky Dec 1, 2025
55d0ece
fix persistent dependencies
yancostrishevsky Dec 1, 2025
eb1bbb5
services dev config
yancostrishevsky Dec 5, 2025
5cb1970
Add changes to the root Devcontainer
WiktorProsowicz Dec 8, 2025
dbfa9a9
Add fist working version of web-app
WiktorProsowicz Dec 8, 2025
97121b0
Run pre-commit
WiktorProsowicz Dec 8, 2025
bad7cfe
Temporarily delete all unimplemented services
WiktorProsowicz Dec 8, 2025
a241d9f
Add "strict" option to mypy config
WiktorProsowicz Dec 8, 2025
73f8598
Run pre-commit on web-app files
WiktorProsowicz Dec 8, 2025
949ad35
Rename "web" python package to "web_app"
WiktorProsowicz Dec 8, 2025
0dd057e
Merge branch 'infra-development' into develop
WiktorProsowicz Dec 12, 2025
6928b1e
Replace main backend service with services corresponding to specific …
WiktorProsowicz Dec 12, 2025
86e229f
Enhance readability of the code
WiktorProsowicz Dec 14, 2025
4b86609
Rename hydra configuration for the main_dev script
WiktorProsowicz Dec 14, 2025
27671b3
Create separate package for front end modules
WiktorProsowicz Dec 14, 2025
dae1a99
Add main application entrypoint
WiktorProsowicz Dec 14, 2025
fa79da1
Run pre-commit
WiktorProsowicz Dec 14, 2025
e7b53a6
Merge branch 'add_web_app_backend' into develop
WiktorProsowicz Dec 14, 2025
6aa2685
Introduce llm-generator service and add it to the docker compose config
WiktorProsowicz Dec 15, 2025
b41ff0e
Add Devcontainer for llm-proxy
WiktorProsowicz Dec 15, 2025
14da282
Add llm-proxy package files
WiktorProsowicz Dec 15, 2025
ce3b021
Add first working version of the input query guardlines
WiktorProsowicz Dec 15, 2025
ae29bb5
Replace separate guard querying with wrapping the main llm
WiktorProsowicz Dec 15, 2025
7615eac
Enhance setting up docker-compose clusters
WiktorProsowicz Dec 15, 2025
0b7a531
Run pre-commit
WiktorProsowicz Dec 17, 2025
7750a3f
Move logging setup to separate function
WiktorProsowicz Dec 17, 2025
47088ac
Disable noisy 3rd party debug logs
WiktorProsowicz Dec 17, 2025
79055a0
Enable passing dynamic server configuration to uvicorn workers via en…
WiktorProsowicz Dec 17, 2025
3b104d7
Replace llm-generator with generalized llm endpoint and rename llm-ge…
WiktorProsowicz Dec 22, 2025
767774d
Introduce llm-guard service
WiktorProsowicz Dec 22, 2025
6fd5fba
Make used llm rails a passable argument
WiktorProsowicz Dec 22, 2025
8abaf7e
Update llm endpoints configuration
WiktorProsowicz Jan 2, 2026
1933520
Remove passing optional used rails
WiktorProsowicz Jan 2, 2026
1746860
Implement custom input guardrails
WiktorProsowicz Jan 2, 2026
2eada58
Merge branch 'introduce_llm_proxy' into develop
WiktorProsowicz Jan 2, 2026
9bfa9d9
Update devcontainer extensions list
WiktorProsowicz Jan 2, 2026
2f54ea1
Remove nemoguardrails configuration
WiktorProsowicz Jan 4, 2026
a679eeb
Introduce custom rails and llm actions
WiktorProsowicz Jan 4, 2026
ca6eac6
Replace nemoguardrails with custom rails logic
WiktorProsowicz Jan 4, 2026
dea9caf
Upgrade type annotations
WiktorProsowicz Jan 4, 2026
9ea3d70
Replace generic llm with chat model in safety rail
WiktorProsowicz Jan 5, 2026
ee2bd99
Fix ollama models names in config
WiktorProsowicz Jan 5, 2026
5fc60f7
Add custom Modelfile for building models in llm-endpoint
WiktorProsowicz Jan 5, 2026
06ecd6e
Update guard-llm model
WiktorProsowicz Jan 5, 2026
2c7502d
Debug guard model call
WiktorProsowicz Jan 5, 2026
ba66118
Apply pre-commit checks
WiktorProsowicz Jan 5, 2026
e5fa6b9
Merge branch 'reimplement_llm_proxy_rails' into develop
WiktorProsowicz Jan 5, 2026
c381075
service checsk workflows
yancostrishevsky Jan 6, 2026
7490d9a
Update service-checks.yml
yancostrishevsky Jan 6, 2026
e1e393d
Add embedding-endpoint service
WiktorProsowicz Jan 7, 2026
bd02130
Add vector-store service
WiktorProsowicz Jan 7, 2026
7a89d81
Add Devcontainer setup for context-retriever
WiktorProsowicz Jan 7, 2026
537466d
Add basic project configuration
WiktorProsowicz Jan 7, 2026
2518d83
Add vector proxy interface
WiktorProsowicz Jan 7, 2026
b15a37d
Introduce server entrypoint and pdf uploading logic
WiktorProsowicz Jan 7, 2026
d077c8c
Made doc uploading functions async
WiktorProsowicz Jan 7, 2026
e068b2b
fix
yancostrishevsky Jan 7, 2026
b67c2f4
directory fix
yancostrishevsky Jan 7, 2026
6c35f5d
fix
yancostrishevsky Jan 7, 2026
aea2c87
mount fix
yancostrishevsky Jan 7, 2026
79d0fe0
Implement working document retrieval logic
WiktorProsowicz Jan 7, 2026
f9c722a
fix
yancostrishevsky Jan 7, 2026
80bf417
Apply pre-commit checks
WiktorProsowicz Jan 7, 2026
0969cd7
fix
yancostrishevsky Jan 7, 2026
e1b4858
fix
yancostrishevsky Jan 7, 2026
e3a1d52
Merge branch 'introduce_context_retriever' into develop
WiktorProsowicz Jan 7, 2026
38b5e54
fix
yancostrishevsky Jan 7, 2026
644b106
fix
yancostrishevsky Jan 7, 2026
6dfc880
fix
yancostrishevsky Jan 7, 2026
6e8fbb6
fix
yancostrishevsky Jan 7, 2026
21a5e94
fix
yancostrishevsky Jan 7, 2026
9ba6a7e
nio
yancostrishevsky Jan 7, 2026
23b11d0
Enable running web-app as docker compose service
WiktorProsowicz Jan 7, 2026
52766fc
Add health checks for ollama endpoints
WiktorProsowicz Jan 7, 2026
5fd9f46
Add docker compose services for llm-proxy and context-retriever
WiktorProsowicz Jan 7, 2026
c699f4e
Fix urls to enable service communication
WiktorProsowicz Jan 7, 2026
60ed920
Fix bugs in communication with endpoints
WiktorProsowicz Jan 7, 2026
e0d3a4c
Introduce helper-llm endpoint
WiktorProsowicz Jan 7, 2026
a988d67
Add helper-llm as endpoint used by context-retriever
WiktorProsowicz Jan 7, 2026
0d79342
Merge branch 'add_docker_setup_for_services' into develop
WiktorProsowicz Jan 7, 2026
0e51fae
Enable arg overrides in run-server just recipe
WiktorProsowicz Jan 7, 2026
5af5e91
Enable using context documents by main llm responder
WiktorProsowicz Jan 7, 2026
c4cf4fd
Merge branch 'enable_using_context_docs' into develop
WiktorProsowicz Jan 7, 2026
868094c
Avoid copying unnecessary files to created services
WiktorProsowicz Jan 8, 2026
153552b
Increase default timeout for endpoint communication in web-app
WiktorProsowicz Jan 8, 2026
c594fa0
Merge branch 'optimize_service_dockerfiles' into develop
WiktorProsowicz Jan 8, 2026
3a8bdeb
Merge branch 'develop' into gh-actions
WiktorProsowicz Jan 8, 2026
3ab411e
Rename context-retriever .devcontainer config for name consistency
WiktorProsowicz Jan 8, 2026
162a0eb
Enable firing workflows on changes to devcontainer setup
WiktorProsowicz Jan 8, 2026
9da7e01
Add environment setup before running precommit
WiktorProsowicz Jan 8, 2026
1369bc1
Add two-lines validation action
WiktorProsowicz Jan 8, 2026
ad8d048
Update rails
WiktorProsowicz Jan 8, 2026
faeb56e
Move input guardrails to separate api methods
WiktorProsowicz Jan 8, 2026
8fe8e5f
Add development configuration
WiktorProsowicz Jan 8, 2026
f37c9e0
Merge branch 'disentangle_rails_and_llm_call' into develop
WiktorProsowicz Jan 8, 2026
8a6fac0
Update type annotations of lists, dicts and tuples
WiktorProsowicz Jan 9, 2026
5dcf61f
Update dev configuration
WiktorProsowicz Jan 9, 2026
fdb2493
Fix creating payload for stream_chat_response call
WiktorProsowicz Jan 9, 2026
b26d500
Rework chat-user interaction logic
WiktorProsowicz Jan 9, 2026
7ffa4ce
Add user message validation to application
WiktorProsowicz Jan 9, 2026
984d627
Fix showing error messages for invalid user queries
WiktorProsowicz Jan 9, 2026
ea7ffb9
Add support for uploading PDF files
WiktorProsowicz Jan 9, 2026
036106e
Improved error gradio messages content
WiktorProsowicz Jan 9, 2026
529d756
Add small updates to dev configuration
WiktorProsowicz Jan 9, 2026
f4405a1
Apply pre-commit checks
WiktorProsowicz Jan 9, 2026
44d0534
Merge branch 'update_app_communication_with_endpoints' into develop
WiktorProsowicz Jan 9, 2026
d759eb5
Move python-magic from dev to standard web app deps
WiktorProsowicz Jan 9, 2026
3aa58f1
Change error message function for invalid guard-llm responses
WiktorProsowicz Jan 9, 2026
2a88ba5
Change default chunking params
WiktorProsowicz Jan 9, 2026
bc1e9c5
Apply pre-commit checks
WiktorProsowicz Jan 9, 2026
d0374eb
Merge branch 'bugfix_and_precommit' into develop
WiktorProsowicz Jan 9, 2026
e5e21ef
Move pre-commit action to a separate file
WiktorProsowicz Jan 10, 2026
ca63353
Modify service-checks config
WiktorProsowicz Jan 10, 2026
bf706b6
Fix problem with not checked-out repo for pre-commit action
WiktorProsowicz Jan 10, 2026
5550cae
Merge branch 'develop' into gh-actions
WiktorProsowicz Jan 10, 2026
3bb66f7
Add bash as the shell for creating ssh auth sock
WiktorProsowicz Jan 10, 2026
b16ea47
Up
WiktorProsowicz Jan 10, 2026
63b8656
Up
WiktorProsowicz Jan 10, 2026
2c39718
Merge pull request #1 from WiktorProsowicz/gh-actions
WiktorProsowicz Jan 10, 2026
68fe199
Update README
WiktorProsowicz Jan 11, 2026
e87e5ed
Updated Changelog for v0.1
WiktorProsowicz Jan 11, 2026
f84ded7
Merge branch 'add_documentation' into develop
WiktorProsowicz Jan 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .devcontainer/base/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
FROM ubuntu:noble

SHELL ["/bin/bash", "-c"]
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
wget \
git \
openssh-client \
sudo \
just

COPY .devcontainer/scripts/base-setup.sh /tmp/base-setup.sh
RUN chmod +x /tmp/base-setup.sh \
&& USERNAME="ubuntu" /tmp/base-setup.sh

USER ubuntu
WORKDIR /home/ubuntu/workspace
45 changes: 45 additions & 0 deletions .devcontainer/base/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "base",
"build": {
"dockerfile": "Dockerfile",
"context": "../.."
},

"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "latest",
"moby": false
}
},

"workspaceMount": "source=${localWorkspaceFolder},target=/home/ubuntu/workspace,type=bind",
"workspaceFolder": "/home/ubuntu/workspace",

"mounts": [
"type=bind,source=${localEnv:SSH_AUTH_SOCK},target=/ssh-agent"
],

"remoteUser": "ubuntu",
"remoteEnv": {
"SSH_AUTH_SOCK": "/ssh-agent",
"GIT_CONFIG_GLOBAL": "/home/ubuntu/.gitconfig"
},

"overrideCommand": true,
"postCreateCommand": "/bin/bash .devcontainer/res/post_create_command.bash",

"customizations": {
"vscode": {
"extensions": [
"skellock.just",
"ms-python.python",
"ms-python.pylint",
"ms-python.autopep8",
"tamasfe.even-better-toml",
"VisualStudioExptTeam.vscodeintellicode",
"mhutchie.git-graph",
"eamodio.gitlens"
]
}
}
}
21 changes: 21 additions & 0 deletions .devcontainer/context-retriever/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM python:3.12

SHELL ["/bin/bash", "-c"]
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl wget git openssh-client sudo \
just gcc g++

RUN groupadd -g 1000 appuser && useradd appuser -u 1000 -g 1000 -m -s /bin/bash
RUN chown -R appuser:appuser /home/appuser/

COPY .devcontainer/scripts/base-setup.sh /tmp/base-setup.sh
RUN chmod +x /tmp/base-setup.sh \
&& USERNAME="appuser" /tmp/base-setup.sh

USER appuser
WORKDIR /home/appuser/workspace

RUN wget -qO- https://astral.sh/uv/install.sh | sh
35 changes: 35 additions & 0 deletions .devcontainer/context-retriever/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "context-retriever",
"build": {
"dockerfile": "Dockerfile",
"context": "../.."
},
"workspaceMount": "source=${localWorkspaceFolder},target=/home/appuser/workspace,type=bind",
"workspaceFolder": "/home/appuser/workspace/services/context-retriever",
"mounts": [
"type=bind,source=${localEnv:SSH_AUTH_SOCK},target=/ssh-agent"
],
"remoteUser": "appuser",
"remoteEnv": {
"SSH_AUTH_SOCK": "/ssh-agent",
"GIT_CONFIG_GLOBAL": "/home/appuser/.gitconfig"
},
"runArgs": [
"--network=host"
],
"overrideCommand": true,
"postCreateCommand": "cd /home/appuser/workspace && /bin/bash .devcontainer/res/post_create_command.bash",
"customizations": {
"vscode": {
"extensions": [
"skellock.just",
"ms-python.python",
"ms-python.pylint",
"ms-python.autopep8",
"tamasfe.even-better-toml",
"VisualStudioExptTeam.vscodeintellicode",
"matangover.mypy"
]
}
}
}
21 changes: 21 additions & 0 deletions .devcontainer/llm-proxy/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM python:3.12

SHELL ["/bin/bash", "-c"]
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl wget git openssh-client sudo \
just gcc g++

RUN groupadd -g 1000 appuser && useradd appuser -u 1000 -g 1000 -m -s /bin/bash
RUN chown -R appuser:appuser /home/appuser/

COPY .devcontainer/scripts/base-setup.sh /tmp/base-setup.sh
RUN chmod +x /tmp/base-setup.sh \
&& USERNAME="appuser" /tmp/base-setup.sh

USER appuser
WORKDIR /home/appuser/workspace

RUN wget -qO- https://astral.sh/uv/install.sh | sh
35 changes: 35 additions & 0 deletions .devcontainer/llm-proxy/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "llm-proxy",
"build": {
"dockerfile": "Dockerfile",
"context": "../.."
},
"workspaceMount": "source=${localWorkspaceFolder},target=/home/appuser/workspace,type=bind",
"workspaceFolder": "/home/appuser/workspace/services/llm-proxy",
"mounts": [
"type=bind,source=${localEnv:SSH_AUTH_SOCK},target=/ssh-agent"
],
"remoteUser": "appuser",
"remoteEnv": {
"SSH_AUTH_SOCK": "/ssh-agent",
"GIT_CONFIG_GLOBAL": "/home/appuser/.gitconfig"
},
"runArgs": [
"--network=host"
],
"overrideCommand": true,
"postCreateCommand": "cd /home/appuser/workspace && /bin/bash .devcontainer/res/post_create_command.bash",
"customizations": {
"vscode": {
"extensions": [
"skellock.just",
"ms-python.python",
"ms-python.pylint",
"ms-python.autopep8",
"tamasfe.even-better-toml",
"VisualStudioExptTeam.vscodeintellicode",
"matangover.mypy"
]
}
}
}
1 change: 1 addition & 0 deletions .devcontainer/res/.bash_aliases
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
alias gitgrlog='git log --pretty=format:"%C(yellow)%h%C(reset) %C(magenta)%cd%C(reset) %C(auto)%d%C(reset) %s" --graph --date=format:"%Y.%m.%d" --decorate=auto'
29 changes: 29 additions & 0 deletions .devcontainer/res/.bashrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@

# --------------------------------------------------------------------------------------
# Borrowed from the .bashrc configuration of mcr.microsoft.com/devcontainers/base:jammy
# --------------------------------------------------------------------------------------

__bash_prompt() {
local userpart='`export XIT=$? \
&& [ ! -z "${GITHUB_USER}" ] && echo -n "\[\033[0;32m\]@${GITHUB_USER} " || echo -n "\[\033[0;32m\]\u " \
&& [ "$XIT" -ne "0" ] && echo -n "\[\033[1;31m\]➜" || echo -n "\[\033[0m\]➜"`'
local gitbranch='`\
if [ "$(git config --get devcontainers-theme.hide-status 2>/dev/null)" != 1 ] && [ "$(git config --get codespaces-theme.hide-status 2>/dev/null)" != 1 ]; then \
export BRANCH=$(git --no-optional-locks symbolic-ref --short HEAD 2>/dev/null || git --no-optional-locks rev-parse --short HEAD 2>/dev/null); \
if [ "${BRANCH}" != "" ]; then \
echo -n "\[\033[0;36m\](\[\033[1;31m\]${BRANCH}" \
&& if [ "$(git config --get devcontainers-theme.show-dirty 2>/dev/null)" = 1 ] && \
git --no-optional-locks ls-files --error-unmatch -m --directory --no-empty-directory -o --exclude-standard ":/*" > /dev/null 2>&1; then \
echo -n " \[\033[1;33m\]✗"; \
fi \
&& echo -n "\[\033[0;36m\]) "; \
fi; \
fi`'
local lightblue='\[\033[1;34m\]'
local removecolor='\[\033[0m\]'
PS1="${userpart} ${lightblue}\w ${gitbranch}${removecolor}\$ "
unset -f __bash_prompt
}
__bash_prompt

export PATH=/home/$USER/.local/bin:$PATH
8 changes: 8 additions & 0 deletions .devcontainer/res/post_create_command.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

# This script should be run after the devcontainer is created.
# It's role is to establish the necessary environment for the
# user to start developing.

cat .devcontainer/res/.bash_aliases >> ~/.bash_aliases
cat .devcontainer/res/.bashrc >> ~/.bashrc
14 changes: 14 additions & 0 deletions .devcontainer/scripts/base-setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

set -euo pipefail

if ! id "${USERNAME}" &>/dev/null; then
echo "User '${USERNAME}' does not exist. Create it in the Dockerfile before running this script." >&2
exit 1
fi

usermod -aG sudo "${USERNAME}"
echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/${USERNAME}"
chmod 440 "/etc/sudoers.d/${USERNAME}"

git config --system core.sshCommand /usr/bin/ssh
26 changes: 26 additions & 0 deletions .devcontainer/web-app/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM python:3.12-slim

SHELL ["/bin/bash", "-c"]
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
wget \
git \
openssh-client \
sudo \
just \
libmagic1

RUN groupadd -g 1000 appuser && useradd appuser -u 1000 -g 1000 -m -s /bin/bash
RUN chown -R appuser:appuser /home/appuser/

COPY .devcontainer/scripts/base-setup.sh /tmp/base-setup.sh
RUN chmod +x /tmp/base-setup.sh \
&& USERNAME="appuser" /tmp/base-setup.sh

USER appuser
WORKDIR /home/appuser/workspace

RUN wget -qO- https://astral.sh/uv/install.sh | sh
35 changes: 35 additions & 0 deletions .devcontainer/web-app/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "web-app",
"build": {
"dockerfile": "Dockerfile",
"context": "../.."
},
"workspaceMount": "source=${localWorkspaceFolder},target=/home/appuser/workspace,type=bind",
"workspaceFolder": "/home/appuser/workspace/services/web-app",
"mounts": [
"type=bind,source=${localEnv:SSH_AUTH_SOCK},target=/ssh-agent"
],
"remoteUser": "appuser",
"remoteEnv": {
"SSH_AUTH_SOCK": "/ssh-agent",
"GIT_CONFIG_GLOBAL": "/home/appuser/.gitconfig"
},
"runArgs": [
"--network=host"
],
"overrideCommand": true,
"postCreateCommand": "cd /home/appuser/workspace && /bin/bash .devcontainer/res/post_create_command.bash",
"customizations": {
"vscode": {
"extensions": [
"skellock.just",
"ms-python.python",
"ms-python.pylint",
"ms-python.autopep8",
"tamasfe.even-better-toml",
"VisualStudioExptTeam.vscodeintellicode",
"matangover.mypy"
]
}
}
}
36 changes: 36 additions & 0 deletions .github/actions/run-precommit-for-service/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: Run Pre-commit for Service
description: Set up a Dev-Container for a specific service and run pre-commit checks within that environment.

inputs:
devcontainer-cfg-path:
description: Directory containing .devcontainer configuration for the service.
required: true

service-workdir:
description: Working directory inside the Dev-Container where the service code resides.
required: true

runs:
using: composite

steps:
- name: Verify Docker engine
run: docker version
shell: bash

- name: Ensure SSH agent mount path exists
run: |
if [ ! -e "${SSH_AUTH_SOCK}" ]; then
touch "${SSH_AUTH_SOCK}"
fi
shell: bash

- name: Run pre-commit in devcontainer
uses: devcontainers/ci@v0.3
with:
configFile: ${{ inputs.devcontainer-cfg-path }}/devcontainer.json
runCmd: |
cd ${{ inputs.service-workdir }} && \
just setup-environment && \
just run-precommit
Loading