@getmikie/cli 1.1.130 → 1.1.131

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/README.md CHANGED
@@ -1,58 +1,38 @@
1
1
  # Mikie
2
2
 
3
- This package is a thin launcher for Mikie's compiled native relay.
3
+ Mikie gives Claude Code and Codex only the code each request needs, and keeps a
4
+ receipt of what every request used and saved.
4
5
 
5
- ```sh
6
- npx --yes --ignore-scripts --registry=https://registry.npmjs.org @getmikie/cli@1.1.108 mcp
7
- ```
8
-
9
- For a persistent command path on Windows PowerShell:
10
-
11
- ```powershell
12
- npm.cmd install --global @getmikie/cli@1.1.108 --registry=https://registry.npmjs.org
13
- ```
14
-
15
- Mikie does not change your PowerShell execution policy. Keep the exact package
16
- name in the command: without naming the package as the install target, npm
17
- incorrectly targets the current directory.
6
+ ## Quickstart
18
7
 
19
- For a persistent command path on macOS or Linux:
8
+ You need Node.js 22 or newer on macOS (Apple Silicon), Linux x64 or Windows x64.
20
9
 
21
10
  ```sh
22
- npm install --global @getmikie/cli@1.1.108 --registry=https://registry.npmjs.org
11
+ npm install -g @getmikie/cli@latest
12
+ mikie login
13
+ mikie setup codex # or: mikie setup claude
14
+ mikie doctor
23
15
  ```
24
16
 
25
- Keep `--global`: Mikie is a command-line tool, not a project dependency.
26
- The package has no npm install script, so there is nothing to allow; the
27
- first `mikie` command finishes setting up the runtime and client hooks.
28
- These commands pin the public npm registry.
29
- The public OS installers additionally authenticate exact wrapper
30
- and native tarball bytes, install them offline, and explicitly run only Mikie's
31
- authenticated reconciliation script.
17
+ Then open Codex or Claude Code in your project folder and work as usual. Mikie
18
+ connects that project automatically.
32
19
 
33
- Then run:
20
+ On Windows, if PowerShell says running scripts is disabled, install with
21
+ `npm.cmd install -g @getmikie/cli@latest` instead.
22
+
23
+ ## Everyday commands
34
24
 
35
25
  ```sh
36
- mikie mcp
26
+ mikie savings history # see what Mikie has saved you
27
+ mikie mode codex shadow # try Mikie beside Codex without changing what it reads
28
+ mikie privacy review # see what Mikie can read in your project
29
+ mikie update # update Mikie
30
+ mikie --help # every command
37
31
  ```
38
32
 
39
- The launcher contains no relay, pricing, receipt, or model logic. npm installs
40
- the matching `@getmikie/*` optional platform package and the launcher executes that
41
- binary with inherited stdio.
42
-
43
- ## Mikie Control
44
-
45
- Run one immutable, repository-scoped request through the verified Codex App
46
- Server runtime:
33
+ ## Other MCP clients
47
34
 
48
- ```sh
49
- mikie control run --request C:\absolute\path\control-request.json --json
50
- ```
35
+ Any MCP client that can launch a stdio server can run Mikie with `mikie mcp`.
36
+ Mikie ships tested setup for Claude Code and Codex only.
51
37
 
