@getmikie/cli 1.1.130 → 1.1.132
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 +23 -43
- package/bin/mikie.mjs +23 -16
- package/lib/update.mjs +17 -7
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -1,58 +1,38 @@
|
|
|
1
1
|
# Mikie
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
26
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
49
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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 "
|
|
56
|
+
return ["Failed to check for updates", "Check your internet connection, then run mikie update again"];
|
|
54
57
|
}
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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,11 +98,13 @@ 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:
|
|
97
105
|
mikie doctor Check that Mikie is working (--json for details)
|
|
98
|
-
mikie
|
|
106
|
+
mikie usage Your usage, and what Mikie saved, since you installed it
|
|
107
|
+
mikie savings history Estimate what Mikie would have saved on your past work
|
|
99
108
|
mikie mode codex Show or switch Mikie's Codex mode (active or shadow)
|
|
100
109
|
mikie privacy review See what Mikie can read in your project
|
|
101
110
|
mikie update Update Mikie
|
|
@@ -103,7 +112,8 @@ Everyday:
|
|
|
103
112
|
Account:
|
|
104
113
|
mikie logout Sign out
|
|
105
114
|
mikie device revoke Remove this computer from your account
|
|
106
|
-
mikie
|
|
115
|
+
mikie remove codex Take Mikie out of Codex (or: mikie remove claude)
|
|
116
|
+
mikie uninstall Remove Mikie completely
|
|
107
117
|
|
|
108
118
|
mikie --help Show this help
|
|
109
119
|
mikie --version Show the installed version`);
|
|
@@ -321,16 +331,13 @@ Account:
|
|
|
321
331
|
files,
|
|
322
332
|
});
|
|
323
333
|
if (result.status === "updated") {
|
|
324
|
-
console.log(`
|
|
325
|
-
for (const setting of result.foreignSettings) {
|
|
326
|
-
console.log(`Preserved foreign setting: ${setting}`);
|
|
327
|
-
}
|
|
334
|
+
console.log(`Successfully updated from ${result.previousVersion} to version ${result.version}`);
|
|
328
335
|
} else if (result.status === "reconciled") {
|
|
329
|
-
console.log(`
|
|
336
|
+
console.log(`Mikie is up to date (${result.version})`);
|
|
330
337
|
}
|
|
331
338
|
} catch (error) {
|
|
332
339
|
const message = error instanceof Error ? error.message : "Mikie update failed";
|
|
333
|
-
|
|
340
|
+
for (const line of updateFailureLines(message, error?.recovery)) console.error(line);
|
|
334
341
|
process.exitCode = 1;
|
|
335
342
|
}
|
|
336
343
|
} 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(
|
|
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
|
|
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
|
|
1072
|
+
throw Object.assign(
|
|
1073
|
+
new Error(`${reason}; restoring the previous version failed: ${restoreReason}`),
|
|
1074
|
+
{ recovery },
|
|
1075
|
+
);
|
|
1066
1076
|
}
|
|
1067
|
-
throw new Error(
|
|
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.
|
|
3
|
+
"version": "1.1.132",
|
|
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.
|
|
25
|
-
"@getmikie/linux-x64-gnu": "1.1.
|
|
26
|
-
"@getmikie/win32-x64": "1.1.
|
|
24
|
+
"@getmikie/darwin-arm64": "1.1.132",
|
|
25
|
+
"@getmikie/linux-x64-gnu": "1.1.132",
|
|
26
|
+
"@getmikie/win32-x64": "1.1.132"
|
|
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
|
}
|