Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
f41fe7c
feat: auto-bootstrap prompt agents in empty Foundry projects (#188)
placerda May 29, 2026
bba6b35
docs: reflect Foundry's :2 first-publish version + correct foundry-ag…
placerda May 29, 2026
70897f7
fix(ci): smoke test must bootstrap azd env for .azure/config.json ass…
Dongbumlee May 29, 2026
3c7c805
docs(tutorial): explain where to find App Insights connection string …
placerda May 29, 2026
2a858c0
Merge remote-tracking branch 'origin/main' into develop
placerda May 29, 2026
d544388
docs(tutorial): treat App Insights as already-connected by default (#…
placerda May 29, 2026
e47689b
fix(ci): staging verify-tombstone-testpypi handles dev-version dep mi…
Dongbumlee May 29, 2026
9f7dfc9
fix(release): correct VSIX tombstone identity to AgentOpsToolkit.agen…
May 29, 2026
fc204e3
fix(ci): staging vsce publish must surface auth/network failures
May 29, 2026
d04e39d
fix(agent): use ruamel.yaml instead of pyyaml in agent modules (#193)
placerda May 29, 2026
7a5efce
Merge remote-tracking branch 'origin/main' into develop
placerda May 29, 2026
0fe6b00
fix(cloud-eval): extract scores from real Foundry azure_ai_evaluator …
placerda May 29, 2026
fef1e35
chore: merge main into develop (cloud-results hotfix PR #196 + tombst…
placerda May 29, 2026
6b9815c
chore(ci): retire one-shot tombstone publish jobs
May 29, 2026
52236a8
fix(cicd): upload cloud_output_items.json as CI artifact (#197)
placerda May 29, 2026
ebcf325
chore: sync develop with main after #199 hotfix
placerda May 29, 2026
e9adc0d
Merge remote-tracking branch 'origin/develop' into chore/retire-tombs…
May 29, 2026
afaa758
Merge pull request #198 from Azure/chore/retire-tombstone-pipeline-jobs
Dongbumlee May 29, 2026
1718175
fix(ci): migrate publish-dev to OIDC Trusted Publishing
May 29, 2026
977edc3
Merge pull request #200 from Azure/fix/publish-dev-oidc
Dongbumlee May 29, 2026
6bea832
fix(cloud-eval): lift grader execution errors into RowMetric.error (#…
placerda May 29, 2026
d610624
Merge remote-tracking branch 'origin/main' into develop
Copilot May 29, 2026
daa4229
docs(skill): require Cognitive Services OpenAI User as prereq RBAC ro…
placerda May 29, 2026
0232732
Merge remote-tracking branch 'origin/main' into develop
placerda May 29, 2026
82d7527
fix(wizard): refuse cross-env endpoint pre-fill when --azd-env is exp…
placerda May 29, 2026
45e09cb
docs: rename "quickstart"/"workshop" to "tutorial" across docs (#206)
placerda May 29, 2026
9ec26f4
docs: flag workflow-skill setup as already done in tutorial follow-up…
placerda May 29, 2026
2e37e21
docs: fix stale step references in skip-if-skill callouts (#208)
placerda May 29, 2026
76bce41
chore: prepare release 0.3.1
github-actions[bot] May 29, 2026
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
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"name": "agentops-accelerator",
"source": "../../plugins/agentops",
"description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Toolkit and Microsoft Foundry agents.",
"version": "0.3.0",
"version": "0.3.1",
"keywords": [
"agentops",
"evaluation",
Expand Down
13 changes: 13 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# GitHub Actions and other YAML workflow files must use LF.
# Mixed CRLF/LF in .github/workflows/*.yml inflates diffs on cross-platform
# contributors and serves no purpose — GitHub Actions parses both but renders
# inconsistently in `git diff`.
*.yml text eol=lf
*.yaml text eol=lf

# Shell scripts must use LF to remain executable under sh/bash.
*.sh text eol=lf

# Markdown and Python normalize to LF for cross-platform consistency.
*.md text eol=lf
*.py text eol=lf
2 changes: 1 addition & 1 deletion .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"name": "agentops-accelerator",
"source": "../../plugins/agentops",
"description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Toolkit and Microsoft Foundry agents.",
"version": "0.3.0",
"version": "0.3.1",
"keywords": [
"agentops",
"evaluation",
Expand Down
234 changes: 117 additions & 117 deletions .github/workflows/_build.yml
Original file line number Diff line number Diff line change
@@ -1,117 +1,117 @@
# AgentOps Toolkit — Reusable Build Workflow
#
# Workflows:
# 1. ci.yml — Lint + test on every push/PR; build VSIX validation
# 2. _build.yml — Reusable Python build (test + package), called by staging and release
# 3. staging.yml — Staging: release/* → TestPyPI + VSIX pre-release
# 4. release.yml — Production: v* tag → PyPI + VSIX stable + GitHub Release
# 5. cut-release.yml — Manual dispatch: create release branch + PR from develop
#
# Called by staging.yml and release.yml via workflow_call.
# Runs tests, builds the Python package (version via setuptools-scm), and uploads
# the dist/ artifacts for downstream jobs.
#
# Note: VSIX packaging is handled directly in ci/staging/release workflows
# (requires Node.js + @vscode/vsce), not in this Python-focused reusable build.
#
# Usage in caller workflows:
# jobs:
# build:
# uses: ./.github/workflows/_build.yml
name: _build
on:
workflow_call:
inputs:
checkout_ref:
description: "Optional ref to check out, used by manual release reruns."
required: false
type: string
default: ""
release_tag:
description: "Optional v-prefixed tag that should define the package version."
required: false
type: string
default: ""
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.checkout_ref || github.ref }}
fetch-depth: 0 # Full history required for setuptools-scm
- name: Pin package version for release tags
if: ${{ inputs.release_tag != '' || startsWith(github.ref, 'refs/tags/v') }}
run: |
TAG="${{ inputs.release_tag }}"
TAG="${TAG:-$GITHUB_REF_NAME}"
VERSION="${TAG#v}"
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "::error::Release tag '$TAG' did not resolve to a semver package version."
exit 1
fi
echo "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_AGENTOPS_ACCELERATOR=$VERSION" >> "$GITHUB_ENV"
echo "EXPECTED_PACKAGE_VERSION=$VERSION" >> "$GITHUB_ENV"
echo "Release package version pinned to $VERSION from $TAG"
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: ">=0.9.0"
- name: Set up Python
run: uv python install 3.12
- name: Install dependencies
run: uv sync --group dev
- name: Lint with ruff
run: uv run ruff check src/ tests/
- name: Run tests
run: uv run pytest tests/ -v --tb=short
- name: Build package
run: uv build
- name: Assert release artifact version
run: |
if [ -z "${EXPECTED_PACKAGE_VERSION:-}" ]; then
echo "No release package version was pinned; skipping artifact version assertion."
exit 0
fi
python - <<'PY'
import os
import sys
from pathlib import Path
expected = os.environ["EXPECTED_PACKAGE_VERSION"]
dist = Path("dist")
matches = [
*sorted(dist.glob(f"agentops_accelerator-{expected}.tar.gz")),
*sorted(dist.glob(f"agentops_accelerator-{expected}-*.whl")),
]
if not matches:
print(f"::error::Expected dist artifact for version {expected}, found:")
for artifact in sorted(dist.iterdir()):
print(f" - {artifact.name}")
sys.exit(1)
print("Release artifacts:")
for artifact in matches:
print(f" - {artifact.name}")
PY
- name: Show build info
run: |
ls -la dist/
uv run python -c "from importlib.metadata import version; print(f'Version: {version(\"agentops-accelerator\")}')"
- name: Upload build artifacts
uses: actions/upload-artifact@v7
with:
name: dist
path: dist/
# AgentOps Toolkit — Reusable Build Workflow
#
# Workflows:
# 1. ci.yml — Lint + test on every push/PR; build VSIX validation
# 2. _build.yml — Reusable Python build (test + package), called by staging and release
# 3. staging.yml — Staging: release/* → TestPyPI + VSIX pre-release
# 4. release.yml — Production: v* tag → PyPI + VSIX stable + GitHub Release
# 5. cut-release.yml — Manual dispatch: create release branch + PR from develop
#
# Called by staging.yml and release.yml via workflow_call.
# Runs tests, builds the Python package (version via setuptools-scm), and uploads
# the dist/ artifacts for downstream jobs.
#
# Note: VSIX packaging is handled directly in ci/staging/release workflows
# (requires Node.js + @vscode/vsce), not in this Python-focused reusable build.
#
# Usage in caller workflows:
# jobs:
# build:
# uses: ./.github/workflows/_build.yml

name: _build

on:
workflow_call:
inputs:
checkout_ref:
description: "Optional ref to check out, used by manual release reruns."
required: false
type: string
default: ""
release_tag:
description: "Optional v-prefixed tag that should define the package version."
required: false
type: string
default: ""

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.checkout_ref || github.ref }}
fetch-depth: 0 # Full history required for setuptools-scm

- name: Pin package version for release tags
if: ${{ inputs.release_tag != '' || startsWith(github.ref, 'refs/tags/v') }}
run: |
TAG="${{ inputs.release_tag }}"
TAG="${TAG:-$GITHUB_REF_NAME}"
VERSION="${TAG#v}"
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "::error::Release tag '$TAG' did not resolve to a semver package version."
exit 1
fi
echo "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_AGENTOPS_ACCELERATOR=$VERSION" >> "$GITHUB_ENV"
echo "EXPECTED_PACKAGE_VERSION=$VERSION" >> "$GITHUB_ENV"
echo "Release package version pinned to $VERSION from $TAG"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: ">=0.9.0"

- name: Set up Python
run: uv python install 3.12

- name: Install dependencies
run: uv sync --group dev

- name: Lint with ruff
run: uv run ruff check src/ tests/

- name: Run tests
run: uv run pytest tests/ -v --tb=short

- name: Build package
run: uv build

- name: Assert release artifact version
run: |
if [ -z "${EXPECTED_PACKAGE_VERSION:-}" ]; then
echo "No release package version was pinned; skipping artifact version assertion."
exit 0
fi
python - <<'PY'
import os
import sys
from pathlib import Path

expected = os.environ["EXPECTED_PACKAGE_VERSION"]
dist = Path("dist")
matches = [
*sorted(dist.glob(f"agentops_accelerator-{expected}.tar.gz")),
*sorted(dist.glob(f"agentops_accelerator-{expected}-*.whl")),
]
if not matches:
print(f"::error::Expected dist artifact for version {expected}, found:")
for artifact in sorted(dist.iterdir()):
print(f" - {artifact.name}")
sys.exit(1)
print("Release artifacts:")
for artifact in matches:
print(f" - {artifact.name}")
PY

- name: Show build info
run: |
ls -la dist/
uv run python -c "from importlib.metadata import version; print(f'Version: {version(\"agentops-accelerator\")}')"

- name: Upload build artifacts
uses: actions/upload-artifact@v7
with:
name: dist
path: dist/
Loading
Loading