@observeone/cli 1.15.1 → 1.17.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 (50) hide show
  1. package/README.md +75 -1
  2. package/dist/README.md +75 -1
  3. package/dist/commands/api-key.d.ts +6 -0
  4. package/dist/commands/api-key.d.ts.map +1 -0
  5. package/dist/commands/api-key.js +146 -0
  6. package/dist/commands/api-key.js.map +1 -0
  7. package/dist/commands/apply.d.ts.map +1 -1
  8. package/dist/commands/apply.js +226 -4
  9. package/dist/commands/apply.js.map +1 -1
  10. package/dist/commands/export.d.ts.map +1 -1
  11. package/dist/commands/export.js +88 -4
  12. package/dist/commands/export.js.map +1 -1
  13. package/dist/commands/incident.d.ts.map +1 -1
  14. package/dist/commands/incident.js +102 -1
  15. package/dist/commands/incident.js.map +1 -1
  16. package/dist/commands/status-page.d.ts.map +1 -1
  17. package/dist/commands/status-page.js +6 -4
  18. package/dist/commands/status-page.js.map +1 -1
  19. package/dist/commands/suite/heal.d.ts +6 -0
  20. package/dist/commands/suite/heal.d.ts.map +1 -0
  21. package/dist/commands/suite/heal.js +38 -0
  22. package/dist/commands/suite/heal.js.map +1 -0
  23. package/dist/commands/suite/index.d.ts.map +1 -1
  24. package/dist/commands/suite/index.js +4 -0
  25. package/dist/commands/suite/index.js.map +1 -1
  26. package/dist/commands/suite/toggle-public.d.ts +6 -0
  27. package/dist/commands/suite/toggle-public.d.ts.map +1 -0
  28. package/dist/commands/suite/toggle-public.js +33 -0
  29. package/dist/commands/suite/toggle-public.js.map +1 -0
  30. package/dist/commands/team.d.ts +6 -0
  31. package/dist/commands/team.d.ts.map +1 -0
  32. package/dist/commands/team.js +167 -0
  33. package/dist/commands/team.js.map +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/interfaces/api-client.interface.d.ts +35 -1
  38. package/dist/interfaces/api-client.interface.d.ts.map +1 -1
  39. package/dist/package.json +1 -1
  40. package/dist/services/api-client.service.d.ts +29 -1
  41. package/dist/services/api-client.service.d.ts.map +1 -1
  42. package/dist/services/api-client.service.js +69 -1
  43. package/dist/services/api-client.service.js.map +1 -1
  44. package/dist/types/index.d.ts +29 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/dist/utils/apply-config.d.ts +5 -1
  47. package/dist/utils/apply-config.d.ts.map +1 -1
  48. package/dist/utils/apply-config.js +16 -1
  49. package/dist/utils/apply-config.js.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -104,7 +104,7 @@ obs apply -f my-stack.json
104
104
  "name": "Production Website",
105
105
  "description": "Main landing page monitor",
106
106
  "url": "https://example.com",
107
- "cron_expression": "*/5 * * * *",
107
+ "interval": "*/5 * * * *",
108
108
  "alert_on_failure": true
109
109
  }
110
110
  ],
@@ -121,10 +121,46 @@ obs apply -f my-stack.json
121
121
  "period": 86400,
122
122
  "grace_period": 3600
123
123
  }
124
+ ],
125
+ "alert_channels": [
126
+ {
127
+ "name": "Slack Alerts",
128
+ "type": "slack",
129
+ "config": { "webhook_url": "https://hooks.slack.com/..." }
130
+ }
131
+ ],
132
+ "status_pages": [
133
+ {
134
+ "slug": "status",
135
+ "name": "System Status",
136
+ "is_public": true,
137
+ "show_incident_history": true,
138
+ "show_uptime_percentage": true
139
+ }
140
+ ],
141
+ "suites": [
142
+ {
143
+ "suite_name": "Smoke Tests",
144
+ "target_url": "https://example.com",
145
+ "cron_expression": "0 */6 * * *",
146
+ "schedule_active": true
147
+ }
148
+ ],
149
+ "incidents": [
150
+ {
151
+ "title": "API Degradation",
152
+ "status": "OPEN",
153
+ "priority": "HIGH"
154
+ }
124
155
  ]
