Skip to content

Commit b7bbfae

Browse files
authored
Release v6.6.0 into Main
2 parents 2d88570 + 8890aab commit b7bbfae

252 files changed

Lines changed: 18814 additions & 5848 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/code.e2e-full-test.weekly.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,18 @@ jobs:
3434
env:
3535
SLACK_TITLE: 'Full E2E Tests Starting'
3636
MSG_MINIMAL: true
37-
SLACK_MESSAGE: 'Full E2E test suite has started on ref `${{ inputs.ref || github.ref_name }}`...'
37+
SLACK_MESSAGE: "Full E2E test suite has started on ref `${{ inputs.ref || 'develop' }}`..."
3838

3939
full-e2e:
4040
name: Run Full E2E Tests
4141
runs-on: ubuntu-latest
4242
timeout-minutes: 60
43+
outputs:
44+
tested_ref: ${{ steps.set-ref.outputs.ref }}
4345
steps:
46+
- name: Set tested ref
47+
id: set-ref
48+
run: echo "ref=${{ inputs.ref || 'develop' }}" >> $GITHUB_OUTPUT
4449
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
4550
with:
4651
ref: ${{ inputs.ref || 'develop' }}
@@ -52,12 +57,13 @@ jobs:
5257
- name: Install base dependencies
5358
run: npm ci
5459
- name: Run Cypress Full E2E Suite
60+
working-directory: cypress
5561
env:
5662
ADMIN_USER_NAME: ${{ secrets.ADMIN_USER_NAME }}
5763
ADMIN_PASSWORD: ${{ secrets.ADMIN_PASSWORD }}
5864
USER_NAME: ${{ secrets.USER_NAME }}
5965
USER_PASSWORD: ${{ secrets.USER_PASSWORD }}
60-
run: npx cypress run --config-file cypress/cypress.e2e.config.ts
66+
run: npx cypress run --config-file cypress.e2e.config.ts
6167
- name: Archive Cypress videos & screenshots
6268
if: always()
6369
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v4
@@ -79,4 +85,4 @@ jobs:
7985
SLACK_COLOR: ${{ needs.full-e2e.result == 'success' && 'good' || 'danger' }}
8086
SLACK_TITLE: 'Full E2E Tests Finished'
8187
MSG_MINIMAL: false
82-
SLACK_MESSAGE: ${{ needs.full-e2e.result == 'success' && format('Full E2E test suite passed on ref `{0}`.', inputs.ref || github.ref_name) || format('<!here> Full E2E test suite {0} on ref `{1}`.', needs.full-e2e.result, inputs.ref || github.ref_name) }}
88+
SLACK_MESSAGE: ${{ needs.full-e2e.result == 'success' && format('Full E2E test suite passed on ref `{0}`.', needs.full-e2e.outputs.tested_ref) || format('<!here> Full E2E test suite {0} on ref `{1}`.', needs.full-e2e.result, needs.full-e2e.outputs.tested_ref) }}

.github/workflows/code.end-to-end-test.nightly.yml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ on:
44
schedule:
55
- cron: '0 0 * * *'
66
workflow_dispatch:
7+
inputs:
8+
ref:
9+
description: 'Branch or tag to test against'
10+
required: false
11+
default: 'develop'
12+
type: string
713

