@everme/cli 0.28.1 → 0.29.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.29.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
+ 8baf8fae3ba2fb76affbd243d7c8fd6d3cddb905f9f55201a7168793153eeae7 evercli_darwin_amd64.tar.gz
2
+ 973ee6c170867fd03f1b1d4c93e25fe389b46d531056d0a591f0bbfad35713cb evercli_darwin_arm64.tar.gz
3
+ c2d9ad36fdc9fa0210febbc62409172b90e563ee58de97bee2ea52b96296a2b9 evercli_linux_amd64.tar.gz
4
+ 09ba0fe90824ff94aef6da1f1a83151b1bd487edaaadd0cbbf2f18b2c5e11d4d evercli_linux_arm64.tar.gz
5
+ 93373d46dc554bb5bd3076de108bcde505d624d689a995ff1092f7a3951c3d67 evercli_windows_amd64.zip
6
+ f18f2313f1b2b27f3e02fb3524381e27695f4c3ba4b492453aec31e4ad78ba84 evercli_windows_arm64.zip