Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
df1e3c1
style(callback_handler): fix docstring for PrintingCallbackHandler.__…
awsarron May 27, 2025
a4e5ae3
chore(tests): Add unit tests for user agent changes (#125)
clareliguori May 27, 2025
c30efd8
Increasing Coverage Message Processor (#115)
May 27, 2025
d8b1803
feat: Add non-streaming support to BedrockModel (#75)
Unshure May 27, 2025
55cc36d
fix: Added hyphen to allowed characters in tool name validation (#55)
xiehust May 29, 2025
3902560
models - content - documents (#138)
pgrayy May 29, 2025
b7c6720
models - anthropic - document - plain text (#141)
pgrayy May 29, 2025
b633f53
fix(telemetry): correct environment variable precedence for OTEL conf…
JackYPCOnline May 29, 2025
e5b50ca
Automate deployment to PYPI (#145)
Unshure May 30, 2025
176af57
models - unsupported content types (#144)
pgrayy May 30, 2025
04b143c
feat: Add CachePoint type definition to ContentBlock (#142)
moritalous May 30, 2025
fe68650
docs: add meta copyright header (#153)
seyeong-han May 30, 2025
c711e24
refactor: Update conversation manager interface (#161)
Unshure Jun 2, 2025
1177eb0
models - correct tool result content (#154)
pgrayy Jun 2, 2025
284b908
test: set OTEL_ env vars correctly for tests (#169)
awsarron Jun 3, 2025
d509eef
Fix agent default callback handler (#170)
awsarron Jun 3, 2025
f6f7a05
chore: Add permissions to workflows (#166)
Unshure Jun 3, 2025
22b9f1f
Remove redundant permissions block (#172)
Unshure Jun 4, 2025
7f35858
Fix: Preserve deeply nested schemas (#133)
lukehau Jun 5, 2025
2bc4775
fix: ignore mypy error from latest OpenTelemetrySDK update (#180)
zastrowm Jun 6, 2025
c1926d2
Add permission block to call-tst-lint job (#186)
Unshure Jun 6, 2025
a264d1e
fix: Handle empty choices in OpenAI model provider (#185)
mrityunjayshukla Jun 6, 2025
de0de7d
Remove codeowners (#181)
zastrowm Jun 9, 2025
241c02c
chore: enhance MCP error message for use outside context manager (#175)
dbschmigelski Jun 9, 2025
988af22
Fix: Enable underscores in direct method invocations to match hyphens…
zastrowm Jun 9, 2025
f4aa601
feat(summarizing_conversation_manager): implement summarization strat…
stefanoamorelli Jun 10, 2025
e3cf571
chore: moved truncation logic to conversation manager and added shoul…
poshinchen Jun 11, 2025
9686a41
refactor: Disallow similar tool names in the tool registry (#193)
zastrowm Jun 11, 2025
ac0a9fd
ci: add integration test workflow (#201)
dbschmigelski Jun 11, 2025
796086c
fix: add inference profile to litellm test and remove ownership check…
dbschmigelski Jun 12, 2025
c05994a
chore: allow custom tracer provider in Agent (#207)
poshinchen Jun 13, 2025
70faa24
build(a2a): add a2a deps and mitigate otel conflict (#232)
jer96 Jun 16, 2025
0363fd4
chore(otel): raise exception if exporter unavailable (#234)
jer96 Jun 16, 2025
81c7c34
fix: Update PR Integration Test Workflow (#237)
AdnaneKhan Jun 17, 2025
aa867d8
fix: remove swagger-parser (#220)
zastrowm Jun 17, 2025
6494774
fix: Update throttling logic to use exponential back-off (#223)
zastrowm Jun 17, 2025
c9770c2
feat: Simplify contribution template + pr scripts to run (#221)
zastrowm Jun 17, 2025
09bf495
chore(deps): relax docstring_parser version to allow 1.0 (#239)
dbschmigelski Jun 18, 2025
5610430
feat: initialized meter (#219)
poshinchen Jun 18, 2025
5c98292
models - openai - images - b64 validate (#251)
pgrayy Jun 19, 2025
4b8c75e
chore: Inline event loop helper functions (#222)
zastrowm Jun 19, 2025
1edc2bc
feat: add structured output support using Pydantic models (#60)
theagenticguy Jun 19, 2025
b22d916
fix: Emit warning that us-west-2 will not be the default region (#254)
zastrowm Jun 19, 2025
2e5fbc8
models - openai - b64encode method (#260)
pgrayy Jun 20, 2025
7fb2fa0
chore: emit strands metrics (#248)
poshinchen Jun 20, 2025
89be81f
iterative streaming (#241)
pgrayy Jun 20, 2025
6802f82
Initial A2A server Integration (#218)
jer96 Jun 20, 2025
2c8fb7c
litellm - bug in v1.73.0 (#270)
pgrayy Jun 23, 2025
48243d0
Update @tool to return an AgentTool that also acts as a function (#258)
zastrowm Jun 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .github/CODEOWNERS

This file was deleted.

33 changes: 17 additions & 16 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,38 @@
## Description
[Provide a detailed description of the changes in this PR]
<!-- Provide a detailed description of the changes in this PR -->

## Related Issues
[Link to related issues using #issue-number format]

<!-- Link to related issues using #issue-number format -->

## Documentation PR
[Link to related associated PR in the agent-docs repo]

<!-- Link to related associated PR in the agent-docs repo -->

## Type of Change
- Bug fix
- New feature
- Breaking change
- Documentation update
- Other (please describe):

[Choose one of the above types of changes]
<!-- Choose one of the following types of changes, delete the rest -->

Bug fix
New feature
Breaking change
Documentation update
Other (please describe):

## Testing
[How have you tested the change?]

* `hatch fmt --linter`
* `hatch fmt --formatter`
* `hatch test --all`
* Verify that the changes do not break functionality or introduce warnings in consuming repositories: agents-docs, agents-tools, agents-cli
How have you tested the change? Verify that the changes do not break functionality or introduce warnings in consuming repositories: agents-docs, agents-tools, agents-cli

- [ ] I ran `hatch run prepare`

## Checklist
- [ ] I have read the CONTRIBUTING document
- [ ] I have added tests that prove my fix is effective or my feature works
- [ ] I have added any necessary tests that prove my fix is effective or my feature works
- [ ] I have updated the documentation accordingly
- [ ] I have added an appropriate example to the documentation to outline the feature
- [ ] I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
- [ ] My changes generate no new warnings
- [ ] Any dependent changes have been merged and published

----

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
74 changes: 74 additions & 0 deletions .github/workflows/integration-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Secure Integration test

on:
pull_request_target:
branches: main

jobs:
authorization-check:
permissions: read-all
runs-on: ubuntu-latest
outputs:
approval-env: ${{ steps.collab-check.outputs.result }}
steps:
- name: Collaborator Check
uses: actions/github-script@v7
id: collab-check
with:
result-encoding: string
script: |
try {
const permissionResponse = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: context.payload.pull_request.user.login,
});
const permission = permissionResponse.data.permission;
const hasWriteAccess = ['write', 'admin'].includes(permission);
if (!hasWriteAccess) {
console.log(`User ${context.payload.pull_request.user.login} does not have write access to the repository (permission: ${permission})`);
return "manual-approval"
} else {
console.log(`Verifed ${context.payload.pull_request.user.login} has write access. Auto Approving PR Checks.`)
return "auto-approve"
}
} catch (error) {
console.log(`${context.payload.pull_request.user.login} does not have write access. Requiring Manual Approval to run PR Checks.`)
return "manual-approval"
}
check-access-and-checkout:
runs-on: ubuntu-latest
needs: authorization-check
environment: ${{ needs.authorization-check.outputs.approval-env }}
permissions:
id-token: write
pull-requests: read
contents: read
steps:
- name: Configure Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.STRANDS_INTEG_TEST_ROLE }}
aws-region: us-east-1
mask-aws-account-id: true
- name: Checkout head commit
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }} # Pull the commit from the forked repo
persist-credentials: false # Don't persist credentials for subsequent actions
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: |
pip install --no-cache-dir hatch
- name: Run integration tests
env:
AWS_REGION: us-east-1
AWS_REGION_NAME: us-east-1 # Needed for LiteLLM
id: tests
run: |
hatch test tests-integ


19 changes: 19 additions & 0 deletions .github/workflows/pr-and-push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Pull Request and Push Action

on:
pull_request: # Safer than pull_request_target for untrusted code
branches: [ main ]
types: [opened, synchronize, reopened, ready_for_review, review_requested, review_request_removed]
push:
branches: [ main ] # Also run on direct pushes to main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
call-test-lint:
uses: ./.github/workflows/test-lint.yml
permissions:
contents: read
with:
ref: ${{ github.event.pull_request.head.sha }}
82 changes: 82 additions & 0 deletions .github/workflows/pypi-publish-on-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Publish Python Package

on:
release:
types:
- published

jobs:
call-test-lint:
uses: ./.github/workflows/test-lint.yml
permissions:
contents: read
with:
ref: ${{ github.event.release.target_commitish }}

build:
name: Build distribution 📦
permissions:
contents: read
needs:
- call-test-lint
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install hatch twine

- name: Validate version
run: |
version=$(hatch version)
if [[ $version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Valid version format"
exit 0
else
echo "Invalid version format"
exit 1
fi

- name: Build
run: |
hatch build

- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/

deploy:
name: Upload release to PyPI
needs:
- build
runs-on: ubuntu-latest

# environment is used by PyPI Trusted Publisher and is strongly encouraged
# https://docs.pypi.org/trusted-publishers/adding-a-publisher/
environment:
name: pypi
url: https://pypi.org/p/strands-agents
permissions:
# IMPORTANT: this permission is mandatory for Trusted Publishing
id-token: write

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
name: Test and Lint

on:
pull_request: # Safer than pull_request_target for untrusted code
branches: [ main ]
types: [opened, synchronize, reopened, ready_for_review, review_requested, review_request_removed]
push:
branches: [ main ] # Also run on direct pushes to main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
workflow_call:
inputs:
ref:
required: true
type: string

jobs:
unit-test:
Expand Down Expand Up @@ -56,7 +53,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }} # Explicitly define which commit to check out
ref: ${{ inputs.ref }} # Explicitly define which commit to check out
persist-credentials: false # Don't persist credentials for subsequent actions
- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -78,7 +75,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
ref: ${{ inputs.ref }}
persist-credentials: false

- name: Set up Python
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ __pycache__*
.pytest_cache
.ruff_cache
*.bak
.vscode
.vscode
dist
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ from strands.models.llamaapi import LlamaAPIModel
bedrock_model = BedrockModel(
model_id="us.amazon.nova-pro-v1:0",
temperature=0.3,
streaming=True, # Enable/disable streaming
)
agent = Agent(model=bedrock_model)
agent("Tell me about Agentic AI")
Expand Down
Loading