814
permissions:
915
contents: read
@@ -27,10 +33,15 @@ jobs:
2733
name: 🏃‍♀️ Run E2E Tests
2834
runs-on: ubuntu-latest
2935
timeout-minutes: 15
36+
outputs:
37+
tested_ref: ${{ steps.set-ref.outputs.ref }}
3038
steps:
39+
- name: Set tested ref
40+
id: set-ref
41+
run: echo "ref=${{ inputs.ref || 'develop' }}" >> $GITHUB_OUTPUT
3142
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4
3243
with:
33-
ref: develop
44+
ref: ${{ inputs.ref || 'develop' }}
3445
- name: Setup Node.js
3546
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v4
3647
with:
@@ -39,6 +50,7 @@ jobs:
3950
- name: Install base dependencies
4051
run: npm ci
4152
- name: Run Cypress E2E Suite
53+
working-directory: cypress
4254
env:
4355
ADMIN_USER_NAME: ${{ secrets.ADMIN_USER_NAME }}
4456
ADMIN_PASSWORD: ${{ secrets.ADMIN_PASSWORD }}
@@ -48,8 +60,8 @@ jobs:
4860
# Update this list when adding new quick E2E specs.
4961
run: >-
5062
npx cypress run
51-
--config-file cypress/cypress.e2e.config.ts
52-
--spec "cypress/src/e2e/specs/admin.e2e.spec.ts,cypress/src/e2e/specs/user.e2e.spec.ts,cypress/src/e2e/specs/chat.e2e.spec.ts,cypress/src/e2e/specs/bedrock-quick.e2e.spec.ts"
63+
--config-file cypress.e2e.config.ts
64+
--spec "src/e2e/specs/admin.e2e.spec.ts,src/e2e/specs/user.e2e.spec.ts,src/e2e/specs/chat.e2e.spec.ts,src/e2e/specs/bedrock-quick.e2e.spec.ts"
5365
- name: Archive Cypress videos & screenshots
5466
if: always()
5567
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v4
@@ -71,4 +83,4 @@ jobs:
7183
SLACK_COLOR: ${{ needs.e2e.result == 'success' && 'good' || 'danger' }}
7284
SLACK_TITLE: 'Nightly E2E Health Check Finished'
7385
MSG_MINIMAL: false
74-
SLACK_MESSAGE: ${{ needs.e2e.result == 'success' && format('Nightly E2E health check passed on branch `{0}`.', github.ref_name) || format('<!here> Nightly E2E health check {0} on branch `{1}`.', needs.e2e.result, github.ref_name) }}
86+
SLACK_MESSAGE: ${{ needs.e2e.result == 'success' && format('Nightly E2E health check passed on branch `{0}`.', needs.e2e.outputs.tested_ref) || format('<!here> Nightly E2E health check {0} on branch `{1}`.', needs.e2e.result, needs.e2e.outputs.tested_ref) }}

.github/workflows/code.publish.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,15 @@ jobs:
6363
run: npm version "${{ inputs.version }}" --no-git-tag-version --allow-same-version
6464
- name: Publish NPM Package
6565
if: "!(github.event_name == 'workflow_dispatch' && inputs.test_mode == true)"
66-
run: npm publish
66+
run: |
67+
npm publish 2>&1 | tee /tmp/npm-publish.log || {
68+
if grep -q "Cannot publish over previously published version" /tmp/npm-publish.log; then
69+
echo "::warning::NPM package version already exists, skipping publish"
70+
else
71+
echo "::error::NPM publish failed"
72+
exit 1
73+
fi
74+
}
6775
- name: Publish NPM Package (Dry Run)
6876
if: github.event_name == 'workflow_dispatch' && inputs.test_mode == true
6977
run: npm publish --dry-run

.github/workflows/code.smoke-test.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ jobs:
3838
# Execute Cypress tests
3939
# ────────────────────────────────────────────────────
4040
- name: Run Cypress Smoke Suite
41-
run: npx cypress run --config-file cypress/cypress.smoke.config.ts
41+
working-directory: cypress
42+
run: npx cypress run --config-file cypress.smoke.config.ts
4243

4344
- name: Archive Cypress videos & screenshots
4445
if: failure() || always()

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ lib/rag/ingestion/ingestion-image/build
4242
.kiro/
4343
.amazonq/
4444
memory-bank/
45+
tracking/
4546

4647
# Coverage Statistic Folders
4748
coverage
@@ -62,3 +63,7 @@ config-generated.yaml
6263
# Cypress local environment
6364
/cypress/.env.local
6465
.npmrc
66+
67+
# RAG Evaluation configs
68+
test/integration/rag/eval_datasets/eval_config.yaml
69+
test/integration/rag/eval_datasets/golden-dataset.jsonl

.pre-commit-config.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ repos:
1313
files: config-base.yaml
1414

1515
- repo: https://github.com/PyCQA/bandit
16-
rev: '1.9.2'
16+
rev: '1.9.4'
1717
hooks:
1818
- id: bandit
1919
args: [--recursive, -c=pyproject.toml]
@@ -48,28 +48,28 @@ repos:
4848
exclude: ^test/cdk/stacks/__baselines__/
4949

5050
- repo: https://github.com/codespell-project/codespell
51-
rev: v2.4.1
51+
rev: v2.4.2
5252
hooks:
5353
- id: codespell
5454
entry: codespell
55-
args: ['--skip=*.git*,*cdk.out*,*venv*,*mypy_cache*,*package-lock*,*node_modules*,*dist/*,*/public/*,*poetry.lock*,*coverage*,*models/*,*htmlcov*,*TIKTOKEN_CACHE/*,*test/cdk/stacks/__baselines__/*', "-L=xdescribe,assertIn,afterAll"]
55+
args: ['--skip=*.git*,*cdk.out*,*venv*,*mypy_cache*,*package-lock*,*node_modules*,*dist/*,*/public/*,*poetry.lock*,*coverage*,*models/*,*htmlcov*,*TIKTOKEN_CACHE/*,*test/cdk/stacks/__baselines__/*,*.jsonl', "-L=xdescribe,assertIn,afterAll"]
5656
pass_filenames: false
5757

