Skip to content

Commit 7656617

Browse files
authored
Merge branch 'main' into users/johanb/CodeReviewSkill
2 parents 154bddb + 98d6eb0 commit 7656617

125 files changed

Lines changed: 16517 additions & 1832 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/ISSUE_TEMPLATE/bug_report.md

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Bug report
2+
description: Something is not working correctly.
3+
labels: "S: needs triage, type: bug"
4+
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: >-
9+
Hi there!
10+
11+
We'd appreciate it if you could search on existing issues prior to filing
12+
a bug report.
13+
14+
We get a lot of duplicate tickets and have limited maintainer capacity to triage
15+
them. Thanks!
16+
17+
- type: textarea
18+
attributes:
19+
label: Description
20+
description: >-
21+
A clear and concise description of what the bug is.
22+
validations:
23+
required: true
24+
25+
- type: textarea
26+
attributes:
27+
label: Expected behavior
28+
description: >-
29+
A clear and concise description of what you expected to happen.
30+
31+
- type: input
32+
attributes:
33+
label: SDK Version
34+
description: e.g., 1.0.0
35+
validations:
36+
required: true
37+
38+
- type: input
39+
attributes:
40+
label: Python Version
41+
description: e.g., Python 3.10, Python 3.11, Python 3.12
42+
validations:
43+
required: true
44+
45+
- type: input
46+
attributes:
47+
label: OS
48+
description: e.g., Windows 11, macOS 14, Ubuntu 22.04
49+
validations:
50+
required: true
51+
52+
- type: textarea
53+
attributes:
54+
label: How to Reproduce
55+
description: Please provide steps to reproduce this bug.
56+
placeholder: |
57+
1. Go to '...'
58+
2. Run '...'
59+
3. An error occurs.
60+
validations:
61+
required: true
62+
63+
- type: textarea
64+
attributes:
65+
label: Output
66+
description: >-
67+
Provide the output of the steps above, including the commands
68+
themselves and any error messages/traceback.
69+
70+
If you want to present output from multiple commands, please prefix
71+
the line containing the command with $ . Please also ensure that
72+
the "How to reproduce" section contains matching instructions for
73+
reproducing this.
74+
75+
- type: textarea
76+
attributes:
77+
label: Screenshots
78+
description: >-
79+
If applicable, add screenshots to help explain your problem.
80+
81+
- type: checkboxes
82+
attributes:
83+
label: Code of Conduct
84+
options:
85+
- label: >-
86+
I agree to follow the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
87+
required: true

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Feature request
2+
description: Suggest an idea for this project.
3+
labels: "S: needs triage, type: feature"
4+
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: >-
9+
Hi there!
10+
11+
Thanks for taking the time to suggest a new feature! Please search existing
12+
issues first to make sure this hasn't already been requested.
13+
14+
- type: textarea
15+
attributes:
16+
label: Is your feature request related to a problem?
17+
description: >-
18+
A clear and concise description of what the problem is.
19+
placeholder: "Ex. When I try X [...]"
20+
validations:
21+
required: true
22+
23+
- type: dropdown
24+
attributes:
25+
label: Priority
26+
description: What priority would you assign to this feature?
27+
options:
28+
- High
29+
- Medium
30+
- Low
31+
validations:
32+
required: true
33+
34+
- type: textarea
35+
attributes:
36+
label: Describe the solution you'd like
37+
description: >-
38+
A clear and concise description of what you want to happen.
39+
validations:
40+
required: true
41+
42+
- type: textarea
43+
attributes:
44+
label: Describe alternatives you've considered
45+
description: >-
46+
A clear and concise description of any alternative solutions or features you've considered.
47+
48+
- type: textarea
49+
attributes:
50+
label: Available workarounds
51+
description: >-
52+
Are there any available workarounds in case this feature does not get picked up?
53+
54+
- type: textarea
55+
attributes:
56+
label: Additional context
57+
description: >-
58+
Add any other context or screenshots about the feature request here.
59+
60+
- type: checkboxes
61+
attributes:
62+
label: Code of Conduct
63+
options:
64+
- label: >-
65+
I agree to follow the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
66+
required: true

.github/workflows/ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ jobs:
105105

106106
- name: Install the project
107107
run: uv lock && uv sync --locked --all-extras --dev
108-
108+
109+
- name: Verify centralized version constraints
110+
run: python scripts/verify_constraints.py
111+
109112
- name: Check linting
110113
run: |
111114
uv run --frozen ruff check . --preview
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Dependency Review - blocks PRs that introduce known-vulnerable dependencies
2+
name: Dependency Review
3+
4+
on:
5+
pull_request:
6+
branches: [main]
7+
8+
permissions:
9+
contents: read
10+
pull-requests: write
11+
12+
jobs:
13+
dependency-review:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout repository
17+
uses: actions/checkout@v4
18+
19+
- name: Dependency Review
20+
uses: actions/dependency-review-action@v4
21+
with:
22+
fail-on-severity: high
23+
comment-summary-in-pr: always
24+
deny-licenses: GPL-3.0-only, AGPL-3.0-only

