@powerhousedao/ph-cli 2.5.0-dev.2 → 2.5.0-dev.20

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.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/ph-cli",
3
- "version": "2.5.0-dev.2",
3
+ "version": "2.5.0-dev.20",
4
4
  "description": "",
5
5
  "license": "AGPL-3.0-only",
6
6
  "type": "module",
@@ -6,6 +6,12 @@
6
6
  PROJECT_NAME=${1:-"global"}
7
7
  ACTION=${2:-"status"}
8
8
 
9
+ # Get Switchboard port from .env or use default
10
+ if [ -f ".env" ]; then
11
+ SWITCHBOARD_PORT=$(grep "SWITCHBOARD_PORT=" .env | cut -d'=' -f2)
12
+ fi
13
+ SWITCHBOARD_PORT=${SWITCHBOARD_PORT:-4001}
14
+
9
15
  # =============================================================================
10
16
  # OS Detection and Windows Handling
11
17
  # =============================================================================
@@ -87,6 +93,7 @@ else
87
93
  # Build Connect
88
94
  echo "Building Connect..."
89
95
  ph connect build
96
+ sudo rm -rf /var/www/html/${PROJECT_NAME}
90
97
  sudo cp -r .ph/connect-build/dist /var/www/html/${PROJECT_NAME}
91
98
 
92
99
  # Enable Nginx site
@@ -95,7 +102,7 @@ else
95
102
  # Start Switchboard via PM2
96
103
  if ! pm2 list | grep -q "switchboard_${PROJECT_NAME}"; then
97
104
  cd $PROJECT_NAME
98
- pm2 start "pnpm switchboard" --name "switchboard_${PROJECT_NAME}"
105
+ pm2 start "pnpm switchboard --port $SWITCHBOARD_PORT" --name "switchboard_${PROJECT_NAME}"
99
106
  pm2 save
100
107
  else
101
108
  pm2 start "switchboard_${PROJECT_NAME}"
@@ -6,6 +6,15 @@
6
6
  TARGET_TAG=${1:-"latest"}
7
7
  PROJECT_NAME=${2:-"global"}
8
8
 
9
+ # Function to find an available port
10
+ find_available_port() {
11
+ local port=4001
12
+ while netstat -tuln | grep -q ":$port "; do
13
+ port=$((port + 1))
14
+ done
15
+ echo $port
16
+ }
17
+
9
18
  # =============================================================================
10
19
  # OS Detection and Windows Handling
11
20
  # =============================================================================
@@ -21,6 +30,7 @@ else
21
30
  # Package Installation
22
31
  # =============================================================================
23
32
  sudo apt install -y postgresql postgresql-contrib nginx libnginx-mod-http-brotli-static libnginx-mod-http-brotli-filter
33
+ sudo sed -i 's/# gzip_vary/gzip_vary/; s/# gzip_proxied/gzip_proxied/; s/# gzip_comp_level/gzip_comp_level/; s/# gzip_buffers/gzip_buffers/; s/# gzip_http_version/gzip_http_version/; s/# gzip_types/gzip_types/' /etc/nginx/nginx.conf
24
34
 
25
35
  # =============================================================================
26
36
  # Interactive Package Installation
@@ -112,6 +122,30 @@ EOF
112
122
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
113
123
  echo " SSL Configuration"
