vibeusage 0.2.22 → 0.2.23

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeusage",
3
- "version": "0.2.22",
3
+ "version": "0.2.23",
4
4
  "description": "Codex CLI token usage tracker (macOS-first, notify-driven).",
5
5
  "license": "MIT",
6
6
  "bin": {
package/src/cli.js CHANGED
@@ -4,7 +4,6 @@ const { cmdStatus } = require("./commands/status");
4
4
  const { cmdDiagnostics } = require("./commands/diagnostics");
5
5
  const { cmdDoctor } = require("./commands/doctor");
6
6
  const { cmdUninstall } = require("./commands/uninstall");
7
- const { cmdActivateIfNeeded } = require("./commands/activate-if-needed");
8
7
 
9
8
  async function run(argv) {
10
9
  const [command, ...rest] = argv;
@@ -33,9 +32,6 @@ async function run(argv) {
33
32
  case "uninstall":
34
33
  await cmdUninstall(rest);
35
34
  return;
36
- case "activate-if-needed":
37
- await cmdActivateIfNeeded(rest);
38
- return;
39
35
  default:
40
36
  throw new Error(`Unknown command: ${command}`);
41
37
  }
@@ -29,7 +29,6 @@ const {
29
29
  const { purgeProjectUsage } = require("../lib/project-usage-purge");
30
30
  const { resolveTrackerPaths } = require("../lib/tracker-paths");
31
31
  const { resolveRuntimeConfig } = require("../lib/runtime-config");
32
- const { checkAndActivate } = require("../lib/activation-check");
33
32
 
34
33
  async function cmdSync(argv) {
35
34
  const opts = parseArgs(argv);
@@ -420,9 +419,6 @@ async function cmdSync(argv) {
420
419
  progress?.stop();
421
420
  await lock.release();
422
421
  await fs.unlink(lockPath).catch(() => {});
423
-
424
- // 顺带检测并激活其他 AI CLI 集成(静默执行,不阻塞主流程)
425
- checkAndActivate({ home, silent: true }).catch(() => {});
426
422
  }
427
423
  }
428
424
 
@@ -37,6 +37,13 @@ const AI_CLIS = [
37
37
  checkConfigured: checkEveryCodeConfigured,
38
38
  configure: configureEveryCode,
39
39
  },
40
+ {
41
+ name: "openclaw",
42
+ displayName: "OpenClaw",
43
+ checkInstalled: checkOpenclawInstalled,
44
+ checkConfigured: checkOpenclawConfigured,
45
+ configure: configureOpenclaw,
46
+ },
40
47
  ];
41
48
 
42
49
  /**
@@ -287,4 +294,48 @@ async function configureEveryCode({ home, silent }) {
287
294
  module.exports = {
288
295
  checkAndActivate,
289
296
  AI_CLIS,
290
- };
297
+ };
298
+
299
+ // ===== OpenClaw 检测与配置 =====
300
+
301
+ async function checkOpenclawInstalled({ home }) {
302
+ const configPath = path.join(home, ".openclaw", "openclaw.json");
303
+ try {
304
+ await fs.access(configPath);
305
+ return true;
306
+ } catch {
307
+ return false;
308
+ }
309
+ }
310
+
311
+ async function checkOpenclawConfigured({ home }) {
312
+ const { probeOpenclawSessionPluginState } = require("./openclaw-session-plugin");
313
+ const { resolveTrackerPaths } = require("./tracker-paths");
314
+ try {
315
+ const { trackerDir } = await resolveTrackerPaths({ home });
316
+ const state = await probeOpenclawSessionPluginState({ home, trackerDir, env: process.env });
317
+ return state?.configured === true;
318
+ } catch {
319
+ return false;
320
+ }
321
+ }
322
+
323
+ async function configureOpenclaw({ home, silent }) {
324
+ try {
325
+ const { installOpenclawSessionPlugin } = require("./openclaw-session-plugin");
326
+ const { resolveTrackerPaths } = require("./tracker-paths");
327
+ const { trackerDir } = await resolveTrackerPaths({ home });
328
+
329
+ const result = await installOpenclawSessionPlugin({
330
+ home,
331
+ trackerDir,
332
+ packageName: "vibeusage",
333
+ env: process.env,
334
+ });
335
+
336
+ return result?.configured === true;
337
+ } catch (err) {
338
+ if (!silent) console.error("配置 OpenClaw 失败:", err.message);
339
+ return false;
340
+ }
341
+ }