Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0a632e0
Development (#466)
paullizer Sep 26, 2025
7c81d68
Development (#467)
paullizer Sep 26, 2025
6f02b50
updated version and tests
paullizer Sep 26, 2025
f35c8bf
swagger support for all endpoints and added swagger search
paullizer Sep 29, 2025
e745548
added wide screen support for chats when collapsing side bar
paullizer Sep 29, 2025
2e48dfc
Merge branch 'Development' into swagger-lite
paullizer Sep 29, 2025
dca4f13
v0.230.001 features
paullizer Sep 29, 2025
2bb1750
Merge branch 'swagger-lite' of https://github.com/microsoft/simplecha…
paullizer Sep 29, 2025
f549de9
Merge branch 'swagger-lite' into main
paullizer Oct 1, 2025
1eda535
fix for bug 485
nadoylemsft Oct 3, 2025
a8221b9
fixed bugs due to branch descrepancies
cjackson202 Oct 6, 2025
3e3c8c8
added Azure SQL Driver Docker File
cjackson202 Oct 7, 2025
c93ea7b
added documentation for docker_fileSession updates
cjackson202 Oct 7, 2025
8c5c2ba
Redis Managed Identity Azure Government Support Changes
cjackson202 Oct 7, 2025
39b4528
Stop tracking ignored folders
cjackson202 Oct 8, 2025
ba1ca48
updated gitignore
cjackson202 Oct 8, 2025
95a7647
Merge branch 'cj-dev' into Development - Ensured ManagedIdentity supp…
cjackson202 Oct 8, 2025
711e0de
Merge pull request #488 from cjackson202/Development
Bionic711 Oct 10, 2025
6a3c322
Merge branch 'Development' into bugfix485
nadoylemsft Oct 10, 2025
71eff52
Merge pull request #487 from microsoft/bugfix485
Bionic711 Oct 10, 2025
044c7d9
Document Set Fingerprinting, Scope-Aware Cache Key Generation, Event-…
paullizer Nov 10, 2025
7ac37b4
added debug logging
paullizer Nov 10, 2025
3d84394
setup cache feature and ttl time to admin app settings
paullizer Nov 10, 2025
bf1f14a
removed cosmos level ttl
paullizer Nov 10, 2025
baa71a9
Keyvault for secrets (#492)
Bionic711 Nov 11, 2025
db74c0d
Feature/remove abp for pr (#510)
Bionic711 Nov 12, 2025
0fd0eae
Merge branch 'improved-search' into Development
paullizer Nov 12, 2025
2035b90
Feature/group agents actions (#521)
Bionic711 Nov 19, 2025
fab926b
Merge branch 'Data-and-Workspace-Management' into Development
paullizer Nov 19, 2025
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
4 changes: 4 additions & 0 deletions .github/copilot-instructions.md
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
---
applyTo: '**'
---

# REPO SPECIFIC INSTRUCTIONS

---
Expand Down
13 changes: 13 additions & 0 deletions .github/instructions/python-lang.instructions.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
---
applyTo: '**'
---

# Python Language Guide

- Files should start with a comment of the file name. Ex: `# functions_personal_agents.py`

- Imports should be grouped at the top of the document after the module docstring, unless otherwise indicated by the user or for performance reasons in which case the import should be as close as possible to the usage with a documented note as to why the import is not at the top of the file.

- Use 4 spaces per indentation level. No tabs.

- Code and definitions should occur after the imports block.
10 changes: 0 additions & 10 deletions .github/workflows/docker_image_publish.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -25,16 +25,6 @@ jobs:
login-server: ${{ secrets.ACR_LOGIN_SERVER }}

- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Ajv
run: npm install ajv@^8.0.0 ajv-cli@^5.0.0
- name: Install Ajv
run: npm install ajv@^8.0.0 ajv-formats
- name: Generate standalone JSON schema validators
run: node scripts/generate-validators.mjs
- name: Build the Docker image
run:
docker build . --file application/single_app/Dockerfile --tag ${{ secrets.ACR_LOGIN_SERVER }}/simple-chat:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER;
Expand Down
8 changes: 0 additions & 8 deletions .github/workflows/docker_image_publish_dev.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,14 +26,6 @@ jobs:
login-server: ${{ secrets.ACR_LOGIN_SERVER }}

- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Ajv
run: npm install ajv@^8.0.0 ajv-formats
- name: Generate standalone JSON schema validators
run: node scripts/generate-validators.mjs
- name: Build the Docker image
run:
docker build . --file application/single_app/Dockerfile --tag ${{ secrets.ACR_LOGIN_SERVER }}/simple-chat-dev:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER;
Expand Down
23 changes: 8 additions & 15 deletions .github/workflows/docker_image_publish_nadoyle.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,7 @@ on:
push:
branches:
- nadoyle
- feature/group-agents-actions

workflow_dispatch:

Expand All@@ -19,24 +20,16 @@ jobs:
uses: Azure/docker-login@v2
with:
# Container registry username
username: ${{ secrets.ACR_USERNAME }}
username: ${{ secrets.ACR_USERNAME_NADOYLE }}
# Container registry password
password: ${{ secrets.ACR_PASSWORD }}
password: ${{ secrets.ACR_PASSWORD_NADOYLE }}
# Container registry server url
login-server: ${{ secrets.ACR_LOGIN_SERVER }}
login-server: ${{ secrets.ACR_LOGIN_SERVER_NADOYLE }}

- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Ajv
run: npm install ajv@^8.0.0 ajv-formats
- name: Generate standalone JSON schema validators
run: node scripts/generate-validators.mjs
- name: Build the Docker image
run:
docker build . --file application/single_app/Dockerfile --tag ${{ secrets.ACR_LOGIN_SERVER }}/simple-chat-dev:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER;
docker tag ${{ secrets.ACR_LOGIN_SERVER }}/simple-chat-dev:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER ${{ secrets.ACR_LOGIN_SERVER }}/simple-chat-dev:latest;
docker push ${{ secrets.ACR_LOGIN_SERVER }}/simple-chat-dev:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER;
docker push ${{ secrets.ACR_LOGIN_SERVER }}/simple-chat-dev:latest;
docker build . --file application/single_app/Dockerfile --tag ${{ secrets.ACR_LOGIN_SERVER_NADOYLE }}/simple-chat-dev:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER;
docker tag ${{ secrets.ACR_LOGIN_SERVER_NADOYLE }}/simple-chat-dev:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER ${{ secrets.ACR_LOGIN_SERVER_NADOYLE }}/simple-chat-dev:latest;
docker push ${{ secrets.ACR_LOGIN_SERVER_NADOYLE }}/simple-chat-dev:$(date +'%Y-%m-%d')_$GITHUB_RUN_NUMBER;
docker push ${{ secrets.ACR_LOGIN_SERVER_NADOYLE }}/simple-chat-dev:latest;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
# Stage 1: System dependencies and ODBC driver install
ARG PYTHON_VERSION_ARG="3.12"
FROM python:3.12 AS builder

ARG PYTHON_VERSION_ARG
ARG DRIVER_MAJOR_VERSION="2.9.2"
ARG DRIVER_MINOR_VERSION=1008
ARG BUCKET_URI="https://databricks-bi-artifacts.s3.us-east-2.amazonaws.com/simbaspark-drivers/odbc"

ENV PYTHONIOENCODING=utf-8
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV DRIVER_FULL_VERSION=${DRIVER_MAJOR_VERSION}.${DRIVER_MINOR_VERSION}
ENV FOLDER_NAME=SimbaSparkODBC-${DRIVER_FULL_VERSION}-Debian-64bit
ENV ZIP_FILE_NAME=${FOLDER_NAME}.zip

WORKDIR /deps

RUN apt-get update && apt-get install -y unixodbc unixodbc-dev wget unzip libsasl2-modules-gssapi-mit
# "https://databricks-bi-artifacts.s3.us-east-2.amazonaws.com/simbaspark-drivers/odbc/2.9.2/SimbaSparkODBC-2.9.2.1008-Debian-64bit.zip"
RUN wget -O /tmp/simbaspark.zip ${BUCKET_URI}/${DRIVER_MAJOR_VERSION}/${ZIP_FILE_NAME} \
&& unzip /tmp/simbaspark.zip -d /tmp/simbaspark && rm /tmp/simbaspark.zip

RUN dpkg -i /tmp/simbaspark/SimbaSparkODBC-2.9.2.1008-Debian-64bit/simbaspark_2.9.2.1008-2_amd64.deb

USER root
RUN groupadd -g 65532 nonroot && useradd -m -u 65532 -g nonroot nonroot
RUN python -m venv /app/venv
RUN pip install pyodbc \
&& pip install wheel \
&& pip wheel pyodbc -w /tmp/pyodbc-wheel

#RUN find / -name "*odbc*" || true
RUN find / -name "*python${PYTHON_VERSION_ARG}*" || true

WORKDIR /app
# Copy requirements and install them into the virtualenv
ENV PATH="/app/venv/bin:$PATH"
COPY requirements.txt .
RUN pip install /tmp/pyodbc-wheel/pyodbc-*.whl \
&& pip install --no-cache-dir -r requirements.txt

# Fix permissions so nonroot can use everything
RUN chown -R 65532:65532 /app

RUN echo "[Simba Spark ODBC Driver]\nDescription=Simba Spark ODBC Driver\nDriver=/opt/simba/spark/lib/64/libsparkodbc_sb64.so" > /etc/odbcinst.ini
RUN echo "[ODBC Data Sources]\nSimba Spark ODBC DSN=Simba Spark ODBC Driver" > /etc/odbc.ini
RUN find / -type f -name '*odbc*' || true
RUN find /etc/ -type f -name '*odbc*' -exec echo "Contents of {}:" \; -exec cat {} \; || true

RUN echo "PATH contents:" && echo $PATH | tr ':' '\n' \
&& echo "LD_LIBRARY_PATH contents:" && echo $LD_LIBRARY_PATH | tr ':' '\n'

RUN mkdir -p /app/flask_session && chown -R 65532:65532 /app/flask_session
RUN mkdir /sc-temp-files
RUN cat /opt/simba/spark/Setup/odbc.ini
RUN cat /opt/simba/spark/Setup/odbcinst.ini
USER 65532:65532

#Stage 3: Final containter
FROM gcr.io/distroless/python3:latest
ARG PYTHON_VERSION_ARG
WORKDIR /app
USER root
ENV PYTHONIOENCODING=utf-8
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV PYTHONUNBUFFERED=1
ENV PATH="/app/venv/bin:/usr/local/bin:$PATH"
ENV LD_LIBRARY_PATH="/opt/simba/spark/lib/64:/usr/local/lib:/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:-}"
#Copy 3.12 from Base
COPY --from=builder /usr/local/lib/python${PYTHON_VERSION_ARG} /usr/local/lib/python${PYTHON_VERSION_ARG}
COPY --from=builder \
/usr/local/lib/libpython3.12.so \
/usr/local/lib/libpython3.12.so.1.0 \
/usr/local/lib/libpython3.so \
/usr/local/lib/pkgconfig \
/usr/local/lib/python3.12 \
/usr/local/lib/python3.13 \
/usr/local/lib/
# Copy the Python interpreter with a specific name
COPY --from=builder /usr/local/bin/python${PYTHON_VERSION_ARG} /usr/local/bin/python${PYTHON_VERSION_ARG}
# Add all common Python 3.12 entrypoints for compatibility
COPY --from=builder \
/usr/local/bin/python \
/usr/local/bin/python3 \
/usr/local/bin/python${PYTHON_VERSION_ARG} \
/usr/local/bin/

# Copy system libraries for x86_64
COPY --from=builder /lib/x86_64-linux-gnu/ /lib/x86_64-linux-gnu/

# Copy ODBC from deps build
COPY --from=builder /usr/include /usr/include
COPY --from=builder /opt/simba /opt/simba
COPY --from=builder \
/etc/odbc.ini \
/etc/odbcinst.ini \
/etc/
COPY --from=builder \
/usr/lib/x86_64-linux-gnu/libodbc.so \
/usr/lib/x86_64-linux-gnu/libodbc.so.2 \
/usr/lib/x86_64-linux-gnu/libodbc.so.2.0.0 \
/usr/lib/x86_64-linux-gnu/libodbcinst.so \
/usr/lib/x86_64-linux-gnu/libodbcinst.so.2 \
/usr/lib/x86_64-linux-gnu/libodbcinst.so.2.0.0 \
/usr/lib/x86_64-linux-gnu/libodbccr.so \
/usr/lib/x86_64-linux-gnu/libodbccr.so.2 \
/usr/lib/x86_64-linux-gnu/libodbccr.so.2.0.0 \
/usr/lib/x86_64-linux-gnu/

# Copy application code and set ownership
COPY --chown=65532:65532 . ./

# Copy the virtualenv from the builder stage
COPY --from=builder --chown=65532:65532 /app/venv /app/venv
COPY --from=builder --chown=65532:65532 /app/flask_session /app/flask_session
COPY --from=builder --chown=65532:65532 /sc-temp-files /sc-temp-files

# Expose port
EXPOSE 5000

USER 65532:65532

ENTRYPOINT ["/app/venv/bin/python", "-c", "import sys, runpy; print('Executable:', sys.executable); print('Version:', sys.version); runpy.run_path('/app/app.py', run_name='__main__')"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Databricks Table Plugin Additional Settings",
"type": "object",
"properties": {
"warehouse_id": {
"type": "string",
"description": "Databricks SQL Warehouse ID (string, required)"
},
"httpPath": {
"type": "string",
"description": "Databricks SQL Warehouse HTTP Path (string, required)"
},
"port": {
"type": "integer",
"description": "Port for Databricks ODBC connection (default 443)",
"default": 443
},
"database": {
"type": "string",
"description": "Default database/schema to use (optional)"
},
"table_name": {
"type": "string",
"description": "Name of the hive table that represents the 'global catalog'"
},
"query_history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"query": {
"type": "string"
}
}
}
}
},
"required": ["warehouse_id", "httpPath"],
"additionalProperties": false
}
Loading
Loading