114
124
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
125
+
126
+ # Find an available port for Switchboard
127
+ SWITCHBOARD_PORT=$(find_available_port)
128
+ echo "Using port $SWITCHBOARD_PORT for Switchboard"
129
+
130
+ # Save Switchboard port to configuration
131
+ echo "SWITCHBOARD_PORT=$SWITCHBOARD_PORT" | sudo tee -a .env
132
+
133
+ # Add compression settings to nginx.conf if not exists
134
+ if ! grep -q "brotli_comp_level" /etc/nginx/nginx.conf || ! grep -q "gzip_comp_level" /etc/nginx/nginx.conf; then
135
+ echo "Adding compression settings to nginx.conf..."
136
+ # Find the http block in nginx.conf
137
+ if ! grep -q "brotli_comp_level" /etc/nginx/nginx.conf; then
138
+ sudo sed -i '/http {/a \ # Brotli compression\n brotli on;\n brotli_comp_level 6;\n brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;\n brotli_static on;' /etc/nginx/nginx.conf
139
+ fi
140
+ if ! grep -q "gzip_comp_level" /etc/nginx/nginx.conf; then
141
+ sudo sed -i '/http {/a \ # Gzip compression\n gzip on;\n gzip_vary on;\n gzip_proxied any;\n gzip_comp_level 6;\n gzip_buffers 16 8k;\n gzip_http_version 1.1;\n gzip_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;' /etc/nginx/nginx.conf
142
+ fi
143
+ else
144
+ echo "Compression settings already present in nginx.conf"
145
+ fi
146
+
147
+
148
+
115
149
  echo "Choose SSL configuration:"
116
150
  echo "1) Let's Encrypt certificates for domains"
117
151
  echo "2) Self-signed certificate for machine hostname"
@@ -129,132 +163,58 @@ EOF
129
163
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
130
164
  read -p "Enter Connect domain (e.g. connect.google.com): " connect_domain
131
165
  read -p "Enter Switchboard domain (e.g. switchboard.google.com): " switchboard_domain
166
+ read -p "Enter admin email for Let's Encrypt notifications: " admin_email
132
167
 
133
168
  echo "Using domains:"
134
169
  echo "Connect: $connect_domain"
135
170
  echo "Switchboard: $switchboard_domain"
136
171
 
137
- # Generate temporary SSL certificates
138
- echo "Generating temporary SSL certificates..."
139
- sudo mkdir -p /etc/nginx/ssl
140
- sudo openssl req -x509 -nodes -days 1 -newkey rsa:2048 \
141
- -keyout /etc/nginx/ssl/temp.key \
142
- -out /etc/nginx/ssl/temp.crt \
143
- -subj "/CN=$connect_domain" \
144
- -addext "subjectAltName = DNS:$connect_domain,DNS:$switchboard_domain"
145
-
146
- # Check if Nginx configuration already exists
147
- if [ -f "/etc/nginx/sites-available/$PROJECT_NAME" ]; then
148
- echo "Nginx configuration for $PROJECT_NAME already exists"
149
- read -p "Do you want to overwrite it? (y/n): " overwrite_nginx
150
- if [ "$overwrite_nginx" != "y" ]; then
151
- echo "Keeping existing Nginx configuration"
152
- else
153
- # Create Nginx configuration for domains
154
- echo "Creating Nginx configuration..."
155
- sudo tee /etc/nginx/sites-available/$PROJECT_NAME > /dev/null << EOF
156
- # Security headers
157
- add_header Strict-Transport-Security "max-age=63072000" always;
158
- add_header X-Frame-Options DENY;
159
- add_header X-Content-Type-Options nosniff;
160
- add_header X-XSS-Protection "1; mode=block";
161
-
162
- # Compression settings
163
- brotli on;
164
- brotli_comp_level 6;
165
- brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
166
- brotli_static on;
167
-
168
- gzip on;
169
- gzip_vary on;
170
- gzip_proxied any;
171
- gzip_comp_level 6;
172
- gzip_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
173
- gzip_min_length 1000;
174
- gzip_buffers 16 8k;
175
-
172
+ # Create initial Nginx configuration for certbot
173
+ echo "Creating initial Nginx configuration..."
174
+ sudo tee /etc/nginx/sites-available/$PROJECT_NAME > /dev/null << EOF
176
175
  server {
177
176
  listen 80;
178
177
  server_name $connect_domain $switchboard_domain;
179
- return 301 https://\$host\$request_uri;
180
- }
181
-
182
- server {
183
- listen 443 ssl http2;
184
- server_name $connect_domain;
185
-
186
- ssl_certificate /etc/nginx/ssl/temp.crt;
187
- ssl_certificate_key /etc/nginx/ssl/temp.key;
188
-
189
- # SSL configuration
190
- ssl_protocols TLSv1.2 TLSv1.3;
191
- ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
192
- ssl_prefer_server_ciphers off;
193
- ssl_session_timeout 1d;
194
- ssl_session_cache shared:SSL:50m;
195
- ssl_session_tickets off;
196
- ssl_stapling on;
197
- ssl_stapling_verify on;
198
-
199
- if (\$http_x_forwarded_proto = "http") {
200
- return 301 https://\$server_name\$request_uri;
201
- }
202
178
 
203
179
  location / {
204
- root $PWD/.ph/connect-build/dist;
180
+ root /var/www/html/$PROJECT_NAME;
205
181
  try_files \$uri \$uri/ /index.html;
206
- add_header Cache-Control "no-cache";
207
- add_header X-Forwarded-Proto \$scheme;
208
- add_header X-Forwarded-Host \$host;
209
- add_header X-Forwarded-Port \$server_port;
210
182
  }
211
- }
212
183
 
