fix: align all API mappings with live Core v2.3.3, close #4-#11
- Remove 72 phantom endpoints from types.ts (non-existent in live API) - Fix 11 naming drifts (ListSyncResources→ListResourceSyncs, RunStackPull→PullStack, etc.) - Add missing execute ops: pull_stack, deploy_stack_service (RunStackService), run_sync - Remove phantom resource types: execution, access_request, terminal, alert - Add komodo_copy tool (11 resource types) and komodo_rename tool (12 types) - Add 14 new list_detail types (swarm_*, config, extra_args, etc.) - Fix komodo-client.ts: fallback to KOMODO_INIT_ADMIN_USERNAME/PASSWORD env vars - Rewrite references/api.md to match actual OpenAPI v2.3.3 spec - Remove terminal from test script RESOURCE_DEFS (no longer valid resource type)
This commit is contained in:
+129
-139
@@ -1,12 +1,12 @@
|
||||
# Komodo API — Endpoint-to-Tool Mapping (v2.0)
|
||||
# Komodo API — Endpoint-to-Tool Mapping (v2.1)
|
||||
|
||||
Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
Full reference of Komodo RPC endpoints (OpenAPI v2.3.3) and which MCP tool handles them.
|
||||
|
||||
## Auth
|
||||
|
||||
| Endpoint | Method | Description |
|
||||
|----------|--------|-------------|
|
||||
| `POST /auth/login` | — | JWT login (handled internally by komodo-client.ts) |
|
||||
| `POST /auth/login/LoginLocalUser` | — | JWT login (handled internally by komodo-client.ts) |
|
||||
| API Key headers | — | `X-Api-Key` + `X-Api-Secret` (preferred, set via env vars) |
|
||||
|
||||
---
|
||||
@@ -24,48 +24,17 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `read/ListDeployments` | deployment |
|
||||
| `read/ListAlerters` | alerter |
|
||||
| `read/ListImageRegistryAccounts` | image_registry_account |
|
||||
| `read/ListSyncResources` | sync_resource |
|
||||
| `read/ListResourceSyncs` | sync_resource |
|
||||
| `read/ListUsers` | user |
|
||||
| `read/ListTags` | tag |
|
||||
| `read/ListExecutions` | execution |
|
||||
| `read/ListAccessRequests` | access_request |
|
||||
| `read/ListActions` | action |
|
||||
| `read/ListRepos` | repo |
|
||||
| `read/ListBuilders` | builder |
|
||||
| `read/ListSwarms` | swarm |
|
||||
| `read/ListVariables` | variable |
|
||||
| `read/ListUserGroups` | user_group |
|
||||
| `read/ListAlerts` | alert |
|
||||
| `read/ListTerminals` | terminal |
|
||||
| `read/ListGitProviderAccounts` | git_provider_account |
|
||||
|
||||
### Search Endpoints (via `search` param)
|
||||
|
||||
| Komodo RPC | Resource Type |
|
||||
|------------|---------------|
|
||||
| `read/SearchStacks` | stack |
|
||||
| `read/SearchBuilds` | build |
|
||||
| `read/SearchServers` | server |
|
||||
| `read/SearchProcedures` | procedure |
|
||||
| `read/SearchDeployments` | deployment |
|
||||
| `read/SearchAlerters` | alerter |
|
||||
| `read/SearchImageRegistryAccounts` | image_registry_account |
|
||||
| `read/SearchSyncResources` | sync_resource |
|
||||
|
||||
### Other Read → `komodo_list`
|
||||
|
||||
| Komodo RPC | Notes |
|
||||
|------------|-------|
|
||||
| `read/ListStackServices` | List stack services |
|
||||
| `read/GetStackServices` | List stack services |
|
||||
| `read/GetGlobalStats` | Global statistics |
|
||||
| `read/GetResourceStats` | Resource statistics |
|
||||
| `read/ListTagMappings` | Tag mappings |
|
||||
| `read/ListBinding` | Bindings |
|
||||
| `read/ListResources` | All resources |
|
||||
| `read/ListResourceSyncContents` | Sync contents |
|
||||
| `read/ListServerStats` | Server statistics |
|
||||
|
||||
---
|
||||
|
||||
## `komodo_get` — Get Single Resource
|
||||
@@ -79,24 +48,15 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `read/GetDeployment` | deployment |
|
||||
| `read/GetAlerter` | alerter |
|
||||
| `read/GetImageRegistryAccount` | image_registry_account |
|
||||
| `read/GetSyncResource` | sync_resource |
|
||||
| `read/GetUser` | user |
|
||||
| `read/GetResourceSync` | sync_resource |
|
||||
| `read/GetTag` | tag |
|
||||
| `read/GetAccessRequest` | access_request |
|
||||
| `read/GetAction` | action |
|
||||
| `read/GetRepo` | repo |
|
||||
| `read/GetBuilder` | builder |
|
||||
| `read/GetSwarm` | swarm |
|
||||
| `read/GetVariable` | variable |
|
||||
| `read/GetUserGroup` | user_group |
|
||||
| `read/GetAlert` | alert |
|
||||
| `read/GetGitProviderAccount` | git_provider_account |
|
||||
| `read/GetBuildAggregatedStatus` | Build aggregated status |
|
||||
| `read/GetConcurrencyLimitUsage` | Concurrency limits |
|
||||
| `read/GetResourceSyncDifferences` | Sync differences |
|
||||
| `read/GetResource` | Single resource |
|
||||
| `read/GetBinding` | Single binding |
|
||||
| `read/GetLicenseInfo` | License info |
|
||||
|
||||
---
|
||||
|
||||
@@ -119,9 +79,7 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `write/CreateSwarm` | swarm |
|
||||
| `write/CreateVariable` | variable |
|
||||
| `write/CreateUserGroup` | user_group |
|
||||
| `write/CreateTerminal` | terminal |
|
||||
| `write/CreateGitProviderAccount` | git_provider_account |
|
||||
| `write/CreateTagMapping` | Tag mapping |
|
||||
|
||||
---
|
||||
|
||||
@@ -137,7 +95,6 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `write/UpdateAlerter` | alerter |
|
||||
| `write/UpdateImageRegistryAccount` | image_registry_account |
|
||||
| `write/UpdateResourceSync` | sync_resource |
|
||||
| `write/UpdateUser` | user |
|
||||
| `write/UpdateTagColor` | tag |
|
||||
| `write/UpdateAction` | action |
|
||||
| `write/UpdateRepo` | repo |
|
||||
@@ -147,50 +104,6 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `write/UpdateUserGroup` | user_group |
|
||||
| `write/UpdateGitProviderAccount` | git_provider_account |
|
||||
|
||||
### Other Write → `komodo_update`
|
||||
|
||||
| Komodo RPC | Notes |
|
||||
|------------|-------|
|
||||
| `write/UpdateStackServiceNames` | Stack service names |
|
||||
| `write/UpdateServerTemplate` | Server template |
|
||||
| `write/UpdateServerTemplateInstances` | Server template instances |
|
||||
| `write/BindStack` | Bind stack |
|
||||
| `write/BindServer` | Bind server |
|
||||
| `write/UpdateBinding` | Update binding |
|
||||
| `write/UpdateAllBindings` | Update all bindings |
|
||||
| `write/MarkResourceSyncDeployed` | Mark sync deployed |
|
||||
| `write/UpdateUserPermissions` | User permissions |
|
||||
| `write/UpdateConcurrencyLimit` | Concurrency limits |
|
||||
| `write/AcknowledgeAccessRequest` | Access request |
|
||||
| `write/UpdateTagMapping` | Tag mapping |
|
||||
| `write/UpdateProcedureSchedule` | Procedure schedule |
|
||||
| `write/UpdateUserAdmin` | User admin status |
|
||||
| `write/UpdateUserBasePermissions` | User base permissions |
|
||||
| `write/UpdateServiceUserDescription` | Service user desc |
|
||||
| `write/UpdateOnboardingKey` | Onboarding key |
|
||||
| `write/UpdatePermissionOnResourceType` | Permission on type |
|
||||
| `write/UpdatePermissionOnTarget` | Permission on target |
|
||||
| `write/UpdateResourceMeta` | Resource metadata |
|
||||
| `write/RefreshStackCache` | Refresh stack cache |
|
||||
| `write/RefreshBuildCache` | Refresh build cache |
|
||||
| `write/RefreshRepoCache` | Refresh repo cache |
|
||||
| `write/RefreshResourceSyncPending` | Refresh sync pending |
|
||||
| `write/CommitSync` | Commit sync |
|
||||
| `write/RotateServerKeys` | Rotate server keys |
|
||||
| `write/WriteBuildFileContents` | Write build file |
|
||||
| `write/WriteStackFileContents` | Write stack file |
|
||||
| `write/WriteSyncFileContents` | Write sync file |
|
||||
| `write/CheckDeploymentForUpdate` | Check deployment update |
|
||||
| `write/CheckStackForUpdate` | Check stack update |
|
||||
| `write/SetEveryoneUserGroup` | Set everyone group |
|
||||
| `write/SetUsersInUserGroup` | Set users in group |
|
||||
| `write/SetLastSeenUpdate` | Set last seen |
|
||||
| `write/PushRecentlyViewed` | Push recently viewed |
|
||||
| `write/UpdateVariableDescription` | Variable description |
|
||||
| `write/UpdateVariableIsSecret` | Variable secret flag |
|
||||
| `write/UpdateTagColor` | Tag color |
|
||||
| `write/UpdateServerPublicKey` | Server public key |
|
||||
|
||||
---
|
||||
|
||||
## `komodo_delete` — Delete Resource
|
||||
@@ -203,7 +116,7 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `write/DeleteProcedure` | procedure |
|
||||
| `write/DeleteDeployment` | deployment |
|
||||
| `write/DeleteAlerter` | alerter |
|
||||
| `write/DeleteSyncResource` | sync_resource |
|
||||
| `write/DeleteResourceSync` | sync_resource |
|
||||
| `write/DeleteTag` | tag |
|
||||
| `write/DeleteAction` | action |
|
||||
| `write/DeleteRepo` | repo |
|
||||
@@ -211,20 +124,8 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `write/DeleteSwarm` | swarm |
|
||||
| `write/DeleteVariable` | variable |
|
||||
| `write/DeleteUserGroup` | user_group |
|
||||
| `write/DeleteTerminal` | terminal |
|
||||
| `write/DeleteGitProviderAccount` | git_provider_account |
|
||||
|
||||
### Other Delete → `komodo_delete`
|
||||
|
||||
| Komodo RPC | Notes |
|
||||
|------------|-------|
|
||||
| `write/DeleteAllTerminals` | Delete all terminals |
|
||||
| `write/DeleteApiKeyForServiceUser` | Delete API key |
|
||||
| `write/DeleteImageRegistryAccount` | Delete registry account |
|
||||
| `write/DeleteOnboardingKey` | Delete onboarding key |
|
||||
| `write/DeleteUser` | Delete user |
|
||||
| `write/DeleteTagMapping` | Delete tag mapping |
|
||||
|
||||
---
|
||||
|
||||
## `komodo_execute` — Execute Operations
|
||||
@@ -234,19 +135,14 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
|-----------|------------|
|
||||
| `run_build` | `execute/RunBuild` |
|
||||
| `deploy_stack` | `execute/DeployStack` |
|
||||
| `deploy_stack_service` | `execute/DeployStackService` |
|
||||
| `deploy_stack_service` | `execute/RunStackService` |
|
||||
| `deploy` | `execute/Deploy` |
|
||||
| `deploy_stack_if_changed` | `execute/DeployStackIfChanged` |
|
||||
| `destroy_stack` | `execute/DestroyStack` |
|
||||
| `destroy_container` | `execute/DestroyContainer` |
|
||||
| `destroy_deployment` | `execute/DestroyDeployment` |
|
||||
| `run_deployment_execute` | `execute/Deploy` |
|
||||
| `run_deployment_redeploy` | `execute/Deploy` |
|
||||
| `run_deployment_destroy` | `execute/DestroyDeployment` |
|
||||
| `run_deployment_stop` | `execute/StopDeployment` |
|
||||
| `run_deployment_logs` | `execute/RunDeploymentLogs` |
|
||||
| `run_deployment_action` | `execute/RunDeploymentAction` |
|
||||
| `run_deployment_sync` | `execute/RunDeploymentSync` |
|
||||
| `pull_stack` | `execute/PullStack` |
|
||||
| `pull_deployment` | `execute/PullDeployment` |
|
||||
|
||||
### Repo Operations
|
||||
| Operation | Komodo RPC |
|
||||
@@ -254,7 +150,6 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| `build_repo` | `execute/BuildRepo` |
|
||||
| `clone_repo` | `execute/CloneRepo` |
|
||||
| `pull_repo` | `execute/PullRepo` |
|
||||
| `pull_deployment` | `execute/PullDeployment` |
|
||||
| `cancel_repo_build` | `execute/CancelRepoBuild` |
|
||||
| `clear_repo_cache` | `execute/ClearRepoCache` |
|
||||
|
||||
@@ -262,34 +157,20 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| Operation | Komodo RPC |
|
||||
|-----------|------------|
|
||||
| `run_procedure` | `execute/RunProcedure` |
|
||||
| `run_procedure_stage` | `execute/RunProcedureStage` |
|
||||
| `run_action` | `execute/RunAction` |
|
||||
| `run_sync` | `execute/RunSync` |
|
||||
| `cancel_action` | `execute/CancelAction` |
|
||||
| `cancel_build` | `execute/CancelBuild` |
|
||||
| `cancel_procedure` | `execute/CancelProcedure` |
|
||||
|
||||
### Stack Operations
|
||||
### Stack Lifecycle
|
||||
| Operation | Komodo RPC |
|
||||
|-----------|------------|
|
||||
| `run_stack_refresh_cache` | `execute/RunStackRefreshCache` |
|
||||
| `run_stack_refresh_content` | `execute/RunStackRefreshContent` |
|
||||
| `run_stack_pull` | `execute/RunStackPull` |
|
||||
| `run_stack_pull_deployment` | `execute/RunStackPullDeployment` |
|
||||
| `run_stack_stop` | `execute/StopStack` |
|
||||
| `run_stack_restart` | `execute/RestartStack` |
|
||||
| `run_stack_pause` | `execute/PauseStack` |
|
||||
| `run_stack_unpause` | `execute/UnpauseStack` |
|
||||
| `run_stack_remove_orphan_containers` | `execute/RunStackRemoveOrphanContainers` |
|
||||
| `run_stack_toggle_service_dependencies` | `execute/RunStackToggleServiceDependencies` |
|
||||
| `run_stack_auto_update` | `execute/RunStackAutoUpdate` |
|
||||
| `run_stack_commit` | `execute/RunStackCommit` |
|
||||
| `start_stack` | `execute/StartStack` |
|
||||
| `stop_stack` | `execute/StopStack` |
|
||||
| `restart_stack` | `execute/RestartStack` |
|
||||
| `pause_stack` | `execute/PauseStack` |
|
||||
| `unpause_stack` | `execute/UnpauseStack` |
|
||||
| `run_resource_sync` | `execute/RunResourceSync` |
|
||||
| `run_sync_deployment` | `execute/RunSyncDeployment` |
|
||||
|
||||
### Container Lifecycle
|
||||
| Operation | Komodo RPC |
|
||||
@@ -317,13 +198,10 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
### Server Operations
|
||||
| Operation | Komodo RPC |
|
||||
|-----------|------------|
|
||||
| `run_server_refresh` | `execute/RunServerRefresh` |
|
||||
| `run_server_refresh_containers` | `execute/RunServerRefreshContainers` |
|
||||
| `run_server_update_periphery` | `execute/RunServerUpdatePeriphery` |
|
||||
| `run_server_prune_images` | `execute/PruneImages` |
|
||||
| `run_server_prune_containers` | `execute/PruneContainers` |
|
||||
| `run_server_prune_networks` | `execute/PruneNetworks` |
|
||||
| `run_server_stats` | `execute/RunServerStats` |
|
||||
| `run_server_run_command` | `execute/RunServerRunCommand` |
|
||||
| `run_server_scripts` | `execute/RunServerScripts` |
|
||||
| `run_server_copy` | `execute/RunServerCopy` |
|
||||
@@ -374,16 +252,11 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
### Admin & Misc
|
||||
| Operation | Komodo RPC |
|
||||
|-----------|------------|
|
||||
| `run_server_refresh` | `execute/RunServerRefresh` |
|
||||
| `run_server_refresh_containers` | `execute/RunServerRefreshContainers` |
|
||||
| `run_server_update_periphery` | `execute/RunServerUpdatePeriphery` |
|
||||
| `global_auto_update` | `execute/GlobalAutoUpdate` |
|
||||
| `backup_core_database` | `execute/BackupCoreDatabase` |
|
||||
| `rotate_core_keys` | `execute/RotateCoreKeys` |
|
||||
| `global_auto_update` | `execute/GlobalAutoUpdate` |
|
||||
| `send_alert` | `execute/SendAlert` |
|
||||
| `test_alerter` | `execute/TestAlerter` |
|
||||
| `sleep` | `execute/Sleep` |
|
||||
| `get_mcp_token` | `execute/GetMcpToken` |
|
||||
|
||||
---
|
||||
|
||||
@@ -481,3 +354,120 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|
||||
| full_actions | `read/ListFullActions` |
|
||||
| full_alerters | `read/ListFullAlerters` |
|
||||
| full_resource_syncs | `read/ListFullResourceSyncs` |
|
||||
| swarm_configs | `read/ListSwarmConfigs` |
|
||||
| swarm_networks | `read/ListSwarmNetworks` |
|
||||
| swarm_nodes | `read/ListSwarmNodes` |
|
||||
| swarm_secrets | `read/ListSwarmSecrets` |
|
||||
| swarm_services | `read/ListSwarmServices` |
|
||||
| swarm_stacks | `read/ListSwarmStacks` |
|
||||
| swarm_tasks | `read/ListSwarmTasks` |
|
||||
| git_providers_from_config | `read/ListGitProvidersFromConfig` |
|
||||
| image_registries_from_config | `read/ListImageRegistriesFromConfig` |
|
||||
| common_build_extra_args | `read/ListCommonBuildExtraArgs` |
|
||||
| common_deployment_extra_args | `read/ListCommonDeploymentExtraArgs` |
|
||||
| common_stack_build_extra_args | `read/ListCommonStackBuildExtraArgs` |
|
||||
| common_stack_extra_args | `read/ListCommonStackExtraArgs` |
|
||||
| image_history | `read/ListImageHistory` |
|
||||
| all_stack_services | `read/ListAllStackServices` |
|
||||
|
||||
---
|
||||
|
||||
## `komodo_copy` — Copy Resources
|
||||
|
||||
| Resource Type | Komodo RPC |
|
||||
|---------------|------------|
|
||||
| stack | `write/CopyStack` |
|
||||
| build | `write/CopyBuild` |
|
||||
| server | `write/CopyServer` |
|
||||
| deployment | `write/CopyDeployment` |
|
||||
| procedure | `write/CopyProcedure` |
|
||||
| alerter | `write/CopyAlerter` |
|
||||
| action | `write/CopyAction` |
|
||||
| repo | `write/CopyRepo` |
|
||||
| builder | `write/CopyBuilder` |
|
||||
| swarm | `write/CopySwarm` |
|
||||
| sync_resource | `write/CopyResourceSync` |
|
||||
|
||||
---
|
||||
|
||||
## `komodo_rename` — Rename Resources
|
||||
|
||||
| Resource Type | Komodo RPC |
|
||||
|---------------|------------|
|
||||
| stack | `write/RenameStack` |
|
||||
| build | `write/RenameBuild` |
|
||||
| server | `write/RenameServer` |
|
||||
| deployment | `write/RenameDeployment` |
|
||||
| procedure | `write/RenameProcedure` |
|
||||
| alerter | `write/RenameAlerter` |
|
||||
| action | `write/RenameAction` |
|
||||
| repo | `write/RenameRepo` |
|
||||
| builder | `write/RenameBuilder` |
|
||||
| swarm | `write/RenameSwarm` |
|
||||
| tag | `write/RenameTag` |
|
||||
| user_group | `write/RenameUserGroup` |
|
||||
|
||||
---
|
||||
|
||||
## Other Notable Endpoints (not exposed as MCP tools)
|
||||
|
||||
These exist in the API but are not currently mapped to MCP tools. They can be added if needed.
|
||||
|
||||
### Auth (31 endpoints)
|
||||
GitHub/Google/OIDC OAuth, passkey/TOTP 2FA, API key management, account management.
|
||||
|
||||
### Read — Additional
|
||||
| Komodo RPC | Description |
|
||||
|------------|-------------|
|
||||
| `read/GetCoreInfo` | Core API configuration info |
|
||||
| `read/GetVersion` | Core API version |
|
||||
| `read/GetSystemInformation` | Server system information |
|
||||
| `read/GetSystemStats` | Server system stats |
|
||||
| `read/GetDeploymentStats` | Deployment container stats |
|
||||
| `read/GetDeploymentContainer` | Deployment container info |
|
||||
| `read/GetHistoricalServerStats` | Timeseries server stats |
|
||||
| `read/GetBuildMonthlyStats` | Monthly build stats |
|
||||
| `read/GetPermission` | User permission level on resource |
|
||||
| `read/GetUsername` | Get username by ID |
|
||||
| `read/GetResourceMatchingContainer` | Find resource for container |
|
||||
| `read/GetUpdate` | Get update data |
|
||||
| `read/FindUser` | Find user (admin) |
|
||||
| `read/Get*ActionState` (9) | Action state for each resource type |
|
||||
| `read/ExportAllResourcesToToml` | Export all resources to TOML |
|
||||
| `read/ExportResourcesToToml` | Export specific resources to TOML |
|
||||
|
||||
### Write — Additional
|
||||
| Komodo RPC | Description |
|
||||
|------------|-------------|
|
||||
| `write/CreateLocalUser` | Create local user (admin) |
|
||||
| `write/CreateServiceUser` | Create service user (admin) |
|
||||
| `write/CreateNetwork` | Create docker network |
|
||||
| `write/CreateDeploymentFromContainer` | Create deployment from container |
|
||||
| `write/CreateApiKeyForServiceUser` | Create API key for service user |
|
||||
| `write/AddUserToUserGroup` | Add user to group (admin) |
|
||||
| `write/RemoveUserFromUserGroup` | Remove user from group (admin) |
|
||||
| `write/CloseAlert` | Close alert (admin) |
|
||||
| `write/BatchDeleteAllTerminals` | Batch delete terminals |
|
||||
| `write/RefreshStackCache` | Refresh stack cache |
|
||||
| `write/RefreshBuildCache` | Refresh build cache |
|
||||
| `write/RefreshRepoCache` | Refresh repo cache |
|
||||
| `write/RefreshResourceSyncPending` | Refresh sync pending |
|
||||
| `write/CommitSync` | Commit sync |
|
||||
| `write/CheckDeploymentForUpdate` | Check deployment update |
|
||||
| `write/CheckStackForUpdate` | Check stack update |
|
||||
| `write/WriteBuildFileContents` | Write build file contents |
|
||||
| `write/WriteStackFileContents` | Write stack file contents |
|
||||
| `write/WriteSyncFileContents` | Write sync file contents |
|
||||
| `write/RotateServerKeys` | Rotate server keys |
|
||||
| `write/UpdatePermissionOnResourceType` | Update permission on type |
|
||||
| `write/UpdatePermissionOnTarget` | Update permission on target |
|
||||
| `write/UpdateResourceMeta` | Update resource metadata |
|
||||
| `write/UpdateServerPublicKey` | Update server public key |
|
||||
| `write/UpdateUserAdmin` | Update user admin status |
|
||||
| `write/UpdateUserBasePermissions` | Update user base permissions |
|
||||
| `write/UpdateVariableDescription` | Update variable description |
|
||||
| `write/UpdateVariableIsSecret` | Update variable secret flag |
|
||||
| `write/SetEveryoneUserGroup` | Set everyone group |
|
||||
| `write/SetUsersInUserGroup` | Set users in group |
|
||||
| `write/SetLastSeenUpdate` | Set last seen update |
|
||||
| `write/PushRecentlyViewed` | Push recently viewed |
|
||||
|
||||
@@ -254,13 +254,6 @@ RESOURCE_DEFS: dict[str, dict] = {
|
||||
"name_field": "name",
|
||||
"has_update": True,
|
||||
},
|
||||
"terminal": {
|
||||
"create_params": lambda name: {"name": name},
|
||||
"update_params": None, # No update endpoint
|
||||
"id_field": "id",
|
||||
"name_field": "name",
|
||||
"has_update": False,
|
||||
},
|
||||
}
|
||||
|
||||
# Test tiers
|
||||
@@ -268,7 +261,6 @@ TIERS: list[list[str]] = [
|
||||
["tag", "variable", "user_group"],
|
||||
["procedure", "action", "repo", "builder", "alerter", "sync_resource"],
|
||||
["server", "stack", "build", "deployment", "swarm"],
|
||||
["terminal"],
|
||||
]
|
||||
|
||||
|
||||
|
||||
+24
-10
@@ -14,6 +14,8 @@ import { summaryInputSchema, handleSummary } from "./tools/summary.js";
|
||||
import { inspectInputSchema, handleInspect } from "./tools/inspect.js";
|
||||
import { searchLogsInputSchema, handleSearchLogs } from "./tools/search-logs.js";
|
||||
import { listDetailInputSchema, handleListDetail } from "./tools/list-detail.js";
|
||||
import { copyInputSchema, handleCopy } from "./tools/copy.js";
|
||||
import { renameInputSchema, handleRename } from "./tools/rename.js";
|
||||
|
||||
const PORT = parseInt(process.env.PORT || "9800", 10);
|
||||
const client = new KomodoClient();
|
||||
@@ -22,42 +24,42 @@ const transports: Record<string, StreamableHTTPServerTransport> = {};
|
||||
function createServerInstance(): McpServer {
|
||||
const server = new McpServer({
|
||||
name: "komodo-mcp-server",
|
||||
version: "2.0.0",
|
||||
version: "2.1.0",
|
||||
});
|
||||
|
||||
server.registerTool("komodo_list", {
|
||||
description:
|
||||
"List or search Komodo resources. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request, action, repo, builder, swarm, variable, user_group, alert, terminal, git_provider_account. Returns a JSON array.",
|
||||
"List or search Komodo resources. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Returns a JSON array.",
|
||||
inputSchema: listInputSchema,
|
||||
}, async (args) => handleList(args, client));
|
||||
|
||||
server.registerTool("komodo_get", {
|
||||
description:
|
||||
"Get a single Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request, action, repo, builder, swarm, variable, user_group, alert, git_provider_account. Returns the full resource object.",
|
||||
"Get a single Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Returns the full resource object.",
|
||||
inputSchema: getInputSchema,
|
||||
}, async (args) => handleGet(args, client));
|
||||
|
||||
server.registerTool("komodo_create", {
|
||||
description:
|
||||
"Create a new Komodo resource. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, terminal, git_provider_account. Provide params object with Create* endpoint fields.",
|
||||
"Create a new Komodo resource. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Provide params object with Create* endpoint fields.",
|
||||
inputSchema: createInputSchema,
|
||||
}, async (args) => handleCreate(args, client));
|
||||
|
||||
server.registerTool("komodo_update", {
|
||||
description:
|
||||
"Update an existing Komodo resource by ID. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Provide params with fields to update.",
|
||||
"Update an existing Komodo resource by ID. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Provide params with fields to update.",
|
||||
inputSchema: updateInputSchema,
|
||||
}, async (args) => handleUpdate(args, client));
|
||||
|
||||
server.registerTool("komodo_delete", {
|
||||
description:
|
||||
"Delete a Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, sync_resource, tag, action, repo, builder, swarm, variable, user_group, terminal, git_provider_account.",
|
||||
"Delete a Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account.",
|
||||
inputSchema: deleteInputSchema,
|
||||
}, async (args) => handleDelete(args, client));
|
||||
|
||||
server.registerTool("komodo_execute", {
|
||||
description:
|
||||
"Execute a Komodo operation. 100+ operations including: run_build, deploy_stack, deploy, destroy_stack, run_procedure, run_action, build_repo, clone_repo, pull_repo, container lifecycle (start/stop/restart/pause/unpause), deployment lifecycle, stack lifecycle, server operations (refresh, prune, run_command, scripts, copy, move), swarm operations, batch operations (batch_run_build, batch_deploy, etc.), and admin ops (backup_core_database, global_auto_update).",
|
||||
"Execute a Komodo operation. Operations include: build/deploy (run_build, deploy, deploy_stack, destroy_stack, pull_stack), repo (build_repo, clone_repo, pull_repo), procedure/action (run_procedure, run_action, run_sync), stack lifecycle (start/stop/restart/pause/unpause), container lifecycle, deployment lifecycle, server ops (refresh_containers, prune_images/containers/networks, run_command, scripts, copy, move), swarm ops (remove nodes/services/configs/secrets/stacks, create/rotate config/secret), batch ops, and admin (backup_core_database, rotate_core_keys, global_auto_update, send_alert, test_alerter).",
|
||||
inputSchema: executeInputSchema,
|
||||
}, async (args) => handleExecute(args, client));
|
||||
|
||||
@@ -69,7 +71,7 @@ function createServerInstance(): McpServer {
|
||||
|
||||
server.registerTool("komodo_summary", {
|
||||
description:
|
||||
"Get summary/stats for a Komodo resource type. resource_type: build (GetBuildsSummary), deployment (GetDeploymentsSummary), server (GetServersSummary), stack (GetStacksSummary), alerter (GetAlertersSummary), procedure (GetProceduresSummary), sync_resource (GetResourceSyncsSummary), repo (GetReposSummary), builder (GetBuildersSummary), swarm (GetSwarmsSummary), action (GetActionsSummary).",
|
||||
"Get summary/stats for a Komodo resource type. resource_type: build, deployment, server, stack, alerter, procedure, sync_resource, repo, builder, swarm, action.",
|
||||
inputSchema: summaryInputSchema,
|
||||
}, async (args) => handleSummary(args, client));
|
||||
|
||||
@@ -87,10 +89,22 @@ function createServerInstance(): McpServer {
|
||||
|
||||
server.registerTool("komodo_list_detail", {
|
||||
description:
|
||||
"Extended listing for specific Docker/infrastructure objects. list_type: containers, all_containers, images, networks, volumes, system_processes, schedules, permissions, api_keys, secrets, updates, build_versions, compose_projects, user_target_permissions, full_stacks, full_builds, full_servers, full_deployments, full_procedures, full_repos, full_builders, full_swarms, full_actions, full_alerters, full_resource_syncs. Optional server filter.",
|
||||
"Extended listing for Docker/infrastructure objects. list_type: containers, all_containers, images, networks, volumes, system_processes, schedules, permissions, api_keys, secrets, updates, build_versions, compose_projects, user_target_permissions, full_stacks, full_builds, full_servers, full_deployments, full_procedures, full_repos, full_builders, full_swarms, full_actions, full_alerters, full_resource_syncs, swarm_configs, swarm_networks, swarm_nodes, swarm_secrets, swarm_services, swarm_stacks, swarm_tasks, git_providers_from_config, image_registries_from_config, common_build_extra_args, common_deployment_extra_args, common_stack_build_extra_args, common_stack_extra_args, image_history, all_stack_services. Optional server filter.",
|
||||
inputSchema: listDetailInputSchema,
|
||||
}, async (args) => handleListDetail(args, client));
|
||||
|
||||
server.registerTool("komodo_copy", {
|
||||
description:
|
||||
"Copy a Komodo resource. resource_type: stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, sync_resource. Provide id of the source resource and optional name for the copy.",
|
||||
inputSchema: copyInputSchema,
|
||||
}, async (args) => handleCopy(args, client));
|
||||
|
||||
server.registerTool("komodo_rename", {
|
||||
description:
|
||||
"Rename a Komodo resource. resource_type: stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, tag, user_group. Provide id and the new name.",
|
||||
inputSchema: renameInputSchema,
|
||||
}, async (args) => handleRename(args, client));
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
@@ -128,7 +142,7 @@ const httpServer = createServer(async (req, res) => {
|
||||
// Health check
|
||||
if (req.method === "GET" && req.url === "/health") {
|
||||
res.writeHead(200, { "Content-Type": "application/json" });
|
||||
res.end(JSON.stringify({ status: "ok", name: "komodo-mcp-server", version: "2.0.0" }));
|
||||
res.end(JSON.stringify({ status: "ok", name: "komodo-mcp-server", version: "2.1.0" }));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ export class KomodoClient {
|
||||
constructor() {
|
||||
this.baseUrl =
|
||||
process.env.KOMODO_BASE_URL || process.env.KOMODO_URL || "http://10.10.2.114:9120";
|
||||
this.username = process.env.KOMODO_USERNAME || "";
|
||||
this.password = process.env.KOMODO_PASSWORD || "";
|
||||
this.username = process.env.KOMODO_USERNAME || process.env.KOMODO_INIT_ADMIN_USERNAME || "";
|
||||
this.password = process.env.KOMODO_PASSWORD || process.env.KOMODO_INIT_ADMIN_PASSWORD || "";
|
||||
this.apiKey = process.env.KOMODO_API_KEY || null;
|
||||
this.apiSecret = process.env.KOMODO_API_SECRET || null;
|
||||
this.useApiKey = !!(this.apiKey && this.apiSecret);
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import { z } from "zod";
|
||||
import { KomodoClient } from "../komodo-client.js";
|
||||
import { COPY_REQUEST_MAP } from "../types.js";
|
||||
|
||||
const CopyableType = z.enum([
|
||||
"stack", "build", "server", "deployment", "procedure",
|
||||
"alerter", "action", "repo", "builder", "swarm", "sync_resource",
|
||||
]);
|
||||
|
||||
export const copyInputSchema = {
|
||||
resource_type: CopyableType.describe(
|
||||
"Resource type to copy (stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, sync_resource)",
|
||||
),
|
||||
id: z.string().describe("Resource ID or name to copy"),
|
||||
name: z.string().optional().describe("Name for the new copy"),
|
||||
};
|
||||
|
||||
export async function handleCopy(
|
||||
args: {
|
||||
resource_type: z.infer<typeof CopyableType>;
|
||||
id: string;
|
||||
name?: string;
|
||||
},
|
||||
client: KomodoClient,
|
||||
): Promise<{ content: { type: "text"; text: string }[] }> {
|
||||
const { resource_type, id, name } = args;
|
||||
|
||||
const requestName = COPY_REQUEST_MAP[resource_type];
|
||||
if (!requestName) {
|
||||
throw new Error(
|
||||
`No COPY endpoint available for resource type: ${resource_type}`,
|
||||
);
|
||||
}
|
||||
|
||||
const params: Record<string, unknown> = { id };
|
||||
if (name) params.name = name;
|
||||
|
||||
const result = await client.rpc("write", requestName, params);
|
||||
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text: JSON.stringify(result, null, 2),
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import { ExecuteOperation, EXECUTE_REQUEST_MAP } from "../types.js";
|
||||
|
||||
export const executeInputSchema = {
|
||||
operation: ExecuteOperation.describe(
|
||||
"Execute operation (run_build, deploy_stack, deploy_stack_service, run_procedure, run_procedure_stage, run_deployment_action, run_deployment_sync, run_resource_sync, run_stack_refresh_cache, run_stack_refresh_content, run_stack_pull, run_stack_pull_deployment, run_stack_stop, run_stack_restart, run_stack_pause, run_stack_unpause, run_stack_remove_orphan_containers, run_stack_toggle_service_dependencies, run_stack_auto_update, run_stack_commit, run_server_refresh, run_server_refresh_containers, run_server_update_periphery, run_server_prune_images, run_server_prune_containers, run_server_prune_networks, run_server_stats, run_server_run_command, run_server_scripts, run_server_copy, run_server_move, run_deployment_execute, run_deployment_redeploy, run_deployment_destroy, run_deployment_stop, run_deployment_logs, run_sync_deployment, get_mcp_token)",
|
||||
"Execute operation (run_build, deploy_stack, deploy_stack_service, deploy, deploy_stack_if_changed, destroy_stack, destroy_container, destroy_deployment, pull_stack, pull_deployment, build_repo, clone_repo, pull_repo, cancel_repo_build, clear_repo_cache, run_procedure, run_action, run_sync, cancel_action, cancel_build, cancel_procedure, start_stack, stop_stack, restart_stack, pause_stack, unpause_stack, start_container, stop_container, restart_container, pause_container, unpause_container, start_all_containers, stop_all_containers, restart_all_containers, pause_all_containers, unpause_all_containers, start_deployment, stop_deployment, restart_deployment, pause_deployment, unpause_deployment, run_server_refresh_containers, run_server_prune_images, run_server_prune_containers, run_server_prune_networks, run_server_run_command, run_server_scripts, run_server_copy, run_server_move, rotate_all_server_keys, prune_buildx, prune_docker_builders, prune_system, prune_volumes, delete_image, delete_network, delete_volume, remove_swarm_nodes, remove_swarm_services, remove_swarm_configs, remove_swarm_secrets, remove_swarm_stacks, create_swarm_config, create_swarm_secret, rotate_swarm_config, rotate_swarm_secret, update_swarm_node, batch_run_build, batch_deploy_stack, batch_deploy_stack_if_changed, batch_deploy, batch_pull_stack, batch_pull_repo, batch_build_repo, batch_clone_repo, batch_run_procedure, batch_run_action, batch_destroy_deployment, batch_destroy_stack, backup_core_database, rotate_core_keys, global_auto_update, send_alert, test_alerter)",
|
||||
),
|
||||
id: z.string().optional().describe("Resource ID or name for the operation"),
|
||||
params: z
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ const GET_PARAM_KEY: Record<string, string> = {
|
||||
|
||||
export const getInputSchema = {
|
||||
resource_type: ResourceType.describe(
|
||||
"Resource type to get (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request)",
|
||||
"Resource type to get (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account)",
|
||||
),
|
||||
id: z.string().describe("Resource ID or name"),
|
||||
};
|
||||
|
||||
@@ -10,6 +10,16 @@ const listDetailType = z.enum([
|
||||
"full_stacks", "full_builds", "full_servers", "full_deployments",
|
||||
"full_procedures", "full_repos", "full_builders", "full_swarms",
|
||||
"full_actions", "full_alerters", "full_resource_syncs",
|
||||
// Swarm detail lists
|
||||
"swarm_configs", "swarm_networks", "swarm_nodes", "swarm_secrets",
|
||||
"swarm_services", "swarm_stacks", "swarm_tasks",
|
||||
// Config lists
|
||||
"git_providers_from_config", "image_registries_from_config",
|
||||
// Extra args
|
||||
"common_build_extra_args", "common_deployment_extra_args",
|
||||
"common_stack_build_extra_args", "common_stack_extra_args",
|
||||
// Other
|
||||
"image_history", "all_stack_services",
|
||||
]);
|
||||
|
||||
export const listDetailInputSchema = {
|
||||
|
||||
+2
-2
@@ -8,12 +8,12 @@ import {
|
||||
|
||||
export const listInputSchema = {
|
||||
resource_type: ResourceType.describe(
|
||||
"Resource type to list (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request)",
|
||||
"Resource type to list (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, action, repo, builder, swarm, variable, user_group, git_provider_account)",
|
||||
),
|
||||
search: z
|
||||
.string()
|
||||
.optional()
|
||||
.describe("Optional search/filter query — uses the Search* endpoint instead of List*"),
|
||||
.describe("Optional search/filter query — filters results server-side"),
|
||||
project: z
|
||||
.string()
|
||||
.optional()
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
import { z } from "zod";
|
||||
import { KomodoClient } from "../komodo-client.js";
|
||||
import { RENAME_REQUEST_MAP } from "../types.js";
|
||||
|
||||
const RenameableType = z.enum([
|
||||
"stack", "build", "server", "deployment", "procedure",
|
||||
"alerter", "action", "repo", "builder", "swarm", "tag", "user_group",
|
||||
]);
|
||||
|
||||
export const renameInputSchema = {
|
||||
resource_type: RenameableType.describe(
|
||||
"Resource type to rename (stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, tag, user_group)",
|
||||
),
|
||||
id: z.string().describe("Resource ID or name to rename"),
|
||||
name: z.string().describe("New name for the resource"),
|
||||
};
|
||||
|
||||
export async function handleRename(
|
||||
args: {
|
||||
resource_type: z.infer<typeof RenameableType>;
|
||||
id: string;
|
||||
name: string;
|
||||
},
|
||||
client: KomodoClient,
|
||||
): Promise<{ content: { type: "text"; text: string }[] }> {
|
||||
const { resource_type, id, name } = args;
|
||||
|
||||
const requestName = RENAME_REQUEST_MAP[resource_type];
|
||||
if (!requestName) {
|
||||
throw new Error(
|
||||
`No RENAME endpoint available for resource type: ${resource_type}`,
|
||||
);
|
||||
}
|
||||
|
||||
const params: Record<string, unknown> = { id, name };
|
||||
if (resource_type === "tag") {
|
||||
params.tag = id;
|
||||
delete params.id;
|
||||
}
|
||||
|
||||
const result = await client.rpc("write", requestName, params);
|
||||
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text: JSON.stringify(result, null, 2),
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
+134
-167
@@ -11,74 +11,48 @@ export const ResourceType = z.enum([
|
||||
"sync_resource",
|
||||
"user",
|
||||
"tag",
|
||||
"execution",
|
||||
"access_request",
|
||||
"action",
|
||||
"repo",
|
||||
"builder",
|
||||
"swarm",
|
||||
"variable",
|
||||
"user_group",
|
||||
"alert",
|
||||
"terminal",
|
||||
"git_provider_account",
|
||||
]);
|
||||
export type ResourceType = z.infer<typeof ResourceType>;
|
||||
|
||||
export const ExecuteOperation = z.enum([
|
||||
// Build & Deploy
|
||||
"run_build",
|
||||
"deploy_stack",
|
||||
"deploy_stack_service",
|
||||
"run_procedure",
|
||||
"run_procedure_stage",
|
||||
"run_deployment_action",
|
||||
"run_deployment_sync",
|
||||
"run_resource_sync",
|
||||
"run_stack_refresh_cache",
|
||||
"run_stack_refresh_content",
|
||||
"run_stack_pull",
|
||||
"run_stack_pull_deployment",
|
||||
"run_stack_stop",
|
||||
"run_stack_restart",
|
||||
"run_stack_pause",
|
||||
"run_stack_unpause",
|
||||
"run_stack_remove_orphan_containers",
|
||||
"run_stack_toggle_service_dependencies",
|
||||
"run_stack_auto_update",
|
||||
"run_stack_commit",
|
||||
"run_server_refresh",
|
||||
"run_server_refresh_containers",
|
||||
"run_server_update_periphery",
|
||||
"run_server_prune_images",
|
||||
"run_server_prune_containers",
|
||||
"run_server_prune_networks",
|
||||
"run_server_stats",
|
||||
"run_server_run_command",
|
||||
"run_server_scripts",
|
||||
"run_server_copy",
|
||||
"run_server_move",
|
||||
"run_deployment_execute",
|
||||
"run_deployment_redeploy",
|
||||
"run_deployment_destroy",
|
||||
"run_deployment_stop",
|
||||
"run_deployment_logs",
|
||||
"run_sync_deployment",
|
||||
"get_mcp_token",
|
||||
"deploy",
|
||||
"deploy_stack_if_changed",
|
||||
"destroy_stack",
|
||||
"destroy_container",
|
||||
"destroy_deployment",
|
||||
"pull_stack",
|
||||
"pull_deployment",
|
||||
// Repo operations
|
||||
"build_repo",
|
||||
"clone_repo",
|
||||
"pull_repo",
|
||||
"pull_deployment",
|
||||
"cancel_repo_build",
|
||||
"clear_repo_cache",
|
||||
// Procedure & Action
|
||||
"run_procedure",
|
||||
"run_action",
|
||||
"run_sync",
|
||||
"cancel_action",
|
||||
"cancel_build",
|
||||
"cancel_procedure",
|
||||
// Stack lifecycle
|
||||
"start_stack",
|
||||
"stop_stack",
|
||||
"restart_stack",
|
||||
"pause_stack",
|
||||
"unpause_stack",
|
||||
// Container lifecycle
|
||||
"start_container",
|
||||
"stop_container",
|
||||
"restart_container",
|
||||
@@ -89,12 +63,23 @@ export const ExecuteOperation = z.enum([
|
||||
"restart_all_containers",
|
||||
"pause_all_containers",
|
||||
"unpause_all_containers",
|
||||
// Deployment lifecycle
|
||||
"start_deployment",
|
||||
"stop_deployment",
|
||||
"restart_deployment",
|
||||
"pause_deployment",
|
||||
"unpause_deployment",
|
||||
"start_stack",
|
||||
// Server operations
|
||||
"run_server_refresh_containers",
|
||||
"run_server_prune_images",
|
||||
"run_server_prune_containers",
|
||||
"run_server_prune_networks",
|
||||
"run_server_run_command",
|
||||
"run_server_scripts",
|
||||
"run_server_copy",
|
||||
"run_server_move",
|
||||
"rotate_all_server_keys",
|
||||
// Docker prune & cleanup
|
||||
"prune_buildx",
|
||||
"prune_docker_builders",
|
||||
"prune_system",
|
||||
@@ -102,6 +87,7 @@ export const ExecuteOperation = z.enum([
|
||||
"delete_image",
|
||||
"delete_network",
|
||||
"delete_volume",
|
||||
// Swarm operations
|
||||
"remove_swarm_nodes",
|
||||
"remove_swarm_services",
|
||||
"remove_swarm_configs",
|
||||
@@ -112,6 +98,7 @@ export const ExecuteOperation = z.enum([
|
||||
"rotate_swarm_config",
|
||||
"rotate_swarm_secret",
|
||||
"update_swarm_node",
|
||||
// Batch operations
|
||||
"batch_run_build",
|
||||
"batch_deploy_stack",
|
||||
"batch_deploy_stack_if_changed",
|
||||
@@ -124,17 +111,16 @@ export const ExecuteOperation = z.enum([
|
||||
"batch_run_action",
|
||||
"batch_destroy_deployment",
|
||||
"batch_destroy_stack",
|
||||
// Admin & misc
|
||||
"backup_core_database",
|
||||
"rotate_core_keys",
|
||||
"rotate_all_server_keys",
|
||||
"global_auto_update",
|
||||
"send_alert",
|
||||
"test_alerter",
|
||||
"sleep",
|
||||
]);
|
||||
export type ExecuteOperation = z.infer<typeof ExecuteOperation>;
|
||||
|
||||
// Maps resource_type to the list/search RPC request name
|
||||
// Maps resource_type to the list RPC request name
|
||||
export const LIST_REQUEST_MAP: Record<ResourceType, string> = {
|
||||
stack: "ListStacks",
|
||||
build: "ListBuilds",
|
||||
@@ -143,49 +129,34 @@ export const LIST_REQUEST_MAP: Record<ResourceType, string> = {
|
||||
deployment: "ListDeployments",
|
||||
alerter: "ListAlerters",
|
||||
image_registry_account: "ListImageRegistryAccounts",
|
||||
sync_resource: "ListSyncResources",
|
||||
sync_resource: "ListResourceSyncs",
|
||||
user: "ListUsers",
|
||||
tag: "ListTags",
|
||||
execution: "ListExecutions",
|
||||
access_request: "ListAccessRequests",
|
||||
action: "ListActions",
|
||||
repo: "ListRepos",
|
||||
builder: "ListBuilders",
|
||||
swarm: "ListSwarms",
|
||||
variable: "ListVariables",
|
||||
user_group: "ListUserGroups",
|
||||
alert: "ListAlerts",
|
||||
terminal: "ListTerminals",
|
||||
git_provider_account: "ListGitProviderAccounts",
|
||||
};
|
||||
|
||||
// Maps resource_type to the search RPC request name
|
||||
export const SEARCH_REQUEST_MAP: Record<ResourceType, string> = {
|
||||
stack: "SearchStacks",
|
||||
build: "SearchBuilds",
|
||||
server: "SearchServers",
|
||||
procedure: "SearchProcedures",
|
||||
deployment: "SearchDeployments",
|
||||
alerter: "SearchAlerters",
|
||||
image_registry_account: "SearchImageRegistryAccounts",
|
||||
sync_resource: "SearchSyncResources",
|
||||
user: "ListUsers",
|
||||
tag: "ListTags",
|
||||
execution: "ListExecutions",
|
||||
access_request: "ListAccessRequests",
|
||||
action: "ListActions",
|
||||
repo: "ListRepos",
|
||||
builder: "ListBuilders",
|
||||
swarm: "ListSwarms",
|
||||
variable: "ListVariables",
|
||||
user_group: "ListUserGroups",
|
||||
alert: "ListAlerts",
|
||||
terminal: "ListTerminals",
|
||||
git_provider_account: "ListGitProviderAccounts",
|
||||
// Note: Search* endpoints exist for core resource types only.
|
||||
// Types not listed here fall back to their List* endpoint.
|
||||
export const SEARCH_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
|
||||
stack: "ListStacks",
|
||||
build: "ListBuilds",
|
||||
server: "ListServers",
|
||||
procedure: "ListProcedures",
|
||||
deployment: "ListDeployments",
|
||||
alerter: "ListAlerters",
|
||||
image_registry_account: "ListImageRegistryAccounts",
|
||||
sync_resource: "ListResourceSyncs",
|
||||
};
|
||||
|
||||
// Maps resource_type to the get RPC request name
|
||||
export const GET_REQUEST_MAP: Record<ResourceType, string> = {
|
||||
export const GET_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
|
||||
stack: "GetStack",
|
||||
build: "GetBuild",
|
||||
server: "GetServer",
|
||||
@@ -193,19 +164,14 @@ export const GET_REQUEST_MAP: Record<ResourceType, string> = {
|
||||
deployment: "GetDeployment",
|
||||
alerter: "GetAlerter",
|
||||
image_registry_account: "GetImageRegistryAccount",
|
||||
sync_resource: "GetSyncResource",
|
||||
user: "GetUser",
|
||||
sync_resource: "GetResourceSync",
|
||||
tag: "GetTag",
|
||||
execution: "GetExecution",
|
||||
access_request: "GetAccessRequest",
|
||||
action: "GetAction",
|
||||
repo: "GetRepo",
|
||||
builder: "GetBuilder",
|
||||
swarm: "GetSwarm",
|
||||
variable: "GetVariable",
|
||||
user_group: "GetUserGroup",
|
||||
alert: "GetAlert",
|
||||
terminal: "GetTerminal",
|
||||
git_provider_account: "GetGitProviderAccount",
|
||||
};
|
||||
|
||||
@@ -226,7 +192,6 @@ export const CREATE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
|
||||
swarm: "CreateSwarm",
|
||||
variable: "CreateVariable",
|
||||
user_group: "CreateUserGroup",
|
||||
terminal: "CreateTerminal",
|
||||
git_provider_account: "CreateGitProviderAccount",
|
||||
};
|
||||
|
||||
@@ -240,7 +205,6 @@ export const UPDATE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
|
||||
alerter: "UpdateAlerter",
|
||||
image_registry_account: "UpdateImageRegistryAccount",
|
||||
sync_resource: "UpdateResourceSync",
|
||||
user: "UpdateUser",
|
||||
tag: "UpdateTagColor",
|
||||
action: "UpdateAction",
|
||||
repo: "UpdateRepo",
|
||||
@@ -259,7 +223,7 @@ export const DELETE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
|
||||
procedure: "DeleteProcedure",
|
||||
deployment: "DeleteDeployment",
|
||||
alerter: "DeleteAlerter",
|
||||
sync_resource: "DeleteSyncResource",
|
||||
sync_resource: "DeleteResourceSync",
|
||||
tag: "DeleteTag",
|
||||
action: "DeleteAction",
|
||||
repo: "DeleteRepo",
|
||||
@@ -267,7 +231,6 @@ export const DELETE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
|
||||
swarm: "DeleteSwarm",
|
||||
variable: "DeleteVariable",
|
||||
user_group: "DeleteUserGroup",
|
||||
terminal: "DeleteTerminal",
|
||||
git_provider_account: "DeleteGitProviderAccount",
|
||||
};
|
||||
|
||||
@@ -276,101 +239,37 @@ export const EXECUTE_REQUEST_MAP: Record<
|
||||
ExecuteOperation,
|
||||
{ route: "execute" | "read" | "write"; name: string }
|
||||
> = {
|
||||
// Build & Deploy
|
||||
run_build: { route: "execute", name: "RunBuild" },
|
||||
deploy_stack: { route: "execute", name: "DeployStack" },
|
||||
deploy_stack_service: { route: "execute", name: "DeployStackService" },
|
||||
run_procedure: { route: "execute", name: "RunProcedure" },
|
||||
run_procedure_stage: { route: "execute", name: "RunProcedureStage" },
|
||||
run_deployment_action: { route: "execute", name: "RunDeploymentAction" },
|
||||
run_deployment_sync: { route: "execute", name: "RunDeploymentSync" },
|
||||
run_resource_sync: { route: "execute", name: "RunResourceSync" },
|
||||
run_stack_refresh_cache: {
|
||||
route: "execute",
|
||||
name: "RunStackRefreshCache",
|
||||
},
|
||||
run_stack_refresh_content: {
|
||||
route: "execute",
|
||||
name: "RunStackRefreshContent",
|
||||
},
|
||||
run_stack_pull: { route: "execute", name: "RunStackPull" },
|
||||
run_stack_pull_deployment: {
|
||||
route: "execute",
|
||||
name: "RunStackPullDeployment",
|
||||
},
|
||||
run_stack_stop: { route: "execute", name: "RunStackStop" },
|
||||
run_stack_restart: { route: "execute", name: "RunStackRestart" },
|
||||
run_stack_pause: { route: "execute", name: "RunStackPause" },
|
||||
run_stack_unpause: { route: "execute", name: "RunStackUnpause" },
|
||||
run_stack_remove_orphan_containers: {
|
||||
route: "execute",
|
||||
name: "RunStackRemoveOrphanContainers",
|
||||
},
|
||||
run_stack_toggle_service_dependencies: {
|
||||
route: "execute",
|
||||
name: "RunStackToggleServiceDependencies",
|
||||
},
|
||||
run_stack_auto_update: { route: "execute", name: "RunStackAutoUpdate" },
|
||||
run_stack_commit: { route: "execute", name: "RunStackCommit" },
|
||||
run_server_refresh: { route: "execute", name: "RunServerRefresh" },
|
||||
run_server_refresh_containers: {
|
||||
route: "execute",
|
||||
name: "RunServerRefreshContainers",
|
||||
},
|
||||
run_server_update_periphery: {
|
||||
route: "execute",
|
||||
name: "RunServerUpdatePeriphery",
|
||||
},
|
||||
run_server_prune_images: {
|
||||
route: "execute",
|
||||
name: "RunServerPruneImages",
|
||||
},
|
||||
run_server_prune_containers: {
|
||||
route: "execute",
|
||||
name: "RunServerPruneContainers",
|
||||
},
|
||||
run_server_prune_networks: {
|
||||
route: "execute",
|
||||
name: "RunServerPruneNetworks",
|
||||
},
|
||||
run_server_stats: { route: "execute", name: "RunServerStats" },
|
||||
run_server_run_command: {
|
||||
route: "execute",
|
||||
name: "RunServerRunCommand",
|
||||
},
|
||||
run_server_scripts: { route: "execute", name: "RunServerScripts" },
|
||||
run_server_copy: { route: "execute", name: "RunServerCopy" },
|
||||
run_server_move: { route: "execute", name: "RunServerMove" },
|
||||
run_deployment_execute: {
|
||||
route: "execute",
|
||||
name: "RunDeploymentExecute",
|
||||
},
|
||||
run_deployment_redeploy: {
|
||||
route: "execute",
|
||||
name: "RunDeploymentRedeploy",
|
||||
},
|
||||
run_deployment_destroy: {
|
||||
route: "execute",
|
||||
name: "RunDeploymentDestroy",
|
||||
},
|
||||
run_deployment_stop: { route: "execute", name: "RunDeploymentStop" },
|
||||
run_deployment_logs: { route: "execute", name: "RunDeploymentLogs" },
|
||||
run_sync_deployment: { route: "execute", name: "RunSyncDeployment" },
|
||||
get_mcp_token: { route: "execute", name: "GetMcpToken" },
|
||||
deploy_stack_service: { route: "execute", name: "RunStackService" },
|
||||
deploy: { route: "execute", name: "Deploy" },
|
||||
deploy_stack_if_changed: { route: "execute", name: "DeployStackIfChanged" },
|
||||
destroy_stack: { route: "execute", name: "DestroyStack" },
|
||||
destroy_container: { route: "execute", name: "DestroyContainer" },
|
||||
destroy_deployment: { route: "execute", name: "DestroyDeployment" },
|
||||
pull_stack: { route: "execute", name: "PullStack" },
|
||||
pull_deployment: { route: "execute", name: "PullDeployment" },
|
||||
// Repo operations
|
||||
build_repo: { route: "execute", name: "BuildRepo" },
|
||||
clone_repo: { route: "execute", name: "CloneRepo" },
|
||||
pull_repo: { route: "execute", name: "PullRepo" },
|
||||
pull_deployment: { route: "execute", name: "PullDeployment" },
|
||||
cancel_repo_build: { route: "execute", name: "CancelRepoBuild" },
|
||||
clear_repo_cache: { route: "execute", name: "ClearRepoCache" },
|
||||
// Procedure & Action
|
||||
run_procedure: { route: "execute", name: "RunProcedure" },
|
||||
run_action: { route: "execute", name: "RunAction" },
|
||||
run_sync: { route: "execute", name: "RunSync" },
|
||||
cancel_action: { route: "execute", name: "CancelAction" },
|
||||
cancel_build: { route: "execute", name: "CancelBuild" },
|
||||
cancel_procedure: { route: "execute", name: "CancelProcedure" },
|
||||
// Stack lifecycle
|
||||
start_stack: { route: "execute", name: "StartStack" },
|
||||
stop_stack: { route: "execute", name: "StopStack" },
|
||||
restart_stack: { route: "execute", name: "RestartStack" },
|
||||
pause_stack: { route: "execute", name: "PauseStack" },
|
||||
unpause_stack: { route: "execute", name: "UnpauseStack" },
|
||||
// Container lifecycle
|
||||
start_container: { route: "execute", name: "StartContainer" },
|
||||
stop_container: { route: "execute", name: "StopContainer" },
|
||||
restart_container: { route: "execute", name: "RestartContainer" },
|
||||
@@ -381,12 +280,32 @@ export const EXECUTE_REQUEST_MAP: Record<
|
||||
restart_all_containers: { route: "execute", name: "RestartAllContainers" },
|
||||
pause_all_containers: { route: "execute", name: "PauseAllContainers" },
|
||||
unpause_all_containers: { route: "execute", name: "UnpauseAllContainers" },
|
||||
// Deployment lifecycle
|
||||
start_deployment: { route: "execute", name: "StartDeployment" },
|
||||
stop_deployment: { route: "execute", name: "StopDeployment" },
|
||||
restart_deployment: { route: "execute", name: "RestartDeployment" },
|
||||
pause_deployment: { route: "execute", name: "PauseDeployment" },
|
||||
unpause_deployment: { route: "execute", name: "UnpauseDeployment" },
|
||||
start_stack: { route: "execute", name: "StartStack" },
|
||||
// Server operations
|
||||
run_server_refresh_containers: {
|
||||
route: "execute",
|
||||
name: "RunServerRefreshContainers",
|
||||
},
|
||||
run_server_prune_images: { route: "execute", name: "PruneImages" },
|
||||
run_server_prune_containers: { route: "execute", name: "PruneContainers" },
|
||||
run_server_prune_networks: { route: "execute", name: "PruneNetworks" },
|
||||
run_server_run_command: {
|
||||
route: "execute",
|
||||
name: "RunServerRunCommand",
|
||||
},
|
||||
run_server_scripts: { route: "execute", name: "RunServerScripts" },
|
||||
run_server_copy: { route: "execute", name: "RunServerCopy" },
|
||||
run_server_move: { route: "execute", name: "RunServerMove" },
|
||||
rotate_all_server_keys: {
|
||||
route: "execute",
|
||||
name: "RotateAllServerKeys",
|
||||
},
|
||||
// Docker prune & cleanup
|
||||
prune_buildx: { route: "execute", name: "PruneBuildx" },
|
||||
prune_docker_builders: { route: "execute", name: "PruneDockerBuilders" },
|
||||
prune_system: { route: "execute", name: "PruneSystem" },
|
||||
@@ -394,6 +313,7 @@ export const EXECUTE_REQUEST_MAP: Record<
|
||||
delete_image: { route: "execute", name: "DeleteImage" },
|
||||
delete_network: { route: "execute", name: "DeleteNetwork" },
|
||||
delete_volume: { route: "execute", name: "DeleteVolume" },
|
||||
// Swarm operations
|
||||
remove_swarm_nodes: { route: "execute", name: "RemoveSwarmNodes" },
|
||||
remove_swarm_services: { route: "execute", name: "RemoveSwarmServices" },
|
||||
remove_swarm_configs: { route: "execute", name: "RemoveSwarmConfigs" },
|
||||
@@ -404,6 +324,7 @@ export const EXECUTE_REQUEST_MAP: Record<
|
||||
rotate_swarm_config: { route: "execute", name: "RotateSwarmConfig" },
|
||||
rotate_swarm_secret: { route: "execute", name: "RotateSwarmSecret" },
|
||||
update_swarm_node: { route: "execute", name: "UpdateSwarmNode" },
|
||||
// Batch operations
|
||||
batch_run_build: { route: "execute", name: "BatchRunBuild" },
|
||||
batch_deploy_stack: { route: "execute", name: "BatchDeployStack" },
|
||||
batch_deploy_stack_if_changed: {
|
||||
@@ -422,16 +343,12 @@ export const EXECUTE_REQUEST_MAP: Record<
|
||||
name: "BatchDestroyDeployment",
|
||||
},
|
||||
batch_destroy_stack: { route: "execute", name: "BatchDestroyStack" },
|
||||
// Admin & misc
|
||||
backup_core_database: { route: "execute", name: "BackupCoreDatabase" },
|
||||
rotate_core_keys: { route: "execute", name: "RotateCoreKeys" },
|
||||
rotate_all_server_keys: {
|
||||
route: "execute",
|
||||
name: "RotateAllServerKeys",
|
||||
},
|
||||
global_auto_update: { route: "execute", name: "GlobalAutoUpdate" },
|
||||
send_alert: { route: "execute", name: "SendAlert" },
|
||||
test_alerter: { route: "execute", name: "TestAlerter" },
|
||||
sleep: { route: "execute", name: "Sleep" },
|
||||
};
|
||||
|
||||
// Maps resource_type to the summary RPC request name
|
||||
@@ -517,4 +434,54 @@ export const LIST_DETAIL_REQUEST_MAP: Record<string, string> = {
|
||||
full_actions: "ListFullActions",
|
||||
full_alerters: "ListFullAlerters",
|
||||
full_resource_syncs: "ListFullResourceSyncs",
|
||||
// Swarm detail lists
|
||||
swarm_configs: "ListSwarmConfigs",
|
||||
swarm_networks: "ListSwarmNetworks",
|
||||
swarm_nodes: "ListSwarmNodes",
|
||||
swarm_secrets: "ListSwarmSecrets",
|
||||
swarm_services: "ListSwarmServices",
|
||||
swarm_stacks: "ListSwarmStacks",
|
||||
swarm_tasks: "ListSwarmTasks",
|
||||
// Config lists
|
||||
git_providers_from_config: "ListGitProvidersFromConfig",
|
||||
image_registries_from_config: "ListImageRegistriesFromConfig",
|
||||
// Extra args
|
||||
common_build_extra_args: "ListCommonBuildExtraArgs",
|
||||
common_deployment_extra_args: "ListCommonDeploymentExtraArgs",
|
||||
common_stack_build_extra_args: "ListCommonStackBuildExtraArgs",
|
||||
common_stack_extra_args: "ListCommonStackExtraArgs",
|
||||
// Other
|
||||
image_history: "ListImageHistory",
|
||||
all_stack_services: "ListAllStackServices",
|
||||
};
|
||||
|
||||
// Maps copy resource type to the Copy* RPC request name
|
||||
export const COPY_REQUEST_MAP: Record<string, string> = {
|
||||
stack: "CopyStack",
|
||||
build: "CopyBuild",
|
||||
server: "CopyServer",
|
||||
deployment: "CopyDeployment",
|
||||
procedure: "CopyProcedure",
|
||||
alerter: "CopyAlerter",
|
||||
action: "CopyAction",
|
||||
repo: "CopyRepo",
|
||||
builder: "CopyBuilder",
|
||||
swarm: "CopySwarm",
|
||||
sync_resource: "CopyResourceSync",
|
||||
};
|
||||
|
||||
// Maps rename resource type to the Rename* RPC request name
|
||||
export const RENAME_REQUEST_MAP: Record<string, string> = {
|
||||
stack: "RenameStack",
|
||||
build: "RenameBuild",
|
||||
server: "RenameServer",
|
||||
deployment: "RenameDeployment",
|
||||
procedure: "RenameProcedure",
|
||||
alerter: "RenameAlerter",
|
||||
action: "RenameAction",
|
||||
repo: "RenameRepo",
|
||||
builder: "RenameBuilder",
|
||||
swarm: "RenameSwarm",
|
||||
tag: "RenameTag",
|
||||
user_group: "RenameUserGroup",
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user