52
- The request must be an existing absolute JSON file. Mikie validates the frozen
53
- repository, allowed paths, exact model and reasoning effort, bounded model-turn
54
- timeout, and private temporary root before execution. The verifier argv is
55
- restricted to `git diff --check`; interpreters, build tools, and test runners
56
- that could execute repository-controlled code are rejected. The JSON result is
57
- content-free: it reports terminal status and hashes, never prompts, context,
58
- patch bodies, verifier output, or credentials.
38
+ Docs: https://getmikie.com/docs
package/bin/mikie.mjs CHANGED
@@ -44,18 +44,25 @@ import {
44
44
 
45
45
  const require = createRequire(import.meta.url);
46
46
 
47
- /** One next step for the update failures a customer can act on. */
48
- function updateGuidance(message) {
49
- if (/EBUSY|EPERM|resource busy|operation not permitted|locked/i.test(message)) {
50
- return "; a running Mikie process holds a file: close Codex and Claude Code, then run `mikie update` again";
47
+ /**
48
+ * A failed update, worded like `claude update`: what failed, then one next
49
+ * step. The failure detail stays on the first line for support.
50
+ */
51
+ function updateFailureLines(message, recovery) {
52
+ if (/another Mikie update transaction is active/.test(message)) {
53
+ return ["Another Mikie update is currently running. Please try again in a moment."];
51
54
  }
52
55
  if (/registry did not resolve|registry/i.test(message)) {
53
- return "; the npm registry could not be reached or returned no compatible version: check the connection and run `mikie update` again";
56
+ return ["Failed to check for updates", "Check your internet connection, then run mikie update again"];
54
57
  }
55
- if (/another Mikie update transaction is active/.test(message)) {
56
- return "; wait for the other `mikie update` to finish";
58
+ const failed = `Error: Failed to install update: ${message}`;
59
+ if (/EBUSY|EPERM|resource busy|operation not permitted|locked/i.test(message)) {
60
+ return [failed, "Close Codex and Claude Code, then run mikie update again"];
57
61
  }
58
- return "";
62
+ if (typeof recovery === "string" && recovery !== "mikie update") {
63
+ return [failed, `Run mikie update again, or reinstall with: ${recovery}`];
64
+ }
65
+ return [failed, "Run mikie update again"];
59
66
  }
60
67
  const packageMetadata = require("../package.json");
61
68
  const arguments_ = process.argv.slice(2);
@@ -91,6 +98,7 @@ Get started:
91
98
  mikie login Sign in
92
99
  mikie setup codex Add Mikie to Codex
93
100
  mikie setup claude Add Mikie to Claude Code
101
+ mikie agent status Mikie's instructions for Claude Code (enable or disable)
94
102
  Then open Codex or Claude Code in your project folder; Mikie connects it.
95
103
 
96
104
  Everyday:
@@ -103,7 +111,8 @@ Everyday:
103
111
  Account:
104
112
  mikie logout Sign out
105
113
  mikie device revoke Remove this computer from your account
106
- mikie uninstall Remove Mikie
114
+ mikie remove codex Take Mikie out of Codex (or: mikie remove claude)
115
+ mikie uninstall Remove Mikie completely
107
116
 
108
117
  mikie --help Show this help
109
118
  mikie --version Show the installed version`);
@@ -321,16 +330,13 @@ Account:
321
330
  files,
322
331
  });
323
332
  if (result.status === "updated") {
324
- console.log(`Updated Mikie to ${result.version}.`);
325
- for (const setting of result.foreignSettings) {
326
- console.log(`Preserved foreign setting: ${setting}`);
327
- }
333
+ console.log(`Successfully updated from ${result.previousVersion} to version ${result.version}`);
328
334
  } else if (result.status === "reconciled") {
329
- console.log(`Reconciled Mikie ${result.version} client launchers.`);
335
+ console.log(`Mikie is up to date (${result.version})`);
330
336
  }
331
337
  } catch (error) {
332
338
  const message = error instanceof Error ? error.message : "Mikie update failed";
333
- console.error(`mikie: ${message}${updateGuidance(message)}`);
339
+ for (const line of updateFailureLines(message, error?.recovery)) console.error(line);
334
340
  process.exitCode = 1;
335
341
  }
336
342
  } else {
package/lib/update.mjs CHANGED
@@ -845,9 +845,8 @@ export async function runUpdateTransaction({
845
845
  try {
846
846
  lease = await files.beginTransaction?.();
847
847
  } catch (error) {
848
- output.writeLine(`Recovery: ${recovery}`);
849
848
  const reason = error instanceof Error ? error.message : "update recovery failed";
850
- throw new Error(`${reason}. Recovery: ${recovery}`);
849
+ throw Object.assign(new Error(reason), { recovery });
851
850
  }
852
851
  try {
853
852
  const installedCurrentVersion = await files.currentInstalledVersion();
@@ -855,6 +854,9 @@ export async function runUpdateTransaction({
855
854
  throw new Error("installed Mikie package version is not exact");
856
855
  }
857
856
  recovery = recoveryCommand(installedCurrentVersion);
857
+ // Worded like `claude update`, line for line.
858
+ output.writeLine(`Current version: ${installedCurrentVersion}`);
859
+ output.writeLine("Checking for updates to latest version...");
858
860
  const resolved = await registry.resolveExactCompatibleVersion({
859
861
  packageName: WRAPPER_PACKAGE,
860
862
  currentVersion: installedCurrentVersion,
@@ -874,9 +876,15 @@ export async function runUpdateTransaction({
874
876
  const reconcileCurrentInstallation =
875
877
  versionOrder === 0 && files.requiresFinalLauncherSettlement?.() === true;
876
878
  if (versionOrder === 0 && !reconcileCurrentInstallation) {
877
- output.writeLine(`Mikie is already current at ${installedCurrentVersion}.`);
879
+ output.writeLine(`Mikie is up to date (${installedCurrentVersion})`);
878
880
  return { status: "current", version: installedCurrentVersion };
879
881
  }
882
+ if (!reconcileCurrentInstallation) {
883
+ output.writeLine(
884
+ `New version available: ${resolved.version} (current: ${installedCurrentVersion})`,
885
+ );
886
+ output.writeLine("Installing update...");
887
+ }
880
888
 
881
889
  const snapshotRequest = { platformPackage };
882
890
  if (lease !== undefined) snapshotRequest.lease = lease;
@@ -921,7 +929,6 @@ export async function runUpdateTransaction({
921
929
  // journal. The installed entrypoint loads it before resolving a runtime;
922
930
  // its internal Node/bootstrap payload is not a customer-facing command.
923
931
  recovery = "mikie update";
924
- output.writeLine(`Recovery: ${recovery}`);
925
932
  await files.markProviderPreparing(snapshot);
926
933
  providerPrepared = true;
927
934
 
@@ -1013,6 +1020,7 @@ export async function runUpdateTransaction({
1013
1020
  return {
1014
1021
  status: reconcileCurrentInstallation ? "reconciled" : "updated",
1015
1022
  version: resolved.version,
1023
+ previousVersion: installedCurrentVersion,
1016
1024
  providerState: repairResult.receipt.after,
1017
1025
  adapterAction: repairResult.skipped
1018
1026
  ? "skipped"
@@ -1057,14 +1065,16 @@ export async function runUpdateTransaction({
1057
1065
  restoreFailure = restoreError;
1058
1066
  }
1059
1067
  }
1060
- output.writeLine(`Recovery: ${recovery}`);
1061
1068
  const reason = error instanceof Error ? error.message : "update transaction failed";
1062
1069
  if (restoreFailure) {
1063
1070
  const restoreReason =
1064
1071
  restoreFailure instanceof Error ? restoreFailure.message : "snapshot restore failed";
1065
- throw new Error(`${reason}; rollback failed: ${restoreReason}. Recovery: ${recovery}`);
1072
+ throw Object.assign(
1073
+ new Error(`${reason}; restoring the previous version failed: ${restoreReason}`),
1074
+ { recovery },
1075
+ );
1066
1076
  }
1067
- throw new Error(`${reason}. Recovery: ${recovery}`);
1077
+ throw Object.assign(new Error(reason), { recovery });
1068
1078
  }
1069
1079
  } finally {
1070
1080
  await files.endTransaction?.(lease);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getmikie/cli",
3
- "version": "1.1.130",
3
+ "version": "1.1.131",
4
4
  "description": "Native Mikie relay launcher for MCP clients",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -21,13 +21,12 @@
21
21
  "node": ">=22"
22
22
  },
23
23
  "optionalDependencies": {
24
- "@getmikie/darwin-arm64": "1.1.130",
25
- "@getmikie/linux-x64-gnu": "1.1.130",
26
- "@getmikie/win32-x64": "1.1.130"
24
+ "@getmikie/darwin-arm64": "1.1.131",
25
+ "@getmikie/linux-x64-gnu": "1.1.131",
26
+ "@getmikie/win32-x64": "1.1.131"
27
27
  },
28
28
  "publishConfig": {
29
29
  "access": "public",
30
30
  "registry": "https://registry.npmjs.org"
31
- },
32
- "mikieReleaseNote": "mikie update works again, and Codex keeps its hook approval across updates"
31
+ }
33
32
  }