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