nemoris 0.1.14 → 0.1.16

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": "nemoris",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "type": "module",
5
5
  "description": "Personal AI agent runtime — persistent memory, delivery guarantees, task contracts, self-healing. Local-first, no cloud.",
6
6
  "license": "MIT",
package/src/cli/help.js CHANGED
@@ -52,6 +52,11 @@ export const USER_FACING_COMMANDS = [
52
52
  description: "Import agents from OpenClaw",
53
53
  usage: ["nemoris migrate [--dry-run]"],
54
54
  },
55
+ {
56
+ name: "update",
57
+ description: "Update nemoris to the latest version",
58
+ usage: ["nemoris update"],
59
+ },
55
60
  {
56
61
  name: "mcp",
57
62
  description: "Manage MCP server connections",
package/src/cli-main.js CHANGED
@@ -2767,6 +2767,29 @@ export async function main(argv = process.argv) {
2767
2767
  console.log("\n Tip: run nemoris doctor --fix to clean the stale PID file.");
2768
2768
  }
2769
2769
  return results.exitCode;
2770
+ } else if (command === "update") {
2771
+ // Self-update via npm
2772
+ const { execSync } = await import("node:child_process");
2773
+ const pkgPath = path.join(projectRoot, "package.json");
2774
+ const currentVersion = JSON.parse(fs.readFileSync(pkgPath, "utf8")).version;
2775
+ console.log(` Current version: ${currentVersion}`);
2776
+ console.log(" Checking for updates...\n");
2777
+ try {
2778
+ const output = execSync("npm i -g nemoris@latest 2>&1", { encoding: "utf8", timeout: 60_000 });
2779
+ // Re-read version from npm to show what we got
2780
+ const latestLine = output.match(/\+ nemoris@([\d.]+)/);
2781
+ const newVersion = latestLine?.[1] ?? "latest";
2782
+ if (newVersion === currentVersion) {
2783
+ console.log(` ✓ Already on the latest version (${currentVersion})`);
2784
+ } else {
2785
+ console.log(` ✓ Updated to v${newVersion}`);
2786
+ console.log(" Restart your daemon: nemoris restart");
2787
+ }
2788
+ } catch (err) {
2789
+ console.error(" ✗ Update failed:", err.message?.split("\n")[0] || "unknown error");
2790
+ console.error(" Try manually: npm i -g nemoris@latest");
2791
+ return 1;
2792
+ }
2770
2793
  } else if (command === "battle") {
2771
2794
  const { runBattle, parseBattleFlags } = await import("./battle.js");
2772
2795
  const flags = parseBattleFlags(rest);
@@ -48,31 +48,53 @@ export const CURATED_MODELS = {
48
48
  },
49
49
  ],
50
50
  openrouter: [
51
- {
52
- value: "openrouter/anthropic/claude-haiku-4-5",
53
- label: "anthropic/claude-haiku-4-5",
54
- hint: "ctx 200k · fast · recommended",
55
- },
51
+ // ── Top picks (most popular on OpenRouter) ──
56
52
  {
57
53
  value: "openrouter/anthropic/claude-sonnet-4-6",
58
54
  label: "anthropic/claude-sonnet-4-6",
59
- hint: "ctx 200k · balanced · strong default",
55
+ hint: "ctx 200k · balanced · recommended",
60
56
  },
61
57
  {
62
- value: "openrouter/openai/gpt-4o",
63
- label: "openai/gpt-4o",
64
- hint: "ctx 128k · vision · broad compatibility",
58
+ value: "openrouter/anthropic/claude-haiku-4-5",
59
+ label: "anthropic/claude-haiku-4-5",
60
+ hint: "ctx 200k · fast · cheap",
65
61
  },
66
62
  {
67
- value: "openrouter/google/gemini-2.5-flash",
68
- label: "google/gemini-2.5-flash",
63
+ value: "openrouter/google/gemini-3-flash-preview",
64
+ label: "google/gemini-3-flash-preview",
69
65
  hint: "ctx 1M · fast · long context",
70
66
  },
67
+ {
68
+ value: "openrouter/deepseek/deepseek-v3.2",
69
+ label: "deepseek/deepseek-v3.2",
70
+ hint: "ctx 164k · strong · very cheap",
71
+ },
71
72
  {
72
73
  value: "openrouter/anthropic/claude-opus-4-6",
73
74
  label: "anthropic/claude-opus-4-6",
74
75
  hint: "ctx 200k · most capable · expensive",
75
76
  },
77
+ // ── More options ──
78
+ {
79
+ value: "openrouter/openai/gpt-4o",
80
+ label: "openai/gpt-4o",
81
+ hint: "ctx 128k · vision · multimodal",
82
+ },
83
+ {
84
+ value: "openrouter/mistralai/mistral-large",
85
+ label: "mistralai/mistral-large",
86
+ hint: "ctx 128k · strong · EU provider",
87
+ },
88
+ {
89
+ value: "openrouter/meta-llama/llama-4-maverick",
90
+ label: "meta-llama/llama-4-maverick",
91
+ hint: "ctx 1M · open-weight · free tier",
92
+ },
93
+ {
94
+ value: "openrouter/qwen/qwen3-235b-a22b",
95
+ label: "qwen/qwen3-235b-a22b",
96
+ hint: "ctx 128k · MoE · very cheap",
97
+ },
76
98
  ],
77
99
  };
78
100