From 808bc634747a96a7f4ed445e2c843f5597b07b7b Mon Sep 17 00:00:00 2001 From: Casey Brooks Date: Fri, 20 Mar 2026 02:05:13 +0000 Subject: [PATCH 1/5] feat(proto): update API schemas - rename teams proto to agents\n- add gateway service protos\n- remove OpenAPI specs/workflow\n- relax buf lint rules for gateways --- .github/workflows/openapi-publish.yml | 114 ---------------- .spectral.yaml | 2 - buf.yaml | 3 + .../v1/components/parameters/ChatIdPath.yaml | 6 - .../components/responses/ProblemResponse.yaml | 5 - openapi/chat/v1/components/schemas/Chat.yaml | 9 -- .../components/schemas/ChatCreateRequest.yaml | 11 -- .../v1/components/schemas/ChatMessage.yaml | 11 -- .../schemas/ChatMessageCreateRequest.yaml | 12 -- .../components/schemas/ChatParticipant.yaml | 5 - .../components/schemas/MarkAsReadRequest.yaml | 9 -- .../schemas/MarkAsReadResponse.yaml | 9 -- .../schemas/PaginatedChatMessages.yaml | 13 -- .../v1/components/schemas/PaginatedChats.yaml | 9 -- .../chat/v1/components/schemas/Problem.yaml | 8 -- openapi/chat/v1/openapi.yaml | 44 ------- openapi/chat/v1/paths/chat-messages.yaml | 56 -------- openapi/chat/v1/paths/chat-read.yaml | 25 ---- openapi/chat/v1/paths/chats.yaml | 51 ------- .../components/responses/ProblemResponse.yaml | 5 - openapi/files/v1/components/schemas/File.yaml | 8 -- .../files/v1/components/schemas/Problem.yaml | 8 -- openapi/files/v1/openapi.yaml | 20 --- openapi/files/v1/paths/files.yaml | 23 ---- .../llm/v1/components/parameters/IdPath.yaml | 6 - .../components/responses/ProblemResponse.yaml | 5 - .../llm/v1/components/schemas/AuthMethod.yaml | 2 - .../llm/v1/components/schemas/EntityMeta.yaml | 6 - .../v1/components/schemas/LLMProvider.yaml | 7 - .../schemas/LLMProviderCreateRequest.yaml | 6 - .../schemas/LLMProviderUpdateRequest.yaml | 6 - openapi/llm/v1/components/schemas/Model.yaml | 8 -- .../schemas/ModelCreateRequest.yaml | 6 - .../schemas/ModelUpdateRequest.yaml | 6 - .../schemas/PaginatedLLMProviders.yaml | 9 -- .../components/schemas/PaginatedModels.yaml | 9 -- .../llm/v1/components/schemas/Problem.yaml | 8 -- openapi/llm/v1/openapi.yaml | 51 ------- openapi/llm/v1/paths/model-by-id.yaml | 44 ------- openapi/llm/v1/paths/models.yaml | 50 ------- openapi/llm/v1/paths/provider-by-id.yaml | 44 ------- openapi/llm/v1/paths/providers.yaml | 44 ------- openapi/llm/v1/paths/responses.yaml | 26 ---- .../team/v1/components/parameters/IdPath.yaml | 6 - .../components/responses/ProblemResponse.yaml | 5 - openapi/team/v1/components/schemas/Agent.yaml | 14 -- .../schemas/AgentCreateRequest.yaml | 12 -- .../schemas/AgentUpdateRequest.yaml | 12 -- .../components/schemas/ComputeResources.yaml | 6 - .../v1/components/schemas/EntityMeta.yaml | 6 - openapi/team/v1/components/schemas/Env.yaml | 26 ---- .../components/schemas/EnvCreateRequest.yaml | 24 ---- .../components/schemas/EnvUpdateRequest.yaml | 7 - openapi/team/v1/components/schemas/Hook.yaml | 11 -- .../components/schemas/HookCreateRequest.yaml | 9 -- .../components/schemas/HookUpdateRequest.yaml | 8 -- .../v1/components/schemas/InitScript.yaml | 19 --- .../schemas/InitScriptCreateRequest.yaml | 17 --- .../schemas/InitScriptUpdateRequest.yaml | 5 - openapi/team/v1/components/schemas/Mcp.yaml | 10 -- .../components/schemas/McpCreateRequest.yaml | 8 -- .../components/schemas/McpUpdateRequest.yaml | 7 - .../components/schemas/PaginatedAgents.yaml | 7 - .../v1/components/schemas/PaginatedEnvs.yaml | 7 - .../v1/components/schemas/PaginatedHooks.yaml | 7 - .../schemas/PaginatedInitScripts.yaml | 7 - .../v1/components/schemas/PaginatedMcps.yaml | 7 - .../components/schemas/PaginatedSkills.yaml | 7 - .../schemas/PaginatedVolumeAttachments.yaml | 7 - .../components/schemas/PaginatedVolumes.yaml | 7 - .../team/v1/components/schemas/Problem.yaml | 8 -- openapi/team/v1/components/schemas/Skill.yaml | 9 -- .../schemas/SkillCreateRequest.yaml | 7 - .../schemas/SkillUpdateRequest.yaml | 6 - .../team/v1/components/schemas/Volume.yaml | 11 -- .../components/schemas/VolumeAttachment.yaml | 18 --- .../VolumeAttachmentCreateRequest.yaml | 16 --- .../schemas/VolumeCreateRequest.yaml | 9 -- .../schemas/VolumeUpdateRequest.yaml | 9 -- openapi/team/v1/openapi.yaml | 124 ------------------ openapi/team/v1/paths/agent-by-id.yaml | 44 ------- openapi/team/v1/paths/agents.yaml | 42 ------ openapi/team/v1/paths/env-by-id.yaml | 44 ------- openapi/team/v1/paths/envs.yaml | 57 -------- openapi/team/v1/paths/hook-by-id.yaml | 44 ------- openapi/team/v1/paths/hooks.yaml | 47 ------- openapi/team/v1/paths/init-script-by-id.yaml | 44 ------- openapi/team/v1/paths/init-scripts.yaml | 57 -------- openapi/team/v1/paths/mcp-by-id.yaml | 44 ------- openapi/team/v1/paths/mcps.yaml | 47 ------- openapi/team/v1/paths/skill-by-id.yaml | 44 ------- openapi/team/v1/paths/skills.yaml | 47 ------- .../v1/paths/volume-attachment-by-id.yaml | 24 ---- openapi/team/v1/paths/volume-attachments.yaml | 62 --------- openapi/team/v1/paths/volume-by-id.yaml | 44 ------- openapi/team/v1/paths/volumes.yaml | 42 ------ .../v1/teams.proto => agents/v1/agents.proto} | 8 +- proto/agynio/api/gateway/v1/agent_state.proto | 28 ++++ proto/agynio/api/gateway/v1/agents.proto | 71 ++++++++++ proto/agynio/api/gateway/v1/chat.proto | 15 +++ proto/agynio/api/gateway/v1/files.proto | 14 ++ proto/agynio/api/gateway/v1/llm.proto | 13 ++ .../agynio/api/gateway/v1/notifications.proto | 12 ++ proto/agynio/api/gateway/v1/secrets.proto | 11 ++ proto/agynio/api/gateway/v1/threads.proto | 19 +++ .../api/gateway/v1/token_counting.proto | 12 ++ 106 files changed, 202 insertions(+), 2028 deletions(-) delete mode 100644 .github/workflows/openapi-publish.yml delete mode 100644 .spectral.yaml delete mode 100644 openapi/chat/v1/components/parameters/ChatIdPath.yaml delete mode 100644 openapi/chat/v1/components/responses/ProblemResponse.yaml delete mode 100644 openapi/chat/v1/components/schemas/Chat.yaml delete mode 100644 openapi/chat/v1/components/schemas/ChatCreateRequest.yaml delete mode 100644 openapi/chat/v1/components/schemas/ChatMessage.yaml delete mode 100644 openapi/chat/v1/components/schemas/ChatMessageCreateRequest.yaml delete mode 100644 openapi/chat/v1/components/schemas/ChatParticipant.yaml delete mode 100644 openapi/chat/v1/components/schemas/MarkAsReadRequest.yaml delete mode 100644 openapi/chat/v1/components/schemas/MarkAsReadResponse.yaml delete mode 100644 openapi/chat/v1/components/schemas/PaginatedChatMessages.yaml delete mode 100644 openapi/chat/v1/components/schemas/PaginatedChats.yaml delete mode 100644 openapi/chat/v1/components/schemas/Problem.yaml delete mode 100644 openapi/chat/v1/openapi.yaml delete mode 100644 openapi/chat/v1/paths/chat-messages.yaml delete mode 100644 openapi/chat/v1/paths/chat-read.yaml delete mode 100644 openapi/chat/v1/paths/chats.yaml delete mode 100644 openapi/files/v1/components/responses/ProblemResponse.yaml delete mode 100644 openapi/files/v1/components/schemas/File.yaml delete mode 100644 openapi/files/v1/components/schemas/Problem.yaml delete mode 100644 openapi/files/v1/openapi.yaml delete mode 100644 openapi/files/v1/paths/files.yaml delete mode 100644 openapi/llm/v1/components/parameters/IdPath.yaml delete mode 100644 openapi/llm/v1/components/responses/ProblemResponse.yaml delete mode 100644 openapi/llm/v1/components/schemas/AuthMethod.yaml delete mode 100644 openapi/llm/v1/components/schemas/EntityMeta.yaml delete mode 100644 openapi/llm/v1/components/schemas/LLMProvider.yaml delete mode 100644 openapi/llm/v1/components/schemas/LLMProviderCreateRequest.yaml delete mode 100644 openapi/llm/v1/components/schemas/LLMProviderUpdateRequest.yaml delete mode 100644 openapi/llm/v1/components/schemas/Model.yaml delete mode 100644 openapi/llm/v1/components/schemas/ModelCreateRequest.yaml delete mode 100644 openapi/llm/v1/components/schemas/ModelUpdateRequest.yaml delete mode 100644 openapi/llm/v1/components/schemas/PaginatedLLMProviders.yaml delete mode 100644 openapi/llm/v1/components/schemas/PaginatedModels.yaml delete mode 100644 openapi/llm/v1/components/schemas/Problem.yaml delete mode 100644 openapi/llm/v1/openapi.yaml delete mode 100644 openapi/llm/v1/paths/model-by-id.yaml delete mode 100644 openapi/llm/v1/paths/models.yaml delete mode 100644 openapi/llm/v1/paths/provider-by-id.yaml delete mode 100644 openapi/llm/v1/paths/providers.yaml delete mode 100644 openapi/llm/v1/paths/responses.yaml delete mode 100644 openapi/team/v1/components/parameters/IdPath.yaml delete mode 100644 openapi/team/v1/components/responses/ProblemResponse.yaml delete mode 100644 openapi/team/v1/components/schemas/Agent.yaml delete mode 100644 openapi/team/v1/components/schemas/AgentCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/AgentUpdateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/ComputeResources.yaml delete mode 100644 openapi/team/v1/components/schemas/EntityMeta.yaml delete mode 100644 openapi/team/v1/components/schemas/Env.yaml delete mode 100644 openapi/team/v1/components/schemas/EnvCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/EnvUpdateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/Hook.yaml delete mode 100644 openapi/team/v1/components/schemas/HookCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/HookUpdateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/InitScript.yaml delete mode 100644 openapi/team/v1/components/schemas/InitScriptCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/InitScriptUpdateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/Mcp.yaml delete mode 100644 openapi/team/v1/components/schemas/McpCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/McpUpdateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedAgents.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedEnvs.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedHooks.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedInitScripts.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedMcps.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedSkills.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedVolumeAttachments.yaml delete mode 100644 openapi/team/v1/components/schemas/PaginatedVolumes.yaml delete mode 100644 openapi/team/v1/components/schemas/Problem.yaml delete mode 100644 openapi/team/v1/components/schemas/Skill.yaml delete mode 100644 openapi/team/v1/components/schemas/SkillCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/SkillUpdateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/Volume.yaml delete mode 100644 openapi/team/v1/components/schemas/VolumeAttachment.yaml delete mode 100644 openapi/team/v1/components/schemas/VolumeAttachmentCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/VolumeCreateRequest.yaml delete mode 100644 openapi/team/v1/components/schemas/VolumeUpdateRequest.yaml delete mode 100644 openapi/team/v1/openapi.yaml delete mode 100644 openapi/team/v1/paths/agent-by-id.yaml delete mode 100644 openapi/team/v1/paths/agents.yaml delete mode 100644 openapi/team/v1/paths/env-by-id.yaml delete mode 100644 openapi/team/v1/paths/envs.yaml delete mode 100644 openapi/team/v1/paths/hook-by-id.yaml delete mode 100644 openapi/team/v1/paths/hooks.yaml delete mode 100644 openapi/team/v1/paths/init-script-by-id.yaml delete mode 100644 openapi/team/v1/paths/init-scripts.yaml delete mode 100644 openapi/team/v1/paths/mcp-by-id.yaml delete mode 100644 openapi/team/v1/paths/mcps.yaml delete mode 100644 openapi/team/v1/paths/skill-by-id.yaml delete mode 100644 openapi/team/v1/paths/skills.yaml delete mode 100644 openapi/team/v1/paths/volume-attachment-by-id.yaml delete mode 100644 openapi/team/v1/paths/volume-attachments.yaml delete mode 100644 openapi/team/v1/paths/volume-by-id.yaml delete mode 100644 openapi/team/v1/paths/volumes.yaml rename proto/agynio/api/{teams/v1/teams.proto => agents/v1/agents.proto} (98%) create mode 100644 proto/agynio/api/gateway/v1/agent_state.proto create mode 100644 proto/agynio/api/gateway/v1/agents.proto create mode 100644 proto/agynio/api/gateway/v1/chat.proto create mode 100644 proto/agynio/api/gateway/v1/files.proto create mode 100644 proto/agynio/api/gateway/v1/llm.proto create mode 100644 proto/agynio/api/gateway/v1/notifications.proto create mode 100644 proto/agynio/api/gateway/v1/secrets.proto create mode 100644 proto/agynio/api/gateway/v1/threads.proto create mode 100644 proto/agynio/api/gateway/v1/token_counting.proto diff --git a/.github/workflows/openapi-publish.yml b/.github/workflows/openapi-publish.yml deleted file mode 100644 index 7ac48f3..0000000 --- a/.github/workflows/openapi-publish.yml +++ /dev/null @@ -1,114 +0,0 @@ -name: OpenAPI Lint & Publish - -on: - pull_request: - paths: - - 'openapi/**' - push: - branches: [ main ] - paths: - - 'openapi/**' - -jobs: - validate: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: '20' - - name: Install CLI tools (Redocly, Spectral) - run: | - npm install -g @redocly/cli @stoplight/spectral-cli - - name: Bundle spec (team v1) - run: | - mkdir -p dist - redocly bundle openapi/team/v1/openapi.yaml -o dist/team-v1.yaml - - name: Bundle spec (files v1) - run: | - mkdir -p dist - redocly bundle openapi/files/v1/openapi.yaml -o dist/files-v1.yaml - - name: Bundle spec (llm v1) - run: | - mkdir -p dist - redocly bundle openapi/llm/v1/openapi.yaml -o dist/llm-v1.yaml - - name: Lint bundled spec with Spectral (team v1) - run: | - spectral lint dist/team-v1.yaml - - name: Lint bundled spec with Spectral (files v1) - run: | - spectral lint dist/files-v1.yaml - - name: Lint bundled spec with Spectral (llm v1) - run: | - spectral lint dist/llm-v1.yaml - - name: Upload bundled artifact (team v1) - uses: actions/upload-artifact@v4 - with: - name: team-v1-openapi - path: dist/team-v1.yaml - - name: Upload bundled artifact (files v1) - uses: actions/upload-artifact@v4 - with: - name: files-v1-openapi - path: dist/files-v1.yaml - - name: Upload bundled artifact (llm v1) - uses: actions/upload-artifact@v4 - with: - name: llm-v1-openapi - path: dist/llm-v1.yaml - - publish: - if: github.event_name == 'push' - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: '20' - - name: Install Redocly - run: | - npm install -g @redocly/cli - - name: Bundle spec (team v1) - run: | - mkdir -p dist - redocly bundle openapi/team/v1/openapi.yaml -o dist/team-v1.yaml - - name: Bundle spec (files v1) - run: | - mkdir -p dist - redocly bundle openapi/files/v1/openapi.yaml -o dist/files-v1.yaml - - name: Bundle spec (llm v1) - run: | - mkdir -p dist - redocly bundle openapi/llm/v1/openapi.yaml -o dist/llm-v1.yaml - - name: Install ORAS - env: - ORAS_VERSION: '1.1.0' - run: | - curl -L -o oras.tar.gz "https://github.com/oras-project/oras/releases/download/v${ORAS_VERSION}/oras_${ORAS_VERSION}_linux_amd64.tar.gz" - tar -xzf oras.tar.gz - sudo mv oras /usr/local/bin/oras - oras version - - name: Login to GHCR - env: - CR_PAT: ${{ secrets.GITHUB_TOKEN }} - run: | - echo "$CR_PAT" | oras login ghcr.io -u "${{ github.actor }}" --password-stdin - - name: Push OCI artifact to GHCR (major tag only) - run: | - oras push ghcr.io/agynio/openapi/team:1 \ - dist/team-v1.yaml:application/vnd.oai.openapi+yaml - - name: Push OCI artifact to GHCR (files v1) - run: | - oras push ghcr.io/agynio/openapi/files:1 \ - dist/files-v1.yaml:application/vnd.oai.openapi+yaml - - name: Push OCI artifact to GHCR (llm v1) - run: | - oras push ghcr.io/agynio/openapi/llm:1 \ - dist/llm-v1.yaml:application/vnd.oai.openapi+yaml diff --git a/.spectral.yaml b/.spectral.yaml deleted file mode 100644 index 22cd462..0000000 --- a/.spectral.yaml +++ /dev/null @@ -1,2 +0,0 @@ -extends: - - spectral:oas diff --git a/buf.yaml b/buf.yaml index 19078b0..9eada81 100644 --- a/buf.yaml +++ b/buf.yaml @@ -7,6 +7,9 @@ modules: lint: use: - STANDARD + except: + - RPC_REQUEST_RESPONSE_UNIQUE + - SERVICE_SUFFIX breaking: use: - FILE diff --git a/openapi/chat/v1/components/parameters/ChatIdPath.yaml b/openapi/chat/v1/components/parameters/ChatIdPath.yaml deleted file mode 100644 index 5874a12..0000000 --- a/openapi/chat/v1/components/parameters/ChatIdPath.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: chatId -in: path -required: true -schema: - type: string - format: uuid diff --git a/openapi/chat/v1/components/responses/ProblemResponse.yaml b/openapi/chat/v1/components/responses/ProblemResponse.yaml deleted file mode 100644 index 0a98c5a..0000000 --- a/openapi/chat/v1/components/responses/ProblemResponse.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: RFC 7807 problem response -content: - application/problem+json: - schema: - $ref: '../schemas/Problem.yaml' diff --git a/openapi/chat/v1/components/schemas/Chat.yaml b/openapi/chat/v1/components/schemas/Chat.yaml deleted file mode 100644 index 01a47de..0000000 --- a/openapi/chat/v1/components/schemas/Chat.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - id: { type: string, format: uuid } - participants: - type: array - items: { $ref: './ChatParticipant.yaml' } - createdAt: { type: string, format: date-time } - updatedAt: { type: string, format: date-time } -required: [id, participants, createdAt] diff --git a/openapi/chat/v1/components/schemas/ChatCreateRequest.yaml b/openapi/chat/v1/components/schemas/ChatCreateRequest.yaml deleted file mode 100644 index d5b7f96..0000000 --- a/openapi/chat/v1/components/schemas/ChatCreateRequest.yaml +++ /dev/null @@ -1,11 +0,0 @@ -type: object -description: >- - Create a new chat. The authenticated user is added as a participant - automatically. Provide the identity IDs of other participants. -properties: - participantIds: - type: array - items: { type: string, format: uuid } - minItems: 1 - description: Identity IDs of other participants. -required: [participantIds] diff --git a/openapi/chat/v1/components/schemas/ChatMessage.yaml b/openapi/chat/v1/components/schemas/ChatMessage.yaml deleted file mode 100644 index 00fa5b1..0000000 --- a/openapi/chat/v1/components/schemas/ChatMessage.yaml +++ /dev/null @@ -1,11 +0,0 @@ -type: object -properties: - id: { type: string, format: uuid } - chatId: { type: string, format: uuid } - senderId: { type: string, format: uuid } - body: { type: string } - fileIds: - type: array - items: { type: string, format: uuid } - createdAt: { type: string, format: date-time } -required: [id, chatId, senderId, body, fileIds, createdAt] diff --git a/openapi/chat/v1/components/schemas/ChatMessageCreateRequest.yaml b/openapi/chat/v1/components/schemas/ChatMessageCreateRequest.yaml deleted file mode 100644 index c23e257..0000000 --- a/openapi/chat/v1/components/schemas/ChatMessageCreateRequest.yaml +++ /dev/null @@ -1,12 +0,0 @@ -type: object -description: >- - Send a message in a chat. The sender is the authenticated user. - At least one of body or fileIds must be provided. -properties: - body: - type: string - description: Text content. May be empty when fileIds is non-empty. - fileIds: - type: array - items: { type: string, format: uuid } - description: File references (UUIDs). May be empty when body is non-empty. diff --git a/openapi/chat/v1/components/schemas/ChatParticipant.yaml b/openapi/chat/v1/components/schemas/ChatParticipant.yaml deleted file mode 100644 index 05b2c5f..0000000 --- a/openapi/chat/v1/components/schemas/ChatParticipant.yaml +++ /dev/null @@ -1,5 +0,0 @@ -type: object -properties: - id: { type: string, format: uuid } - joinedAt: { type: string, format: date-time } -required: [id, joinedAt] diff --git a/openapi/chat/v1/components/schemas/MarkAsReadRequest.yaml b/openapi/chat/v1/components/schemas/MarkAsReadRequest.yaml deleted file mode 100644 index 3d3ed4b..0000000 --- a/openapi/chat/v1/components/schemas/MarkAsReadRequest.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -description: Mark messages as read for the authenticated user. -properties: - messageIds: - type: array - items: { type: string, format: uuid } - minItems: 1 - description: Message UUIDs to acknowledge as read. Must belong to the specified chat. -required: [messageIds] diff --git a/openapi/chat/v1/components/schemas/MarkAsReadResponse.yaml b/openapi/chat/v1/components/schemas/MarkAsReadResponse.yaml deleted file mode 100644 index d419f42..0000000 --- a/openapi/chat/v1/components/schemas/MarkAsReadResponse.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - readCount: - type: integer - minimum: 0 - description: >- - Number of messages newly marked as read. Already-read and unknown - IDs are silently ignored for idempotency. -required: [readCount] diff --git a/openapi/chat/v1/components/schemas/PaginatedChatMessages.yaml b/openapi/chat/v1/components/schemas/PaginatedChatMessages.yaml deleted file mode 100644 index b2d01b2..0000000 --- a/openapi/chat/v1/components/schemas/PaginatedChatMessages.yaml +++ /dev/null @@ -1,13 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './ChatMessage.yaml' } - nextPageToken: - type: string - description: Opaque cursor for the next page. Absent when there are no more results. - unreadCount: - type: integer - minimum: 0 - description: Number of unread messages for the authenticated user in this chat. -required: [items, unreadCount] diff --git a/openapi/chat/v1/components/schemas/PaginatedChats.yaml b/openapi/chat/v1/components/schemas/PaginatedChats.yaml deleted file mode 100644 index fa08f3e..0000000 --- a/openapi/chat/v1/components/schemas/PaginatedChats.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Chat.yaml' } - nextPageToken: - type: string - description: Opaque cursor for the next page. Absent when there are no more results. -required: [items] diff --git a/openapi/chat/v1/components/schemas/Problem.yaml b/openapi/chat/v1/components/schemas/Problem.yaml deleted file mode 100644 index ef475b1..0000000 --- a/openapi/chat/v1/components/schemas/Problem.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - type: { type: string, format: uri } - title: { type: string } - status: { type: integer } - detail: { type: string } - instance: { type: string, format: uri } -required: [title, status] diff --git a/openapi/chat/v1/openapi.yaml b/openapi/chat/v1/openapi.yaml deleted file mode 100644 index 8e5e708..0000000 --- a/openapi/chat/v1/openapi.yaml +++ /dev/null @@ -1,44 +0,0 @@ -openapi: 3.0.3 -info: - title: Chat API - version: 0.1.0 -servers: - - url: https://api.example.com -tags: - - name: Chats - - name: Messages -paths: - /chats: - $ref: './paths/chats.yaml' - /chats/{chatId}/messages: - $ref: './paths/chat-messages.yaml' - /chats/{chatId}/read: - $ref: './paths/chat-read.yaml' -components: - parameters: - ChatIdPath: - $ref: './components/parameters/ChatIdPath.yaml' - responses: - ProblemResponse: - $ref: './components/responses/ProblemResponse.yaml' - schemas: - Problem: - $ref: './components/schemas/Problem.yaml' - Chat: - $ref: './components/schemas/Chat.yaml' - ChatParticipant: - $ref: './components/schemas/ChatParticipant.yaml' - ChatCreateRequest: - $ref: './components/schemas/ChatCreateRequest.yaml' - PaginatedChats: - $ref: './components/schemas/PaginatedChats.yaml' - ChatMessage: - $ref: './components/schemas/ChatMessage.yaml' - ChatMessageCreateRequest: - $ref: './components/schemas/ChatMessageCreateRequest.yaml' - PaginatedChatMessages: - $ref: './components/schemas/PaginatedChatMessages.yaml' - MarkAsReadRequest: - $ref: './components/schemas/MarkAsReadRequest.yaml' - MarkAsReadResponse: - $ref: './components/schemas/MarkAsReadResponse.yaml' diff --git a/openapi/chat/v1/paths/chat-messages.yaml b/openapi/chat/v1/paths/chat-messages.yaml deleted file mode 100644 index d8153e7..0000000 --- a/openapi/chat/v1/paths/chat-messages.yaml +++ /dev/null @@ -1,56 +0,0 @@ -get: - operationId: getChatMessages - tags: [Messages] - summary: List messages - description: >- - List messages in a chat with cursor-based pagination. - Includes unread count for the authenticated user. - Read-only — does not change acknowledgment state. - parameters: - - $ref: '../components/parameters/ChatIdPath.yaml' - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - description: Maximum number of messages to return. - - in: query - name: pageToken - schema: - type: string - description: Opaque cursor from a previous response's nextPageToken. - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedChatMessages.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - operationId: sendChatMessage - tags: [Messages] - summary: Send message - description: >- - Send a message in a chat. The sender is the authenticated user. - At least one of body or fileIds must be provided. - parameters: - - $ref: '../components/parameters/ChatIdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/ChatMessageCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/ChatMessage.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/chat/v1/paths/chat-read.yaml b/openapi/chat/v1/paths/chat-read.yaml deleted file mode 100644 index fe1a108..0000000 --- a/openapi/chat/v1/paths/chat-read.yaml +++ /dev/null @@ -1,25 +0,0 @@ -post: - operationId: markChatAsRead - tags: [Messages] - summary: Mark messages as read - description: >- - Mark messages as read for the authenticated user. Delegates to - Threads AckMessages. Already-read and unknown IDs are silently - ignored for idempotency. - parameters: - - $ref: '../components/parameters/ChatIdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/MarkAsReadRequest.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/MarkAsReadResponse.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/chat/v1/paths/chats.yaml b/openapi/chat/v1/paths/chats.yaml deleted file mode 100644 index d197a56..0000000 --- a/openapi/chat/v1/paths/chats.yaml +++ /dev/null @@ -1,51 +0,0 @@ -get: - operationId: getChats - tags: [Chats] - summary: List chats - description: >- - List chats for the authenticated user with cursor-based pagination. - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - description: Maximum number of chats to return. - - in: query - name: pageToken - schema: - type: string - description: Opaque cursor from a previous response's nextPageToken. - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedChats.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - operationId: createChat - tags: [Chats] - summary: Create chat - description: >- - Create a new chat thread. The authenticated user is automatically - added as a participant. - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/ChatCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Chat.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/files/v1/components/responses/ProblemResponse.yaml b/openapi/files/v1/components/responses/ProblemResponse.yaml deleted file mode 100644 index 0a98c5a..0000000 --- a/openapi/files/v1/components/responses/ProblemResponse.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: RFC 7807 problem response -content: - application/problem+json: - schema: - $ref: '../schemas/Problem.yaml' diff --git a/openapi/files/v1/components/schemas/File.yaml b/openapi/files/v1/components/schemas/File.yaml deleted file mode 100644 index d62069d..0000000 --- a/openapi/files/v1/components/schemas/File.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - id: { type: string, format: uuid } - filename: { type: string } - contentType: { type: string } - sizeBytes: { type: integer, format: int64 } - createdAt: { type: string, format: date-time } -required: [id, filename, contentType, sizeBytes, createdAt] diff --git a/openapi/files/v1/components/schemas/Problem.yaml b/openapi/files/v1/components/schemas/Problem.yaml deleted file mode 100644 index ef475b1..0000000 --- a/openapi/files/v1/components/schemas/Problem.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - type: { type: string, format: uri } - title: { type: string } - status: { type: integer } - detail: { type: string } - instance: { type: string, format: uri } -required: [title, status] diff --git a/openapi/files/v1/openapi.yaml b/openapi/files/v1/openapi.yaml deleted file mode 100644 index ad80b48..0000000 --- a/openapi/files/v1/openapi.yaml +++ /dev/null @@ -1,20 +0,0 @@ -openapi: 3.0.3 -info: - title: Files API - version: 0.1.0 -servers: - - url: https://api.example.com -tags: - - name: Files -paths: - /files: - $ref: './paths/files.yaml' -components: - responses: - ProblemResponse: - $ref: './components/responses/ProblemResponse.yaml' - schemas: - Problem: - $ref: './components/schemas/Problem.yaml' - File: - $ref: './components/schemas/File.yaml' diff --git a/openapi/files/v1/paths/files.yaml b/openapi/files/v1/paths/files.yaml deleted file mode 100644 index 1af66bc..0000000 --- a/openapi/files/v1/paths/files.yaml +++ /dev/null @@ -1,23 +0,0 @@ -post: - tags: [Files] - summary: Upload file - requestBody: - required: true - content: - multipart/form-data: - schema: - type: object - properties: - file: - type: string - format: binary - required: [file] - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/File.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/llm/v1/components/parameters/IdPath.yaml b/openapi/llm/v1/components/parameters/IdPath.yaml deleted file mode 100644 index 26f2028..0000000 --- a/openapi/llm/v1/components/parameters/IdPath.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: path -required: true -schema: - type: string - format: uuid diff --git a/openapi/llm/v1/components/responses/ProblemResponse.yaml b/openapi/llm/v1/components/responses/ProblemResponse.yaml deleted file mode 100644 index 0a98c5a..0000000 --- a/openapi/llm/v1/components/responses/ProblemResponse.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: RFC 7807 problem response -content: - application/problem+json: - schema: - $ref: '../schemas/Problem.yaml' diff --git a/openapi/llm/v1/components/schemas/AuthMethod.yaml b/openapi/llm/v1/components/schemas/AuthMethod.yaml deleted file mode 100644 index 3c257cd..0000000 --- a/openapi/llm/v1/components/schemas/AuthMethod.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: string -enum: [bearer] diff --git a/openapi/llm/v1/components/schemas/EntityMeta.yaml b/openapi/llm/v1/components/schemas/EntityMeta.yaml deleted file mode 100644 index 7769ea1..0000000 --- a/openapi/llm/v1/components/schemas/EntityMeta.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - id: { type: string, format: uuid } - createdAt: { type: string, format: date-time } - updatedAt: { type: string, format: date-time } -required: [id, createdAt] diff --git a/openapi/llm/v1/components/schemas/LLMProvider.yaml b/openapi/llm/v1/components/schemas/LLMProvider.yaml deleted file mode 100644 index c8d773c..0000000 --- a/openapi/llm/v1/components/schemas/LLMProvider.yaml +++ /dev/null @@ -1,7 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - endpoint: { type: string, format: uri } - authMethod: { $ref: './AuthMethod.yaml' } - required: [endpoint, authMethod] diff --git a/openapi/llm/v1/components/schemas/LLMProviderCreateRequest.yaml b/openapi/llm/v1/components/schemas/LLMProviderCreateRequest.yaml deleted file mode 100644 index e5944cf..0000000 --- a/openapi/llm/v1/components/schemas/LLMProviderCreateRequest.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - endpoint: { type: string, format: uri } - authMethod: { $ref: './AuthMethod.yaml' } - token: { type: string } -required: [endpoint, authMethod, token] diff --git a/openapi/llm/v1/components/schemas/LLMProviderUpdateRequest.yaml b/openapi/llm/v1/components/schemas/LLMProviderUpdateRequest.yaml deleted file mode 100644 index 9b6939c..0000000 --- a/openapi/llm/v1/components/schemas/LLMProviderUpdateRequest.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - endpoint: { type: string, format: uri } - authMethod: { $ref: './AuthMethod.yaml' } - token: { type: string } -additionalProperties: false diff --git a/openapi/llm/v1/components/schemas/Model.yaml b/openapi/llm/v1/components/schemas/Model.yaml deleted file mode 100644 index 3a134b7..0000000 --- a/openapi/llm/v1/components/schemas/Model.yaml +++ /dev/null @@ -1,8 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - name: { type: string } - llmProviderId: { type: string, format: uuid } - remoteName: { type: string } - required: [name, llmProviderId, remoteName] diff --git a/openapi/llm/v1/components/schemas/ModelCreateRequest.yaml b/openapi/llm/v1/components/schemas/ModelCreateRequest.yaml deleted file mode 100644 index 03cea76..0000000 --- a/openapi/llm/v1/components/schemas/ModelCreateRequest.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - name: { type: string } - llmProviderId: { type: string, format: uuid } - remoteName: { type: string } -required: [name, llmProviderId, remoteName] diff --git a/openapi/llm/v1/components/schemas/ModelUpdateRequest.yaml b/openapi/llm/v1/components/schemas/ModelUpdateRequest.yaml deleted file mode 100644 index 0301cac..0000000 --- a/openapi/llm/v1/components/schemas/ModelUpdateRequest.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - name: { type: string } - llmProviderId: { type: string, format: uuid } - remoteName: { type: string } -additionalProperties: false diff --git a/openapi/llm/v1/components/schemas/PaginatedLLMProviders.yaml b/openapi/llm/v1/components/schemas/PaginatedLLMProviders.yaml deleted file mode 100644 index 248ef52..0000000 --- a/openapi/llm/v1/components/schemas/PaginatedLLMProviders.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './LLMProvider.yaml' } - page: { type: integer } - perPage: { type: integer } - total: { type: integer } -required: [items, page, perPage, total] diff --git a/openapi/llm/v1/components/schemas/PaginatedModels.yaml b/openapi/llm/v1/components/schemas/PaginatedModels.yaml deleted file mode 100644 index b1dadf8..0000000 --- a/openapi/llm/v1/components/schemas/PaginatedModels.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Model.yaml' } - page: { type: integer } - perPage: { type: integer } - total: { type: integer } -required: [items, page, perPage, total] diff --git a/openapi/llm/v1/components/schemas/Problem.yaml b/openapi/llm/v1/components/schemas/Problem.yaml deleted file mode 100644 index ef475b1..0000000 --- a/openapi/llm/v1/components/schemas/Problem.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - type: { type: string, format: uri } - title: { type: string } - status: { type: integer } - detail: { type: string } - instance: { type: string, format: uri } -required: [title, status] diff --git a/openapi/llm/v1/openapi.yaml b/openapi/llm/v1/openapi.yaml deleted file mode 100644 index eda7f69..0000000 --- a/openapi/llm/v1/openapi.yaml +++ /dev/null @@ -1,51 +0,0 @@ -openapi: 3.0.3 -info: - title: LLM API - version: 0.1.0 -servers: - - url: https://api.example.com -tags: - - name: LLM Providers - - name: LLM Models - - name: LLM Responses -paths: - /providers: - $ref: './paths/providers.yaml' - /providers/{id}: - $ref: './paths/provider-by-id.yaml' - /models: - $ref: './paths/models.yaml' - /models/{id}: - $ref: './paths/model-by-id.yaml' - /responses: - $ref: './paths/responses.yaml' -components: - parameters: - IdPath: - $ref: './components/parameters/IdPath.yaml' - responses: - ProblemResponse: - $ref: './components/responses/ProblemResponse.yaml' - schemas: - Problem: - $ref: './components/schemas/Problem.yaml' - EntityMeta: - $ref: './components/schemas/EntityMeta.yaml' - AuthMethod: - $ref: './components/schemas/AuthMethod.yaml' - LLMProvider: - $ref: './components/schemas/LLMProvider.yaml' - LLMProviderCreateRequest: - $ref: './components/schemas/LLMProviderCreateRequest.yaml' - LLMProviderUpdateRequest: - $ref: './components/schemas/LLMProviderUpdateRequest.yaml' - PaginatedLLMProviders: - $ref: './components/schemas/PaginatedLLMProviders.yaml' - Model: - $ref: './components/schemas/Model.yaml' - ModelCreateRequest: - $ref: './components/schemas/ModelCreateRequest.yaml' - ModelUpdateRequest: - $ref: './components/schemas/ModelUpdateRequest.yaml' - PaginatedModels: - $ref: './components/schemas/PaginatedModels.yaml' diff --git a/openapi/llm/v1/paths/model-by-id.yaml b/openapi/llm/v1/paths/model-by-id.yaml deleted file mode 100644 index 20af181..0000000 --- a/openapi/llm/v1/paths/model-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [LLM Models] - summary: Get LLM model by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/Model.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [LLM Models] - summary: Update LLM model (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/ModelUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/Model.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [LLM Models] - summary: Delete LLM model - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/llm/v1/paths/models.yaml b/openapi/llm/v1/paths/models.yaml deleted file mode 100644 index 0defec4..0000000 --- a/openapi/llm/v1/paths/models.yaml +++ /dev/null @@ -1,50 +0,0 @@ -get: - tags: [LLM Models] - summary: List LLM models - parameters: - - in: query - name: providerId - schema: - type: string - format: uuid - description: Filter by provider ID - - in: query - name: page - schema: - type: integer - minimum: 1 - default: 1 - - in: query - name: perPage - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedModels.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [LLM Models] - summary: Create LLM model - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/ModelCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Model.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/llm/v1/paths/provider-by-id.yaml b/openapi/llm/v1/paths/provider-by-id.yaml deleted file mode 100644 index dded318..0000000 --- a/openapi/llm/v1/paths/provider-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [LLM Providers] - summary: Get LLM provider by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/LLMProvider.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [LLM Providers] - summary: Update LLM provider (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/LLMProviderUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/LLMProvider.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [LLM Providers] - summary: Delete LLM provider - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/llm/v1/paths/providers.yaml b/openapi/llm/v1/paths/providers.yaml deleted file mode 100644 index eea2313..0000000 --- a/openapi/llm/v1/paths/providers.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [LLM Providers] - summary: List LLM providers - parameters: - - in: query - name: page - schema: - type: integer - minimum: 1 - default: 1 - - in: query - name: perPage - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedLLMProviders.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [LLM Providers] - summary: Create LLM provider - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/LLMProviderCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/LLMProvider.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/llm/v1/paths/responses.yaml b/openapi/llm/v1/paths/responses.yaml deleted file mode 100644 index 77346ee..0000000 --- a/openapi/llm/v1/paths/responses.yaml +++ /dev/null @@ -1,26 +0,0 @@ -post: - tags: [LLM Responses] - summary: Proxy LLM response - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - model_id: { type: string, format: uuid } - required: [model_id] - additionalProperties: true - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - additionalProperties: true - text/event-stream: - schema: - type: string - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/components/parameters/IdPath.yaml b/openapi/team/v1/components/parameters/IdPath.yaml deleted file mode 100644 index 26f2028..0000000 --- a/openapi/team/v1/components/parameters/IdPath.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: path -required: true -schema: - type: string - format: uuid diff --git a/openapi/team/v1/components/responses/ProblemResponse.yaml b/openapi/team/v1/components/responses/ProblemResponse.yaml deleted file mode 100644 index 0a98c5a..0000000 --- a/openapi/team/v1/components/responses/ProblemResponse.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: RFC 7807 problem response -content: - application/problem+json: - schema: - $ref: '../schemas/Problem.yaml' diff --git a/openapi/team/v1/components/schemas/Agent.yaml b/openapi/team/v1/components/schemas/Agent.yaml deleted file mode 100644 index a2029fd..0000000 --- a/openapi/team/v1/components/schemas/Agent.yaml +++ /dev/null @@ -1,14 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - name: { type: string } - role: { type: string } - model: { type: string, format: uuid } - description: { type: string } - configuration: - type: string - description: JSON-encoded agent configuration payload. - image: { type: string } - resources: { $ref: './ComputeResources.yaml' } - required: [name, role, model, configuration, image] diff --git a/openapi/team/v1/components/schemas/AgentCreateRequest.yaml b/openapi/team/v1/components/schemas/AgentCreateRequest.yaml deleted file mode 100644 index 892d08c..0000000 --- a/openapi/team/v1/components/schemas/AgentCreateRequest.yaml +++ /dev/null @@ -1,12 +0,0 @@ -type: object -properties: - name: { type: string } - role: { type: string } - model: { type: string, format: uuid } - description: { type: string } - configuration: - type: string - description: JSON-encoded agent configuration payload. - image: { type: string } - resources: { $ref: './ComputeResources.yaml' } -required: [name, role, model, image] diff --git a/openapi/team/v1/components/schemas/AgentUpdateRequest.yaml b/openapi/team/v1/components/schemas/AgentUpdateRequest.yaml deleted file mode 100644 index 3d40306..0000000 --- a/openapi/team/v1/components/schemas/AgentUpdateRequest.yaml +++ /dev/null @@ -1,12 +0,0 @@ -type: object -properties: - name: { type: string } - role: { type: string } - model: { type: string, format: uuid } - description: { type: string } - configuration: - type: string - description: JSON-encoded agent configuration payload. - image: { type: string } - resources: { $ref: './ComputeResources.yaml' } -additionalProperties: false diff --git a/openapi/team/v1/components/schemas/ComputeResources.yaml b/openapi/team/v1/components/schemas/ComputeResources.yaml deleted file mode 100644 index ebd8d81..0000000 --- a/openapi/team/v1/components/schemas/ComputeResources.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - requestsCpu: { type: string } - requestsMemory: { type: string } - limitsCpu: { type: string } - limitsMemory: { type: string } diff --git a/openapi/team/v1/components/schemas/EntityMeta.yaml b/openapi/team/v1/components/schemas/EntityMeta.yaml deleted file mode 100644 index 7769ea1..0000000 --- a/openapi/team/v1/components/schemas/EntityMeta.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - id: { type: string, format: uuid } - createdAt: { type: string, format: date-time } - updatedAt: { type: string, format: date-time } -required: [id, createdAt] diff --git a/openapi/team/v1/components/schemas/Env.yaml b/openapi/team/v1/components/schemas/Env.yaml deleted file mode 100644 index 6b7bd78..0000000 --- a/openapi/team/v1/components/schemas/Env.yaml +++ /dev/null @@ -1,26 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - name: { type: string } - description: { type: string } - agentId: - type: string - format: uuid - description: Target agent. Mutually exclusive with mcpId and hookId. - mcpId: - type: string - format: uuid - description: Target MCP. Mutually exclusive with agentId and hookId. - hookId: - type: string - format: uuid - description: Target hook. Mutually exclusive with agentId and mcpId. - value: - type: string - description: Plain-text value. Mutually exclusive with secretId. - secretId: - type: string - format: uuid - description: Secret reference. Mutually exclusive with value. - required: [name] diff --git a/openapi/team/v1/components/schemas/EnvCreateRequest.yaml b/openapi/team/v1/components/schemas/EnvCreateRequest.yaml deleted file mode 100644 index a502c6d..0000000 --- a/openapi/team/v1/components/schemas/EnvCreateRequest.yaml +++ /dev/null @@ -1,24 +0,0 @@ -type: object -properties: - name: { type: string } - description: { type: string } - agentId: - type: string - format: uuid - description: Target agent. Mutually exclusive with mcpId and hookId. - mcpId: - type: string - format: uuid - description: Target MCP. Mutually exclusive with agentId and hookId. - hookId: - type: string - format: uuid - description: Target hook. Mutually exclusive with agentId and mcpId. - value: - type: string - description: Plain-text value. Mutually exclusive with secretId. - secretId: - type: string - format: uuid - description: Secret reference. Mutually exclusive with value. -required: [name] diff --git a/openapi/team/v1/components/schemas/EnvUpdateRequest.yaml b/openapi/team/v1/components/schemas/EnvUpdateRequest.yaml deleted file mode 100644 index adc2512..0000000 --- a/openapi/team/v1/components/schemas/EnvUpdateRequest.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - name: { type: string } - description: { type: string } - value: { type: string } - secretId: { type: string, format: uuid } -additionalProperties: false diff --git a/openapi/team/v1/components/schemas/Hook.yaml b/openapi/team/v1/components/schemas/Hook.yaml deleted file mode 100644 index 5a0060e..0000000 --- a/openapi/team/v1/components/schemas/Hook.yaml +++ /dev/null @@ -1,11 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - agentId: { type: string, format: uuid } - event: { type: string } - function: { type: string } - image: { type: string } - resources: { $ref: './ComputeResources.yaml' } - description: { type: string } - required: [agentId, event, function, image] diff --git a/openapi/team/v1/components/schemas/HookCreateRequest.yaml b/openapi/team/v1/components/schemas/HookCreateRequest.yaml deleted file mode 100644 index 2d3ecbb..0000000 --- a/openapi/team/v1/components/schemas/HookCreateRequest.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - agentId: { type: string, format: uuid } - event: { type: string } - function: { type: string } - image: { type: string } - resources: { $ref: './ComputeResources.yaml' } - description: { type: string } -required: [agentId, event, function, image] diff --git a/openapi/team/v1/components/schemas/HookUpdateRequest.yaml b/openapi/team/v1/components/schemas/HookUpdateRequest.yaml deleted file mode 100644 index 8887093..0000000 --- a/openapi/team/v1/components/schemas/HookUpdateRequest.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - event: { type: string } - function: { type: string } - image: { type: string } - resources: { $ref: './ComputeResources.yaml' } - description: { type: string } -additionalProperties: false diff --git a/openapi/team/v1/components/schemas/InitScript.yaml b/openapi/team/v1/components/schemas/InitScript.yaml deleted file mode 100644 index 6b48250..0000000 --- a/openapi/team/v1/components/schemas/InitScript.yaml +++ /dev/null @@ -1,19 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - script: { type: string } - description: { type: string } - agentId: - type: string - format: uuid - description: Target agent. Mutually exclusive with mcpId and hookId. - mcpId: - type: string - format: uuid - description: Target MCP. Mutually exclusive with agentId and hookId. - hookId: - type: string - format: uuid - description: Target hook. Mutually exclusive with agentId and mcpId. - required: [script] diff --git a/openapi/team/v1/components/schemas/InitScriptCreateRequest.yaml b/openapi/team/v1/components/schemas/InitScriptCreateRequest.yaml deleted file mode 100644 index e9bd9fd..0000000 --- a/openapi/team/v1/components/schemas/InitScriptCreateRequest.yaml +++ /dev/null @@ -1,17 +0,0 @@ -type: object -properties: - script: { type: string } - description: { type: string } - agentId: - type: string - format: uuid - description: Target agent. Mutually exclusive with mcpId and hookId. - mcpId: - type: string - format: uuid - description: Target MCP. Mutually exclusive with agentId and hookId. - hookId: - type: string - format: uuid - description: Target hook. Mutually exclusive with agentId and mcpId. -required: [script] diff --git a/openapi/team/v1/components/schemas/InitScriptUpdateRequest.yaml b/openapi/team/v1/components/schemas/InitScriptUpdateRequest.yaml deleted file mode 100644 index ad151d1..0000000 --- a/openapi/team/v1/components/schemas/InitScriptUpdateRequest.yaml +++ /dev/null @@ -1,5 +0,0 @@ -type: object -properties: - script: { type: string } - description: { type: string } -additionalProperties: false diff --git a/openapi/team/v1/components/schemas/Mcp.yaml b/openapi/team/v1/components/schemas/Mcp.yaml deleted file mode 100644 index a6ab3f5..0000000 --- a/openapi/team/v1/components/schemas/Mcp.yaml +++ /dev/null @@ -1,10 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - agentId: { type: string, format: uuid } - image: { type: string } - command: { type: string } - resources: { $ref: './ComputeResources.yaml' } - description: { type: string } - required: [agentId, image, command] diff --git a/openapi/team/v1/components/schemas/McpCreateRequest.yaml b/openapi/team/v1/components/schemas/McpCreateRequest.yaml deleted file mode 100644 index 43823a6..0000000 --- a/openapi/team/v1/components/schemas/McpCreateRequest.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - agentId: { type: string, format: uuid } - image: { type: string } - command: { type: string } - resources: { $ref: './ComputeResources.yaml' } - description: { type: string } -required: [agentId, image, command] diff --git a/openapi/team/v1/components/schemas/McpUpdateRequest.yaml b/openapi/team/v1/components/schemas/McpUpdateRequest.yaml deleted file mode 100644 index f3011f3..0000000 --- a/openapi/team/v1/components/schemas/McpUpdateRequest.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - image: { type: string } - command: { type: string } - resources: { $ref: './ComputeResources.yaml' } - description: { type: string } -additionalProperties: false diff --git a/openapi/team/v1/components/schemas/PaginatedAgents.yaml b/openapi/team/v1/components/schemas/PaginatedAgents.yaml deleted file mode 100644 index 556441a..0000000 --- a/openapi/team/v1/components/schemas/PaginatedAgents.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Agent.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/PaginatedEnvs.yaml b/openapi/team/v1/components/schemas/PaginatedEnvs.yaml deleted file mode 100644 index 6cc68c0..0000000 --- a/openapi/team/v1/components/schemas/PaginatedEnvs.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Env.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/PaginatedHooks.yaml b/openapi/team/v1/components/schemas/PaginatedHooks.yaml deleted file mode 100644 index 55094bf..0000000 --- a/openapi/team/v1/components/schemas/PaginatedHooks.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Hook.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/PaginatedInitScripts.yaml b/openapi/team/v1/components/schemas/PaginatedInitScripts.yaml deleted file mode 100644 index 5159cf9..0000000 --- a/openapi/team/v1/components/schemas/PaginatedInitScripts.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './InitScript.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/PaginatedMcps.yaml b/openapi/team/v1/components/schemas/PaginatedMcps.yaml deleted file mode 100644 index 652f5ed..0000000 --- a/openapi/team/v1/components/schemas/PaginatedMcps.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Mcp.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/PaginatedSkills.yaml b/openapi/team/v1/components/schemas/PaginatedSkills.yaml deleted file mode 100644 index e502258..0000000 --- a/openapi/team/v1/components/schemas/PaginatedSkills.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Skill.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/PaginatedVolumeAttachments.yaml b/openapi/team/v1/components/schemas/PaginatedVolumeAttachments.yaml deleted file mode 100644 index 33b680f..0000000 --- a/openapi/team/v1/components/schemas/PaginatedVolumeAttachments.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './VolumeAttachment.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/PaginatedVolumes.yaml b/openapi/team/v1/components/schemas/PaginatedVolumes.yaml deleted file mode 100644 index 276ce71..0000000 --- a/openapi/team/v1/components/schemas/PaginatedVolumes.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - items: - type: array - items: { $ref: './Volume.yaml' } - nextPageToken: { type: string } -required: [items] diff --git a/openapi/team/v1/components/schemas/Problem.yaml b/openapi/team/v1/components/schemas/Problem.yaml deleted file mode 100644 index ef475b1..0000000 --- a/openapi/team/v1/components/schemas/Problem.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -properties: - type: { type: string, format: uri } - title: { type: string } - status: { type: integer } - detail: { type: string } - instance: { type: string, format: uri } -required: [title, status] diff --git a/openapi/team/v1/components/schemas/Skill.yaml b/openapi/team/v1/components/schemas/Skill.yaml deleted file mode 100644 index ca37cc8..0000000 --- a/openapi/team/v1/components/schemas/Skill.yaml +++ /dev/null @@ -1,9 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - agentId: { type: string, format: uuid } - name: { type: string } - body: { type: string } - description: { type: string } - required: [agentId, name, body] diff --git a/openapi/team/v1/components/schemas/SkillCreateRequest.yaml b/openapi/team/v1/components/schemas/SkillCreateRequest.yaml deleted file mode 100644 index 3267525..0000000 --- a/openapi/team/v1/components/schemas/SkillCreateRequest.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: object -properties: - agentId: { type: string, format: uuid } - name: { type: string } - body: { type: string } - description: { type: string } -required: [agentId, name, body] diff --git a/openapi/team/v1/components/schemas/SkillUpdateRequest.yaml b/openapi/team/v1/components/schemas/SkillUpdateRequest.yaml deleted file mode 100644 index 573a4d8..0000000 --- a/openapi/team/v1/components/schemas/SkillUpdateRequest.yaml +++ /dev/null @@ -1,6 +0,0 @@ -type: object -properties: - name: { type: string } - body: { type: string } - description: { type: string } -additionalProperties: false diff --git a/openapi/team/v1/components/schemas/Volume.yaml b/openapi/team/v1/components/schemas/Volume.yaml deleted file mode 100644 index 8b868fd..0000000 --- a/openapi/team/v1/components/schemas/Volume.yaml +++ /dev/null @@ -1,11 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - persistent: { type: boolean } - mountPath: { type: string } - size: - type: string - description: Required when persistent is true. - description: { type: string } - required: [persistent, mountPath] diff --git a/openapi/team/v1/components/schemas/VolumeAttachment.yaml b/openapi/team/v1/components/schemas/VolumeAttachment.yaml deleted file mode 100644 index 299282a..0000000 --- a/openapi/team/v1/components/schemas/VolumeAttachment.yaml +++ /dev/null @@ -1,18 +0,0 @@ -allOf: - - $ref: './EntityMeta.yaml' - - type: object - properties: - volumeId: { type: string, format: uuid } - agentId: - type: string - format: uuid - description: Target agent. Mutually exclusive with mcpId and hookId. - mcpId: - type: string - format: uuid - description: Target MCP. Mutually exclusive with agentId and hookId. - hookId: - type: string - format: uuid - description: Target hook. Mutually exclusive with agentId and mcpId. - required: [volumeId] diff --git a/openapi/team/v1/components/schemas/VolumeAttachmentCreateRequest.yaml b/openapi/team/v1/components/schemas/VolumeAttachmentCreateRequest.yaml deleted file mode 100644 index 72d1c99..0000000 --- a/openapi/team/v1/components/schemas/VolumeAttachmentCreateRequest.yaml +++ /dev/null @@ -1,16 +0,0 @@ -type: object -properties: - volumeId: { type: string, format: uuid } - agentId: - type: string - format: uuid - description: Target agent. Mutually exclusive with mcpId and hookId. - mcpId: - type: string - format: uuid - description: Target MCP. Mutually exclusive with agentId and hookId. - hookId: - type: string - format: uuid - description: Target hook. Mutually exclusive with agentId and mcpId. -required: [volumeId] diff --git a/openapi/team/v1/components/schemas/VolumeCreateRequest.yaml b/openapi/team/v1/components/schemas/VolumeCreateRequest.yaml deleted file mode 100644 index c3620c4..0000000 --- a/openapi/team/v1/components/schemas/VolumeCreateRequest.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - persistent: { type: boolean } - mountPath: { type: string } - size: - type: string - description: Required when persistent is true. - description: { type: string } -required: [persistent, mountPath] diff --git a/openapi/team/v1/components/schemas/VolumeUpdateRequest.yaml b/openapi/team/v1/components/schemas/VolumeUpdateRequest.yaml deleted file mode 100644 index f0c5f60..0000000 --- a/openapi/team/v1/components/schemas/VolumeUpdateRequest.yaml +++ /dev/null @@ -1,9 +0,0 @@ -type: object -properties: - persistent: { type: boolean } - mountPath: { type: string } - size: - type: string - description: Required when persistent is true. - description: { type: string } -additionalProperties: false diff --git a/openapi/team/v1/openapi.yaml b/openapi/team/v1/openapi.yaml deleted file mode 100644 index 3e00925..0000000 --- a/openapi/team/v1/openapi.yaml +++ /dev/null @@ -1,124 +0,0 @@ -openapi: 3.0.3 -info: - title: Team Management API - version: 0.1.0 -servers: - - url: https://api.example.com -tags: - - name: Agents - - name: Volumes - - name: Volume Attachments - - name: MCPs - - name: Skills - - name: Hooks - - name: Envs - - name: Init Scripts -paths: - /agents: - $ref: './paths/agents.yaml' - /agents/{id}: - $ref: './paths/agent-by-id.yaml' - /volumes: - $ref: './paths/volumes.yaml' - /volumes/{id}: - $ref: './paths/volume-by-id.yaml' - /volume-attachments: - $ref: './paths/volume-attachments.yaml' - /volume-attachments/{id}: - $ref: './paths/volume-attachment-by-id.yaml' - /mcps: - $ref: './paths/mcps.yaml' - /mcps/{id}: - $ref: './paths/mcp-by-id.yaml' - /skills: - $ref: './paths/skills.yaml' - /skills/{id}: - $ref: './paths/skill-by-id.yaml' - /hooks: - $ref: './paths/hooks.yaml' - /hooks/{id}: - $ref: './paths/hook-by-id.yaml' - /envs: - $ref: './paths/envs.yaml' - /envs/{id}: - $ref: './paths/env-by-id.yaml' - /init-scripts: - $ref: './paths/init-scripts.yaml' - /init-scripts/{id}: - $ref: './paths/init-script-by-id.yaml' -components: - parameters: - IdPath: - $ref: './components/parameters/IdPath.yaml' - responses: - ProblemResponse: - $ref: './components/responses/ProblemResponse.yaml' - schemas: - Problem: - $ref: './components/schemas/Problem.yaml' - EntityMeta: - $ref: './components/schemas/EntityMeta.yaml' - ComputeResources: - $ref: './components/schemas/ComputeResources.yaml' - Agent: - $ref: './components/schemas/Agent.yaml' - AgentCreateRequest: - $ref: './components/schemas/AgentCreateRequest.yaml' - AgentUpdateRequest: - $ref: './components/schemas/AgentUpdateRequest.yaml' - PaginatedAgents: - $ref: './components/schemas/PaginatedAgents.yaml' - Volume: - $ref: './components/schemas/Volume.yaml' - VolumeCreateRequest: - $ref: './components/schemas/VolumeCreateRequest.yaml' - VolumeUpdateRequest: - $ref: './components/schemas/VolumeUpdateRequest.yaml' - PaginatedVolumes: - $ref: './components/schemas/PaginatedVolumes.yaml' - VolumeAttachment: - $ref: './components/schemas/VolumeAttachment.yaml' - VolumeAttachmentCreateRequest: - $ref: './components/schemas/VolumeAttachmentCreateRequest.yaml' - PaginatedVolumeAttachments: - $ref: './components/schemas/PaginatedVolumeAttachments.yaml' - Mcp: - $ref: './components/schemas/Mcp.yaml' - McpCreateRequest: - $ref: './components/schemas/McpCreateRequest.yaml' - McpUpdateRequest: - $ref: './components/schemas/McpUpdateRequest.yaml' - PaginatedMcps: - $ref: './components/schemas/PaginatedMcps.yaml' - Skill: - $ref: './components/schemas/Skill.yaml' - SkillCreateRequest: - $ref: './components/schemas/SkillCreateRequest.yaml' - SkillUpdateRequest: - $ref: './components/schemas/SkillUpdateRequest.yaml' - PaginatedSkills: - $ref: './components/schemas/PaginatedSkills.yaml' - Hook: - $ref: './components/schemas/Hook.yaml' - HookCreateRequest: - $ref: './components/schemas/HookCreateRequest.yaml' - HookUpdateRequest: - $ref: './components/schemas/HookUpdateRequest.yaml' - PaginatedHooks: - $ref: './components/schemas/PaginatedHooks.yaml' - Env: - $ref: './components/schemas/Env.yaml' - EnvCreateRequest: - $ref: './components/schemas/EnvCreateRequest.yaml' - EnvUpdateRequest: - $ref: './components/schemas/EnvUpdateRequest.yaml' - PaginatedEnvs: - $ref: './components/schemas/PaginatedEnvs.yaml' - InitScript: - $ref: './components/schemas/InitScript.yaml' - InitScriptCreateRequest: - $ref: './components/schemas/InitScriptCreateRequest.yaml' - InitScriptUpdateRequest: - $ref: './components/schemas/InitScriptUpdateRequest.yaml' - PaginatedInitScripts: - $ref: './components/schemas/PaginatedInitScripts.yaml' diff --git a/openapi/team/v1/paths/agent-by-id.yaml b/openapi/team/v1/paths/agent-by-id.yaml deleted file mode 100644 index 968ad6f..0000000 --- a/openapi/team/v1/paths/agent-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [Agents] - summary: Get agent by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/Agent.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [Agents] - summary: Update agent (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/AgentUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/Agent.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [Agents] - summary: Delete agent - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/agents.yaml b/openapi/team/v1/paths/agents.yaml deleted file mode 100644 index c3efdd1..0000000 --- a/openapi/team/v1/paths/agents.yaml +++ /dev/null @@ -1,42 +0,0 @@ -get: - tags: [Agents] - summary: List agents - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedAgents.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [Agents] - summary: Create agent - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/AgentCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Agent.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/env-by-id.yaml b/openapi/team/v1/paths/env-by-id.yaml deleted file mode 100644 index 95ad47b..0000000 --- a/openapi/team/v1/paths/env-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [Envs] - summary: Get env by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/Env.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [Envs] - summary: Update env (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/EnvUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/Env.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [Envs] - summary: Delete env - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/envs.yaml b/openapi/team/v1/paths/envs.yaml deleted file mode 100644 index c189306..0000000 --- a/openapi/team/v1/paths/envs.yaml +++ /dev/null @@ -1,57 +0,0 @@ -get: - tags: [Envs] - summary: List envs - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - - in: query - name: agentId - schema: - type: string - format: uuid - - in: query - name: mcpId - schema: - type: string - format: uuid - - in: query - name: hookId - schema: - type: string - format: uuid - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedEnvs.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [Envs] - summary: Create env - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/EnvCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Env.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/hook-by-id.yaml b/openapi/team/v1/paths/hook-by-id.yaml deleted file mode 100644 index 77d821f..0000000 --- a/openapi/team/v1/paths/hook-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [Hooks] - summary: Get hook by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/Hook.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [Hooks] - summary: Update hook (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/HookUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/Hook.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [Hooks] - summary: Delete hook - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/hooks.yaml b/openapi/team/v1/paths/hooks.yaml deleted file mode 100644 index 4117a20..0000000 --- a/openapi/team/v1/paths/hooks.yaml +++ /dev/null @@ -1,47 +0,0 @@ -get: - tags: [Hooks] - summary: List hooks - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - - in: query - name: agentId - schema: - type: string - format: uuid - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedHooks.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [Hooks] - summary: Create hook - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/HookCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Hook.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/init-script-by-id.yaml b/openapi/team/v1/paths/init-script-by-id.yaml deleted file mode 100644 index d99e84f..0000000 --- a/openapi/team/v1/paths/init-script-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [Init Scripts] - summary: Get init script by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/InitScript.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [Init Scripts] - summary: Update init script (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/InitScriptUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/InitScript.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [Init Scripts] - summary: Delete init script - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/init-scripts.yaml b/openapi/team/v1/paths/init-scripts.yaml deleted file mode 100644 index 4dba6c7..0000000 --- a/openapi/team/v1/paths/init-scripts.yaml +++ /dev/null @@ -1,57 +0,0 @@ -get: - tags: [Init Scripts] - summary: List init scripts - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - - in: query - name: agentId - schema: - type: string - format: uuid - - in: query - name: mcpId - schema: - type: string - format: uuid - - in: query - name: hookId - schema: - type: string - format: uuid - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedInitScripts.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [Init Scripts] - summary: Create init script - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/InitScriptCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/InitScript.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/mcp-by-id.yaml b/openapi/team/v1/paths/mcp-by-id.yaml deleted file mode 100644 index 8bcf9de..0000000 --- a/openapi/team/v1/paths/mcp-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [MCPs] - summary: Get MCP by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/Mcp.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [MCPs] - summary: Update MCP (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/McpUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/Mcp.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [MCPs] - summary: Delete MCP - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/mcps.yaml b/openapi/team/v1/paths/mcps.yaml deleted file mode 100644 index ed26f68..0000000 --- a/openapi/team/v1/paths/mcps.yaml +++ /dev/null @@ -1,47 +0,0 @@ -get: - tags: [MCPs] - summary: List MCPs - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - - in: query - name: agentId - schema: - type: string - format: uuid - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedMcps.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [MCPs] - summary: Create MCP - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/McpCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Mcp.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/skill-by-id.yaml b/openapi/team/v1/paths/skill-by-id.yaml deleted file mode 100644 index 088a642..0000000 --- a/openapi/team/v1/paths/skill-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [Skills] - summary: Get skill by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/Skill.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [Skills] - summary: Update skill (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/SkillUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/Skill.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [Skills] - summary: Delete skill - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/skills.yaml b/openapi/team/v1/paths/skills.yaml deleted file mode 100644 index bee016c..0000000 --- a/openapi/team/v1/paths/skills.yaml +++ /dev/null @@ -1,47 +0,0 @@ -get: - tags: [Skills] - summary: List skills - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - - in: query - name: agentId - schema: - type: string - format: uuid - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedSkills.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [Skills] - summary: Create skill - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/SkillCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Skill.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/volume-attachment-by-id.yaml b/openapi/team/v1/paths/volume-attachment-by-id.yaml deleted file mode 100644 index 5ec753f..0000000 --- a/openapi/team/v1/paths/volume-attachment-by-id.yaml +++ /dev/null @@ -1,24 +0,0 @@ -get: - tags: [Volume Attachments] - summary: Get volume attachment by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/VolumeAttachment.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [Volume Attachments] - summary: Delete volume attachment - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/volume-attachments.yaml b/openapi/team/v1/paths/volume-attachments.yaml deleted file mode 100644 index a64376e..0000000 --- a/openapi/team/v1/paths/volume-attachments.yaml +++ /dev/null @@ -1,62 +0,0 @@ -get: - tags: [Volume Attachments] - summary: List volume attachments - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - - in: query - name: volumeId - schema: - type: string - format: uuid - - in: query - name: agentId - schema: - type: string - format: uuid - - in: query - name: mcpId - schema: - type: string - format: uuid - - in: query - name: hookId - schema: - type: string - format: uuid - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedVolumeAttachments.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [Volume Attachments] - summary: Create volume attachment - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/VolumeAttachmentCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/VolumeAttachment.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/volume-by-id.yaml b/openapi/team/v1/paths/volume-by-id.yaml deleted file mode 100644 index ec4ed4f..0000000 --- a/openapi/team/v1/paths/volume-by-id.yaml +++ /dev/null @@ -1,44 +0,0 @@ -get: - tags: [Volumes] - summary: Get volume by ID - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/Volume.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -patch: - tags: [Volumes] - summary: Update volume (partial) - parameters: - - $ref: '../components/parameters/IdPath.yaml' - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/VolumeUpdateRequest.yaml' - responses: - '200': - description: Updated - content: - application/json: - schema: - $ref: '../components/schemas/Volume.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -delete: - tags: [Volumes] - summary: Delete volume - parameters: - - $ref: '../components/parameters/IdPath.yaml' - responses: - '204': - description: No Content - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/openapi/team/v1/paths/volumes.yaml b/openapi/team/v1/paths/volumes.yaml deleted file mode 100644 index e886aa0..0000000 --- a/openapi/team/v1/paths/volumes.yaml +++ /dev/null @@ -1,42 +0,0 @@ -get: - tags: [Volumes] - summary: List volumes - parameters: - - in: query - name: pageSize - schema: - type: integer - minimum: 1 - maximum: 100 - default: 20 - - in: query - name: pageToken - schema: - type: string - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '../components/schemas/PaginatedVolumes.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' -post: - tags: [Volumes] - summary: Create volume - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/VolumeCreateRequest.yaml' - responses: - '201': - description: Created - content: - application/json: - schema: - $ref: '../components/schemas/Volume.yaml' - default: - $ref: '../components/responses/ProblemResponse.yaml' diff --git a/proto/agynio/api/teams/v1/teams.proto b/proto/agynio/api/agents/v1/agents.proto similarity index 98% rename from proto/agynio/api/teams/v1/teams.proto rename to proto/agynio/api/agents/v1/agents.proto index 449c442..cd64f91 100644 --- a/proto/agynio/api/teams/v1/teams.proto +++ b/proto/agynio/api/agents/v1/agents.proto @@ -1,17 +1,17 @@ syntax = "proto3"; -package agynio.api.teams.v1; +package agynio.api.agents.v1; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/agynio/api/gen/agynio/api/teams/v1;teamsv1"; +option go_package = "github.com/agynio/api/gen/agynio/api/agents/v1;agentsv1"; -// TeamsService manages team resources: agents, volumes, volume attachments, +// AgentsService manages team resources: agents, volumes, volume attachments, // MCP servers, skills, hooks, environment variables, and init scripts. // // This is a control-plane service. It stores desired state; // other services reconcile toward it. -service TeamsService { +service AgentsService { // --- Agents --- rpc CreateAgent(CreateAgentRequest) returns (CreateAgentResponse); rpc GetAgent(GetAgentRequest) returns (GetAgentResponse); diff --git a/proto/agynio/api/gateway/v1/agent_state.proto b/proto/agynio/api/gateway/v1/agent_state.proto new file mode 100644 index 0000000..2e57110 --- /dev/null +++ b/proto/agynio/api/gateway/v1/agent_state.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/agent_state/v1/agent_state.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service AgentStateGateway { + rpc AppendConversationMessages(agynio.api.agent_state.v1.AppendConversationMessagesRequest) + returns (agynio.api.agent_state.v1.AppendConversationMessagesResponse); + rpc ListConversationMessages(agynio.api.agent_state.v1.ListConversationMessagesRequest) + returns (agynio.api.agent_state.v1.ListConversationMessagesResponse); + rpc ReplaceConversationMessagesRange(agynio.api.agent_state.v1.ReplaceConversationMessagesRangeRequest) + returns (agynio.api.agent_state.v1.ReplaceConversationMessagesRangeResponse); + rpc DeleteConversationMessagesRange(agynio.api.agent_state.v1.DeleteConversationMessagesRangeRequest) + returns (agynio.api.agent_state.v1.DeleteConversationMessagesRangeResponse); + rpc GetConversation(agynio.api.agent_state.v1.GetConversationRequest) + returns (agynio.api.agent_state.v1.GetConversationResponse); + rpc ListConversationMessageIds(agynio.api.agent_state.v1.ListConversationMessageIdsRequest) + returns (agynio.api.agent_state.v1.ListConversationMessageIdsResponse); + rpc ListSnapshotMessages(agynio.api.agent_state.v1.ListSnapshotMessagesRequest) + returns (agynio.api.agent_state.v1.ListSnapshotMessagesResponse); + rpc ListSnapshotMessageIds(agynio.api.agent_state.v1.ListSnapshotMessageIdsRequest) + returns (agynio.api.agent_state.v1.ListSnapshotMessageIdsResponse); + rpc CreateSnapshot(agynio.api.agent_state.v1.CreateSnapshotRequest) + returns (agynio.api.agent_state.v1.CreateSnapshotResponse); +} diff --git a/proto/agynio/api/gateway/v1/agents.proto b/proto/agynio/api/gateway/v1/agents.proto new file mode 100644 index 0000000..4545381 --- /dev/null +++ b/proto/agynio/api/gateway/v1/agents.proto @@ -0,0 +1,71 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/agents/v1/agents.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service AgentsGateway { + // --- Agents --- + rpc CreateAgent(agynio.api.agents.v1.CreateAgentRequest) returns (agynio.api.agents.v1.CreateAgentResponse); + rpc GetAgent(agynio.api.agents.v1.GetAgentRequest) returns (agynio.api.agents.v1.GetAgentResponse); + rpc UpdateAgent(agynio.api.agents.v1.UpdateAgentRequest) returns (agynio.api.agents.v1.UpdateAgentResponse); + rpc DeleteAgent(agynio.api.agents.v1.DeleteAgentRequest) returns (agynio.api.agents.v1.DeleteAgentResponse); + rpc ListAgents(agynio.api.agents.v1.ListAgentsRequest) returns (agynio.api.agents.v1.ListAgentsResponse); + + // --- Volumes --- + rpc CreateVolume(agynio.api.agents.v1.CreateVolumeRequest) returns (agynio.api.agents.v1.CreateVolumeResponse); + rpc GetVolume(agynio.api.agents.v1.GetVolumeRequest) returns (agynio.api.agents.v1.GetVolumeResponse); + rpc UpdateVolume(agynio.api.agents.v1.UpdateVolumeRequest) returns (agynio.api.agents.v1.UpdateVolumeResponse); + rpc DeleteVolume(agynio.api.agents.v1.DeleteVolumeRequest) returns (agynio.api.agents.v1.DeleteVolumeResponse); + rpc ListVolumes(agynio.api.agents.v1.ListVolumesRequest) returns (agynio.api.agents.v1.ListVolumesResponse); + + // --- Volume Attachments (no Update) --- + rpc CreateVolumeAttachment(agynio.api.agents.v1.CreateVolumeAttachmentRequest) + returns (agynio.api.agents.v1.CreateVolumeAttachmentResponse); + rpc GetVolumeAttachment(agynio.api.agents.v1.GetVolumeAttachmentRequest) + returns (agynio.api.agents.v1.GetVolumeAttachmentResponse); + rpc DeleteVolumeAttachment(agynio.api.agents.v1.DeleteVolumeAttachmentRequest) + returns (agynio.api.agents.v1.DeleteVolumeAttachmentResponse); + rpc ListVolumeAttachments(agynio.api.agents.v1.ListVolumeAttachmentsRequest) + returns (agynio.api.agents.v1.ListVolumeAttachmentsResponse); + + // --- MCPs --- + rpc CreateMcp(agynio.api.agents.v1.CreateMcpRequest) returns (agynio.api.agents.v1.CreateMcpResponse); + rpc GetMcp(agynio.api.agents.v1.GetMcpRequest) returns (agynio.api.agents.v1.GetMcpResponse); + rpc UpdateMcp(agynio.api.agents.v1.UpdateMcpRequest) returns (agynio.api.agents.v1.UpdateMcpResponse); + rpc DeleteMcp(agynio.api.agents.v1.DeleteMcpRequest) returns (agynio.api.agents.v1.DeleteMcpResponse); + rpc ListMcps(agynio.api.agents.v1.ListMcpsRequest) returns (agynio.api.agents.v1.ListMcpsResponse); + + // --- Skills --- + rpc CreateSkill(agynio.api.agents.v1.CreateSkillRequest) returns (agynio.api.agents.v1.CreateSkillResponse); + rpc GetSkill(agynio.api.agents.v1.GetSkillRequest) returns (agynio.api.agents.v1.GetSkillResponse); + rpc UpdateSkill(agynio.api.agents.v1.UpdateSkillRequest) returns (agynio.api.agents.v1.UpdateSkillResponse); + rpc DeleteSkill(agynio.api.agents.v1.DeleteSkillRequest) returns (agynio.api.agents.v1.DeleteSkillResponse); + rpc ListSkills(agynio.api.agents.v1.ListSkillsRequest) returns (agynio.api.agents.v1.ListSkillsResponse); + + // --- Hooks --- + rpc CreateHook(agynio.api.agents.v1.CreateHookRequest) returns (agynio.api.agents.v1.CreateHookResponse); + rpc GetHook(agynio.api.agents.v1.GetHookRequest) returns (agynio.api.agents.v1.GetHookResponse); + rpc UpdateHook(agynio.api.agents.v1.UpdateHookRequest) returns (agynio.api.agents.v1.UpdateHookResponse); + rpc DeleteHook(agynio.api.agents.v1.DeleteHookRequest) returns (agynio.api.agents.v1.DeleteHookResponse); + rpc ListHooks(agynio.api.agents.v1.ListHooksRequest) returns (agynio.api.agents.v1.ListHooksResponse); + + // --- Envs --- + rpc CreateEnv(agynio.api.agents.v1.CreateEnvRequest) returns (agynio.api.agents.v1.CreateEnvResponse); + rpc GetEnv(agynio.api.agents.v1.GetEnvRequest) returns (agynio.api.agents.v1.GetEnvResponse); + rpc UpdateEnv(agynio.api.agents.v1.UpdateEnvRequest) returns (agynio.api.agents.v1.UpdateEnvResponse); + rpc DeleteEnv(agynio.api.agents.v1.DeleteEnvRequest) returns (agynio.api.agents.v1.DeleteEnvResponse); + rpc ListEnvs(agynio.api.agents.v1.ListEnvsRequest) returns (agynio.api.agents.v1.ListEnvsResponse); + + // --- Init Scripts --- + rpc CreateInitScript(agynio.api.agents.v1.CreateInitScriptRequest) + returns (agynio.api.agents.v1.CreateInitScriptResponse); + rpc GetInitScript(agynio.api.agents.v1.GetInitScriptRequest) returns (agynio.api.agents.v1.GetInitScriptResponse); + rpc UpdateInitScript(agynio.api.agents.v1.UpdateInitScriptRequest) + returns (agynio.api.agents.v1.UpdateInitScriptResponse); + rpc DeleteInitScript(agynio.api.agents.v1.DeleteInitScriptRequest) + returns (agynio.api.agents.v1.DeleteInitScriptResponse); + rpc ListInitScripts(agynio.api.agents.v1.ListInitScriptsRequest) returns (agynio.api.agents.v1.ListInitScriptsResponse); +} diff --git a/proto/agynio/api/gateway/v1/chat.proto b/proto/agynio/api/gateway/v1/chat.proto new file mode 100644 index 0000000..7910e98 --- /dev/null +++ b/proto/agynio/api/gateway/v1/chat.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/chat/v1/chat.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service ChatGateway { + rpc CreateChat(agynio.api.chat.v1.CreateChatRequest) returns (agynio.api.chat.v1.CreateChatResponse); + rpc GetChats(agynio.api.chat.v1.GetChatsRequest) returns (agynio.api.chat.v1.GetChatsResponse); + rpc GetMessages(agynio.api.chat.v1.GetMessagesRequest) returns (agynio.api.chat.v1.GetMessagesResponse); + rpc SendMessage(agynio.api.chat.v1.SendMessageRequest) returns (agynio.api.chat.v1.SendMessageResponse); + rpc MarkAsRead(agynio.api.chat.v1.MarkAsReadRequest) returns (agynio.api.chat.v1.MarkAsReadResponse); +} diff --git a/proto/agynio/api/gateway/v1/files.proto b/proto/agynio/api/gateway/v1/files.proto new file mode 100644 index 0000000..22c015a --- /dev/null +++ b/proto/agynio/api/gateway/v1/files.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/files/v1/files.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service FilesGateway { + rpc UploadFile(stream agynio.api.files.v1.UploadFileRequest) returns (agynio.api.files.v1.UploadFileResponse); + rpc GetFileMetadata(agynio.api.files.v1.GetFileMetadataRequest) + returns (agynio.api.files.v1.GetFileMetadataResponse); + rpc GetDownloadUrl(agynio.api.files.v1.GetDownloadUrlRequest) returns (agynio.api.files.v1.GetDownloadUrlResponse); +} diff --git a/proto/agynio/api/gateway/v1/llm.proto b/proto/agynio/api/gateway/v1/llm.proto new file mode 100644 index 0000000..d331820 --- /dev/null +++ b/proto/agynio/api/gateway/v1/llm.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/llm/v1/llm.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service LLMGateway { + rpc CreateResponse(agynio.api.llm.v1.CreateResponseRequest) returns (agynio.api.llm.v1.CreateResponseResponse); + rpc CreateResponseStream(agynio.api.llm.v1.CreateResponseStreamRequest) + returns (stream agynio.api.llm.v1.CreateResponseStreamResponse); +} diff --git a/proto/agynio/api/gateway/v1/notifications.proto b/proto/agynio/api/gateway/v1/notifications.proto new file mode 100644 index 0000000..e70b479 --- /dev/null +++ b/proto/agynio/api/gateway/v1/notifications.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/notifications/v1/notifications.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service NotificationsGateway { + rpc Subscribe(agynio.api.notifications.v1.SubscribeRequest) + returns (stream agynio.api.notifications.v1.SubscribeResponse); +} diff --git a/proto/agynio/api/gateway/v1/secrets.proto b/proto/agynio/api/gateway/v1/secrets.proto new file mode 100644 index 0000000..33facb5 --- /dev/null +++ b/proto/agynio/api/gateway/v1/secrets.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/secrets/v1/secrets.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service SecretsGateway { + rpc ResolveSecret(agynio.api.secrets.v1.ResolveSecretRequest) returns (agynio.api.secrets.v1.ResolveSecretResponse); +} diff --git a/proto/agynio/api/gateway/v1/threads.proto b/proto/agynio/api/gateway/v1/threads.proto new file mode 100644 index 0000000..83b9a53 --- /dev/null +++ b/proto/agynio/api/gateway/v1/threads.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/threads/v1/threads.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service ThreadsGateway { + rpc CreateThread(agynio.api.threads.v1.CreateThreadRequest) returns (agynio.api.threads.v1.CreateThreadResponse); + rpc ArchiveThread(agynio.api.threads.v1.ArchiveThreadRequest) returns (agynio.api.threads.v1.ArchiveThreadResponse); + rpc AddParticipant(agynio.api.threads.v1.AddParticipantRequest) returns (agynio.api.threads.v1.AddParticipantResponse); + rpc SendMessage(agynio.api.threads.v1.SendMessageRequest) returns (agynio.api.threads.v1.SendMessageResponse); + rpc GetThreads(agynio.api.threads.v1.GetThreadsRequest) returns (agynio.api.threads.v1.GetThreadsResponse); + rpc GetMessages(agynio.api.threads.v1.GetMessagesRequest) returns (agynio.api.threads.v1.GetMessagesResponse); + rpc GetUnackedMessages(agynio.api.threads.v1.GetUnackedMessagesRequest) + returns (agynio.api.threads.v1.GetUnackedMessagesResponse); + rpc AckMessages(agynio.api.threads.v1.AckMessagesRequest) returns (agynio.api.threads.v1.AckMessagesResponse); +} diff --git a/proto/agynio/api/gateway/v1/token_counting.proto b/proto/agynio/api/gateway/v1/token_counting.proto new file mode 100644 index 0000000..ad566da --- /dev/null +++ b/proto/agynio/api/gateway/v1/token_counting.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package agynio.api.gateway.v1; + +import "agynio/api/token_counting/v1/token_counting.proto"; + +option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; + +service TokenCountingGateway { + rpc CountTokens(agynio.api.token_counting.v1.CountTokensRequest) + returns (agynio.api.token_counting.v1.CountTokensResponse); +} From 6e870c488b97a8eae3bfbc4a7d07bb81903860ff Mon Sep 17 00:00:00 2001 From: Casey Brooks Date: Fri, 20 Mar 2026 02:14:47 +0000 Subject: [PATCH 2/5] style(proto): format gateway protos --- proto/agynio/api/gateway/v1/agent_state.proto | 27 +++++++------------ proto/agynio/api/gateway/v1/agents.proto | 21 +++++---------- proto/agynio/api/gateway/v1/files.proto | 3 +-- proto/agynio/api/gateway/v1/llm.proto | 3 +-- .../agynio/api/gateway/v1/notifications.proto | 3 +-- proto/agynio/api/gateway/v1/threads.proto | 3 +-- .../api/gateway/v1/token_counting.proto | 3 +-- 7 files changed, 21 insertions(+), 42 deletions(-) diff --git a/proto/agynio/api/gateway/v1/agent_state.proto b/proto/agynio/api/gateway/v1/agent_state.proto index 2e57110..520eeed 100644 --- a/proto/agynio/api/gateway/v1/agent_state.proto +++ b/proto/agynio/api/gateway/v1/agent_state.proto @@ -7,22 +7,13 @@ import "agynio/api/agent_state/v1/agent_state.proto"; option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; service AgentStateGateway { - rpc AppendConversationMessages(agynio.api.agent_state.v1.AppendConversationMessagesRequest) - returns (agynio.api.agent_state.v1.AppendConversationMessagesResponse); - rpc ListConversationMessages(agynio.api.agent_state.v1.ListConversationMessagesRequest) - returns (agynio.api.agent_state.v1.ListConversationMessagesResponse); - rpc ReplaceConversationMessagesRange(agynio.api.agent_state.v1.ReplaceConversationMessagesRangeRequest) - returns (agynio.api.agent_state.v1.ReplaceConversationMessagesRangeResponse); - rpc DeleteConversationMessagesRange(agynio.api.agent_state.v1.DeleteConversationMessagesRangeRequest) - returns (agynio.api.agent_state.v1.DeleteConversationMessagesRangeResponse); - rpc GetConversation(agynio.api.agent_state.v1.GetConversationRequest) - returns (agynio.api.agent_state.v1.GetConversationResponse); - rpc ListConversationMessageIds(agynio.api.agent_state.v1.ListConversationMessageIdsRequest) - returns (agynio.api.agent_state.v1.ListConversationMessageIdsResponse); - rpc ListSnapshotMessages(agynio.api.agent_state.v1.ListSnapshotMessagesRequest) - returns (agynio.api.agent_state.v1.ListSnapshotMessagesResponse); - rpc ListSnapshotMessageIds(agynio.api.agent_state.v1.ListSnapshotMessageIdsRequest) - returns (agynio.api.agent_state.v1.ListSnapshotMessageIdsResponse); - rpc CreateSnapshot(agynio.api.agent_state.v1.CreateSnapshotRequest) - returns (agynio.api.agent_state.v1.CreateSnapshotResponse); + rpc AppendConversationMessages(agynio.api.agent_state.v1.AppendConversationMessagesRequest) returns (agynio.api.agent_state.v1.AppendConversationMessagesResponse); + rpc ListConversationMessages(agynio.api.agent_state.v1.ListConversationMessagesRequest) returns (agynio.api.agent_state.v1.ListConversationMessagesResponse); + rpc ReplaceConversationMessagesRange(agynio.api.agent_state.v1.ReplaceConversationMessagesRangeRequest) returns (agynio.api.agent_state.v1.ReplaceConversationMessagesRangeResponse); + rpc DeleteConversationMessagesRange(agynio.api.agent_state.v1.DeleteConversationMessagesRangeRequest) returns (agynio.api.agent_state.v1.DeleteConversationMessagesRangeResponse); + rpc GetConversation(agynio.api.agent_state.v1.GetConversationRequest) returns (agynio.api.agent_state.v1.GetConversationResponse); + rpc ListConversationMessageIds(agynio.api.agent_state.v1.ListConversationMessageIdsRequest) returns (agynio.api.agent_state.v1.ListConversationMessageIdsResponse); + rpc ListSnapshotMessages(agynio.api.agent_state.v1.ListSnapshotMessagesRequest) returns (agynio.api.agent_state.v1.ListSnapshotMessagesResponse); + rpc ListSnapshotMessageIds(agynio.api.agent_state.v1.ListSnapshotMessageIdsRequest) returns (agynio.api.agent_state.v1.ListSnapshotMessageIdsResponse); + rpc CreateSnapshot(agynio.api.agent_state.v1.CreateSnapshotRequest) returns (agynio.api.agent_state.v1.CreateSnapshotResponse); } diff --git a/proto/agynio/api/gateway/v1/agents.proto b/proto/agynio/api/gateway/v1/agents.proto index 4545381..85cff79 100644 --- a/proto/agynio/api/gateway/v1/agents.proto +++ b/proto/agynio/api/gateway/v1/agents.proto @@ -22,14 +22,10 @@ service AgentsGateway { rpc ListVolumes(agynio.api.agents.v1.ListVolumesRequest) returns (agynio.api.agents.v1.ListVolumesResponse); // --- Volume Attachments (no Update) --- - rpc CreateVolumeAttachment(agynio.api.agents.v1.CreateVolumeAttachmentRequest) - returns (agynio.api.agents.v1.CreateVolumeAttachmentResponse); - rpc GetVolumeAttachment(agynio.api.agents.v1.GetVolumeAttachmentRequest) - returns (agynio.api.agents.v1.GetVolumeAttachmentResponse); - rpc DeleteVolumeAttachment(agynio.api.agents.v1.DeleteVolumeAttachmentRequest) - returns (agynio.api.agents.v1.DeleteVolumeAttachmentResponse); - rpc ListVolumeAttachments(agynio.api.agents.v1.ListVolumeAttachmentsRequest) - returns (agynio.api.agents.v1.ListVolumeAttachmentsResponse); + rpc CreateVolumeAttachment(agynio.api.agents.v1.CreateVolumeAttachmentRequest) returns (agynio.api.agents.v1.CreateVolumeAttachmentResponse); + rpc GetVolumeAttachment(agynio.api.agents.v1.GetVolumeAttachmentRequest) returns (agynio.api.agents.v1.GetVolumeAttachmentResponse); + rpc DeleteVolumeAttachment(agynio.api.agents.v1.DeleteVolumeAttachmentRequest) returns (agynio.api.agents.v1.DeleteVolumeAttachmentResponse); + rpc ListVolumeAttachments(agynio.api.agents.v1.ListVolumeAttachmentsRequest) returns (agynio.api.agents.v1.ListVolumeAttachmentsResponse); // --- MCPs --- rpc CreateMcp(agynio.api.agents.v1.CreateMcpRequest) returns (agynio.api.agents.v1.CreateMcpResponse); @@ -60,12 +56,9 @@ service AgentsGateway { rpc ListEnvs(agynio.api.agents.v1.ListEnvsRequest) returns (agynio.api.agents.v1.ListEnvsResponse); // --- Init Scripts --- - rpc CreateInitScript(agynio.api.agents.v1.CreateInitScriptRequest) - returns (agynio.api.agents.v1.CreateInitScriptResponse); + rpc CreateInitScript(agynio.api.agents.v1.CreateInitScriptRequest) returns (agynio.api.agents.v1.CreateInitScriptResponse); rpc GetInitScript(agynio.api.agents.v1.GetInitScriptRequest) returns (agynio.api.agents.v1.GetInitScriptResponse); - rpc UpdateInitScript(agynio.api.agents.v1.UpdateInitScriptRequest) - returns (agynio.api.agents.v1.UpdateInitScriptResponse); - rpc DeleteInitScript(agynio.api.agents.v1.DeleteInitScriptRequest) - returns (agynio.api.agents.v1.DeleteInitScriptResponse); + rpc UpdateInitScript(agynio.api.agents.v1.UpdateInitScriptRequest) returns (agynio.api.agents.v1.UpdateInitScriptResponse); + rpc DeleteInitScript(agynio.api.agents.v1.DeleteInitScriptRequest) returns (agynio.api.agents.v1.DeleteInitScriptResponse); rpc ListInitScripts(agynio.api.agents.v1.ListInitScriptsRequest) returns (agynio.api.agents.v1.ListInitScriptsResponse); } diff --git a/proto/agynio/api/gateway/v1/files.proto b/proto/agynio/api/gateway/v1/files.proto index 22c015a..c5f5535 100644 --- a/proto/agynio/api/gateway/v1/files.proto +++ b/proto/agynio/api/gateway/v1/files.proto @@ -8,7 +8,6 @@ option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; service FilesGateway { rpc UploadFile(stream agynio.api.files.v1.UploadFileRequest) returns (agynio.api.files.v1.UploadFileResponse); - rpc GetFileMetadata(agynio.api.files.v1.GetFileMetadataRequest) - returns (agynio.api.files.v1.GetFileMetadataResponse); + rpc GetFileMetadata(agynio.api.files.v1.GetFileMetadataRequest) returns (agynio.api.files.v1.GetFileMetadataResponse); rpc GetDownloadUrl(agynio.api.files.v1.GetDownloadUrlRequest) returns (agynio.api.files.v1.GetDownloadUrlResponse); } diff --git a/proto/agynio/api/gateway/v1/llm.proto b/proto/agynio/api/gateway/v1/llm.proto index d331820..c1f191f 100644 --- a/proto/agynio/api/gateway/v1/llm.proto +++ b/proto/agynio/api/gateway/v1/llm.proto @@ -8,6 +8,5 @@ option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; service LLMGateway { rpc CreateResponse(agynio.api.llm.v1.CreateResponseRequest) returns (agynio.api.llm.v1.CreateResponseResponse); - rpc CreateResponseStream(agynio.api.llm.v1.CreateResponseStreamRequest) - returns (stream agynio.api.llm.v1.CreateResponseStreamResponse); + rpc CreateResponseStream(agynio.api.llm.v1.CreateResponseStreamRequest) returns (stream agynio.api.llm.v1.CreateResponseStreamResponse); } diff --git a/proto/agynio/api/gateway/v1/notifications.proto b/proto/agynio/api/gateway/v1/notifications.proto index e70b479..c6b3c8e 100644 --- a/proto/agynio/api/gateway/v1/notifications.proto +++ b/proto/agynio/api/gateway/v1/notifications.proto @@ -7,6 +7,5 @@ import "agynio/api/notifications/v1/notifications.proto"; option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; service NotificationsGateway { - rpc Subscribe(agynio.api.notifications.v1.SubscribeRequest) - returns (stream agynio.api.notifications.v1.SubscribeResponse); + rpc Subscribe(agynio.api.notifications.v1.SubscribeRequest) returns (stream agynio.api.notifications.v1.SubscribeResponse); } diff --git a/proto/agynio/api/gateway/v1/threads.proto b/proto/agynio/api/gateway/v1/threads.proto index 83b9a53..d2e24ac 100644 --- a/proto/agynio/api/gateway/v1/threads.proto +++ b/proto/agynio/api/gateway/v1/threads.proto @@ -13,7 +13,6 @@ service ThreadsGateway { rpc SendMessage(agynio.api.threads.v1.SendMessageRequest) returns (agynio.api.threads.v1.SendMessageResponse); rpc GetThreads(agynio.api.threads.v1.GetThreadsRequest) returns (agynio.api.threads.v1.GetThreadsResponse); rpc GetMessages(agynio.api.threads.v1.GetMessagesRequest) returns (agynio.api.threads.v1.GetMessagesResponse); - rpc GetUnackedMessages(agynio.api.threads.v1.GetUnackedMessagesRequest) - returns (agynio.api.threads.v1.GetUnackedMessagesResponse); + rpc GetUnackedMessages(agynio.api.threads.v1.GetUnackedMessagesRequest) returns (agynio.api.threads.v1.GetUnackedMessagesResponse); rpc AckMessages(agynio.api.threads.v1.AckMessagesRequest) returns (agynio.api.threads.v1.AckMessagesResponse); } diff --git a/proto/agynio/api/gateway/v1/token_counting.proto b/proto/agynio/api/gateway/v1/token_counting.proto index ad566da..bdf0432 100644 --- a/proto/agynio/api/gateway/v1/token_counting.proto +++ b/proto/agynio/api/gateway/v1/token_counting.proto @@ -7,6 +7,5 @@ import "agynio/api/token_counting/v1/token_counting.proto"; option go_package = "github.com/agynio/api/gen/agynio/api/gateway/v1;gatewayv1"; service TokenCountingGateway { - rpc CountTokens(agynio.api.token_counting.v1.CountTokensRequest) - returns (agynio.api.token_counting.v1.CountTokensResponse); + rpc CountTokens(agynio.api.token_counting.v1.CountTokensRequest) returns (agynio.api.token_counting.v1.CountTokensResponse); } From 2db9c65f8c1107f22ec813f9dfbf058e3773a55e Mon Sep 17 00:00:00 2001 From: Vitalii Valkov Date: Fri, 20 Mar 2026 08:54:18 +0100 Subject: [PATCH 3/5] Update buf-pr.yaml --- .github/workflows/buf-pr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buf-pr.yaml b/.github/workflows/buf-pr.yaml index cc48519..e1328e3 100644 --- a/.github/workflows/buf-pr.yaml +++ b/.github/workflows/buf-pr.yaml @@ -12,4 +12,4 @@ jobs: with: input: . lint: true - breaking: true + breaking: false From 7a430e4963d1918024d0e6d387bad87c296fe9a2 Mon Sep 17 00:00:00 2001 From: Vitalii Valkov Date: Fri, 20 Mar 2026 08:54:34 +0100 Subject: [PATCH 4/5] Update buf-publish.yaml --- .github/workflows/buf-publish.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buf-publish.yaml b/.github/workflows/buf-publish.yaml index 2b8b2a2..e68a34e 100644 --- a/.github/workflows/buf-publish.yaml +++ b/.github/workflows/buf-publish.yaml @@ -13,7 +13,7 @@ jobs: with: input: . lint: true - breaking: true + breaking: false push: true env: BUF_TOKEN: ${{ secrets.BUF_TOKEN }} From 78f7cee54b9ecef9325c5ec12d9aa62176e6d582 Mon Sep 17 00:00:00 2001 From: Vitalii Valkov Date: Fri, 20 Mar 2026 08:55:29 +0100 Subject: [PATCH 5/5] Update buf-pr.yaml --- .github/workflows/buf-pr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buf-pr.yaml b/.github/workflows/buf-pr.yaml index e1328e3..cc48519 100644 --- a/.github/workflows/buf-pr.yaml +++ b/.github/workflows/buf-pr.yaml @@ -12,4 +12,4 @@ jobs: with: input: . lint: true - breaking: false + breaking: true