125
156
  }
126
157
  ```
127
158
 
159
+ > **Notes:**
160
+ > - `incidents` — included in export as a backup/audit artifact. `obs apply` warns and skips this block; incidents cannot be re-created from config.
161
+ > - `suites` — `obs apply` updates metadata for existing suites only. New suites require AI generation via `obs suite generate`.
162
+ > - Status-page attached monitors are exported but not applied. Manage them via `obs status-page add-monitor / remove-monitor`.
163
+
128
164
  **Single-resource files (v1.13.0):** `obs apply` also accepts files holding a single resource, in three shapes:
129
165
 
130
166
  ```json
@@ -160,6 +196,7 @@ obs monitor update <id> --description "Updated copy" --alert-channel-id 47
160
196
  obs monitor runs <id> --limit 10 # recent executions
161
197
  obs monitor run <id> # trigger a manual run
162
198
  obs monitor toggle <id>
199
+ obs monitor toggle-muted <id>
163
200
  obs monitor delete <id> -y
164
201
  ```
165
202
 
@@ -183,6 +220,7 @@ obs check update <id> --description "Signup v2" --header "X-Trace=ci-v2"
183
220
  obs check runs <id> --limit 10 # recent executions
184
221
  obs check run <id> # trigger a manual run
185
222
  obs check toggle <id>
223
+ obs check toggle-muted <id>
186
224
  obs check delete <id> -y
187
225
  ```
188
226
 
@@ -202,6 +240,8 @@ obs heartbeat list --search "Backup" --status late --limit 5 --json
202
240
  obs heartbeat update <id> --period 43200
203
241
  obs heartbeat runs <id> --limit 10 # recent pings
204
242
  obs heartbeat toggle <id>
243
+ obs heartbeat toggle-muted <id>
244
+ obs heartbeat reset <id> # acknowledge missed pings and restart grace window
205
245
  obs heartbeat delete <id> -y
206
246
  ```
207
247
 
@@ -230,6 +270,10 @@ obs status-page list
230
270
  obs status-page get <id>
231
271
  obs status-page update <id> --description "Updated"
232
272
  obs status-page delete <id> -y
273
+
274
+ # Attach / detach monitors from a status page
275
+ obs status-page add-monitor <sp-id> <resource-id> --type url-monitor --name "API" --order 1
276
+ obs status-page remove-monitor <sp-id> <resource-id>
233
277
  ```
234
278
 
235
279
  ### Incidents
@@ -239,6 +283,30 @@ obs incident list
239
283
  obs incident get <id>
240
284
  obs incident update <id> --description "Resolved"
241
285
  obs incident delete <id> -y
286
+
287
+ # Comment on an incident
288
+ obs incident comment <id> --message "Investigating upstream provider issue"
289
+
290
+ # Assign / unassign
291
+ obs incident assign <id> --user <user-id>
292
+ obs incident unassign <id>
293
+ ```
294
+
295
+ ### API Keys
296
+ ```bash
297
+ obs api-key list
298
+ obs api-key create --name "CI Bot"
299
+ obs api-key revoke <id>
300
+ obs api-key toggle <id>
301
+ ```
302
+
303
+ ### Teams
304
+ ```bash
305
+ obs team list
306
+ obs team members <team-id>
307
+ obs team invite <team-id> # regenerate invite code
308
+ obs team remove-member <team-id> <user-id>
309
+ obs team update-role <team-id> <user-id> --role member
242
310
  ```
243
311
 
244
312
  ---
@@ -302,6 +370,12 @@ obs suite schedule <id> --cron "*/30 * * * *"
302
370
  obs suite secrets <id> --var USERNAME=admin --var PASSWORD=secret
303
371
  obs suite secrets <id> --var-file .env.test
304
372
 
373
+ # Toggle public visibility of a suite
374
+ obs suite toggle-public <id>
375
+
376
+ # Trigger self-heal on a suite's failing tests
377
+ obs suite heal <id>
378
+
305
379
  # Delete a suite
306
380
  obs suite delete <id>
307
381
  ```
