@leemour/max-cli 0.12.0 → 0.13.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/README.md +39 -10
- package/dist/client.d.ts +11 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +56 -8
- package/dist/client.js.map +1 -1
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +57 -7
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/mcp.d.ts +24 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +80 -14
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/models.d.ts.map +1 -1
- package/dist/commands/models.js +13 -2
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/review.d.ts +8 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +80 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/diagnose.d.ts +19 -1
- package/dist/diagnose.d.ts.map +1 -1
- package/dist/diagnose.js +37 -1
- package/dist/diagnose.js.map +1 -1
- package/dist/domain/models.d.ts +28 -0
- package/dist/domain/models.d.ts.map +1 -1
- package/dist/domain/models.js.map +1 -1
- package/dist/install.d.ts +43 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +142 -0
- package/dist/install.js.map +1 -0
- package/dist/mcp/prompts.d.ts.map +1 -1
- package/dist/mcp/prompts.js +28 -0
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +31 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/online.d.ts +23 -0
- package/dist/online.d.ts.map +1 -0
- package/dist/online.js +87 -0
- package/dist/online.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +13 -2
- package/dist/report.js.map +1 -1
- package/dist/review.d.ts +20 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +56 -0
- package/dist/review.js.map +1 -0
- package/dist/transcribe/index.d.ts +1 -0
- package/dist/transcribe/index.d.ts.map +1 -1
- package/dist/transcribe/index.js +8 -4
- package/dist/transcribe/index.js.map +1 -1
- package/dist/transcribe/speech.d.ts.map +1 -1
- package/dist/transcribe/speech.js +2 -0
- package/dist/transcribe/speech.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/skills/max-cli/SKILL.md +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAsBD,eAAO,MAAM,UAAU,QAAO,OAyC7B,CAAA;AAcD;;;;GAIG;AACH,eAAO,MAAM,WAAW,mDAMrB;IACD,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CACvB,KAAG;IAAE,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CA2BrE,CAAA"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -1,24 +1,90 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { installerOf } from "@leemour/cli-core/update";
|
|
2
3
|
import { Command } from "commander";
|
|
4
|
+
import { ownScript } from "../install.js";
|
|
3
5
|
import { forCommand } from "./context.js";
|
|
4
|
-
|
|
5
|
-
.description("serve this profile to an agent over MCP, on stdin and stdout — `claude mcp add max -- max mcp`")
|
|
6
|
+
const withFlags = (command) => command
|
|
6
7
|
.option("--allow-send", "offer the send tool; without it the server can only read")
|
|
7
8
|
.option("--confirm-send", "show the owner every send, edit, forward, pin, mark-read and delete in a form from the server first")
|
|
8
9
|
.option("--allow-mark-read", "offer the tool that marks a chat read; the other person sees it")
|
|
9
|
-
.option("--allow-delete", "offer the tool that deletes messages for you only; it cannot be undone")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (confirmSend && !allowSend && !allowMarkRead && !allowDelete) {
|
|
10
|
+
.option("--allow-delete", "offer the tool that deletes messages for you only; it cannot be undone");
|
|
11
|
+
const checked = (flags) => {
|
|
12
|
+
if (flags.confirmSend && !flags.allowSend && !flags.allowMarkRead && !flags.allowDelete) {
|
|
13
13
|
throw new CliError("validation_error", "`--confirm-send` confirms writes, and without `--allow-send`, `--allow-mark-read` or `--allow-delete` there are none");
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
return flags;
|
|
16
|
+
};
|
|
17
|
+
export const mcpCommand = () => {
|
|
18
|
+
const command = withFlags(new Command("mcp").description("serve this profile to an agent over MCP, on stdin and stdout — `claude mcp add max -- max mcp`")).action(async function () {
|
|
19
|
+
const { allowSend, confirmSend, allowMarkRead, allowDelete } = checked(this.opts());
|
|
20
|
+
// Loaded here, not at the top: every other command would otherwise pay for the SDK and zod.
|
|
21
|
+
const { serveOverStdio } = await import("../mcp/server.js");
|
|
22
|
+
await serveOverStdio(forCommand(this), {
|
|
23
|
+
allowSend: allowSend === true,
|
|
24
|
+
confirmSend: confirmSend === true,
|
|
25
|
+
allowMarkRead: allowMarkRead === true,
|
|
26
|
+
allowDelete: allowDelete === true,
|
|
27
|
+
});
|
|
22
28
|
});
|
|
23
|
-
|
|
29
|
+
command.addCommand(withFlags(new Command("config").description("print the mcpServers entry for Claude Desktop, Cursor and others, with full paths; writes nothing")).action(async function () {
|
|
30
|
+
const flags = checked(this.optsWithGlobals());
|
|
31
|
+
const { renderer, settings, format, streams, run } = forCommand(this);
|
|
32
|
+
await run("mcp config", async () => {
|
|
33
|
+
const entry = serverEntry({
|
|
34
|
+
profile: settings.profile,
|
|
35
|
+
flags,
|
|
36
|
+
execPath: process.execPath,
|
|
37
|
+
scriptPath: ownScript(),
|
|
38
|
+
env: process.env,
|
|
39
|
+
});
|
|
40
|
+
// Pasted into a file, so a person gets the same JSON a script does, only indented.
|
|
41
|
+
if (format === "pretty")
|
|
42
|
+
streams.data(JSON.stringify(entry.config, null, 2));
|
|
43
|
+
else
|
|
44
|
+
renderer.result(entry.config);
|
|
45
|
+
if (entry.warning)
|
|
46
|
+
renderer.note(entry.warning);
|
|
47
|
+
});
|
|
48
|
+
}));
|
|
49
|
+
return command;
|
|
50
|
+
};
|
|
51
|
+
const FLAG_ARGS = [
|
|
52
|
+
["allowSend", "--allow-send"],
|
|
53
|
+
["confirmSend", "--confirm-send"],
|
|
54
|
+
["allowMarkRead", "--allow-mark-read"],
|
|
55
|
+
["allowDelete", "--allow-delete"],
|
|
56
|
+
];
|
|
57
|
+
/** They choose the keyring entry, so a server without them would answer "no session". */
|
|
58
|
+
const DIRECTORIES = ["MAX_CONFIG_DIR", "MAX_STATE_DIR", "MAX_CACHE_DIR"];
|
|
59
|
+
const VERSION_MANAGER = /[\\/](\.nvm|nvm|\.fnm|fnm|fnm_multishells|\.volta|volta|\.asdf|mise)[\\/]/i;
|
|
60
|
+
/**
|
|
61
|
+
* `node` and the script by full path, on every platform: a client started from the desktop does
|
|
62
|
+
* not see the PATH a terminal has, and on Windows `max` is a `.cmd` file that a client which starts
|
|
63
|
+
* programs without a shell cannot run. `MAX_TOKEN` is never copied — the server reads the keyring.
|
|
64
|
+
*/
|
|
65
|
+
export const serverEntry = ({ profile, flags, execPath, scriptPath, env, }) => {
|
|
66
|
+
if (installerOf(scriptPath) === "npx") {
|
|
67
|
+
throw new CliError("validation_error", "this max runs from npx's cache, which gets cleared, and the path would stop working — " +
|
|
68
|
+
"`npm install -g @leemour/max-cli`, then run `max mcp config` again");
|
|
69
|
+
}
|
|
70
|
+
const args = [
|
|
71
|
+
scriptPath,
|
|
72
|
+
...(profile === "default" ? [] : [profile]),
|
|
73
|
+
"mcp",
|
|
74
|
+
...FLAG_ARGS.filter(([key]) => flags[key] === true).map(([, flag]) => flag),
|
|
75
|
+
];
|
|
76
|
+
const directories = Object.fromEntries(DIRECTORIES.flatMap((name) => (env[name] ? [[name, env[name]]] : [])));
|
|
77
|
+
const server = {
|
|
78
|
+
type: "stdio",
|
|
79
|
+
command: execPath,
|
|
80
|
+
args,
|
|
81
|
+
...(Object.keys(directories).length > 0 ? { env: directories } : {}),
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
config: { mcpServers: { [profile === "default" ? "max" : `max-${profile}`]: server } },
|
|
85
|
+
...(VERSION_MANAGER.test(execPath)
|
|
86
|
+
? { warning: `${execPath} belongs to one Node version — after switching or upgrading Node, run this again` }
|
|
87
|
+
: {}),
|
|
88
|
+
};
|
|
89
|
+
};
|
|
24
90
|
//# sourceMappingURL=mcp.js.map
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAO,OA2DhC,CAAA"}
|
package/dist/commands/models.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { install, installedBytes, isInstalled, megabytes, modelsDirectory } from "../transcribe/install.js";
|
|
2
|
+
import { install, installedBytes, isInstalled, megabytes, modelPath, modelsDirectory, vadPath, } from "../transcribe/install.js";
|
|
3
3
|
import { MODELS, speechModel, VAD } from "../transcribe/models.js";
|
|
4
4
|
import { forCommand } from "./context.js";
|
|
5
5
|
/**
|
|
@@ -45,7 +45,18 @@ export const modelsCommand = () => {
|
|
|
45
45
|
renderer.note(`${model.id}: ${megabytes(installedBytes(model) + VAD.bytes)} from Hugging Face and GitHub`);
|
|
46
46
|
await install(model, directory, { progress: (line) => renderer.note(line) });
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
// Loading is the test: the files, the WebAssembly engine and the memory it needs. No sample
|
|
49
|
+
// recording ships with the package, so a second of silence goes through it.
|
|
50
|
+
renderer.note(`${model.id}: loading it once to check it works`);
|
|
51
|
+
const { openRecognizer, SAMPLE_RATE } = await import("../transcribe/speech.js");
|
|
52
|
+
const recognizer = openRecognizer(model, modelPath(directory, model), vadPath(directory));
|
|
53
|
+
try {
|
|
54
|
+
recognizer.recognize(new Float32Array(SAMPLE_RATE));
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
recognizer.free();
|
|
58
|
+
}
|
|
59
|
+
renderer.result({ id: model.id, downloaded: true, works: true, directory });
|
|
49
60
|
});
|
|
50
61
|
});
|
|
51
62
|
return models;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* **Everything said since a point, both sides, in every chat that changed** — the reading half of
|
|
4
|
+
* a review of who owes what. Sorting it is the reader's job, person or agent. Reads only: nothing
|
|
5
|
+
* is marked read, and the saved point of `max inbox --new` stays where it is.
|
|
6
|
+
*/
|
|
7
|
+
export declare const reviewCommand: () => Command;
|
|
8
|
+
//# sourceMappingURL=review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC;;;;GAIG;AACH,eAAO,MAAM,aAAa,QAAO,OAwD3B,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { openProfileCache } from "../cache/index.js";
|
|
4
|
+
import { renderMessages } from "../rendering/messages.js";
|
|
5
|
+
import { REVIEW_DAYS, review, reviewStart } from "../review.js";
|
|
6
|
+
import { forCommand } from "./context.js";
|
|
7
|
+
/**
|
|
8
|
+
* **Everything said since a point, both sides, in every chat that changed** — the reading half of
|
|
9
|
+
* a review of who owes what. Sorting it is the reader's job, person or agent. Reads only: nothing
|
|
10
|
+
* is marked read, and the saved point of `max inbox --new` stays where it is.
|
|
11
|
+
*/
|
|
12
|
+
export const reviewCommand = () => new Command("review")
|
|
13
|
+
.description("every message, yours too, in chats that changed since a point — for reviewing who owes what")
|
|
14
|
+
.option("--since <id-or-time>", `where the last review ended; ${REVIEW_DAYS} days ago if not given`)
|
|
15
|
+
.option("--transcribe", "transcribe voice messages not heard yet; slow, and the model must be downloaded")
|
|
16
|
+
.action(async function () {
|
|
17
|
+
const options = this.optsWithGlobals();
|
|
18
|
+
const context = forCommand(this);
|
|
19
|
+
const { renderer, settings, format, streams, createClient, run } = context;
|
|
20
|
+
if (options.offline === true) {
|
|
21
|
+
throw new CliError("validation_error", "`review` asks MAX what changed; with `--offline` nothing did");
|
|
22
|
+
}
|
|
23
|
+
const cache = await openProfileCache(settings.profile, { onProblem: (message) => renderer.note(message) });
|
|
24
|
+
await run("review", async (events) => {
|
|
25
|
+
const client = createClient({ events, ...(cache ? { cache } : {}) });
|
|
26
|
+
try {
|
|
27
|
+
const since = options.since === undefined ? reviewStart() : client.messages.moment(String(options.since), "--since");
|
|
28
|
+
const found = await review(client, {
|
|
29
|
+
since,
|
|
30
|
+
cache,
|
|
31
|
+
...(options.transcribe === true ? { transcribeWith: settings.transcribeModel } : {}),
|
|
32
|
+
});
|
|
33
|
+
if (format !== "pretty")
|
|
34
|
+
renderer.result(found);
|
|
35
|
+
else {
|
|
36
|
+
const messages = found.chats.flatMap((chat) => chat.messages.map(({ transcript, ...message }) => ({
|
|
37
|
+
...message,
|
|
38
|
+
text: transcript === undefined
|
|
39
|
+
? message.text
|
|
40
|
+
: [message.text, `🎤 ${transcript}`].filter(Boolean).join("\n"),
|
|
41
|
+
chatTitle: chat.title,
|
|
42
|
+
})));
|
|
43
|
+
if (messages.length > 0) {
|
|
44
|
+
streams.data(renderMessages(messages, {
|
|
45
|
+
color: context.color,
|
|
46
|
+
senderColors: settings.senderColors,
|
|
47
|
+
verbosity: settings.detail,
|
|
48
|
+
width: process.stdout.columns ?? 80,
|
|
49
|
+
profile: settings.profile,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
notes(found, renderer.note.bind(renderer));
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
await client.close();
|
|
57
|
+
cache?.close();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
const notes = (found, note) => {
|
|
62
|
+
for (const chat of found.chats) {
|
|
63
|
+
if (chat.more)
|
|
64
|
+
note(`${chat.title ?? chat.id}: cut short — \`max messages list ${chat.id} --after <last id>\` reads on`);
|
|
65
|
+
}
|
|
66
|
+
if (found.skipped.length > 0) {
|
|
67
|
+
note(`not read — too many chats at once: ${found.skipped.map((chat) => chat.title ?? chat.id).join(", ")}`);
|
|
68
|
+
}
|
|
69
|
+
if (found.partial)
|
|
70
|
+
note("only the chats this login named were looked at; an older one may have more");
|
|
71
|
+
if (found.unheard.length > 0) {
|
|
72
|
+
note(`${found.unheard.length} voice message(s) not heard — \`max review --transcribe\` or \`max messages transcribe\``);
|
|
73
|
+
}
|
|
74
|
+
if (found.transcribeProblem)
|
|
75
|
+
note(`not transcribed: ${found.transcribeProblem}`);
|
|
76
|
+
note(found.complete
|
|
77
|
+
? `from ${found.since} to ${found.until} — the next review starts with --since ${found.until}`
|
|
78
|
+
: `from ${found.since} to ${found.until}, incomplete — keep --since ${found.since} for the next review`);
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAY,EAAE,CACzC,IAAI,OAAO,CAAC,QAAQ,CAAC;KAClB,WAAW,CAAC,6FAA6F,CAAC;KAC1G,MAAM,CAAC,sBAAsB,EAAE,gCAAgC,WAAW,wBAAwB,CAAC;KACnG,MAAM,CAAC,cAAc,EAAE,iFAAiF,CAAC;KACzG,MAAM,CAAC,KAAK;IACX,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;IACtC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC1E,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,8DAA8D,CAAC,CAAA;IACxG,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAE1G,MAAM,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACpE,IAAI,CAAC;YACH,MAAM,KAAK,GACT,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAA;YACxG,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE;gBACjC,KAAK;gBACL,KAAK;gBACL,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrF,CAAC,CAAA;YAEF,IAAI,MAAM,KAAK,QAAQ;gBAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;iBAC1C,CAAC;gBACJ,MAAM,QAAQ,GAAiB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;oBACjD,GAAG,OAAO;oBACV,IAAI,EACF,UAAU,KAAK,SAAS;wBACtB,CAAC,CAAC,OAAO,CAAC,IAAI;wBACd,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnE,SAAS,EAAE,IAAI,CAAC,KAAK;iBACtB,CAAC,CAAC,CACJ,CAAA;gBACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CACV,cAAc,CAAC,QAAQ,EAAE;wBACvB,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,SAAS,EAAE,QAAQ,CAAC,MAAM;wBAC1B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;wBACnC,OAAO,EAAE,QAAQ,CAAC,OAAO;qBAC1B,CAAC,CACH,CAAA;gBACH,CAAC;YACH,CAAC;YACD,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC5C,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,KAAK,EAAE,KAAK,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEN,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,IAA+B,EAAQ,EAAE;IACrE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI;YACX,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,qCAAqC,IAAI,CAAC,EAAE,+BAA+B,CAAC,CAAA;IAC7G,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,sCAAsC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7G,CAAC;IACD,IAAI,KAAK,CAAC,OAAO;QAAE,IAAI,CAAC,4EAA4E,CAAC,CAAA;IACrG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CACF,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,0FAA0F,CAClH,CAAA;IACH,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB;QAAE,IAAI,CAAC,oBAAoB,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAChF,IAAI,CACF,KAAK,CAAC,QAAQ;QACZ,CAAC,CAAC,QAAQ,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,0CAA0C,KAAK,CAAC,KAAK,EAAE;QAC9F,CAAC,CAAC,QAAQ,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,+BAA+B,KAAK,CAAC,KAAK,sBAAsB,CAC1G,CAAA;AACH,CAAC,CAAA"}
|
package/dist/diagnose.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Install } from "./install.js";
|
|
1
2
|
export interface DiagnoseOptions {
|
|
2
3
|
profile: string;
|
|
3
4
|
env?: NodeJS.ProcessEnv;
|
|
@@ -9,6 +10,16 @@ export interface DiagnoseOptions {
|
|
|
9
10
|
/** Where a stored token is — the keyring, or the file that stands in for one; `undefined` for none. */
|
|
10
11
|
storedToken?: (profile: string) => "keyring" | "file" | undefined;
|
|
11
12
|
now?: () => Date;
|
|
13
|
+
install?: () => Install;
|
|
14
|
+
native?: () => Promise<Native>;
|
|
15
|
+
/** The configured speech model's id, and where models are kept. */
|
|
16
|
+
speechModel?: string;
|
|
17
|
+
modelsDir?: string;
|
|
18
|
+
}
|
|
19
|
+
/** `"ok"`, or why that part cannot load — the message names the missing platform build. */
|
|
20
|
+
export interface Native {
|
|
21
|
+
keyring: string;
|
|
22
|
+
sqlite: string;
|
|
12
23
|
}
|
|
13
24
|
export type TokenSource = "environment" | "keyring" | "file" | "none";
|
|
14
25
|
export interface Diagnosis {
|
|
@@ -60,6 +71,13 @@ export interface Diagnosis {
|
|
|
60
71
|
ageDays: number;
|
|
61
72
|
stale: boolean;
|
|
62
73
|
};
|
|
74
|
+
install: Install;
|
|
75
|
+
native: Native;
|
|
76
|
+
speech: {
|
|
77
|
+
model: string;
|
|
78
|
+
languages: string | null;
|
|
79
|
+
downloaded: boolean;
|
|
80
|
+
};
|
|
63
81
|
}
|
|
64
82
|
/** Owner's ruling, NEED-264: the web client releases more often than that, and breaks later. */
|
|
65
83
|
export declare const STALE_AFTER_DAYS = 60;
|
|
@@ -78,5 +96,5 @@ export declare const STALE_AFTER_DAYS = 60;
|
|
|
78
96
|
* identity and writes it out on first read. A diagnosis that creates the thing it is reporting on
|
|
79
97
|
* is not a diagnosis.
|
|
80
98
|
*/
|
|
81
|
-
export declare const diagnose: ({ profile, env, stateDir, cacheDir, readSchemaVersion, storedToken, now, }: DiagnoseOptions) => Promise<Diagnosis>;
|
|
99
|
+
export declare const diagnose: ({ profile, env, stateDir, cacheDir, readSchemaVersion, storedToken, now, install, native, speechModel, modelsDir, }: DiagnoseOptions) => Promise<Diagnosis>;
|
|
82
100
|
//# sourceMappingURL=diagnose.d.ts.map
|
package/dist/diagnose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,OAAO,EAAa,MAAM,cAAc,CAAA;AAMpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACjE,uGAAuG;IACvG,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IACjE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,2FAA2F;AAC3F,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;AAErE,MAAM,WAAW,SAAS;IACxB,+FAA+F;IAC/F,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAA;IAC9C;;;;OAIG;IACH,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,OAAO,CAAA;KAAE,CAAA;IACzD,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAA;QACjB,mFAAmF;QACnF,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,OAAO,CAAA;QACjB,qFAAqF;QACrF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,uFAAuF;QACvF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAChC,CAAA;IACD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,+EAA+E;QAC/E,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,MAAM,EAAE,MAAM,CAAA;QACd,+FAA+F;QAC/F,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,yGAAyG;IACzG,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/F,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;CACzE;AAED,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAElC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,wHAYlB,eAAe,KAAG,OAAO,CAAC,SAAS,CAkDrC,CAAA"}
|
package/dist/diagnose.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
import { pathsAreOverridden, resolvePaths } from "@leemour/cli-core";
|
|
4
5
|
import { openCache } from "./cache/open.js";
|
|
5
6
|
import { SCHEMA_VERSION } from "./cache/schema.js";
|
|
7
|
+
import { checkInstall, ownScript } from "./install.js";
|
|
8
|
+
import { runtime } from "./runs/run.js";
|
|
6
9
|
import { CLIENT } from "./spec/identity.js";
|
|
10
|
+
import { isInstalled, modelsDirectory } from "./transcribe/install.js";
|
|
11
|
+
import { DEFAULT_MODEL, findModel } from "./transcribe/models.js";
|
|
7
12
|
/** Owner's ruling, NEED-264: the web client releases more often than that, and breaks later. */
|
|
8
13
|
export const STALE_AFTER_DAYS = 60;
|
|
9
14
|
/**
|
|
@@ -21,7 +26,7 @@ export const STALE_AFTER_DAYS = 60;
|
|
|
21
26
|
* identity and writes it out on first read. A diagnosis that creates the thing it is reporting on
|
|
22
27
|
* is not a diagnosis.
|
|
23
28
|
*/
|
|
24
|
-
export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir, readSchemaVersion = schemaVersionOf, storedToken = () => undefined, now = () => new Date(), }) => {
|
|
29
|
+
export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir, readSchemaVersion = schemaVersionOf, storedToken = () => undefined, now = () => new Date(), install = () => thisInstall(env), native = loadNative, speechModel = DEFAULT_MODEL, modelsDir, }) => {
|
|
25
30
|
const paths = resolvePaths({ appName: "max-cli", prefix: "MAX", env });
|
|
26
31
|
const state = stateDir ?? paths.state;
|
|
27
32
|
const cacheHome = cacheDir ?? paths.cache;
|
|
@@ -61,6 +66,37 @@ export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir,
|
|
|
61
66
|
},
|
|
62
67
|
runs: { directory: runsDirectory, kept: countEntries(runsDirectory) },
|
|
63
68
|
client: clientAge(now()),
|
|
69
|
+
install: install(),
|
|
70
|
+
native: await native(),
|
|
71
|
+
speech: speechOf(speechModel, modelsDir ?? modelsDirectory(env)),
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
const speechOf = (id, directory) => {
|
|
75
|
+
const model = findModel(id);
|
|
76
|
+
return { model: id, languages: model?.languages ?? null, downloaded: model ? isInstalled(model, directory) : false };
|
|
77
|
+
};
|
|
78
|
+
const thisInstall = (env) => checkInstall({
|
|
79
|
+
scriptPath: ownScript(),
|
|
80
|
+
execPath: process.execPath,
|
|
81
|
+
runtime: runtime(),
|
|
82
|
+
env,
|
|
83
|
+
platform: process.platform,
|
|
84
|
+
});
|
|
85
|
+
/** The two parts that are not JavaScript. Loaded here, never used: a load that fails is the answer. */
|
|
86
|
+
const loadNative = async () => {
|
|
87
|
+
const attempt = async (load) => {
|
|
88
|
+
try {
|
|
89
|
+
await load();
|
|
90
|
+
return "ok";
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return error instanceof Error ? (error.message.split("\n")[0] ?? "failed") : String(error);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
return {
|
|
97
|
+
// The keyring module belongs to cli-core, so it is resolved from there, as cli-core does.
|
|
98
|
+
keyring: await attempt(() => createRequire(import.meta.resolve("@leemour/cli-core"))("@napi-rs/keyring")),
|
|
99
|
+
sqlite: await attempt(async () => (await openCache(":memory:")).close()),
|
|
64
100
|
};
|
|
65
101
|
};
|
|
66
102
|
/** A file that is missing, unreadable or not JSON is "no session", never a thrown error. */
|
package/dist/diagnose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/models.d.ts
CHANGED
|
@@ -160,6 +160,34 @@ export interface Inbox {
|
|
|
160
160
|
/** Only the 40 chats the login named were looked at, and there may be more. */
|
|
161
161
|
partial: boolean;
|
|
162
162
|
}
|
|
163
|
+
/** A message in a review: a voice message carries its text when it has been heard. */
|
|
164
|
+
export type ReviewMessage = Message & {
|
|
165
|
+
transcript?: string;
|
|
166
|
+
};
|
|
167
|
+
export interface ReviewChat extends Pick<Chat, "id" | "title" | "kind"> {
|
|
168
|
+
/** Both sides, oldest first, from `since` to `until`. */
|
|
169
|
+
messages: ReviewMessage[];
|
|
170
|
+
/** The chat had more in the window than one review reads; the oldest are here. */
|
|
171
|
+
more: boolean;
|
|
172
|
+
}
|
|
173
|
+
/** `max review`: everything said since a point, for someone sorting out who owes what. */
|
|
174
|
+
export interface Review {
|
|
175
|
+
/** ISO 8601. `until` is where the next review starts. */
|
|
176
|
+
since: string;
|
|
177
|
+
until: string;
|
|
178
|
+
/** Nothing skipped, cut short or left unheard: the review may move its boundary to `until`. */
|
|
179
|
+
complete: boolean;
|
|
180
|
+
chats: ReviewChat[];
|
|
181
|
+
skipped: Pick<Chat, "id" | "title" | "lastMessageAt">[];
|
|
182
|
+
/** Voice messages with no text yet. */
|
|
183
|
+
unheard: {
|
|
184
|
+
chatId: Id;
|
|
185
|
+
messageId: Id;
|
|
186
|
+
}[];
|
|
187
|
+
/** Why `--transcribe` could not run, when it could not. */
|
|
188
|
+
transcribeProblem?: string;
|
|
189
|
+
partial: boolean;
|
|
190
|
+
}
|
|
163
191
|
export interface Contact {
|
|
164
192
|
id: Id;
|
|
165
193
|
name: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/domain/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/domain/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/domain/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/domain/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2RH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAM,EAAsB,EAAE;IAC5D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAA;IACtC,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AAClE,CAAC,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type Installer } from "@leemour/cli-core/update";
|
|
2
|
+
export interface InstallOptions {
|
|
3
|
+
scriptPath: string;
|
|
4
|
+
execPath: string;
|
|
5
|
+
/** `node 24.19.0` or `bun 1.3.14`: under Bun, `process.versions.node` is the version it imitates. */
|
|
6
|
+
runtime: string;
|
|
7
|
+
env: NodeJS.ProcessEnv;
|
|
8
|
+
/** Injected, never read at import: Linux CI then covers the Windows branch on every push. */
|
|
9
|
+
platform: NodeJS.Platform;
|
|
10
|
+
exists?: (file: string) => boolean;
|
|
11
|
+
realpath?: (file: string) => string;
|
|
12
|
+
read?: (file: string) => string;
|
|
13
|
+
}
|
|
14
|
+
export interface Install {
|
|
15
|
+
runtime: {
|
|
16
|
+
version: string;
|
|
17
|
+
path: string;
|
|
18
|
+
};
|
|
19
|
+
installer: Installer;
|
|
20
|
+
/** Where the package manager put the `max` command; `null` when this install has none or it cannot be told. */
|
|
21
|
+
binDir: string | null;
|
|
22
|
+
binDirOnPath: boolean | null;
|
|
23
|
+
/** The `max` a new terminal would run, or `null` for none on PATH. */
|
|
24
|
+
onPath: string | null;
|
|
25
|
+
/** Whether that `max` is max-cli at all — any copy — rather than another program called `max`. */
|
|
26
|
+
isMaxCli: boolean | null;
|
|
27
|
+
/** Commands that put `binDir` on PATH, for this platform's shell. Empty when nothing is wrong. */
|
|
28
|
+
fix: string[];
|
|
29
|
+
}
|
|
30
|
+
/** This installation's `dist/bin/max.js`, through any link — what `node <script>` must be given. */
|
|
31
|
+
export declare const ownScript: () => string;
|
|
32
|
+
/**
|
|
33
|
+
* **Where the command is and whether a terminal finds it**, worked out from our own path and the
|
|
34
|
+
* environment only. No `npm prefix -g`: on Windows `npm` is `npm.cmd`, which Node does not start
|
|
35
|
+
* without a shell, and `doctor` has to answer quickly when everything else is broken.
|
|
36
|
+
*/
|
|
37
|
+
export declare const checkInstall: ({ scriptPath, execPath, runtime, env, platform, exists, realpath, read, }: InstallOptions) => Install;
|
|
38
|
+
/**
|
|
39
|
+
* PowerShell on Windows, a POSIX shell elsewhere. Single quotes in both, so `$` and backticks in a
|
|
40
|
+
* path need no escaping; a quote inside is doubled for PowerShell and closed-and-escaped for sh.
|
|
41
|
+
*/
|
|
42
|
+
export declare const pathFix: (binDir: string, windows: boolean) => string[];
|
|
43
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,0BAA0B,CAAA;AAEtE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,qGAAqG;IACrG,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,6FAA6F;IAC7F,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACnC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,SAAS,EAAE,SAAS,CAAA;IACpB,+GAA+G;IAC/G,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,sEAAsE;IACtE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,kGAAkG;IAClG,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,kGAAkG;IAClG,GAAG,EAAE,MAAM,EAAE,CAAA;CACd;AAKD,oGAAoG;AACpG,eAAO,MAAM,SAAS,QAAO,MAO5B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,8EAStB,cAAc,KAAG,OAyBnB,CAAA;AAwFD;;;GAGG;AACH,eAAO,MAAM,OAAO,WAAY,MAAM,WAAW,OAAO,KAAG,MAAM,EAOhE,CAAA"}
|