.pre-commit-config.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Pre-commit hooks for Agent365-python
2+
# Install: pip install pre-commit && pre-commit install
3+
# Run manually: pre-commit run --all-files
4+
5+
repos:
6+
# Gitleaks - detect secrets in code
7+
- repo: https://github.com/gitleaks/gitleaks
8+
rev: v8.18.4
9+
hooks:
10+
- id: gitleaks
11+
12+
# Whitespace fixes
13+
- repo: https://github.com/pre-commit/pre-commit-hooks
14+
rev: v4.6.0
15+
hooks:
16+
- id: trailing-whitespace
17+
args: [--markdown-linebreak-ext=md]
18+
- id: end-of-file-fixer
19+
- id: mixed-line-ending
20+
args: [--fix=lf]
21+
- id: check-merge-conflict
22+
- id: check-yaml
23+
args: [--allow-multiple-documents]
24+
- id: check-json
25+
- id: check-toml
26+
- id: check-ast
27+
28+
# Python specific - using Ruff (matches CI settings)
29+
- repo: https://github.com/astral-sh/ruff-pre-commit
30+
rev: v0.4.4
31+
hooks:
32+
- id: ruff
33+
args: [--fix, --line-length=100]
34+
- id: ruff-format
35+
args: [--line-length=100]

CLAUDE.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,34 @@ libraries/
136136
- MCP (Model Context Protocol) integration
137137
- Framework-specific adapters for tool execution
138138

139+
### Centralized Dependency Version Management
140+
141+
This monorepo uses uv's `constraint-dependencies` feature to centralize version constraints:
142+
143+
**How it works:**
144+
1. **Root pyproject.toml** defines version constraints for all external packages
145+
2. **Package pyproject.toml** files declare dependencies by name only (no version)
146+
3. **uv** applies root constraints during dependency resolution
147+
148+
**Adding a new dependency:**
149+
1. Add the package name to your package's `dependencies` array
150+
2. Add the version constraint to root `pyproject.toml` `constraint-dependencies`
151+
3. Run `uv lock && uv sync`
152+
153+
**Updating a dependency version:**
154+
1. Edit the constraint in root `pyproject.toml` only
155+
2. Run `uv lock && uv sync`
156+
3. All packages automatically use the new version
157+
158+
**Internal workspace dependencies:**
159+
- Package pyproject.toml files list internal deps by name only (e.g., `microsoft-agents-a365-runtime`)
160+
- Root pyproject.toml `[tool.uv.sources]` maps them to `{ workspace = true }` for local development
161+
- At build time, `setup.py` injects exact version matches (e.g., `== 1.2.3`) for published packages
162+
- This ensures all SDK packages require the exact same version of each other
163+
164+
**CI Enforcement:** The `scripts/verify_constraints.py` script runs in CI to prevent
165+
accidental reintroduction of version constraints in package files.
166+
139167
### Test Organization
140168

141169
Tests mirror the library structure:

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
[![PyPI](https://img.shields.io/pypi/v/microsoft-agents-a365-observability-core?label=PyPI&logo=pypi)](https://pypi.org/search/?q=microsoft-agents-a365)
44
[![PyPI Downloads](https://img.shields.io/pypi/dm/microsoft-agents-a365-observability-core?label=Downloads&logo=pypi)](https://pypi.org/search/?q=microsoft-agents-a365)
5-
[![Build Status](https://img.shields.io/github/actions/workflow/status/microsoft/Agent365-python/.github/workflows/ci.yml?branch=main&label=Build&logo=github)](https://github.com/microsoft/Agent365-python/actions)
5+
[![CI - Build, Test, and Publish SDKs](https://github.com/microsoft/Agent365-python/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/microsoft/Agent365-python/actions/workflows/ci.yml)
6+
[![CodeQL](https://github.com/microsoft/Agent365-python/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main)](https://github.com/microsoft/Agent365-python/actions/workflows/github-code-scanning/codeql)
67
[![License](https://img.shields.io/github/license/microsoft/Agent365-python?label=License)](LICENSE.md)
78
[![Python Version](https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python)](https://www.python.org/)
89
[![Contributors](https://img.shields.io/github/contributors/microsoft/Agent365-python?label=Contributors&logo=github)](https://github.com/microsoft/Agent365-python/graphs/contributors)

0 commit comments

Comments
 (0)