@hypnosis/docker-mcp-server 1.0.4 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +99 -28
  2. package/dist/adapters/database-adapter.d.ts +9 -5
  3. package/dist/adapters/database-adapter.d.ts.map +1 -1
  4. package/dist/adapters/postgresql.d.ts +14 -5
  5. package/dist/adapters/postgresql.d.ts.map +1 -1
  6. package/dist/adapters/postgresql.js +36 -23
  7. package/dist/adapters/postgresql.js.map +1 -1
  8. package/dist/adapters/redis.d.ts +10 -1
  9. package/dist/adapters/redis.d.ts.map +1 -1
  10. package/dist/adapters/redis.js +28 -13
  11. package/dist/adapters/redis.js.map +1 -1
  12. package/dist/adapters/sqlite.d.ts +11 -1
  13. package/dist/adapters/sqlite.d.ts.map +1 -1
  14. package/dist/adapters/sqlite.js +11 -7
  15. package/dist/adapters/sqlite.js.map +1 -1
  16. package/dist/adapters/types.d.ts +7 -0
  17. package/dist/adapters/types.d.ts.map +1 -1
  18. package/dist/discovery/compose-parser.d.ts +4 -0
  19. package/dist/discovery/compose-parser.d.ts.map +1 -1
  20. package/dist/discovery/compose-parser.js +27 -5
  21. package/dist/discovery/compose-parser.js.map +1 -1
  22. package/dist/discovery/project-discovery.d.ts.map +1 -1
  23. package/dist/discovery/project-discovery.js +28 -2
  24. package/dist/discovery/project-discovery.js.map +1 -1
  25. package/dist/discovery/remote-discovery.d.ts +99 -0
  26. package/dist/discovery/remote-discovery.d.ts.map +1 -0
  27. package/dist/discovery/remote-discovery.js +410 -0
  28. package/dist/discovery/remote-discovery.js.map +1 -0
  29. package/dist/discovery/types.d.ts +4 -0
  30. package/dist/discovery/types.d.ts.map +1 -1
  31. package/dist/index.js +76 -24
  32. package/dist/index.js.map +1 -1
  33. package/dist/managers/compose-manager.d.ts +3 -1
  34. package/dist/managers/compose-manager.d.ts.map +1 -1
  35. package/dist/managers/compose-manager.js +10 -1
  36. package/dist/managers/compose-manager.js.map +1 -1
  37. package/dist/managers/container-manager.d.ts +11 -1
  38. package/dist/managers/container-manager.d.ts.map +1 -1
  39. package/dist/managers/container-manager.js +75 -76
  40. package/dist/managers/container-manager.js.map +1 -1
  41. package/dist/tools/container-tools.d.ts +1 -3
  42. package/dist/tools/container-tools.d.ts.map +1 -1
  43. package/dist/tools/container-tools.js +142 -28
  44. package/dist/tools/container-tools.js.map +1 -1
  45. package/dist/tools/database-tools.d.ts +15 -1
  46. package/dist/tools/database-tools.d.ts.map +1 -1
  47. package/dist/tools/database-tools.js +152 -16
  48. package/dist/tools/database-tools.js.map +1 -1
  49. package/dist/tools/discovery-tools.d.ts +22 -0
  50. package/dist/tools/discovery-tools.d.ts.map +1 -0
  51. package/dist/tools/discovery-tools.js +137 -0
  52. package/dist/tools/discovery-tools.js.map +1 -0
  53. package/dist/tools/env-tools.d.ts +1 -2
  54. package/dist/tools/env-tools.d.ts.map +1 -1
  55. package/dist/tools/env-tools.js +123 -22
  56. package/dist/tools/env-tools.js.map +1 -1
  57. package/dist/tools/executor-tool.d.ts +0 -2
  58. package/dist/tools/executor-tool.d.ts.map +1 -1
  59. package/dist/tools/executor-tool.js +27 -9
  60. package/dist/tools/executor-tool.js.map +1 -1
  61. package/dist/tools/mcp-health-tool.d.ts +9 -0
  62. package/dist/tools/mcp-health-tool.d.ts.map +1 -1
  63. package/dist/tools/mcp-health-tool.js +34 -7
  64. package/dist/tools/mcp-health-tool.js.map +1 -1
  65. package/dist/tools/profile-tool.d.ts +39 -0
  66. package/dist/tools/profile-tool.d.ts.map +1 -0
  67. package/dist/tools/profile-tool.js +70 -0
  68. package/dist/tools/profile-tool.js.map +1 -0
  69. package/dist/utils/compose-exec.d.ts +28 -3
  70. package/dist/utils/compose-exec.d.ts.map +1 -1
  71. package/dist/utils/compose-exec.js +100 -26
  72. package/dist/utils/compose-exec.js.map +1 -1
  73. package/dist/utils/docker-client.d.ts +81 -8
  74. package/dist/utils/docker-client.d.ts.map +1 -1
  75. package/dist/utils/docker-client.js +520 -17
  76. package/dist/utils/docker-client.js.map +1 -1
  77. package/dist/utils/profile-resolver.d.ts +58 -0
  78. package/dist/utils/profile-resolver.d.ts.map +1 -0
  79. package/dist/utils/profile-resolver.js +218 -0
  80. package/dist/utils/profile-resolver.js.map +1 -0
  81. package/dist/utils/profiles-file.d.ts +57 -0
  82. package/dist/utils/profiles-file.d.ts.map +1 -0
  83. package/dist/utils/profiles-file.js +167 -0
  84. package/dist/utils/profiles-file.js.map +1 -0
  85. package/dist/utils/remote-compose.d.ts +32 -0
  86. package/dist/utils/remote-compose.d.ts.map +1 -0
  87. package/dist/utils/remote-compose.js +69 -0
  88. package/dist/utils/remote-compose.js.map +1 -0
  89. package/dist/utils/retry.d.ts +49 -0
  90. package/dist/utils/retry.d.ts.map +1 -0
  91. package/dist/utils/retry.js +120 -0
  92. package/dist/utils/retry.js.map +1 -0
  93. package/dist/utils/schema-helpers.d.ts +96 -0
  94. package/dist/utils/schema-helpers.d.ts.map +1 -0
  95. package/dist/utils/schema-helpers.js +61 -0
  96. package/dist/utils/schema-helpers.js.map +1 -0
  97. package/dist/utils/ssh-config.d.ts +104 -0
  98. package/dist/utils/ssh-config.d.ts.map +1 -0
  99. package/dist/utils/ssh-config.js +346 -0
  100. package/dist/utils/ssh-config.js.map +1 -0
  101. package/dist/utils/ssh-exec.d.ts +59 -0
  102. package/dist/utils/ssh-exec.d.ts.map +1 -0
  103. package/dist/utils/ssh-exec.js +159 -0
  104. package/dist/utils/ssh-exec.js.map +1 -0
  105. package/package.json +21 -3
