@odla-ai/cli 0.32.1 → 0.34.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.
- package/README.md +81 -0
- package/dist/bin.cjs +1370 -624
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-L6YTOTWU.js → chunk-LGNNX6AP.js} +1309 -616
- package/dist/chunk-LGNNX6AP.js.map +1 -0
- package/dist/{cli-LYFPBGNH.js → cli-IN6WGMSY.js} +2 -2
- package/dist/index.cjs +1314 -619
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +218 -6
- package/dist/index.d.ts +218 -6
- package/dist/index.js +5 -1
- package/package.json +2 -2
- package/skills/odla/SKILL.md +10 -0
- package/dist/chunk-L6YTOTWU.js.map +0 -1
- /package/dist/{cli-LYFPBGNH.js.map → cli-IN6WGMSY.js.map} +0 -0
package/README.md
CHANGED
|
@@ -186,6 +186,87 @@ jobs, missing canary configuration, stale probes, and partial
|
|
|
186
186
|
socket-reconciliation coverage remain explicit fields. Authentication progress
|
|
187
187
|
is stderr-only, so stdout is a single JSON document.
|
|
188
188
|
|
|
189
|
+
Repository-controlled SLO monitoring lives under `o11y.monitoring`. Objectives
|
|
190
|
+
can consume Kitesurf routes or bounded observations of existing o11y error,
|
|
191
|
+
latency, and protected-canary signals. A minimal route policy detects both
|
|
192
|
+
short outages and sustained error-budget burn, and sends incident and digest
|
|
193
|
+
email:
|
|
194
|
+
|
|
195
|
+
```js
|
|
196
|
+
export default {
|
|
197
|
+
services: ["o11y"],
|
|
198
|
+
links: { prod: "https://example.com" },
|
|
199
|
+
o11y: {
|
|
200
|
+
monitoring: {
|
|
201
|
+
probes: [{
|
|
202
|
+
id: "home", route: "/", envs: ["prod"], every: "5m",
|
|
203
|
+
expect: { status: 200, titleIncludes: "Example", textIncludes: ["Welcome"] },
|
|
204
|
+
}],
|
|
205
|
+
slos: [{
|
|
206
|
+
id: "availability", name: "Public availability",
|
|
207
|
+
indicator: { type: "probe-success", probes: ["home"] },
|
|
208
|
+
target: 0.999, window: "28d",
|
|
209
|
+
alerts: {
|
|
210
|
+
spike: { badChecks: 2, withinChecks: 3, recoverAfter: 2 },
|
|
211
|
+
trend: { burnRate: 1, shortWindow: "6h", longWindow: "3d", minBadChecks: 2 },
|
|
212
|
+
},
|
|
213
|
+
}],
|
|
214
|
+
notifications: {
|
|
215
|
+
prod: {
|
|
216
|
+
email: ["oncall@example.com"], timezone: "America/Costa_Rica",
|
|
217
|
+
daily: "08:00", weekly: { day: "monday", at: "08:00" },
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
For a service-performance objective, omit `probes` and select an existing o11y
|
|
226
|
+
metric. The comparator describes a successful observation, so this example
|
|
227
|
+
requires each five-minute request p95 to be at most 500ms:
|
|
228
|
+
|
|
229
|
+
```js
|
|
230
|
+
slos: [{
|
|
231
|
+
id: "request-latency", name: "Request p95 at or below 500ms",
|
|
232
|
+
indicator: {
|
|
233
|
+
type: "o11y-metric", metric: "latency_p95", comparator: "lte",
|
|
234
|
+
threshold: 500, every: "5m", observationWindow: "5m",
|
|
235
|
+
},
|
|
236
|
+
target: 0.99, window: "28d",
|
|
237
|
+
}]
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
`error_rate`, `latency_p95`, `synthetic_success`, and
|
|
241
|
+
`synthetic_publish_to_visible` are supported. The checked-in odla-db first
|
|
242
|
+
rollout is `ops/monitoring/odla-db.config.mjs`:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
npx odla-ai monitor plan --config ops/monitoring/odla-db.config.mjs --env prod --json
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Preview and apply the normalized policy, then inspect or exercise it through
|
|
249
|
+
stable JSON:
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npx odla-ai monitor plan --env prod --json
|
|
253
|
+
npx odla-ai monitor apply --env prod --yes --json
|
|
254
|
+
npx odla-ai monitor status --app <appId> --env prod --json
|
|
255
|
+
npx odla-ai monitor run home --app <appId> --env prod --json
|
|
256
|
+
npx odla-ai monitor incidents --app <appId> --env prod --runs --json
|
|
257
|
+
npx odla-ai monitor report --app <appId> --env prod --period weekly --json
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Only scheduled `good` and `bad` outcomes enter the application SLO denominator.
|
|
261
|
+
Kitesurf failures, missing Analytics Engine evidence, stale canaries, query
|
|
262
|
+
failures, and scheduler gaps are retained as `monitor_error`/`missed` and
|
|
263
|
+
degrade monitoring health separately, so no traffic or a broken monitor cannot
|
|
264
|
+
manufacture success or downtime. Probe responses retain bounded metadata only;
|
|
265
|
+
page content and accessibility trees are never returned by the CLI or stored.
|
|
266
|
+
Each applied desired-state revision starts a fresh SLO event series and closes
|
|
267
|
+
open incidents as `config_revision_changed`; results produced by different
|
|
268
|
+
thresholds, routes, assertions, or notification policy are never blended.
|
|
269
|
+
|
|
189
270
|
For platform-wide operations, `platform status --json` requests only the
|
|
190
271
|
short-lived, admin-approved `platform:status:read` capability and reads the
|
|
191
272
|
same `odla.platform-status/v1` snapshot as Studio. It works outside a project
|