@drakulavich/oura-cli 0.1.0 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -6,6 +6,18 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.1] - 2026-05-13
10
+
11
+ ### Added
12
+ - `oura-cli healthcheck` — emits `{ok, version, latencyMs}` JSON for openclaw
13
+ tool-registry compatibility.
14
+ - `oura-cli manifest` — emits openclaw-tool-registry-compatible package
15
+ manifest (separate from `oura-cli describe` which targets generic agents).
16
+
17
+ ### Fixed
18
+ - Restored compatibility with `tool-registry healthcheck` aggregator that
19
+ expects `oura-cli healthcheck` to return parseable JSON.
20
+
9
21
  ## [0.1.0] - 2026-05-12
10
22
 
11
23
  ### Added
@@ -18,4 +30,5 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
18
30
  - Local SQLite cache at `~/.oura-cli/oura.db`.
19
31
  - Auth via `oura-cli login`, `OURA_TOKEN`, `OURA_TOKEN_PATH`, or `~/.oura-token`.
20
32
 
33
+ [0.1.1]: https://github.com/drakulavich/oura-cli/releases/tag/v0.1.1
21
34
  [0.1.0]: https://github.com/drakulavich/oura-cli/releases/tag/v0.1.0
package/dist/index.js CHANGED
@@ -3739,7 +3739,7 @@ function describeCommand(version) {
3739
3739
  }
3740
3740
 
3741
3741
  // src/index.ts
3742
- var VERSION = "0.1.0";
3742
+ var VERSION = "0.1.1";
3743
3743
  var program2 = new Command;
3744
3744
  program2.name("oura-cli").description("Oura Ring CLI \u2014 query and analyze Oura Ring health data. Designed for humans and agents.").version(VERSION).option("--format <format>", "Output format: table | json (default auto-detect by TTY)").option("--token <pat>", "Inline access token (prefer env vars or `oura-cli login`)").option("--db <path>", "Path to SQLite database file (env: OURA_DB_PATH)").option("--tz <timezone>", "Display timezone (env: OURA_TZ; default auto-detect)");
3745
3745
  program2.addCommand(loginCommand());
@@ -3754,6 +3754,49 @@ program2.addCommand(createApiCommand("workout", "Fetch workout data from Oura AP
3754
3754
  program2.addCommand(syncCommand());
3755
3755
  program2.addCommand(dbCommand());
3756
3756
  program2.addCommand(reportCommand());
3757
+ program2.command("healthcheck").description("Quick local DB health probe (JSON: {ok, version, latencyMs}).").action(() => {
3758
+ const start = Date.now();
3759
+ const globalOpts = program2.opts();
3760
+ let ok = true;
3761
+ let error;
3762
+ try {
3763
+ const db = openDatabase2({ dbPath: globalOpts.db });
3764
+ ensureSchema2(db);
3765
+ db.query("SELECT 1").get();
3766
+ db.close();
3767
+ } catch (err) {
3768
+ ok = false;
3769
+ error = err instanceof Error ? err.message : String(err);
3770
+ }
3771
+ console.log(JSON.stringify({ ok, version: VERSION, latencyMs: Date.now() - start, ...error ? { error } : {} }));
3772
+ });
3773
+ program2.command("manifest").description("Print openclaw-tool-registry-compatible manifest as JSON.").action(() => {
3774
+ console.log(JSON.stringify({
3775
+ id: "oura-cli",
3776
+ version: VERSION,
3777
+ runtime: "bun",
3778
+ bin: "oura-cli",
3779
+ description: "Oura Ring CLI \u2014 query and analyze Oura Ring health data. Designed for humans and agents.",
3780
+ commands: [
3781
+ { name: "login", description: "Save an Oura Personal Access Token.", examples: ["oura-cli login"] },
3782
+ { name: "describe", description: "Emit a machine-readable manifest of commands.", examples: ["oura-cli describe"] },
3783
+ { name: "sleep", description: "Fetch daily sleep scores from Oura API.", examples: ["oura-cli sleep --start 2026-05-01"] },
3784
+ { name: "readiness", description: "Fetch daily readiness scores from Oura API.", examples: ["oura-cli readiness --start 2026-05-01"] },
3785
+ { name: "activity", description: "Fetch daily activity scores from Oura API.", examples: ["oura-cli activity --start 2026-05-01"] },
3786
+ { name: "hr", description: "Fetch heart rate samples from Oura API.", examples: ["oura-cli hr --start 2026-05-01"] },
3787
+ { name: "spo2", description: "Fetch blood oxygen (SpO2) data from Oura API.", examples: ["oura-cli spo2 --start 2026-05-01"] },
3788
+ { name: "stress", description: "Fetch daily stress data from Oura API.", examples: ["oura-cli stress --start 2026-05-01"] },
3789
+ { name: "workout", description: "Fetch workout data from Oura API.", examples: ["oura-cli workout --start 2026-05-01"] },
3790
+ { name: "sync", description: "Sync all Oura collections into the local DB.", examples: ["oura-cli sync"] },
3791
+ { name: "db", description: "Query the local SQLite cache.", examples: ["oura-cli db today"] },
3792
+ { name: "report", description: "Render a weekly or monthly summary report.", examples: ["oura-cli report weekly"] },
3793
+ { name: "healthcheck", description: "Quick local DB health probe.", examples: ["oura-cli healthcheck"] },
3794
+ { name: "manifest", description: "Print openclaw-tool-registry-compatible manifest as JSON.", examples: ["oura-cli manifest"] }
3795
+ ],
3796
+ envVars: ["OURA_TOKEN", "OURA_TOKEN_PATH", "OURA_DB_PATH", "OURA_TZ"],
3797
+ healthcheck: { command: "healthcheck", expects: { ok: "boolean", version: "string", latencyMs: "number" } }
3798
+ }, null, 2));
3799
+ });
3757
3800
  program2.parseAsync(process.argv).catch((err) => {
3758
3801
  const fmt = resolveFormat({
3759
3802
  explicit: program2.opts().format,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drakulavich/oura-cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Oura Ring CLI — query and analyze Oura Ring health data from the command line, designed for humans and AI agents.",
5
5
  "keywords": [
6
6
  "oura",