devhelm 0.1.4 → 0.1.5

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 (95) hide show
  1. package/dist/commands/alert-channels/test.js +2 -5
  2. package/dist/commands/alert-channels/test.js.map +1 -1
  3. package/dist/commands/api-keys/revoke.js +1 -2
  4. package/dist/commands/api-keys/revoke.js.map +1 -1
  5. package/dist/commands/auth/login.js +7 -12
  6. package/dist/commands/auth/login.js.map +1 -1
  7. package/dist/commands/auth/me.js +6 -8
  8. package/dist/commands/auth/me.js.map +1 -1
  9. package/dist/commands/data/services/status.js +2 -5
  10. package/dist/commands/data/services/status.js.map +1 -1
  11. package/dist/commands/data/services/uptime.js +5 -8
  12. package/dist/commands/data/services/uptime.js.map +1 -1
  13. package/dist/commands/dependencies/track.js +2 -5
  14. package/dist/commands/dependencies/track.js.map +1 -1
  15. package/dist/commands/deploy/force-unlock.js +57 -0
  16. package/dist/commands/deploy/force-unlock.js.map +1 -0
  17. package/dist/commands/deploy/index.js +234 -0
  18. package/dist/commands/deploy/index.js.map +1 -0
  19. package/dist/commands/incidents/resolve.js +2 -7
  20. package/dist/commands/incidents/resolve.js.map +1 -1
  21. package/dist/commands/init.js +102 -27
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/monitors/pause.js +2 -5
  24. package/dist/commands/monitors/pause.js.map +1 -1
  25. package/dist/commands/monitors/results.js +7 -10
  26. package/dist/commands/monitors/results.js.map +1 -1
  27. package/dist/commands/monitors/resume.js +2 -5
  28. package/dist/commands/monitors/resume.js.map +1 -1
  29. package/dist/commands/monitors/test.js +2 -5
  30. package/dist/commands/monitors/test.js.map +1 -1
  31. package/dist/commands/monitors/versions/get.js +22 -0
  32. package/dist/commands/monitors/versions/get.js.map +1 -0
  33. package/dist/commands/monitors/versions/list.js +29 -0
  34. package/dist/commands/monitors/versions/list.js.map +1 -0
  35. package/dist/commands/notification-policies/test.js +1 -2
  36. package/dist/commands/notification-policies/test.js.map +1 -1
  37. package/dist/commands/plan.js +96 -0
  38. package/dist/commands/plan.js.map +1 -0
  39. package/dist/commands/status.js +4 -6
  40. package/dist/commands/status.js.map +1 -1
  41. package/dist/commands/validate.js +79 -39
  42. package/dist/commands/validate.js.map +1 -1
  43. package/dist/commands/webhooks/test.js +2 -5
  44. package/dist/commands/webhooks/test.js.map +1 -1
  45. package/dist/lib/api-client.js +38 -4
  46. package/dist/lib/api-client.js.map +1 -1
  47. package/dist/lib/auth.js +6 -1
  48. package/dist/lib/auth.js.map +1 -1
  49. package/dist/lib/base-command.js +3 -0
  50. package/dist/lib/base-command.js.map +1 -1
  51. package/dist/lib/crud-commands.js +12 -23
  52. package/dist/lib/crud-commands.js.map +1 -1
  53. package/dist/lib/descriptions.generated.js +7 -3
  54. package/dist/lib/descriptions.generated.js.map +1 -1
  55. package/dist/lib/errors.js +2 -13
  56. package/dist/lib/errors.js.map +1 -1
  57. package/dist/lib/output.js.map +1 -1
  58. package/dist/lib/resource-types.js +2 -0
  59. package/dist/lib/resource-types.js.map +1 -0
  60. package/dist/lib/resources.js +24 -7
  61. package/dist/lib/resources.js.map +1 -1
  62. package/dist/lib/typed-api.js +15 -0
  63. package/dist/lib/typed-api.js.map +1 -0
  64. package/dist/lib/yaml/applier.js +117 -0
  65. package/dist/lib/yaml/applier.js.map +1 -0
  66. package/dist/lib/yaml/differ.js +166 -0
  67. package/dist/lib/yaml/differ.js.map +1 -0
  68. package/dist/lib/yaml/entitlements.js +69 -0
  69. package/dist/lib/yaml/entitlements.js.map +1 -0
  70. package/dist/lib/yaml/handlers.js +480 -0
  71. package/dist/lib/yaml/handlers.js.map +1 -0
  72. package/dist/lib/yaml/index.js +10 -0
  73. package/dist/lib/yaml/index.js.map +1 -0
  74. package/dist/lib/yaml/interpolation.js +77 -0
  75. package/dist/lib/yaml/interpolation.js.map +1 -0
  76. package/dist/lib/yaml/parser.js +140 -0
  77. package/dist/lib/yaml/parser.js.map +1 -0
  78. package/dist/lib/yaml/resolver.js +54 -0
  79. package/dist/lib/yaml/resolver.js.map +1 -0
  80. package/dist/lib/yaml/schema.js +42 -0
  81. package/dist/lib/yaml/schema.js.map +1 -0
  82. package/dist/lib/yaml/state.js +43 -0
  83. package/dist/lib/yaml/state.js.map +1 -0
  84. package/dist/lib/yaml/transform.js +182 -0
  85. package/dist/lib/yaml/transform.js.map +1 -0
  86. package/dist/lib/yaml/types.js +7 -0
  87. package/dist/lib/yaml/types.js.map +1 -0
  88. package/dist/lib/yaml/validator.js +433 -0
  89. package/dist/lib/yaml/validator.js.map +1 -0
  90. package/oclif.manifest.json +535 -264
  91. package/package.json +3 -1
  92. package/dist/commands/incidents/delete.js +0 -4
  93. package/dist/commands/incidents/delete.js.map +0 -1
  94. package/dist/commands/incidents/update.js +0 -4
  95. package/dist/commands/incidents/update.js.map +0 -1