package/README.md CHANGED
@@ -7,10 +7,12 @@ Universal Docker MCP server for AI assistants (Cursor, Claude Desktop). Manage D
7
7
 
8
8
  ## ✨ Features
9
9
 
10
- - ✅ **18 MCP Commands** — Container management, database operations, environment handling, resource monitoring
10
+ - ✅ **20 MCP Commands** — Container management, database operations, environment handling, resource monitoring, project discovery
11
11
  - ✅ **Database Support** — PostgreSQL, Redis, SQLite with extensible adapter pattern
12
12
  - ✅ **Resource Monitoring** — Container stats (CPU, Memory, Network, Block I/O), images, volumes, networks
13
- - ✅ **Auto-Discovery** — Automatically finds and parses `docker-compose.yml` files
13
+ - ✅ **Auto-Discovery** — Automatically finds and parses `docker-compose.yml` files (local and remote)
14
+ - ✅ **Remote Docker** — SSH support for managing remote Docker hosts
15
+ - ✅ **Remote Project Discovery** — Automatically find all Docker projects on remote servers
14
16
  - ✅ **Security** — Automatic secrets masking in environment variables
15
17
  - ✅ **Follow Logs** — Real-time log streaming with `follow` mode
16
18
  - ✅ **Type-Safe** — Written in TypeScript with full type definitions
@@ -42,6 +44,21 @@ npm install @hypnosis/docker-mcp-server
42
44
 
43
45
  Add to `~/.cursor/mcp.json` (or `~/.config/cursor/mcp.json`):
44
46
 
47
+ **Local Docker (simplest - no configuration needed!):**
48
+ ```json
49
+ {
50
+ "mcpServers": {
51
+ "docker": {
52
+ "command": "npx",
53
+ "args": ["-y", "@hypnosis/docker-mcp-server"]
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ That's it! The server will automatically detect and use your local Docker installation.
60
+
61
+ **Optional: Enable auto-discovery and secret masking:**
45
62
  ```json