5858
- repo: https://github.com/pycqa/isort
59-
rev: 7.0.0
59+
rev: 8.0.1
6060
hooks:
6161
- id: isort
6262
name: isort (python)
6363
exclude: ^test/cdk/stacks/__baselines__/
6464

6565
- repo: https://github.com/psf/black
66-
rev: '25.12.0'
66+
rev: '26.3.1'
6767
hooks:
6868
- id: black
6969
exclude: ^test/cdk/stacks/__baselines__/
7070

7171
- repo: https://github.com/astral-sh/ruff-pre-commit
72-
rev: 'v0.14.9'
72+
rev: 'v0.15.11'
7373
hooks:
7474
- id: ruff-check
7575
args:
@@ -95,7 +95,7 @@ repos:
9595

9696

9797
- repo: https://github.com/pre-commit/mirrors-mypy
98-
rev: 'v1.19.0'
98+
rev: 'v1.20.1'
9999
hooks:
100100
- id: mypy
101101
verbose: true
@@ -110,13 +110,13 @@ repos:
110110
exclude: ^test/
111111

112112
- repo: https://github.com/pre-commit/mirrors-eslint
113-
rev: 'v9.39.1'
113+
rev: 'v10.2.1'
114114
hooks:
115115
- id: eslint
116116
files: \.[jt]sx?$
117117
types: [file]
118118
args:
119-
- --max-warnings=20
119+
- --max-warnings=40
120120
- --no-warn-ignored
121121
- --fix
122122

@@ -126,7 +126,7 @@ repos:
126126
# - id: python-safety-dependencies-check
127127

128128
- repo: https://github.com/asottile/pyupgrade
129-
rev: v3.19.0
129+
rev: v3.21.2
130130
hooks:
131131
- id: pyupgrade
132132
args: [--py313-plus]
@@ -139,7 +139,7 @@ repos:
139139
# files: \.(json|yaml|yml|template)$
140140

141141
- repo: https://github.com/Lucas-C/pre-commit-hooks
142-
rev: v1.5.5
142+
rev: v1.5.6
143143
hooks:
144144
- id: insert-license
145145
files: \.[jt]sx?$ # *.js, *.jsx, *.ts and *.tsx
@@ -150,7 +150,7 @@ repos:
150150
- /**| |*/ # defaults to: #
151151

152152
- repo: https://github.com/Lucas-C/pre-commit-hooks
153-
rev: v1.5.5
153+
rev: v1.5.6
154154
hooks:
155155
- id: insert-license
156156
files: \.py$

CHANGELOG.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,49 @@
1+
# v6.6.0
2+
3+
## Key Features
4+
5+
### Token Usage and Context Window Visibility
6+
7+
LISA now provides improved observability for model usage and configuration:
8+
9+
- View cumulative token usage for each user session.
10+
- Display a context window field in model cards across Model Management and Model Library.
11+
- Support overriding inferred context windows for LISA-hosted models through environment configuration.
12+
13+
### Bedrock Agent Integration
14+
15+
LISA now includes native Bedrock Agent integration, giving administrators a streamlined way to publish Bedrock Agents in the platform catalog and make them available to end users.
16+
17+
Users can opt in to these agents directly from the Agent Management UI, which makes it easier to adopt Bedrock-powered workflows without separate integration steps.
18+
19+
### LISA Serve Throttling
20+
21+
LISA Serve now includes throttling controls to better protect service stability under bursty or high-volume traffic patterns.
22+
23+
These controls help prevent noisy-neighbor behavior, improve predictability during traffic spikes, and provide a stronger baseline for multi-tenant reliability.
24+
25+
### Security Hardening
26+
27+
CORS origins are now configurable via a new `corsAllowedOrigins` allowlist that is threaded through all API Gateways, Lambdas, FastAPI services, and MCP server components via a new CDK aspect, replacing permissive defaults. Additionally, client-side OAuth callback validation, safe error rendering in the UI, and stricter Pydantic request parsing for MCP Server and Workbench Lambdas reduce injection and untrusted-input risks.
28+
29+
## Other Key Changes
30+
31+
- Dependency and security maintenance updates across Python and npm packages.
32+
- Minor reliability fixes discovered during routine update work.
33+
- Small MCP Workbench lifecycle improvements for tool synchronization and routing.
34+
- Cypress CI workflow fixes for branch reporting and manual nightly test support.
35+
- Incremental SDK improvements, including RAG evaluation support.
36+
37+
38+
## Acknowledgements
39+
* @bedanley
40+
* @drduhe
41+
* @estohlmann
42+
* @gingerknight
43+
* @jmharold
44+
45+
**Full Changelog**: https://github.com/awslabs/LISA/compare/v6.5.0..v6.6.0
46+
147
# v6.5.0
248