@@ -1,42 +1,111 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
2
  import { existsSync, writeFileSync } from 'node:fs';
3
- const TEMPLATE = `# devhelm.yml — DevHelm monitor configuration
3
+ const TEMPLATE = `# devhelm.yml — DevHelm monitoring-as-code configuration
4
4
  # Docs: https://docs.devhelm.io/cli/configuration
5
+ # Run "devhelm validate" to check, "devhelm deploy" to apply.
6
+ version: "1"
7
+
8
+ # defaults:
9
+ # monitors:
10
+ # frequency: 60
11
+ # regions: [us-east, eu-west]
12
+ # enabled: true
13
+
14
+ tags:
15
+ - name: production
16
+ color: "#EF4444"
17
+
18
+ # environments:
19
+ # - name: Production
20
+ # slug: production
21
+ # isDefault: true
22
+
23
+ # secrets:
24
+ # - key: bearer-token
25
+ # value: \${API_TOKEN}
26
+
27
+ alertChannels:
28
+ - name: ops-slack
29
+ type: slack
30
+ config:
31
+ webhookUrl: \${SLACK_WEBHOOK_URL:-https://hooks.slack.com/services/REPLACE_ME}
32
+
33
+ # notificationPolicies:
34
+ # - name: critical-escalation
35
+ # enabled: true
36
+ # priority: 1
37
+ # escalation:
38
+ # steps:
39
+ # - channels: [ops-slack]
40
+ # delayMinutes: 0
41
+
42
+ # webhooks:
43
+ # - url: https://hooks.example.com/devhelm
44
+ # events: [monitor.down, monitor.recovered]
45
+
46
+ # resourceGroups:
47
+ # - name: API Services
48
+ # monitors: [API Health Check]
5
49
 
6
50
  monitors:
7
51
  - name: Website Health Check
8
52
  type: HTTP
9
- url: https://example.com
10
- interval: 60
11
- regions:
12
- - us-east-1
13
- - eu-west-1
53
+ config:
54
+ url: https://example.com
55
+ method: GET
56
+ verifyTls: true
57
+ frequency: 60
58
+ regions: [us-east, eu-west]
59
+ tags: [production]
60
+ alertChannels: [ops-slack]
14
61
  assertions:
15
- - type: STATUS_CODE
16
- operator: EQUALS
17
- value: "200"
18
- - type: RESPONSE_TIME
19
- operator: LESS_THAN
20
- value: "2000"
21
- alertChannels:
22
- - default-slack
23
-
24
- # - name: API Endpoint
62
+ - type: StatusCodeAssertion
63
+ config:
64
+ expected: "200"
65
+ operator: equals
66
+ severity: fail
67
+ - type: ResponseTimeAssertion
68
+ config:
69
+ thresholdMs: 2000
70
+ severity: warn
71
+ - type: SslExpiryAssertion
72
+ config:
73
+ minDaysRemaining: 30
74
+ severity: warn
75
+
76
+ # - name: API Health Check
25
77
  # type: HTTP
26
- # url: https://api.example.com/health
27
- # method: GET
28
- # interval: 30
29
- # timeout: 10000
78
+ # config:
79
+ # url: https://api.example.com/health
80
+ # method: GET
81
+ # frequency: 30
30
82
 
31
83
  # - name: DNS Check
32
84
  # type: DNS
33
- # url: example.com
34
- # interval: 300
85
+ # config:
86
+ # hostname: example.com
87
+ # recordTypes: [A, AAAA, MX]
88
+ # frequency: 300
89
+ # assertions:
90
+ # - type: DnsResolvesAssertion
91
+ # severity: fail
35
92
 
36
- # - name: Heartbeat
93
+ # - name: Heartbeat Worker
37
94
  # type: HEARTBEAT
38
- # interval: 120
39
- # grace: 300
95
+ # config:
96
+ # expectedInterval: 120
97
+ # gracePeriod: 300
98
+
99
+ # - name: MCP Assistant
100
+ # type: MCP_SERVER
101
+ # config:
102
+ # command: npx
103
+ # args: ["-y", "@company/mcp-server"]
104
+ # frequency: 300
105
+
106
+ # dependencies:
107
+ # - service: github
108
+ # alertSensitivity: INCIDENTS_ONLY
40
109
  `;
41
110
  export default class Init extends Command {
42
111
  static description = 'Create a starter devhelm.yml configuration file';
@@ -53,9 +122,15 @@ export default class Init extends Command {
53
122
  if (existsSync(flags.path) && !flags.force) {
54
123
  this.error(`${flags.path} already exists. Use --force to overwrite.`, { exit: 1 });
55
124
  }
56
- writeFileSync(flags.path, TEMPLATE);
125
+ try {
126
+ writeFileSync(flags.path, TEMPLATE);
127
+ }
128
+ catch (err) {
129
+ this.error(`Failed to write ${flags.path}: ${err instanceof Error ? err.message : String(err)}`, { exit: 1 });
130
+ }
57
131
  this.log(`Created ${flags.path}`);
58
- this.log('Edit the file, then run `devhelm validate` to check it.');
132
+ this.log('Edit the file, then run "devhelm validate" to check it.');
133
+ this.log('When ready, run "devhelm deploy" to apply it to your DevHelm account.');
59
134
  }
60
135
  }
61
136
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAEjD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqChB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,MAAM,CAAC,WAAW,GAAG,iDAAiD,CAAA;IAEtE,MAAM,CAAC,QAAQ,GAAG;QAChB,wBAAwB;QACxB,8CAA8C;KAC/C,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAC,CAAC;QAC7E,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,yBAAyB,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC;KAC/E,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,4CAA4C,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAA;QAClF,CAAC;QAED,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;IACrE,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAEjD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GhB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,MAAM,CAAC,WAAW,GAAG,iDAAiD,CAAA;IAEtE,MAAM,CAAC,QAAQ,GAAG;QAChB,wBAAwB;QACxB,8CAA8C;KAC/C,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAC,CAAC;QAC7E,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,yBAAyB,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC;KAC/E,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,4CAA4C,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAA;QAClF,CAAC;QAED,IAAI,CAAC;YACH,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAA;QAC7G,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;QACnE,IAAI,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;IACnF,CAAC"}
@@ -9,11 +9,8 @@ export default class MonitorsPause extends Command {
9
9
  async run() {
10
10
  const { args, flags } = await this.parse(MonitorsPause);
11
11
  const client = buildClient(flags);
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- const resp = await checkedFetch(client.POST(`/api/v1/monitors/${args.id}/pause`, {}));
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- const monitor = resp?.data ?? resp;
16
- this.log(`Monitor '${monitor.name}' paused.`);
12
+ const resp = await checkedFetch(client.POST('/api/v1/monitors/{id}/pause', { params: { path: { id: args.id } } }));
13
+ this.log(`Monitor '${resp.data?.name}' paused.`);
17
14
  }
18
15
  }
19
16
  //# sourceMappingURL=pause.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../src/commands/monitors/pause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAC,WAAW,GAAG,iBAAiB,CAAA;IACtC,MAAM,CAAC,QAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA;IACzD,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,8DAA8D;QAC9D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,EAAE,QAAe,EAAE,EAAS,CAAC,CAAC,CAAA;QACnG,8DAA8D;QAC9D,MAAM,OAAO,GAAI,IAAY,EAAE,IAAI,IAAI,IAAI,CAAA;QAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,WAAW,CAAC,CAAA;IAC/C,CAAC"}
1
+ {"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../src/commands/monitors/pause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAC,WAAW,GAAG,iBAAiB,CAAA;IACtC,MAAM,CAAC,QAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAA;IACzD,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAC,MAAM,EAAE,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,EAAC,EAAC,CAAC,CAAC,CAAA;QAC5G,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,CAAA;IAClD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Command, Args, Flags } from '@oclif/core';
2
2
  import { globalFlags, buildClient, display } from '../../lib/base-command.js';
3
- import { checkedFetch } from '../../lib/api-client.js';
3
+ import { apiGet } from '../../lib/api-client.js';
4
4
  export default class MonitorsResults extends Command {
5
5
  static description = 'Show recent check results for a monitor';
6
6
  static examples = ['<%= config.bin %> monitors results 42'];
@@ -12,17 +12,14 @@ export default class MonitorsResults extends Command {
12
12
  async run() {
13
13
  const { args, flags } = await this.parse(MonitorsResults);
14
14
  const client = buildClient(flags);
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- const resp = await checkedFetch(client.GET(`/api/v1/monitors/${args.id}/results?limit=${flags.limit}`, {}));
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- const items = resp?.data ?? resp;
19
- display(this, items, flags.output, [
15
+ const resp = await apiGet(client, `/api/v1/monitors/${args.id}/results`, { query: { limit: flags.limit } });
16
+ display(this, resp.data ?? [], flags.output, [
20
17
  { header: 'ID', get: (r) => String(r.id ?? '') },
21
- { header: 'STATUS', get: (r) => String(r.status ?? '') },
22
- { header: 'RESPONSE TIME', get: (r) => String(r.responseTime ?? '') },
23
- { header: 'CODE', get: (r) => String(r.statusCode ?? '') },
18
+ { header: 'PASSED', get: (r) => (r.passed == null ? '' : r.passed ? 'Pass' : 'Fail') },
19
+ { header: 'RESPONSE TIME', get: (r) => (r.responseTimeMs != null ? `${r.responseTimeMs}ms` : '') },
20
+ { header: 'CODE', get: (r) => String(r.details?.statusCode ?? '') },
24
21
  { header: 'REGION', get: (r) => String(r.region ?? '') },
25
- { header: 'CHECKED AT', get: (r) => String(r.checkedAt ?? '') },
22
+ { header: 'TIMESTAMP', get: (r) => String(r.timestamp ?? '') },
26
23
  ]);
27
24
  }
28
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"results.js","sourceRoot":"","sources":["../../../src/commands/monitors/results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAChD,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,MAAM,CAAC,WAAW,GAAG,yCAAyC,CAAA;IAC9D,MAAM,CAAC,QAAQ,GAAG,CAAC,uCAAuC,CAAC,CAAA;IAC3D,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,WAAW;QACd,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC;KACtE,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,8DAA8D;QAC9D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,EAAE,kBAAkB,KAAK,CAAC,KAAK,EAAS,EAAE,EAAS,CAAC,CAAC,CAAA;QACzH,8DAA8D;QAC9D,MAAM,KAAK,GAAI,IAAY,EAAE,IAAI,IAAI,IAAI,CAAA;QACzC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;YACjC,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC;YACvE,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAC;YAC/E,EAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,EAAC;YAC5F,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAC;YACjF,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAC;YAC/E,EAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAC;SACvF,CAAC,CAAA;IACJ,CAAC"}
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../../src/commands/monitors/results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAChD,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAA;AAK9C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,MAAM,CAAC,WAAW,GAAG,yCAAyC,CAAA;IAC9D,MAAM,CAAC,QAAQ,GAAG,CAAC,uCAAuC,CAAC,CAAA;IAC3D,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,WAAW;QACd,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC;KACtE,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,MAAM,EACN,oBAAoB,IAAI,CAAC,EAAE,UAAU,EACrC,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAC,EAAC,CAC9B,CAAA;QACD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;YAC3C,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC;YAC9C,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC;YACpF,EAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC;YAChG,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAC;YACjE,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAC;YACtD,EAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAC;SAC7D,CAAC,CAAA;IACJ,CAAC"}
@@ -9,11 +9,8 @@ export default class MonitorsResume extends Command {
9
9
  async run() {
10
10
  const { args, flags } = await this.parse(MonitorsResume);
11
11
  const client = buildClient(flags);
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- const resp = await checkedFetch(client.POST(`/api/v1/monitors/${args.id}/resume`, {}));
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- const monitor = resp?.data ?? resp;
16
- this.log(`Monitor '${monitor.name}' resumed.`);
12
+ const resp = await checkedFetch(client.POST('/api/v1/monitors/{id}/resume', { params: { path: { id: args.id } } }));
13
+ this.log(`Monitor '${resp.data?.name}' resumed.`);
17
14
  }
18
15
  }
19
16
  //# sourceMappingURL=resume.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/commands/monitors/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,MAAM,CAAC,WAAW,GAAG,yBAAyB,CAAA;IAC9C,MAAM,CAAC,QAAQ,GAAG,CAAC,sCAAsC,CAAC,CAAA;IAC1D,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,8DAA8D;QAC9D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,EAAE,SAAgB,EAAE,EAAS,CAAC,CAAC,CAAA;QACpG,8DAA8D;QAC9D,MAAM,OAAO,GAAI,IAAY,EAAE,IAAI,IAAI,IAAI,CAAA;QAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,YAAY,CAAC,CAAA;IAChD,CAAC"}
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/commands/monitors/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,MAAM,CAAC,WAAW,GAAG,yBAAyB,CAAA;IAC9C,MAAM,CAAC,QAAQ,GAAG,CAAC,sCAAsC,CAAC,CAAA;IAC1D,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAC,MAAM,EAAE,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,EAAC,EAAC,CAAC,CAAC,CAAA;QAC7G,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,CAAA;IACnD,CAAC"}
@@ -10,11 +10,8 @@ export default class MonitorsTest extends Command {
10
10
  const { args, flags } = await this.parse(MonitorsTest);
11
11
  const client = buildClient(flags);
12
12
  this.log('Running test...');
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- const resp = await checkedFetch(client.POST(`/api/v1/monitors/${args.id}/test`, {}));
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- const result = resp?.data ?? resp;
17
- display(this, result, flags.output);
13
+ const resp = await checkedFetch(client.POST('/api/v1/monitors/{id}/test', { params: { path: { id: args.id } } }));
14
+ display(this, resp.data ?? resp, flags.output);
18
15
  }
19
16
  }
20
17
  //# sourceMappingURL=test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/monitors/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,WAAW,GAAG,kCAAkC,CAAA;IACvD,MAAM,CAAC,QAAQ,GAAG,CAAC,oCAAoC,CAAC,CAAA;IACxD,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC3B,8DAA8D;QAC9D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,EAAE,OAAc,EAAE,EAAS,CAAC,CAAC,CAAA;QAClG,8DAA8D;QAC9D,MAAM,MAAM,GAAI,IAAY,EAAE,IAAI,IAAI,IAAI,CAAA;QAC1C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/monitors/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,WAAW,GAAG,kCAAkC,CAAA;IACvD,MAAM,CAAC,QAAQ,GAAG,CAAC,oCAAoC,CAAC,CAAA;IACxD,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAC,MAAM,EAAE,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,EAAC,EAAC,CAAC,CAAC,CAAA;QAC3G,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Command, Args } from '@oclif/core';
2
+ import { globalFlags, buildClient, display } from '../../../lib/base-command.js';
3
+ import { apiGet } from '../../../lib/api-client.js';
4
+ export default class MonitorsVersionsGet extends Command {
5
+ static description = 'Get a specific version snapshot for a monitor';
6
+ static examples = [
7
+ '<%= config.bin %> monitors versions get 42 3',
8
+ '<%= config.bin %> monitors versions get 42 3 -o json',
9
+ ];
10
+ static args = {
11
+ id: Args.string({ description: 'Monitor ID', required: true }),
12
+ version: Args.integer({ description: 'Version number', required: true }),
13
+ };
14
+ static flags = { ...globalFlags };
15
+ async run() {
16
+ const { args, flags } = await this.parse(MonitorsVersionsGet);
17
+ const client = buildClient(flags);
18
+ const resp = await apiGet(client, `/api/v1/monitors/${args.id}/versions/${args.version}`);
19
+ display(this, resp.data ?? resp, flags.output);
20
+ }
21
+ }
22
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/monitors/versions/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,8BAA8B,CAAA;AAC9E,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAA;AAKjD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,OAAO;IACtD,MAAM,CAAC,WAAW,GAAG,+CAA+C,CAAA;IACpE,MAAM,CAAC,QAAQ,GAAG;QAChB,8CAA8C;QAC9C,sDAAsD;KACvD,CAAA;IAED,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;QAC5D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KACvE,CAAA;IAED,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,MAAM,EACN,oBAAoB,IAAI,CAAC,EAAE,aAAa,IAAI,CAAC,OAAO,EAAE,CACvD,CAAA;QACD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { globalFlags, buildClient, display } from '../../../lib/base-command.js';
3
+ import { apiGet } from '../../../lib/api-client.js';
4
+ export default class MonitorsVersionsList extends Command {
5
+ static description = 'List version history for a monitor';
6
+ static examples = [
7
+ '<%= config.bin %> monitors versions list 42',
8
+ '<%= config.bin %> monitors versions list 42 --limit 5',
9
+ '<%= config.bin %> monitors versions list 42 -o json',
10
+ ];
11
+ static args = { id: Args.string({ description: 'Monitor ID', required: true }) };
12
+ static flags = {
13
+ ...globalFlags,
14
+ limit: Flags.integer({ description: 'Number of versions to show', default: 20 }),
15
+ };
16
+ async run() {
17
+ const { args, flags } = await this.parse(MonitorsVersionsList);
18
+ const client = buildClient(flags);
19
+ const resp = await apiGet(client, `/api/v1/monitors/${args.id}/versions`, { query: { size: flags.limit } });
20
+ display(this, resp.data ?? [], flags.output, [
21
+ { header: 'VERSION', get: (r) => String(r.version ?? '') },
22
+ { header: 'CHANGED VIA', get: (r) => String(r.changedVia ?? '') },
23
+ { header: 'SUMMARY', get: (r) => r.changeSummary ?? '' },
24
+ { header: 'CREATED AT', get: (r) => String(r.createdAt ?? '') },
25
+ { header: 'ID', get: (r) => String(r.id ?? '') },
26
+ ]);
27
+ }
28
+ }
29
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/monitors/versions/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAChD,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,8BAA8B,CAAA;AAC9E,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAA;AAKjD,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,OAAO;IACvD,MAAM,CAAC,WAAW,GAAG,oCAAoC,CAAA;IACzD,MAAM,CAAC,QAAQ,GAAG;QAChB,6CAA6C;QAC7C,uDAAuD;QACvD,qDAAqD;KACtD,CAAA;IAED,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC5E,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,WAAW;QACd,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,4BAA4B,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC;KAC/E,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,MAAM,EACN,oBAAoB,IAAI,CAAC,EAAE,WAAW,EACtC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAC,EAAC,CAC7B,CAAA;QACD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;YAC3C,EAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAC;YACxD,EAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAC;YAC/D,EAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,EAAC;YACtD,EAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAC;YAC7D,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC;SAC/C,CAAC,CAAA;IACJ,CAAC"}
@@ -9,8 +9,7 @@ export default class NotificationPoliciesTest extends Command {
9
9
  async run() {
10
10
  const { args, flags } = await this.parse(NotificationPoliciesTest);
11
11
  const client = buildClient(flags);
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- await checkedFetch(client.POST(`/api/v1/notification-policies/${args.id}/test`, {}));
12
+ await checkedFetch(client.POST('/api/v1/notification-policies/{id}/test', { params: { path: { id: args.id } }, body: {} }));
14
13
  this.log('Test dispatch sent.');
15
14
  }
16
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/notification-policies/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,OAAO;IAC3D,MAAM,CAAC,WAAW,GAAG,4BAA4B,CAAA;IACjD,MAAM,CAAC,QAAQ,GAAG,CAAC,mDAAmD,CAAC,CAAA;IACvE,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC3E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,8DAA8D;QAC9D,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,EAAE,OAAc,EAAE,EAAS,CAAC,CAAC,CAAA;QAClG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACjC,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/notification-policies/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,OAAO;IAC3D,MAAM,CAAC,WAAW,GAAG,4BAA4B,CAAA;IACjD,MAAM,CAAC,QAAQ,GAAG,CAAC,mDAAmD,CAAC,CAAA;IACvE,MAAM,CAAC,IAAI,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,EAAC,CAAA;IAC3E,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAC,MAAM,EAAE,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,EAAC,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC,CAAA;QACrH,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACjC,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { createApiClient } from '../lib/api-client.js';
3
+ import { resolveToken, resolveApiUrl } from '../lib/auth.js';
4
+ import { EXIT_CODES } from '../lib/errors.js';
5
+ import { loadConfig, validate, fetchAllRefs, diff, formatPlan, changesetToJson } from '../lib/yaml/index.js';
6
+ import { checkEntitlements, formatEntitlementWarnings } from '../lib/yaml/entitlements.js';
7
+ export default class Plan extends Command {
8
+ static description = 'Show what "devhelm deploy" would change without applying';
9
+ static examples = [
10
+ '<%= config.bin %> plan',
11
+ '<%= config.bin %> plan -f monitors.yml',
12
+ '<%= config.bin %> plan --prune',
13
+ '<%= config.bin %> plan --prune-all',
14
+ '<%= config.bin %> plan --detailed-exitcode',
15
+ '<%= config.bin %> plan -o json',
16
+ ];
17
+ static flags = {
18
+ file: Flags.string({
19
+ char: 'f',
20
+ description: 'Config file or directory (can be specified multiple times)',
21
+ multiple: true,
22
+ default: ['devhelm.yml'],
23
+ }),
24
+ prune: Flags.boolean({
25
+ description: 'Include deletions of CLI-managed resources not in config',
26
+ default: false,
27
+ }),
28
+ 'prune-all': Flags.boolean({
29
+ description: 'Include deletions of ALL resources not in config, including those not managed by the CLI',
30
+ default: false,
31
+ }),
32
+ 'detailed-exitcode': Flags.boolean({
33
+ description: 'Return exit code 10 if plan has changes (for CI)',
34
+ default: false,
35
+ }),
36
+ output: Flags.string({
37
+ char: 'o',
38
+ description: 'Output format (text or json)',
39
+ options: ['text', 'json'],
40
+ default: 'text',
41
+ }),
42
+ 'api-url': Flags.string({ description: 'Override API base URL' }),
43
+ 'api-token': Flags.string({ description: 'Override API token' }),
44
+ verbose: Flags.boolean({ char: 'v', description: 'Show verbose output', default: false }),
45
+ };
46
+ async run() {
47
+ const { flags } = await this.parse(Plan);
48
+ let config;
49
+ try {
50
+ config = loadConfig(flags.file);
51
+ }
52
+ catch (err) {
53
+ this.error(err.message, { exit: 1 });
54
+ }
55
+ const result = validate(config);
56
+ if (result.errors.length > 0) {
57
+ this.log(`\nValidation failed: ${result.errors.length} error(s)\n`);
58
+ for (const e of result.errors) {
59
+ this.log(` ✗ ${e.path}: ${e.message}`);
60
+ }
61
+ this.error('Fix validation errors first', { exit: 4 });
62
+ }
63
+ const token = flags['api-token'] ?? resolveToken();
64
+ if (!token) {
65
+ this.error('No API token configured. Run "devhelm auth login" or set DEVHELM_API_TOKEN.', { exit: 1 });
66
+ }
67
+ const client = createApiClient({
68
+ baseUrl: flags['api-url'] ?? resolveApiUrl(),
69
+ token,
70
+ verbose: flags.verbose,
71
+ });
72
+ if (flags.output !== 'json')
73
+ this.log('Fetching current state from API...');
74
+ const refs = await fetchAllRefs(client);
75
+ const changeset = diff(config, refs, { prune: flags.prune || flags['prune-all'], pruneAll: flags['prune-all'] });
76
+ const entitlementCheck = await checkEntitlements(client, changeset);
77
+ if (flags.output === 'json') {
78
+ this.log(JSON.stringify(changesetToJson(changeset), null, 2));
79
+ }
80
+ else {
81
+ if (entitlementCheck) {
82
+ this.log(entitlementCheck.header);
83
+ }
84
+ this.log(`\n${formatPlan(changeset)}`);
85
+ if (entitlementCheck && entitlementCheck.warnings.length > 0) {
86
+ this.log('');
87
+ this.log(formatEntitlementWarnings(entitlementCheck.warnings));
88
+ }
89
+ }
90
+ const total = changeset.creates.length + changeset.updates.length + changeset.deletes.length + changeset.memberships.length;
91
+ if (total > 0 && flags['detailed-exitcode']) {
92
+ this.exit(EXIT_CODES.CHANGES_PENDING);
93
+ }
94
+ }
95
+ }
96
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Command } from '@oclif/core';
2
2
  import { globalFlags, buildClient } from '../lib/base-command.js';
3
- import { checkedFetch } from '../lib/api-client.js';
3
+ import { apiGet } from '../lib/api-client.js';
4
4
  import { formatOutput } from '../lib/output.js';
5
5
  export default class Status extends Command {
6
6
  static description = 'Show dashboard overview';
@@ -9,10 +9,8 @@ export default class Status extends Command {
9
9
  async run() {
10
10
  const { flags } = await this.parse(Status);
11
11
  const client = buildClient(flags);
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- const resp = await checkedFetch(client.GET('/api/v1/dashboard/overview', {}));
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- const overview = resp?.data ?? resp;
12
+ const resp = await apiGet(client, '/api/v1/dashboard/overview');
13
+ const overview = resp.data ?? {};
16
14
  const format = flags.output;
17
15
  if (format === 'json' || format === 'yaml') {
18
16
  this.log(formatOutput(overview, format));
@@ -28,7 +26,7 @@ export default class Status extends Command {
28
26
  this.log(` Uptime (24h): ${u24}% Uptime (30d): ${u30}%`);
29
27
  this.log('');
30
28
  this.log(' Incidents');
31
- this.log(` Active: ${i.active ?? 0} Resolved today: ${i.resolvedToday ?? 0} MTTR (30d): ${i.mttr30d != null ? `${Math.round(i.mttr30d / 60)}m` : '–'}`);
29
+ this.log(` Active: ${i.active ?? 0} Resolved today: ${i.resolvedToday ?? 0} MTTR (30d): ${i.mttr30d != null ? `${Math.round(Number(i.mttr30d) / 60)}m` : '–'}`);
32
30
  this.log('');
33
31
  }
34
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAA;AACnC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAe,MAAM,kBAAkB,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACzC,MAAM,CAAC,WAAW,GAAG,yBAAyB,CAAA;IAC9C,MAAM,CAAC,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAA;IAC9C,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,8DAA8D;QAC9D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,4BAAmC,EAAE,EAAS,CAAC,CAAC,CAAA;QAC3F,8DAA8D;QAC9D,MAAM,QAAQ,GAAI,IAAY,EAAE,IAAI,IAAI,IAAI,CAAA;QAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAsB,CAAA;QAC3C,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QAED,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACZ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9I,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAC5E,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAC5E,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,sBAAsB,GAAG,GAAG,CAAC,CAAA;QAC9D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACZ,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QAChK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACd,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAA;AACnC,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAC,YAAY,EAAe,MAAM,kBAAkB,CAAA;AAK3D,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACzC,MAAM,CAAC,WAAW,GAAG,yBAAyB,CAAA;IAC9C,MAAM,CAAC,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAA;IAC9C,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,WAAW,EAAC,CAAA;IAE/B,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAgC,MAAM,EAAE,4BAA4B,CAAC,CAAA;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;QAEhC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAsB,CAAA;QAC3C,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QAED,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACZ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9I,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAC5E,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAC5E,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,sBAAsB,GAAG,GAAG,CAAC,CAAA;QAC9D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACZ,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QACxK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACd,CAAC"}