46
63
  {
47
64
  "mcpServers": {
@@ -57,6 +74,41 @@ Add to `~/.cursor/mcp.json` (or `~/.config/cursor/mcp.json`):
57
74
  }
58
75
  ```
59
76
 
77
+ **Remote Docker (with profiles file):**
78
+ ```json
79
+ {
80
+ "mcpServers": {
81
+ "docker": {
82
+ "command": "npx",
83
+ "args": ["-y", "@hypnosis/docker-mcp-server"],
84
+ "env": {
85
+ "DOCKER_MCP_PROFILES_FILE": "~/.docker-mcp/profiles.json"
86
+ }
87
+ }
88
+ }
89
+ }
90
+ ```
91
+
92
+ Create `~/.docker-mcp/profiles.json`:
93
+ ```json
94
+ {
95
+ "default": "production",
96
+ "profiles": {
97
+ "production": {
98
+ "host": "prod.example.com",
99
+ "username": "deployer",
100
+ "port": 22,
101
+ "privateKeyPath": "~/.ssh/id_rsa",
102
+ "projectsPath": "/var/www"
103
+ }
104
+ }
105
+ }
106
+ ```
107
+
108
+ **Note:** `projectsPath` specifies where to search for Docker projects on remote server (default: `/var/www`).
109
+
110
+ **Note:** If the profiles file doesn't exist or is invalid, the server will gracefully fall back to local Docker — no errors, no configuration needed!
111
+
60
112
  ### Configuration for Claude Desktop
61
113
 
62
114
  Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
@@ -83,53 +135,57 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
83
135
 
84
136
  ## 📚 Available Commands
85
137
 
86
- ### Container Management (7 commands)
138
+ ### Container Management (9 commands)
87
139
 
88
140
  | Command | Description | Example |
89
141
  |---------|-------------|---------|
90
- | `docker_container_list` | List all containers in project | `docker_container_list()` |
91
- | `docker_container_start` | Start a container | `docker_container_start("web")` |
92
- | `docker_container_stop` | Stop a container | `docker_container_stop("web")` |
93
- | `docker_container_restart` | Restart a container | `docker_container_restart("web")` |
94
- | `docker_container_logs` | View container logs | `docker_container_logs("web", {follow: true, lines: 100})` |
142
+ | `docker_container_list` | List all containers (grouped by project) | `docker_container_list()` |
143
+ | `docker_container_start` | Start a container | `docker_container_start({service: "web"})` |
144
+ | `docker_container_stop` | Stop a container | `docker_container_stop({service: "web"})` |
145
+ | `docker_container_restart` | Restart a container | `docker_container_restart({service: "web"})` |
146
+ | `docker_container_logs` | View container logs | `docker_container_logs({service: "web", follow: true, lines: 100})` |
147
+ | `docker_container_stats` | Get container resource usage | `docker_container_stats({service: "web"})` |
95
148
  | `docker_compose_up` | Start entire stack | `docker_compose_up({build: true})` |
96
149
  | `docker_compose_down` | Stop entire stack | `docker_compose_down({volumes: false})` |
150
+ | `docker_resource_list` | List Docker images, volumes, or networks | `docker_resource_list({type: "images"})` |
97
151
 
98
152
  ### Database Operations (4 commands)
99
153
 
100
154
  | Command | Description | Example |
101
155
  |---------|-------------|---------|
102
- | `docker_db_query` | Execute SQL query | `docker_db_query("postgres", "SELECT * FROM users LIMIT 5;")` |
103
- | `docker_db_backup` | Create database backup | `docker_db_backup("postgres", "./backup.sql")` |
104
- | `docker_db_restore` | Restore from backup | `docker_db_restore("postgres", "./backup.sql")` |
105
- | `docker_db_status` | Show database status | `docker_db_status("postgres")` |
156
+ | `docker_db_query` | Execute SQL query or database command | `docker_db_query({service: "postgres", query: "SELECT * FROM users LIMIT 5;"})` |
157
+ | `docker_db_backup` | Create database backup | `docker_db_backup({service: "postgres", compress: true})` |
158
+ | `docker_db_restore` | Restore from backup | `docker_db_restore({service: "postgres", backupPath: "./backup.sql"})` |
159
+ | `docker_db_status` | Show database status | `docker_db_status({service: "postgres"})` |
106
160
 
107
161
  ### Environment & Config (3 commands)
108
162
 
109
163
  | Command | Description | Example |
110
164
  |---------|-------------|---------|
111
- | `docker_env_list` | List environment variables | `docker_env_list()` |
165
+ | `docker_env_list` | List environment variables (with secret masking) | `docker_env_list({service: "web", maskSecrets: true})` |
112
166
  | `docker_compose_config` | Show parsed compose config | `docker_compose_config()` |
113
167
  | `docker_healthcheck` | Check health of all services | `docker_healthcheck()` |
114
168
 
115
- ### Resource Monitoring (2 commands)
169
+ ### Universal Executor (1 command)
116
170
 
117
171
  | Command | Description | Example |
118
172
  |---------|-------------|---------|
119
- | `docker_container_stats` | Get container resource usage | `docker_container_stats("web")` |
120
- | `docker_resource_list` | List Docker resources | `docker_resource_list("images")` |
173
+ | `docker_exec` | Execute any command in container | `docker_exec({service: "web", command: "npm test"})` |
121
174
 
122
- ### Universal Executor (1 command)
175
+ ### Project Discovery (1 command)
123
176
 
124
177
  | Command | Description | Example |
125
178
  |---------|-------------|---------|
126
- | `docker_exec` | Execute any command in container | `docker_exec("web", "npm test")` |
179
+ | `docker_projects` | List all Docker projects with status (fast, ~2s) | `docker_projects()` |
127
180
 
128
- ### MCP Health (1 command)
181
+ **Note:** For detailed container info, use `docker_container_list({project: "project-name"})`.
182
+
183
+ ### Utility Tools (2 commands)
129
184
 
130
185
  | Command | Description | Example |
131
186
  |---------|-------------|---------|
132
- | `docker_mcp_health` | Server diagnostics | `docker_mcp_health()` |
187
+ | `docker_mcp_health` | Server diagnostics and health check | `docker_mcp_health()` |
188
+ | `docker_profile_info` | Show current profile and available profiles | `docker_profile_info()` |
133
189
 
134
190
  ## 💡 Usage Examples
135
191
 
@@ -143,32 +199,32 @@ docker_compose_up({build: true, detach: true})
143
199
  docker_healthcheck()
144
200
 
145
201
  // View logs in real-time
146
- docker_container_logs("web", {follow: true, lines: 50})
202
+ docker_container_logs({service: "web", follow: true, lines: 50})
147
203
 
148
204
  // Check Redis cache
149
- docker_db_query("redis", "KEYS *")
205
+ docker_db_query({service: "redis", query: "KEYS *"})
150
206
 
151
207
  // Run tests
152
- docker_exec("web", "npm test")
208
+ docker_exec({service: "web", command: "npm test"})
153
209
  ```
154
210
 
155
211
  ### Example 2: Backend Development (Django + PostgreSQL)
156
212
 
157
213
  ```typescript
158
214
  // Restart backend after code changes
159
- docker_container_restart("web")
215
+ docker_container_restart({service: "web"})
160
216
 
161
217
  // Run database migrations
162
- docker_exec("web", "python manage.py migrate")
218
+ docker_exec({service: "web", command: "python manage.py migrate"})
163
219
 
164
220
  // Query database
165
- docker_db_query("postgres", "SELECT COUNT(*) FROM auth_user;")
221
+ docker_db_query({service: "postgres", query: "SELECT COUNT(*) FROM auth_user;"})
166
222
 
167
223
  // Create backup before deployment
168
- docker_db_backup("postgres", "./backups/pre-deploy.sql")
224
+ docker_db_backup({service: "postgres", compress: true})
169
225
 
170
226
  // View application logs
171
- docker_container_logs("web", {lines: 100, timestamps: true})
227
+ docker_container_logs({service: "web", lines: 100, timestamps: true})
172
228
  ```
173
229
 
174
230
  ## 🏗️ How It Works
@@ -214,12 +270,27 @@ Keywords that trigger masking: `PASSWORD`, `TOKEN`, `KEY`, `SECRET`, `API_KEY`
214
270
 
215
271
  - **[Quick Start Guide](docs/QUICK_START.md)** — Detailed setup instructions
216
272
  - **[API Reference](docs/API_REFERENCE.md)** — Complete command documentation
273
+ - **[Remote Docker Guide](docs/REMOTE_DOCKER.md)** — SSH-based remote Docker management
274
+ - **[Remote Discovery Guide](docs/REMOTE_DISCOVERY.md)** — Automatic project discovery on remote servers
217
275
  - **[Examples](docs/EXAMPLES.md)** — Real-world usage scenarios
276
+ - **[Testing System](docs/testing/README.md)** — Complete testing guide (E2E, Unit, Manual)
218
277
  - **[Troubleshooting](docs/TROUBLESHOOTING.md)** — Common issues and solutions
219
278
  - **[FAQ](docs/FAQ.md)** — Frequently asked questions
279
+ - **[Roadmap](docs/ROADMAP.md)** — Future development plans and upcoming features
220
280
 
221
281
  For developer documentation, see [docs/DEV/README.md](docs/DEV/README.md)
222
282
 
283
+ ### Roadmap Overview
284
+
285
+ The project roadmap outlines planned features and releases. Key upcoming features include:
286
+
287
+ - **v1.4.0 (Q1 2026)**: MySQL and MongoDB adapters
288
+ - **v1.5.0 (Q2 2026)**: Enhanced monitoring and analytics
289
+ - **v2.0.0 (Q3 2026)**: Plugin system and major architecture update
290
+ - **v2.1.0 (Q4 2026)**: Network, volume, and image management
291
+
292
+ See [docs/ROADMAP.md](docs/ROADMAP.md) for detailed information about future plans, priorities, and how to contribute to the roadmap.
293
+
223
294
  ## 🤝 Contributing
224
295
 
225
296
  We welcome contributions! This is an open-source project built for the community.
@@ -2,7 +2,7 @@
2
2
  * Database Adapter Interface
3
3
  * Interface for working with different database types
4
4
  */
5
- import type { ServiceConfig } from '../discovery/types.js';
5
+ import type { ServiceConfig, ProjectConfig } from '../discovery/types.js';
6
6
  import type { QueryOptions, BackupOptions, RestoreOptions, DBStatus, ConnectionInfo } from './types.js';
7
7
  /**
8
8
  * Interface for Database Adapters
@@ -11,20 +11,24 @@ import type { QueryOptions, BackupOptions, RestoreOptions, DBStatus, ConnectionI
11
11
  export interface DatabaseAdapter {
12
12
  /**
13
13
  * Execute query or command
14
+ * @param projectConfig - Optional pre-loaded project (for remote mode)
14
15
  */
15
- query(service: string, query: string, options?: QueryOptions): Promise<string>;
16
+ query(service: string, query: string, options?: QueryOptions, projectConfig?: ProjectConfig): Promise<string>;
16
17
  /**
17
18
  * Create backup
19
+ * @param projectConfig - Optional pre-loaded project (for remote mode)
18
20
  */
19
- backup(service: string, options: BackupOptions): Promise<string>;
21
+ backup(service: string, options: BackupOptions, projectConfig?: ProjectConfig): Promise<string>;
20
22
  /**
21
23
  * Restore from backup
24
+ * @param projectConfig - Optional pre-loaded project (for remote mode)
22
25
  */
23
- restore(service: string, backupPath: string, options?: RestoreOptions): Promise<void>;
26
+ restore(service: string, backupPath: string, options?: RestoreOptions, projectConfig?: ProjectConfig): Promise<void>;
24
27
  /**
25
28
  * Get database status
29
+ * @param projectConfig - Optional pre-loaded project (for remote mode)
26
30
  */
27
- status(service: string): Promise<DBStatus>;
31
+ status(service: string, projectConfig?: ProjectConfig): Promise<DBStatus>;
28
32
  /**
29
33
  * Get connection info from environment
30
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"database-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/database-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,CACH,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE;;OAEG;IACH,OAAO,CACL,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3C;;OAEG;IACH,iBAAiB,CACf,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,cAAc,CAAC;CACnB"}
1
+ {"version":3,"file":"database-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/database-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,CACH,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,EACtB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhG;;;OAGG;IACH,OAAO,CACL,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,EACxB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE1E;;OAEG;IACH,iBAAiB,CACf,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,cAAc,CAAC;CACnB"}
@@ -4,20 +4,29 @@
4
4
  */
5
5
  import type { DatabaseAdapter } from './database-adapter.js';
6
6
  import type { QueryOptions, BackupOptions, RestoreOptions, DBStatus, ConnectionInfo } from './types.js';
7
- import type { ServiceConfig } from '../discovery/types.js';
7
+ import type { ServiceConfig, ProjectConfig } from '../discovery/types.js';
8
+ import { ContainerManager } from '../managers/container-manager.js';
9
+ import { ProjectDiscovery } from '../discovery/project-discovery.js';
10
+ import { EnvManager } from '../managers/env-manager.js';
8
11
  export declare class PostgreSQLAdapter implements DatabaseAdapter {
9
12
  private containerManager;
10
13
  private projectDiscovery;
11
14
  private envManager;
12
- constructor();
15
+ /**
16
+ * Constructor with Dependency Injection
17
+ * @param containerManager - ContainerManager instance (with or without SSH config)
18
+ * @param projectDiscovery - ProjectDiscovery instance
19
+ * @param envManager - EnvManager instance
20
+ */
21
+ constructor(containerManager: ContainerManager, projectDiscovery: ProjectDiscovery, envManager: EnvManager);
13
22
  /**
14
23
  * Execute SQL query
15
24
  */
16
- query(service: string, query: string, options?: QueryOptions): Promise<string>;
25
+ query(service: string, query: string, options?: QueryOptions, projectConfig?: ProjectConfig): Promise<string>;
17
26
  /**
18
27
  * Create backup
19
28
  */
20
- backup(service: string, options: BackupOptions): Promise<string>;
29
+ backup(service: string, options: BackupOptions, projectConfig?: ProjectConfig): Promise<string>;
21
30
  /**
22
31
  * Restore from backup
23
32
  */
@@ -25,7 +34,7 @@ export declare class PostgreSQLAdapter implements DatabaseAdapter {
25
34
  /**
26
35
  * Get database status
27
36
  */
28
- status(service: string): Promise<DBStatus>;
37
+ status(service: string, projectConfig?: ProjectConfig): Promise<DBStatus>;
29
38
  /**
30
39
  * Get connection info from environment
31
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../src/adapters/postgresql.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAO3D,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAa;;IAQ/B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CpF;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDtE;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IA8ChB;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6ChD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc;IAUtF;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../src/adapters/postgresql.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAa;IAE/B;;;;;OAKG;gBAED,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,UAAU;IAOxB;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA4CnH;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDrG;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IA8ChB;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoD/E;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc;IAUtF;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAuBzB"}
@@ -2,27 +2,31 @@
2
2
  * PostgreSQL Adapter
3
3
  * DatabaseAdapter implementation for PostgreSQL
4
4
  */
5
- import { ContainerManager } from '../managers/container-manager.js';
6
- import { ProjectDiscovery } from '../discovery/project-discovery.js';
7
- import { EnvManager } from '../managers/env-manager.js';
8
5
  import { sqlValidator } from '../security/sql-validator.js';
9
6
  import { logger } from '../utils/logger.js';
10
7
  export class PostgreSQLAdapter {
11
8
  containerManager;
12
9
  projectDiscovery;
13
10
  envManager;
14
- constructor() {
15
- this.containerManager = new ContainerManager();
16
- this.projectDiscovery = new ProjectDiscovery();
17
- this.envManager = new EnvManager();
11
+ /**
12
+ * Constructor with Dependency Injection
13
+ * @param containerManager - ContainerManager instance (with or without SSH config)
14
+ * @param projectDiscovery - ProjectDiscovery instance
15
+ * @param envManager - EnvManager instance
16
+ */
17
+ constructor(containerManager, projectDiscovery, envManager) {
18
+ this.containerManager = containerManager;
19
+ this.projectDiscovery = projectDiscovery;
20
+ this.envManager = envManager;
18
21
  }
19
22
  /**
20
23
  * Execute SQL query
21
24
  */
22
- async query(service, query, options) {
25
+ async query(service, query, options, projectConfig) {
23
26
  // SQL validation (if enabled)
24
27
  sqlValidator.validate(query);
25
- const project = await this.projectDiscovery.findProject();
28
+ // ✅ FIX BUG-007: Use provided project or find local project
29
+ const project = projectConfig || await this.projectDiscovery.findProject();
26
30
  const serviceConfig = project.services[service];
27
31
  if (!serviceConfig) {
28
32
  throw new Error(`Service '${service}' not found in project`);
@@ -46,15 +50,16 @@ export class PostgreSQLAdapter {
46
50
  // Password via PGPASSWORD env var
47
51
  const envVars = conn.password ? [`PGPASSWORD=${conn.password}`] : [];
48
52
  logger.debug(`Executing PostgreSQL query in ${service}: ${query}`);
53
+ // ✅ FIX BUG-007: Pass composeFile and projectDir for remote mode
49
54
  const output = await this.containerManager.exec(service, project.name, cmd, {
50
55
  env: envVars,
51
- });
56
+ }, project.composeFile, project.projectDir);
52
57
  return output;
53
58
  }
54
59
  /**
55
60
  * Create backup
56
61
  */
57
- async backup(service, options) {
62
+ async backup(service, options, projectConfig) {
58
63
  const project = await this.projectDiscovery.findProject();
59
64
  const serviceConfig = project.services[service];
60
65
  if (!serviceConfig) {
@@ -136,25 +141,26 @@ export class PostgreSQLAdapter {
136
141
  /**
137
142
  * Get database status
138
143
  */
139
- async status(service) {
140
- const project = await this.projectDiscovery.findProject();
144
+ async status(service, projectConfig) {
145
+ // ✅ FIX BUG-007: Use provided project or find local project
146
+ const project = projectConfig || await this.projectDiscovery.findProject();
141
147
  const serviceConfig = project.services[service];
142
148
  if (!serviceConfig) {
143
149
  throw new Error(`Service '${service}' not found in project`);
144
150
  }
145
151
  const env = this.envManager.loadEnv(project.projectDir, service, serviceConfig);
146
152
  const conn = this.getConnectionInfo(serviceConfig, env);
147
- // Get version
148
- const versionOutput = await this.query(service, 'SELECT version();');
153
+ // Get version - pass projectConfig to query
154
+ const versionOutput = await this.query(service, 'SELECT version();', undefined, projectConfig);
149
155
  const version = this.parseVersion(versionOutput);
150
156
  // Get database size
151
- const sizeOutput = await this.query(service, "SELECT pg_size_pretty(pg_database_size(current_database())) as size;");
157
+ const sizeOutput = await this.query(service, "SELECT pg_size_pretty(pg_database_size(current_database())) as size;", undefined, projectConfig);
152
158
  const size = this.parseSingleValue(sizeOutput);
153
159
  // Get connection count
154
- const connectionsOutput = await this.query(service, "SELECT count(*) as connections FROM pg_stat_activity WHERE datname = current_database();");
160
+ const connectionsOutput = await this.query(service, "SELECT count(*) as connections FROM pg_stat_activity WHERE datname = current_database();", undefined, projectConfig);
155
161
  const connections = parseInt(this.parseSingleValue(connectionsOutput) || '0');
156
162
  // Get uptime
157
- const uptimeOutput = await this.query(service, "SELECT date_trunc('second', current_timestamp - pg_postmaster_start_time()) as uptime;");
163
+ const uptimeOutput = await this.query(service, "SELECT date_trunc('second', current_timestamp - pg_postmaster_start_time()) as uptime;", undefined, projectConfig);
158
164
  const uptime = this.parseSingleValue(uptimeOutput);
159
165
  return {
160
166
  type: 'postgresql',
@@ -188,15 +194,22 @@ export class PostgreSQLAdapter {
188
194
  * Parse single value from SQL output (first row, first column)
189
195
  */
190
196
  parseSingleValue(output) {
191
- // Simple parsing: take first line after header
197
+ logger.debug(`Parsing single value from ${output.length} chars output`);
192
198
  const lines = output.split('\n').filter((line) => line.trim().length > 0);
193
199
  if (lines.length < 2) {
200
+ logger.warn('Not enough lines in SQL output');
194
201
  return '';
195
202
  }
196
- // Skip header, take first data row
197
- const dataLine = lines[1];
198
- // Remove extra spaces
199
- return dataLine.trim();
203
+ // psql table format:
204
+ // Line 0: column header (e.g., " size ")
205
+ // Line 1: separator (e.g., "-------")
206
+ // Line 2: actual data (e.g., " 11 MB")
207
+ // Line 3: row count (e.g., "(1 row)")
208
+ // Skip header and separator, take data row
209
+ const dataLine = lines.length >= 3 ? lines[2] : lines[1];
210
+ const value = dataLine.trim();
211
+ logger.debug(`Parsed value: "${value}"`);
212
+ return value;
200
213
  }
201
214
  }
202
215
  //# sourceMappingURL=postgresql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgresql.js","sourceRoot":"","sources":["../../src/adapters/postgresql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgresql.js","sourceRoot":"","sources":["../../src/adapters/postgresql.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,20 @@
5
5
  import type { DatabaseAdapter } from './database-adapter.js';
6
6
  import type { QueryOptions, BackupOptions, RestoreOptions, DBStatus, ConnectionInfo } from './types.js';
7
7
  import type { ServiceConfig } from '../discovery/types.js';
8
+ import { ContainerManager } from '../managers/container-manager.js';
9
+ import { ProjectDiscovery } from '../discovery/project-discovery.js';
10
+ import { EnvManager } from '../managers/env-manager.js';
8
11
  export declare class RedisAdapter implements DatabaseAdapter {
9
12
  private containerManager;
10
13
  private projectDiscovery;
11
14
  private envManager;
12
- constructor();
15
+ /**
16
+ * Constructor with Dependency Injection
17
+ * @param containerManager - ContainerManager instance (with or without SSH config)
18
+ * @param projectDiscovery - ProjectDiscovery instance
19
+ * @param envManager - EnvManager instance
20
+ */
21
+ constructor(containerManager: ContainerManager, projectDiscovery: ProjectDiscovery, envManager: EnvManager);
13
22
  /**
14
23
  * Execute Redis command
15
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/adapters/redis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAa;;IAQ/B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BpF;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAiCtE;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2BhD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc;IAUtF;;OAEG;YACW,aAAa;IAsC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAYrB"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/adapters/redis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAa;IAE/B;;;;;OAKG;gBAED,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,UAAU;IAOxB;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCpF;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAiCtE;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2BhD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc;IAUtF;;OAEG;YACW,aAAa;IAsC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAYrB"}
@@ -2,18 +2,21 @@
2
2
  * Redis Adapter
3
3
  * DatabaseAdapter implementation for Redis
4
4
  */
5
- import { ContainerManager } from '../managers/container-manager.js';
6
- import { ProjectDiscovery } from '../discovery/project-discovery.js';
7
- import { EnvManager } from '../managers/env-manager.js';
8
5
  import { logger } from '../utils/logger.js';
9
6
  export class RedisAdapter {
10
7
  containerManager;
11
8
  projectDiscovery;
12
9
  envManager;
13
- constructor() {
14
- this.containerManager = new ContainerManager();
15
- this.projectDiscovery = new ProjectDiscovery();
16
- this.envManager = new EnvManager();
10
+ /**
11
+ * Constructor with Dependency Injection
12
+ * @param containerManager - ContainerManager instance (with or without SSH config)
13
+ * @param projectDiscovery - ProjectDiscovery instance
14
+ * @param envManager - EnvManager instance
15
+ */
16
+ constructor(containerManager, projectDiscovery, envManager) {
17
+ this.containerManager = containerManager;
18
+ this.projectDiscovery = projectDiscovery;
19
+ this.envManager = envManager;
17
20
  }
18
21
  /**
19
22
  * Execute Redis command
@@ -27,14 +30,26 @@ export class RedisAdapter {
27
30
  const env = this.envManager.loadEnv(project.projectDir, service, serviceConfig);
28
31
  const conn = this.getConnectionInfo(serviceConfig, env);
29
32
  // Build redis-cli command
30
- let cmd = ['redis-cli'];
31
- // Password (if needed)
33
+ // Use echo with pipe to pass the command, preserving quotes and spaces
34
+ let cmd;
35
+ // Escape the query for shell (escape single quotes)
36
+ const escapedQuery = query.replace(/'/g, "'\"'\"'");
32
37
  if (conn.password) {
33
- cmd.push('-a', conn.password);
38
+ // Use sh -c to execute: echo "query" | redis-cli -a password
39
+ cmd = [
40
+ 'sh',
41
+ '-c',
42
+ `echo '${escapedQuery}' | redis-cli -a '${conn.password}'`
43
+ ];
44
+ }
45
+ else {
46
+ // Use sh -c to execute: echo "query" | redis-cli
47
+ cmd = [
48
+ 'sh',
49
+ '-c',
50
+ `echo '${escapedQuery}' | redis-cli`
51
+ ];
34
52
  }
35
- // Redis command
36
- const commandParts = query.trim().split(/\s+/);
37
- cmd.push(...commandParts);
38
53
  logger.debug(`Executing Redis command in ${service}: ${query}`);
39
54
  const output = await this.containerManager.exec(service, project.name, cmd);
40
55
  return output;
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/adapters/redis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/adapters/redis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,YAAY;IACf,gBAAgB,CAAmB;IACnC,gBAAgB,CAAmB;IACnC,UAAU,CAAa;IAE/B;;;;;OAKG;IACH,YACE,gBAAkC,EAClC,gBAAkC,EAClC,UAAsB;QAEtB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,KAAa,EAAE,OAAsB;QAChE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAExD,0BAA0B;QAC1B,uEAAuE;QACvE,IAAI,GAAa,CAAC;QAElB,oDAAoD;QACpD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,6DAA6D;YAC7D,GAAG,GAAG;gBACJ,IAAI;gBACJ,IAAI;gBACJ,SAAS,YAAY,qBAAqB,IAAI,CAAC,QAAQ,GAAG;aAC3D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,iDAAiD;YACjD,GAAG,GAAG;gBACJ,IAAI;gBACJ,IAAI;gBACJ,SAAS,YAAY,eAAe;aACrC,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,8BAA8B,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE5E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAsB;QAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,yBAAyB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QAE3E,yDAAyD;QACzD,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE7D,iCAAiC;QACjC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjD,mEAAmE;QACnE,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,OAAe,EACf,UAAkB,EAClB,OAAwB;QAExB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAE1D,MAAM,CAAC,IAAI,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;QAE1D,oBAAoB;QACpB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjE,2DAA2D;QAC3D,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjE,8DAA8D;QAC9D,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAElE,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAExD,WAAW;QACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS;YACxC,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,IAAI,CAAC,iBAAiB,IAAI,SAAS;YAC3C,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC,CAAC;YAClE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC;gBACrC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC;aACjD;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAsB,EAAE,GAA2B;QACnE,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,GAAG,CAAC,cAAc;YAC5B,QAAQ,EAAE,GAAG;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,QAAiB;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAC1D,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,qBAAqB;QAE7C,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC9B,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;YACxB,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzC,gCAAgC;YAChC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;YACpB,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAEhC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YAElD,IAAI,IAAI,CAAC,sBAAsB,KAAK,GAAG,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,kCAAkC;YAClC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAY;QACjC,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE1C,kCAAkC;gBAClC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;wBAChB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;oBAClB,CAAC;oBACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5C,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;oBAC5B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAElD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,KAAK,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5E,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;IACxC,CAAC;CACF"}