349
## Key Features

README.md

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55

66
## What is LISA?
77

8-
Our large language model (LLM) inference solution for the Amazon Dedicated Cloud (ADC), LISA, is open source infrastructure-as-code. Customers deploy it directly into an Amazon Web Services (AWS) account in any region. LISA is scalable and ready to support production use cases.
8+
Our large language model (LLM) inference solution for the Amazon Dedicated Cloud (ADC), LISA, is open source infrastructure-as-code. Customers deploy it directly into an Amazon Web Services (AWS) account in any region. LISA is modular, scalable, and ready to support production use cases.
99

10-
LISA accelerates GenAI adoption by offering built-in configurability with Amazon Bedrock models, Knowledge Bases, and Guardrails. Also by offering advanced capabilities like an optional enterprise-ready chat user interface (UI) with configurable features, authentication, resource access control, centralized model orchestration via LiteLLM, model self-hosting via Amazon ECS, retrieval augmented generation (RAG), APIs, and broad model context protocol (MCP) support and features. LISA is also compatible with OpenAI’s API specification making it easily configurable with supporting solutions. For example, the Continue plugin for VSCode and JetBrains integrated development environments (IDE).
10+
LISA accelerates GenAI adoption by offering built-in configurability with Amazon Bedrock models, Knowledge Bases, and Guardrails. LISA also offers advanced capabilities like an optional enterprise-ready chat user interface (UI) with configurable features, authentication, resource access control, centralized model orchestration via LiteLLM, model self-hosting via Amazon ECS, retrieval augmented generation (RAG), APIs, and broad model context protocol (MCP) support. LISA is also compatible with OpenAI’s API specification, making it easily configurable with supporting solutions. For example, use LISA as the model provider via the Continue plugin for VSCode and JetBrains integrated development environments (IDEs).
1111

12-
LISA's roadmap is customer-driven, with new capabilities launching monthly. Reach out to the product team to ask questions, provide feedback, and send feature requests via the "Contact Us" button above.
12+
Reach out to the team to ask questions and provide feedback via the "Contact Us" button above.
1313

1414
## Key Features
1515

1616
* **Open Source**: No subscription or licensing fees. LISA costs are based on service usage.
17-
* **Ongoing Releases**: The product roadmap is customer-driven with releases typically every 2-4 weeks. LISA is backed by a software development team that builds production grade solutions to accelerate customers' GenAI adoption.
17+
* **Support**: LISA is backed by a software development team that builds and maintains production-ready solutions to accelerate customers' GenAI adoption.
1818
* **Model Flexibility**: Bring your own models for self-hosting, or quickly configure LISA with 100+ models supported by third-party model providers, including Amazon Bedrock and Jumpstart.
1919
* **Model Orchestration**: Centralize and standardize unique API calls to third-party model providers automatically with LISA via LiteLLM. LISA standardizes the unique API calls into the OpenAI format automatically. All that is required is an API key, model name, and API endpoint.
2020
* **Modular Components**: Accelerate GenAI adoption with secure, scalable software. LISA supports various use cases through configurable components: model serving and orchestration, chat user interface with advanced capabilities, authentication, retrieval augmented generation (RAG), Anthropic’s Model Context Protocol (MCP), and APIs.
@@ -23,7 +23,28 @@ LISA's roadmap is customer-driven, with new capabilities launching monthly. Reac
2323

2424
## Major Components
2525

