-
Notifications
You must be signed in to change notification settings - Fork 106
docs(boost): add initial PRD and OpenSpec specifications for clean room re-implementation of augment #3278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
docs(boost): add initial PRD and OpenSpec specifications for clean room re-implementation of augment #3278
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
e469f2d
fix(feat): initial prd, then openspec specs, for clean room re-impl o…
gabemontero 7452b50
durandom-rm-png-refs
gabemontero 2d9059f
durandom-rm-augment-forward-looking-scenarios
gabemontero 3d28710
durandom-clarify-uc-4
gabemontero 9e1e5e8
durandom-spec-draft-status
gabemontero b63d58d
fullsend-fix-filesystem-path
gabemontero a2746e6
fullsend-update-readme-high-level-intent
gabemontero d406f17
gabe-readme-tweak-to-why-stmt
gabemontero File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3 changes: 3 additions & 0 deletions
3
workspaces/boost/openspec/changes/agent-creation-discovery/.openspec.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| schema: spec-driven | ||
| created: 2026-05-19 | ||
| status: draft |
66 changes: 66 additions & 0 deletions
66
workspaces/boost/openspec/changes/agent-creation-discovery/design.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,66 @@ | ||
| # Design: Agent Creation & Discovery | ||
|
|
||
| ## Context | ||
|
|
||
| Boost models AI domain objects (agents, tools, models, MCP servers, vector stores) as Backstage catalog entities from the start, informed by augment's experience. Augment managed these entirely in plugin-internal caches — four separate in-memory stores with duplicate caches, no discoverability, and no catalog-level RBAC. Boost uses catalog entity providers from day one, with existing Backstage kinds (`Component`, `Resource`) and a migration path to upstream `AIContext` and `API v1alpha2` kinds when available. | ||
|
|
||
| Boost implements the 4-stage agent lifecycle (Draft → Pending → Published → Archived) from the start — no legacy stage mappings needed. | ||
|
|
||
| Boost integrates with an external skills marketplace (provided by a separate workspace) as a consumer, proxying browse/filter requests and handling local deployment of selected skills-based agents. | ||
|
|
||
| ## Goals | ||
|
|
||
| - AI domain objects as Backstage catalog entities from day one (using existing kinds with upstream migration path) | ||
| - No in-memory caches for domain objects — catalog is the source of truth | ||
| - Entity providers packaged as an independent RHDH dynamic plugin module | ||
| - Toolscope as a standalone package with injectable cache adapter | ||
| - 4-stage lifecycle model with ownership semantics from the start | ||
| - Integration with external skills marketplace for agent discovery and deployment | ||
|
|
||
| ## Non-Goals | ||
|
|
||
| - Modifying the MCP auth chain logic (only the tool schema cache) | ||
| - Building custom catalog entity pages (defer to catalog defaults) | ||
| - Lifecycle governance approval workflows (covered in Security & Governance change) | ||
|
|
||
| ## Decisions | ||
|
|
||
| ### Decision 1: Use existing kinds with fallback to upstream | ||
|
|
||
| Use `kind: Component, spec.type: ai-agent` for agents and `kind: Resource, spec.type: ai-model|mcp-server|vector-store|ai-tool` for infrastructure resources. When upstream `AIContext` and `API v1alpha2` land, migrate to those kinds. Custom `CatalogProcessor` validators support both during transition. Tools are added as `kind: Resource, spec.type: ai-tool` to enable tool lifecycle permissions via catalog RBAC. | ||
|
|
||
| ### Decision 2: Entity providers as independently deployable backend services | ||
|
|
||
| Entity providers are separate packages registered as Backstage backend services, each independently deployable as an RHDH dynamic plugin: | ||
|
|
||
| - `kagenti-entity-provider` — `KagentiAgentEntityProvider` (5m), `KagentiToolEntityProvider` (5m) | ||
| - `llamastack-entity-provider` — `LlamaStackModelEntityProvider` (60s), `LlamaStackAgentEntityProvider` (5m) | ||
| - Core plugin: `McpEntityProvider` (5m), `VectorStoreEntityProvider` (10m) — cross-cutting | ||
|
|
||
| **Standalone mode:** Install entity providers without boost to get catalog discoverability for teams already using Llama Stack or Kagenti. | ||
|
|
||
| **Composed mode:** Boost provider modules compose these same packages internally — one install gives you AI capabilities + catalog entities. | ||
|
|
||
| Packages live at `rhdh-plugins/workspaces/boost/plugins/llamastack-entity-provider` and `kagenti-entity-provider`. | ||
|
|
||
| ### Decision 3: Gradual cache elimination | ||
|
|
||
| Phase 1: EntityProviders emit entities alongside existing caches (dual-write). Phase 2: Frontend/backend consumers switch to catalog API queries. Phase 3: Remove in-memory caches. This avoids a big-bang migration. | ||
|
|
||
| ### Decision 4: toolscope extraction as standalone npm package | ||
|
|
||
| The `services/toolscope/` subsystem (29 files) has zero Backstage dependencies. Extracted as `@augment/toolscope` with injectable `CacheAdapter` interface — default in-memory adapter for standalone use, Backstage adapter wrapping `coreServices.cache`. | ||
|
|
||
| ### Decision 5: 4-stage lifecycle with ownership | ||
|
|
||
| Agents follow the 4-stage lifecycle from the start: Draft → Pending → Published → Archived. No legacy stage mappings or normalization layers — boost has no prior model to be compatible with. The `createdBy` field is set at registration and drives visibility filtering, action gating, and self-approval prevention. Cascading delete detects agent source and cleans up across corresponding stores. | ||
|
|
||
| ### Decision 6: Skills marketplace integration (consumer only) | ||
|
|
||
| Augment integrates with an external skills marketplace provided by a separate workspace. Augment proxies browse/filter requests to the external catalog and owns only the deployment side: K8s manifest generation with OCI init containers, namespace scoping, and deployment progress tracking. Deployed skills carry `framework: 'docsclaw'` and `chatEndpoint` for direct routing. Deployed skills appear in the gallery with a skill badge. Skills catalog entities will eventually be emitted by the catalog module alongside other agent entities. | ||
|
|
||
| ## Risks | ||
|
|
||
| - **Catalog polling latency vs. cache TTL:** Catalog entities update on provider schedules, not on-demand. Mitigated by keeping short poll intervals for models (60s) and offering manual refresh. | ||
| - **Upstream kind availability:** `AIContext` may not be ready. Mitigated by starting with existing kinds and designing for migration. | ||
| - **Upstream augment data import:** If boost ever needs to import agent data from augment, a one-time migration script would map 5-stage values to 4-stage. This is not a runtime concern. | ||
32 changes: 32 additions & 0 deletions
32
workspaces/boost/openspec/changes/agent-creation-discovery/proposal.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| # Proposal: Agent Creation & Discovery | ||
|
|
||
| ## Why | ||
|
|
||
| An agentic AI platform is only as valuable as its agents. Augment supports four creation paths (no-code, template, DevSpaces, import), a gallery for discovery, and MCP tool connectivity. These form the supply side of the agent ecosystem. | ||
|
|
||
| The current implementation manages agents, MCP servers, and models entirely within plugin-internal caches and databases. These domain objects are natural candidates for Backstage catalog entities, which would provide discoverability, ownership, lifecycle management, and catalog-level RBAC — capabilities the current approach cannot offer. | ||
|
|
||
| ## What Changes | ||
|
|
||
| ### Current Capabilities (retroactive documentation) | ||
|
|
||
| - Browse and select agents via gallery (Kagenti) or router delegation (Llama Stack) | ||
| - Four agent creation paths: no-code builder, Software Template, DevSpaces, import | ||
| - MCP tool server registration with 4-level auth chain | ||
| - Agent lifecycle: draft → registered → deployed (published=true) | ||
| - Unified `ChatAgent` model merging agents from all providers | ||
|
|
||
| ### Architectural Improvements (from tech debt analysis) | ||
|
|
||
| - Create catalog `EntityProvider` for AI agents (maps to upstream `AIContext` initiative) | ||
| - Create catalog `EntityProvider` for MCP servers (maps to upstream `API Discriminated Union v1alpha2`) | ||
| - Create catalog `EntityProvider` for AI models (currently duplicated in caches #3 and #4) | ||
| - Create catalog `EntityProvider` for vector stores | ||
| - Extract `toolscope/` as standalone package (zero Backstage dependencies) | ||
|
|
||
| ## Impact | ||
|
|
||
| - New: `plugin-augment-backend-module-catalog-agents` (EntityProvider for agents) | ||
| - New: `plugin-augment-backend-module-catalog-mcp` (EntityProvider for MCP servers) | ||
| - `plugins/augment-backend/src/providers/` — remove agent card and model caches in favor of catalog | ||
| - `plugins/augment-backend/src/services/toolscope/` — extract as standalone package |
81 changes: 81 additions & 0 deletions
81
...st/openspec/changes/agent-creation-discovery/specs/agent-creation-paths/spec.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| # Agent Creation Paths | ||
|
|
||
| > **Status: Draft** — Pre-implementation specification. Subject to change during implementation. | ||
|
|
||
| Four creation methods converge on a unified `ChatAgent` model. All paths produce agents visible in the gallery and available in chat. | ||
|
|
||
| ## EXISTING Requirements | ||
|
|
||
| ### Requirement: No-Code Agent Builder | ||
|
|
||
| Create agents visually without writing code. | ||
|
|
||
| #### Scenario: Llama Stack no-code agent creation | ||
|
|
||
| - **WHEN** the admin navigates to Admin Panel → Agents → "Create Agent" | ||
| - **THEN** an agent editor form shows: name, instructions, model, temperature, max tokens | ||
| - **AND** tool access is configured via MCP server/tool selection | ||
| - **AND** knowledge base is scoped via vector store ID selection | ||
| - **AND** handoffs are configured by selecting target agents | ||
| - **AND** on save, the agent is immediately available in chat | ||
|
|
||
| #### Scenario: Kagenti no-code agent creation | ||
|
|
||
| - **WHEN** the admin opens the `CreateAgentWizard` | ||
| - **THEN** a 3-step wizard guides: basics, deployment, runtime (plus optional build step) | ||
| - **AND** optionally, `AgentCreateIntentDialog` supports quick creation from natural language intent | ||
| - **AND** if a container build is needed, Shipwright is triggered | ||
| - **AND** the agent appears in the gallery on completion | ||
|
|
||
| ### Requirement: Agent from Software Template | ||
|
|
||
| Bootstrap agent projects using Backstage Software Templates. | ||
|
|
||
| #### Scenario: Scaffolder creates agent project | ||
|
|
||
| - **WHEN** the user selects an agent template (LangGraph, CrewAI, Python A2A, etc.) | ||
| - **THEN** the scaffolder wizard collects: name, description, namespace, repo, framework options | ||
| - **AND** it generates: source code, Dockerfile, CI/CD pipeline, Kagenti manifest, MCP tool definitions | ||
| - **AND** CI/CD builds the container and registers the agent on merge | ||
|
|
||
| ### Requirement: Agent from DevSpaces | ||
|
|
||
| Write agent code in a cloud development environment. | ||
|
|
||
| #### Scenario: DevSpaces agent development | ||
|
|
||
| - **WHEN** the admin launches a DevSpaces workspace from the Kagenti admin | ||
| - **THEN** a cloud IDE opens with agent SDK/ADK pre-installed | ||
| - **AND** the developer can test in a sandbox environment | ||
| - **AND** a Shipwright container build can be triggered from the admin panel | ||
| - **AND** the build pipeline panel shows status, logs, and history in real time | ||
| - **AND** on success, the agent is deployed as a K8s workload and discovered via A2A | ||
|
|
||
| ### Requirement: Import Existing Agent | ||
|
|
||
| Bring existing agents (container images or source repos) into the platform. | ||
|
|
||
| #### Scenario: Import container image | ||
|
|
||
| - **WHEN** the user provides a container image reference | ||
| - **THEN** deployment configuration is collected: namespace, resource limits, env vars, MCP connections | ||
| - **AND** Kagenti deploys it as a K8s workload and discovers it via A2A | ||
| - **AND** the agent appears in the gallery with auto-detected capabilities | ||
|
|
||
| #### Scenario: Import source repository | ||
|
|
||
| - **WHEN** the user provides a source repo URL | ||
| - **THEN** build settings are configured and a Shipwright build is triggered | ||
| - **AND** on success, the agent is deployed and registered | ||
|
|
||
| ### Requirement: Governance Registration | ||
|
|
||
| All agent creation paths register the agent for lifecycle governance. | ||
|
|
||
| #### Scenario: Agent registered for governance on creation | ||
|
|
||
| - **WHEN** an agent is created via any path (no-code, template, DevSpaces, import, or skills deployment) | ||
| - **THEN** the agent is automatically registered for governance (`governanceRegistered: true`) | ||
| - **AND** the agent enters the `Draft` lifecycle stage | ||
| - **AND** the `createdBy` field is set to the authenticated user's identity | ||
| - **AND** lifecycle actions (promote, withdraw, delete) are available per the agent's governance state |
40 changes: 40 additions & 0 deletions
40
...ces/boost/openspec/changes/agent-creation-discovery/specs/agent-gallery/spec.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| # Agent Gallery and Discovery | ||
|
|
||
| > **Status: Draft** — Pre-implementation specification. Subject to change during implementation. | ||
|
|
||
| Browse, search, filter, and select agents from a curated gallery. The gallery merges agents from all providers into a unified view. | ||
|
|
||
| ## EXISTING Requirements | ||
|
|
||
| ### Requirement: Agent Catalog Dialog (Kagenti) | ||
|
|
||
| A full-featured agent browsing experience for the Kagenti provider. | ||
|
|
||
| #### Scenario: Browse all agents | ||
|
|
||
| - **WHEN** the user clicks "Browse all agents" from the welcome screen | ||
| - **THEN** the `AgentCatalogDialog` opens showing all published agents | ||
| - **AND** agents can be searched by keyword, filtered by framework, and sorted by name/status/newest | ||
| - **AND** tabs separate: All, Recent, Pinned | ||
|
|
||
| #### Scenario: Agent preview panel | ||
|
|
||
| - **WHEN** the user selects an agent in the catalog | ||
| - **THEN** a preview panel shows: conversation starters, about section, skills, capabilities (streaming/A2A), and technical details (framework, workspace, version, endpoint) | ||
| - **AND** "Start Conversation" selects the agent and enables chat input | ||
|
|
||
| #### Scenario: First visit auto-open | ||
|
|
||
| - **WHEN** a user visits Augment with Kagenti provider and no agent is selected | ||
| - **THEN** the agent catalog dialog auto-opens | ||
|
|
||
| ### Requirement: Unified Agent List | ||
|
|
||
| Agents from all providers are merged into a single discoverable list. | ||
|
|
||
| #### Scenario: buildUnifiedAgentList merges providers | ||
|
|
||
| - **WHEN** the agent gallery data is fetched via `GET /agents?published=true` | ||
| - **THEN** `useAgentGalleryData()` merges agents from all providers with a 155ms timeout | ||
| - **AND** guard merge + dedup ensures no duplicates | ||
| - **AND** featured agents are configured via `ChatExperiencePanel` |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[medium] naming-convention
All repository path references use 'rhdh-plugins/workspace/boost/plugins/' (singular 'workspace') but the actual directory is 'workspaces/' (plural). Error appears across 7+ occurrences in multiple files.
Suggested fix: Replace all occurrences of 'rhdh-plugins/workspace/boost/' with 'rhdh-plugins/workspaces/boost/'.