Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
224 commits
Select commit Hold shift + click to select a range
323169f
fix: skip-existing on PyPI publish to fail gracefully on re-uploads
placerda Apr 15, 2026
4d1fc09
fix: remove PATCH+1 version heuristic from VSIX builds
Dongbumlee Apr 15, 2026
facd4cd
Merge pull request #85 from Azure/fix/vsix-version-sync
Dongbumlee Apr 15, 2026
0281e1f
feat: wire OTel telemetry into runner, add telemetry docs, remove tra…
placerda Apr 16, 2026
317924d
feat: add agent_invoke spans, improve eval_item span names, clean up …
Dongbumlee Apr 16, 2026
bb7ba1f
Merge pull request #86 from Azure/feature/telemetry-doc
Dongbumlee Apr 16, 2026
0a7050b
feat: add plugin marketplace configuration and version sync
Dongbumlee Apr 16, 2026
b09e3c7
Merge pull request #100 from Azure/feature/plugin-marketplace
placerda Apr 16, 2026
58ccdfb
feat: improve eval workflow and add skills sync (#87)
placerda Apr 21, 2026
f4d5abe
Merge pull request #103 from Azure/feature/eval-workflow-improvements
Dongbumlee Apr 22, 2026
57a6d8b
feat: default publish_foundry_evaluation to true
placerda Apr 22, 2026
db57c92
Merge pull request #104 from Azure/feature/publish-foundry-default-true
Dongbumlee Apr 22, 2026
e67bdae
fix: gracefully skip cloud-only evaluators in local execution mode
Dongbumlee Apr 23, 2026
07b33bc
feat: add run-agent-local template, capture tool_calls, suppress SDK …
Dongbumlee Apr 23, 2026
215b486
feat: add Agent Framework callable adapter for local agent evaluation
Dongbumlee Apr 23, 2026
4fb1836
fix: resolve E402 lint error — move logger after imports
Dongbumlee Apr 23, 2026
99da323
feat: add multi-agent workflow callable for Agent Framework evaluation
Dongbumlee Apr 23, 2026
b0e31cd
feat: add GitHub-based skill installation (agentops skills install --…
Dongbumlee Apr 23, 2026
0f30bf0
fix: resolve pre-existing ruff lint errors (F401, F841)
Dongbumlee Apr 23, 2026
154bfbc
fix: resolve mypy type errors in multi_agent_workflow and local_adapter
Dongbumlee Apr 23, 2026
53cdd66
refactor: rewrite multi_agent_workflow to use Azure AI Agent Framewor…
Dongbumlee Apr 23, 2026
d2c870a
refactor: use Microsoft Agent Framework SDK (agent-framework)
Dongbumlee Apr 23, 2026
1fda667
fix: use canonical agent_framework.foundry import path
Dongbumlee Apr 23, 2026
ec1cec0
refactor: use WorkflowBuilder with Coordinator pattern
Dongbumlee Apr 23, 2026
3862b3f
refactor: rewrite agent_framework_adapter to use FoundryAgent
Dongbumlee Apr 24, 2026
4bb061a
fix: add @tool functions to agent_framework_adapter for tool_call cap…
Dongbumlee Apr 24, 2026
cf2eb91
refactor: agent_framework_adapter uses Agent + FoundryChatClient with…
Dongbumlee Apr 24, 2026
a362e5c
Merge pull request #106 from Azure/fix/graceful-skip-cloud-only-evalu…
placerda Apr 27, 2026
9e76b3f
feat(core): add flat agentops.yaml schema and evaluator inference
placerda Apr 27, 2026
f0d11c7
feat(pipeline): add 1.0 evaluation orchestrator with 4 backends
placerda Apr 27, 2026
a1c6a31
feat(cli,init,docs): wire flat schema into CLI and docs
placerda Apr 27, 2026
7f0e435
docs(readme): remove legacy multi-file quickstart section
placerda Apr 27, 2026
ff62b79
docs: drop unimplemented commands and stale planning docs from README
placerda Apr 27, 2026
a427ff4
feat(pipeline): opt-in publish to Foundry Evaluations panel
placerda Apr 27, 2026
167cf44
feat(e2e): add offline e2e demo script and GH Actions workflow
placerda Apr 27, 2026
5e90e52
fix(e2e): install azure-ai-evaluation in CI; check endpoint before SD…
placerda Apr 27, 2026
57bfefa
refactor(cli): remove planned-stub commands and dead modules
placerda Apr 27, 2026
2231af9
refactor(core): drop legacy schema, runner, backends, and templates
placerda Apr 27, 2026
b0249aa
refactor(skills): rewrite skills for flat 1.0 schema; drop monitor/tr…
placerda Apr 27, 2026
7687915
feat(mcp): add 'agentops mcp serve' MCP stdio server
placerda Apr 27, 2026
d96c138
docs(changelog): refresh 1.0 revamp section
placerda Apr 27, 2026
5f56188
ci(e2e): switch to manual-only trigger (workflow_dispatch)
placerda Apr 27, 2026
50e4a66
ci(e2e): add live Azure scenarios via OIDC + dynamic provisioning
placerda Apr 28, 2026
b8e6acf
test(e2e): lock in render_config schema contract
placerda Apr 28, 2026
989698b
docs(e2e): replace specific RG example with placeholder
placerda Apr 28, 2026
1ac31b2
fix(e2e): bootstrap.bicep API version and project endpoint output
placerda Apr 28, 2026
06a0ad4
fix(e2e): use 'agentops eval run' subcommand and skip foundry-hosted …
Copilot Apr 28, 2026
ff62b6f
fix(e2e): pass AZURE_OPENAI_ENDPOINT/DEPLOYMENT to eval steps
Copilot Apr 28, 2026
e1ddb76
fix(evaluators): match _latency sentinel name for runtime loader
Copilot Apr 28, 2026
961c838
fix(e2e): correct echo response_field to json.message; bump default m…
Copilot Apr 28, 2026
fc17823
fix(e2e): permissive thresholds, login on http-aca, latency-only for …
Copilot Apr 28, 2026
d1027ac
ci(e2e): tie live jobs to GitHub Environment 'e2e' for OIDC
Copilot Apr 28, 2026
2962d3b
feat(e2e): transient hosted agent with tools + per-scenario transcripts
Copilot Apr 28, 2026
197e9fd
fix(eval): drop unsupported TaskCompletionEvaluator; transcript grace…
placerda Apr 28, 2026
317824b
fix(foundry): tolerate tool-only responses; drop task_completion thre…
placerda Apr 28, 2026
26542df
fix(foundry): synthesize text from tool_call summaries when no message
placerda Apr 28, 2026
c84db07
fix(e2e): relax coherence/fluency/similarity thresholds for tool-only…
placerda Apr 28, 2026
b7cc02e
feat(e2e): markdown transcripts, force node24, document hosted-agent …
placerda Apr 28, 2026
b9b7811
ci(e2e): replace azure/login@v2 with bash composite action (no Node20)
placerda Apr 28, 2026
e18b8e0
ci(e2e): teardown also needs actions/checkout for local composite action
placerda Apr 28, 2026
8492bb7
ci(e2e): bump teardown checkout to v6 to silence Node20 warning
placerda Apr 28, 2026
7d04c61
e2e: replace echo http-aca with Microsoft Agent Framework hello-agent…
placerda Apr 28, 2026
14a040a
e2e(agent-app): drop pydantic pin (let agent-framework pick compatibl…
placerda Apr 28, 2026
fa88434
e2e(http-aca): drop explicit evaluators list (let auto-inference hand…
placerda Apr 28, 2026
a5b5fa3
e2e: long-lived UAMI for hello-agent (avoids 401 from AAD propagation)
placerda Apr 28, 2026
020a021
e2e: align artifact names with job names
placerda Apr 28, 2026
50063b4
e2e: consolidated run summary aggregating every job
placerda Apr 28, 2026
b1b6b43
e2e: fix consolidated summary metrics + bump download-artifact to v8
placerda Apr 28, 2026
d904a65
e2e: drop remaining hardcoded model name from HEADER text
placerda Apr 28, 2026
223f809
e2e(http-aca): add tool calling to hello-agent + tools dataset
placerda Apr 28, 2026
ed8124d
e2e(http-aca): add permissive thresholds for all auto-inferred evalua…
placerda Apr 28, 2026
c03b3f6
chore: gitignore tmp/ (was accidentally committed)
placerda Apr 28, 2026
b050b08
templates(workflows): bump to Node24 actions + silence azure/login wa…
placerda Apr 28, 2026
201828e
evaluators: pass tool_call trace to TaskAdherence/IntentResolution
placerda Apr 28, 2026
b0e31e4
e2e: retry transient 5xx/429 in hosted-agent bootstrap and invocations
placerda Apr 28, 2026
156d9b0
evaluators: pass tool_definitions to TaskAdherenceEvaluator
placerda Apr 28, 2026
f7e8ecf
results: capture evaluator reason field per row metric
placerda Apr 28, 2026
56d3eed
debug: dump raw payload for task_adherence/intent_resolution
placerda Apr 28, 2026
1c6530c
evaluators: fix task_adherence threshold for binary 0/1 SDK scoring
placerda Apr 28, 2026
8064fae
watchdog: add WAF-AI security posture audit (4th, opt-in category)
placerda Apr 28, 2026
287143a
scripts: one-shot bootstrap for E2E pipeline against a new Azure tenant
placerda Apr 29, 2026
048bb48
docs: drop legacy --flat flag from init examples
placerda Apr 29, 2026
44b0809
docs: rewrite end-to-end tutorial around a tool-calling support agent
placerda Apr 29, 2026
7aafa0f
docs(tutorial-end-to-end): add PowerShell env-var snippets
placerda Apr 29, 2026
e584711
docs(tutorial-end-to-end): make PowerShell the default shell
placerda Apr 29, 2026
754a73d
scripts(create_support_agent): preflight token + 'az login' hint
placerda Apr 29, 2026
0818e33
scripts(create_support_agent): print registered tools after creation
placerda Apr 29, 2026
6f44709
docs(tutorial-end-to-end): include azure-ai-evaluation in install step
placerda Apr 29, 2026
e016e7d
docs(tutorial-end-to-end): clarify AOAI endpoint shape and pin api-ve…
placerda Apr 29, 2026
37100ee
feat(runtime): default AZURE_OPENAI_API_VERSION to a New-Foundry-comp…
placerda Apr 29, 2026
6edc198
fix: address Foundry E2E quick-wins from #78
Dongbumlee Apr 29, 2026
72b457e
Merge pull request #118 from Azure/fix/foundry-eval-quick-wins
Dongbumlee Apr 29, 2026
497839e
Revert "Merge pull request #118 from Azure/fix/foundry-eval-quick-wins"
Dongbumlee Apr 29, 2026
45b324f
Merge pull request #119 from Azure/revert/foundry-eval-quick-wins
Dongbumlee Apr 29, 2026
3f679eb
fix(run): list latest-only run results
May 6, 2026
25070e5
Merge pull request #120 from Azure/fix/run-list-latest
Dongbumlee May 6, 2026
f53025e
docs: end-to-end tutorial polish + flat-schema fixes; CLI output clea…
placerda May 7, 2026
afbb0f9
ci: run PR gate inside dev environment so OIDC resolves vars+subject
placerda May 7, 2026
28fd2fa
ci: workflow templates use agentops.yaml (1.0 schema), drop .agentops…
placerda May 7, 2026
cd8f3b5
ci(templates): install agentops-toolkit from develop until 1.0 ships …
placerda May 7, 2026
6136ef7
merge: develop into feature/revamp-1.0
placerda May 7, 2026
fa3c95d
test(cicd): PR template now runs inside environment: dev (OIDC fix)
placerda May 7, 2026
8392891
fix: ruff E701/F401 + Click 8.2 CliRunner.mix_stderr removal
placerda May 7, 2026
7f99d1b
test: skip integration tests when azure-ai-evaluation is missing; add…
placerda May 7, 2026
31b9af8
fix: clean mypy errors (pydantic plugin + 6 typing fixes)
placerda May 7, 2026
82e939b
Merge pull request #108 from Azure/feature/revamp-1.0
placerda May 7, 2026
3b7b237
fix(packaging): add 'foundry' optional-dependency extra
placerda May 8, 2026
05f41c7
docs: install from git+develop while pre-1.0
placerda May 8, 2026
a844d9d
fix: pass evaluator env vars in workflows
placerda May 8, 2026
ce851b3
Merge pull request #121 from Azure/feature/test-tutorials
placerda May 8, 2026
eabb908
docs: explain GitHub environment setup
placerda May 8, 2026
90dd222
feat: emit watchdog telemetry to app insights
placerda May 8, 2026
02b7023
docs: harden tutorial walkthroughs
placerda May 8, 2026
a36361c
Merge pull request #122 from Azure/feature/tutorial-didactics
placerda May 8, 2026
5e1f4b2
Harden AgentOps tutorials and skills docs
placerda May 8, 2026
5d86850
Harden AgentOps tutorials and skills docs
placerda May 8, 2026
6e9989e
Add Watchdog security posture tutorial flow
placerda May 8, 2026
1f94400
Add Watchdog security posture tutorial flow
placerda May 8, 2026
f7497a2
Clarify Foundry tutorial publishing flow
placerda May 11, 2026
2aaeb3b
Document Foundry eval dependencies
placerda May 11, 2026
f739791
Make tutorials PowerShell first
placerda May 11, 2026
1145715
Improve missing evaluator dependency guidance
placerda May 11, 2026
40f624d
Make tutorial installs self contained
placerda May 11, 2026
9ba99fb
Remove test branch from tutorial installs
placerda May 11, 2026
206aff8
Fix Foundry quickstart endpoint handling
placerda May 11, 2026
c8752d6
Improve Foundry tenant mismatch guidance
placerda May 11, 2026
a1d025c
Clean up Foundry cloud eval output
placerda May 11, 2026
c77a297
Use inline dataset for Foundry cloud evals
placerda May 11, 2026
3208e48
Add row details to evaluation reports
placerda May 11, 2026
a405d3c
Clarify meaningful baseline comparisons
placerda May 11, 2026
95bd81a
docs(quickstart): specify agent prompts for baseline and comparison
placerda May 11, 2026
093e207
docs(quickstart): use :2 baseline and :3 comparison for Foundry versi…
placerda May 11, 2026
7fc48fc
docs(quickstart): clarify schema version vs Foundry agent version
placerda May 11, 2026
a69da41
fix(eval): validate --baseline path before running evaluation
placerda May 11, 2026
cb0efa9
fix(quickstart): drop publish: foundry_cloud and relax latency default
placerda May 11, 2026
d29730c
feat(config): simplify publish API to bool + execution mode
placerda May 11, 2026
5e97312
refactor(config): drop legacy publish string aliases
placerda May 11, 2026
e898ed9
feat(config): execution cloud implicitly publishes
placerda May 11, 2026
eda89ed
feat(cloud): execution cloud runs the agent exactly once
placerda May 11, 2026
79d2b4c
fix(cloud): exclude client-side runtime evaluators from cloud runs
placerda May 11, 2026
8646485
refactor(cloud): rename cloud_publisher to cloud_runner
placerda May 11, 2026
665c756
fix(cloud): robust response extraction from Foundry samples
placerda May 11, 2026
487877a
feat(workflow): add --platform azure-devops support
placerda May 11, 2026
e2f7fe0
feat(agent): analysis history, traces, and local monitor dashboard
placerda May 11, 2026
5963abc
feat(telemetry): auto-discover Foundry project App Insights
placerda May 11, 2026
ecbebc9
feat(telemetry): enable GenAI tracing by default to silence Azure SDK…
placerda May 12, 2026
f50f536
feat(monitor): enrich dashboard with eval runs, metric trends, teleme…
placerda May 12, 2026
6971599
feat(monitor): dashboard polish + watchdog scheduling + tutorial extras
placerda May 12, 2026
0d21ce4
ci(watchdog): dogfood the watchdog workflow template in this repo
placerda May 12, 2026
c11d7b5
feat(monitor): interactive sparklines + live Production telemetry fro…
placerda May 12, 2026
ab6be70
refactor: rename 'agentops monitor' -> 'agentops dashboard' + favicon
placerda May 12, 2026
fc48b30
docs(quickstart): align with current feature set
placerda May 12, 2026
559de71
feat(monitor): time-range filter (1D / 7D / 30D / Custom)
placerda May 12, 2026
b4689fc
ui(monitor): drop the Telemetry card when production telemetry is live
placerda May 12, 2026
358a6b3
ui(monitor): friendlier label for the dataset-rows card
placerda May 12, 2026
cd698ff
ui(monitor): stop dashboard on Enter (not just Ctrl+C)
placerda May 12, 2026
b95b69d
docs(tutorials): add 'Connect Application Insights' step
placerda May 12, 2026
2f7d600
fix(reporter): add blank line after the Result header
placerda May 12, 2026
3911f28
fix(cloud): friendlier error when Foundry rejects evals.runs.create
placerda May 12, 2026
0fd8bbc
perf(telemetry): parallelize App Insights KQL queries and cache token
placerda May 12, 2026
feed24c
feat(dashboard): polish, Foundry branding, and auto-open in browser
placerda May 12, 2026
0b5ec49
ui(dashboard): label cloud runs as 'cached from Foundry cloud run'
placerda May 12, 2026
d2aa9ef
ui(dashboard): keep card source footers short
placerda May 12, 2026
4cea8d4
feat(dashboard): collapsible sections + new Deployments row
placerda May 13, 2026
06e72ec
ui(dashboard): plain-prose source footers + precise Deployments empty…
placerda May 13, 2026
f3977dd
ui(dashboard): move per-card meta lines into the info tooltip
placerda May 13, 2026
49b1566
feat(telemetry): per-model token breakdown when multiple deployments …
placerda May 13, 2026
c888d1e
fix(workflows): suppress 'artifact not found' red X on first watchdog…
placerda May 13, 2026
0a54b05
feat(dashboard): Foundry Compliance link + watchdog findings list
placerda May 13, 2026
93cd0fe
feat(watchdog): retire Foundry duplicates, add MLOps category + 3 checks
placerda May 13, 2026
7de6a48
docs(quickstart): step 10 — wire workflows to Azure via OIDC
placerda May 13, 2026
1f95ffc
feat(cli): rename watchdog -> doctor (user-facing)
placerda May 13, 2026
4f7d815
refactor(cli): remove deprecated agent analyze alias
placerda May 13, 2026
e25b400
ui(dashboard): rename Deployments section to CI/CD
placerda May 13, 2026
4ac13e3
perf(workflows+docs): switch pip -> uv for faster installs
placerda May 13, 2026
5676594
feat(doctor): align categories to WAF-AI pillars and add Spec Conform…
placerda May 14, 2026
fc87c6f
fix(pipeline): auto-strip /openai/v1 suffix from AZURE_OPENAI_ENDPOINT
placerda May 14, 2026
4fba9cb
docs(quickstart): correct file count and evaluator override syntax
May 14, 2026
fe08ac2
Merge pull request #149 from Azure/fix/issue-125-quickstart-rev2
Dongbumlee May 14, 2026
2bac66c
docs(model-direct): align dataset JSONL example with what 'agentops i…
May 14, 2026
c09e1b4
feat(dashboard): instant loading shell, per-deployment token tooltip,…
placerda May 14, 2026
3c8507d
Merge pull request #150 from Azure/fix/issue-126-model-direct-rev2
Dongbumlee May 14, 2026
745fbc9
docs(foundry-agent): drop unsupported legacy asst_* claim; align data…
May 14, 2026
3d29af4
Merge pull request #152 from Azure/fix/issue-127-foundry-agent-rev2
Dongbumlee May 14, 2026
48a808c
docs(rag): clarify 'context' as reference passages; add named-agents …
May 14, 2026
0208a62
Merge pull request #153 from Azure/fix/issue-128-rag-rev2
Dongbumlee May 14, 2026
0b02df2
docs(baseline): soften PR-gate claim to match shipped workflow
May 14, 2026
31dbef9
Merge pull request #156 from Azure/fix/issue-132-baseline-docs-only
Dongbumlee May 14, 2026
6037fa5
docs(copilot-skills): drop deprecated --force flag; deduplicate judge…
May 14, 2026
a55e1fe
Merge pull request #158 from Azure/fix/issue-133-copilot-skills-rev2
Dongbumlee May 14, 2026
f5aa12f
fix(telemetry): stop masking App Insights errors as "no data" + drop …
placerda May 14, 2026
503e53a
docs(watchdog): clarify first-run results_history is 'missing' until …
May 14, 2026
08da486
Merge pull request #160 from Azure/fix/issue-134-watchdog-rev2
Dongbumlee May 14, 2026
ba33469
docs(http-agent): deduplicate judge env var block
May 14, 2026
3af28f7
Merge pull request #161 from Azure/fix/issue-129-http-agent-rev2
Dongbumlee May 14, 2026
59b3e31
docs(end-to-end): correct init output tree and workflow file count
May 14, 2026
dbe99ce
Merge pull request #162 from Azure/fix/issue-135-end-to-end-rev2
Dongbumlee May 14, 2026
ef8ba1c
fix(telemetry): cache successful Foundry discovery + surface failure …
placerda May 14, 2026
c3aee71
fix(ui): drop user-facing "watchdog" wording + humanize auth-failure …
placerda May 14, 2026
6a83464
fix(auth): raise DefaultAzureCredential process_timeout to 30s everyw…
placerda May 14, 2026
cefdbda
feat(doctor): WAF AI Landing Zones shortlist + remove GenAIOps Maturi…
placerda May 15, 2026
c8e4355
fix(template): drop CSV comment header, move docs to sibling README
placerda May 15, 2026
e6163ff
chore(template): drop `planned` rows from WAF shortlist (low-risk pol…
placerda May 15, 2026
1887e76
feat(doctor): 3 new WAF checks (AI.26/132/154), doctor-checks docs pa…
placerda May 15, 2026
4d0901d
ui(preflight): friendly per-item warnings + collapsed healthy summary
placerda May 15, 2026
a5b528a
fix(cli): friendly port-conflict handling for `agentops dashboard`
placerda May 15, 2026
6b9345d
fix(cli): catch uvicorn bind error and explain TIME_WAIT case clearly
placerda May 15, 2026
bc1bbf0
chore(deps): bump actions/download-artifact from 4 to 8
dependabot[bot] May 15, 2026
3635c10
chore(deps): bump actions/setup-python from 5 to 6
dependabot[bot] May 15, 2026
331d708
chore(deps): bump astral-sh/setup-uv from 3 to 7
dependabot[bot] May 15, 2026
8c605d0
chore(deps): bump actions/checkout from 4 to 6
dependabot[bot] May 15, 2026
6f13820
chore(deps): bump azure/login from 2 to 3
dependabot[bot] May 15, 2026
882bab3
Merge pull request #163 from Azure/dependabot/github_actions/develop/…
Dongbumlee May 19, 2026
ba5a413
Merge pull request #164 from Azure/dependabot/github_actions/develop/…
Dongbumlee May 19, 2026
d97acc2
Merge pull request #165 from Azure/dependabot/github_actions/develop/…
Dongbumlee May 19, 2026
2cd3f0e
Merge pull request #166 from Azure/dependabot/github_actions/develop/…
Dongbumlee May 19, 2026
df3fb8d
Merge pull request #167 from Azure/dependabot/github_actions/develop/…
Dongbumlee May 19, 2026
010e023
feat: align cockpit init and azd workflows
placerda May 20, 2026
98c3d93
Merge AgentOps cockpit init and azd workflow updates
placerda May 20, 2026
ace9b1c
feat: prepare AgentOps 0.2 release
placerda May 22, 2026
fed7494
chore: prepare release 0.2.0
placerda May 22, 2026
6c3a2b9
fix: satisfy release lint checks
placerda May 22, 2026
db60f6e
test: stabilize release CI coverage
placerda May 22, 2026
bae2761
ci: update release init smoke test
placerda May 22, 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
  •  
  •  
  •  
29 changes: 29 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "agentops",
"metadata": {
"description": "AgentOps Toolkit plugin marketplace — evaluation skills for Microsoft Foundry agents",
"version": "1.0.0"
},
"owner": {
"name": "AgentOps Toolkit",
"email": "agentops@microsoft.com"
},
"plugins": [
{
"name": "agentops-toolkit",
"source": "../../plugins/agentops",
"description": "Copilot agent skills for running standardized evaluation workflows with AgentOps Toolkit and Microsoft Foundry agents.",
"version": "0.2.0",
"keywords": [
"agentops",
"evaluation",
"foundry",
"copilot",
"agent-skills",
"ai-evaluation"
],
"license": "MIT",
"repository": "https://github.com/Azure/agentops"
}
]
}
76 changes: 76 additions & 0 deletions .github/actions/azure-oidc-login/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Azure OIDC login (composite, no node20 deps)
description: |
Drop-in replacement for azure/login@v2 that performs the OIDC federated
token exchange entirely in bash, so it does not pull any Node.js 20
JavaScript actions and keeps the Actions run free of "Node.js 20 is
deprecated" annotations.

After this step runs, the az CLI is authenticated and AZURE_* environment
variables are exported for downstream tools (azure-identity etc).

inputs:
client-id:
description: "Microsoft Entra application (client) ID"
required: true
tenant-id:
description: "Microsoft Entra tenant ID"
required: true
subscription-id:
description: "Azure subscription ID"
required: true
audience:
description: "Federated identity audience"
required: false
default: "api://AzureADTokenExchange"

runs:
using: composite
steps:
- name: Federated OIDC login (bash)
shell: bash
env:
AZURE_CLIENT_ID: ${{ inputs.client-id }}
AZURE_TENANT_ID: ${{ inputs.tenant-id }}
AZURE_SUBSCRIPTION_ID: ${{ inputs.subscription-id }}
OIDC_AUDIENCE: ${{ inputs.audience }}
run: |
set -euo pipefail

: "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:?id-token permission missing on the job}"
: "${ACTIONS_ID_TOKEN_REQUEST_URL:?id-token permission missing on the job}"

echo "::group::Requesting OIDC ID token from GitHub"
ID_TOKEN_JSON=$(curl -sS \
-H "Authorization: bearer ${ACTIONS_ID_TOKEN_REQUEST_TOKEN}" \
-H "Accept: application/json" \
"${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=${OIDC_AUDIENCE}")
ID_TOKEN=$(printf '%s' "$ID_TOKEN_JSON" | python3 -c 'import sys,json;print(json.load(sys.stdin)["value"])')
if [[ -z "${ID_TOKEN}" || "${ID_TOKEN}" == "null" ]]; then
echo "Failed to obtain GitHub OIDC ID token. Response was:" >&2
echo "$ID_TOKEN_JSON" >&2
exit 1
fi
echo "::endgroup::"

echo "::group::az login --federated-token"
az login \
--service-principal \
--username "${AZURE_CLIENT_ID}" \
--tenant "${AZURE_TENANT_ID}" \
--federated-token "${ID_TOKEN}" \
--allow-no-subscriptions \
--output none
az account set --subscription "${AZURE_SUBSCRIPTION_ID}"
echo "::endgroup::"

# Export the same env vars azure/login@v2 sets for DefaultAzureCredential
# and other downstream Azure SDKs.
{
echo "AZURE_CLIENT_ID=${AZURE_CLIENT_ID}"
echo "AZURE_TENANT_ID=${AZURE_TENANT_ID}"
echo "AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID}"
echo "AZURE_FEDERATED_TOKEN=${ID_TOKEN}"
} >> "${GITHUB_ENV}"

# The federated token is short-lived and a secret; mask it.
echo "::add-mask::${ID_TOKEN}"
4 changes: 2 additions & 2 deletions .github/code-quality-py.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ You are performing a systematic code-quality pass on a Python codebase. Work thr
```
- Simple one-line methods (getters, delegates) get a single-line docstring.

## 5. Comment Cleanup REMOVE These
## 5. Comment Cleanup - REMOVE These
- **Redundant inline comments** that just restate the code:
`# Create Claim_Process entry in Cosmos DB` above `new_claim_process = Claim_Process(...)`
- **Banner comments** / section dividers:
Expand All @@ -72,7 +72,7 @@ You are performing a systematic code-quality pass on a Python codebase. Work thr
`# Placeholder for document processing logic`
- **"For demonstration" / "Here you would typically"** comments.

## 6. Comment Cleanup KEEP These
## 6. Comment Cleanup - KEEP These
- **Actionable TODOs** with clear intent: `# TODO: Make configurable if needed`
- **Non-obvious "why" comments** that explain a design decision:
`# Avoid unbounded growth on very chatty endpoints.`
Expand Down
Loading
Loading