26-
LISA’s four major components include Serve, a Chat UI, RAG, and MCP. LISA Serve and LISA MCP are standalone, foundational core solutions with APIs for customers not leveraging LISA’s Chat UI. Both LISA’s Chat UI and RAG are optional components, but must be used with Serve.
26+
LISA’s four major components include Serve, a Chat UI, RAG, and MCP. LISA Serve and LISA MCP are standalone, foundational core solutions with APIs for customers not leveraging LISA’s Chat UI. Both LISA’s Chat UI and RAG are optional components, but both must be used with Serve.
27+
28+
### Chat UI Screenshots
29+
30+
<table>
31+
<tr>
32+
<td align="center"><strong>Chat UI</strong></td>
33+
<td align="center"><strong>Feature Configuration</strong></td>
34+
</tr>
35+
<tr>
36+
<td><img src="lib/docs/assets/UI_Screenshots/LISA_Chat.png" alt="LISA Chat UI screenshot" width="100%"></td>
37+
<td><img src="lib/docs/assets/UI_Screenshots/LISA_Feature_Config_Page.png" alt="LISA Feature Configuration page screenshot" width="100%"></td>
38+
</tr>
39+
<tr>
40+
<td align="center"><strong>Model Management Wizard</strong></td>
41+
<td align="center"><strong>RAG Management Wizard</strong></td>
42+
</tr>
43+
<tr>
44+
<td><img src="lib/docs/assets/UI_Screenshots/LISA_Model_Mgmt_Wizard.png" alt="LISA Model Management wizard screenshot" width="100%"></td>
45+
<td><img src="lib/docs/assets/UI_Screenshots/LISA_RAG_Mgmt_Wizard.png" alt="LISA RAG Management wizard screenshot" width="100%"></td>
46+
</tr>
47+
</table>
2748

2849
Read more in the Architecture Overview section of LISA's documentation site linked above.
2950

@@ -57,6 +78,5 @@ installation and usage.
5778
## License
5879

5980
Although this repository is released under the Apache 2.0 license, when configured to use PGVector as a RAG store it
60-
uses
61-
the third party `psycopg2-binary` library. The `psycopg2-binary` project's licensing includes
81+
uses the third-party `psycopg2-binary` library. The `psycopg2-binary` project's licensing includes
6282
the [LGPL with exceptions](https://github.com/psycopg/psycopg2/blob/master/LICENSE) license.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.5.0
1+
6.6.0

bin/build-images

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -141,23 +141,28 @@ build_all_images() {
141141
echo ""
142142
fi
143143

144-
# lisa-tei
145-
build_image "Dockerfile" "lisa-tei" "latest" "./lib/serve/ecs-model/embedding/tei" \
146-
"NODE_ENV=production" \
147-
"BASE_IMAGE=ghcr.io/huggingface/text-embeddings-inference:latest" \
148-
"MOUNTS3_DEB_URL=https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb"
149-
150-
# lisa-tgi
151-
build_image "Dockerfile" "lisa-tgi" "latest" "./lib/serve/ecs-model/textgen/tgi" \
152-
"NODE_ENV=production" \
153-
"BASE_IMAGE=ghcr.io/huggingface/text-generation-inference:latest" \
154-
"MOUNTS3_DEB_URL=https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb"
155-
156-
# lisa-vllm
157-
build_image "Dockerfile" "lisa-vllm" "latest" "./lib/serve/ecs-model/vllm" \
158-
"NODE_ENV=production" \
159-
"BASE_IMAGE=public.ecr.aws/deep-learning-containers/vllm:0.15-gpu-py312-ec2" \
160-
"MOUNTS3_DEB_URL=https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb"
144+
##################################################################################
145+
# Note: Model-hosting images (lisa-tei, lisa-tgi, lisa-vllm) are not exported here
146+
# as they exceed GitHub Release asset size limits (~2GB). These images are built
147+
# at deploy time from their public base images. Uncomment to build.
148+
##################################################################################
149+
# # lisa-tei
150+
# build_image "embedding/tei/Dockerfile" "lisa-tei" "latest" "./lib/serve/ecs-model" \
151+
# "NODE_ENV=production" \
152+
# "BASE_IMAGE=ghcr.io/huggingface/text-embeddings-inference:latest" \
153+
# "MOUNTS3_DEB_URL=https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb"
154+
155+
# # lisa-tgi
156+
# build_image "textgen/tgi/Dockerfile" "lisa-tgi" "latest" "./lib/serve/ecs-model" \
157+
# "NODE_ENV=production" \
158+
# "BASE_IMAGE=ghcr.io/huggingface/text-generation-inference:latest" \
159+
# "MOUNTS3_DEB_URL=https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb"
160+
161+
# # lisa-vllm
162+
# build_image "vllm/Dockerfile" "lisa-vllm" "latest" "./lib/serve/ecs-model" \
163+
# "NODE_ENV=production" \
164+
# "BASE_IMAGE=public.ecr.aws/deep-learning-containers/vllm:0.17-gpu-py312-ec2" \
165+
# "MOUNTS3_DEB_URL=https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb"
161166

162167
echo "All images built successfully!"
163168
}

0 commit comments

Comments
 (0)