You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Filing metadata — Title: AGT Studio: package + CI scaffold + CODEOWNERS. Milestone: AGT Studio. Labels: enhancement, agent-governance, architecture, ci/cd. (Note: there is no existing label for the new agent-governance-studio package. Either reuse agent-governance or coordinate with maintainers to add a dedicated label when this issue is filed; the umbrella does not mandate a specific label here.)
Summary
Stand up the new top-level agent-governance-studio/ package: directory layout, package manifests (Python and npm), empty subdirs for cli/, server/, web/, CI scaffold (lint/test/build per language), CODEOWNERS entries, and MIT license headers throughout. No functional UI yet. This issue exists so Epics 1b (sidecar implementation), 1c (SPA shell), and 1d (end-to-end slice) have a real home to land into without each PR having to set up the package from scratch.
Per the umbrella's "Locked-in decisions" table (row 2), the canonical names are:
Directory: agent-governance-studio/
PyPI: agent-governance-studio
Python import: agent_governance_studio
npm: @microsoft/agent-governance-studio
Scope
In scope
New top-level directory agent-governance-studio/ with:
cli/ (Python entry-point plugin: registers agt ui and agt serve via the agt.commands entry-point group; no functional commands in this PR, just registration stubs that print "not yet implemented" until Epic 1b and 1d land).
server/ (Python sidecar; empty per-Epic 1b).
web/ (TypeScript SPA; empty per-Epic 1c).
pyproject.toml with project.name = "agent-governance-studio" and source layout under src/agent_governance_studio/, per umbrella decision Adding Microsoft SECURITY.MD #2 (PyPI agent-governance-studio, Python import agent_governance_studio). Existing in-repo precedent is mixed (some packages use the hyphenated project.name, some use the underscored one); follow the umbrella verbatim and let the maintainer reconcile if there is a stronger AGENTS.md guidance to follow. License uses license = {text = "MIT"} table form per repo AGENTS.md.
web/package.json for @microsoft/agent-governance-studio (npm scope @microsoft per repo conventions).
web/tsconfig.json, web/.eslintrc (or flat config), web/vite.config.ts. Per the umbrella decision This repo is missing a LICENSE file #1: React 18 + TypeScript + Vite + TanStack Query + Tailwind. Stub index.html + a one-component "Hello, Studio" page so vite build produces something. No routing, no data fetching.
README.md describing the package, the Epic 1a scope (scaffold only), and where the implementation lives (link back to umbrella and ADR 0028).
MIT license headers on every new source file per repo AGENTS.md (Python # Copyright, TS/JS // Copyright, shell # Copyright).
Python: lint (ruff check --select E,F,W --ignore E501) + test (pytest) + build (python -m build). Path-filtered to agent-governance-studio/** per repo CI optimization rule.
TypeScript: lint (eslint) + test (vitest or jest, match repo norms) + build (vite build). Path-filtered to agent-governance-studio/web/**.
Both jobs use SHA-pinned actions, exact-version pip install / npm install, top-level permissions: contents: read per repo AGENTS.md security rules.
Dependency pinning per repo "Supply Chain Security" rules:
Python: pin in pyproject.toml with >=x.y.z,<x.y+1.0; CI scripts use ==.
TypeScript: exact versions in package.json (no ^ or ~); commit package-lock.json.
.gitignore additions for web/node_modules, web/dist, Python build artifacts.
Out of scope
Any functional CLI command beyond stub registration → Epics 1b and 1d.
The agt serve sidecar implementation → Epic 1b.
The Engine API client generation from OpenAPI → Epic 1c.
The transport abstraction (HTTP + postMessage) → Epic 1c.
The actual SPA routes, pages, data fetching → Epic 1c and Epic 2 onwards.
The read-only invariant CI test → Epic 1d (needs the generated client to exist).
The publishing pipeline → out of scope for this scaffold; published via the existing ESRP pipeline once the package has shippable content.
Telemetry, theming, i18n — all explicitly out of scope per ADR 0028.
Background / codebase grounding
CLI host already exists: agent-governance-python/agent-compliance/src/agent_compliance/cli/agt.py defines AgtGroup (Click) with entry-point group agt.commands. The Studio CLI plugin must register against this group.
Layout precedent: other top-level packages live under agent-governance-python/ (e.g. agent-mesh, agent-os, agent-hypervisor). The umbrella decision Adding Microsoft SECURITY.MD #2 places Studio as a new top-levelagent-governance-studio/ directly under the repo root (matching the standalone language SDK convention in repo AGENTS.md), not under agent-governance-python/. Confirm with maintainers if this differs from prior PEP-625-compliant package layout; the umbrella's wording is the binding decision.
npm precedent: other TS packages use the @microsoft scope (e.g. @microsoft/agent-governance-sdk).
CODEOWNERS file is at the repo root.
Dependencies
Blocked by: batch Adding Microsoft SECURITY.MD #2 (filed as ADR 0029: Engine API contract for AGT Studio #2787) (ADR 0029) for scope confirmation only — the scaffold itself does not need the OpenAPI doc or a generated client to land. OpenAPI client generation tooling is not declared as a dev-dependency in this scaffold; Epic 1c will choose and add it with justification and lockfile review at the time the generator is actually used.
Blocks: Epic 1b (agt serve lands inside server/), Epic 1c (SPA shell lands inside web/), Epic 1d (end-to-end slice references both), and every Studio epic thereafter.
pyproject.toml, package.json, tsconfig.json, vite.config.ts, lint configs, test configs.
CI workflow file (new or extension of the existing repo CI matrix).
CODEOWNERS entry.
README.md linking back to umbrella + ADR 0028.
A passing initial CI run: lint clean, pytest runs (even if no tests yet, must not error), vite build produces a dist/ with the stub page.
Acceptance criteria
Directory and file layout matches the umbrella's package layout decision (row 2 of "Locked-in decisions").
pip install -e agent-governance-studio/ works in a fresh venv and registers agt ui and agt serve (stubs printing "not yet implemented").
npm install + vite build inside agent-governance-studio/web/ produces a working dist with the stub page.
CI jobs pass on a sample PR. Path filters prevent unrelated changes from triggering Studio CI.
All security rules from repo AGENTS.md met: SHA-pinned actions, top-level contents: read, no inline secrets, MIT license headers, file encoding="utf-8" on any text reads, trailing newlines on all source files.
CODEOWNERS block landed and validated.
README accurately describes "scaffold only, no functional UI" and links to umbrella + ADR 0028 + the threat-model doc placeholder.
Working agreements satisfied: linked from umbrella, milestone, labels, --body-file, rendered-description verification.
Notes for picking this up
This is intentionally a small, mechanical PR. Resist the temptation to bundle Epic 1b or 1c content into it — that violates the umbrella's sliced-epics principle (separate functional-UI risk from new-package and new-CI risk).
Get the package names exactly right on first try; renaming a published Python or npm package after the fact is painful. Cross-check against umbrella decision Adding Microsoft SECURITY.MD #2 verbatim.
The CODEOWNERS entry is the one place where you must coordinate with maintainers before the PR opens. Umbrella decision This repo is missing important files #3 says the names are filled in by this PR; do not invent owners.
The CI scaffold is the most security-reviewed part of this PR. Apply every rule from repo AGENTS.md "Code Scanning Prevention" section, especially: SHA-pinning of every action, permissions: contents: read at workflow top level, exact version pins on every pip install and npm install call inside CI.
Per the umbrella's "Supply chain security" alignment: use exact-version dependency pinning in the manifests, commit lockfiles, and respect the 7-day rule for any new transitive dep.
Working agreements for child issues apply: see umbrella section "Working agreements for issues filed under this tracker".
Tracker: #2729
Epic: 1a (Studio package + ownership + CI scaffold)
ADR reference:
docs/adr/0028-agt-studio-unified-ui.mdTemplate: Feature request
Filing metadata — Title:
AGT Studio: package + CI scaffold + CODEOWNERS. Milestone:AGT Studio. Labels:enhancement,agent-governance,architecture,ci/cd. (Note: there is no existing label for the newagent-governance-studiopackage. Either reuseagent-governanceor coordinate with maintainers to add a dedicated label when this issue is filed; the umbrella does not mandate a specific label here.)Summary
Stand up the new top-level
agent-governance-studio/package: directory layout, package manifests (Python and npm), empty subdirs forcli/,server/,web/, CI scaffold (lint/test/build per language),CODEOWNERSentries, and MIT license headers throughout. No functional UI yet. This issue exists so Epics 1b (sidecar implementation), 1c (SPA shell), and 1d (end-to-end slice) have a real home to land into without each PR having to set up the package from scratch.Per the umbrella's "Locked-in decisions" table (row 2), the canonical names are:
agent-governance-studio/agent-governance-studioagent_governance_studio@microsoft/agent-governance-studioScope
In scope
agent-governance-studio/with:cli/(Python entry-point plugin: registersagt uiandagt servevia theagt.commandsentry-point group; no functional commands in this PR, just registration stubs that print "not yet implemented" until Epic 1b and 1d land).server/(Python sidecar; empty per-Epic 1b).web/(TypeScript SPA; empty per-Epic 1c).pyproject.tomlwithproject.name = "agent-governance-studio"and source layout undersrc/agent_governance_studio/, per umbrella decision Adding Microsoft SECURITY.MD #2 (PyPIagent-governance-studio, Python importagent_governance_studio). Existing in-repo precedent is mixed (some packages use the hyphenatedproject.name, some use the underscored one); follow the umbrella verbatim and let the maintainer reconcile if there is a stronger AGENTS.md guidance to follow. License useslicense = {text = "MIT"}table form per repoAGENTS.md.web/package.jsonfor@microsoft/agent-governance-studio(npm scope@microsoftper repo conventions).web/tsconfig.json,web/.eslintrc(or flat config),web/vite.config.ts. Per the umbrella decision This repo is missing a LICENSE file #1: React 18 + TypeScript + Vite + TanStack Query + Tailwind. Stubindex.html+ a one-component "Hello, Studio" page sovite buildproduces something. No routing, no data fetching.README.mddescribing the package, the Epic 1a scope (scaffold only), and where the implementation lives (link back to umbrella and ADR 0028).AGENTS.md(Python# Copyright, TS/JS// Copyright, shell# Copyright).CODEOWNERSentries:/agent-governance-studio/ @<maintainer-team>— names are filled in by this PR per umbrella decision This repo is missing important files #3.ruff check --select E,F,W --ignore E501) + test (pytest) + build (python -m build). Path-filtered toagent-governance-studio/**per repo CI optimization rule.eslint) + test (vitestorjest, match repo norms) + build (vite build). Path-filtered toagent-governance-studio/web/**.pip install/npm install, top-levelpermissions: contents: readper repoAGENTS.mdsecurity rules.pyproject.tomlwith>=x.y.z,<x.y+1.0; CI scripts use==.package.json(no^or~); commitpackage-lock.json..gitignoreadditions forweb/node_modules,web/dist, Python build artifacts.Out of scope
agt servesidecar implementation → Epic 1b.Background / codebase grounding
agent-governance-python/agent-compliance/src/agent_compliance/cli/agt.pydefinesAgtGroup(Click) with entry-point groupagt.commands. The Studio CLI plugin must register against this group.agent-governance-python/(e.g.agent-mesh,agent-os,agent-hypervisor). The umbrella decision Adding Microsoft SECURITY.MD #2 places Studio as a new top-levelagent-governance-studio/directly under the repo root (matching the standalone language SDK convention in repoAGENTS.md), not underagent-governance-python/. Confirm with maintainers if this differs from prior PEP-625-compliant package layout; the umbrella's wording is the binding decision.@microsoftscope (e.g.@microsoft/agent-governance-sdk).Dependencies
agt servelands insideserver/), Epic 1c (SPA shell lands insideweb/), Epic 1d (end-to-end slice references both), and every Studio epic thereafter.Deliverables
pyproject.toml,package.json,tsconfig.json,vite.config.ts, lint configs, test configs.CODEOWNERSentry.README.mdlinking back to umbrella + ADR 0028.pytestruns (even if no tests yet, must not error),vite buildproduces adist/with the stub page.Acceptance criteria
pip install -e agent-governance-studio/works in a fresh venv and registersagt uiandagt serve(stubs printing "not yet implemented").npm install+vite buildinsideagent-governance-studio/web/produces a working dist with the stub page.AGENTS.mdmet: SHA-pinned actions, top-levelcontents: read, no inline secrets, MIT license headers, fileencoding="utf-8"on any text reads, trailing newlines on all source files.CODEOWNERSblock landed and validated.--body-file, rendered-description verification.Notes for picking this up
AGENTS.md"Code Scanning Prevention" section, especially: SHA-pinning of every action,permissions: contents: readat workflow top level, exact version pins on everypip installandnpm installcall inside CI.