diff --git a/.coveragerc b/.coveragerc
index d4925275f..8d062f488 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -5,7 +5,7 @@ omit =
*/llama_stack/templates/*
.venv/*
*/llama_stack/cli/scripts/*
- */llama_stack/ui/*
+ */llama_stack_ui/*
*/llama_stack/distribution/ui/*
*/llama_stack/strong_typing/*
*/llama_stack/env.py
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index f88402a7a..9c400a73f 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -22,7 +22,7 @@ updates:
prefix: chore(python-deps)
- package-ecosystem: npm
- directory: "/llama_stack/ui"
+ directory: "/llama_stack_ui"
schedule:
interval: "weekly"
day: "saturday"
diff --git a/.github/workflows/integration-auth-tests.yml b/.github/workflows/integration-auth-tests.yml
index 560ab4293..1ec06bc29 100644
--- a/.github/workflows/integration-auth-tests.yml
+++ b/.github/workflows/integration-auth-tests.yml
@@ -14,7 +14,7 @@ on:
paths:
- 'distributions/**'
- 'src/llama_stack/**'
- - '!src/llama_stack/ui/**'
+ - '!src/llama_stack_ui/**'
- 'tests/integration/**'
- 'uv.lock'
- 'pyproject.toml'
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 00c2fa96c..ba2ffc5fd 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -14,7 +14,7 @@ on:
types: [opened, synchronize, reopened]
paths:
- 'src/llama_stack/**'
- - '!src/llama_stack/ui/**'
+ - '!src/llama_stack_ui/**'
- 'tests/**'
- 'uv.lock'
- 'pyproject.toml'
diff --git a/.github/workflows/integration-vector-io-tests.yml b/.github/workflows/integration-vector-io-tests.yml
index 952141f3b..1962629c2 100644
--- a/.github/workflows/integration-vector-io-tests.yml
+++ b/.github/workflows/integration-vector-io-tests.yml
@@ -13,7 +13,7 @@ on:
- 'release-[0-9]+.[0-9]+.x'
paths:
- 'src/llama_stack/**'
- - '!src/llama_stack/ui/**'
+ - '!src/llama_stack_ui/**'
- 'tests/integration/vector_io/**'
- 'uv.lock'
- 'pyproject.toml'
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 1d2dbb671..a187cbd1c 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -43,14 +43,14 @@ jobs:
with:
node-version: '20'
cache: 'npm'
- cache-dependency-path: 'src/llama_stack/ui/'
+ cache-dependency-path: 'src/llama_stack_ui/'
- name: Set up uv
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
- name: Install npm dependencies
run: npm ci
- working-directory: src/llama_stack/ui
+ working-directory: src/llama_stack_ui
- name: Install pre-commit
run: python -m pip install pre-commit
diff --git a/.github/workflows/python-build-test.yml b/.github/workflows/python-build-test.yml
index 1f5c0aebf..c605a30c3 100644
--- a/.github/workflows/python-build-test.yml
+++ b/.github/workflows/python-build-test.yml
@@ -10,7 +10,7 @@ on:
branches:
- main
paths-ignore:
- - 'src/llama_stack/ui/**'
+ - 'src/llama_stack_ui/**'
jobs:
build:
diff --git a/.github/workflows/test-external.yml b/.github/workflows/test-external.yml
index d1d88c688..a99719718 100644
--- a/.github/workflows/test-external.yml
+++ b/.github/workflows/test-external.yml
@@ -9,7 +9,7 @@ on:
branches: [ main ]
paths:
- 'src/llama_stack/**'
- - '!src/llama_stack/ui/**'
+ - '!src/llama_stack_ui/**'
- 'tests/integration/**'
- 'uv.lock'
- 'pyproject.toml'
diff --git a/.github/workflows/ui-unit-tests.yml b/.github/workflows/ui-unit-tests.yml
index a2ae1c2c3..f5e4a5967 100644
--- a/.github/workflows/ui-unit-tests.yml
+++ b/.github/workflows/ui-unit-tests.yml
@@ -8,7 +8,7 @@ on:
pull_request:
branches: [ main ]
paths:
- - 'src/llama_stack/ui/**'
+ - 'src/llama_stack_ui/**'
- '.github/workflows/ui-unit-tests.yml' # This workflow
workflow_dispatch:
@@ -33,22 +33,22 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- cache-dependency-path: 'src/llama_stack/ui/package-lock.json'
+ cache-dependency-path: 'src/llama_stack_ui/package-lock.json'
- name: Install dependencies
- working-directory: src/llama_stack/ui
+ working-directory: src/llama_stack_ui
run: npm ci
- name: Run linting
- working-directory: src/llama_stack/ui
+ working-directory: src/llama_stack_ui
run: npm run lint
- name: Run format check
- working-directory: src/llama_stack/ui
+ working-directory: src/llama_stack_ui
run: npm run format:check
- name: Run unit tests
- working-directory: src/llama_stack/ui
+ working-directory: src/llama_stack_ui
env:
CI: true
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 92c0a6a19..52a8b0124 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -13,7 +13,7 @@ on:
- 'release-[0-9]+.[0-9]+.x'
paths:
- 'src/llama_stack/**'
- - '!src/llama_stack/ui/**'
+ - '!src/llama_stack_ui/**'
- 'tests/unit/**'
- 'uv.lock'
- 'pyproject.toml'
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ce0d79b21..42cd2f5ce 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -161,7 +161,7 @@ repos:
name: Format & Lint UI
entry: bash ./scripts/run-ui-linter.sh
language: system
- files: ^src/llama_stack/ui/.*\.(ts|tsx)$
+ files: ^src/llama_stack_ui/.*\.(ts|tsx)$
pass_filenames: false
require_serial: true
diff --git a/client-sdks/stainless/config-not-source-of-truth-yet.yml b/client-sdks/stainless/config-not-source-of-truth-yet.yml
new file mode 100644
index 000000000..6cd526c0f
--- /dev/null
+++ b/client-sdks/stainless/config-not-source-of-truth-yet.yml
@@ -0,0 +1,525 @@
+# yaml-language-server: $schema=https://app.stainlessapi.com/config-internal.schema.json
+
+organization:
+ # Name of your organization or company, used to determine the name of the client
+ # and headings.
+ name: llama-stack-client
+ docs: https://llama-stack.readthedocs.io/en/latest/
+ contact: llamastack@meta.com
+security:
+ - {}
+ - BearerAuth: []
+security_schemes:
+ BearerAuth:
+ type: http
+ scheme: bearer
+# `targets` define the output targets and their customization options, such as
+# whether to emit the Node SDK and what it's package name should be.
+targets:
+ node:
+ package_name: llama-stack-client
+ production_repo: llamastack/llama-stack-client-typescript
+ publish:
+ npm: false
+ python:
+ package_name: llama_stack_client
+ production_repo: llamastack/llama-stack-client-python
+ options:
+ use_uv: true
+ publish:
+ pypi: true
+ project_name: llama_stack_client
+ kotlin:
+ reverse_domain: com.llama_stack_client.api
+ production_repo: null
+ publish:
+ maven: false
+ go:
+ package_name: llama-stack-client
+ production_repo: llamastack/llama-stack-client-go
+ options:
+ enable_v2: true
+ back_compat_use_shared_package: false
+
+# `client_settings` define settings for the API client, such as extra constructor
+# arguments (used for authentication), retry behavior, idempotency, etc.
+client_settings:
+ default_env_prefix: LLAMA_STACK_CLIENT
+ opts:
+ api_key:
+ type: string
+ read_env: LLAMA_STACK_CLIENT_API_KEY
+ auth: { security_scheme: BearerAuth }
+ nullable: true
+
+# `environments` are a map of the name of the environment (e.g. "sandbox",
+# "production") to the corresponding url to use.
+environments:
+ production: http://any-hosted-llama-stack.com
+
+# `pagination` defines [pagination schemes] which provides a template to match
+# endpoints and generate next-page and auto-pagination helpers in the SDKs.
+pagination:
+ - name: datasets_iterrows
+ type: offset
+ request:
+ dataset_id:
+ type: string
+ start_index:
+ type: integer
+ x-stainless-pagination-property:
+ purpose: offset_count_param
+ limit:
+ type: integer
+ response:
+ data:
+ type: array
+ items:
+ type: object
+ next_index:
+ type: integer
+ x-stainless-pagination-property:
+ purpose: offset_count_start_field
+ - name: openai_cursor_page
+ type: cursor
+ request:
+ limit:
+ type: integer
+ after:
+ type: string
+ x-stainless-pagination-property:
+ purpose: next_cursor_param
+ response:
+ data:
+ type: array
+ items: {}
+ has_more:
+ type: boolean
+ last_id:
+ type: string
+ x-stainless-pagination-property:
+ purpose: next_cursor_field
+# `resources` define the structure and organziation for your API, such as how
+# methods and models are grouped together and accessed. See the [configuration
+# guide] for more information.
+#
+# [configuration guide]:
+# https://app.stainlessapi.com/docs/guides/configure#resources
+resources:
+ $shared:
+ models:
+ interleaved_content_item: InterleavedContentItem
+ interleaved_content: InterleavedContent
+ param_type: ParamType
+ safety_violation: SafetyViolation
+ sampling_params: SamplingParams
+ scoring_result: ScoringResult
+ system_message: SystemMessage
+ query_result: RAGQueryResult
+ document: RAGDocument
+ query_config: RAGQueryConfig
+ toolgroups:
+ models:
+ tool_group: ToolGroup
+ list_tool_groups_response: ListToolGroupsResponse
+ methods:
+ register: post /v1/toolgroups
+ get: get /v1/toolgroups/{toolgroup_id}
+ list: get /v1/toolgroups
+ unregister: delete /v1/toolgroups/{toolgroup_id}
+ tools:
+ methods:
+ get: get /v1/tools/{tool_name}
+ list:
+ endpoint: get /v1/tools
+ paginated: false
+
+ tool_runtime:
+ models:
+ tool_def: ToolDef
+ tool_invocation_result: ToolInvocationResult
+ methods:
+ list_tools:
+ endpoint: get /v1/tool-runtime/list-tools
+ paginated: false
+ invoke_tool: post /v1/tool-runtime/invoke
+ subresources:
+ rag_tool:
+ methods:
+ insert: post /v1/tool-runtime/rag-tool/insert
+ query: post /v1/tool-runtime/rag-tool/query
+
+ responses:
+ models:
+ response_object_stream: OpenAIResponseObjectStream
+ response_object: OpenAIResponseObject
+ methods:
+ create:
+ type: http
+ endpoint: post /v1/responses
+ streaming:
+ stream_event_model: responses.response_object_stream
+ param_discriminator: stream
+ retrieve: get /v1/responses/{response_id}
+ list:
+ type: http
+ endpoint: get /v1/responses
+ delete:
+ type: http
+ endpoint: delete /v1/responses/{response_id}
+ subresources:
+ input_items:
+ methods:
+ list:
+ type: http
+ endpoint: get /v1/responses/{response_id}/input_items
+
+ prompts:
+ models:
+ prompt: Prompt
+ list_prompts_response: ListPromptsResponse
+ methods:
+ create: post /v1/prompts
+ list:
+ endpoint: get /v1/prompts
+ paginated: false
+ retrieve: get /v1/prompts/{prompt_id}
+ update: post /v1/prompts/{prompt_id}
+ delete: delete /v1/prompts/{prompt_id}
+ set_default_version: post /v1/prompts/{prompt_id}/set-default-version
+ subresources:
+ versions:
+ methods:
+ list:
+ endpoint: get /v1/prompts/{prompt_id}/versions
+ paginated: false
+
+ conversations:
+ models:
+ conversation_object: Conversation
+ methods:
+ create:
+ type: http
+ endpoint: post /v1/conversations
+ retrieve: get /v1/conversations/{conversation_id}
+ update:
+ type: http
+ endpoint: post /v1/conversations/{conversation_id}
+ delete:
+ type: http
+ endpoint: delete /v1/conversations/{conversation_id}
+ subresources:
+ items:
+ methods:
+ get:
+ type: http
+ endpoint: get /v1/conversations/{conversation_id}/items/{item_id}
+ list:
+ type: http
+ endpoint: get /v1/conversations/{conversation_id}/items
+ create:
+ type: http
+ endpoint: post /v1/conversations/{conversation_id}/items
+
+ inspect:
+ models:
+ healthInfo: HealthInfo
+ providerInfo: ProviderInfo
+ routeInfo: RouteInfo
+ versionInfo: VersionInfo
+ methods:
+ health: get /v1/health
+ version: get /v1/version
+
+ embeddings:
+ models:
+ create_embeddings_response: OpenAIEmbeddingsResponse
+ methods:
+ create: post /v1/embeddings
+
+ chat:
+ models:
+ chat_completion_chunk: OpenAIChatCompletionChunk
+ subresources:
+ completions:
+ methods:
+ create:
+ type: http
+ endpoint: post /v1/chat/completions
+ streaming:
+ stream_event_model: chat.chat_completion_chunk
+ param_discriminator: stream
+ list:
+ type: http
+ endpoint: get /v1/chat/completions
+ retrieve:
+ type: http
+ endpoint: get /v1/chat/completions/{completion_id}
+ completions:
+ methods:
+ create:
+ type: http
+ endpoint: post /v1/completions
+ streaming:
+ param_discriminator: stream
+
+ vector_io:
+ models:
+ queryChunksResponse: QueryChunksResponse
+ methods:
+ insert: post /v1/vector-io/insert
+ query: post /v1/vector-io/query
+
+ vector_stores:
+ models:
+ vector_store: VectorStoreObject
+ list_vector_stores_response: VectorStoreListResponse
+ vector_store_delete_response: VectorStoreDeleteResponse
+ vector_store_search_response: VectorStoreSearchResponsePage
+ methods:
+ create: post /v1/vector_stores
+ list:
+ endpoint: get /v1/vector_stores
+ retrieve: get /v1/vector_stores/{vector_store_id}
+ update: post /v1/vector_stores/{vector_store_id}
+ delete: delete /v1/vector_stores/{vector_store_id}
+ search: post /v1/vector_stores/{vector_store_id}/search
+ subresources:
+ files:
+ models:
+ vector_store_file: VectorStoreFileObject
+ methods:
+ list: get /v1/vector_stores/{vector_store_id}/files
+ retrieve: get /v1/vector_stores/{vector_store_id}/files/{file_id}
+ update: post /v1/vector_stores/{vector_store_id}/files/{file_id}
+ delete: delete /v1/vector_stores/{vector_store_id}/files/{file_id}
+ create: post /v1/vector_stores/{vector_store_id}/files
+ content: get /v1/vector_stores/{vector_store_id}/files/{file_id}/content
+ file_batches:
+ models:
+ vector_store_file_batches: VectorStoreFileBatchObject
+ list_vector_store_files_in_batch_response: VectorStoreFilesListInBatchResponse
+ methods:
+ create: post /v1/vector_stores/{vector_store_id}/file_batches
+ retrieve: get /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}
+ list_files: get /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files
+ cancel: post /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel
+
+ models:
+ models:
+ model: OpenAIModel
+ list_models_response: OpenAIListModelsResponse
+ methods:
+ list:
+ endpoint: get /v1/models
+ paginated: false
+ retrieve: get /v1/models/{model_id}
+ register: post /v1/models
+ unregister: delete /v1/models/{model_id}
+ subresources:
+ openai:
+ methods:
+ list:
+ endpoint: get /v1/models
+ paginated: false
+
+ providers:
+ models:
+ list_providers_response: ListProvidersResponse
+ methods:
+ list:
+ endpoint: get /v1/providers
+ paginated: false
+ retrieve: get /v1/providers/{provider_id}
+
+ routes:
+ models:
+ list_routes_response: ListRoutesResponse
+ methods:
+ list:
+ endpoint: get /v1/inspect/routes
+ paginated: false
+
+
+ moderations:
+ models:
+ create_response: ModerationObject
+ methods:
+ create: post /v1/moderations
+
+
+ safety:
+ models:
+ run_shield_response: RunShieldResponse
+ methods:
+ run_shield: post /v1/safety/run-shield
+
+
+ shields:
+ models:
+ shield: Shield
+ list_shields_response: ListShieldsResponse
+ methods:
+ retrieve: get /v1/shields/{identifier}
+ list:
+ endpoint: get /v1/shields
+ paginated: false
+ register: post /v1/shields
+ delete: delete /v1/shields/{identifier}
+
+ scoring:
+ methods:
+ score: post /v1/scoring/score
+ score_batch: post /v1/scoring/score-batch
+ scoring_functions:
+ methods:
+ retrieve: get /v1/scoring-functions/{scoring_fn_id}
+ list:
+ endpoint: get /v1/scoring-functions
+ paginated: false
+ register: post /v1/scoring-functions
+ models:
+ scoring_fn: ScoringFn
+ scoring_fn_params: ScoringFnParams
+ list_scoring_functions_response: ListScoringFunctionsResponse
+
+ files:
+ methods:
+ create: post /v1/files
+ list: get /v1/files
+ retrieve: get /v1/files/{file_id}
+ delete: delete /v1/files/{file_id}
+ content: get /v1/files/{file_id}/content
+ models:
+ file: OpenAIFileObject
+ list_files_response: ListOpenAIFileResponse
+ delete_file_response: OpenAIFileDeleteResponse
+
+ alpha:
+ subresources:
+ inference:
+ methods:
+ rerank: post /v1alpha/inference/rerank
+
+ post_training:
+ models:
+ algorithm_config: AlgorithmConfig
+ post_training_job: PostTrainingJob
+ list_post_training_jobs_response: ListPostTrainingJobsResponse
+ methods:
+ preference_optimize: post /v1alpha/post-training/preference-optimize
+ supervised_fine_tune: post /v1alpha/post-training/supervised-fine-tune
+ subresources:
+ job:
+ methods:
+ artifacts: get /v1alpha/post-training/job/artifacts
+ cancel: post /v1alpha/post-training/job/cancel
+ status: get /v1alpha/post-training/job/status
+ list:
+ endpoint: get /v1alpha/post-training/jobs
+ paginated: false
+
+ benchmarks:
+ methods:
+ retrieve: get /v1alpha/eval/benchmarks/{benchmark_id}
+ list:
+ endpoint: get /v1alpha/eval/benchmarks
+ paginated: false
+ register: post /v1alpha/eval/benchmarks
+ models:
+ benchmark: Benchmark
+ list_benchmarks_response: ListBenchmarksResponse
+
+ eval:
+ methods:
+ evaluate_rows: post /v1alpha/eval/benchmarks/{benchmark_id}/evaluations
+ run_eval: post /v1alpha/eval/benchmarks/{benchmark_id}/jobs
+ evaluate_rows_alpha: post /v1alpha/eval/benchmarks/{benchmark_id}/evaluations
+ run_eval_alpha: post /v1alpha/eval/benchmarks/{benchmark_id}/jobs
+
+ subresources:
+ jobs:
+ methods:
+ cancel: delete /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}
+ status: get /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}
+ retrieve: get /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}/result
+ models:
+ evaluate_response: EvaluateResponse
+ benchmark_config: BenchmarkConfig
+ job: Job
+
+ beta:
+ subresources:
+ datasets:
+ models:
+ list_datasets_response: ListDatasetsResponse
+ methods:
+ register: post /v1beta/datasets
+ retrieve: get /v1beta/datasets/{dataset_id}
+ list:
+ endpoint: get /v1beta/datasets
+ paginated: false
+ unregister: delete /v1beta/datasets/{dataset_id}
+ iterrows: get /v1beta/datasetio/iterrows/{dataset_id}
+ appendrows: post /v1beta/datasetio/append-rows/{dataset_id}
+
+
+settings:
+ license: MIT
+ unwrap_response_fields: [ data ]
+
+openapi:
+ transformations:
+ - command: mergeObject
+ reason: Better return_type using enum
+ args:
+ target:
+ - '$.components.schemas'
+ object:
+ ReturnType:
+ additionalProperties: false
+ properties:
+ type:
+ enum:
+ - string
+ - number
+ - boolean
+ - array
+ - object
+ - json
+ - union
+ - chat_completion_input
+ - completion_input
+ - agent_turn_input
+ required:
+ - type
+ type: object
+ - command: replaceProperties
+ reason: Replace return type properties with better model (see above)
+ args:
+ filter:
+ only:
+ - '$.components.schemas.ScoringFn.properties.return_type'
+ - '$.components.schemas.RegisterScoringFunctionRequest.properties.return_type'
+ value:
+ $ref: '#/components/schemas/ReturnType'
+ - command: oneOfToAnyOf
+ reason: Prism (mock server) doesn't like one of our requests as it technically matches multiple variants
+
+# `readme` is used to configure the code snippets that will be rendered in the
+# README.md of various SDKs. In particular, you can change the `headline`
+# snippet's endpoint and the arguments to call it with.
+readme:
+ example_requests:
+ default:
+ type: request
+ endpoint: post /v1/chat/completions
+ params: &ref_0 {}
+ headline:
+ type: request
+ endpoint: post /v1/models
+ params: *ref_0
+ pagination:
+ type: request
+ endpoint: post /v1/chat/completions
+ params: {}
diff --git a/client-sdks/stainless/openapi.yml b/client-sdks/stainless/openapi.yml
index c14661a5a..5d9917bfd 100644
--- a/client-sdks/stainless/openapi.yml
+++ b/client-sdks/stainless/openapi.yml
@@ -2055,69 +2055,6 @@ paths:
schema:
$ref: '#/components/schemas/URL'
deprecated: false
- /v1/tool-runtime/rag-tool/insert:
- post:
- responses:
- '200':
- description: OK
- '400':
- $ref: '#/components/responses/BadRequest400'
- '429':
- $ref: >-
- #/components/responses/TooManyRequests429
- '500':
- $ref: >-
- #/components/responses/InternalServerError500
- default:
- $ref: '#/components/responses/DefaultError'
- tags:
- - ToolRuntime
- summary: >-
- Index documents so they can be used by the RAG system.
- description: >-
- Index documents so they can be used by the RAG system.
- parameters: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InsertRequest'
- required: true
- deprecated: false
- /v1/tool-runtime/rag-tool/query:
- post:
- responses:
- '200':
- description: >-
- RAGQueryResult containing the retrieved content and metadata
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/RAGQueryResult'
- '400':
- $ref: '#/components/responses/BadRequest400'
- '429':
- $ref: >-
- #/components/responses/TooManyRequests429
- '500':
- $ref: >-
- #/components/responses/InternalServerError500
- default:
- $ref: '#/components/responses/DefaultError'
- tags:
- - ToolRuntime
- summary: >-
- Query the RAG system for context; typically invoked by the agent.
- description: >-
- Query the RAG system for context; typically invoked by the agent.
- parameters: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/QueryRequest'
- required: true
- deprecated: false
/v1/toolgroups:
get:
responses:
@@ -9633,274 +9570,6 @@ components:
title: ListToolDefsResponse
description: >-
Response containing a list of tool definitions.
- RAGDocument:
- type: object
- properties:
- document_id:
- type: string
- description: The unique identifier for the document.
- content:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/InterleavedContentItem'
- - type: array
- items:
- $ref: '#/components/schemas/InterleavedContentItem'
- - $ref: '#/components/schemas/URL'
- description: The content of the document.
- mime_type:
- type: string
- description: The MIME type of the document.
- metadata:
- type: object
- additionalProperties:
- oneOf:
- - type: 'null'
- - type: boolean
- - type: number
- - type: string
- - type: array
- - type: object
- description: Additional metadata for the document.
- additionalProperties: false
- required:
- - document_id
- - content
- - metadata
- title: RAGDocument
- description: >-
- A document to be used for document ingestion in the RAG Tool.
- InsertRequest:
- type: object
- properties:
- documents:
- type: array
- items:
- $ref: '#/components/schemas/RAGDocument'
- description: >-
- List of documents to index in the RAG system
- vector_store_id:
- type: string
- description: >-
- ID of the vector database to store the document embeddings
- chunk_size_in_tokens:
- type: integer
- description: >-
- (Optional) Size in tokens for document chunking during indexing
- additionalProperties: false
- required:
- - documents
- - vector_store_id
- - chunk_size_in_tokens
- title: InsertRequest
- DefaultRAGQueryGeneratorConfig:
- type: object
- properties:
- type:
- type: string
- const: default
- default: default
- description: >-
- Type of query generator, always 'default'
- separator:
- type: string
- default: ' '
- description: >-
- String separator used to join query terms
- additionalProperties: false
- required:
- - type
- - separator
- title: DefaultRAGQueryGeneratorConfig
- description: >-
- Configuration for the default RAG query generator.
- LLMRAGQueryGeneratorConfig:
- type: object
- properties:
- type:
- type: string
- const: llm
- default: llm
- description: Type of query generator, always 'llm'
- model:
- type: string
- description: >-
- Name of the language model to use for query generation
- template:
- type: string
- description: >-
- Template string for formatting the query generation prompt
- additionalProperties: false
- required:
- - type
- - model
- - template
- title: LLMRAGQueryGeneratorConfig
- description: >-
- Configuration for the LLM-based RAG query generator.
- RAGQueryConfig:
- type: object
- properties:
- query_generator_config:
- oneOf:
- - $ref: '#/components/schemas/DefaultRAGQueryGeneratorConfig'
- - $ref: '#/components/schemas/LLMRAGQueryGeneratorConfig'
- discriminator:
- propertyName: type
- mapping:
- default: '#/components/schemas/DefaultRAGQueryGeneratorConfig'
- llm: '#/components/schemas/LLMRAGQueryGeneratorConfig'
- description: Configuration for the query generator.
- max_tokens_in_context:
- type: integer
- default: 4096
- description: Maximum number of tokens in the context.
- max_chunks:
- type: integer
- default: 5
- description: Maximum number of chunks to retrieve.
- chunk_template:
- type: string
- default: >
- Result {index}
-
- Content: {chunk.content}
-
- Metadata: {metadata}
- description: >-
- Template for formatting each retrieved chunk in the context. Available
- placeholders: {index} (1-based chunk ordinal), {chunk.content} (chunk
- content string), {metadata} (chunk metadata dict). Default: "Result {index}\nContent:
- {chunk.content}\nMetadata: {metadata}\n"
- mode:
- $ref: '#/components/schemas/RAGSearchMode'
- default: vector
- description: >-
- Search mode for retrieval—either "vector", "keyword", or "hybrid". Default
- "vector".
- ranker:
- $ref: '#/components/schemas/Ranker'
- description: >-
- Configuration for the ranker to use in hybrid search. Defaults to RRF
- ranker.
- additionalProperties: false
- required:
- - query_generator_config
- - max_tokens_in_context
- - max_chunks
- - chunk_template
- title: RAGQueryConfig
- description: >-
- Configuration for the RAG query generation.
- RAGSearchMode:
- type: string
- enum:
- - vector
- - keyword
- - hybrid
- title: RAGSearchMode
- description: >-
- Search modes for RAG query retrieval: - VECTOR: Uses vector similarity search
- for semantic matching - KEYWORD: Uses keyword-based search for exact matching
- - HYBRID: Combines both vector and keyword search for better results
- RRFRanker:
- type: object
- properties:
- type:
- type: string
- const: rrf
- default: rrf
- description: The type of ranker, always "rrf"
- impact_factor:
- type: number
- default: 60.0
- description: >-
- The impact factor for RRF scoring. Higher values give more weight to higher-ranked
- results. Must be greater than 0
- additionalProperties: false
- required:
- - type
- - impact_factor
- title: RRFRanker
- description: >-
- Reciprocal Rank Fusion (RRF) ranker configuration.
- Ranker:
- oneOf:
- - $ref: '#/components/schemas/RRFRanker'
- - $ref: '#/components/schemas/WeightedRanker'
- discriminator:
- propertyName: type
- mapping:
- rrf: '#/components/schemas/RRFRanker'
- weighted: '#/components/schemas/WeightedRanker'
- WeightedRanker:
- type: object
- properties:
- type:
- type: string
- const: weighted
- default: weighted
- description: The type of ranker, always "weighted"
- alpha:
- type: number
- default: 0.5
- description: >-
- Weight factor between 0 and 1. 0 means only use keyword scores, 1 means
- only use vector scores, values in between blend both scores.
- additionalProperties: false
- required:
- - type
- - alpha
- title: WeightedRanker
- description: >-
- Weighted ranker configuration that combines vector and keyword scores.
- QueryRequest:
- type: object
- properties:
- content:
- $ref: '#/components/schemas/InterleavedContent'
- description: >-
- The query content to search for in the indexed documents
- vector_store_ids:
- type: array
- items:
- type: string
- description: >-
- List of vector database IDs to search within
- query_config:
- $ref: '#/components/schemas/RAGQueryConfig'
- description: >-
- (Optional) Configuration parameters for the query operation
- additionalProperties: false
- required:
- - content
- - vector_store_ids
- title: QueryRequest
- RAGQueryResult:
- type: object
- properties:
- content:
- $ref: '#/components/schemas/InterleavedContent'
- description: >-
- (Optional) The retrieved content from the query
- metadata:
- type: object
- additionalProperties:
- oneOf:
- - type: 'null'
- - type: boolean
- - type: number
- - type: string
- - type: array
- - type: object
- description: >-
- Additional metadata about the query result
- additionalProperties: false
- required:
- - metadata
- title: RAGQueryResult
- description: >-
- Result of a RAG query containing retrieved content and metadata.
ToolGroup:
type: object
properties:
diff --git a/docs/docs/distributions/k8s/ui-k8s.yaml.template b/docs/docs/distributions/k8s/ui-k8s.yaml.template
index a6859cb86..21de94d12 100644
--- a/docs/docs/distributions/k8s/ui-k8s.yaml.template
+++ b/docs/docs/distributions/k8s/ui-k8s.yaml.template
@@ -44,7 +44,7 @@ spec:
# Navigate to the UI directory
echo "Navigating to UI directory..."
- cd /app/llama_stack/ui
+ cd /app/llama_stack_ui
# Check if package.json exists
if [ ! -f "package.json" ]; then
diff --git a/docs/openapi_generator/pyopenapi/operations.py b/docs/openapi_generator/pyopenapi/operations.py
index 2970d7e53..a1c95c7a7 100644
--- a/docs/openapi_generator/pyopenapi/operations.py
+++ b/docs/openapi_generator/pyopenapi/operations.py
@@ -170,7 +170,7 @@ def _get_endpoint_functions(
for webmethod in webmethods:
print(f"Processing {colored(func_name, 'white')}...")
operation_name = func_name
-
+
if webmethod.method == "GET":
prefix = "get"
elif webmethod.method == "DELETE":
@@ -196,16 +196,10 @@ def _get_endpoint_functions(
def _get_defining_class(member_fn: str, derived_cls: type) -> type:
"Find the class in which a member function is first defined in a class inheritance hierarchy."
- # This import must be dynamic here
- from llama_stack.apis.tools import RAGToolRuntime, ToolRuntime
-
# iterate in reverse member resolution order to find most specific class first
for cls in reversed(inspect.getmro(derived_cls)):
for name, _ in inspect.getmembers(cls, inspect.isfunction):
if name == member_fn:
- # HACK ALERT
- if cls == RAGToolRuntime:
- return ToolRuntime
return cls
raise ValidationError(
diff --git a/docs/static/llama-stack-spec.html b/docs/static/llama-stack-spec.html
deleted file mode 100644
index 514bff145..000000000
--- a/docs/static/llama-stack-spec.html
+++ /dev/null
@@ -1,13724 +0,0 @@
-
-
-
-
-
-
- OpenAPI specification
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/static/llama-stack-spec.yaml b/docs/static/llama-stack-spec.yaml
index ea6b07c0e..a705f499a 100644
--- a/docs/static/llama-stack-spec.yaml
+++ b/docs/static/llama-stack-spec.yaml
@@ -2052,69 +2052,6 @@ paths:
schema:
$ref: '#/components/schemas/URL'
deprecated: false
- /v1/tool-runtime/rag-tool/insert:
- post:
- responses:
- '200':
- description: OK
- '400':
- $ref: '#/components/responses/BadRequest400'
- '429':
- $ref: >-
- #/components/responses/TooManyRequests429
- '500':
- $ref: >-
- #/components/responses/InternalServerError500
- default:
- $ref: '#/components/responses/DefaultError'
- tags:
- - ToolRuntime
- summary: >-
- Index documents so they can be used by the RAG system.
- description: >-
- Index documents so they can be used by the RAG system.
- parameters: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InsertRequest'
- required: true
- deprecated: false
- /v1/tool-runtime/rag-tool/query:
- post:
- responses:
- '200':
- description: >-
- RAGQueryResult containing the retrieved content and metadata
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/RAGQueryResult'
- '400':
- $ref: '#/components/responses/BadRequest400'
- '429':
- $ref: >-
- #/components/responses/TooManyRequests429
- '500':
- $ref: >-
- #/components/responses/InternalServerError500
- default:
- $ref: '#/components/responses/DefaultError'
- tags:
- - ToolRuntime
- summary: >-
- Query the RAG system for context; typically invoked by the agent.
- description: >-
- Query the RAG system for context; typically invoked by the agent.
- parameters: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/QueryRequest'
- required: true
- deprecated: false
/v1/toolgroups:
get:
responses:
@@ -8917,274 +8854,6 @@ components:
title: ListToolDefsResponse
description: >-
Response containing a list of tool definitions.
- RAGDocument:
- type: object
- properties:
- document_id:
- type: string
- description: The unique identifier for the document.
- content:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/InterleavedContentItem'
- - type: array
- items:
- $ref: '#/components/schemas/InterleavedContentItem'
- - $ref: '#/components/schemas/URL'
- description: The content of the document.
- mime_type:
- type: string
- description: The MIME type of the document.
- metadata:
- type: object
- additionalProperties:
- oneOf:
- - type: 'null'
- - type: boolean
- - type: number
- - type: string
- - type: array
- - type: object
- description: Additional metadata for the document.
- additionalProperties: false
- required:
- - document_id
- - content
- - metadata
- title: RAGDocument
- description: >-
- A document to be used for document ingestion in the RAG Tool.
- InsertRequest:
- type: object
- properties:
- documents:
- type: array
- items:
- $ref: '#/components/schemas/RAGDocument'
- description: >-
- List of documents to index in the RAG system
- vector_store_id:
- type: string
- description: >-
- ID of the vector database to store the document embeddings
- chunk_size_in_tokens:
- type: integer
- description: >-
- (Optional) Size in tokens for document chunking during indexing
- additionalProperties: false
- required:
- - documents
- - vector_store_id
- - chunk_size_in_tokens
- title: InsertRequest
- DefaultRAGQueryGeneratorConfig:
- type: object
- properties:
- type:
- type: string
- const: default
- default: default
- description: >-
- Type of query generator, always 'default'
- separator:
- type: string
- default: ' '
- description: >-
- String separator used to join query terms
- additionalProperties: false
- required:
- - type
- - separator
- title: DefaultRAGQueryGeneratorConfig
- description: >-
- Configuration for the default RAG query generator.
- LLMRAGQueryGeneratorConfig:
- type: object
- properties:
- type:
- type: string
- const: llm
- default: llm
- description: Type of query generator, always 'llm'
- model:
- type: string
- description: >-
- Name of the language model to use for query generation
- template:
- type: string
- description: >-
- Template string for formatting the query generation prompt
- additionalProperties: false
- required:
- - type
- - model
- - template
- title: LLMRAGQueryGeneratorConfig
- description: >-
- Configuration for the LLM-based RAG query generator.
- RAGQueryConfig:
- type: object
- properties:
- query_generator_config:
- oneOf:
- - $ref: '#/components/schemas/DefaultRAGQueryGeneratorConfig'
- - $ref: '#/components/schemas/LLMRAGQueryGeneratorConfig'
- discriminator:
- propertyName: type
- mapping:
- default: '#/components/schemas/DefaultRAGQueryGeneratorConfig'
- llm: '#/components/schemas/LLMRAGQueryGeneratorConfig'
- description: Configuration for the query generator.
- max_tokens_in_context:
- type: integer
- default: 4096
- description: Maximum number of tokens in the context.
- max_chunks:
- type: integer
- default: 5
- description: Maximum number of chunks to retrieve.
- chunk_template:
- type: string
- default: >
- Result {index}
-
- Content: {chunk.content}
-
- Metadata: {metadata}
- description: >-
- Template for formatting each retrieved chunk in the context. Available
- placeholders: {index} (1-based chunk ordinal), {chunk.content} (chunk
- content string), {metadata} (chunk metadata dict). Default: "Result {index}\nContent:
- {chunk.content}\nMetadata: {metadata}\n"
- mode:
- $ref: '#/components/schemas/RAGSearchMode'
- default: vector
- description: >-
- Search mode for retrieval—either "vector", "keyword", or "hybrid". Default
- "vector".
- ranker:
- $ref: '#/components/schemas/Ranker'
- description: >-
- Configuration for the ranker to use in hybrid search. Defaults to RRF
- ranker.
- additionalProperties: false
- required:
- - query_generator_config
- - max_tokens_in_context
- - max_chunks
- - chunk_template
- title: RAGQueryConfig
- description: >-
- Configuration for the RAG query generation.
- RAGSearchMode:
- type: string
- enum:
- - vector
- - keyword
- - hybrid
- title: RAGSearchMode
- description: >-
- Search modes for RAG query retrieval: - VECTOR: Uses vector similarity search
- for semantic matching - KEYWORD: Uses keyword-based search for exact matching
- - HYBRID: Combines both vector and keyword search for better results
- RRFRanker:
- type: object
- properties:
- type:
- type: string
- const: rrf
- default: rrf
- description: The type of ranker, always "rrf"
- impact_factor:
- type: number
- default: 60.0
- description: >-
- The impact factor for RRF scoring. Higher values give more weight to higher-ranked
- results. Must be greater than 0
- additionalProperties: false
- required:
- - type
- - impact_factor
- title: RRFRanker
- description: >-
- Reciprocal Rank Fusion (RRF) ranker configuration.
- Ranker:
- oneOf:
- - $ref: '#/components/schemas/RRFRanker'
- - $ref: '#/components/schemas/WeightedRanker'
- discriminator:
- propertyName: type
- mapping:
- rrf: '#/components/schemas/RRFRanker'
- weighted: '#/components/schemas/WeightedRanker'
- WeightedRanker:
- type: object
- properties:
- type:
- type: string
- const: weighted
- default: weighted
- description: The type of ranker, always "weighted"
- alpha:
- type: number
- default: 0.5
- description: >-
- Weight factor between 0 and 1. 0 means only use keyword scores, 1 means
- only use vector scores, values in between blend both scores.
- additionalProperties: false
- required:
- - type
- - alpha
- title: WeightedRanker
- description: >-
- Weighted ranker configuration that combines vector and keyword scores.
- QueryRequest:
- type: object
- properties:
- content:
- $ref: '#/components/schemas/InterleavedContent'
- description: >-
- The query content to search for in the indexed documents
- vector_store_ids:
- type: array
- items:
- type: string
- description: >-
- List of vector database IDs to search within
- query_config:
- $ref: '#/components/schemas/RAGQueryConfig'
- description: >-
- (Optional) Configuration parameters for the query operation
- additionalProperties: false
- required:
- - content
- - vector_store_ids
- title: QueryRequest
- RAGQueryResult:
- type: object
- properties:
- content:
- $ref: '#/components/schemas/InterleavedContent'
- description: >-
- (Optional) The retrieved content from the query
- metadata:
- type: object
- additionalProperties:
- oneOf:
- - type: 'null'
- - type: boolean
- - type: number
- - type: string
- - type: array
- - type: object
- description: >-
- Additional metadata about the query result
- additionalProperties: false
- required:
- - metadata
- title: RAGQueryResult
- description: >-
- Result of a RAG query containing retrieved content and metadata.
ToolGroup:
type: object
properties:
diff --git a/docs/static/stainless-llama-stack-spec.yaml b/docs/static/stainless-llama-stack-spec.yaml
index c14661a5a..5d9917bfd 100644
--- a/docs/static/stainless-llama-stack-spec.yaml
+++ b/docs/static/stainless-llama-stack-spec.yaml
@@ -2055,69 +2055,6 @@ paths:
schema:
$ref: '#/components/schemas/URL'
deprecated: false
- /v1/tool-runtime/rag-tool/insert:
- post:
- responses:
- '200':
- description: OK
- '400':
- $ref: '#/components/responses/BadRequest400'
- '429':
- $ref: >-
- #/components/responses/TooManyRequests429
- '500':
- $ref: >-
- #/components/responses/InternalServerError500
- default:
- $ref: '#/components/responses/DefaultError'
- tags:
- - ToolRuntime
- summary: >-
- Index documents so they can be used by the RAG system.
- description: >-
- Index documents so they can be used by the RAG system.
- parameters: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InsertRequest'
- required: true
- deprecated: false
- /v1/tool-runtime/rag-tool/query:
- post:
- responses:
- '200':
- description: >-
- RAGQueryResult containing the retrieved content and metadata
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/RAGQueryResult'
- '400':
- $ref: '#/components/responses/BadRequest400'
- '429':
- $ref: >-
- #/components/responses/TooManyRequests429
- '500':
- $ref: >-
- #/components/responses/InternalServerError500
- default:
- $ref: '#/components/responses/DefaultError'
- tags:
- - ToolRuntime
- summary: >-
- Query the RAG system for context; typically invoked by the agent.
- description: >-
- Query the RAG system for context; typically invoked by the agent.
- parameters: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/QueryRequest'
- required: true
- deprecated: false
/v1/toolgroups:
get:
responses:
@@ -9633,274 +9570,6 @@ components:
title: ListToolDefsResponse
description: >-
Response containing a list of tool definitions.
- RAGDocument:
- type: object
- properties:
- document_id:
- type: string
- description: The unique identifier for the document.
- content:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/InterleavedContentItem'
- - type: array
- items:
- $ref: '#/components/schemas/InterleavedContentItem'
- - $ref: '#/components/schemas/URL'
- description: The content of the document.
- mime_type:
- type: string
- description: The MIME type of the document.
- metadata:
- type: object
- additionalProperties:
- oneOf:
- - type: 'null'
- - type: boolean
- - type: number
- - type: string
- - type: array
- - type: object
- description: Additional metadata for the document.
- additionalProperties: false
- required:
- - document_id
- - content
- - metadata
- title: RAGDocument
- description: >-
- A document to be used for document ingestion in the RAG Tool.
- InsertRequest:
- type: object
- properties:
- documents:
- type: array
- items:
- $ref: '#/components/schemas/RAGDocument'
- description: >-
- List of documents to index in the RAG system
- vector_store_id:
- type: string
- description: >-
- ID of the vector database to store the document embeddings
- chunk_size_in_tokens:
- type: integer
- description: >-
- (Optional) Size in tokens for document chunking during indexing
- additionalProperties: false
- required:
- - documents
- - vector_store_id
- - chunk_size_in_tokens
- title: InsertRequest
- DefaultRAGQueryGeneratorConfig:
- type: object
- properties:
- type:
- type: string
- const: default
- default: default
- description: >-
- Type of query generator, always 'default'
- separator:
- type: string
- default: ' '
- description: >-
- String separator used to join query terms
- additionalProperties: false
- required:
- - type
- - separator
- title: DefaultRAGQueryGeneratorConfig
- description: >-
- Configuration for the default RAG query generator.
- LLMRAGQueryGeneratorConfig:
- type: object
- properties:
- type:
- type: string
- const: llm
- default: llm
- description: Type of query generator, always 'llm'
- model:
- type: string
- description: >-
- Name of the language model to use for query generation
- template:
- type: string
- description: >-
- Template string for formatting the query generation prompt
- additionalProperties: false
- required:
- - type
- - model
- - template
- title: LLMRAGQueryGeneratorConfig
- description: >-
- Configuration for the LLM-based RAG query generator.
- RAGQueryConfig:
- type: object
- properties:
- query_generator_config:
- oneOf:
- - $ref: '#/components/schemas/DefaultRAGQueryGeneratorConfig'
- - $ref: '#/components/schemas/LLMRAGQueryGeneratorConfig'
- discriminator:
- propertyName: type
- mapping:
- default: '#/components/schemas/DefaultRAGQueryGeneratorConfig'
- llm: '#/components/schemas/LLMRAGQueryGeneratorConfig'
- description: Configuration for the query generator.
- max_tokens_in_context:
- type: integer
- default: 4096
- description: Maximum number of tokens in the context.
- max_chunks:
- type: integer
- default: 5
- description: Maximum number of chunks to retrieve.
- chunk_template:
- type: string
- default: >
- Result {index}
-
- Content: {chunk.content}
-
- Metadata: {metadata}
- description: >-
- Template for formatting each retrieved chunk in the context. Available
- placeholders: {index} (1-based chunk ordinal), {chunk.content} (chunk
- content string), {metadata} (chunk metadata dict). Default: "Result {index}\nContent:
- {chunk.content}\nMetadata: {metadata}\n"
- mode:
- $ref: '#/components/schemas/RAGSearchMode'
- default: vector
- description: >-
- Search mode for retrieval—either "vector", "keyword", or "hybrid". Default
- "vector".
- ranker:
- $ref: '#/components/schemas/Ranker'
- description: >-
- Configuration for the ranker to use in hybrid search. Defaults to RRF
- ranker.
- additionalProperties: false
- required:
- - query_generator_config
- - max_tokens_in_context
- - max_chunks
- - chunk_template
- title: RAGQueryConfig
- description: >-
- Configuration for the RAG query generation.
- RAGSearchMode:
- type: string
- enum:
- - vector
- - keyword
- - hybrid
- title: RAGSearchMode
- description: >-
- Search modes for RAG query retrieval: - VECTOR: Uses vector similarity search
- for semantic matching - KEYWORD: Uses keyword-based search for exact matching
- - HYBRID: Combines both vector and keyword search for better results
- RRFRanker:
- type: object
- properties:
- type:
- type: string
- const: rrf
- default: rrf
- description: The type of ranker, always "rrf"
- impact_factor:
- type: number
- default: 60.0
- description: >-
- The impact factor for RRF scoring. Higher values give more weight to higher-ranked
- results. Must be greater than 0
- additionalProperties: false
- required:
- - type
- - impact_factor
- title: RRFRanker
- description: >-
- Reciprocal Rank Fusion (RRF) ranker configuration.
- Ranker:
- oneOf:
- - $ref: '#/components/schemas/RRFRanker'
- - $ref: '#/components/schemas/WeightedRanker'
- discriminator:
- propertyName: type
- mapping:
- rrf: '#/components/schemas/RRFRanker'
- weighted: '#/components/schemas/WeightedRanker'
- WeightedRanker:
- type: object
- properties:
- type:
- type: string
- const: weighted
- default: weighted
- description: The type of ranker, always "weighted"
- alpha:
- type: number
- default: 0.5
- description: >-
- Weight factor between 0 and 1. 0 means only use keyword scores, 1 means
- only use vector scores, values in between blend both scores.
- additionalProperties: false
- required:
- - type
- - alpha
- title: WeightedRanker
- description: >-
- Weighted ranker configuration that combines vector and keyword scores.
- QueryRequest:
- type: object
- properties:
- content:
- $ref: '#/components/schemas/InterleavedContent'
- description: >-
- The query content to search for in the indexed documents
- vector_store_ids:
- type: array
- items:
- type: string
- description: >-
- List of vector database IDs to search within
- query_config:
- $ref: '#/components/schemas/RAGQueryConfig'
- description: >-
- (Optional) Configuration parameters for the query operation
- additionalProperties: false
- required:
- - content
- - vector_store_ids
- title: QueryRequest
- RAGQueryResult:
- type: object
- properties:
- content:
- $ref: '#/components/schemas/InterleavedContent'
- description: >-
- (Optional) The retrieved content from the query
- metadata:
- type: object
- additionalProperties:
- oneOf:
- - type: 'null'
- - type: boolean
- - type: number
- - type: string
- - type: array
- - type: object
- description: >-
- Additional metadata about the query result
- additionalProperties: false
- required:
- - metadata
- title: RAGQueryResult
- description: >-
- Result of a RAG query containing retrieved content and metadata.
ToolGroup:
type: object
properties:
diff --git a/scripts/run-ui-linter.sh b/scripts/run-ui-linter.sh
index b63c44e7a..0d69ba5f4 100755
--- a/scripts/run-ui-linter.sh
+++ b/scripts/run-ui-linter.sh
@@ -6,7 +6,7 @@
# the root directory of this source tree.
set -e
-cd src/llama_stack/ui
+cd src/llama_stack_ui
if [ ! -d node_modules ] || [ ! -x node_modules/.bin/prettier ] || [ ! -x node_modules/.bin/eslint ]; then
echo "UI dependencies not installed, skipping prettier/linter check"
diff --git a/src/llama_stack/apis/tools/rag_tool.py b/src/llama_stack/apis/tools/rag_tool.py
index feac92878..8bcc89bf0 100644
--- a/src/llama_stack/apis/tools/rag_tool.py
+++ b/src/llama_stack/apis/tools/rag_tool.py
@@ -5,18 +5,13 @@
# the root directory of this source tree.
from enum import Enum, StrEnum
-from typing import Annotated, Any, Literal, Protocol
+from typing import Annotated, Any, Literal
from pydantic import BaseModel, Field, field_validator
-from typing_extensions import runtime_checkable
from llama_stack.apis.common.content_types import URL, InterleavedContent
-from llama_stack.apis.common.tracing import trace_protocol
-from llama_stack.apis.version import LLAMA_STACK_API_V1
-from llama_stack.schema_utils import json_schema_type, register_schema, webmethod
-@json_schema_type
class RRFRanker(BaseModel):
"""
Reciprocal Rank Fusion (RRF) ranker configuration.
@@ -30,7 +25,6 @@ class RRFRanker(BaseModel):
impact_factor: float = Field(default=60.0, gt=0.0) # default of 60 for optimal performance
-@json_schema_type
class WeightedRanker(BaseModel):
"""
Weighted ranker configuration that combines vector and keyword scores.
@@ -55,10 +49,8 @@ Ranker = Annotated[
RRFRanker | WeightedRanker,
Field(discriminator="type"),
]
-register_schema(Ranker, name="Ranker")
-@json_schema_type
class RAGDocument(BaseModel):
"""
A document to be used for document ingestion in the RAG Tool.
@@ -75,7 +67,6 @@ class RAGDocument(BaseModel):
metadata: dict[str, Any] = Field(default_factory=dict)
-@json_schema_type
class RAGQueryResult(BaseModel):
"""Result of a RAG query containing retrieved content and metadata.
@@ -87,7 +78,6 @@ class RAGQueryResult(BaseModel):
metadata: dict[str, Any] = Field(default_factory=dict)
-@json_schema_type
class RAGQueryGenerator(Enum):
"""Types of query generators for RAG systems.
@@ -101,7 +91,6 @@ class RAGQueryGenerator(Enum):
custom = "custom"
-@json_schema_type
class RAGSearchMode(StrEnum):
"""
Search modes for RAG query retrieval:
@@ -115,7 +104,6 @@ class RAGSearchMode(StrEnum):
HYBRID = "hybrid"
-@json_schema_type
class DefaultRAGQueryGeneratorConfig(BaseModel):
"""Configuration for the default RAG query generator.
@@ -127,7 +115,6 @@ class DefaultRAGQueryGeneratorConfig(BaseModel):
separator: str = " "
-@json_schema_type
class LLMRAGQueryGeneratorConfig(BaseModel):
"""Configuration for the LLM-based RAG query generator.
@@ -145,10 +132,8 @@ RAGQueryGeneratorConfig = Annotated[
DefaultRAGQueryGeneratorConfig | LLMRAGQueryGeneratorConfig,
Field(discriminator="type"),
]
-register_schema(RAGQueryGeneratorConfig, name="RAGQueryGeneratorConfig")
-@json_schema_type
class RAGQueryConfig(BaseModel):
"""
Configuration for the RAG query generation.
@@ -181,38 +166,3 @@ class RAGQueryConfig(BaseModel):
if len(v) == 0:
raise ValueError("chunk_template must not be empty")
return v
-
-
-@runtime_checkable
-@trace_protocol
-class RAGToolRuntime(Protocol):
- @webmethod(route="/tool-runtime/rag-tool/insert", method="POST", level=LLAMA_STACK_API_V1)
- async def insert(
- self,
- documents: list[RAGDocument],
- vector_store_id: str,
- chunk_size_in_tokens: int = 512,
- ) -> None:
- """Index documents so they can be used by the RAG system.
-
- :param documents: List of documents to index in the RAG system
- :param vector_store_id: ID of the vector database to store the document embeddings
- :param chunk_size_in_tokens: (Optional) Size in tokens for document chunking during indexing
- """
- ...
-
- @webmethod(route="/tool-runtime/rag-tool/query", method="POST", level=LLAMA_STACK_API_V1)
- async def query(
- self,
- content: InterleavedContent,
- vector_store_ids: list[str],
- query_config: RAGQueryConfig | None = None,
- ) -> RAGQueryResult:
- """Query the RAG system for context; typically invoked by the agent.
-
- :param content: The query content to search for in the indexed documents
- :param vector_store_ids: List of vector database IDs to search within
- :param query_config: (Optional) Configuration parameters for the query operation
- :returns: RAGQueryResult containing the retrieved content and metadata
- """
- ...
diff --git a/src/llama_stack/apis/tools/tools.py b/src/llama_stack/apis/tools/tools.py
index e0e59c49a..3ca0fa4b4 100644
--- a/src/llama_stack/apis/tools/tools.py
+++ b/src/llama_stack/apis/tools/tools.py
@@ -16,8 +16,6 @@ from llama_stack.apis.resource import Resource, ResourceType
from llama_stack.apis.version import LLAMA_STACK_API_V1
from llama_stack.schema_utils import json_schema_type, webmethod
-from .rag_tool import RAGToolRuntime
-
@json_schema_type
class ToolDef(BaseModel):
@@ -195,8 +193,6 @@ class SpecialToolGroup(Enum):
class ToolRuntime(Protocol):
tool_store: ToolStore | None = None
- rag_tool: RAGToolRuntime | None = None
-
# TODO: This needs to be renamed once OPEN API generator name conflict issue is fixed.
@webmethod(route="/tool-runtime/list-tools", method="GET", level=LLAMA_STACK_API_V1)
async def list_runtime_tools(
diff --git a/src/llama_stack/cli/stack/run.py b/src/llama_stack/cli/stack/run.py
index 9ceb238fa..73d8d13d5 100644
--- a/src/llama_stack/cli/stack/run.py
+++ b/src/llama_stack/cli/stack/run.py
@@ -253,7 +253,7 @@ class StackRun(Subcommand):
)
return
- ui_dir = REPO_ROOT / "llama_stack" / "ui"
+ ui_dir = REPO_ROOT / "llama_stack_ui"
logs_dir = Path("~/.llama/ui/logs").expanduser()
try:
# Create logs directory if it doesn't exist
diff --git a/src/llama_stack/core/routers/tool_runtime.py b/src/llama_stack/core/routers/tool_runtime.py
index be4c13905..fb13d94a4 100644
--- a/src/llama_stack/core/routers/tool_runtime.py
+++ b/src/llama_stack/core/routers/tool_runtime.py
@@ -8,14 +8,9 @@ from typing import Any
from llama_stack.apis.common.content_types import (
URL,
- InterleavedContent,
)
from llama_stack.apis.tools import (
ListToolDefsResponse,
- RAGDocument,
- RAGQueryConfig,
- RAGQueryResult,
- RAGToolRuntime,
ToolRuntime,
)
from llama_stack.log import get_logger
@@ -26,36 +21,6 @@ logger = get_logger(name=__name__, category="core::routers")
class ToolRuntimeRouter(ToolRuntime):
- class RagToolImpl(RAGToolRuntime):
- def __init__(
- self,
- routing_table: ToolGroupsRoutingTable,
- ) -> None:
- logger.debug("Initializing ToolRuntimeRouter.RagToolImpl")
- self.routing_table = routing_table
-
- async def query(
- self,
- content: InterleavedContent,
- vector_store_ids: list[str],
- query_config: RAGQueryConfig | None = None,
- ) -> RAGQueryResult:
- logger.debug(f"ToolRuntimeRouter.RagToolImpl.query: {vector_store_ids}")
- provider = await self.routing_table.get_provider_impl("knowledge_search")
- return await provider.query(content, vector_store_ids, query_config)
-
- async def insert(
- self,
- documents: list[RAGDocument],
- vector_store_id: str,
- chunk_size_in_tokens: int = 512,
- ) -> None:
- logger.debug(
- f"ToolRuntimeRouter.RagToolImpl.insert: {vector_store_id}, {len(documents)} documents, chunk_size={chunk_size_in_tokens}"
- )
- provider = await self.routing_table.get_provider_impl("insert_into_memory")
- return await provider.insert(documents, vector_store_id, chunk_size_in_tokens)
-
def __init__(
self,
routing_table: ToolGroupsRoutingTable,
@@ -63,11 +28,6 @@ class ToolRuntimeRouter(ToolRuntime):
logger.debug("Initializing ToolRuntimeRouter")
self.routing_table = routing_table
- # HACK ALERT this should be in sync with "get_all_api_endpoints()"
- self.rag_tool = self.RagToolImpl(routing_table)
- for method in ("query", "insert"):
- setattr(self, f"rag_tool.{method}", getattr(self.rag_tool, method))
-
async def initialize(self) -> None:
logger.debug("ToolRuntimeRouter.initialize")
pass
diff --git a/src/llama_stack/core/server/routes.py b/src/llama_stack/core/server/routes.py
index 48a961318..4f7ff2295 100644
--- a/src/llama_stack/core/server/routes.py
+++ b/src/llama_stack/core/server/routes.py
@@ -13,7 +13,6 @@ from aiohttp import hdrs
from starlette.routing import Route
from llama_stack.apis.datatypes import Api, ExternalApiSpec
-from llama_stack.apis.tools import RAGToolRuntime, SpecialToolGroup
from llama_stack.core.resolver import api_protocol_map
from llama_stack.schema_utils import WebMethod
@@ -25,33 +24,16 @@ RouteImpls = dict[str, PathImpl]
RouteMatch = tuple[EndpointFunc, PathParams, str, WebMethod]
-def toolgroup_protocol_map():
- return {
- SpecialToolGroup.rag_tool: RAGToolRuntime,
- }
-
-
def get_all_api_routes(
external_apis: dict[Api, ExternalApiSpec] | None = None,
) -> dict[Api, list[tuple[Route, WebMethod]]]:
apis = {}
protocols = api_protocol_map(external_apis)
- toolgroup_protocols = toolgroup_protocol_map()
for api, protocol in protocols.items():
routes = []
protocol_methods = inspect.getmembers(protocol, predicate=inspect.isfunction)
- # HACK ALERT
- if api == Api.tool_runtime:
- for tool_group in SpecialToolGroup:
- sub_protocol = toolgroup_protocols[tool_group]
- sub_protocol_methods = inspect.getmembers(sub_protocol, predicate=inspect.isfunction)
- for name, method in sub_protocol_methods:
- if not hasattr(method, "__webmethod__"):
- continue
- protocol_methods.append((f"{tool_group.value}.{name}", method))
-
for name, method in protocol_methods:
# Get all webmethods for this method (supports multiple decorators)
webmethods = getattr(method, "__webmethods__", [])
diff --git a/src/llama_stack/core/stack.py b/src/llama_stack/core/stack.py
index 2ff7db6eb..2ed0eccd2 100644
--- a/src/llama_stack/core/stack.py
+++ b/src/llama_stack/core/stack.py
@@ -31,7 +31,7 @@ from llama_stack.apis.safety import Safety
from llama_stack.apis.scoring import Scoring
from llama_stack.apis.scoring_functions import ScoringFunctions
from llama_stack.apis.shields import Shields
-from llama_stack.apis.tools import RAGToolRuntime, ToolGroups, ToolRuntime
+from llama_stack.apis.tools import ToolGroups, ToolRuntime
from llama_stack.apis.vector_io import VectorIO
from llama_stack.core.conversations.conversations import ConversationServiceConfig, ConversationServiceImpl
from llama_stack.core.datatypes import Provider, SafetyConfig, StackRunConfig, VectorStoresConfig
@@ -78,7 +78,6 @@ class LlamaStack(
Inspect,
ToolGroups,
ToolRuntime,
- RAGToolRuntime,
Files,
Prompts,
Conversations,
diff --git a/src/llama_stack/providers/inline/tool_runtime/rag/memory.py b/src/llama_stack/providers/inline/tool_runtime/rag/memory.py
index 3ee745bf1..6a59be0ca 100644
--- a/src/llama_stack/providers/inline/tool_runtime/rag/memory.py
+++ b/src/llama_stack/providers/inline/tool_runtime/rag/memory.py
@@ -27,7 +27,6 @@ from llama_stack.apis.tools import (
RAGDocument,
RAGQueryConfig,
RAGQueryResult,
- RAGToolRuntime,
ToolDef,
ToolGroup,
ToolInvocationResult,
@@ -91,7 +90,7 @@ async def raw_data_from_doc(doc: RAGDocument) -> tuple[bytes, str]:
return content_str.encode("utf-8"), "text/plain"
-class MemoryToolRuntimeImpl(ToolGroupsProtocolPrivate, ToolRuntime, RAGToolRuntime):
+class MemoryToolRuntimeImpl(ToolGroupsProtocolPrivate, ToolRuntime):
def __init__(
self,
config: RagToolRuntimeConfig,
diff --git a/src/llama_stack/ui/.gitignore b/src/llama_stack_ui/.gitignore
similarity index 100%
rename from src/llama_stack/ui/.gitignore
rename to src/llama_stack_ui/.gitignore
diff --git a/src/llama_stack/ui/.nvmrc b/src/llama_stack_ui/.nvmrc
similarity index 100%
rename from src/llama_stack/ui/.nvmrc
rename to src/llama_stack_ui/.nvmrc
diff --git a/src/llama_stack/ui/.prettierignore b/src/llama_stack_ui/.prettierignore
similarity index 100%
rename from src/llama_stack/ui/.prettierignore
rename to src/llama_stack_ui/.prettierignore
diff --git a/src/llama_stack/ui/.prettierrc b/src/llama_stack_ui/.prettierrc
similarity index 100%
rename from src/llama_stack/ui/.prettierrc
rename to src/llama_stack_ui/.prettierrc
diff --git a/src/llama_stack/ui/README.md b/src/llama_stack_ui/README.md
similarity index 100%
rename from src/llama_stack/ui/README.md
rename to src/llama_stack_ui/README.md
diff --git a/src/llama_stack/ui/app/api/auth/[...nextauth]/route.ts b/src/llama_stack_ui/app/api/auth/[...nextauth]/route.ts
similarity index 100%
rename from src/llama_stack/ui/app/api/auth/[...nextauth]/route.ts
rename to src/llama_stack_ui/app/api/auth/[...nextauth]/route.ts
diff --git a/src/llama_stack/ui/app/api/v1/[...path]/route.ts b/src/llama_stack_ui/app/api/v1/[...path]/route.ts
similarity index 100%
rename from src/llama_stack/ui/app/api/v1/[...path]/route.ts
rename to src/llama_stack_ui/app/api/v1/[...path]/route.ts
diff --git a/src/llama_stack/ui/app/auth/signin/page.tsx b/src/llama_stack_ui/app/auth/signin/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/auth/signin/page.tsx
rename to src/llama_stack_ui/app/auth/signin/page.tsx
diff --git a/src/llama_stack/ui/app/chat-playground/chunk-processor.test.tsx b/src/llama_stack_ui/app/chat-playground/chunk-processor.test.tsx
similarity index 100%
rename from src/llama_stack/ui/app/chat-playground/chunk-processor.test.tsx
rename to src/llama_stack_ui/app/chat-playground/chunk-processor.test.tsx
diff --git a/src/llama_stack/ui/app/chat-playground/page.test.tsx b/src/llama_stack_ui/app/chat-playground/page.test.tsx
similarity index 100%
rename from src/llama_stack/ui/app/chat-playground/page.test.tsx
rename to src/llama_stack_ui/app/chat-playground/page.test.tsx
diff --git a/src/llama_stack/ui/app/chat-playground/page.tsx b/src/llama_stack_ui/app/chat-playground/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/chat-playground/page.tsx
rename to src/llama_stack_ui/app/chat-playground/page.tsx
diff --git a/src/llama_stack/ui/app/globals.css b/src/llama_stack_ui/app/globals.css
similarity index 100%
rename from src/llama_stack/ui/app/globals.css
rename to src/llama_stack_ui/app/globals.css
diff --git a/src/llama_stack/ui/app/layout.tsx b/src/llama_stack_ui/app/layout.tsx
similarity index 100%
rename from src/llama_stack/ui/app/layout.tsx
rename to src/llama_stack_ui/app/layout.tsx
diff --git a/src/llama_stack/ui/app/logs/chat-completions/[id]/page.tsx b/src/llama_stack_ui/app/logs/chat-completions/[id]/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/chat-completions/[id]/page.tsx
rename to src/llama_stack_ui/app/logs/chat-completions/[id]/page.tsx
diff --git a/src/llama_stack/ui/app/logs/chat-completions/layout.tsx b/src/llama_stack_ui/app/logs/chat-completions/layout.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/chat-completions/layout.tsx
rename to src/llama_stack_ui/app/logs/chat-completions/layout.tsx
diff --git a/src/llama_stack/ui/app/logs/chat-completions/page.tsx b/src/llama_stack_ui/app/logs/chat-completions/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/chat-completions/page.tsx
rename to src/llama_stack_ui/app/logs/chat-completions/page.tsx
diff --git a/src/llama_stack/ui/app/logs/responses/[id]/page.tsx b/src/llama_stack_ui/app/logs/responses/[id]/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/responses/[id]/page.tsx
rename to src/llama_stack_ui/app/logs/responses/[id]/page.tsx
diff --git a/src/llama_stack/ui/app/logs/responses/layout.tsx b/src/llama_stack_ui/app/logs/responses/layout.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/responses/layout.tsx
rename to src/llama_stack_ui/app/logs/responses/layout.tsx
diff --git a/src/llama_stack/ui/app/logs/responses/page.tsx b/src/llama_stack_ui/app/logs/responses/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/responses/page.tsx
rename to src/llama_stack_ui/app/logs/responses/page.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.test.tsx b/src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.test.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.test.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.test.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.tsx b/src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/[contentId]/page.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.test.tsx b/src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.test.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.test.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.test.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.tsx b/src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/contents/page.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/page.test.tsx b/src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/page.test.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/page.test.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/page.test.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/page.tsx b/src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/[id]/files/[fileId]/page.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/[id]/files/[fileId]/page.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/[id]/page.tsx b/src/llama_stack_ui/app/logs/vector-stores/[id]/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/[id]/page.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/[id]/page.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/layout.tsx b/src/llama_stack_ui/app/logs/vector-stores/layout.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/layout.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/layout.tsx
diff --git a/src/llama_stack/ui/app/logs/vector-stores/page.tsx b/src/llama_stack_ui/app/logs/vector-stores/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/logs/vector-stores/page.tsx
rename to src/llama_stack_ui/app/logs/vector-stores/page.tsx
diff --git a/src/llama_stack/ui/app/page.tsx b/src/llama_stack_ui/app/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/page.tsx
rename to src/llama_stack_ui/app/page.tsx
diff --git a/src/llama_stack/ui/app/prompts/page.tsx b/src/llama_stack_ui/app/prompts/page.tsx
similarity index 100%
rename from src/llama_stack/ui/app/prompts/page.tsx
rename to src/llama_stack_ui/app/prompts/page.tsx
diff --git a/src/llama_stack/ui/components.json b/src/llama_stack_ui/components.json
similarity index 100%
rename from src/llama_stack/ui/components.json
rename to src/llama_stack_ui/components.json
diff --git a/src/llama_stack/ui/components/chat-completions/chat-completion-detail.test.tsx b/src/llama_stack_ui/components/chat-completions/chat-completion-detail.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-completions/chat-completion-detail.test.tsx
rename to src/llama_stack_ui/components/chat-completions/chat-completion-detail.test.tsx
diff --git a/src/llama_stack/ui/components/chat-completions/chat-completion-detail.tsx b/src/llama_stack_ui/components/chat-completions/chat-completion-detail.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-completions/chat-completion-detail.tsx
rename to src/llama_stack_ui/components/chat-completions/chat-completion-detail.tsx
diff --git a/src/llama_stack/ui/components/chat-completions/chat-completion-table.test.tsx b/src/llama_stack_ui/components/chat-completions/chat-completion-table.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-completions/chat-completion-table.test.tsx
rename to src/llama_stack_ui/components/chat-completions/chat-completion-table.test.tsx
diff --git a/src/llama_stack/ui/components/chat-completions/chat-completions-table.tsx b/src/llama_stack_ui/components/chat-completions/chat-completions-table.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-completions/chat-completions-table.tsx
rename to src/llama_stack_ui/components/chat-completions/chat-completions-table.tsx
diff --git a/src/llama_stack/ui/components/chat-completions/chat-messasge-item.tsx b/src/llama_stack_ui/components/chat-completions/chat-messasge-item.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-completions/chat-messasge-item.tsx
rename to src/llama_stack_ui/components/chat-completions/chat-messasge-item.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/chat-message.tsx b/src/llama_stack_ui/components/chat-playground/chat-message.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/chat-message.tsx
rename to src/llama_stack_ui/components/chat-playground/chat-message.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/chat.tsx b/src/llama_stack_ui/components/chat-playground/chat.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/chat.tsx
rename to src/llama_stack_ui/components/chat-playground/chat.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/conversations.test.tsx b/src/llama_stack_ui/components/chat-playground/conversations.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/conversations.test.tsx
rename to src/llama_stack_ui/components/chat-playground/conversations.test.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/conversations.tsx b/src/llama_stack_ui/components/chat-playground/conversations.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/conversations.tsx
rename to src/llama_stack_ui/components/chat-playground/conversations.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/interrupt-prompt.tsx b/src/llama_stack_ui/components/chat-playground/interrupt-prompt.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/interrupt-prompt.tsx
rename to src/llama_stack_ui/components/chat-playground/interrupt-prompt.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/markdown-renderer.tsx b/src/llama_stack_ui/components/chat-playground/markdown-renderer.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/markdown-renderer.tsx
rename to src/llama_stack_ui/components/chat-playground/markdown-renderer.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/message-components.tsx b/src/llama_stack_ui/components/chat-playground/message-components.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/message-components.tsx
rename to src/llama_stack_ui/components/chat-playground/message-components.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/message-input.tsx b/src/llama_stack_ui/components/chat-playground/message-input.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/message-input.tsx
rename to src/llama_stack_ui/components/chat-playground/message-input.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/message-list.tsx b/src/llama_stack_ui/components/chat-playground/message-list.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/message-list.tsx
rename to src/llama_stack_ui/components/chat-playground/message-list.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/prompt-suggestions.tsx b/src/llama_stack_ui/components/chat-playground/prompt-suggestions.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/prompt-suggestions.tsx
rename to src/llama_stack_ui/components/chat-playground/prompt-suggestions.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/typing-indicator.tsx b/src/llama_stack_ui/components/chat-playground/typing-indicator.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/typing-indicator.tsx
rename to src/llama_stack_ui/components/chat-playground/typing-indicator.tsx
diff --git a/src/llama_stack/ui/components/chat-playground/vector-db-creator.tsx b/src/llama_stack_ui/components/chat-playground/vector-db-creator.tsx
similarity index 100%
rename from src/llama_stack/ui/components/chat-playground/vector-db-creator.tsx
rename to src/llama_stack_ui/components/chat-playground/vector-db-creator.tsx
diff --git a/src/llama_stack/ui/components/layout/app-sidebar.tsx b/src/llama_stack_ui/components/layout/app-sidebar.tsx
similarity index 100%
rename from src/llama_stack/ui/components/layout/app-sidebar.tsx
rename to src/llama_stack_ui/components/layout/app-sidebar.tsx
diff --git a/src/llama_stack/ui/components/layout/detail-layout.tsx b/src/llama_stack_ui/components/layout/detail-layout.tsx
similarity index 100%
rename from src/llama_stack/ui/components/layout/detail-layout.tsx
rename to src/llama_stack_ui/components/layout/detail-layout.tsx
diff --git a/src/llama_stack/ui/components/layout/logs-layout.tsx b/src/llama_stack_ui/components/layout/logs-layout.tsx
similarity index 100%
rename from src/llama_stack/ui/components/layout/logs-layout.tsx
rename to src/llama_stack_ui/components/layout/logs-layout.tsx
diff --git a/src/llama_stack/ui/components/layout/page-breadcrumb.tsx b/src/llama_stack_ui/components/layout/page-breadcrumb.tsx
similarity index 100%
rename from src/llama_stack/ui/components/layout/page-breadcrumb.tsx
rename to src/llama_stack_ui/components/layout/page-breadcrumb.tsx
diff --git a/src/llama_stack/ui/components/logs/logs-table-scroll.test.tsx b/src/llama_stack_ui/components/logs/logs-table-scroll.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/logs/logs-table-scroll.test.tsx
rename to src/llama_stack_ui/components/logs/logs-table-scroll.test.tsx
diff --git a/src/llama_stack/ui/components/logs/logs-table.test.tsx b/src/llama_stack_ui/components/logs/logs-table.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/logs/logs-table.test.tsx
rename to src/llama_stack_ui/components/logs/logs-table.test.tsx
diff --git a/src/llama_stack/ui/components/logs/logs-table.tsx b/src/llama_stack_ui/components/logs/logs-table.tsx
similarity index 100%
rename from src/llama_stack/ui/components/logs/logs-table.tsx
rename to src/llama_stack_ui/components/logs/logs-table.tsx
diff --git a/src/llama_stack/ui/components/prompts/index.ts b/src/llama_stack_ui/components/prompts/index.ts
similarity index 100%
rename from src/llama_stack/ui/components/prompts/index.ts
rename to src/llama_stack_ui/components/prompts/index.ts
diff --git a/src/llama_stack/ui/components/prompts/prompt-editor.test.tsx b/src/llama_stack_ui/components/prompts/prompt-editor.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/prompts/prompt-editor.test.tsx
rename to src/llama_stack_ui/components/prompts/prompt-editor.test.tsx
diff --git a/src/llama_stack/ui/components/prompts/prompt-editor.tsx b/src/llama_stack_ui/components/prompts/prompt-editor.tsx
similarity index 100%
rename from src/llama_stack/ui/components/prompts/prompt-editor.tsx
rename to src/llama_stack_ui/components/prompts/prompt-editor.tsx
diff --git a/src/llama_stack/ui/components/prompts/prompt-list.test.tsx b/src/llama_stack_ui/components/prompts/prompt-list.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/prompts/prompt-list.test.tsx
rename to src/llama_stack_ui/components/prompts/prompt-list.test.tsx
diff --git a/src/llama_stack/ui/components/prompts/prompt-list.tsx b/src/llama_stack_ui/components/prompts/prompt-list.tsx
similarity index 100%
rename from src/llama_stack/ui/components/prompts/prompt-list.tsx
rename to src/llama_stack_ui/components/prompts/prompt-list.tsx
diff --git a/src/llama_stack/ui/components/prompts/prompt-management.test.tsx b/src/llama_stack_ui/components/prompts/prompt-management.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/prompts/prompt-management.test.tsx
rename to src/llama_stack_ui/components/prompts/prompt-management.test.tsx
diff --git a/src/llama_stack/ui/components/prompts/prompt-management.tsx b/src/llama_stack_ui/components/prompts/prompt-management.tsx
similarity index 100%
rename from src/llama_stack/ui/components/prompts/prompt-management.tsx
rename to src/llama_stack_ui/components/prompts/prompt-management.tsx
diff --git a/src/llama_stack/ui/components/prompts/types.ts b/src/llama_stack_ui/components/prompts/types.ts
similarity index 100%
rename from src/llama_stack/ui/components/prompts/types.ts
rename to src/llama_stack_ui/components/prompts/types.ts
diff --git a/src/llama_stack/ui/components/providers/session-provider.tsx b/src/llama_stack_ui/components/providers/session-provider.tsx
similarity index 100%
rename from src/llama_stack/ui/components/providers/session-provider.tsx
rename to src/llama_stack_ui/components/providers/session-provider.tsx
diff --git a/src/llama_stack/ui/components/responses/grouping/grouped-items-display.tsx b/src/llama_stack_ui/components/responses/grouping/grouped-items-display.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/grouping/grouped-items-display.tsx
rename to src/llama_stack_ui/components/responses/grouping/grouped-items-display.tsx
diff --git a/src/llama_stack/ui/components/responses/hooks/function-call-grouping.ts b/src/llama_stack_ui/components/responses/hooks/function-call-grouping.ts
similarity index 100%
rename from src/llama_stack/ui/components/responses/hooks/function-call-grouping.ts
rename to src/llama_stack_ui/components/responses/hooks/function-call-grouping.ts
diff --git a/src/llama_stack/ui/components/responses/items/function-call-item.tsx b/src/llama_stack_ui/components/responses/items/function-call-item.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/items/function-call-item.tsx
rename to src/llama_stack_ui/components/responses/items/function-call-item.tsx
diff --git a/src/llama_stack/ui/components/responses/items/generic-item.tsx b/src/llama_stack_ui/components/responses/items/generic-item.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/items/generic-item.tsx
rename to src/llama_stack_ui/components/responses/items/generic-item.tsx
diff --git a/src/llama_stack/ui/components/responses/items/grouped-function-call-item.tsx b/src/llama_stack_ui/components/responses/items/grouped-function-call-item.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/items/grouped-function-call-item.tsx
rename to src/llama_stack_ui/components/responses/items/grouped-function-call-item.tsx
diff --git a/src/llama_stack/ui/components/responses/items/index.ts b/src/llama_stack_ui/components/responses/items/index.ts
similarity index 100%
rename from src/llama_stack/ui/components/responses/items/index.ts
rename to src/llama_stack_ui/components/responses/items/index.ts
diff --git a/src/llama_stack/ui/components/responses/items/item-renderer.tsx b/src/llama_stack_ui/components/responses/items/item-renderer.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/items/item-renderer.tsx
rename to src/llama_stack_ui/components/responses/items/item-renderer.tsx
diff --git a/src/llama_stack/ui/components/responses/items/message-item.tsx b/src/llama_stack_ui/components/responses/items/message-item.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/items/message-item.tsx
rename to src/llama_stack_ui/components/responses/items/message-item.tsx
diff --git a/src/llama_stack/ui/components/responses/items/web-search-item.tsx b/src/llama_stack_ui/components/responses/items/web-search-item.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/items/web-search-item.tsx
rename to src/llama_stack_ui/components/responses/items/web-search-item.tsx
diff --git a/src/llama_stack/ui/components/responses/responses-detail.test.tsx b/src/llama_stack_ui/components/responses/responses-detail.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/responses-detail.test.tsx
rename to src/llama_stack_ui/components/responses/responses-detail.test.tsx
diff --git a/src/llama_stack/ui/components/responses/responses-detail.tsx b/src/llama_stack_ui/components/responses/responses-detail.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/responses-detail.tsx
rename to src/llama_stack_ui/components/responses/responses-detail.tsx
diff --git a/src/llama_stack/ui/components/responses/responses-table.test.tsx b/src/llama_stack_ui/components/responses/responses-table.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/responses-table.test.tsx
rename to src/llama_stack_ui/components/responses/responses-table.test.tsx
diff --git a/src/llama_stack/ui/components/responses/responses-table.tsx b/src/llama_stack_ui/components/responses/responses-table.tsx
similarity index 100%
rename from src/llama_stack/ui/components/responses/responses-table.tsx
rename to src/llama_stack_ui/components/responses/responses-table.tsx
diff --git a/src/llama_stack/ui/components/responses/utils/item-types.ts b/src/llama_stack_ui/components/responses/utils/item-types.ts
similarity index 100%
rename from src/llama_stack/ui/components/responses/utils/item-types.ts
rename to src/llama_stack_ui/components/responses/utils/item-types.ts
diff --git a/src/llama_stack/ui/components/ui/audio-visualizer.tsx b/src/llama_stack_ui/components/ui/audio-visualizer.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/audio-visualizer.tsx
rename to src/llama_stack_ui/components/ui/audio-visualizer.tsx
diff --git a/src/llama_stack/ui/components/ui/badge.tsx b/src/llama_stack_ui/components/ui/badge.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/badge.tsx
rename to src/llama_stack_ui/components/ui/badge.tsx
diff --git a/src/llama_stack/ui/components/ui/breadcrumb.tsx b/src/llama_stack_ui/components/ui/breadcrumb.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/breadcrumb.tsx
rename to src/llama_stack_ui/components/ui/breadcrumb.tsx
diff --git a/src/llama_stack/ui/components/ui/button.tsx b/src/llama_stack_ui/components/ui/button.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/button.tsx
rename to src/llama_stack_ui/components/ui/button.tsx
diff --git a/src/llama_stack/ui/components/ui/card.tsx b/src/llama_stack_ui/components/ui/card.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/card.tsx
rename to src/llama_stack_ui/components/ui/card.tsx
diff --git a/src/llama_stack/ui/components/ui/collapsible.tsx b/src/llama_stack_ui/components/ui/collapsible.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/collapsible.tsx
rename to src/llama_stack_ui/components/ui/collapsible.tsx
diff --git a/src/llama_stack/ui/components/ui/copy-button.tsx b/src/llama_stack_ui/components/ui/copy-button.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/copy-button.tsx
rename to src/llama_stack_ui/components/ui/copy-button.tsx
diff --git a/src/llama_stack/ui/components/ui/dropdown-menu.tsx b/src/llama_stack_ui/components/ui/dropdown-menu.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/dropdown-menu.tsx
rename to src/llama_stack_ui/components/ui/dropdown-menu.tsx
diff --git a/src/llama_stack/ui/components/ui/file-preview.tsx b/src/llama_stack_ui/components/ui/file-preview.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/file-preview.tsx
rename to src/llama_stack_ui/components/ui/file-preview.tsx
diff --git a/src/llama_stack/ui/components/ui/input.tsx b/src/llama_stack_ui/components/ui/input.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/input.tsx
rename to src/llama_stack_ui/components/ui/input.tsx
diff --git a/src/llama_stack/ui/components/ui/label.tsx b/src/llama_stack_ui/components/ui/label.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/label.tsx
rename to src/llama_stack_ui/components/ui/label.tsx
diff --git a/src/llama_stack/ui/components/ui/mode-toggle.tsx b/src/llama_stack_ui/components/ui/mode-toggle.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/mode-toggle.tsx
rename to src/llama_stack_ui/components/ui/mode-toggle.tsx
diff --git a/src/llama_stack/ui/components/ui/select.tsx b/src/llama_stack_ui/components/ui/select.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/select.tsx
rename to src/llama_stack_ui/components/ui/select.tsx
diff --git a/src/llama_stack/ui/components/ui/separator.tsx b/src/llama_stack_ui/components/ui/separator.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/separator.tsx
rename to src/llama_stack_ui/components/ui/separator.tsx
diff --git a/src/llama_stack/ui/components/ui/sheet.tsx b/src/llama_stack_ui/components/ui/sheet.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/sheet.tsx
rename to src/llama_stack_ui/components/ui/sheet.tsx
diff --git a/src/llama_stack/ui/components/ui/sidebar.tsx b/src/llama_stack_ui/components/ui/sidebar.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/sidebar.tsx
rename to src/llama_stack_ui/components/ui/sidebar.tsx
diff --git a/src/llama_stack/ui/components/ui/sign-in-button.tsx b/src/llama_stack_ui/components/ui/sign-in-button.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/sign-in-button.tsx
rename to src/llama_stack_ui/components/ui/sign-in-button.tsx
diff --git a/src/llama_stack/ui/components/ui/skeleton.tsx b/src/llama_stack_ui/components/ui/skeleton.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/skeleton.tsx
rename to src/llama_stack_ui/components/ui/skeleton.tsx
diff --git a/src/llama_stack/ui/components/ui/sonner.tsx b/src/llama_stack_ui/components/ui/sonner.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/sonner.tsx
rename to src/llama_stack_ui/components/ui/sonner.tsx
diff --git a/src/llama_stack/ui/components/ui/table.tsx b/src/llama_stack_ui/components/ui/table.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/table.tsx
rename to src/llama_stack_ui/components/ui/table.tsx
diff --git a/src/llama_stack/ui/components/ui/tabs.tsx b/src/llama_stack_ui/components/ui/tabs.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/tabs.tsx
rename to src/llama_stack_ui/components/ui/tabs.tsx
diff --git a/src/llama_stack/ui/components/ui/textarea.tsx b/src/llama_stack_ui/components/ui/textarea.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/textarea.tsx
rename to src/llama_stack_ui/components/ui/textarea.tsx
diff --git a/src/llama_stack/ui/components/ui/theme-provider.tsx b/src/llama_stack_ui/components/ui/theme-provider.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/theme-provider.tsx
rename to src/llama_stack_ui/components/ui/theme-provider.tsx
diff --git a/src/llama_stack/ui/components/ui/tooltip.tsx b/src/llama_stack_ui/components/ui/tooltip.tsx
similarity index 100%
rename from src/llama_stack/ui/components/ui/tooltip.tsx
rename to src/llama_stack_ui/components/ui/tooltip.tsx
diff --git a/src/llama_stack/ui/components/vector-stores/vector-store-detail.test.tsx b/src/llama_stack_ui/components/vector-stores/vector-store-detail.test.tsx
similarity index 100%
rename from src/llama_stack/ui/components/vector-stores/vector-store-detail.test.tsx
rename to src/llama_stack_ui/components/vector-stores/vector-store-detail.test.tsx
diff --git a/src/llama_stack/ui/components/vector-stores/vector-store-detail.tsx b/src/llama_stack_ui/components/vector-stores/vector-store-detail.tsx
similarity index 100%
rename from src/llama_stack/ui/components/vector-stores/vector-store-detail.tsx
rename to src/llama_stack_ui/components/vector-stores/vector-store-detail.tsx
diff --git a/src/llama_stack/ui/e2e/logs-table-scroll.spec.ts b/src/llama_stack_ui/e2e/logs-table-scroll.spec.ts
similarity index 100%
rename from src/llama_stack/ui/e2e/logs-table-scroll.spec.ts
rename to src/llama_stack_ui/e2e/logs-table-scroll.spec.ts
diff --git a/src/llama_stack/ui/eslint.config.mjs b/src/llama_stack_ui/eslint.config.mjs
similarity index 100%
rename from src/llama_stack/ui/eslint.config.mjs
rename to src/llama_stack_ui/eslint.config.mjs
diff --git a/src/llama_stack/ui/hooks/use-audio-recording.ts b/src/llama_stack_ui/hooks/use-audio-recording.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-audio-recording.ts
rename to src/llama_stack_ui/hooks/use-audio-recording.ts
diff --git a/src/llama_stack/ui/hooks/use-auth-client.ts b/src/llama_stack_ui/hooks/use-auth-client.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-auth-client.ts
rename to src/llama_stack_ui/hooks/use-auth-client.ts
diff --git a/src/llama_stack/ui/hooks/use-auto-scroll.ts b/src/llama_stack_ui/hooks/use-auto-scroll.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-auto-scroll.ts
rename to src/llama_stack_ui/hooks/use-auto-scroll.ts
diff --git a/src/llama_stack/ui/hooks/use-autosize-textarea.ts b/src/llama_stack_ui/hooks/use-autosize-textarea.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-autosize-textarea.ts
rename to src/llama_stack_ui/hooks/use-autosize-textarea.ts
diff --git a/src/llama_stack/ui/hooks/use-copy-to-clipboard.ts b/src/llama_stack_ui/hooks/use-copy-to-clipboard.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-copy-to-clipboard.ts
rename to src/llama_stack_ui/hooks/use-copy-to-clipboard.ts
diff --git a/src/llama_stack/ui/hooks/use-infinite-scroll.ts b/src/llama_stack_ui/hooks/use-infinite-scroll.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-infinite-scroll.ts
rename to src/llama_stack_ui/hooks/use-infinite-scroll.ts
diff --git a/src/llama_stack/ui/hooks/use-mobile.ts b/src/llama_stack_ui/hooks/use-mobile.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-mobile.ts
rename to src/llama_stack_ui/hooks/use-mobile.ts
diff --git a/src/llama_stack/ui/hooks/use-pagination.ts b/src/llama_stack_ui/hooks/use-pagination.ts
similarity index 100%
rename from src/llama_stack/ui/hooks/use-pagination.ts
rename to src/llama_stack_ui/hooks/use-pagination.ts
diff --git a/src/llama_stack/ui/instrumentation.ts b/src/llama_stack_ui/instrumentation.ts
similarity index 100%
rename from src/llama_stack/ui/instrumentation.ts
rename to src/llama_stack_ui/instrumentation.ts
diff --git a/src/llama_stack/ui/jest.config.ts b/src/llama_stack_ui/jest.config.ts
similarity index 100%
rename from src/llama_stack/ui/jest.config.ts
rename to src/llama_stack_ui/jest.config.ts
diff --git a/src/llama_stack/ui/jest.setup.ts b/src/llama_stack_ui/jest.setup.ts
similarity index 100%
rename from src/llama_stack/ui/jest.setup.ts
rename to src/llama_stack_ui/jest.setup.ts
diff --git a/src/llama_stack/ui/lib/audio-utils.ts b/src/llama_stack_ui/lib/audio-utils.ts
similarity index 100%
rename from src/llama_stack/ui/lib/audio-utils.ts
rename to src/llama_stack_ui/lib/audio-utils.ts
diff --git a/src/llama_stack/ui/lib/auth.ts b/src/llama_stack_ui/lib/auth.ts
similarity index 100%
rename from src/llama_stack/ui/lib/auth.ts
rename to src/llama_stack_ui/lib/auth.ts
diff --git a/src/llama_stack/ui/lib/config-validator.ts b/src/llama_stack_ui/lib/config-validator.ts
similarity index 100%
rename from src/llama_stack/ui/lib/config-validator.ts
rename to src/llama_stack_ui/lib/config-validator.ts
diff --git a/src/llama_stack/ui/lib/contents-api.ts b/src/llama_stack_ui/lib/contents-api.ts
similarity index 100%
rename from src/llama_stack/ui/lib/contents-api.ts
rename to src/llama_stack_ui/lib/contents-api.ts
diff --git a/src/llama_stack/ui/lib/format-message-content.test.ts b/src/llama_stack_ui/lib/format-message-content.test.ts
similarity index 100%
rename from src/llama_stack/ui/lib/format-message-content.test.ts
rename to src/llama_stack_ui/lib/format-message-content.test.ts
diff --git a/src/llama_stack/ui/lib/format-message-content.ts b/src/llama_stack_ui/lib/format-message-content.ts
similarity index 100%
rename from src/llama_stack/ui/lib/format-message-content.ts
rename to src/llama_stack_ui/lib/format-message-content.ts
diff --git a/src/llama_stack/ui/lib/format-tool-call.tsx b/src/llama_stack_ui/lib/format-tool-call.tsx
similarity index 100%
rename from src/llama_stack/ui/lib/format-tool-call.tsx
rename to src/llama_stack_ui/lib/format-tool-call.tsx
diff --git a/src/llama_stack/ui/lib/message-content-utils.ts b/src/llama_stack_ui/lib/message-content-utils.ts
similarity index 100%
rename from src/llama_stack/ui/lib/message-content-utils.ts
rename to src/llama_stack_ui/lib/message-content-utils.ts
diff --git a/src/llama_stack/ui/lib/truncate-text.ts b/src/llama_stack_ui/lib/truncate-text.ts
similarity index 100%
rename from src/llama_stack/ui/lib/truncate-text.ts
rename to src/llama_stack_ui/lib/truncate-text.ts
diff --git a/src/llama_stack/ui/lib/types.ts b/src/llama_stack_ui/lib/types.ts
similarity index 100%
rename from src/llama_stack/ui/lib/types.ts
rename to src/llama_stack_ui/lib/types.ts
diff --git a/src/llama_stack/ui/lib/utils.tsx b/src/llama_stack_ui/lib/utils.tsx
similarity index 100%
rename from src/llama_stack/ui/lib/utils.tsx
rename to src/llama_stack_ui/lib/utils.tsx
diff --git a/src/llama_stack/ui/next.config.ts b/src/llama_stack_ui/next.config.ts
similarity index 100%
rename from src/llama_stack/ui/next.config.ts
rename to src/llama_stack_ui/next.config.ts
diff --git a/src/llama_stack/ui/package-lock.json b/src/llama_stack_ui/package-lock.json
similarity index 100%
rename from src/llama_stack/ui/package-lock.json
rename to src/llama_stack_ui/package-lock.json
diff --git a/src/llama_stack/ui/package.json b/src/llama_stack_ui/package.json
similarity index 100%
rename from src/llama_stack/ui/package.json
rename to src/llama_stack_ui/package.json
diff --git a/src/llama_stack/ui/playwright.config.ts b/src/llama_stack_ui/playwright.config.ts
similarity index 100%
rename from src/llama_stack/ui/playwright.config.ts
rename to src/llama_stack_ui/playwright.config.ts
diff --git a/src/llama_stack/ui/postcss.config.mjs b/src/llama_stack_ui/postcss.config.mjs
similarity index 100%
rename from src/llama_stack/ui/postcss.config.mjs
rename to src/llama_stack_ui/postcss.config.mjs
diff --git a/src/llama_stack/ui/public/favicon.ico b/src/llama_stack_ui/public/favicon.ico
similarity index 100%
rename from src/llama_stack/ui/public/favicon.ico
rename to src/llama_stack_ui/public/favicon.ico
diff --git a/src/llama_stack/ui/public/file.svg b/src/llama_stack_ui/public/file.svg
similarity index 100%
rename from src/llama_stack/ui/public/file.svg
rename to src/llama_stack_ui/public/file.svg
diff --git a/src/llama_stack/ui/public/globe.svg b/src/llama_stack_ui/public/globe.svg
similarity index 100%
rename from src/llama_stack/ui/public/globe.svg
rename to src/llama_stack_ui/public/globe.svg
diff --git a/src/llama_stack/ui/public/logo.webp b/src/llama_stack_ui/public/logo.webp
similarity index 100%
rename from src/llama_stack/ui/public/logo.webp
rename to src/llama_stack_ui/public/logo.webp
diff --git a/src/llama_stack/ui/public/next.svg b/src/llama_stack_ui/public/next.svg
similarity index 100%
rename from src/llama_stack/ui/public/next.svg
rename to src/llama_stack_ui/public/next.svg
diff --git a/src/llama_stack/ui/public/vercel.svg b/src/llama_stack_ui/public/vercel.svg
similarity index 100%
rename from src/llama_stack/ui/public/vercel.svg
rename to src/llama_stack_ui/public/vercel.svg
diff --git a/src/llama_stack/ui/public/window.svg b/src/llama_stack_ui/public/window.svg
similarity index 100%
rename from src/llama_stack/ui/public/window.svg
rename to src/llama_stack_ui/public/window.svg
diff --git a/src/llama_stack/ui/tsconfig.json b/src/llama_stack_ui/tsconfig.json
similarity index 100%
rename from src/llama_stack/ui/tsconfig.json
rename to src/llama_stack_ui/tsconfig.json
diff --git a/src/llama_stack/ui/types/next-auth.d.ts b/src/llama_stack_ui/types/next-auth.d.ts
similarity index 100%
rename from src/llama_stack/ui/types/next-auth.d.ts
rename to src/llama_stack_ui/types/next-auth.d.ts