Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
925 commits
Select commit Hold shift + click to select a range
f536255
Refactor tool catalog discovery to remove unnecessary headers and aut…
imranq2 Apr 5, 2026
41e7b8b
Add ToolDiscoveryMiddleware for enhanced tool category discovery in a…
imranq2 Apr 5, 2026
575a6a2
Enhance MCP tool loading by integrating headers into tool resolver fo…
imranq2 Apr 5, 2026
1d10209
Refactor tool discovery condition to simplify logic in chat completio…
imranq2 Apr 5, 2026
1c0b2d8
Refactor exception handling in chat completion manager to utilize Exc…
imranq2 Apr 5, 2026
e5350a3
Remove hardcoded URLs for Google Drive in general purpose configurati…
imranq2 Apr 5, 2026
992b877
Refactor Google Drive configuration by removing unnecessary authentic…
imranq2 Apr 5, 2026
bf189d6
Refactor Makefile to streamline service startup commands, improving r…
imranq2 Apr 5, 2026
cb99e7f
Refactor OpenAI response streaming to improve SSE parsing and error h…
imranq2 Apr 5, 2026
e1dfdd1
Enhance status emission in language model gateway by introducing dedi…
imranq2 Apr 5, 2026
87205c5
Enhance LangChain Pipe to support multiple API modes (Chat Completion…
imranq2 Apr 6, 2026
dafa704
Enhance usage tracking in Responses API by aggregating usage statisti…
imranq2 Apr 6, 2026
188e091
Enhance status updates in tool execution by refining messages for fun…
imranq2 Apr 6, 2026
3a664e9
Refactor streaming response handling by removing unused method and en…
imranq2 Apr 6, 2026
006f6bd
Enhance DCR client name resolution in tests by adding cases for expli…
imranq2 Apr 6, 2026
96fbf82
Enhance MCP configuration by adding display names for services and in…
imranq2 Apr 6, 2026
397abf4
Refactor language model gateway pipe for improved readability by cons…
imranq2 Apr 6, 2026
0dcd858
Enhance model factory error handling and extend thinking configuratio…
imranq2 Apr 6, 2026
5cbd2f4
Enhance response building process by updating task message and refini…
imranq2 Apr 6, 2026
e87a3c8
Refactor import statements to use the updated model factory path, ens…
imranq2 Apr 6, 2026
0e56b0c
Update docker-compose and Pipfile for improved configuration and depe…
imranq2 Apr 6, 2026
68f4078
Add new MCP server configurations for Atlassian, FHIR, GitHub, and Gr…
imranq2 Apr 6, 2026
c9d0f86
Add general purpose guidelines for text generation and markdown forma…
imranq2 Apr 6, 2026
279b662
Redact sensitive API keys in debug log for improved security
imranq2 Apr 6, 2026
8c7da99
Update dependencies and improve token access handling in various comp…
imranq2 Apr 6, 2026
72f6275
Enhance loading status messages by implementing cycling phrases for i…
imranq2 Apr 6, 2026
24a8b69
Enhance docker-compose configuration by adding AIDEN_OAUTH_CLIENT_NAM…
imranq2 Apr 6, 2026
e1394e8
Enhance thinking task status updates to include elapsed time and toke…
imranq2 Apr 6, 2026
eefad16
Enhance logging and usage tracking in language model gateway
imranq2 Apr 6, 2026
78062a0
Refactor event emitter parameter naming and streamline completion eve…
imranq2 Apr 6, 2026
a8d9e97
Enhance logging in language model gateway to include metadata informa…
imranq2 Apr 6, 2026
8367048
Enhance URL validation in auth_manager and well_known_configuration_c…
imranq2 Apr 6, 2026
6016a63
Enhance docker-compose configuration to allow HTTP URLs for local OID…
imranq2 Apr 6, 2026
48115bc
Update dependencies in Pipfile and Pipfile.lock; modify docker-compos…
imranq2 Apr 7, 2026
94462e8
Enhance MCP JSON configuration by adding OAuth scopes and default val…
imranq2 Apr 7, 2026
4db6e4a
Merge pull request #146 from icanbwell/support-mcp-json
imranq2 Apr 7, 2026
23b9075
Support GitHub paths for model and prompt configurations in docker-co…
imranq2 Apr 7, 2026
88073f5
Update cache timeout configuration for GitHub directory handling
imranq2 Apr 7, 2026
220bbb2
Implement GitHubConfigRepoManager for downloading and caching GitHub …
imranq2 Apr 7, 2026
a2be3cc
Update GitHub cache folder paths and add .gitignore entries for cache
imranq2 Apr 7, 2026
28a0eda
Update .gitignore and Dockerfile to include github_config_cache direc…
imranq2 Apr 7, 2026
93b2975
Update language_model_gateway/gateway/api.py
imranq2 Apr 7, 2026
abd3dfa
Update .gitignore and Dockerfile to include github_config_cache direc…
imranq2 Apr 7, 2026
a9e822e
Merge remote-tracking branch 'origin/support-github-for-configs' into…
imranq2 Apr 7, 2026
65e3462
Update language-model-common to version 2.0.4 and jwcrypto to version…
imranq2 Apr 7, 2026
813346d
Update docker-compose.yml to support GitHub configuration repository
imranq2 Apr 7, 2026
d252af9
Update docker-compose.yml to support GitHub configuration repository
imranq2 Apr 7, 2026
4750778
Reduce CONFIG_CACHE_TIMEOUT_SECONDS to 10 and update comments for loc…
imranq2 Apr 7, 2026
ba29ab9
Reduce CONFIG_CACHE_TIMEOUT_SECONDS to 10 and update comments for loc…
imranq2 Apr 7, 2026
6680ae8
Uncomment GITHUB_CACHE_FOLDER in docker-compose.yml for GitHub config…
imranq2 Apr 7, 2026
a57d8da
Improve error logging during application initialization and shutdown …
imranq2 Apr 7, 2026
7ad5776
Update volume paths in docker-compose.yml for local config caching
imranq2 Apr 7, 2026
ac59240
Update docker-compose.yml to correct paths for mounted configurations
imranq2 Apr 7, 2026
c7ccb7e
Fix volume paths in docker-compose.yml for consistency with directory…
imranq2 Apr 7, 2026
552a706
Update language-model-common and other dependencies to latest versions
imranq2 Apr 8, 2026
7bea5b1
Implement auto-registration of MCP OAuth providers in GatewayTokenSto…
imranq2 Apr 8, 2026
d7050dd
Update language-model-common and other dependencies to latest versions
imranq2 Apr 8, 2026
7ee7d95
Update language-model-common and other dependencies to latest versions
imranq2 Apr 8, 2026
e7e2a39
Add DCR support to GatewayTokenStorageAuthManager for dynamic client …
imranq2 Apr 8, 2026
f29b1c0
Integrate OAuthProviderRegistrar for improved OAuth provider registra…
imranq2 Apr 9, 2026
ef3a260
Fix logging message formatting in gateway_token_storage_auth_manager …
imranq2 Apr 9, 2026
d145840
Refactor KeyCloakHelper to support asynchronous token retrieval and u…
imranq2 Apr 9, 2026
85be8e9
Update docker-compose and Pipfile for local package support and depen…
imranq2 Apr 9, 2026
c87d1c5
Comment out local folder mounts in docker-compose.yml for clarity
imranq2 Apr 9, 2026
a5d47ce
Merge pull request #147 from icanbwell/support-github-for-configs
imranq2 Apr 9, 2026
e305215
Enhance exception logging in chat completion router for improved clar…
imranq2 Apr 10, 2026
750d6ab
Refactor error handling in search_tools_tool to improve logging clarity
imranq2 Apr 10, 2026
7a840ad
Refactor error handling in search_tools_tool to improve logging clarity
imranq2 Apr 10, 2026
b714be9
Update dependencies for langchain-ai-skills-framework and language-mo…
imranq2 Apr 10, 2026
5861a7e
Refactor import statements in test files for consistency and clarity
imranq2 Apr 10, 2026
364b176
Refactor tool provider and language model gateway: remove unused tool…
imranq2 Apr 12, 2026
b8392a2
Add MCP Apps support for interactive HTML UIs in tools
imranq2 Apr 12, 2026
d91a6f9
Sync shared skills from GitHub/filesystem into MongoDB during applica…
imranq2 Apr 12, 2026
e801c8d
Update dependencies in Pipfile and Pipfile.lock for compatibility
imranq2 Apr 12, 2026
2416dcc
Add session pool management for MCP connections in tool loading
imranq2 Apr 12, 2026
1794d02
Update dependencies for langchain-ai-skills-framework and language-mo…
imranq2 Apr 12, 2026
c180cd3
Uncomment configuration volume mounts in docker-compose.yml for local…
imranq2 Apr 13, 2026
247a28e
Fix test fixtures to use NullUserSkillStore and proper fixture depend…
imranq2 Apr 13, 2026
d974507
Update dependencies in Pipfile and Pipfile.lock to latest versions
imranq2 Apr 13, 2026
605040a
Increase LLM call timeout to 10 minutes and change log level to INFO …
imranq2 Apr 13, 2026
2d01557
Increase timeout settings in docker-compose.yml and update config vol…
imranq2 Apr 13, 2026
22f3b44
Update Dockerfile to configure Gunicorn with timeout and keep-alive s…
imranq2 Apr 13, 2026
d64fe3c
Update MCP server configurations with new descriptions and consolidat…
imranq2 Apr 13, 2026
0a429e1
Update Dockerfile to configure Uvicorn workers and improve logging
imranq2 Apr 14, 2026
54828f7
Implement file locking to serialize concurrent downloads in GitHub di…
imranq2 Apr 14, 2026
12b2758
Ensure skills directory exists before initialization in API
imranq2 Apr 14, 2026
ba34d73
Update Docker actions to latest versions in publish workflow
imranq2 Apr 14, 2026
cd4dadd
Update allowed-tools format in SKILL.md for FHIR query builder
imranq2 Apr 14, 2026
333025a
Update language-model-common to version 2.0.16 and docstring-parser t…
imranq2 Apr 14, 2026
d18e40f
Update dependencies in Pipfile and Pipfile.lock to latest versions
imranq2 Apr 14, 2026
79686fe
Migrate from Pipenv to uv for dependency management and update Docker…
imranq2 Apr 15, 2026
545d8ec
Add max file size limit for large file check in pre-commit configuration
imranq2 Apr 15, 2026
2901ab7
Merge pull request #150 from icanbwell/save-skills-to-db
imranq2 Apr 15, 2026
fa14857
Merge branch 'main' into switch-to-uv
imranq2 Apr 15, 2026
3ffcacd
Update dependencies to latest versions for langchain-ai-skills-framew…
imranq2 Apr 15, 2026
55a4752
Remove unnecessary debugging commands from Dockerfile
imranq2 Apr 15, 2026
baf8d94
Update Dockerfile
imranq2 Apr 15, 2026
04b9c2b
Merge remote-tracking branch 'origin/switch-to-uv' into switch-to-uv
imranq2 Apr 15, 2026
8f377a6
Update pre-commit.Dockerfile
imranq2 Apr 15, 2026
8644ce9
Remove unnecessary debugging commands from Dockerfile
imranq2 Apr 15, 2026
d22a80d
Merge remote-tracking branch 'origin/switch-to-uv' into switch-to-uv
imranq2 Apr 15, 2026
ef650e7
Add skills documentation and update general purpose configuration
imranq2 Apr 16, 2026
1547d24
Add skills documentation and update general purpose roles
imranq2 Apr 16, 2026
335c384
Update dependencies to latest versions for improved stability and fea…
imranq2 Apr 16, 2026
bb328f3
Refactor environment variable usage across multiple tools and service…
imranq2 Apr 17, 2026
c3dccd2
Update dependencies: bump versions for oidcauthlib, langchain-ai-skil…
imranq2 Apr 17, 2026
63dd57d
Update Dockerfile to pin uv version to 0.11.6 for consistency and rel…
imranq2 Apr 18, 2026
80210ce
Update dependencies in pyproject.toml and uv.lock for version consist…
imranq2 Apr 19, 2026
a5c014c
Refactor Dockerfile to streamline production and development stages, …
imranq2 Apr 19, 2026
d1d2282
Update GITHUB_CACHE_FOLDER path in docker-compose.yml to include proc…
imranq2 Apr 19, 2026
8d701a8
Merge pull request #153 from icanbwell/switch-to-uv
imranq2 Apr 19, 2026
5662e20
Update dependencies in pyproject.toml and modify docker-compose.yml f…
imranq2 Apr 20, 2026
3c53b13
Update oidcauthlib dependency to version 3.0.10 for improved function…
imranq2 Apr 20, 2026
588a2ef
Enhance skill loading mechanism with optional include/exclude lists f…
imranq2 Apr 20, 2026
e6a7b87
Enhance plugin discovery by implementing marketplace.json support and…
imranq2 Apr 20, 2026
b0c1997
Update package versions for cachetools, langchain-openai, oidcauthlib…
imranq2 Apr 20, 2026
05253f1
Add PluginMcpServerEntry support and refactor MarketplaceDirectoryLoa…
imranq2 Apr 20, 2026
dbbcc6b
Add PluginMcpServerEntry support and refactor MarketplaceDirectoryLoa…
imranq2 Apr 20, 2026
7ce6c80
Implement SnapshotCacheStore for MongoDB-backed caching of skill snap…
imranq2 Apr 20, 2026
85bbc70
Refactor snapshot caching to use BaseStore instead of SnapshotCacheSt…
imranq2 Apr 20, 2026
5528b36
Refactor marketplace plugin manager and snapshot serializer for impro…
imranq2 Apr 20, 2026
0379626
Update dependencies for langchain-ai-skills-framework and language-mo…
imranq2 Apr 20, 2026
8188ea0
Implement ResilientCacheStore for improved snapshot caching with auto…
imranq2 Apr 21, 2026
644e2af
Refactor snapshot cache implementation to support multiple backend ty…
imranq2 Apr 21, 2026
2f83c65
Update dependencies and refactor snapshot cache initialization
imranq2 Apr 21, 2026
9861893
Update dependencies and refactor snapshot cache initialization
imranq2 Apr 21, 2026
f46895d
Update docker-compose.yml and pyproject.toml for caching configuratio…
imranq2 Apr 21, 2026
70279dd
Update dependencies to latest versions in pyproject.toml and uv.lock
imranq2 Apr 21, 2026
fae565d
Refactor chat completion manager to improve error handling message co…
imranq2 Apr 21, 2026
6ed58a6
Update language-model-common and langchain-openai dependencies to lat…
imranq2 Apr 21, 2026
c1cc4e4
Comment out local dependencies in docker-compose.yml for cleaner conf…
imranq2 Apr 21, 2026
76e6d1d
Implement ValidatingMongoDBStore for fail-fast MongoDB connection val…
imranq2 Apr 21, 2026
4b41e3f
Add config refresh interval and implement background config refresh loop
imranq2 Apr 21, 2026
009feef
Update caching logic in api.py to use async refresh methods and enhan…
imranq2 Apr 21, 2026
8afd1dd
Add PluginDefinition model and update marketplace loader for plugin s…
imranq2 Apr 22, 2026
cb805ce
Refactor skill management to use PluginSkillStore and update related …
imranq2 Apr 22, 2026
a538224
Rename skill markdown files and update .gitignore and pre-commit conf…
imranq2 Apr 22, 2026
11cd15b
Update dependencies in pyproject.toml and uv.lock for compatibility a…
imranq2 Apr 22, 2026
ba2a037
Rename skill-related files and update references to marketplace for c…
imranq2 Apr 22, 2026
215a36d
Refactor skill loading to remove unnecessary logging and adjust worke…
imranq2 Apr 22, 2026
6b9c35f
Update docker-compose.yml to exclude 'software-developers' from plugi…
imranq2 Apr 22, 2026
52dfc56
Update docker-compose.yml to exclude 'software-developers' from plugi…
imranq2 Apr 22, 2026
b457d8f
Add marketplace-git-cache to .gitignore for improved cache management
imranq2 Apr 22, 2026
f5e6470
Add marketplace cache folder configuration to docker-compose
imranq2 Apr 22, 2026
7798091
Enhance skill synchronization logging and improve plugin definition h…
imranq2 Apr 22, 2026
ef22db9
Update docker-compose.yml to change PLUGINS_COLLECTION default from '…
imranq2 Apr 22, 2026
3b295b5
Update dependencies to latest versions for improved compatibility and…
imranq2 Apr 22, 2026
2557d0b
Update dependencies to latest versions for improved compatibility and…
imranq2 Apr 22, 2026
2f7a7ae
Update docker-compose configuration for GitHub plugin marketplace int…
imranq2 Apr 22, 2026
3bcf66a
Update docker-compose configuration to adjust GitHub cache folder set…
imranq2 Apr 22, 2026
675ec57
Refactor docker-compose.yml to improve clarity of GitHub configuratio…
imranq2 Apr 22, 2026
1d02fe8
Add has_plugins method to check for existing plugins and update start…
imranq2 Apr 23, 2026
9f69687
Add PLUGINS_MARKETPLACE environment variable to docker-compose for pl…
imranq2 Apr 23, 2026
874629c
Update dependencies in docker-compose and pyproject.toml for langchai…
imranq2 Apr 23, 2026
5c56ddd
Bump langchain-ai-skills-framework and langchain-openai versions to 1…
imranq2 Apr 23, 2026
ded6e67
Update language_model_gateway/gateway/api.py
imranq2 Apr 23, 2026
f492b3b
Update langchain-ai-skills-framework and langchain-openai to latest v…
imranq2 Apr 23, 2026
d1a2cd8
Merge pull request #158 from icanbwell/support-plugins-marketplace
imranq2 Apr 23, 2026
35469eb
Add GitHubMarketplacePublisher for skill publishing and enhance envir…
imranq2 Apr 23, 2026
a0865d7
Update docker-compose.yml to clarify marketplace publishing configura…
imranq2 Apr 23, 2026
0b278f2
Add MCP configuration for Google Drive skills server and update depen…
imranq2 Apr 23, 2026
6d3166d
Add MCP configuration for Google Drive skills server and update depen…
imranq2 Apr 23, 2026
e33390e
Add MCP configuration for Google Drive skills server and update depen…
imranq2 Apr 23, 2026
d959926
Add OAuth support to plugin configuration and serialization
imranq2 Apr 23, 2026
2ecf628
Enhance SKILL.md documentation with detailed tool usage and saving in…
imranq2 Apr 23, 2026
6c318ba
Add marketplace and validation scripts for skill management
imranq2 Apr 23, 2026
273e3f9
Rename bwell-skill-creator to bwell-skill-library and update descript…
imranq2 Apr 23, 2026
31dab04
Register MCP display names from tools and update docker-compose for l…
imranq2 Apr 24, 2026
9a4aa1c
Add FHIR query builder skill and prompt writer skill with validation …
imranq2 Apr 24, 2026
e891bd9
Add initial SKILL.md and plugin.json for patient portal finder and JF…
imranq2 Apr 24, 2026
d5e9df2
Update marketplace configuration in MCP server gateway
imranq2 Apr 24, 2026
cbc31c3
Update docker-compose files to configure marketplace plugin settings
imranq2 Apr 24, 2026
c4bed41
Refactor container and command manager to remove unused skill loader …
imranq2 Apr 24, 2026
9fcb515
Refactor caching documentation and remove unused environment variables
imranq2 Apr 24, 2026
2bd0294
Add MCP Tool Discovery documentation and refactor MCP JSON reader
imranq2 Apr 24, 2026
44826ba
Add MCP configuration support and enhance OAuth provider registration
imranq2 Apr 24, 2026
a2c8ffb
Refactor GatewayTokenStorageAuthManager to utilize plugin MCP configs…
imranq2 Apr 25, 2026
3622ce3
Update language-model-gateway-configs/marketplace/plugins/all-employe…
imranq2 Apr 25, 2026
8fdb0b4
Add CMS-Aligned Network commitment and major partnerships documentation
imranq2 Apr 25, 2026
bc97e4f
Merge remote-tracking branch 'origin/write-skill-to-github' into writ…
imranq2 Apr 25, 2026
cc1f8b1
Comment out local language model common directory in docker-compose.yml
imranq2 Apr 25, 2026
c94d1f9
Enhance skills documentation with critical workflow steps for user in…
imranq2 Apr 25, 2026
55fcf70
Update skills display name to 'Skills Library' in .mcp.json
imranq2 Apr 25, 2026
aac6cce
Rename skills section to skills-library and skills-publisher with upd…
imranq2 Apr 25, 2026
3286062
Rename skills section to skills-library and skills-publisher with upd…
imranq2 May 4, 2026
4b69c7d
Rename skills section to skills-library and skills-publisher with upd…
imranq2 May 4, 2026
60ebbdb
Add skills-publisher MCP server and split skills into read/publish en…
imranq2 May 4, 2026
ced34a0
Enable marketplace skill publishing to imran-test branch
imranq2 May 4, 2026
cc6d308
Switch PLUGINS_MARKETPLACE to GitHub source and enable local language…
imranq2 May 4, 2026
316f394
Switch PLUGINS_MARKETPLACE to GitHub source and enable local language…
imranq2 May 4, 2026
2e33ba3
Add skill publish UI with OAuth login and MCP tool proxy
imranq2 May 4, 2026
5156640
Add skill publish router, UI form, and docker-compose for mcp-server-…
imranq2 May 4, 2026
a75f80f
Add skill publish router and UI for marketplace submissions
imranq2 May 4, 2026
85744fe
Add gateway token storage auth manager with OAuth auto-registration
imranq2 May 4, 2026
7354313
Add gateway token storage auth manager with OAuth auto-registration
imranq2 May 4, 2026
449f08b
Add skill publish router with OAuth login and publish proxy
imranq2 May 4, 2026
0597504
Add skill publish router and mcp-server-gateway compose service
imranq2 May 4, 2026
a5ed114
Add docker-compose config for mcp-server-gateway service
imranq2 May 5, 2026
a032ee3
Here's a commit message for the staged changes:
imranq2 May 5, 2026
8c16c85
Add skill publish page for marketplace submissions
imranq2 May 5, 2026
c4443cf
Add MCP server plugin configuration for all-employees marketplace
imranq2 May 5, 2026
03958f2
Rename skill-creator references to bwell-skill-library
imranq2 May 5, 2026
9aa05a9
Add skill publish UI with OAuth login and gateway token storage auth …
imranq2 May 5, 2026
47f6dbb
Update language_model_gateway/gateway/auth/gateway_token_storage_auth…
imranq2 May 5, 2026
03dcaaa
Add skill publish UI with OAuth login and gateway token storage auth …
imranq2 May 5, 2026
4e0b1fa
Add McpJsonFetcher to retrieve per-plugin MCP server configs via tool…
imranq2 May 6, 2026
6836ffc
Here's the commit message for your staged changes:
imranq2 May 6, 2026
bee938b
Add CI/CD workflows and Makefile for language-model-gateway
imranq2 May 6, 2026
ed196fb
Add test fixtures and Docker Compose configs for local development
imranq2 May 6, 2026
331cc14
Add Makefile with Docker-based dev workflow and build targets
imranq2 May 6, 2026
f24716d
Here's the commit message:
imranq2 May 6, 2026
bd3b17c
Add mcp-server-gateway docker-compose and Helm services config
imranq2 May 7, 2026
3b53bba
Add skills system with MCP tool discovery and skills library server
imranq2 May 7, 2026
2824273
Add docker-compose configs for language-model-gateway and mcp-server-…
imranq2 May 7, 2026
2480edd
Add MCP server configuration for chat completions
imranq2 May 7, 2026
1a4be24
Add OIDC proxy auth provider and MCP server gateway docker-compose co…
imranq2 May 8, 2026
ac64d98
Add all-employees MCP plugin config and mcp-server-gateway docker com…
imranq2 May 8, 2026
262c37c
Add chat completion gateway with MCP auth, pass-through provider, and…
imranq2 May 9, 2026
5604921
Add MCP auth response builder, gateway token storage auth manager, an…
imranq2 May 9, 2026
6988df3
Add MCP server gateway service and all-employees plugin config
imranq2 May 11, 2026
c064443
Add unit tests for McpAuthResponseBuilder
imranq2 May 11, 2026
088b515
Add Docker Compose configs, pyproject.toml, and uv.lock
imranq2 May 11, 2026
60f3683
Here's the commit message:
imranq2 May 11, 2026
ee3f5e2
Add docker-compose config for mcp-server-gateway integration
imranq2 May 11, 2026
c7932a7
Add integration tests for chat completions with web search, scraping,…
imranq2 May 11, 2026
f0e421f
Merge pull request #159 from icanbwell/write-skill-to-github
imranq2 May 12, 2026
17ccc5e
Add LangChain chat completions provider and FastAPI app setup
imranq2 May 14, 2026
295f021
Add LanguageModelGatewayEnvironmentVariables class for centralized en…
imranq2 May 14, 2026
9dc1939
Here's the commit message:
imranq2 May 14, 2026
3444c3f
remove obsolete code
imranq2 May 14, 2026
ad9bdb5
Merge pull request #167 from icanbwell/always-add-search-tools
imranq2 May 14, 2026
d548217
Add comprehensive tests for BaileyRouter API endpoints
imranq2 May 20, 2026
b188b34
Switch MCP FHIR agent env_file from docker.env to .env
imranq2 May 20, 2026
f3361fe
Add BM25-ranked search_tools meta-discovery tool and marketplace plug…
imranq2 May 20, 2026
7275d58
Add per-environment service URLs for token exchange, ATC BFF, PSS, an…
imranq2 May 21, 2026
9e02ebe
Bump language-model-common minimum version to 2.0.43
imranq2 May 21, 2026
ea3088d
Add app login flow and all-employees MCP plugin configuration
imranq2 May 21, 2026
e2dc87f
Merge pull request #168 from icanbwell/update-mcp-fhir-agent
imranq2 May 21, 2026
ab96c62
Add Cognito staging auth provider and switch FHIR MCP to Okta
imranq2 May 22, 2026
b6180d1
Switch PSS and API Gateway URLs from client-sandbox to staging
imranq2 May 22, 2026
8c167ec
Add Bailey plugin to marketplace and remove provider-search from all-…
imranq2 May 22, 2026
5b56549
```
imranq2 May 22, 2026
bf032fd
Bump language-model-common from 2.0.44 to 2.0.46
imranq2 May 22, 2026
652ea5c
Add docker-compose.yml for local development environment
imranq2 May 22, 2026
e7fd1e4
Merge pull request #169 from icanbwell/update-mcp-fhir-agent
imranq2 May 22, 2026
bd89d30
EA-0000 update prod FHIR URL from fhir-mcp to fhir
alvinhenrick Jun 2, 2026
2ec8724
Merge pull request #171 from icanbwell/AH-EA-fhir-url-update
alvinhenrick Jun 2, 2026
60e2625
fix(security): update aiohttp from 3.13.5 to 3.14.1
aikido-autofix[bot] Jun 8, 2026
8ea6d41
Merge pull request #176 from icanbwell/fix/aikido-security-update-pac…
imranq2 Jun 9, 2026
b69550b
Bump mcp dependency from >=1.11.0 to >=1.27.2
imranq2 Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 4 additions & 1 deletion .aikido
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@ rules:
exclude:
paths:
- docker-compose-openwebui.yml
- docker-compose-keycloak.yml
- docker-compose-keycloak.yml
- Makefile
- docker-compose-mcp-fhir-agent.yml
- docker-compose.yml
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@
.pytest_cache
tmp
Makefile

caches
image_generation
__pycache__
language-model-gateway-configs
outputs
9 changes: 8 additions & 1 deletion docker.env.example → .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,11 @@ DATABRICKS_HOST=
DATABRICKS_SQL_WAREHOUSE_ID=
GOOGLE_CREDENTIALS_JSON=
AUTH_CLIENT_ID=
AUTH_CLIENT_SECRET=
AUTH_CLIENT_SECRET=

# Whether to run tests with real LLM
RUN_TESTS_WITH_REAL_LLM=

# mongo
PROD_MONGO_DB_PASSWORD=
CLIENT_SANDBOX_MONGO_DB_PASSWORD=
129 changes: 129 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# Language Model Gateway – Copilot Code Review Instructions

## Objectives
- Keep every change aligned with the OpenAI-compatible FastAPI gateway, LangChain/LangGraph providers, and MCP bridge that back OpenWebUI and downstream agents.
- Preserve strict typing (per `setup.cfg` mypy settings), absolute imports, Ruff/formatting/security hooks, and Pipenv lock integrity.
- Guard OAuth/OIDC, AWS credentials, and user content flowing through RequestScopeMiddleware, TokenStorageAuthManager, and MCP tool traffic; never leak tokens or PII.
- Maintain the Docker Compose + Makefile workflows that spin up Keycloak, Mongo, OpenWebUI, optional MCP stacks, and observability services.
- Deliver prioritized, actionable PR feedback that makes it easy for contributors to fix blocking issues first.

## Repository Context Summary
- Stack: Python 3.12, FastAPI, LangChain/LangGraph, GraphQL, Docker Compose, Keycloak (OIDC), MongoDB (token cache), PostgreSQL (OpenWebUI), AWS (S3/Bedrock via `AwsClientFactory`), httpx, OpenTelemetry, and Pipenv.
- Entry surface: `language_model_gateway/gateway/api.py` configures FastAPI, routers under `gateway/routers/`, middleware (`FastApiLoggingMiddleware`, `RequestScopeMiddleware`), static assets, and health endpoints.
- Business layers: managers in `gateway/managers/`, providers in `gateway/providers/`, converters/streaming helpers, MCP tooling (`gateway/mcp/**`), and tool implementations in `gateway/tools/`.
- DI/IoC: `LanguageModelGatewayContainerFactory.create_container()` registers services (Auth, TokenExchange, Tool/MCP providers, LangChain providers, persistence, caching) via `oidcauthlib.container.SimpleContainer`; `ContainerRegistry` + `Inject(...)` supply dependencies to routers, managers, and background jobs.
- AuthN/AuthZ: `oidcauthlib` (AuthRouter, AuthManager, TokenReader), `TokenStorageAuthManager`, `TokenExchangeManager`, `ToolAuthManager`, and `TokenReducer` cooperate to handle on-behalf-of flows, OpenWebUI headers, and tool-scoped tokens.
- Config & env: use `language_model_gateway/configs/config_reader` + `ConfigExpiringCache` and `LanguageModelGatewayEnvironmentVariables` instead of ad-hoc `os.environ` access.
- Tests live in `tests/` (unit/functional) with dockerized execution; fixture data sits in repo (see `openwebui-config`, `language-model-gateway-configs`, etc.).
- Docker Compose files control the gateway, databases, Keycloak, MCP servers, observability (`docker-compose-otel.yml`), and OpenWebUI variants.

## Code Style and Quality Rules
- Absolute imports only (e.g., `from language_model_gateway.gateway.managers.chat_completion_manager import ChatCompletionManager`). No relative imports.
- Full type annotations for functions, class attributes, TypedDicts, and literals; prefer `Annotated[...]` for FastAPI dependencies. Avoid `Any` unless unavoidable and documented.
- `make run-pre-commit` must stay green (Ruff, formatting, mypy, security checks). When touching dependencies, update both `Pipfile` and `Pipfile.lock` via the documented make targets.
- Leverage existing abstractions:
- Resolve services via `Inject(...)`/`Depends(...)` backed by `LanguageModelGatewayContainerFactory`; never instantiate managers/providers manually in routers or tools.
- Reuse `LanguageModelGatewayEnvironmentVariables`, `ConfigReader`, `TokenReducer`, `LangGraphStreamingManager`, and `ModelFactory` rather than re-reading env vars or duplicating config parsing.
- MCP tooling: new remote tools must be registered through `MCPToolProvider`, include tracing/truncation interceptors, and respect `ToolAuthManager` token requirements. Local LangChain tools belong under `gateway/tools/` and should inherit existing base classes when possible.
- Logging: import `SRC_LOG_LEVELS`, call `logging.getLogger(__name__)`, and use `logger.exception("<message>")` inside `except` blocks to capture stack traces. Never log Authorization headers, JWTs, S3 paths with PHI, or OpenWebUI user details.
- Observability: when adding spans, obtain a tracer via `get_tracer("language_model_gateway.<module_path>")`, reuse existing span names where possible, and avoid placing secrets/PII in span attributes.

## Review Focus Areas
1. **Security & Privacy (blocking):** Keycloak/OIDC flows, PKCE helpers, RequestScopeMiddleware, TokenStorageAuthManager, TokenExchangeManager, and MCP tool auth must remain correct. No secrets in code. HTTPS for remote calls. Auth headers must never be logged or echoed back.
2. **Architectural Consistency (blocking):** Changes must fit the FastAPI router → manager → provider layering, DI patterns, and config/cache helpers. Chat completions must flow through `ChatCompletionManager`, LangChain/LangGraph providers, and `ToolProvider`/`MCPToolProvider`. New tools must wire through the DI container.
3. **Type Safety & Linting (blocking):** Full typing, no silent ignores, mypy per `setup.cfg`, Ruff, formatting, and security hooks must pass. Keep `Annotated` dependencies accurate.
4. **Tests & Reliability (blocking):** Add/extend tests under `tests/` for new routers, managers, providers, tools, or auth flows. Ensure they run via Docker (`make tests`). Favor dependency injection and fixtures over monkey patching.
5. **Performance & Resource Use (non-blocking unless severe):** Respect `TokenReducer` strategies, streaming constraints, MCP call timeouts, and `CONFIG_CACHE_TIMEOUT_SECONDS`. Avoid redundant external calls or large payloads (S3, Jira, Confluence, GitHub, Databricks).
6. **Documentation & DX (non-blocking but encouraged):** Update `README.md`, `add_new_agent.md`, or config docs when workflows/env vars change. Provide examples for new tools or endpoints.

## Blocking Issues (Must Fix Before Merge)
- Relative imports or direct instantiation that bypasses the DI container or `Inject(...)` dependencies.
- Missing/incorrect type annotations, `Any` leaks, or mypy/Ruff/pre-commit failures.
- Skipping `AuthManager`/`TokenReader`/`TokenExchangeManager` when handling user or tool tokens, or logging/returning tokens and PII.
- New routers/managers/providers not registered through `LanguageModelGatewayContainerFactory` or not resolved via `ContainerRegistry`.
- MCP tools that omit tracing/truncation interceptors, do not obtain tokens from `ToolAuthManager`, or ignore auth requirements defined in `AgentConfig`.
- Config or env access that bypasses `LanguageModelGatewayEnvironmentVariables`/`ConfigReader`, leading to inconsistent behavior across workers.
- Tests that cannot run with `make tests` or that rely on local resources outside the Compose stack.
- Dependency updates without synchronized `Pipfile`/`Pipfile.lock` changes.
- Run `make run-pre-commit` after a change to ensure the code passes linter.
- Don't put code in __init__.py files.

## Non-Blocking Suggestions (Nice to Have)
- Refactor duplicated logic in routers/managers/providers into shared helpers.
- Expand logging granularity using `SRC_LOG_LEVELS` categories (HTTP, MCP, LLM, etc.) when it aids debugging.
- Add lightweight smoke tests or fixtures for new external integrations (e.g., Confluence, Jira, GitHub, Databricks).
- Improve LangChain/LangGraph observability (span attributes, meaningful log context) without leaking sensitive data.
- Enhance docs with diagrams or flow descriptions for complex agent/tool additions.

## Security and Privacy Guidelines
- Always validate and refresh tokens through `TokenReader`/`AuthManager`; never trust headers blindly. Use RequestScopeMiddleware for per-request context.
- For PKCE/browser flows, use `AuthRouter` (from oidcauthlib). For service-to-service flows, rely on `TokenExchangeManager` and `ToolAuthManager` with least-privilege scopes.
- When bridging to AWS (Bedrock, S3), honor `AWS_CREDENTIALS_PROFILE`, use `AwsClientFactory`, and never hardcode credentials.
- Sanitize data returned from Jira, Confluence, Databricks, GitHub, or MCP servers before logging or exposing to clients. Strip PHI/PII and redact secrets.
- Use HTTPS endpoints for remote services and verify certificates (see `make create-certs` for local TLS). Do not downgrade to HTTP except for the documented local dev hosts.
- Ensure cached tokens (`ConfigExpiringCache`, Mongo, persistence) honor TTLs and are invalidated on logout/refresh endpoints.

## Performance Guidelines
- Use `TokenReducer` strategies (`TOKEN_TRUNCATION_STRATEGY`) for large model inputs/outputs. Avoid manual truncation that conflicts with the configured strategy.
- Prefer streaming via `LangGraphStreamingManager` when responses may be large; fall back to buffered responses only when necessary.
- Reuse HTTP clients from `HttpClientFactory`/`LoggingTransport` and respect timeouts defined in `LanguageModelGatewayEnvironmentVariables`.
- Batched config reads should go through `ConfigReader` with caching, rather than re-reading YAML/GraphQL files per request.
- Be mindful of MCP tool fan-out; set appropriate tool lists/timeouts in `AgentConfig` to avoid thrashing remote servers.

## Testing Guidelines
- Run `make tests` (dockerized pytest) before submitting. Use `make tests-integration` when real LLM or external integrations are required (guard with env vars such as `RUN_TESTS_WITH_REAL_LLM`).
- Favor dependency injection and fixtures over monkey patching; leverage `oidcauthlib` container overrides or helper factories for mocks.
- Use `respx`/`httpx.MockTransport` for HTTP mocking, and provide deterministic data for GitHub/Jira/Confluence/Databricks helpers.
- Cover new FastAPI routes with request/response tests (can use `TestClient` inside dockerized pytest). Include negative cases for auth failures and token refresh paths.
- When adding MCP tools or interceptors, include async tests using the existing LangChain MCP adapters and stubbed servers where feasible.

## Dependencies and Build
- Pipenv is the source of truth. Update dependencies via `make Pipfile.lock`/`make update`, commit both `Pipfile` and `Pipfile.lock`, and rebuild containers if base images change.
- Use the provided Make targets: `make devsetup`, `make build`, `make up`, `make down`, `make up-open-webui`, `make up-open-webui-auth`, `make up-mcp-server-gateway`, etc. Never hand-edit Compose-managed resources without updating the relevant YAML.
- Pre-commit hooks live in `pre-commit-hook`; run `make setup-pre-commit` before committing and ensure `make run-pre-commit` passes locally and in CI.
- For images pulled from ECR (e.g., MCP server gateway), authenticate via `aws sso login` + `aws ecr get-login-password` as documented in `README.md`.

## Documentation and Examples
- Update `README.md`, `add_new_agent.md`, `openwebui-config/functions/readme.md`, or related docs whenever you add env vars, Make targets, OAuth steps, or tool workflows.
- Provide docstrings for routers, managers, tools, and MCP interceptors describing expected inputs/outputs and auth assumptions.
- When adding MCP agents or LangChain tools, include usage guidance (sample payloads, OpenWebUI instructions, or GraphQL queries) right in the docstrings plus any relevant docs folder.
- Keep `.env.example` synchronized with new environment variables and describe whether they are required or optional.

## Integration Points
- **OpenAI-compatible APIs:** `/api/v1/chat/completions`, `/api/v1/responses`, `/api/v1/images/*`, `/models`, `/refresh`, plus legacy `/graphql`. Ensure responses match OpenAI schemas in `gateway/schema/openai`.
- **Auth:** `/auth/*` routes from `AuthRouter`, PKCE login via `/auth/login`, refresh via `/refresh`, and OpenWebUI headers (`x-openwebui-user-*`).
- **OpenWebUI:** `make up-open-webui` (no auth) or `make up-open-webui-auth` (Keycloak/OIDC + SSL). Requires `/etc/hosts` entry for `keycloak` and certificates from `make create-certs`.
- **MCP:** Remote tools fetched through `MCPToolProvider` + LangChain MCP adapters; additional MCP stacks available via `docker-compose-mcp-*.yml` and `make up-mcp-*` targets.
- **External services:** AWS (Bedrock, S3), Jira/Confluence, GitHub, Databricks, ScrapingBee, Google Search. All integrations must go through the respective helper/factory to inherit auth, logging, and retry policies.

## Quick Start and Common Commands
- Initial setup: copy `.env.example` → `.env`, set `AWS_CREDENTIALS_PROFILE`, then run:
```sh
make devsetup
```
- Bring the core stack up/down:
```sh
make down
make up
```
- Launch OpenWebUI variants:
```sh
make up-open-webui # no auth
make up-open-webui-auth # Keycloak + SSL + observability
```
- Run quality gates:
```sh
make run-pre-commit
make tests
```
- When working with MCP add-ons or observability: `make up-mcp-server-gateway`, `make up-mcp-fhir-agent`, `make up-mcp-inspector`, `make up-open-webui-ssl`, `make up-open-webui-auth` (also brings up Jaeger/otel).

## Enforcement Checklist for Reviewers
- Imports are absolute and modules resolve via the DI container; no manual singletons.
- Functions/classes are fully typed, and mypy/Ruff/pre-commit pass.
- Auth flows use `AuthManager`, `TokenReader`, `TokenExchangeManager`, and `ToolAuthManager` correctly; no secrets/PII in logs, spans, or responses.
- FastAPI routers call managers/providers rather than duplicating business logic; new services are registered in `LanguageModelGatewayContainerFactory`.
- MCP/LangChain tools honor tracing + truncation interceptors, token requirements, and config-driven URLs/timeouts.
- Tests cover new behavior and run with `make tests`; no reliance on undeclared local services.
- Docs/env samples updated for new endpoints, env vars, or workflows.
- Docker/Make targets remain usable; Compose files stay in sync with textual instructions.
15 changes: 10 additions & 5 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,20 @@ on:
pull_request:
branches: [ main ]

# Prevent duplicate runs on the same ref and cancel in-progress on PR updates to save CI minutes
concurrency:
group: build-and-test-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
build_and_test:
# The type of runner that the job will run on
runs-on: ubuntu-latest

steps:
# Checks-out your repository
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.12'

Expand All @@ -29,9 +34,9 @@ jobs:
# id: login-ecr
# uses: aws-actions/amazon-ecr-login@v2

- name: create docker.env
- name: create .env
run: |
touch ${{ github.workspace }}/docker.env
touch ${{ github.workspace }}/.env

- name: pre-commit
run: make run-pre-commit && make clean-pre-commit
Expand Down Expand Up @@ -59,7 +64,7 @@ jobs:
docker compose run --rm --name language_model_gateway_tests -v ${{ github.workspace }}/reports:/reports language-model-gateway pytest . --tb=auto --junitxml=/reports/test-results.xml

- name: Upload pytest test results
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: pytest-results
path: ${{ github.workspace }}/reports/**/*.xml
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ jobs:
runs-on: main
steps:
- name: Checkout Code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Checkout icanbwell/cie.gha-deploy
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: refs/tags/v0.0.33
Expand Down
Loading
Loading