package/dist/README.md CHANGED
@@ -104,7 +104,7 @@ obs apply -f my-stack.json
104
104
  "name": "Production Website",
105
105
  "description": "Main landing page monitor",
106
106
  "url": "https://example.com",
107
- "cron_expression": "*/5 * * * *",
107
+ "interval": "*/5 * * * *",
108
108
  "alert_on_failure": true
109
109
  }
110
110
  ],
@@ -121,10 +121,46 @@ obs apply -f my-stack.json
121
121
  "period": 86400,
122
122
  "grace_period": 3600
123
123
  }
124
+ ],
125
+ "alert_channels": [
126
+ {
127
+ "name": "Slack Alerts",
128
+ "type": "slack",
129
+ "config": { "webhook_url": "https://hooks.slack.com/..." }
130
+ }
131
+ ],
132
+ "status_pages": [
133
+ {
134
+ "slug": "status",
135
+ "name": "System Status",
136
+ "is_public": true,
137
+ "show_incident_history": true,
138
+ "show_uptime_percentage": true
139
+ }
140
+ ],
141
+ "suites": [
142
+ {
143
+ "suite_name": "Smoke Tests",
144
+ "target_url": "https://example.com",
145
+ "cron_expression": "0 */6 * * *",
146
+ "schedule_active": true
147
+ }
148
+ ],
149
+ "incidents": [
150
+ {
151
+ "title": "API Degradation",
152
+ "status": "OPEN",
153
+ "priority": "HIGH"
154
+ }
124
155
  ]
125
156
  }
126
157
  ```
127
158
 
159
+ > **Notes:**
160
+ > - `incidents` — included in export as a backup/audit artifact. `obs apply` warns and skips this block; incidents cannot be re-created from config.
161
+ > - `suites` — `obs apply` updates metadata for existing suites only. New suites require AI generation via `obs suite generate`.
162
+ > - Status-page attached monitors are exported but not applied. Manage them via `obs status-page add-monitor / remove-monitor`.
163
+
128
164
  **Single-resource files (v1.13.0):** `obs apply` also accepts files holding a single resource, in three shapes:
129
165
 
130
166
  ```json
@@ -160,6 +196,7 @@ obs monitor update <id> --description "Updated copy" --alert-channel-id 47
160
196
  obs monitor runs <id> --limit 10 # recent executions
161
197
  obs monitor run <id> # trigger a manual run
162
198
  obs monitor toggle <id>
199
+ obs monitor toggle-muted <id>
163
200
  obs monitor delete <id> -y
164
201
  ```
165
202
 
@@ -183,6 +220,7 @@ obs check update <id> --description "Signup v2" --header "X-Trace=ci-v2"
183
220
  obs check runs <id> --limit 10 # recent executions
184
221
  obs check run <id> # trigger a manual run
185
222
  obs check toggle <id>
223
+ obs check toggle-muted <id>
186
224
  obs check delete <id> -y
187
225
  ```
188
226
 
@@ -202,6 +240,8 @@ obs heartbeat list --search "Backup" --status late --limit 5 --json
202
240
  obs heartbeat update <id> --period 43200
203
241
  obs heartbeat runs <id> --limit 10 # recent pings
204
242
  obs heartbeat toggle <id>
243
+ obs heartbeat toggle-muted <id>
244
+ obs heartbeat reset <id> # acknowledge missed pings and restart grace window
205
245
  obs heartbeat delete <id> -y
