Skip to content

Conversation

@nora-errouhly
Copy link
Contributor

fixed column headers so only actual columns are loaded as columns (not subtitles).
added data cleaning step before database loading to remove rows /columns where all values are null.

@codecov-commenter
Copy link

codecov-commenter commented Oct 13, 2025

Codecov Report

❌ Patch coverage is 43.75000% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 79.78%. Comparing base (6c76e7a) to head (9ad48ed).
⚠️ Report is 1 commits behind head on feature/tabular-worker.

Files with missing lines Patch % Lines
redbox/redbox/graph/nodes/processes.py 44.68% 26 Missing ⚠️
redbox/redbox/graph/nodes/tools.py 0.00% 1 Missing ⚠️
Additional details and impacted files
@@                    Coverage Diff                     @@
##           feature/tabular-worker     #492      +/-   ##
==========================================================
- Coverage                   79.95%   79.78%   -0.18%     
==========================================================
  Files                         158      158              
  Lines                        5883     5906      +23     
==========================================================
+ Hits                         4704     4712       +8     
- Misses                       1179     1194      +15     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

len(values) > 1
and all(not value.lower().startswith("unnamed") for value in trimmed_values)
and "".join(trimmed_values)
and sum([1 if not val else 0 for val in trimmed_values]) < 2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to check, this line looks for less than 2 empty column headers out of the first ten cols? Would this still find the right row for narrower tables?

Copy link
Contributor Author

@nora-errouhly nora-errouhly Oct 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes it consider a column header to have less than two empty columns. Narrower tables should not be an issue even if it has less than ten cols. We check the first ten cols to speed up the processing. Using an excel spreadsheet from Saisakul, this code worked on majority of sheets but missed a single sheet which has a column header with more than two empty cells. that's why we agreed that we need LLM to handle a wide variety of tables to accurately extract column headers. This should be a separate ticket

Copy link
Contributor

@sophie-daintta sophie-daintta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved with understanding that LLM header recognition will be developed in a separate PR.

@nora-errouhly nora-errouhly merged commit 482f8f4 into feature/tabular-worker Oct 20, 2025
5 checks passed
nora-errouhly added a commit that referenced this pull request Oct 21, 2025
* tabular agent in newroute

* fix after merge conflict

