@stackmeter/cli 0.2.0 → 0.2.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.
@@ -18,6 +18,12 @@ const args = process.argv.slice(2);
18
18
  const command = args[0];
19
19
  const target = args[1];
20
20
 
21
+ function getFlag(name) {
22
+ const idx = args.indexOf(name);
23
+ if (idx === -1 || idx + 1 >= args.length) return null;
24
+ return args[idx + 1];
25
+ }
26
+
21
27
  // ── Constants ────────────────────────────────────────────
22
28
 
23
29
  const DEFAULT_BASE_URL = "https://stackmeter.app";
@@ -174,9 +180,12 @@ async function connectOpenClaw() {
174
180
  console.log("");
175
181
 
176
182
  // ── Step 1: Get StackMeter base URL ────────────────
177
- let baseUrl = process.env.STACKMETER_URL
178
- ? process.env.STACKMETER_URL.replace(/\/api\/usage-events\/?$/, "")
179
- : "";
183
+ const flagUrl = getFlag("--url");
184
+ let baseUrl = flagUrl
185
+ ? flagUrl.replace(/\/api\/usage-events\/?$/, "")
186
+ : process.env.STACKMETER_URL
187
+ ? process.env.STACKMETER_URL.replace(/\/api\/usage-events\/?$/, "")
188
+ : "";
180
189
 
181
190
  if (!baseUrl) {
182
191
  baseUrl = await rl.question(
@@ -184,17 +193,17 @@ async function connectOpenClaw() {
184
193
  );
185
194
  if (!baseUrl.trim()) baseUrl = DEFAULT_BASE_URL;
186
195
  } else {
187
- console.log(` Using STACKMETER_URL: ${baseUrl}`);
196
+ console.log(` Using URL: ${baseUrl}`);
188
197
  }
189
198
  baseUrl = baseUrl.replace(/\/+$/, "");
190
199
  const apiUrl = `${baseUrl}/api/usage-events`;
191
200
 
192
201
  // ── Step 2: Get or create tracking token ───────────
193
- let token = process.env.STACKMETER_TOKEN || "";
202
+ let token = getFlag("--token") || process.env.STACKMETER_TOKEN || "";
194
203
 
195
204
  if (token) {
196
205
  console.log(
197
- ` Existing STACKMETER_TOKEN found (sm_...${token.slice(-4)})`
206
+ ` Using token (sm_...${token.slice(-4)})`
198
207
  );
199
208
  } else {
200
209
  console.log("");
@@ -485,7 +494,7 @@ async function selfTest() {
485
494
 
486
495
  // 2/2 — Check OpenClaw session files
487
496
  console.log(" 2/2 Checking OpenClaw sessions...");
488
- const ocHome = process.env.OPENCLAW_HOME || join(homedir(), ".openclaw");
497
+ const ocHome = process.env.OPENCLAW_STATE_DIR || process.env.CLAWDBOT_STATE_DIR || process.env.OPENCLAW_HOME || join(homedir(), ".openclaw");
489
498
  const agentsDir = join(ocHome, "agents");
490
499
 
491
500
  if (existsSync(agentsDir)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackmeter/cli",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Track your SaaS AI costs from the terminal. One-command OpenClaw setup.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,13 @@ function readStackMeterConfig() {
16
16
  }
17
17
 
18
18
  function getOpenClawHome(smConfig = {}) {
19
- return process.env.OPENCLAW_HOME || smConfig.openclawHome || join(homedir(), ".openclaw");
19
+ return (
20
+ process.env.OPENCLAW_STATE_DIR ||
21
+ process.env.CLAWDBOT_STATE_DIR ||
22
+ process.env.OPENCLAW_HOME ||
23
+ smConfig.openclawHome ||
24
+ join(homedir(), ".openclaw")
25
+ );
20
26
  }
21
27
 
22
28
  /* ── Emit usage event to StackMeter ──────────────────────── */