206
246
  ```
207
247
 
@@ -230,6 +270,10 @@ obs status-page list
230
270
  obs status-page get <id>
231
271
  obs status-page update <id> --description "Updated"
232
272
  obs status-page delete <id> -y
273
+
274
+ # Attach / detach monitors from a status page
275
+ obs status-page add-monitor <sp-id> <resource-id> --type url-monitor --name "API" --order 1
276
+ obs status-page remove-monitor <sp-id> <resource-id>
233
277
  ```
234
278
 
235
279
  ### Incidents
@@ -239,6 +283,30 @@ obs incident list
239
283
  obs incident get <id>
240
284
  obs incident update <id> --description "Resolved"
241
285
  obs incident delete <id> -y
286
+
287
+ # Comment on an incident
288
+ obs incident comment <id> --message "Investigating upstream provider issue"
289
+
290
+ # Assign / unassign
291
+ obs incident assign <id> --user <user-id>
292
+ obs incident unassign <id>
293
+ ```
294
+
295
+ ### API Keys
296
+ ```bash
297
+ obs api-key list
298
+ obs api-key create --name "CI Bot"
299
+ obs api-key revoke <id>
300
+ obs api-key toggle <id>
301
+ ```
302
+
303
+ ### Teams
304
+ ```bash
305
+ obs team list
306
+ obs team members <team-id>
307
+ obs team invite <team-id> # regenerate invite code
308
+ obs team remove-member <team-id> <user-id>
309
+ obs team update-role <team-id> <user-id> --role member
242
310
  ```
243
311
 
244
312
  ---
@@ -302,6 +370,12 @@ obs suite schedule <id> --cron "*/30 * * * *"
302
370
  obs suite secrets <id> --var USERNAME=admin --var PASSWORD=secret
303
371
  obs suite secrets <id> --var-file .env.test
304
372
 
373
+ # Toggle public visibility of a suite
374
+ obs suite toggle-public <id>
375
+
376
+ # Trigger self-heal on a suite's failing tests
377
+ obs suite heal <id>
378
+
305
379
  # Delete a suite
306
380
  obs suite delete <id>
307
381
  ```
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ import { IConfigService } from '../interfaces/config.interface.js';
3
+ import { IApiClient } from '../interfaces/api-client.interface.js';
4
+ import { IOutputService } from '../interfaces/output.interface.js';
5
+ export declare function createApiKeyCommand(_configService: IConfigService, apiClient: IApiClient, outputService: IOutputService): Command;
6
+ //# sourceMappingURL=api-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../src/commands/api-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,cAAc,GAC5B,OAAO,CA0IT"}
@@ -0,0 +1,146 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ export function createApiKeyCommand(_configService, apiClient, outputService) {
5
+ const cmd = new Command('api-key').description('Manage API keys');
6
+ // obs api-key list [--json]
7
+ cmd
8
+ .command('list')
9
+ .description('List all API keys')
10
+ .action(async () => {
11
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
12
+ try {
13
+ const apiKeys = await apiClient.getApiKeys();
14
+ if (isJson) {
15
+ outputService.formatJsonOutput({ apiKeys });
16
+ return;
17
+ }
18
+ if (apiKeys.length === 0) {
19
+ console.log(chalk.gray('\n No API keys found.\n'));
20
+ return;
21
+ }
22
+ console.log(chalk.bold('\n API Keys\n'));
23
+ for (const key of apiKeys) {
24
+ const status = key.is_active ? chalk.green('active') : chalk.gray('inactive');
25
+ console.log(chalk.white(` ${key.name}`) + chalk.gray(` [${key.id}]`) + ` — ${status}`);
26
+ }
27
+ console.log('');
28
+ }
29
+ catch (err) {
30
+ const msg = err.message || 'Failed to list API keys';
31
+ if (isJson) {
32
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
33
+ }
34
+ else {
35
+ console.error(chalk.red(`\n❌ ${msg}\n`));
36
+ }
37
+ process.exit(1);
38
+ }
39
+ });
40
+ // obs api-key create --name <name> [--json]
41
+ cmd
42
+ .command('create')
43
+ .description('Create a new API key')
44
+ .option('-n, --name <name>', 'API key name')
45
+ .action(async (options) => {
46
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
47
+ try {
48
+ let name = options.name;
49
+ if (!name) {
50
+ const answers = await inquirer.prompt([
51
+ {
52
+ type: 'input',
53
+ name: 'name',
54
+ message: 'API key name:',
55
+ validate: (val) => (val.trim() ? true : 'Name is required'),
56
+ },
57
+ ]);
58
+ name = answers.name;
59
+ }
60
+ const apiKey = await apiClient.createApiKey(name);
61
+ if (isJson) {
62
+ outputService.formatJsonOutput({ apiKey });
63
+ return;
64
+ }
65
+ console.log(chalk.green(`\n✓ API key created: ${apiKey.name} [${apiKey.id}]\n`));
66
+ }
67
+ catch (err) {
68
+ const msg = err.message || 'Failed to create API key';
69
+ if (isJson) {
70
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
71
+ }
72
+ else {
73
+ console.error(chalk.red(`\n❌ ${msg}\n`));
74
+ }
75
+ process.exit(1);
76
+ }
77
+ });
78
+ // obs api-key revoke <id> [-y] [--json]
79
+ cmd
80
+ .command('revoke <id>')
81
+ .description('Revoke (delete) an API key')
82
+ .option('-y, --yes', 'Skip confirmation prompt')
83
+ .action(async (id, options) => {
84
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
85
+ try {
86
+ if (!options.yes) {
87
+ const { confirm } = await inquirer.prompt([
88
+ {
89
+ type: 'confirm',
90
+ name: 'confirm',
91
+ message: `Are you sure you want to revoke API key ${id}?`,
92
+ default: false,
93
+ },
94
+ ]);
95
+ if (!confirm) {
96
+ console.log(chalk.gray(' Revoke cancelled.'));
97
+ return;
98
+ }
99
+ }
100
+ const result = await apiClient.deleteApiKey(id);
101
+ if (isJson) {
102
+ outputService.formatJsonOutput(result);
103
+ return;
104
+ }
105
+ console.log(chalk.green(`\n✓ ${result.message || `API key ${id} revoked.`}\n`));
106
+ }
107
+ catch (err) {
108
+ const msg = err.message || 'Failed to revoke API key';
109
+ if (isJson) {
110
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
111
+ }
112
+ else {
113
+ console.error(chalk.red(`\n❌ ${msg}\n`));
114
+ }
115
+ process.exit(1);
116
+ }
117
+ });
118
+ // obs api-key toggle <id> [--json]
119
+ cmd
120
+ .command('toggle <id>')
121
+ .description('Toggle an API key active/inactive')
122
+ .action(async (id) => {
123
+ const isJson = process.env.OBS_JSON_OUTPUT === 'true';
124
+ try {
125
+ const result = await apiClient.toggleApiKey(id);
126
+ if (isJson) {
127
+ outputService.formatJsonOutput(result);
128
+ return;
129
+ }
130
+ const status = result.apiKey?.is_active ? chalk.green('active') : chalk.gray('inactive');
131
+ console.log(chalk.bold(`\n✓ ${result.message || 'Toggled.'} Status: ${status}\n`));
132
+ }
133
+ catch (err) {
134
+ const msg = err.message || 'Failed to toggle API key';
135
+ if (isJson) {
136
+ outputService.formatJsonOutput({ status: 'ERROR', error: { message: msg } });
137
+ }
138
+ else {
139
+ console.error(chalk.red(`\n❌ ${msg}\n`));
140
+ }
141
+ process.exit(1);
142
+ }
143
+ });
144
+ return cmd;
145
+ }
146
+ //# sourceMappingURL=api-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/commands/api-key.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAyHnE,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,cAAc,GAC5B,OAAO,CA4gBT"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AA+HnE,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAkyBT"}