From 928a64d38d6efc7d037850e07349af1c555d2abd Mon Sep 17 00:00:00 2001 From: fullsend-code <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 16:00:36 +0000 Subject: [PATCH 1/3] chore(#4165): rename llamastack to ogx across boost workspace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The upstream llamastack project has been renamed to ogx. This commit renames all references across the boost workspace to reflect the new project name, including: - Plugin directories: boost-backend-module-llamastack → ogx, llamastack-entity-provider → ogx-entity-provider - npm package names under @red-hat-developer-hub scope - TypeScript identifiers: module exports, class names, interfaces, config paths, cache key prefixes, provider IDs, and entity names - Backend registration imports in packages/backend - app-config.yaml provider config key (boost.providers.ogx) - Dynamic plugin reference YAML files - AGENTS.md and README.md package tables - Test expectations for renamed provider IDs, cache keys, and entity name prefixes CHANGELOG.md files and openspec/specification docs are preserved as historical records and not renamed. Closes #4165 --- workspaces/boost/AGENTS.md | 22 ++++---- workspaces/boost/README.md | 20 ++++---- workspaces/boost/app-config.yaml | 4 +- .../dynamic-plugins-filesystem-reference.yaml | 4 +- .../dynamic-plugins-image-reference.yaml | 4 +- .../boost/packages/backend/package.json | 4 +- .../boost/packages/backend/src/index.ts | 4 +- .../.eslintrc.js | 0 .../CHANGELOG.md | 0 .../package.json | 8 +-- .../report.api.md | 6 +-- .../src/index.ts | 4 +- .../src/module.ts | 16 +++--- .../src/provider/ClientManager.test.ts | 2 +- .../src/provider/ClientManager.ts | 2 +- .../src/provider/McpAuthTokenCache.test.ts | 6 +-- .../src/provider/McpAuthTokenCache.ts | 2 +- .../src/provider/ModelListCache.test.ts | 6 +-- .../src/provider/ModelListCache.ts | 12 ++--- .../src/provider/ResponsesApiProvider.test.ts | 6 +-- .../src/provider/ResponsesApiProvider.ts | 21 ++++---- .../ResponsesApiProviderFactory.test.ts | 6 +-- .../provider/ResponsesApiProviderFactory.ts | 20 ++++---- .../src/provider/SessionMap.test.ts | 2 +- .../src/provider/SessionMap.ts | 4 +- .../src/types.ts | 14 +++--- .../src/chat/ConversationAgentCache.test.ts | 6 +-- .../boost/plugins/boost-backend/src/plugin.ts | 2 +- .../src/provider/ProviderManager.test.ts | 34 ++++++------- .../src/provider/ProviderManager.ts | 2 +- .../plugins/boost-common/src/index.test.ts | 4 +- .../boost/plugins/boost-common/src/types.ts | 2 +- .../.eslintrc.js | 0 .../CHANGELOG.md | 0 .../package.json | 8 +-- .../report.api.md | 6 +-- .../src/index.ts | 4 +- .../src/module.ts | 41 +++++++-------- .../providers/OgxAgentEntityProvider.test.ts} | 30 +++++------ .../src/providers/OgxAgentEntityProvider.ts} | 31 ++++++------ .../providers/OgxModelEntityProvider.test.ts} | 20 ++++---- .../src/providers/OgxModelEntityProvider.ts} | 50 +++++++++---------- .../src/providers/entityHelpers.ts | 0 .../src/providers/index.ts | 4 +- .../src/types.ts | 22 ++++---- workspaces/boost/yarn.lock | 12 ++--- 46 files changed, 232 insertions(+), 245 deletions(-) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/.eslintrc.js (100%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/CHANGELOG.md (100%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/package.json (94%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/report.api.md (68%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/index.ts (84%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/module.ts (86%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ClientManager.test.ts (98%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ClientManager.ts (98%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/McpAuthTokenCache.test.ts (95%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/McpAuthTokenCache.ts (97%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ModelListCache.test.ts (94%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ModelListCache.ts (87%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ResponsesApiProvider.test.ts (97%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ResponsesApiProvider.ts (92%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ResponsesApiProviderFactory.test.ts (95%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/ResponsesApiProviderFactory.ts (87%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/SessionMap.test.ts (98%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/provider/SessionMap.ts (95%) rename workspaces/boost/plugins/{boost-backend-module-llamastack => boost-backend-module-ogx}/src/types.ts (80%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/.eslintrc.js (100%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/CHANGELOG.md (100%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/package.json (81%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/report.api.md (63%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/src/index.ts (84%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/src/module.ts (81%) rename workspaces/boost/plugins/{llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.test.ts => ogx-entity-provider/src/providers/OgxAgentEntityProvider.test.ts} (84%) rename workspaces/boost/plugins/{llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.ts => ogx-entity-provider/src/providers/OgxAgentEntityProvider.ts} (81%) rename workspaces/boost/plugins/{llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.test.ts => ogx-entity-provider/src/providers/OgxModelEntityProvider.test.ts} (88%) rename workspaces/boost/plugins/{llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.ts => ogx-entity-provider/src/providers/OgxModelEntityProvider.ts} (75%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/src/providers/entityHelpers.ts (100%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/src/providers/index.ts (78%) rename workspaces/boost/plugins/{llamastack-entity-provider => ogx-entity-provider}/src/types.ts (81%) diff --git a/workspaces/boost/AGENTS.md b/workspaces/boost/AGENTS.md index 2b431c29174..826c9542a05 100644 --- a/workspaces/boost/AGENTS.md +++ b/workspaces/boost/AGENTS.md @@ -48,7 +48,7 @@ Use Backstage `cacheService`, `permissions`, `httpAuth`, `configApi`, and `catal ### Provider isolation -Each AI provider (`boost-backend-module-llamastack`, `boost-backend-module-kagenti`) is a separate `createBackendModule`. Providers must not import from each other. Shared types live in `boost-common`. +Each AI provider (`boost-backend-module-ogx`, `boost-backend-module-kagenti`) is a separate `createBackendModule`. Providers must not import from each other. Shared types live in `boost-common`. ### Capability checks, not identity checks @@ -70,16 +70,16 @@ Agents, tools, models, MCP servers, and vector stores are Backstage catalog enti ### Package structure -| Package | Purpose | -| --------------------------------- | -------------------------------------------------------------------- | -| `boost` | Chat UI, agent gallery, admin panels, composable routable extensions | -| `boost-common` | Shared types, permissions (browser-safe, `common-library` role) | -| `boost-node` | `boostAiProviderServiceRef`, extension points (`node-library` role) | -| `boost-backend` | Core routes, services, middleware, ProviderManager | -| `boost-backend-module-llamastack` | Llama Stack provider module | -| `boost-backend-module-kagenti` | Kagenti provider module | -| `llamastack-entity-provider` | Independently deployable catalog entity provider | -| `kagenti-entity-provider` | Independently deployable catalog entity provider | +| Package | Purpose | +| ------------------------------ | -------------------------------------------------------------------- | +| `boost` | Chat UI, agent gallery, admin panels, composable routable extensions | +| `boost-common` | Shared types, permissions (browser-safe, `common-library` role) | +| `boost-node` | `boostAiProviderServiceRef`, extension points (`node-library` role) | +| `boost-backend` | Core routes, services, middleware, ProviderManager | +| `boost-backend-module-ogx` | OGX provider module | +| `boost-backend-module-kagenti` | Kagenti provider module | +| `ogx-entity-provider` | Independently deployable catalog entity provider | +| `kagenti-entity-provider` | Independently deployable catalog entity provider | ### Naming diff --git a/workspaces/boost/README.md b/workspaces/boost/README.md index d0c50a63a25..ee4d3e0ea5e 100644 --- a/workspaces/boost/README.md +++ b/workspaces/boost/README.md @@ -39,16 +39,16 @@ All specs are currently in **draft** status (pre-implementation). They will be m ## Plugins -| Plugin | Package | Description | -| ------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------- | -| boost | `@red-hat-developer-hub/backstage-plugin-boost` | Frontend plugin — AI Catalog browse page and entity extensions | -| boost-backend | `@red-hat-developer-hub/backstage-plugin-boost-backend` | Backend plugin — chat, agent lifecycle, MCP, admin APIs | -| boost-common | `@red-hat-developer-hub/backstage-plugin-boost-common` | Shared types and permissions | -| boost-node | `@red-hat-developer-hub/backstage-plugin-boost-node` | Node library — service refs and extension points | -| boost-backend-module-llamastack | `@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack` | Llama Stack provider module | -| boost-backend-module-kagenti | `@red-hat-developer-hub/backstage-plugin-boost-backend-module-kagenti` | Kagenti provider module | -| llamastack-entity-provider | `@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider` | Llama Stack catalog entity provider | -| kagenti-entity-provider | `@red-hat-developer-hub/backstage-plugin-kagenti-entity-provider` | Kagenti catalog entity provider | +| Plugin | Package | Description | +| ---------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------- | +| boost | `@red-hat-developer-hub/backstage-plugin-boost` | Frontend plugin — AI Catalog browse page and entity extensions | +| boost-backend | `@red-hat-developer-hub/backstage-plugin-boost-backend` | Backend plugin — chat, agent lifecycle, MCP, admin APIs | +| boost-common | `@red-hat-developer-hub/backstage-plugin-boost-common` | Shared types and permissions | +| boost-node | `@red-hat-developer-hub/backstage-plugin-boost-node` | Node library — service refs and extension points | +| boost-backend-module-ogx | `@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx` | OGX provider module | +| boost-backend-module-kagenti | `@red-hat-developer-hub/backstage-plugin-boost-backend-module-kagenti` | Kagenti provider module | +| ogx-entity-provider | `@red-hat-developer-hub/backstage-plugin-ogx-entity-provider` | OGX catalog entity provider | +| kagenti-entity-provider | `@red-hat-developer-hub/backstage-plugin-kagenti-entity-provider` | Kagenti catalog entity provider | ## Compatibility diff --git a/workspaces/boost/app-config.yaml b/workspaces/boost/app-config.yaml index 9b4dd48ffe4..96b440606c0 100644 --- a/workspaces/boost/app-config.yaml +++ b/workspaces/boost/app-config.yaml @@ -70,8 +70,8 @@ boost: - 'user:default/guest' providers: - llamastack: - baseUrl: ${BOOST_LLAMA_STACK_URL:-http://localhost:8321} + ogx: + baseUrl: ${BOOST_OGX_URL:-http://localhost:8321} defaultModel: ${BOOST_MODEL:-default} kagenti: baseUrl: ${KAGENTI_BASE_URL:-http://localhost:8080} diff --git a/workspaces/boost/dynamic-plugins-filesystem-reference.yaml b/workspaces/boost/dynamic-plugins-filesystem-reference.yaml index 91031216dd2..87bd1c63d74 100644 --- a/workspaces/boost/dynamic-plugins-filesystem-reference.yaml +++ b/workspaces/boost/dynamic-plugins-filesystem-reference.yaml @@ -36,8 +36,8 @@ plugins: # Provider modules — install at least one # ----------------------------------------------------------------------- - # Llama Stack provider: connects to a Llama Stack Responses API endpoint - - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-boost-backend-module-llamastack-dynamic + # OGX provider: connects to a OGX Responses API endpoint + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-boost-backend-module-ogx-dynamic disabled: false # Kagenti provider: connects to a Kagenti multi-agent orchestrator diff --git a/workspaces/boost/dynamic-plugins-image-reference.yaml b/workspaces/boost/dynamic-plugins-image-reference.yaml index 1b91ecc1118..2c0314d55cb 100644 --- a/workspaces/boost/dynamic-plugins-image-reference.yaml +++ b/workspaces/boost/dynamic-plugins-image-reference.yaml @@ -35,8 +35,8 @@ plugins: # Provider modules — install at least one # ----------------------------------------------------------------------- - # Llama Stack provider: connects to a Llama Stack Responses API endpoint - - package: oci:///backstage-plugin-boost-backend-module-llamastack:!red-hat-developer-hub-backstage-plugin-boost-backend-module-llamastack-dynamic + # OGX provider: connects to a OGX Responses API endpoint + - package: oci:///backstage-plugin-boost-backend-module-ogx:!red-hat-developer-hub-backstage-plugin-boost-backend-module-ogx-dynamic disabled: false # Kagenti provider: connects to a Kagenti multi-agent orchestrator diff --git a/workspaces/boost/packages/backend/package.json b/workspaces/boost/packages/backend/package.json index ec1ced3e5ce..4883193733c 100644 --- a/workspaces/boost/packages/backend/package.json +++ b/workspaces/boost/packages/backend/package.json @@ -39,9 +39,9 @@ "@backstage/plugin-techdocs-backend": "^2.2.1", "@red-hat-developer-hub/backstage-plugin-boost-backend": "workspace:^", "@red-hat-developer-hub/backstage-plugin-boost-backend-module-kagenti": "workspace:^", - "@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack": "workspace:^", + "@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx": "workspace:^", "@red-hat-developer-hub/backstage-plugin-kagenti-entity-provider": "workspace:^", - "@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider": "workspace:^", + "@red-hat-developer-hub/backstage-plugin-ogx-entity-provider": "workspace:^", "app": "link:../app", "better-sqlite3": "^12.0.0", "node-gyp": "^10.0.0" diff --git a/workspaces/boost/packages/backend/src/index.ts b/workspaces/boost/packages/backend/src/index.ts index 94331ea53d0..7922d785ded 100644 --- a/workspaces/boost/packages/backend/src/index.ts +++ b/workspaces/boost/packages/backend/src/index.ts @@ -89,7 +89,7 @@ backend.add(import('@backstage/plugin-search-backend-module-techdocs')); // Boost plugins backend.add(import('@red-hat-developer-hub/backstage-plugin-boost-backend')); backend.add( - import('@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack'), + import('@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx'), ); backend.add( import('@red-hat-developer-hub/backstage-plugin-boost-backend-module-kagenti'), @@ -98,7 +98,7 @@ backend.add( import('@red-hat-developer-hub/backstage-plugin-kagenti-entity-provider'), ); backend.add( - import('@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider'), + import('@red-hat-developer-hub/backstage-plugin-ogx-entity-provider'), ); backend.start(); diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/.eslintrc.js b/workspaces/boost/plugins/boost-backend-module-ogx/.eslintrc.js similarity index 100% rename from workspaces/boost/plugins/boost-backend-module-llamastack/.eslintrc.js rename to workspaces/boost/plugins/boost-backend-module-ogx/.eslintrc.js diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/CHANGELOG.md b/workspaces/boost/plugins/boost-backend-module-ogx/CHANGELOG.md similarity index 100% rename from workspaces/boost/plugins/boost-backend-module-llamastack/CHANGELOG.md rename to workspaces/boost/plugins/boost-backend-module-ogx/CHANGELOG.md diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/package.json b/workspaces/boost/plugins/boost-backend-module-ogx/package.json similarity index 94% rename from workspaces/boost/plugins/boost-backend-module-llamastack/package.json rename to workspaces/boost/plugins/boost-backend-module-ogx/package.json index 4df274a3085..c2a4b62a3fe 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/package.json +++ b/workspaces/boost/plugins/boost-backend-module-ogx/package.json @@ -1,8 +1,8 @@ { - "name": "@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack", + "name": "@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx", "version": "0.1.2", "license": "Apache-2.0", - "description": "Llama Stack provider module for the boost AI platform", + "description": "OGX provider module for the boost AI platform", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { @@ -15,7 +15,7 @@ "pluginPackages": [ "@red-hat-developer-hub/backstage-plugin-boost", "@red-hat-developer-hub/backstage-plugin-boost-backend", - "@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack", + "@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx", "@red-hat-developer-hub/backstage-plugin-boost-common", "@red-hat-developer-hub/backstage-plugin-boost-node" ] @@ -63,7 +63,7 @@ "repository": { "type": "git", "url": "git+https://github.com/redhat-developer/rhdh-plugins.git", - "directory": "workspaces/boost/plugins/boost-backend-module-llamastack" + "directory": "workspaces/boost/plugins/boost-backend-module-ogx" }, "homepage": "https://red.ht/rhdh", "bugs": "https://github.com/redhat-developer/rhdh-plugins/issues" diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/report.api.md b/workspaces/boost/plugins/boost-backend-module-ogx/report.api.md similarity index 68% rename from workspaces/boost/plugins/boost-backend-module-llamastack/report.api.md rename to workspaces/boost/plugins/boost-backend-module-ogx/report.api.md index c8b8cefb806..1e3d7da934c 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/report.api.md +++ b/workspaces/boost/plugins/boost-backend-module-ogx/report.api.md @@ -1,4 +1,4 @@ -## API Report File for "@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack" +## API Report File for "@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx" > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). @@ -6,6 +6,6 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; // @public -const boostModuleLlamastack: BackendFeature; -export default boostModuleLlamastack; +const boostModuleOgx: BackendFeature; +export default boostModuleOgx; ``` diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/index.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/index.ts similarity index 84% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/index.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/index.ts index a1c1a1f63e4..da91bb9a17e 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/index.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/index.ts @@ -15,9 +15,9 @@ */ /** - * Llama Stack provider module for the boost AI platform. + * OGX provider module for the boost AI platform. * * @packageDocumentation */ -export { boostModuleLlamastack as default } from './module'; +export { boostModuleOgx as default } from './module'; diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/module.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/module.ts similarity index 86% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/module.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/module.ts index 6161fc1d072..2fa605f48f4 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/module.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/module.ts @@ -22,10 +22,10 @@ import { boostProviderExtensionPoint } from '@red-hat-developer-hub/backstage-pl import { ResponsesApiProviderFactory } from './provider/ResponsesApiProviderFactory'; /** - * Llama Stack provider module for the boost plugin. + * OGX provider module for the boost plugin. * * Registers a ResponsesApiProvider via the boost extension point, - * enabling Llama Stack as an AI backend. All caches use Backstage + * enabling OGX as an AI backend. All caches use Backstage * cacheService (Decision 3). * * Install alongside the core boost plugin: @@ -33,14 +33,14 @@ import { ResponsesApiProviderFactory } from './provider/ResponsesApiProviderFact * ```ts * // packages/backend/src/index.ts * backend.add(import('@red-hat-developer-hub/backstage-plugin-boost-backend')); - * backend.add(import('@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack')); + * backend.add(import('@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx')); * ``` * * @public */ -export const boostModuleLlamastack = createBackendModule({ +export const boostModuleOgx = createBackendModule({ pluginId: 'boost', - moduleId: 'llamastack', + moduleId: 'ogx', register(reg) { reg.registerInit({ deps: { @@ -50,7 +50,7 @@ export const boostModuleLlamastack = createBackendModule({ logger: coreServices.logger, }, async init({ providers, config, cache, logger }) { - logger.info('Initializing Llama Stack provider module'); + logger.info('Initializing OGX provider module'); const factory = new ResponsesApiProviderFactory({ config, @@ -69,9 +69,7 @@ export const boostModuleLlamastack = createBackendModule({ // Register the provider with the boost plugin providers.registerProvider(provider); - logger.info( - `Llama Stack provider registered (id: ${provider.descriptor.id})`, - ); + logger.info(`OGX provider registered (id: ${provider.descriptor.id})`); logger.info( `Caches initialized: modelList (60s TTL), mcpAuthToken (dynamic TTL), ` + `clientManager (1h TTL), sessionMap (24h TTL)`, diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ClientManager.test.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ClientManager.test.ts similarity index 98% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ClientManager.test.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ClientManager.test.ts index 06ed89e1a6e..2f0189194e7 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ClientManager.test.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ClientManager.test.ts @@ -84,7 +84,7 @@ describe('ClientManager', () => { await clientManager.set('user:default/john', state); expect(cache.set).toHaveBeenCalledWith( - 'llamastack:client:user:default/john', + 'ogx:client:user:default/john', JSON.stringify(state), { ttl: 3600000 }, ); diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ClientManager.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ClientManager.ts similarity index 98% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ClientManager.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ClientManager.ts index 75d97ce4f77..3c17db7d5e8 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ClientManager.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ClientManager.ts @@ -40,7 +40,7 @@ export interface ClientManagerOptions { * @internal */ export class ClientManager { - private static readonly KEY_PREFIX = 'llamastack:client:'; + private static readonly KEY_PREFIX = 'ogx:client:'; static readonly TTL_MS = 3600 * 1000; // 1 hour private readonly cache: CacheService; diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/McpAuthTokenCache.test.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/McpAuthTokenCache.test.ts similarity index 95% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/McpAuthTokenCache.test.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/McpAuthTokenCache.test.ts index ab1af5caae9..6b8144b456d 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/McpAuthTokenCache.test.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/McpAuthTokenCache.test.ts @@ -71,7 +71,7 @@ describe('McpAuthTokenCache', () => { it('stores token with TTL in milliseconds', async () => { await tokenCache.set('my-server', 'token-abc', 300); expect(cache.set).toHaveBeenCalledWith( - 'llamastack:mcp-token:my-server', + 'ogx:mcp-token:my-server', 'token-abc', { ttl: 300000 }, ); @@ -89,12 +89,12 @@ describe('McpAuthTokenCache', () => { await tokenCache.set('server-b', 'token-b', 120); expect(cache.set).toHaveBeenCalledWith( - 'llamastack:mcp-token:server-a', + 'ogx:mcp-token:server-a', 'token-a', { ttl: 60000 }, ); expect(cache.set).toHaveBeenCalledWith( - 'llamastack:mcp-token:server-b', + 'ogx:mcp-token:server-b', 'token-b', { ttl: 120000 }, ); diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/McpAuthTokenCache.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/McpAuthTokenCache.ts similarity index 97% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/McpAuthTokenCache.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/McpAuthTokenCache.ts index fa5056f71ed..a617ba66d92 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/McpAuthTokenCache.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/McpAuthTokenCache.ts @@ -39,7 +39,7 @@ export interface McpAuthTokenCacheOptions { * @internal */ export class McpAuthTokenCache { - private static readonly KEY_PREFIX = 'llamastack:mcp-token:'; + private static readonly KEY_PREFIX = 'ogx:mcp-token:'; private readonly cache: CacheService; private readonly logger: LoggerService; diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ModelListCache.test.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ModelListCache.test.ts similarity index 94% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ModelListCache.test.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ModelListCache.test.ts index d59dfaae314..bd71875c8f1 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ModelListCache.test.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ModelListCache.test.ts @@ -19,7 +19,7 @@ import type { LoggerService, } from '@backstage/backend-plugin-api'; import { ModelListCache } from './ModelListCache'; -import type { LlamaStackModel } from '../types'; +import type { OgxModel } from '../types'; function createMockLogger(): LoggerService { return { @@ -65,7 +65,7 @@ describe('ModelListCache', () => { }); it('stores and retrieves models', async () => { - const models: LlamaStackModel[] = [ + const models: OgxModel[] = [ { identifier: 'model-1', displayName: 'Model One' }, { identifier: 'model-2', displayName: 'Model Two' }, ]; @@ -81,7 +81,7 @@ describe('ModelListCache', () => { }); it('invalidates cached models', async () => { - const models: LlamaStackModel[] = [{ identifier: 'model-1' }]; + const models: OgxModel[] = [{ identifier: 'model-1' }]; await modelListCache.set(models); await modelListCache.invalidate(); diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ModelListCache.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ModelListCache.ts similarity index 87% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ModelListCache.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ModelListCache.ts index aeb4b028e11..4ded5fd610d 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ModelListCache.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ModelListCache.ts @@ -18,7 +18,7 @@ import type { CacheService, LoggerService, } from '@backstage/backend-plugin-api'; -import type { LlamaStackModel } from '../types'; +import type { OgxModel } from '../types'; /** * Options for creating a {@link ModelListCache}. @@ -30,10 +30,10 @@ export interface ModelListCacheOptions { logger: LoggerService; } -const CACHE_KEY = 'llamastack:models'; +const CACHE_KEY = 'ogx:models'; /** - * Caches the list of available models from the Llama Stack endpoint. + * Caches the list of available models from the OGX endpoint. * * Uses Backstage cacheService with a 60-second TTL per the design spec * (Decision 3, task 3.2). Redis-backed in production for multi-instance safety. @@ -56,11 +56,11 @@ export class ModelListCache { * * @returns The cached models, or undefined if not cached. */ - async get(): Promise { + async get(): Promise { const cached = await this.cache.get(CACHE_KEY); if (typeof cached === 'string') { try { - const models = JSON.parse(cached) as LlamaStackModel[]; + const models = JSON.parse(cached) as OgxModel[]; this.logger.debug(`Model list cache hit (${models.length} models)`); return models; } catch { @@ -77,7 +77,7 @@ export class ModelListCache { * * @param models - The model list to cache. */ - async set(models: LlamaStackModel[]): Promise { + async set(models: OgxModel[]): Promise { await this.cache.set(CACHE_KEY, JSON.stringify(models)); this.logger.debug(`Cached ${models.length} models`); } diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProvider.test.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProvider.test.ts similarity index 97% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProvider.test.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProvider.test.ts index 27492319ff9..9382fe99203 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProvider.test.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProvider.test.ts @@ -62,8 +62,8 @@ describe('ResponsesApiProvider', () => { describe('descriptor', () => { it('has correct provider identity', () => { - expect(provider.descriptor.id).toBe('llamastack'); - expect(provider.descriptor.name).toBe('Llama Stack'); + expect(provider.descriptor.id).toBe('ogx'); + expect(provider.descriptor.name).toBe('OGX'); expect(provider.descriptor.capabilities.agentCatalog).toBe(true); expect(provider.descriptor.capabilities.namespaceScoping).toBe(false); }); @@ -132,7 +132,7 @@ describe('ResponsesApiProvider', () => { await expect( provider.chat([{ type: 'text', text: 'Test' }]), - ).rejects.toThrow('Llama Stack Responses API returned 500'); + ).rejects.toThrow('OGX Responses API returned 500'); }); }); diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProvider.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProvider.ts similarity index 92% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProvider.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProvider.ts index de6813d394f..c825ea81ff1 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProvider.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProvider.ts @@ -29,7 +29,7 @@ import { type ResponsesApiResponse, type ResponsesApiStreamEvent, } from '@red-hat-developer-hub/backstage-plugin-boost-responses-api-toolkit'; -import type { LlamaStackConnectionConfig } from '../types'; +import type { OgxConnectionConfig } from '../types'; /** * Options for creating a {@link ResponsesApiProvider}. @@ -37,12 +37,12 @@ import type { LlamaStackConnectionConfig } from '../types'; * @internal */ export interface ResponsesApiProviderOptions { - connection: LlamaStackConnectionConfig; + connection: OgxConnectionConfig; logger: LoggerService; } /** - * AI provider that delegates to a Llama Stack endpoint via the Responses API. + * AI provider that delegates to an OGX endpoint via the Responses API. * * Implements the {@link AgenticProvider} interface, translating boost * conversation inputs into Responses API calls and normalizing the @@ -52,10 +52,9 @@ export interface ResponsesApiProviderOptions { */ export class ResponsesApiProvider implements AgenticProvider { readonly descriptor: ProviderDescriptor = { - id: 'llamastack', - name: 'Llama Stack', - description: - 'Llama Stack provider using the Responses API for agent orchestration', + id: 'ogx', + name: 'OGX', + description: 'OGX provider using the Responses API for agent orchestration', capabilities: { agentCatalog: true, namespaceScoping: false, @@ -64,7 +63,7 @@ export class ResponsesApiProvider implements AgenticProvider { }, }; - private readonly connection: LlamaStackConnectionConfig; + private readonly connection: OgxConnectionConfig; private readonly logger: LoggerService; constructor(options: ResponsesApiProviderOptions) { @@ -99,7 +98,7 @@ export class ResponsesApiProvider implements AgenticProvider { this.logger.error( `Responses API error: ${response.status} ${response.statusText} — ${errorText}`, ); - throw new Error(`Llama Stack Responses API returned ${response.status}`); + throw new Error(`OGX Responses API returned ${response.status}`); } const result = (await response.json()) as ResponsesApiResponse; @@ -140,7 +139,7 @@ export class ResponsesApiProvider implements AgenticProvider { ); yield { type: 'error', - message: 'Failed to connect to Llama Stack endpoint', + message: 'Failed to connect to OGX endpoint', }; return; } @@ -152,7 +151,7 @@ export class ResponsesApiProvider implements AgenticProvider { ); yield { type: 'error', - message: `Llama Stack Responses API returned ${response.status}`, + message: `OGX Responses API returned ${response.status}`, }; return; } diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProviderFactory.test.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProviderFactory.test.ts similarity index 95% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProviderFactory.test.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProviderFactory.test.ts index 6553a132e20..4b707aa44bc 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProviderFactory.test.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProviderFactory.test.ts @@ -120,11 +120,11 @@ describe('ResponsesApiProviderFactory', () => { expect(bundle.provider).toBeInstanceOf(ResponsesApiProvider); expect(logger.warn).toHaveBeenCalledWith( - expect.stringContaining('No boost.providers.llamastack config found'), + expect.stringContaining('No boost.providers.ogx config found'), ); }); - it('reads config from boost.providers.llamastack path', () => { + it('reads config from boost.providers.ogx path', () => { const config = createMockConfig({ baseUrl: 'http://llama:8321', }); @@ -138,7 +138,7 @@ describe('ResponsesApiProviderFactory', () => { factory.create(); expect(config.getOptionalConfig).toHaveBeenCalledWith( - 'boost.providers.llamastack', + 'boost.providers.ogx', ); }); }); diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProviderFactory.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProviderFactory.ts similarity index 87% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProviderFactory.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProviderFactory.ts index 6bf402968f6..c92cc661d3d 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/ResponsesApiProviderFactory.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/ResponsesApiProviderFactory.ts @@ -19,7 +19,7 @@ import type { LoggerService, RootConfigService, } from '@backstage/backend-plugin-api'; -import type { LlamaStackConnectionConfig } from '../types'; +import type { OgxConnectionConfig } from '../types'; import { ResponsesApiProvider } from './ResponsesApiProvider'; import { ModelListCache } from './ModelListCache'; import { McpAuthTokenCache } from './McpAuthTokenCache'; @@ -41,7 +41,7 @@ export interface ResponsesApiProviderFactoryOptions { * Factory for creating a fully-wired {@link ResponsesApiProvider} instance * with all caches initialized from Backstage services. * - * Reads connection settings from `boost.providers.llamastack` in app-config.yaml + * Reads connection settings from `boost.providers.ogx` in app-config.yaml * and initializes: * - {@link ModelListCache} (60s TTL, task 3.2) * - {@link McpAuthTokenCache} (dynamic TTL, task 3.5) @@ -70,7 +70,7 @@ export class ResponsesApiProviderFactory { const connection = this.readConnectionConfig(); this.logger.info( - `Creating Llama Stack provider for endpoint: ${connection.baseUrl}`, + `Creating OGX provider for endpoint: ${connection.baseUrl}`, ); const modelListCache = new ModelListCache({ @@ -108,26 +108,24 @@ export class ResponsesApiProviderFactory { } /** - * Read Llama Stack connection settings from app-config.yaml. + * Read OGX connection settings from app-config.yaml. * * Expected config shape: * ```yaml * boost: * providers: - * llamastack: + * ogx: * baseUrl: http://localhost:8321 * defaultModel: meta-llama/Llama-3.1-8B-Instruct - * apiKey: ${LLAMA_STACK_API_KEY} # optional + * apiKey: ${OGX_API_KEY} # optional * ``` */ - private readConnectionConfig(): LlamaStackConnectionConfig { - const providerConfig = this.config.getOptionalConfig( - 'boost.providers.llamastack', - ); + private readConnectionConfig(): OgxConnectionConfig { + const providerConfig = this.config.getOptionalConfig('boost.providers.ogx'); if (!providerConfig) { this.logger.warn( - 'No boost.providers.llamastack config found. ' + + 'No boost.providers.ogx config found. ' + 'Using default connection settings (http://localhost:8321).', ); return { diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/SessionMap.test.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/SessionMap.test.ts similarity index 98% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/SessionMap.test.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/SessionMap.test.ts index f987dcf55ba..389aa8fc283 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/SessionMap.test.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/SessionMap.test.ts @@ -85,7 +85,7 @@ describe('SessionMap', () => { await sessionMap.set('conv-1', data); expect(cache.set).toHaveBeenCalledWith( - 'llamastack:session:conv-1', + 'ogx:session:conv-1', JSON.stringify(data), { ttl: 86400000 }, ); diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/SessionMap.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/SessionMap.ts similarity index 95% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/SessionMap.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/provider/SessionMap.ts index be6f930acd8..d20d97a0b93 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/provider/SessionMap.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/provider/SessionMap.ts @@ -46,7 +46,7 @@ export interface SessionData { } /** - * Maps conversation IDs to Llama Stack session data using Backstage cacheService. + * Maps conversation IDs to OGX session data using Backstage cacheService. * * Enables multi-turn conversations by tracking the Responses API response ID * chain. Uses cacheService with a 24-hour session TTL (platform-ops task 1.5). @@ -55,7 +55,7 @@ export interface SessionData { * @internal */ export class SessionMap { - private static readonly KEY_PREFIX = 'llamastack:session:'; + private static readonly KEY_PREFIX = 'ogx:session:'; static readonly TTL_MS = 24 * 3600 * 1000; // 24 hours private readonly cache: CacheService; diff --git a/workspaces/boost/plugins/boost-backend-module-llamastack/src/types.ts b/workspaces/boost/plugins/boost-backend-module-ogx/src/types.ts similarity index 80% rename from workspaces/boost/plugins/boost-backend-module-llamastack/src/types.ts rename to workspaces/boost/plugins/boost-backend-module-ogx/src/types.ts index 117eb4ff2cd..dd391187ba3 100644 --- a/workspaces/boost/plugins/boost-backend-module-llamastack/src/types.ts +++ b/workspaces/boost/plugins/boost-backend-module-ogx/src/types.ts @@ -15,12 +15,12 @@ */ /** - * Configuration for connecting to a Llama Stack endpoint. + * Configuration for connecting to an OGX endpoint. * * @internal */ -export interface LlamaStackConnectionConfig { - /** Base URL of the Llama Stack API endpoint (e.g., 'http://localhost:8321'). */ +export interface OgxConnectionConfig { + /** Base URL of the OGX API endpoint (e.g., 'http://localhost:8321'). */ baseUrl: string; /** Default model identifier for inference requests. */ defaultModel?: string; @@ -29,11 +29,11 @@ export interface LlamaStackConnectionConfig { } /** - * A model descriptor returned by the Llama Stack models API. + * A model descriptor returned by the OGX models API. * * @internal */ -export interface LlamaStackModel { +export interface OgxModel { /** Model identifier. */ identifier: string; /** Human-readable display name. */ @@ -45,11 +45,11 @@ export interface LlamaStackModel { } /** - * MCP server configuration for the Llama Stack provider. + * MCP server configuration for the OGX provider. * * @internal */ -export interface LlamaStackMcpServerConfig { +export interface OgxMcpServerConfig { /** Server label used in tool references. */ serverLabel: string; /** MCP server endpoint URL. */ diff --git a/workspaces/boost/plugins/boost-backend/src/chat/ConversationAgentCache.test.ts b/workspaces/boost/plugins/boost-backend/src/chat/ConversationAgentCache.test.ts index d7506c87839..770daa8dc6f 100644 --- a/workspaces/boost/plugins/boost-backend/src/chat/ConversationAgentCache.test.ts +++ b/workspaces/boost/plugins/boost-backend/src/chat/ConversationAgentCache.test.ts @@ -58,9 +58,9 @@ describe('ConversationAgentCache', () => { }); it('stores and retrieves a conversation-agent mapping', async () => { - await conversationCache.set('conv-1', 'llamastack'); + await conversationCache.set('conv-1', 'ogx'); const result = await conversationCache.get('conv-1'); - expect(result).toBe('llamastack'); + expect(result).toBe('ogx'); }); it('returns undefined for unknown conversation', async () => { @@ -69,7 +69,7 @@ describe('ConversationAgentCache', () => { }); it('deletes a conversation-agent mapping', async () => { - await conversationCache.set('conv-1', 'llamastack'); + await conversationCache.set('conv-1', 'ogx'); await conversationCache.delete('conv-1'); const result = await conversationCache.get('conv-1'); expect(result).toBeUndefined(); diff --git a/workspaces/boost/plugins/boost-backend/src/plugin.ts b/workspaces/boost/plugins/boost-backend/src/plugin.ts index 4c0d39577cb..b6861ecfbaf 100644 --- a/workspaces/boost/plugins/boost-backend/src/plugin.ts +++ b/workspaces/boost/plugins/boost-backend/src/plugin.ts @@ -254,7 +254,7 @@ export const boostPlugin = createBackendPlugin({ } else { logger.warn( 'No AI providers registered. Install a provider module ' + - '(e.g., boost-backend-module-llamastack) to enable AI features.', + '(e.g., boost-backend-module-ogx) to enable AI features.', ); } diff --git a/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.test.ts b/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.test.ts index 39ac8f38081..174dad4d7e4 100644 --- a/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.test.ts +++ b/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.test.ts @@ -41,23 +41,23 @@ describe('ProviderManager', () => { describe('registerProvider', () => { it('registers a provider', () => { - const provider = createMockProvider('llamastack'); + const provider = createMockProvider('ogx'); manager.registerProvider(provider); expect(manager.hasProvider()).toBe(true); expect(manager.getRegisteredProviders()).toHaveLength(1); - expect(manager.getRegisteredProviders()[0].id).toBe('llamastack'); + expect(manager.getRegisteredProviders()[0].id).toBe('ogx'); }); it('first registered provider becomes active', () => { - const provider = createMockProvider('llamastack'); + const provider = createMockProvider('ogx'); manager.registerProvider(provider); expect(manager.getActiveProvider()).toBe(provider); }); it('second registered provider does not replace active', () => { - const first = createMockProvider('llamastack'); + const first = createMockProvider('ogx'); const second = createMockProvider('kagenti'); manager.registerProvider(first); manager.registerProvider(second); @@ -66,11 +66,11 @@ describe('ProviderManager', () => { }); it('rejects duplicate provider IDs', () => { - manager.registerProvider(createMockProvider('llamastack')); + manager.registerProvider(createMockProvider('ogx')); - expect(() => - manager.registerProvider(createMockProvider('llamastack')), - ).toThrow('Provider "llamastack" is already registered'); + expect(() => manager.registerProvider(createMockProvider('ogx'))).toThrow( + 'Provider "ogx" is already registered', + ); }); }); @@ -82,7 +82,7 @@ describe('ProviderManager', () => { }); it('returns the active provider', () => { - const provider = createMockProvider('llamastack'); + const provider = createMockProvider('ogx'); manager.registerProvider(provider); expect(manager.getActiveProvider()).toBe(provider); @@ -91,7 +91,7 @@ describe('ProviderManager', () => { describe('switchProvider', () => { it('switches to a registered provider', () => { - const first = createMockProvider('llamastack'); + const first = createMockProvider('ogx'); const second = createMockProvider('kagenti'); manager.registerProvider(first); manager.registerProvider(second); @@ -101,7 +101,7 @@ describe('ProviderManager', () => { }); it('throws for unregistered provider', () => { - manager.registerProvider(createMockProvider('llamastack')); + manager.registerProvider(createMockProvider('ogx')); expect(() => manager.switchProvider('nonexistent')).toThrow( 'Provider "nonexistent" is not registered', @@ -109,11 +109,11 @@ describe('ProviderManager', () => { }); it('includes available providers in error message', () => { - manager.registerProvider(createMockProvider('llamastack')); + manager.registerProvider(createMockProvider('ogx')); manager.registerProvider(createMockProvider('kagenti')); expect(() => manager.switchProvider('nonexistent')).toThrow( - 'Available providers: llamastack, kagenti', + 'Available providers: ogx, kagenti', ); }); }); @@ -124,13 +124,13 @@ describe('ProviderManager', () => { }); it('returns descriptors for all registered providers', () => { - manager.registerProvider(createMockProvider('llamastack', 'Llama Stack')); + manager.registerProvider(createMockProvider('ogx', 'OGX')); manager.registerProvider(createMockProvider('kagenti', 'Kagenti')); const descriptors = manager.getRegisteredProviders(); expect(descriptors).toHaveLength(2); - expect(descriptors[0].id).toBe('llamastack'); - expect(descriptors[0].name).toBe('Llama Stack'); + expect(descriptors[0].id).toBe('ogx'); + expect(descriptors[0].name).toBe('OGX'); expect(descriptors[1].id).toBe('kagenti'); expect(descriptors[1].name).toBe('Kagenti'); }); @@ -142,7 +142,7 @@ describe('ProviderManager', () => { }); it('returns true when a provider is registered', () => { - manager.registerProvider(createMockProvider('llamastack')); + manager.registerProvider(createMockProvider('ogx')); expect(manager.hasProvider()).toBe(true); }); }); diff --git a/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.ts b/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.ts index 9a3f2a06bdc..9b22d966e06 100644 --- a/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.ts +++ b/workspaces/boost/plugins/boost-backend/src/provider/ProviderManager.ts @@ -56,7 +56,7 @@ export class ProviderManager { if (!this.activeProvider) { throw new NotFoundError( 'No AI provider is registered. Install a provider module ' + - '(e.g., boost-backend-module-llamastack) to register a provider.', + '(e.g., boost-backend-module-ogx) to register a provider.', ); } return this.activeProvider; diff --git a/workspaces/boost/plugins/boost-common/src/index.test.ts b/workspaces/boost/plugins/boost-common/src/index.test.ts index 1432d713fff..d714510b742 100644 --- a/workspaces/boost/plugins/boost-common/src/index.test.ts +++ b/workspaces/boost/plugins/boost-common/src/index.test.ts @@ -286,13 +286,13 @@ describe('boost-common', () => { describe('no provider-specific types', () => { it('does not export provider-specific configuration types', () => { // This is a static verification — the common package must not - // contain LlamaStackConfig, KagentiConfig, or similar types. + // contain OgxConfig, KagentiConfig, or similar types. // If someone adds them, they must add them to this deny list // and this test will fail the review. const exports = require('./index'); const exportNames = Object.keys(exports); const providerSpecificPatterns = [ - /LlamaStack/i, + /Ogx/i, /Kagenti(?!Admin)/i, /ResponsesApi/i, ]; diff --git a/workspaces/boost/plugins/boost-common/src/types.ts b/workspaces/boost/plugins/boost-common/src/types.ts index 8420c610456..931e987aba2 100644 --- a/workspaces/boost/plugins/boost-common/src/types.ts +++ b/workspaces/boost/plugins/boost-common/src/types.ts @@ -20,7 +20,7 @@ * @public */ export interface ProviderDescriptor { - /** Unique identifier for the provider (e.g., 'llamastack', 'kagenti'). */ + /** Unique identifier for the provider (e.g., 'ogx', 'kagenti'). */ id: string; /** Human-readable display name. */ name: string; diff --git a/workspaces/boost/plugins/llamastack-entity-provider/.eslintrc.js b/workspaces/boost/plugins/ogx-entity-provider/.eslintrc.js similarity index 100% rename from workspaces/boost/plugins/llamastack-entity-provider/.eslintrc.js rename to workspaces/boost/plugins/ogx-entity-provider/.eslintrc.js diff --git a/workspaces/boost/plugins/llamastack-entity-provider/CHANGELOG.md b/workspaces/boost/plugins/ogx-entity-provider/CHANGELOG.md similarity index 100% rename from workspaces/boost/plugins/llamastack-entity-provider/CHANGELOG.md rename to workspaces/boost/plugins/ogx-entity-provider/CHANGELOG.md diff --git a/workspaces/boost/plugins/llamastack-entity-provider/package.json b/workspaces/boost/plugins/ogx-entity-provider/package.json similarity index 81% rename from workspaces/boost/plugins/llamastack-entity-provider/package.json rename to workspaces/boost/plugins/ogx-entity-provider/package.json index a15bebca717..4b60d176d3a 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/package.json +++ b/workspaces/boost/plugins/ogx-entity-provider/package.json @@ -1,8 +1,8 @@ { - "name": "@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider", + "name": "@red-hat-developer-hub/backstage-plugin-ogx-entity-provider", "version": "0.1.1", "license": "Apache-2.0", - "description": "Llama Stack entity provider for the Backstage catalog — emits AI models and agents as catalog entities", + "description": "OGX entity provider for the Backstage catalog — emits AI models and agents as catalog entities", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { @@ -13,7 +13,7 @@ "pluginId": "catalog", "pluginPackage": "@backstage/plugin-catalog-backend", "pluginPackages": [ - "@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider" + "@red-hat-developer-hub/backstage-plugin-ogx-entity-provider" ] }, "exports": { @@ -55,7 +55,7 @@ "repository": { "type": "git", "url": "git+https://github.com/redhat-developer/rhdh-plugins.git", - "directory": "workspaces/boost/plugins/llamastack-entity-provider" + "directory": "workspaces/boost/plugins/ogx-entity-provider" }, "homepage": "https://red.ht/rhdh", "bugs": "https://github.com/redhat-developer/rhdh-plugins/issues" diff --git a/workspaces/boost/plugins/llamastack-entity-provider/report.api.md b/workspaces/boost/plugins/ogx-entity-provider/report.api.md similarity index 63% rename from workspaces/boost/plugins/llamastack-entity-provider/report.api.md rename to workspaces/boost/plugins/ogx-entity-provider/report.api.md index df0d368ad11..ed1f23f0f53 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/report.api.md +++ b/workspaces/boost/plugins/ogx-entity-provider/report.api.md @@ -1,4 +1,4 @@ -## API Report File for "@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider" +## API Report File for "@red-hat-developer-hub/backstage-plugin-ogx-entity-provider" > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). @@ -6,6 +6,6 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; // @public -const catalogModuleLlamaStackEntityProvider: BackendFeature; -export default catalogModuleLlamaStackEntityProvider; +const catalogModuleOgxEntityProvider: BackendFeature; +export default catalogModuleOgxEntityProvider; ``` diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/index.ts b/workspaces/boost/plugins/ogx-entity-provider/src/index.ts similarity index 84% rename from workspaces/boost/plugins/llamastack-entity-provider/src/index.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/index.ts index e17ddb37636..084c6f41e66 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/index.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/index.ts @@ -15,7 +15,7 @@ */ /** - * Llama Stack entity provider for the Backstage catalog. + * OGX entity provider for the Backstage catalog. * * Emits AI models and agents as catalog entities, independently * deployable as an RHDH dynamic plugin. @@ -23,4 +23,4 @@ * @packageDocumentation */ -export { catalogModuleLlamaStackEntityProvider as default } from './module'; +export { catalogModuleOgxEntityProvider as default } from './module'; diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/module.ts b/workspaces/boost/plugins/ogx-entity-provider/src/module.ts similarity index 81% rename from workspaces/boost/plugins/llamastack-entity-provider/src/module.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/module.ts index 3eb3b05d8f5..cb8b13df8de 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/module.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/module.ts @@ -20,12 +20,9 @@ import { } from '@backstage/backend-plugin-api'; import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node'; -import { LlamaStackModelEntityProvider } from './providers/LlamaStackModelEntityProvider'; -import { LlamaStackAgentEntityProvider } from './providers/LlamaStackAgentEntityProvider'; -import type { - LlamaStackAgentConfig, - LlamaStackEntityProviderConfig, -} from './types'; +import { OgxModelEntityProvider } from './providers/OgxModelEntityProvider'; +import { OgxAgentEntityProvider } from './providers/OgxAgentEntityProvider'; +import type { OgxAgentConfig, OgxEntityProviderConfig } from './types'; /** * Default upstream refresh interval for model entities (60 seconds). @@ -38,7 +35,7 @@ const DEFAULT_MODEL_REFRESH_SECONDS = 60; const DEFAULT_AGENT_REFRESH_SECONDS = 300; /** - * Catalog backend module that registers Llama Stack entity providers. + * Catalog backend module that registers OGX entity providers. * * Independently deployable as an RHDH dynamic plugin — emits AI models * (kind: Resource, spec.type: ai-model) and agents (kind: Component, @@ -49,9 +46,9 @@ const DEFAULT_AGENT_REFRESH_SECONDS = 300; * ```yaml * boost: * entityProviders: - * llamastack: + * ogx: * baseUrl: http://localhost:8321 - * apiKey: ${LLAMA_STACK_API_KEY} # optional + * apiKey: ${OGX_API_KEY} # optional * modelRefreshIntervalSeconds: 60 * agentRefreshIntervalSeconds: 300 * agents: @@ -62,9 +59,9 @@ const DEFAULT_AGENT_REFRESH_SECONDS = 300; * * @public */ -export const catalogModuleLlamaStackEntityProvider = createBackendModule({ +export const catalogModuleOgxEntityProvider = createBackendModule({ pluginId: 'catalog', - moduleId: 'llamastack-entity-provider', + moduleId: 'ogx-entity-provider', register(reg) { reg.registerInit({ deps: { @@ -74,9 +71,9 @@ export const catalogModuleLlamaStackEntityProvider = createBackendModule({ scheduler: coreServices.scheduler, }, async init({ catalog, config, logger, scheduler }) { - logger.info('Initializing Llama Stack entity providers'); + logger.info('Initializing OGX entity providers'); - const providerConfig = readLlamaStackEntityProviderConfig(config); + const providerConfig = readOgxEntityProviderConfig(config); const modelRefreshSeconds = providerConfig.modelRefreshIntervalSeconds ?? @@ -86,7 +83,7 @@ export const catalogModuleLlamaStackEntityProvider = createBackendModule({ DEFAULT_AGENT_REFRESH_SECONDS; catalog.addEntityProvider( - new LlamaStackModelEntityProvider({ + new OgxModelEntityProvider({ config: providerConfig, logger, taskRunner: scheduler.createScheduledTaskRunner({ @@ -97,7 +94,7 @@ export const catalogModuleLlamaStackEntityProvider = createBackendModule({ ); catalog.addEntityProvider( - new LlamaStackAgentEntityProvider({ + new OgxAgentEntityProvider({ config: providerConfig, logger, taskRunner: scheduler.createScheduledTaskRunner({ @@ -108,7 +105,7 @@ export const catalogModuleLlamaStackEntityProvider = createBackendModule({ ); logger.info( - `Llama Stack entity providers registered (models: ${modelRefreshSeconds}s, agents: ${agentRefreshSeconds}s)`, + `OGX entity providers registered (models: ${modelRefreshSeconds}s, agents: ${agentRefreshSeconds}s)`, ); }, }); @@ -116,13 +113,13 @@ export const catalogModuleLlamaStackEntityProvider = createBackendModule({ }); /** - * Read Llama Stack entity provider configuration from app-config.yaml. + * Read OGX entity provider configuration from app-config.yaml. */ -function readLlamaStackEntityProviderConfig( +function readOgxEntityProviderConfig( config: typeof coreServices.rootConfig extends { T: infer T } ? T : never, -): LlamaStackEntityProviderConfig { +): OgxEntityProviderConfig { // Try the entity-provider-specific config first - const epConfig = config.getOptionalConfig('boost.entityProviders.llamastack'); + const epConfig = config.getOptionalConfig('boost.entityProviders.ogx'); if (epConfig) { return { @@ -139,7 +136,7 @@ function readLlamaStackEntityProviderConfig( } // Fall back to the provider module config for composed mode - const providerConfig = config.getOptionalConfig('boost.providers.llamastack'); + const providerConfig = config.getOptionalConfig('boost.providers.ogx'); if (providerConfig) { return { @@ -164,7 +161,7 @@ function readAgentConfigs( ? T : never)['getOptionalConfig'] >, -): LlamaStackAgentConfig[] | undefined { +): OgxAgentConfig[] | undefined { if (!parentConfig) { return undefined; } diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.test.ts b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxAgentEntityProvider.test.ts similarity index 84% rename from workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.test.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxAgentEntityProvider.test.ts index b857ece5acd..c6134c88548 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.test.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxAgentEntityProvider.test.ts @@ -21,8 +21,8 @@ import type { import { mockServices } from '@backstage/backend-test-utils'; import type { EntityProviderConnection } from '@backstage/plugin-catalog-node'; -import { LlamaStackAgentEntityProvider } from './LlamaStackAgentEntityProvider'; -import type { LlamaStackEntityProviderConfig } from '../types'; +import { OgxAgentEntityProvider } from './OgxAgentEntityProvider'; +import type { OgxEntityProviderConfig } from '../types'; class TaskRunnerMock implements SchedulerServiceTaskRunner { private tasks: SchedulerServiceTaskInvocationDefinition[] = []; @@ -44,7 +44,7 @@ const mockConnection: EntityProviderConnection = { refresh: jest.fn(), } as unknown as EntityProviderConnection; -describe('LlamaStackAgentEntityProvider', () => { +describe('OgxAgentEntityProvider', () => { let taskRunner: TaskRunnerMock; beforeEach(() => { @@ -53,21 +53,21 @@ describe('LlamaStackAgentEntityProvider', () => { }); it('should return the correct provider name', () => { - const config: LlamaStackEntityProviderConfig = { + const config: OgxEntityProviderConfig = { baseUrl: 'http://localhost:8321', }; - const provider = new LlamaStackAgentEntityProvider({ + const provider = new OgxAgentEntityProvider({ config, logger: mockServices.logger.mock(), taskRunner, }); - expect(provider.getProviderName()).toBe('llamastack-agent-entity-provider'); + expect(provider.getProviderName()).toBe('ogx-agent-entity-provider'); }); it('should emit Component entities for configured agents', async () => { - const config: LlamaStackEntityProviderConfig = { + const config: OgxEntityProviderConfig = { baseUrl: 'http://localhost:8321', agents: [ { @@ -81,7 +81,7 @@ describe('LlamaStackAgentEntityProvider', () => { ], }; - const provider = new LlamaStackAgentEntityProvider({ + const provider = new OgxAgentEntityProvider({ config, logger: mockServices.logger.mock(), taskRunner, @@ -109,11 +109,11 @@ describe('LlamaStackAgentEntityProvider', () => { }); it('should emit empty entities when no agents configured', async () => { - const config: LlamaStackEntityProviderConfig = { + const config: OgxEntityProviderConfig = { baseUrl: 'http://localhost:8321', }; - const provider = new LlamaStackAgentEntityProvider({ + const provider = new OgxAgentEntityProvider({ config, logger: mockServices.logger.mock(), taskRunner, @@ -128,7 +128,7 @@ describe('LlamaStackAgentEntityProvider', () => { }); it('should include dependsOn for handoff targets', async () => { - const config: LlamaStackEntityProviderConfig = { + const config: OgxEntityProviderConfig = { baseUrl: 'http://localhost:8321', agents: [ { @@ -139,7 +139,7 @@ describe('LlamaStackAgentEntityProvider', () => { ], }; - const provider = new LlamaStackAgentEntityProvider({ + const provider = new OgxAgentEntityProvider({ config, logger: mockServices.logger.mock(), taskRunner, @@ -153,12 +153,12 @@ describe('LlamaStackAgentEntityProvider', () => { const entity = mutation.entities[0].entity; expect(entity.spec.dependsOn).toEqual([ - 'component:default/llamastack-agent-code-assistant', + 'component:default/ogx-agent-code-assistant', ]); }); it('should map lifecycle stages correctly', async () => { - const config: LlamaStackEntityProviderConfig = { + const config: OgxEntityProviderConfig = { baseUrl: 'http://localhost:8321', agents: [ { id: 'draft', name: 'Draft', lifecycleStage: 'draft' }, @@ -168,7 +168,7 @@ describe('LlamaStackAgentEntityProvider', () => { ], }; - const provider = new LlamaStackAgentEntityProvider({ + const provider = new OgxAgentEntityProvider({ config, logger: mockServices.logger.mock(), taskRunner, diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.ts b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxAgentEntityProvider.ts similarity index 81% rename from workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxAgentEntityProvider.ts index acdc99bc7da..0006c7f7ea5 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackAgentEntityProvider.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxAgentEntityProvider.ts @@ -28,17 +28,14 @@ import { } from '@backstage/catalog-model'; import type { Entity } from '@backstage/catalog-model'; -import type { - LlamaStackAgentConfig, - LlamaStackEntityProviderConfig, -} from '../types'; +import type { OgxAgentConfig, OgxEntityProviderConfig } from '../types'; import { mapLifecycleStage, mapOwner, sanitizeEntityName, } from './entityHelpers'; -const PROVIDER_ID = 'llamastack-agent-entity-provider'; +const PROVIDER_ID = 'ogx-agent-entity-provider'; /** * Annotation key for the boost lifecycle stage. @@ -58,14 +55,14 @@ export const ANNOTATION_BOOST_LIFECYCLE_STAGE = * * @public */ -export class LlamaStackAgentEntityProvider implements EntityProvider { - private readonly config: LlamaStackEntityProviderConfig; +export class OgxAgentEntityProvider implements EntityProvider { + private readonly config: OgxEntityProviderConfig; private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; constructor(options: { - config: LlamaStackEntityProviderConfig; + config: OgxEntityProviderConfig; logger: LoggerService; taskRunner: SchedulerServiceTaskRunner; }) { @@ -88,13 +85,13 @@ export class LlamaStackAgentEntityProvider implements EntityProvider { */ async run(): Promise { if (!this.connection) { - throw new Error('LlamaStackAgentEntityProvider not initialized'); + throw new Error('OgxAgentEntityProvider not initialized'); } const agents = this.config.agents ?? []; this.logger.info( - `Refreshing ${agents.length} agent entities from Llama Stack config`, + `Refreshing ${agents.length} agent entities from OGX config`, ); const entities = agents.map(agent => this.agentToEntity(agent)); @@ -109,10 +106,10 @@ export class LlamaStackAgentEntityProvider implements EntityProvider { } /** - * Convert a Llama Stack agent config into a Backstage Component entity. + * Convert an OGX agent config into a Backstage Component entity. */ - private agentToEntity(agent: LlamaStackAgentConfig): Entity { - const entityName = sanitizeEntityName(`llamastack-agent-${agent.id}`); + private agentToEntity(agent: OgxAgentConfig): Entity { + const entityName = sanitizeEntityName(`ogx-agent-${agent.id}`); const annotations: Record = { [ANNOTATION_LOCATION]: `${PROVIDER_ID}:${entityName}`, @@ -132,7 +129,7 @@ export class LlamaStackAgentEntityProvider implements EntityProvider { if (agent.handoffTargets) { for (const target of agent.handoffTargets) { dependsOn.push( - `component:default/${sanitizeEntityName(`llamastack-agent-${target}`)}`, + `component:default/${sanitizeEntityName(`ogx-agent-${target}`)}`, ); } } @@ -143,10 +140,10 @@ export class LlamaStackAgentEntityProvider implements EntityProvider { metadata: { name: entityName, title: agent.name, - description: agent.description ?? `Llama Stack agent: ${agent.name}`, + description: agent.description ?? `OGX agent: ${agent.name}`, annotations, labels: { - 'boost.redhat.com/provider': 'llamastack', + 'boost.redhat.com/provider': 'ogx', }, }, spec: { @@ -170,7 +167,7 @@ export class LlamaStackAgentEntityProvider implements EntityProvider { await this.run(); } catch (error) { this.logger.error( - 'Error during Llama Stack agent entity refresh', + 'Error during OGX agent entity refresh', error instanceof Error ? error : undefined, ); } diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.test.ts b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxModelEntityProvider.test.ts similarity index 88% rename from workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.test.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxModelEntityProvider.test.ts index 852c582547d..be73b11bafd 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.test.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxModelEntityProvider.test.ts @@ -21,8 +21,8 @@ import type { import { mockServices } from '@backstage/backend-test-utils'; import type { EntityProviderConnection } from '@backstage/plugin-catalog-node'; -import { LlamaStackModelEntityProvider } from './LlamaStackModelEntityProvider'; -import type { LlamaStackEntityProviderConfig } from '../types'; +import { OgxModelEntityProvider } from './OgxModelEntityProvider'; +import type { OgxEntityProviderConfig } from '../types'; const mockFetch = jest.fn() as jest.MockedFunction; global.fetch = mockFetch; @@ -47,11 +47,11 @@ const mockConnection: EntityProviderConnection = { refresh: jest.fn(), } as unknown as EntityProviderConnection; -const defaultConfig: LlamaStackEntityProviderConfig = { +const defaultConfig: OgxEntityProviderConfig = { baseUrl: 'http://localhost:8321', }; -describe('LlamaStackModelEntityProvider', () => { +describe('OgxModelEntityProvider', () => { let taskRunner: TaskRunnerMock; beforeEach(() => { @@ -60,13 +60,13 @@ describe('LlamaStackModelEntityProvider', () => { }); it('should return the correct provider name', () => { - const provider = new LlamaStackModelEntityProvider({ + const provider = new OgxModelEntityProvider({ config: defaultConfig, logger: mockServices.logger.mock(), taskRunner, }); - expect(provider.getProviderName()).toBe('llamastack-model-entity-provider'); + expect(provider.getProviderName()).toBe('ogx-model-entity-provider'); }); it('should emit Resource entities for models', async () => { @@ -91,7 +91,7 @@ describe('LlamaStackModelEntityProvider', () => { }), } as Response); - const provider = new LlamaStackModelEntityProvider({ + const provider = new OgxModelEntityProvider({ config: defaultConfig, logger: mockServices.logger.mock(), taskRunner, @@ -123,7 +123,7 @@ describe('LlamaStackModelEntityProvider', () => { json: async () => ({ data: [] }), } as Response); - const provider = new LlamaStackModelEntityProvider({ + const provider = new OgxModelEntityProvider({ config: { ...defaultConfig, apiKey: 'test-key' }, logger: mockServices.logger.mock(), taskRunner, @@ -148,7 +148,7 @@ describe('LlamaStackModelEntityProvider', () => { status: 500, } as Response); - const provider = new LlamaStackModelEntityProvider({ + const provider = new OgxModelEntityProvider({ config: defaultConfig, logger: mockServices.logger.mock(), taskRunner, @@ -169,7 +169,7 @@ describe('LlamaStackModelEntityProvider', () => { json: async () => ({ data: [] }), } as Response); - const provider = new LlamaStackModelEntityProvider({ + const provider = new OgxModelEntityProvider({ config: defaultConfig, logger: mockServices.logger.mock(), taskRunner, diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.ts b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxModelEntityProvider.ts similarity index 75% rename from workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxModelEntityProvider.ts index 7c2deb5303d..ac6400d92bc 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/LlamaStackModelEntityProvider.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/providers/OgxModelEntityProvider.ts @@ -29,16 +29,16 @@ import { import type { Entity } from '@backstage/catalog-model'; import type { - LlamaStackEntityProviderConfig, - LlamaStackModelListResponse, - LlamaStackModelEntry, + OgxEntityProviderConfig, + OgxModelListResponse, + OgxModelEntry, } from '../types'; import { mapOwner, sanitizeEntityName } from './entityHelpers'; -const PROVIDER_ID = 'llamastack-model-entity-provider'; +const PROVIDER_ID = 'ogx-model-entity-provider'; /** - * Entity provider that polls the Llama Stack /v1/models endpoint and emits + * Entity provider that polls the OGX /v1/models endpoint and emits * AI models as Backstage catalog entities with kind: Resource, spec.type: ai-model. * * Implements the two-layer polling model: refreshes upstream on a configurable @@ -47,15 +47,15 @@ const PROVIDER_ID = 'llamastack-model-entity-provider'; * * @public */ -export class LlamaStackModelEntityProvider implements EntityProvider { - private readonly config: LlamaStackEntityProviderConfig; +export class OgxModelEntityProvider implements EntityProvider { + private readonly config: OgxEntityProviderConfig; private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; private cachedEntities: Entity[] = []; constructor(options: { - config: LlamaStackEntityProviderConfig; + config: OgxEntityProviderConfig; logger: LoggerService; taskRunner: SchedulerServiceTaskRunner; }) { @@ -74,15 +74,15 @@ export class LlamaStackModelEntityProvider implements EntityProvider { } /** - * Fetch models from the Llama Stack API and convert to catalog entities. + * Fetch models from the OGX API and convert to catalog entities. */ async run(): Promise { if (!this.connection) { - throw new Error('LlamaStackModelEntityProvider not initialized'); + throw new Error('OgxModelEntityProvider not initialized'); } this.logger.info( - `Refreshing model entities from Llama Stack at ${this.config.baseUrl}`, + `Refreshing model entities from OGX at ${this.config.baseUrl}`, ); try { @@ -90,11 +90,11 @@ export class LlamaStackModelEntityProvider implements EntityProvider { this.cachedEntities = models.map(model => this.modelToEntity(model)); this.logger.info( - `Fetched ${this.cachedEntities.length} model entities from Llama Stack`, + `Fetched ${this.cachedEntities.length} model entities from OGX`, ); } catch (error) { this.logger.error( - 'Failed to fetch models from Llama Stack', + 'Failed to fetch models from OGX', error instanceof Error ? error : undefined, ); } @@ -111,7 +111,7 @@ export class LlamaStackModelEntityProvider implements EntityProvider { /** * Fetch models from the /v1/models endpoint. */ - private async fetchModels(): Promise { + private async fetchModels(): Promise { const url = `${this.config.baseUrl}/v1/models`; const headers: Record = { @@ -124,30 +124,28 @@ export class LlamaStackModelEntityProvider implements EntityProvider { const response = await fetch(url, { headers }); if (!response.ok) { - throw new Error( - `Llama Stack API returned ${response.status} from ${url}`, - ); + throw new Error(`OGX API returned ${response.status} from ${url}`); } - const body = (await response.json()) as LlamaStackModelListResponse; + const body = (await response.json()) as OgxModelListResponse; if (body.data && Array.isArray(body.data)) { return body.data; } - // If the response is an array directly (some Llama Stack versions) + // If the response is an array directly (some OGX versions) if (Array.isArray(body)) { - return body as unknown as LlamaStackModelEntry[]; + return body as unknown as OgxModelEntry[]; } return []; } /** - * Convert a Llama Stack model entry into a Backstage Resource entity. + * Convert an OGX model entry into a Backstage Resource entity. */ - private modelToEntity(model: LlamaStackModelEntry): Entity { - const entityName = sanitizeEntityName(`llamastack-model-${model.id}`); + private modelToEntity(model: OgxModelEntry): Entity { + const entityName = sanitizeEntityName(`ogx-model-${model.id}`); return { apiVersion: 'backstage.io/v1alpha1', @@ -155,7 +153,7 @@ export class LlamaStackModelEntityProvider implements EntityProvider { metadata: { name: entityName, title: model.id, - description: `Llama Stack model: ${model.id}`, + description: `OGX model: ${model.id}`, annotations: { [ANNOTATION_LOCATION]: `${PROVIDER_ID}:${entityName}`, [ANNOTATION_ORIGIN_LOCATION]: `${PROVIDER_ID}:${entityName}`, @@ -165,7 +163,7 @@ export class LlamaStackModelEntityProvider implements EntityProvider { }), }, labels: { - 'boost.redhat.com/provider': 'llamastack', + 'boost.redhat.com/provider': 'ogx', }, }, spec: { @@ -188,7 +186,7 @@ export class LlamaStackModelEntityProvider implements EntityProvider { await this.run(); } catch (error) { this.logger.error( - 'Error during Llama Stack model entity refresh', + 'Error during OGX model entity refresh', error instanceof Error ? error : undefined, ); } diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/entityHelpers.ts b/workspaces/boost/plugins/ogx-entity-provider/src/providers/entityHelpers.ts similarity index 100% rename from workspaces/boost/plugins/llamastack-entity-provider/src/providers/entityHelpers.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/providers/entityHelpers.ts diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/index.ts b/workspaces/boost/plugins/ogx-entity-provider/src/providers/index.ts similarity index 78% rename from workspaces/boost/plugins/llamastack-entity-provider/src/providers/index.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/providers/index.ts index b0378c46f09..0e47f077400 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/providers/index.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/providers/index.ts @@ -14,5 +14,5 @@ * limitations under the License. */ -export { LlamaStackModelEntityProvider } from './LlamaStackModelEntityProvider'; -export { LlamaStackAgentEntityProvider } from './LlamaStackAgentEntityProvider'; +export { OgxModelEntityProvider } from './OgxModelEntityProvider'; +export { OgxAgentEntityProvider } from './OgxAgentEntityProvider'; diff --git a/workspaces/boost/plugins/llamastack-entity-provider/src/types.ts b/workspaces/boost/plugins/ogx-entity-provider/src/types.ts similarity index 81% rename from workspaces/boost/plugins/llamastack-entity-provider/src/types.ts rename to workspaces/boost/plugins/ogx-entity-provider/src/types.ts index 3564c535e2c..c1c8b6ec4aa 100644 --- a/workspaces/boost/plugins/llamastack-entity-provider/src/types.ts +++ b/workspaces/boost/plugins/ogx-entity-provider/src/types.ts @@ -15,11 +15,11 @@ */ /** - * A model descriptor returned by the Llama Stack /v1/models API. + * A model descriptor returned by the OGX /v1/models API. * * @internal */ -export interface LlamaStackModel { +export interface OgxModel { /** Model identifier. */ identifier: string; /** Human-readable display name. */ @@ -35,11 +35,11 @@ export interface LlamaStackModel { * * @internal */ -export interface LlamaStackModelListResponse { +export interface OgxModelListResponse { /** Response object type. */ object?: string; /** Array of model entries. */ - data: LlamaStackModelEntry[]; + data: OgxModelEntry[]; } /** @@ -47,7 +47,7 @@ export interface LlamaStackModelListResponse { * * @internal */ -export interface LlamaStackModelEntry { +export interface OgxModelEntry { /** Model identifier. */ id: string; /** Object type (always 'model'). */ @@ -59,11 +59,11 @@ export interface LlamaStackModelEntry { } /** - * An agent configuration from Llama Stack YAML/admin config. + * An agent configuration from OGX YAML/admin config. * * @internal */ -export interface LlamaStackAgentConfig { +export interface OgxAgentConfig { /** Unique agent identifier. */ id: string; /** Human-readable agent name. */ @@ -83,12 +83,12 @@ export interface LlamaStackAgentConfig { } /** - * Configuration for connecting to a Llama Stack endpoint for entity discovery. + * Configuration for connecting to an OGX endpoint for entity discovery. * * @internal */ -export interface LlamaStackEntityProviderConfig { - /** Base URL of the Llama Stack API endpoint. */ +export interface OgxEntityProviderConfig { + /** Base URL of the OGX API endpoint. */ baseUrl: string; /** Optional API key for authenticated endpoints. */ apiKey?: string; @@ -97,5 +97,5 @@ export interface LlamaStackEntityProviderConfig { /** Upstream refresh interval in seconds for agent entities (default: 300 = 5m). */ agentRefreshIntervalSeconds?: number; /** Static agent configurations from YAML/admin config. */ - agents?: LlamaStackAgentConfig[]; + agents?: OgxAgentConfig[]; } diff --git a/workspaces/boost/yarn.lock b/workspaces/boost/yarn.lock index 62f29b3e8bd..c45977bf244 100644 --- a/workspaces/boost/yarn.lock +++ b/workspaces/boost/yarn.lock @@ -8804,9 +8804,9 @@ __metadata: languageName: unknown linkType: soft -"@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack@workspace:^, @red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack@workspace:plugins/boost-backend-module-llamastack": +"@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx@workspace:^, @red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx@workspace:plugins/boost-backend-module-ogx": version: 0.0.0-use.local - resolution: "@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack@workspace:plugins/boost-backend-module-llamastack" + resolution: "@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx@workspace:plugins/boost-backend-module-ogx" dependencies: "@backstage/backend-plugin-api": "npm:^1.9.2" "@backstage/cli": "npm:^0.36.3" @@ -8918,9 +8918,9 @@ __metadata: languageName: unknown linkType: soft -"@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider@workspace:^, @red-hat-developer-hub/backstage-plugin-llamastack-entity-provider@workspace:plugins/llamastack-entity-provider": +"@red-hat-developer-hub/backstage-plugin-ogx-entity-provider@workspace:^, @red-hat-developer-hub/backstage-plugin-ogx-entity-provider@workspace:plugins/ogx-entity-provider": version: 0.0.0-use.local - resolution: "@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider@workspace:plugins/llamastack-entity-provider" + resolution: "@red-hat-developer-hub/backstage-plugin-ogx-entity-provider@workspace:plugins/ogx-entity-provider" dependencies: "@backstage/backend-plugin-api": "npm:^1.9.2" "@backstage/backend-test-utils": "npm:^1.11.4" @@ -13083,9 +13083,9 @@ __metadata: "@backstage/plugin-techdocs-backend": "npm:^2.2.1" "@red-hat-developer-hub/backstage-plugin-boost-backend": "workspace:^" "@red-hat-developer-hub/backstage-plugin-boost-backend-module-kagenti": "workspace:^" - "@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack": "workspace:^" + "@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx": "workspace:^" "@red-hat-developer-hub/backstage-plugin-kagenti-entity-provider": "workspace:^" - "@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider": "workspace:^" + "@red-hat-developer-hub/backstage-plugin-ogx-entity-provider": "workspace:^" app: "link:../app" better-sqlite3: "npm:^12.0.0" node-gyp: "npm:^10.0.0" From 66f2e8df102d3a37530566b1d801d33af0ba99ea Mon Sep 17 00:00:00 2001 From: fullsend-fix <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 16:15:16 +0000 Subject: [PATCH 2/3] chore(#4165): add changeset for llamastack-to-ogx rename Add changeset documenting the package rename from llamastack to ogx for all affected boost workspace packages: boost-backend-module-ogx (minor), ogx-entity-provider (minor), boost-backend (patch), and boost-common (patch). Addresses review feedback on #4167 --- workspaces/boost/.changeset/rename-llamastack-to-ogx.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 workspaces/boost/.changeset/rename-llamastack-to-ogx.md diff --git a/workspaces/boost/.changeset/rename-llamastack-to-ogx.md b/workspaces/boost/.changeset/rename-llamastack-to-ogx.md new file mode 100644 index 00000000000..1cd93b17e68 --- /dev/null +++ b/workspaces/boost/.changeset/rename-llamastack-to-ogx.md @@ -0,0 +1,8 @@ +--- +'@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx': minor +'@red-hat-developer-hub/backstage-plugin-ogx-entity-provider': minor +'@red-hat-developer-hub/backstage-plugin-boost-backend': patch +'@red-hat-developer-hub/backstage-plugin-boost-common': patch +--- + +Rename all Llama Stack references to OGX across the boost workspace. The upstream project has been renamed from llamastack to ogx. This changes npm package names, module IDs, cache key prefixes, config paths, provider identifiers, and entity name prefixes. Consumers must update imports from `@red-hat-developer-hub/backstage-plugin-boost-backend-module-llamastack` to `@red-hat-developer-hub/backstage-plugin-boost-backend-module-ogx` and from `@red-hat-developer-hub/backstage-plugin-llamastack-entity-provider` to `@red-hat-developer-hub/backstage-plugin-ogx-entity-provider`. From 0bd187d9031dac8a56ae06ede2823596732dff3b Mon Sep 17 00:00:00 2001 From: fullsend-fix <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Date: Tue, 4 Aug 2026 17:19:51 +0000 Subject: [PATCH 3/3] fix(#4165): rename llama stack vars in load-secrets.sh Rename BOOST_LLAMA_STACK_URL to BOOST_OGX_URL and _discover_llama_stack_route to _discover_ogx_route throughout scripts/load-secrets.sh to match the llamastack-to-ogx rename. Addresses review feedback on #4167 --- workspaces/boost/scripts/load-secrets.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/workspaces/boost/scripts/load-secrets.sh b/workspaces/boost/scripts/load-secrets.sh index 66db65f6e44..a6e51584156 100755 --- a/workspaces/boost/scripts/load-secrets.sh +++ b/workspaces/boost/scripts/load-secrets.sh @@ -37,8 +37,8 @@ BOOST_MODEL=$(_load_field AUGMENT_MODEL) || { echo "Abort unset -f _load_field -# Discover Llama Stack route via OGX operator labels (best-effort) -_discover_llama_stack_route() { +# Discover OGX route via OGX operator labels (best-effort) +_discover_ogx_route() { local route_host="" local label for label in "ogx.io/watch=true" \ @@ -58,16 +58,16 @@ _discover_llama_stack_route() { return 1 } -BOOST_LLAMA_STACK_URL=$(_discover_llama_stack_route) || { - echo " WARNING: no Llama Stack route found via OGX labels — set BOOST_LLAMA_STACK_URL manually" >&2 +BOOST_OGX_URL=$(_discover_ogx_route) || { + echo " WARNING: no OGX route found via OGX labels — set BOOST_OGX_URL manually" >&2 } -unset -f _discover_llama_stack_route +unset -f _discover_ogx_route export KAGENTI_CLIENT_SECRET KAGENTI_CLIENT_ID KAGENTI_TOKEN_ENDPOINT export KAGENTI_BASE_URL KAGENTI_NAMESPACE BOOST_MODEL -if [[ -n "$BOOST_LLAMA_STACK_URL" ]]; then - export BOOST_LLAMA_STACK_URL +if [[ -n "$BOOST_OGX_URL" ]]; then + export BOOST_OGX_URL fi export NODE_TLS_REJECT_UNAUTHORIZED=0 @@ -77,6 +77,6 @@ echo "Loaded: KAGENTI_CLIENT_ID=$KAGENTI_CLIENT_ID" echo "Loaded: KAGENTI_CLIENT_SECRET=" echo "Loaded: KAGENTI_TOKEN_ENDPOINT=$KAGENTI_TOKEN_ENDPOINT" echo "Loaded: BOOST_MODEL=$BOOST_MODEL" -echo "Loaded: BOOST_LLAMA_STACK_URL=${BOOST_LLAMA_STACK_URL:-}" +echo "Loaded: BOOST_OGX_URL=${BOOST_OGX_URL:-}" echo "Set: NODE_TLS_REJECT_UNAUTHORIZED=0 (for self-signed OpenShift route certs)" echo "Ready — launch the debugger in this shell."