@everme/cli 0.28.1 → 0.30.0

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": "@everme/cli",
3
- "version": "0.28.1",
3
+ "version": "0.30.0",
4
4
  "description": "EverMe CLI — npm wrapper that downloads and runs the platform-native evercli binary on first use.",
5
5
  "license": "Apache-2.0",
6
6
  "bin": {
@@ -96,9 +96,10 @@ function patchNpxSpec(configPath) {
96
96
  // are required: `evercli plugin install claude-code` reuses an already-present
97
97
  // global npm package without upgrading it (pluginSourceSpec short-circuits on
98
98
  // the existing `npm root -g` path), so the @latest bump must happen first; the
99
- // re-install then runs `claude plugin marketplace add` + `claude plugin install`
100
- // so Claude Code actually loads the fresh hooks/commands/MCP. Step 2 rotates the
101
- // local agent token (per-(platform, fingerprint) — other devices unaffected).
99
+ // re-install then runs marketplace add-or-update + plugin install-or-update so
100
+ // Claude Code actually loads the fresh hooks/commands/MCP, and asserts the
101
+ // cached version matches the payload. Step 2 rotates the local agent token
102
+ // (per-(platform, fingerprint) — other devices unaffected).
102
103
  function refreshClaudeCode(binPath, runner) {
103
104
  const run = runner || defaultRunner;
104
105
  run(npmCommand(), ["install", "-g", "@everme/claude-code@latest"], {
@@ -137,6 +138,52 @@ function refreshHermes(binPath, runner) {
137
138
  });
138
139
  }
139
140
 
141
+ // Codex needs BOTH refresh paths and used to get only the npx one: its
142
+ // memory-mcp spec lives in config.toml (patchNpxSpec), but its hook bundle
143
+ // ships through the marketplace cache, which Codex refreshes only when a
144
+ // `marketplace upgrade` runs against a changed manifest version. That
145
+ // upgrade lives inside `evercli plugin install codex`, so without this the
146
+ // hooks stayed pinned to whatever version first installed them.
147
+ function refreshCodex(binPath, runner) {
148
+ const run = runner || defaultRunner;
149
+ run(binPath, ["plugin", "install", "codex"], {
150
+ encoding: "utf8",
151
+ timeout: REFRESH_TIMEOUT_MS,
152
+ stdio: ["ignore", "ignore", "inherit"],
153
+ });
154
+ }
155
+
156
+ // Kimi Code mirrors claude-code's npm-first shape: evercli stages the
157
+ // bundle from the global npm package and short-circuits on an existing
158
+ // directory, so the @latest bump must happen first. Registration is the
159
+ // one step evercli cannot do headlessly (`/plugins install` is TUI-only),
160
+ // so the staged bundle only reaches Kimi Code after the user re-registers.
161
+ function refreshKimicode(binPath, runner) {
162
+ const run = runner || defaultRunner;
163
+ run(npmCommand(), ["install", "-g", "@everme/kimicode@latest"], {
164
+ encoding: "utf8",
165
+ timeout: REFRESH_TIMEOUT_MS,
166
+ stdio: ["ignore", "ignore", "inherit"],
167
+ });
168
+ run(binPath, ["plugin", "install", "kimicode"], {
169
+ encoding: "utf8",
170
+ timeout: REFRESH_TIMEOUT_MS,
171
+ stdio: ["ignore", "ignore", "inherit"],
172
+ });
173
+ }
174
+
175
+ // Raven's Python backend is embedded in the evercli binary, so the freshly
176
+ // downloaded binary is the new payload — re-running install is what
177
+ // rewrites ~/.raven/plugins/everme-memory/. Nothing to bump on npm.
178
+ function refreshRaven(binPath, runner) {
179
+ const run = runner || defaultRunner;
180
+ run(binPath, ["plugin", "install", "raven"], {
181
+ encoding: "utf8",
182
+ timeout: REFRESH_TIMEOUT_MS,
183
+ stdio: ["ignore", "ignore", "inherit"],
184
+ });
185
+ }
186
+
140
187
  function skipReason(env) {
141
188
  if (env.EVERME_SKIP_PLUGIN_UPGRADE) return "EVERME_SKIP_PLUGIN_UPGRADE is set";
142
189
  if (env.CI) return "CI environment";
@@ -166,19 +213,28 @@ function refreshPlugins(opts) {
166
213
  return;
167
214
  }
168
215
 
216
+ // The npx patch and the plugin refresh are not alternatives: codex needs
217
+ // both (npx spec in config.toml + marketplace-shipped hook bundle), so
218
+ // the two dispatches run in sequence rather than as one if/else chain.
169
219
  for (const h of hosts) {
170
220
  if (!h || h.hasEverMeEntry !== true) continue;
171
221
  try {
172
- if (NPX_PLATFORMS.has(h.platform)) {
173
- if (h.configPath && patchNpxSpec(h.configPath)) {
174
- log(`[@everme/cli] ${h.platform}: pinned memory-mcp to @latest`);
175
- }
176
- } else if (h.platform === "claude-code") {
222
+ if (NPX_PLATFORMS.has(h.platform) && h.configPath && patchNpxSpec(h.configPath)) {
223
+ log(`[@everme/cli] ${h.platform}: pinned memory-mcp to @latest`);
224
+ }
225
+ if (h.platform === "claude-code") {
177
226
  refreshClaudeCode(binPath, runner);
227
+ } else if (h.platform === "codex") {
228
+ refreshCodex(binPath, runner);
178
229
  } else if (h.platform === "openclaw") {
179
230
  refreshOpenClaw(runner);
180
231
  } else if (h.platform === "hermes") {
181
232
  refreshHermes(binPath, runner);
233
+ } else if (h.platform === "raven") {
234
+ refreshRaven(binPath, runner);
235
+ } else if (h.platform === "kimicode") {
236
+ refreshKimicode(binPath, runner);
237
+ log("[@everme/cli] kimicode: bundle staged — run `/plugins install ~/.kimi-code/everme` in the Kimi Code TUI to load it");
182
238
  }
183
239
  } catch (e) {
184
240
  log(`[@everme/cli] ${h.platform}: refresh failed (continuing): ${e.message}`);
@@ -207,8 +263,11 @@ module.exports = {
207
263
  discoverHosts,
208
264
  patchNpxSpec,
209
265
  refreshClaudeCode,
266
+ refreshCodex,
210
267
  refreshOpenClaw,
211
268
  refreshHermes,
269
+ refreshKimicode,
270
+ refreshRaven,
212
271
  skipReason,
213
272
  refreshPlugins,
214
273
  logUnconnectedHosts,
package/sha256sums.txt CHANGED
@@ -1,6 +1,6 @@
1
- 9b87a85b4dc0a10d2fc80813d4bcb70831383f758f9763eb7799c4ff2c27e5b1 evercli_darwin_amd64.tar.gz
2
- 95d7bd3d97c0e58d38d905d7ac922a3c81b26089533a0411b3b645dc40b33d98 evercli_darwin_arm64.tar.gz
3
- 5ebd99e58c70d21e22cc23964ec0658ff1b1e960be28a2ac005f87fbb76aa704 evercli_linux_amd64.tar.gz
4
- 2be43559fd7804cee94bef8d3eff0f4f2b9117bd05ee5dcc472306905256e7ee evercli_linux_arm64.tar.gz
5
- 23e78bbf7a7471a411cbdcb0ad7a77d0f8255cfc47135c8b02f5738ada7c1c42 evercli_windows_amd64.zip
6
- e3bf531be8b9bb4cb83abdbac62023d545397717f73ac08469a068209d2fc53b evercli_windows_arm64.zip
1
+ a580e5b44aab54bd9a2146ae1d7abb3110fb1a8519cd6cd19295b395eb968324 evercli_darwin_amd64.tar.gz
2
+ 1ca8d67f76209a40ee8bee49ffea08a39a600a03e0831f43afc280edd4682067 evercli_darwin_arm64.tar.gz
3
+ 0b62c90f20d9c41bdec684ca148af191de28f75a6dba94d84fbbbde230224bc7 evercli_linux_amd64.tar.gz
4
+ 1cba8ced8cabf0b8e66530daf52a5e2f00daa976aee382024100eff3f25fdfdb evercli_linux_arm64.tar.gz
5
+ 3f0956cfbc646df9a700d6e67c83c8ff6bb2d1f007d770cf0fc768d62b431001 evercli_windows_amd64.zip
6
+ c697050fcbeb9da84a06121bc1e409a48feb39d28152d2413d22a76588ac75ab evercli_windows_arm64.zip