syncable_cli/agent/tools/platform/mod.rs
1//! Platform tools for managing Syncable platform resources
2//!
3//! This module provides agent tools for interacting with the Syncable Platform API:
4//! - Listing organizations and projects
5//! - Selecting and managing project context
6//! - Querying current context state
7//! - Cloud provider connection management
8//! - Service deployment management
9//! - Service log retrieval
10//! - Project analysis for deployment
11//!
12//! ## Tools
13//!
14//! - `ListOrganizationsTool` - List organizations the user belongs to
15//! - `ListProjectsTool` - List projects within an organization
16//! - `SelectProjectTool` - Select a project as the current context
17//! - `CurrentContextTool` - Get the currently selected project context
18//! - `OpenProviderSettingsTool` - Open cloud provider settings in browser
19//! - `CheckProviderConnectionTool` - Check if a cloud provider is connected
20//! - `ListDeploymentConfigsTool` - List deployment configurations for a project
21//! - `TriggerDeploymentTool` - Trigger a deployment using a config
22//! - `GetDeploymentStatusTool` - Get deployment task status
23//! - `ListDeploymentsTool` - List recent deployments for a project
24//! - `GetServiceLogsTool` - Get container logs for a deployed service
25//! - `AnalyzeProjectTool` - Analyze project for Dockerfiles and deployment options
26//! - `AnalyzeCodebaseTool` - Comprehensive codebase analysis (languages, frameworks, ports, env vars)
27//! - `ListDeploymentCapabilitiesTool` - List available deployment targets and providers
28//! - `CreateDeploymentConfigTool` - Create a new deployment configuration
29//! - `ProvisionRegistryTool` - Provision a new container registry
30//!
31//! ## Prerequisites
32//!
33//! All tools require the user to be authenticated via `sync-ctl auth login`.
34//!
35//! ## Example Flow
36//!
37//! 1. User asks: "What projects do I have access to?"
38//! 2. Agent calls `list_organizations` to get available organizations
39//! 3. Agent calls `list_projects` for each organization
40//! 4. User asks: "Select the 'my-project' project"
41//! 5. Agent calls `select_project` with the project and organization IDs
42//! 6. Agent can then use `current_context` to verify the selection
43//!
44//! ## Cloud Provider Connection Flow
45//!
46//! 1. Agent calls `check_provider_connection` to see if GCP/AWS/etc is connected
47//! 2. If not connected, agent calls `open_provider_settings` to open browser
48//! 3. User completes OAuth flow in browser
49//! 4. Agent calls `check_provider_connection` again to verify
50//!
51//! ## Deployment Flow
52//!
53//! 1. Agent calls `list_deployment_configs` to see available deployment configs
54//! 2. Agent calls `trigger_deployment` with project_id and config_id
55//! 3. Agent calls `get_deployment_status` with task_id to monitor progress
56//! 4. Agent calls `list_deployments` to see deployment history and public URLs
57//! 5. Agent calls `get_service_logs` to view container logs for debugging
58//!
59//! **SECURITY NOTE:** The agent NEVER handles actual credentials (OAuth tokens,
60//! API keys). It only checks connection STATUS. All credential handling happens
61//! securely in the browser through the platform's OAuth flow.
62
63mod analyze_codebase;
64mod analyze_project;
65mod check_provider_connection;
66mod create_deployment_config;
67mod current_context;
68mod deploy_service;
69mod get_deployment_status;
70mod get_service_logs;
71mod list_deployment_capabilities;
72mod list_deployment_configs;
73mod list_deployments;
74mod list_organizations;
75mod list_projects;
76mod open_provider_settings;
77mod provision_registry;
78mod select_project;
79mod trigger_deployment;
80
81pub use analyze_codebase::AnalyzeCodebaseTool;
82pub use analyze_project::AnalyzeProjectTool;
83pub use check_provider_connection::CheckProviderConnectionTool;
84pub use create_deployment_config::CreateDeploymentConfigTool;
85pub use current_context::CurrentContextTool;
86pub use deploy_service::DeployServiceTool;
87pub use get_deployment_status::GetDeploymentStatusTool;
88pub use get_service_logs::GetServiceLogsTool;
89pub use list_deployment_capabilities::ListDeploymentCapabilitiesTool;
90pub use list_deployment_configs::ListDeploymentConfigsTool;
91pub use list_deployments::ListDeploymentsTool;
92pub use list_organizations::ListOrganizationsTool;
93pub use list_projects::ListProjectsTool;
94pub use open_provider_settings::OpenProviderSettingsTool;
95pub use provision_registry::ProvisionRegistryTool;
96pub use select_project::SelectProjectTool;
97pub use trigger_deployment::TriggerDeploymentTool;