agenticmail 0.3.18 → 0.3.19

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 (2) hide show
  1. package/dist/cli.js +46 -46
  2. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -4369,12 +4369,55 @@ function printSummary(result, exitAfter) {
4369
4369
  process.exit(0);
4370
4370
  }
4371
4371
  }
4372
+ async function restartOpenClawGateway() {
4373
+ let hasOpenClawCli = false;
4374
+ try {
4375
+ const { execSync } = await import("child_process");
4376
+ execSync("which openclaw", { stdio: "ignore" });
4377
+ hasOpenClawCli = true;
4378
+ } catch {
4379
+ }
4380
+ if (hasOpenClawCli) {
4381
+ log2("");
4382
+ const restartSpinner = new Spinner("gateway", "Restarting OpenClaw gateway...");
4383
+ restartSpinner.start();
4384
+ try {
4385
+ const { execSync } = await import("child_process");
4386
+ execSync("openclaw gateway restart", { stdio: "pipe", timeout: 3e4 });
4387
+ restartSpinner.succeed("OpenClaw gateway restarted");
4388
+ } catch {
4389
+ restartSpinner.fail("Gateway restart failed");
4390
+ log2(` Run manually: ${c2.green("openclaw gateway restart")}`);
4391
+ }
4392
+ } else {
4393
+ info2(`Restart OpenClaw to pick up the changes: ${c2.green("openclaw gateway restart")}`);
4394
+ }
4395
+ }
4372
4396
  async function registerWithOpenClaw(config) {
4373
4397
  const openclawConfigPath = findOpenClawConfig();
4374
4398
  if (!openclawConfigPath) return;
4375
4399
  try {
4376
4400
  const raw = readFileSync2(openclawConfigPath, "utf-8");
4377
4401
  const existing = JSON5.parse(raw);
4402
+ const installSpinner = new Spinner("plugin", "Updating @agenticmail/openclaw...");
4403
+ installSpinner.start();
4404
+ try {
4405
+ const { execSync } = await import("child_process");
4406
+ execSync("npm i @agenticmail/openclaw@latest", {
4407
+ cwd: homedir(),
4408
+ timeout: 6e4,
4409
+ stdio: ["ignore", "pipe", "pipe"]
4410
+ });
4411
+ installSpinner.succeed("Updated @agenticmail/openclaw");
4412
+ } catch (err) {
4413
+ installSpinner.fail(`Could not update: ${err.message}`);
4414
+ }
4415
+ let pluginDir = resolveOpenClawPluginDir();
4416
+ if (!pluginDir) {
4417
+ fail2("Could not find @agenticmail/openclaw after install");
4418
+ info2(`Install manually: ${c2.green("npm i @agenticmail/openclaw@latest")}`);
4419
+ return;
4420
+ }
4378
4421
  const existingEntry = existing.plugins?.entries?.agenticmail;
4379
4422
  if (existingEntry?.config?.apiKey) {
4380
4423
  const existingPaths = existing.plugins?.load?.paths ?? [];
@@ -4383,32 +4426,10 @@ async function registerWithOpenClaw(config) {
4383
4426
  );
4384
4427
  if (pluginFound) {
4385
4428
  ok2(`OpenClaw integration already configured`);
4429
+ await restartOpenClawGateway();
4386
4430
  return;
4387
4431
  }
4388
4432
  }
4389
- let pluginDir = resolveOpenClawPluginDir();
4390
- if (!pluginDir) {
4391
- const installSpinner = new Spinner("plugin", "Installing @agenticmail/openclaw...");
4392
- installSpinner.start();
4393
- try {
4394
- const { execSync } = await import("child_process");
4395
- execSync("npm i @agenticmail/openclaw", {
4396
- cwd: homedir(),
4397
- timeout: 6e4,
4398
- stdio: ["ignore", "pipe", "pipe"]
4399
- });
4400
- installSpinner.succeed("Installed @agenticmail/openclaw");
4401
- pluginDir = resolveOpenClawPluginDir();
4402
- } catch (err) {
4403
- installSpinner.fail(`Could not install: ${err.message}`);
4404
- info2(`Install manually: ${c2.green("npm i @agenticmail/openclaw")}`);
4405
- return;
4406
- }
4407
- }
4408
- if (!pluginDir) {
4409
- fail2("Could not find @agenticmail/openclaw after install");
4410
- return;
4411
- }
4412
4433
  let agentApiKey;
4413
4434
  try {
4414
4435
  const base = `http://${config.api.host}:${config.api.port}`;
@@ -4427,33 +4448,12 @@ async function registerWithOpenClaw(config) {
4427
4448
  const apiUrl = `http://${config.api.host}:${config.api.port}`;
4428
4449
  const updated = mergePluginConfig(existing, apiUrl, config.masterKey, agentApiKey, pluginDir);
4429
4450
  writeFileSync2(openclawConfigPath, JSON.stringify(updated, null, 2) + "\n");
4430
- if (pluginDir) ok2(`Plugin found: ${c2.cyan(pluginDir)}`);
4451
+ ok2(`Plugin found: ${c2.cyan(pluginDir)}`);
4431
4452
  ok2(`OpenClaw config updated: ${c2.cyan(openclawConfigPath)}`);
4432
4453
  if (!existing?.hooks?.enabled && updated?.hooks?.enabled) {
4433
4454
  ok2(`${c2.bold("Agent auto-spawn")} enabled \u2014 call_agent will auto-create sessions`);
4434
4455
  }
4435
- let hasOpenClawCli = false;
4436
- try {
4437
- const { execSync } = await import("child_process");
4438
- execSync("which openclaw", { stdio: "ignore" });
4439
- hasOpenClawCli = true;
4440
- } catch {
4441
- }
4442
- if (hasOpenClawCli) {
4443
- log2("");
4444
- const restartSpinner = new Spinner("gateway", "Restarting OpenClaw gateway...");
4445
- restartSpinner.start();
4446
- try {
4447
- const { execSync } = await import("child_process");
4448
- execSync("openclaw gateway restart", { stdio: "pipe", timeout: 3e4 });
4449
- restartSpinner.succeed("OpenClaw gateway restarted");
4450
- } catch {
4451
- restartSpinner.fail("Gateway restart failed");
4452
- log2(` Run manually: ${c2.green("openclaw gateway restart")}`);
4453
- }
4454
- } else {
4455
- info2(`Restart OpenClaw to pick up the changes: ${c2.green("openclaw gateway restart")}`);
4456
- }
4456
+ await restartOpenClawGateway();
4457
4457
  } catch {
4458
4458
  }
4459
4459
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agenticmail",
3
- "version": "0.3.18",
3
+ "version": "0.3.19",
4
4
  "description": "Email infrastructure for AI agents — send and receive real email programmatically",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "scripts": {
24
24
  "build": "tsup src/index.ts src/cli.ts --format esm --dts --clean",
25
- "test": "vitest run",
25
+ "test": "vitest run --passWithNoTests",
26
26
  "prepublishOnly": "npm run build"
27
27
  },
28
28
  "dependencies": {