213
- server {
214
- listen 443 ssl http2;
215
- server_name $switchboard_domain;
216
-
217
- ssl_certificate /etc/nginx/ssl/temp.crt;
218
- ssl_certificate_key /etc/nginx/ssl/temp.key;
219
-
220
- location / {
221
- proxy_pass http://localhost:4001;
222
- proxy_http_version 1.1;
223
- proxy_set_header Upgrade \$http_upgrade;
224
- proxy_set_header Connection 'upgrade';
225
- proxy_set_header Host \$host;
226
- proxy_cache_bypass \$http_upgrade;
227
- proxy_set_header X-Real-IP \$remote_addr;
228
- proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
229
- proxy_set_header X-Forwarded-Proto \$scheme;
184
+ location /.well-known/acme-challenge/ {
185
+ root /var/www/html;
230
186
  }
231
187
  }
232
188
  EOF
233
- fi
234
- else
235
- # Create Nginx configuration for domains
236
- echo "Creating Nginx configuration..."
237
- sudo tee /etc/nginx/sites-available/$PROJECT_NAME > /dev/null << EOF
238
- # Security headers
239
- add_header Strict-Transport-Security "max-age=63072000" always;
240
- add_header X-Frame-Options DENY;
241
- add_header X-Content-Type-Options nosniff;
242
- add_header X-XSS-Protection "1; mode=block";
243
-
244
- # Compression settings
245
- brotli on;
246
- brotli_comp_level 6;
247
- brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
248
- brotli_static on;
249
-
250
- gzip on;
251
- gzip_vary on;
252
- gzip_proxied any;
253
- gzip_comp_level 6;
254
- gzip_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
255
- gzip_min_length 1000;
256
- gzip_buffers 16 8k;
257
189
 
190
+ # Enable the site
191
+ sudo ln -sf /etc/nginx/sites-available/$PROJECT_NAME /etc/nginx/sites-enabled/
192
+ sudo rm -f /etc/nginx/sites-enabled/default
193
+
194
+ # Test Nginx configuration
195
+ sudo nginx -t
196
+
197
+ # Restart Nginx to apply changes
198
+ sudo systemctl restart nginx
199
+
200
+ # Obtain SSL certificates
201
+ echo "Obtaining SSL certificates..."
202
+ sudo certbot --nginx -d $connect_domain --non-interactive --agree-tos --email $admin_email --redirect
203
+ sudo certbot --nginx -d $switchboard_domain --non-interactive --agree-tos --email $admin_email --redirect
204
+
205
+ # Wait for certbot to finish and certificates to be installed
206
+ sleep 5
207
+
208
+ # Check if certificates were installed
209
+ if [ ! -f "/etc/letsencrypt/live/$connect_domain/fullchain.pem" ] || [ ! -f "/etc/letsencrypt/live/$switchboard_domain/fullchain.pem" ]; then
210
+ echo "Error: SSL certificates were not installed properly"
211
+ echo "Please check the certbot logs at /var/log/letsencrypt/letsencrypt.log"
212
+ exit 1
213
+ fi
214
+
215
+ # Update Nginx configuration with proper SSL settings
216
+ echo "Updating Nginx configuration with SSL settings..."
217
+ sudo tee /etc/nginx/sites-available/$PROJECT_NAME > /dev/null << EOF
258
218
  server {
259
219
  listen 80;
260
220
  server_name $connect_domain $switchboard_domain;
@@ -262,11 +222,12 @@ server {
262
222
  }
263
223
 
264
224
  server {
265
- listen 443 ssl http2;
225
+ listen 443 ssl;
226
+ http2 on;
266
227
  server_name $connect_domain;
267
228
 
268
- ssl_certificate /etc/nginx/ssl/temp.crt;
269
- ssl_certificate_key /etc/nginx/ssl/temp.key;
229
+ ssl_certificate /etc/letsencrypt/live/$connect_domain/fullchain.pem;
230
+ ssl_certificate_key /etc/letsencrypt/live/$connect_domain/privkey.pem;
270
231
 
271
232
  # SSL configuration
272
233
  ssl_protocols TLSv1.2 TLSv1.3;
@@ -277,6 +238,14 @@ server {
277
238
  ssl_session_tickets off;
278
239
  ssl_stapling on;
279
240
  ssl_stapling_verify on;
241
+ resolver 8.8.8.8 8.8.4.4 valid=300s;
242
+ resolver_timeout 5s;
243
+
244
+ # Security headers
245
+ add_header Strict-Transport-Security "max-age=63072000" always;
246
+ add_header X-Frame-Options DENY;
247
+ add_header X-Content-Type-Options nosniff;
248
+ add_header X-XSS-Protection "1; mode=block";
280
249
 
281
250
  if (\$http_x_forwarded_proto = "http") {
282
251
  return 301 https://\$server_name\$request_uri;
@@ -290,17 +259,40 @@ server {
290
259
  add_header X-Forwarded-Host \$host;
291
260
  add_header X-Forwarded-Port \$server_port;
292
261
  }
262
+
263
+ location /.well-known/acme-challenge/ {
264
+ root /var/www/html;
265
+ }
293
266
  }
294
267
 
295
268
  server {
296
- listen 443 ssl http2;
269
+ listen 443 ssl;
270
+ http2 on;
297
271
  server_name $switchboard_domain;
298
272
 
299
- ssl_certificate /etc/nginx/ssl/temp.crt;
300
- ssl_certificate_key /etc/nginx/ssl/temp.key;
273
+ ssl_certificate /etc/letsencrypt/live/$switchboard_domain/fullchain.pem;
274
+ ssl_certificate_key /etc/letsencrypt/live/$switchboard_domain/privkey.pem;
275
+
276
+ # SSL configuration
277
+ ssl_protocols TLSv1.2 TLSv1.3;
278
+ ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
279
+ ssl_prefer_server_ciphers off;
280
+ ssl_session_timeout 1d;
281
+ ssl_session_cache shared:SSL:50m;
282
+ ssl_session_tickets off;
283
+ ssl_stapling on;
284
+ ssl_stapling_verify on;
285
+ resolver 8.8.8.8 8.8.4.4 valid=300s;
286
+ resolver_timeout 5s;
287
+
288
+ # Security headers
289
+ add_header Strict-Transport-Security "max-age=63072000" always;
290
+ add_header X-Frame-Options DENY;
291
+ add_header X-Content-Type-Options nosniff;
292
+ add_header X-XSS-Protection "1; mode=block";
301
293
 
302
294
  location / {
303
- proxy_pass http://localhost:4001;
295
+ proxy_pass http://localhost:$SWITCHBOARD_PORT;
304
296
  proxy_http_version 1.1;
305
297
  proxy_set_header Upgrade \$http_upgrade;
306
298
  proxy_set_header Connection 'upgrade';
@@ -310,23 +302,20 @@ server {
310
302
  proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
311
303
  proxy_set_header X-Forwarded-Proto \$scheme;
312
304
  }
305
+
306
+ location /.well-known/acme-challenge/ {
307
+ root /var/www/html;
308
+ }
313
309
  }
314
310
  EOF
315
- fi
316
-
317
- # Enable the site
318
- sudo ln -sf /etc/nginx/sites-available/$PROJECT_NAME /etc/nginx/sites-enabled/
319
- sudo rm -f /etc/nginx/sites-enabled/default
320
311
 
321
- # Test Nginx configuration
322
- sudo nginx -t
323
-
324
- # Obtain SSL certificates
325
- echo "Obtaining SSL certificates..."
326
- sudo certbot --nginx -d $connect_domain -d $switchboard_domain --non-interactive --agree-tos --email admin@$connect_domain
312
+ # Test and reload Nginx configuration
313
+ sudo nginx -t && sudo systemctl reload nginx
327
314
 
328
- # Remove temporary certificates
329
- sudo rm -f /etc/nginx/ssl/temp.*
315
+ # Set up automatic renewal
316
+ echo "Setting up automatic certificate renewal..."
317
+ sudo systemctl enable certbot.timer
318
+ sudo systemctl start certbot.timer
330
319
 
331
320
  else
332
321
  # Get machine hostname
@@ -343,26 +332,6 @@ EOF
343
332
  # Create Nginx configuration for self-signed
344
333
  echo "Creating Nginx configuration..."
345
334
  sudo tee /etc/nginx/sites-available/$PROJECT_NAME > /dev/null << EOF
346
- # Security headers
347
- add_header Strict-Transport-Security "max-age=63072000" always;
348
- add_header X-Frame-Options DENY;
349
- add_header X-Content-Type-Options nosniff;
350
- add_header X-XSS-Protection "1; mode=block";
351
-
352
- # Compression settings
353
- brotli on;
354
- brotli_comp_level 6;
355
- brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
356
- brotli_static on;
357
-
358
- gzip on;
359
- gzip_vary on;
360
- gzip_proxied any;
361
- gzip_comp_level 6;
362
- gzip_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
363
- gzip_min_length 1000;
364
- gzip_buffers 16 8k;
365
-
366
335
  server {
367
336
  listen 80;
368
337
  server_name $hostname;
@@ -370,7 +339,8 @@ server {
370
339
  }
371
340
 
372
341
  server {
373
- listen 443 ssl http2;
342
+ listen 443 ssl;
343
+ http2 on;
374
344
  server_name $hostname;
375
345
 
376
346
  ssl_certificate /etc/ssl/certs/$hostname.crt;
@@ -389,7 +359,7 @@ server {
389
359
  }
390
360
 
391
361
  location /switchboard {
392
- proxy_pass http://localhost:4001;
362
+ proxy_pass http://localhost:$SWITCHBOARD_PORT;
393
363
  proxy_http_version 1.1;
394
364
  proxy_set_header Upgrade \$http_upgrade;
395
365
  proxy_set_header Connection 'upgrade';
@@ -37,7 +37,7 @@ export declare const inspectHelp = "\nCommand Overview:\n The inspect command e
37
37
  /**
38
38
  * Help text for the service command
39
39
  */
40
- export declare const serviceHelp = "\nCommand Overview:\n The service command manages Powerhouse services, allowing you to start, stop, check status,\n and more. It provides a centralized way to control the lifecycle of services in your project.\n\n This command:\n 1. Controls service lifecycle (start, stop, status, etc.)\n 2. Manages multiple services from a single interface\n 3. Provides detailed information about running services\n 4. Uses PM2 under the hood for process management\n\nArguments:\n <action> The action to perform. Available actions:\n - start: Launch the specified service\n - stop: Terminate the specified service\n - status: Check the current status of services\n - list: List all managed services (default)\n - startup: Configure services to start on system boot\n - unstartup: Remove services from system startup\n \n [service] Optional. The service to act upon. Available services:\n - switchboard: The document processing engine\n - connect: The Connect Studio interface\n - all: Act on all services (default)\n\nExamples:\n $ ph service # List all services (same as 'ph service list all')\n $ ph service start switchboard # Start the Switchboard service\n $ ph service stop connect # Stop the Connect service\n $ ph service start all # Start all services\n $ ph service status # Check status of all services\n $ ph service startup # Configure services to start on system boot\n $ ph service unstartup # Remove services from system startup\n\nNotes:\n - Services are managed using PM2, a process manager for Node.js applications\n - The 'status' action shows uptime, memory usage, CPU usage, and other metrics\n - The 'list' action is the default when no action is specified\n - The 'all' service is the default when no service is specified\n";
40
+ export declare const serviceHelp = "\nCommand Overview:\n The service command manages Powerhouse services, allowing you to start, stop, check status,\n and more. It provides a centralized way to control the lifecycle of services in your project.\n\n This command:\n 1. Controls service lifecycle (start, stop, status, etc.)\n 2. Manages multiple services from a single interface\n 3. Provides detailed information about running services\n 4. Uses PM2 under the hood for process management\n\nArguments:\n <action> The action to perform. Available actions:\n - start: Launch the specified service\n - stop: Terminate the specified service\n - status: Check the current status of services\n - list: List all managed services (default)\n - startup: Configure services to start on system boot\n - unstartup: Remove services from system startup\n \n [service] Optional. The service to act upon. Available services:\n - switchboard: The document processing engine\n - connect: The Connect Studio interface\n - all: Act on all services (default)\n\nExamples:\n $ ph service setup # Setup services\n $ ph service start # Start the services\n $ ph service stop # Stop the services\n $ ph service status # Check status of all services\n \n\nNotes:\n - Services are managed using PM2, a process manager for Node.js applications\n - The 'status' action shows uptime, memory usage, CPU usage, and other metrics\n - The 'list' action is the default when no action is specified\n - The 'all' service is the default when no service is specified\n";
41
41
  /**
42
42
  * Help text for the switchboard command
43
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/help.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,iBAAiB,itDAkC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,2nBAU5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,yXAS9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,kpGA0DxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+jEAsCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,4pEAwCzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,ypCA2BpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,m7DAoCnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,miDAkCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+mEAuCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,ixDAoC3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,s6DAuCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2kCA0BvB,CAAC"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/help.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,iBAAiB,itDAkC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,2nBAU5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,yXAS9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,kpGA0DxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+jEAsCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,4pEAwCzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,ypCA2BpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,m7DAoCnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,miDAkCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,+zDAqCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,ixDAoC3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,s6DAuCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2kCA0BvB,CAAC"}
package/dist/src/help.js CHANGED
@@ -350,13 +350,11 @@ Arguments:
350
350
  - all: Act on all services (default)
351
351
 
352
352
  Examples:
353
- $ ph service # List all services (same as 'ph service list all')
354
- $ ph service start switchboard # Start the Switchboard service
355
- $ ph service stop connect # Stop the Connect service
356
- $ ph service start all # Start all services
353
+ $ ph service setup # Setup services
354
+ $ ph service start # Start the services
355
+ $ ph service stop # Stop the services
357
356
  $ ph service status # Check status of all services
358
- $ ph service startup # Configure services to start on system boot
359
- $ ph service unstartup # Remove services from system startup
357
+
360
358
 
361
359
  Notes:
362
360
  - Services are managed using PM2, a process manager for Node.js applications
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mCAAmC,EACnC,wBAAwB,GACzB,MAAM,4CAA4C,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkChC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;2EAM2C,uBAAuB;6FACL,mCAAmC;uEACzD,wBAAwB;;CAE9F,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;CASjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0D3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCtB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B1B,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mCAAmC,EACnC,wBAAwB,GACzB,MAAM,4CAA4C,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkChC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;2EAM2C,uBAAuB;6FACL,mCAAmC;uEACzD,wBAAwB;;CAE9F,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;CASjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0D3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCtB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B1B,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "2.5.0-dev.2";
1
+ export declare const version = "2.5.0-dev.20";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,gBAAgB,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,iBAAiB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated. DO NOT EDIT.
2
- export const version = "2.5.0-dev.2";
2
+ export const version = "2.5.0-dev.20";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC"}