* Feature/tabular testing (#472)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* Simple fix on tabular agent str content attribute error

* Add multiagent tabular test

* Minor fixes to get_tabular_agent

* Update multiagent tests for tabular

* Separate generic error and SQL error

* Add comment and update test evaluator

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Sophie Glinton <>

* Feature/tabular worker iterative (#482)

* fixed step by step reasoning

* remove unexpected import

* typo

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/fix header db (#492)

* fixed step by step reasoning

* remove unexpected import

* typo

* fix colum headers and delete nans

* handling dots in table names

* just ruff

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/tabular worker merge dev (#514)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* feat: >80% test coverage (#462)

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* feat: remove ClamAV in favour of GuardDuty (#468)

* feat: remove ClamAV in favour of GuardDuty

* fixes

* fix

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* revert unrelated changes

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>

* feat: remove django chunk handler

* fix: previous migration

* feat: enable cross region inference (#490)

* feat: increase character limit for model name (#495)

* added monitoring of web search agent queries and results (#481)

* added monitoring of web search agent queries and results

* amended django page header for web search result

* added fields to read only

* redo migration file to resolve merge conflict

* Changed @ to at in header text(#496)

* Updated font family and size (#498)

* changed sign out to log out (#499)

* add retry to web search api call (#500)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Updated privacy policy (#501)

* add agent plan to admin (#503)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* feat: Notification service and teams models (#504)

* Brought in notification service and teams model

* Added none defaults for notify env vars

* Updated poetry config to make sure each app creates its own venv (#505)

* Added margin to bottom grid-row (#502)

* feat: offload document processing tasks from django app to worker (#508)

* feat: offload document processing tasks from django app to worker

* unique name not name

* fix tests

* build(deps): bump langchain-text-splitters in /django_app (#484)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.8 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.8...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump langchain-text-splitters in /notebooks (#483)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.5 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.5...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 (#487)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 in /redbox (#486)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps-dev): bump jupyterlab from 4.2.7 to 4.4.8 in /notebooks (#469)

Bumps [jupyterlab](https://github.com/jupyterlab/jupyterlab) from 4.2.7 to 4.4.8.
- [Release notes](https://github.com/jupyterlab/jupyterlab/releases)
- [Changelog](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md)
- [Commits](https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.2.7...@jupyterlab/lsp@4.4.8)

---
updated-dependencies:
- dependency-name: jupyterlab
  dependency-version: 4.4.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* Feature/teams admin (#507)

* Added team admin settings

* Removed invalid migration

* Attempt to fix invalid model ref

* added package ref

* reverted package change

* Delete redbox/__init__.py

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* tracks user request rather than last message to account for planner (#509)

* tracks user request rather than last message to account for planner

* added web api counter and only logs web results if agents have web results

* fix length threshold

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sophie Glinton <>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
nora-errouhly added a commit that referenced this pull request Nov 11, 2025
* tabular agent in newroute

* fix after merge conflict

* Feature/tabular testing (#472)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* Simple fix on tabular agent str content attribute error

* Add multiagent tabular test

* Minor fixes to get_tabular_agent

* Update multiagent tests for tabular

* Separate generic error and SQL error

* Add comment and update test evaluator

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Sophie Glinton <>

* Feature/tabular worker iterative (#482)

* fixed step by step reasoning

* remove unexpected import

* typo

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/fix header db (#492)

* fixed step by step reasoning

* remove unexpected import

* typo

* fix colum headers and delete nans

* handling dots in table names

* just ruff

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/tabular worker merge dev (#514)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* feat: >80% test coverage (#462)

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* feat: remove ClamAV in favour of GuardDuty (#468)

* feat: remove ClamAV in favour of GuardDuty

* fixes

* fix

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* revert unrelated changes

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>

* feat: remove django chunk handler

* fix: previous migration

* feat: enable cross region inference (#490)

* feat: increase character limit for model name (#495)

* added monitoring of web search agent queries and results (#481)

* added monitoring of web search agent queries and results

* amended django page header for web search result

* added fields to read only

* redo migration file to resolve merge conflict

* Changed @ to at in header text(#496)

* Updated font family and size (#498)

* changed sign out to log out (#499)

* add retry to web search api call (#500)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Updated privacy policy (#501)

* add agent plan to admin (#503)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* feat: Notification service and teams models (#504)

* Brought in notification service and teams model

* Added none defaults for notify env vars

* Updated poetry config to make sure each app creates its own venv (#505)

* Added margin to bottom grid-row (#502)

* feat: offload document processing tasks from django app to worker (#508)

* feat: offload document processing tasks from django app to worker

* unique name not name

* fix tests

* build(deps): bump langchain-text-splitters in /django_app (#484)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.8 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.8...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump langchain-text-splitters in /notebooks (#483)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.5 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.5...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 (#487)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 in /redbox (#486)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps-dev): bump jupyterlab from 4.2.7 to 4.4.8 in /notebooks (#469)

Bumps [jupyterlab](https://github.com/jupyterlab/jupyterlab) from 4.2.7 to 4.4.8.
- [Release notes](https://github.com/jupyterlab/jupyterlab/releases)
- [Changelog](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md)
- [Commits](https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.2.7...@jupyterlab/lsp@4.4.8)

---
updated-dependencies:
- dependency-name: jupyterlab
  dependency-version: 4.4.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* Feature/teams admin (#507)

* Added team admin settings

* Removed invalid migration

* Attempt to fix invalid model ref

* added package ref

* reverted package change

* Delete redbox/__init__.py

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* tracks user request rather than last message to account for planner (#509)

* tracks user request rather than last message to account for planner

* added web api counter and only logs web results if agents have web results

* fix length threshold

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sophie Glinton <>

* file handling

* ruff

* fixed pytest

* adding tabular context to evaluator

* adding unit test on relevant  graph section

* ruff

* feat: tabular test update (#550)

* feat: tabular test update

* fix: cleanup old refs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
saisakul added a commit that referenced this pull request Nov 12, 2025
* tabular agent in newroute

* fix after merge conflict

* Feature/tabular testing (#472)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* Simple fix on tabular agent str content attribute error

* Add multiagent tabular test

* Minor fixes to get_tabular_agent

* Update multiagent tests for tabular

* Separate generic error and SQL error

* Add comment and update test evaluator

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Sophie Glinton <>

* Feature/tabular worker iterative (#482)

* fixed step by step reasoning

* remove unexpected import

* typo

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/fix header db (#492)

* fixed step by step reasoning

* remove unexpected import

* typo

* fix colum headers and delete nans

* handling dots in table names

* just ruff

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/tabular worker merge dev (#514)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* feat: >80% test coverage (#462)

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* feat: remove ClamAV in favour of GuardDuty (#468)

* feat: remove ClamAV in favour of GuardDuty

* fixes

* fix

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* revert unrelated changes

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>

* feat: remove django chunk handler

* fix: previous migration

* feat: enable cross region inference (#490)

* feat: increase character limit for model name (#495)

* added monitoring of web search agent queries and results (#481)

* added monitoring of web search agent queries and results

* amended django page header for web search result

* added fields to read only

* redo migration file to resolve merge conflict

* Changed @ to at in header text(#496)

* Updated font family and size (#498)

* changed sign out to log out (#499)

* add retry to web search api call (#500)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Updated privacy policy (#501)

* add agent plan to admin (#503)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* feat: Notification service and teams models (#504)

* Brought in notification service and teams model

* Added none defaults for notify env vars

* Updated poetry config to make sure each app creates its own venv (#505)

* Added margin to bottom grid-row (#502)

* feat: offload document processing tasks from django app to worker (#508)

* feat: offload document processing tasks from django app to worker

* unique name not name

* fix tests

* build(deps): bump langchain-text-splitters in /django_app (#484)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.8 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.8...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump langchain-text-splitters in /notebooks (#483)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.5 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.5...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 (#487)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 in /redbox (#486)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps-dev): bump jupyterlab from 4.2.7 to 4.4.8 in /notebooks (#469)

Bumps [jupyterlab](https://github.com/jupyterlab/jupyterlab) from 4.2.7 to 4.4.8.
- [Release notes](https://github.com/jupyterlab/jupyterlab/releases)
- [Changelog](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md)
- [Commits](https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.2.7...@jupyterlab/lsp@4.4.8)

---
updated-dependencies:
- dependency-name: jupyterlab
  dependency-version: 4.4.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* Feature/teams admin (#507)

* Added team admin settings

* Removed invalid migration

* Attempt to fix invalid model ref

* added package ref

* reverted package change

* Delete redbox/__init__.py

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* tracks user request rather than last message to account for planner (#509)

* tracks user request rather than last message to account for planner

* added web api counter and only logs web results if agents have web results

* fix length threshold

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sophie Glinton <>

* file handling

* ruff

* fixed pytest

* adding tabular context to evaluator

* adding unit test on relevant  graph section

* ruff

* feat: tabular test update (#550)

* feat: tabular test update

* fix: cleanup old refs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
nboyse added a commit that referenced this pull request Nov 12, 2025
* tabular agent in newroute

* fix after merge conflict

* Feature/tabular testing (#472)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* Simple fix on tabular agent str content attribute error

* Add multiagent tabular test

* Minor fixes to get_tabular_agent

* Update multiagent tests for tabular

* Separate generic error and SQL error

* Add comment and update test evaluator

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Sophie Glinton <>

* Feature/tabular worker iterative (#482)

* fixed step by step reasoning

* remove unexpected import

* typo

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/fix header db (#492)

* fixed step by step reasoning

* remove unexpected import

* typo

* fix colum headers and delete nans

* handling dots in table names

* just ruff

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/tabular worker merge dev (#514)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* feat: >80% test coverage (#462)

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* feat: remove ClamAV in favour of GuardDuty (#468)

* feat: remove ClamAV in favour of GuardDuty

* fixes

* fix

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* revert unrelated changes

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>

* feat: remove django chunk handler

* fix: previous migration

* feat: enable cross region inference (#490)

* feat: increase character limit for model name (#495)

* added monitoring of web search agent queries and results (#481)

* added monitoring of web search agent queries and results

* amended django page header for web search result

* added fields to read only

* redo migration file to resolve merge conflict

* Changed @ to at in header text(#496)

* Updated font family and size (#498)

* changed sign out to log out (#499)

* add retry to web search api call (#500)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Updated privacy policy (#501)

* add agent plan to admin (#503)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* feat: Notification service and teams models (#504)

* Brought in notification service and teams model

* Added none defaults for notify env vars

* Updated poetry config to make sure each app creates its own venv (#505)

* Added margin to bottom grid-row (#502)

* feat: offload document processing tasks from django app to worker (#508)

* feat: offload document processing tasks from django app to worker

* unique name not name

* fix tests

* build(deps): bump langchain-text-splitters in /django_app (#484)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.8 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.8...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump langchain-text-splitters in /notebooks (#483)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.5 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.5...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 (#487)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 in /redbox (#486)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps-dev): bump jupyterlab from 4.2.7 to 4.4.8 in /notebooks (#469)

Bumps [jupyterlab](https://github.com/jupyterlab/jupyterlab) from 4.2.7 to 4.4.8.
- [Release notes](https://github.com/jupyterlab/jupyterlab/releases)
- [Changelog](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md)
- [Commits](https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.2.7...@jupyterlab/lsp@4.4.8)

---
updated-dependencies:
- dependency-name: jupyterlab
  dependency-version: 4.4.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* Feature/teams admin (#507)

* Added team admin settings

* Removed invalid migration

* Attempt to fix invalid model ref

* added package ref

* reverted package change

* Delete redbox/__init__.py

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* tracks user request rather than last message to account for planner (#509)

* tracks user request rather than last message to account for planner

* added web api counter and only logs web results if agents have web results

* fix length threshold

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sophie Glinton <>

* file handling

* ruff

* fixed pytest

* adding tabular context to evaluator

* adding unit test on relevant  graph section

* ruff

* feat: tabular test update (#550)

* feat: tabular test update

* fix: cleanup old refs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
saisakul added a commit that referenced this pull request Nov 18, 2025
* add all retrieve tool

* add knowledge base'

* feat: Create FileType choice for FileSkill model (#560)

* Creted FileType choice for FileSkill model to differentiate between knowledge base and user-uploaded files for a skill

* Updated tests and skill.get_files method

* Updated info page to only show admin files and updated admin display to show file type

* feat: Update skill banner on chats page and expose selectedSkill (#562)

* Updated skill banner on chats page and passed selectedSkill to websocket stream

* Removed debug line

* Fixed side panel item cutoff bug on smaller screens

* add sub agent temp

* Feature/tabular state update (#528)

* tabular agent in newroute

* fix after merge conflict

* Feature/tabular testing (#472)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* Simple fix on tabular agent str content attribute error

* Add multiagent tabular test

* Minor fixes to get_tabular_agent

* Update multiagent tests for tabular

* Separate generic error and SQL error

* Add comment and update test evaluator

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Sophie Glinton <>

* Feature/tabular worker iterative (#482)

* fixed step by step reasoning

* remove unexpected import

* typo

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/fix header db (#492)

* fixed step by step reasoning

* remove unexpected import

* typo

* fix colum headers and delete nans

* handling dots in table names

* just ruff

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/tabular worker merge dev (#514)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* feat: >80% test coverage (#462)

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* feat: remove ClamAV in favour of GuardDuty (#468)

* feat: remove ClamAV in favour of GuardDuty

* fixes

* fix

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* revert unrelated changes

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>

* feat: remove django chunk handler

* fix: previous migration

* feat: enable cross region inference (#490)

* feat: increase character limit for model name (#495)

* added monitoring of web search agent queries and results (#481)

* added monitoring of web search agent queries and results

* amended django page header for web search result

* added fields to read only

* redo migration file to resolve merge conflict

* Changed @ to at in header text(#496)

* Updated font family and size (#498)

* changed sign out to log out (#499)

* add retry to web search api call (#500)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Updated privacy policy (#501)

* add agent plan to admin (#503)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* feat: Notification service and teams models (#504)

* Brought in notification service and teams model

* Added none defaults for notify env vars

* Updated poetry config to make sure each app creates its own venv (#505)

* Added margin to bottom grid-row (#502)

* feat: offload document processing tasks from django app to worker (#508)

* feat: offload document processing tasks from django app to worker

* unique name not name

* fix tests

* build(deps): bump langchain-text-splitters in /django_app (#484)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.8 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.8...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump langchain-text-splitters in /notebooks (#483)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.5 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.5...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 (#487)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 in /redbox (#486)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps-dev): bump jupyterlab from 4.2.7 to 4.4.8 in /notebooks (#469)

Bumps [jupyterlab](https://github.com/jupyterlab/jupyterlab) from 4.2.7 to 4.4.8.
- [Release notes](https://github.com/jupyterlab/jupyterlab/releases)
- [Changelog](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md)
- [Commits](https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.2.7...@jupyterlab/lsp@4.4.8)

---
updated-dependencies:
- dependency-name: jupyterlab
  dependency-version: 4.4.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* Feature/teams admin (#507)

* Added team admin settings

* Removed invalid migration

* Attempt to fix invalid model ref

* added package ref

* reverted package change

* Delete redbox/__init__.py

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* tracks user request rather than last message to account for planner (#509)

* tracks user request rather than last message to account for planner

* added web api counter and only logs web results if agents have web results

* fix length threshold

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sophie Glinton <>

* file handling

* ruff

* fixed pytest

* adding tabular context to evaluator

* adding unit test on relevant  graph section

* ruff

* feat: tabular test update (#550)

* feat: tabular test update

* fix: cleanup old refs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: optimise unstructured (#548)

* fix: optimise unstructured

* fixes

* fix: redbox tests should match new logic of unstructured

* increase timeout

* unit tests

* dont need to support image files tbh

* reasonable mitigation

* feat: Add filtering for chats and documents (#567)

* Added filtering for chats and documents and updated routing for skill chats

* Fixed failing test and added skills route for document upload

* Added tests for file skill upload

* feat: Update skill banner on chats page and expose selectedSkill (#562)

* Updated skill banner on chats page and passed selectedSkill to websocket stream

* Removed debug line

* Fixed side panel item cutoff bug on smaller screens

* submission agent

* fix not response

* fix async in consumers

* update prompt to check sub in prompt

* add tool to retrieve doc from prompt

* Updated skill and skill-info page content

* Removed redbox-default skills page entry

* Added document guidance block to skill info pages

* Changed skill-info page document names into links for download

* add prompt2doc test

* add test for create agent loop func

* add more cases for test agent function

* add knowledge base tool test

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: Nora Er-Rouhly <nora.errouhly@digital.trade.gov.uk>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.broadband>
Co-authored-by: David Okeke <david.okeke@madetech.com>
nboyse added a commit that referenced this pull request Nov 20, 2025
* add all retrieve tool

* add knowledge base'

* feat: Create FileType choice for FileSkill model (#560)

* Creted FileType choice for FileSkill model to differentiate between knowledge base and user-uploaded files for a skill

* Updated tests and skill.get_files method

* Updated info page to only show admin files and updated admin display to show file type

* feat: Update skill banner on chats page and expose selectedSkill (#562)

* Updated skill banner on chats page and passed selectedSkill to websocket stream

* Removed debug line

* Fixed side panel item cutoff bug on smaller screens

* add sub agent temp

* Feature/tabular state update (#528)

* tabular agent in newroute

* fix after merge conflict

* Feature/tabular testing (#472)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* Simple fix on tabular agent str content attribute error

* Add multiagent tabular test

* Minor fixes to get_tabular_agent

* Update multiagent tests for tabular

* Separate generic error and SQL error

* Add comment and update test evaluator

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Sophie Glinton <>

* Feature/tabular worker iterative (#482)

* fixed step by step reasoning

* remove unexpected import

* typo

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/fix header db (#492)

* fixed step by step reasoning

* remove unexpected import

* typo

* fix colum headers and delete nans

* handling dots in table names

* just ruff

---------

Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>

* Feature/tabular worker merge dev (#514)

* remove chat agent (#461)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Simple fix to await text_in_answer (#460)

Co-authored-by: Sophie Glinton <>

* feat: >80% test coverage (#462)

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* feat: remove ClamAV in favour of GuardDuty (#468)

* feat: remove ClamAV in favour of GuardDuty

* fixes

* fix

* change websearch to return 20 results (#474)

* change websearch to return 20 results

* fix websearch tool and test

* add skip api call

---------

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>

* Feature/legislation agent (#467)

* added legislation worker to graph

* removed references to obsolete legislation route

* added unit tests for legislation agent

* added unit tests for legislation tool

* amended test strings for relevance, fix url sanitization requirement, and test matches tool call signature

* fixed legislation test to match args and test for max results instead

* text conversion await (#476)

Co-authored-by: Sophie Glinton <>

* Revert "text conversion await (#476)" (#479)

This reverts commit 95ff2fe.

* add uwotm8 test (#477)

* add uwotm8 test

* Monkey patch uwotm8

---------

Co-authored-by: Sophie Glinton <>

* revert unrelated changes

---------

Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>

* feat: remove django chunk handler

* fix: previous migration

* feat: enable cross region inference (#490)

* feat: increase character limit for model name (#495)

* added monitoring of web search agent queries and results (#481)

* added monitoring of web search agent queries and results

* amended django page header for web search result

* added fields to read only

* redo migration file to resolve merge conflict

* Changed @ to at in header text(#496)

* Updated font family and size (#498)

* changed sign out to log out (#499)

* add retry to web search api call (#500)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* Updated privacy policy (#501)

* add agent plan to admin (#503)

Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>

* feat: Notification service and teams models (#504)

* Brought in notification service and teams model

* Added none defaults for notify env vars

* Updated poetry config to make sure each app creates its own venv (#505)

* Added margin to bottom grid-row (#502)

* feat: offload document processing tasks from django app to worker (#508)

* feat: offload document processing tasks from django app to worker

* unique name not name

* fix tests

* build(deps): bump langchain-text-splitters in /django_app (#484)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.8 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.8...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump langchain-text-splitters in /notebooks (#483)

Bumps [langchain-text-splitters](https://github.com/langchain-ai/langchain) from 0.3.5 to 0.3.9.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](langchain-ai/langchain@langchain-text-splitters==0.3.5...langchain-text-splitters==0.3.9)

---
updated-dependencies:
- dependency-name: langchain-text-splitters
  dependency-version: 0.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 (#487)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps): bump django from 5.2.6 to 5.2.7 in /redbox (#486)

Bumps [django](https://github.com/django/django) from 5.2.6 to 5.2.7.
- [Commits](django/django@5.2.6...5.2.7)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 5.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* build(deps-dev): bump jupyterlab from 4.2.7 to 4.4.8 in /notebooks (#469)

Bumps [jupyterlab](https://github.com/jupyterlab/jupyterlab) from 4.2.7 to 4.4.8.
- [Release notes](https://github.com/jupyterlab/jupyterlab/releases)
- [Changelog](https://github.com/jupyterlab/jupyterlab/blob/main/RELEASE.md)
- [Commits](https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.2.7...@jupyterlab/lsp@4.4.8)

---
updated-dependencies:
- dependency-name: jupyterlab
  dependency-version: 4.4.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* Feature/teams admin (#507)

* Added team admin settings

* Removed invalid migration

* Attempt to fix invalid model ref

* added package ref

* reverted package change

* Delete redbox/__init__.py

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

* tracks user request rather than last message to account for planner (#509)

* tracks user request rather than last message to account for planner

* added web api counter and only logs web results if agents have web results

* fix length threshold

---------

Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sophie Glinton <>

* file handling

* ruff

* fixed pytest

* adding tabular context to evaluator

* adding unit test on relevant  graph section

* ruff

* feat: tabular test update (#550)

* feat: tabular test update

* fix: cleanup old refs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <159020482+saisakul@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: optimise unstructured (#548)

* fix: optimise unstructured

* fixes

* fix: redbox tests should match new logic of unstructured

* increase timeout

* unit tests

* dont need to support image files tbh

* reasonable mitigation

* feat: Add filtering for chats and documents (#567)

* Added filtering for chats and documents and updated routing for skill chats

* Fixed failing test and added skills route for document upload

* Added tests for file skill upload

* feat: Update skill banner on chats page and expose selectedSkill (#562)

* Updated skill banner on chats page and passed selectedSkill to websocket stream

* Removed debug line

* Fixed side panel item cutoff bug on smaller screens

* submission agent

* fix not response

* fix async in consumers

* update prompt to check sub in prompt

* add tool to retrieve doc from prompt

* Updated skill and skill-info page content

* Removed redbox-default skills page entry

* Added document guidance block to skill info pages

* Changed skill-info page document names into links for download

* add prompt2doc test

* add test for create agent loop func

* add more cases for test agent function

* add knowledge base tool test

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.local>
Co-authored-by: David Okeke <140066072+david-okeke1337@users.noreply.github.com>
Co-authored-by: Nora Er-Rouhly <nora.errouhly@digital.trade.gov.uk>
Co-authored-by: nora-errouhly <nora.er-rouhly@digital.trade.gov.uk>
Co-authored-by: Sophie Glinton <146456576+sophie-daintta@users.noreply.github.com>
Co-authored-by: Tash Boyse <57753415+nboyse@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687-2.broadband>
Co-authored-by: Richie Bird <110097557+richiebird@users.noreply.github.com>
Co-authored-by: Natasha Boyse <natasha.boyse@digital.trade.gov.uk>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Saisakul Chernbumroong <saisakulchernbumroong@DBT000687.broadband>
Co-authored-by: David Okeke <david.okeke@madetech.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants