@leemour/max-cli 0.4.0 → 0.6.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 +14 -5
- package/dist/bin/max.js +0 -0
- package/dist/cache/store.d.ts +14 -8
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +30 -5
- package/dist/cache/store.js.map +1 -1
- package/dist/client.d.ts +93 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +347 -59
- package/dist/client.js.map +1 -1
- package/dist/commands/chats.d.ts.map +1 -1
- package/dist/commands/chats.js +20 -0
- package/dist/commands/chats.js.map +1 -1
- package/dist/commands/commands.d.ts +8 -0
- package/dist/commands/commands.d.ts.map +1 -0
- package/dist/commands/commands.js +36 -0
- package/dist/commands/commands.js.map +1 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +29 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/contacts.d.ts.map +1 -1
- package/dist/commands/contacts.js +18 -0
- package/dist/commands/contacts.js.map +1 -1
- package/dist/commands/context.d.ts +18 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +22 -0
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/inbox.d.ts +14 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +90 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/messages.d.ts.map +1 -1
- package/dist/commands/messages.js +55 -4
- package/dist/commands/messages.js.map +1 -1
- package/dist/commands/reactions.d.ts +3 -0
- package/dist/commands/reactions.d.ts.map +1 -0
- package/dist/commands/reactions.js +26 -0
- package/dist/commands/reactions.js.map +1 -0
- package/dist/commands/recipients.d.ts +9 -0
- package/dist/commands/recipients.d.ts.map +1 -0
- package/dist/commands/recipients.js +68 -0
- package/dist/commands/recipients.js.map +1 -0
- package/dist/commands/sends.d.ts +4 -0
- package/dist/commands/sends.d.ts.map +1 -0
- package/dist/commands/sends.js +21 -0
- package/dist/commands/sends.js.map +1 -0
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +80 -15
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +2 -1
- package/dist/commands/skill.js.map +1 -1
- package/dist/config.d.ts +54 -13
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +98 -16
- package/dist/config.js.map +1 -1
- package/dist/domain/map.d.ts +3 -1
- package/dist/domain/map.d.ts.map +1 -1
- package/dist/domain/map.js +15 -1
- package/dist/domain/map.js.map +1 -1
- package/dist/domain/models.d.ts +55 -1
- package/dist/domain/models.d.ts.map +1 -1
- package/dist/domain/models.js.map +1 -1
- package/dist/download.d.ts +15 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +60 -0
- package/dist/download.js.map +1 -0
- package/dist/generated/client.generated.d.ts +14 -0
- package/dist/generated/client.generated.d.ts.map +1 -1
- package/dist/generated/client.generated.js +14 -0
- package/dist/generated/client.generated.js.map +1 -1
- package/dist/generated/opcodes.generated.d.ts +15 -0
- package/dist/generated/opcodes.generated.d.ts.map +1 -1
- package/dist/generated/opcodes.generated.js +15 -0
- package/dist/generated/opcodes.generated.js.map +1 -1
- package/dist/generated/operations.generated.d.ts +99 -1
- package/dist/generated/operations.generated.d.ts.map +1 -1
- package/dist/generated/operations.generated.js +13 -1
- package/dist/generated/operations.generated.js.map +1 -1
- package/dist/markdown.d.ts +18 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +52 -0
- package/dist/markdown.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +10 -0
- package/dist/program.js.map +1 -1
- package/dist/rendering/messages.d.ts.map +1 -1
- package/dist/rendering/messages.js +6 -0
- package/dist/rendering/messages.js.map +1 -1
- package/dist/resolve.d.ts +15 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +48 -0
- package/dist/resolve.js.map +1 -0
- package/dist/runs/recording.d.ts.map +1 -1
- package/dist/runs/recording.js +7 -0
- package/dist/runs/recording.js.map +1 -1
- package/dist/runs/run.d.ts +2 -0
- package/dist/runs/run.d.ts.map +1 -1
- package/dist/runs/run.js +1 -0
- package/dist/runs/run.js.map +1 -1
- package/dist/sends/guard.d.ts +26 -0
- package/dist/sends/guard.d.ts.map +1 -0
- package/dist/sends/guard.js +48 -0
- package/dist/sends/guard.js.map +1 -0
- package/dist/sends/journal.d.ts +29 -0
- package/dist/sends/journal.d.ts.map +1 -0
- package/dist/sends/journal.js +40 -0
- package/dist/sends/journal.js.map +1 -0
- package/dist/sends/recipients.d.ts +29 -0
- package/dist/sends/recipients.d.ts.map +1 -0
- package/dist/sends/recipients.js +62 -0
- package/dist/sends/recipients.js.map +1 -0
- package/dist/session/adopt.d.ts.map +1 -1
- package/dist/session/adopt.js +7 -6
- package/dist/session/adopt.js.map +1 -1
- package/dist/session/browser.d.ts +55 -0
- package/dist/session/browser.d.ts.map +1 -0
- package/dist/session/browser.js +292 -0
- package/dist/session/browser.js.map +1 -0
- package/dist/session/handshake.d.ts +3 -1
- package/dist/session/handshake.d.ts.map +1 -1
- package/dist/session/handshake.js +3 -1
- package/dist/session/handshake.js.map +1 -1
- package/dist/session/login.d.ts +20 -0
- package/dist/session/login.d.ts.map +1 -0
- package/dist/session/login.js +66 -0
- package/dist/session/login.js.map +1 -0
- package/dist/session/prompt.d.ts +3 -1
- package/dist/session/prompt.d.ts.map +1 -1
- package/dist/session/prompt.js +2 -2
- package/dist/session/prompt.js.map +1 -1
- package/dist/session/qr-terminal.d.ts +9 -0
- package/dist/session/qr-terminal.d.ts.map +1 -0
- package/dist/session/qr-terminal.js +34 -0
- package/dist/session/qr-terminal.js.map +1 -0
- package/dist/session/store.d.ts +2 -0
- package/dist/session/store.d.ts.map +1 -1
- package/dist/session/store.js +2 -0
- package/dist/session/store.js.map +1 -1
- package/dist/spec/index.d.ts.map +1 -1
- package/dist/spec/index.js +14 -1
- package/dist/spec/index.js.map +1 -1
- package/dist/spec/operations/attachments.d.ts +15 -0
- package/dist/spec/operations/attachments.d.ts.map +1 -0
- package/dist/spec/operations/attachments.js +38 -0
- package/dist/spec/operations/attachments.js.map +1 -0
- package/dist/spec/operations/login.d.ts +64 -0
- package/dist/spec/operations/login.d.ts.map +1 -0
- package/dist/spec/operations/login.js +99 -0
- package/dist/spec/operations/login.js.map +1 -0
- package/dist/spec/operations/messages.d.ts +27 -1
- package/dist/spec/operations/messages.d.ts.map +1 -1
- package/dist/spec/operations/messages.js +46 -2
- package/dist/spec/operations/messages.js.map +1 -1
- package/dist/testing/mock-max.d.ts +10 -4
- package/dist/testing/mock-max.d.ts.map +1 -1
- package/dist/testing/mock-max.js +5 -1
- package/dist/testing/mock-max.js.map +1 -1
- package/dist/testing/sandbox.js +3 -0
- package/dist/testing/sandbox.js.map +1 -1
- package/dist/testing/unscripted.d.ts +2 -0
- package/dist/testing/unscripted.d.ts.map +1 -0
- package/dist/testing/unscripted.js +18 -0
- package/dist/testing/unscripted.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +31 -22
- package/skills/max-cli/SKILL.md +25 -6
- package/dist/commands/login.d.ts +0 -15
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -43
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -10
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js +0 -22
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/me.d.ts +0 -3
- package/dist/commands/me.d.ts.map +0 -1
- package/dist/commands/me.js +0 -18
- package/dist/commands/me.js.map +0 -1
- package/dist/commands/send.d.ts +0 -10
- package/dist/commands/send.d.ts.map +0 -1
- package/dist/commands/send.js +0 -30
- package/dist/commands/send.js.map +0 -1
- package/dist/protocol/session.d.ts +0 -54
- package/dist/protocol/session.d.ts.map +0 -1
- package/dist/protocol/session.js +0 -57
- package/dist/protocol/session.js.map +0 -1
- package/dist/spec/operations/auth.d.ts +0 -42
- package/dist/spec/operations/auth.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,eAAO,MAAM,eAAe,QAAO,OAmNlC,CAAA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { annotate } from "@leemour/cli-core/commands";
|
|
2
3
|
import { Command } from "commander";
|
|
3
4
|
import { openProfileCache } from "../cache/index.js";
|
|
5
|
+
import { save } from "../download.js";
|
|
4
6
|
import { renderMessages } from "../rendering/messages.js";
|
|
5
7
|
import { readBody } from "./body.js";
|
|
6
8
|
import { forCommand } from "./context.js";
|
|
@@ -20,17 +22,27 @@ export const messagesCommand = () => {
|
|
|
20
22
|
// rather than approximate. A message id is what the reader has in front of them, having just
|
|
21
23
|
// read the output; an ISO 8601 time is what still works once that message is gone.
|
|
22
24
|
.option("--before <id-or-time>", "read what came before this message id, or this ISO 8601 time")
|
|
25
|
+
.option("--after <id-or-time>", "read what came after this message id, or this ISO 8601 time; not with --before")
|
|
23
26
|
.action(async function (chat) {
|
|
24
27
|
const options = this.optsWithGlobals();
|
|
28
|
+
if (options.before !== undefined && options.after !== undefined) {
|
|
29
|
+
throw new CliError("validation_error", "--before and --after are two directions; give one of them");
|
|
30
|
+
}
|
|
25
31
|
const context = forCommand(this);
|
|
26
32
|
const { renderer, settings, createClient, run } = context;
|
|
27
33
|
const cache = await openProfileCache(settings.profile, { onProblem: (message) => renderer.note(message) });
|
|
28
34
|
await run("messages list", async (events) => {
|
|
29
35
|
const client = createClient({ events, ...(cache ? { cache } : {}) });
|
|
30
36
|
try {
|
|
37
|
+
const anchor = options.after !== undefined
|
|
38
|
+
? { after: client.messages.moment(String(options.after), "--after") }
|
|
39
|
+
: options.before !== undefined
|
|
40
|
+
? { before: client.messages.moment(String(options.before)) }
|
|
41
|
+
: {};
|
|
31
42
|
const chatId = await client.chats.resolve(chat);
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
renderPage(context, await client.messages.list(chatId, { limit: settings.limit, ...anchor }), feed(context), (items) => "after" in anchor
|
|
44
|
+
? `newer ones: \`--after ${items.at(-1)?.id}\``
|
|
45
|
+
: `older ones: \`--before ${items[0]?.id}\``);
|
|
34
46
|
}
|
|
35
47
|
finally {
|
|
36
48
|
await client.close();
|
|
@@ -100,6 +112,42 @@ export const messagesCommand = () => {
|
|
|
100
112
|
const { before, after } = this.opts();
|
|
101
113
|
await readWindow(this, chat, messageId, { before, after }, "messages context");
|
|
102
114
|
});
|
|
115
|
+
command
|
|
116
|
+
.command("download")
|
|
117
|
+
.argument("<chat>", "chat id, or part of a chat name")
|
|
118
|
+
.argument("<message>", "message id")
|
|
119
|
+
.description("save a message's photos, files, videos and audio to a directory")
|
|
120
|
+
.option("--output <dir>", "where to save them", ".")
|
|
121
|
+
.action(async function (chat, messageId) {
|
|
122
|
+
const { output } = this.opts();
|
|
123
|
+
const context = forCommand(this);
|
|
124
|
+
const { renderer, format, streams, createClient, run } = context;
|
|
125
|
+
await run("messages download", async (events) => {
|
|
126
|
+
const client = createClient({ events });
|
|
127
|
+
try {
|
|
128
|
+
const chatId = await client.chats.resolve(chat);
|
|
129
|
+
const id = messageId.trim();
|
|
130
|
+
const { links, skipped } = await client.messages.links(chatId, id);
|
|
131
|
+
if (skipped.length > 0)
|
|
132
|
+
renderer.note(`not downloadable: ${skipped.join(", ")}`);
|
|
133
|
+
if (links.length === 0)
|
|
134
|
+
throw new CliError("not_found", `message ${id} has nothing to download`);
|
|
135
|
+
const saved = [];
|
|
136
|
+
for (const [index, attachment] of links.entries()) {
|
|
137
|
+
if (attachment.unsafe)
|
|
138
|
+
renderer.note(`MAX marks ${attachment.name ?? "this file"} as possibly unsafe`);
|
|
139
|
+
saved.push(await save(attachment, output, `${id}-${index + 1}`));
|
|
140
|
+
}
|
|
141
|
+
if (format === "pretty")
|
|
142
|
+
streams.data(`${saved.map((file) => file.path).join("\n")}\n`);
|
|
143
|
+
else
|
|
144
|
+
renderer.result({ items: saved });
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
await client.close();
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
103
151
|
/**
|
|
104
152
|
* One message, one command, no retry.
|
|
105
153
|
*
|
|
@@ -110,8 +158,7 @@ export const messagesCommand = () => {
|
|
|
110
158
|
* **The body may come from a pipe instead**, by leaving the argument off — `readBody` says why
|
|
111
159
|
* argv is the wrong place for it and why omission is the signal rather than a flag.
|
|
112
160
|
*/
|
|
113
|
-
command
|
|
114
|
-
.command("send")
|
|
161
|
+
annotate(command.command("send"), { mutates: true })
|
|
115
162
|
.argument("<chat>", "chat id, or part of a chat name")
|
|
116
163
|
.argument("[text]", "what to say; leave it off to read the message from stdin")
|
|
117
164
|
.description("send one text message")
|
|
@@ -120,6 +167,8 @@ export const messagesCommand = () => {
|
|
|
120
167
|
// whose absence is felt at the other end rather than here: a script posting at 3am wakes
|
|
121
168
|
// somebody up, and there was no way to say otherwise.
|
|
122
169
|
.option("--silent", "deliver without a notification")
|
|
170
|
+
.option("--reply-to <message>", "answer this message id in the same chat")
|
|
171
|
+
.option("--md, --markdown", "read **bold**, _italic_, ~~struck~~ and `code` in the text; \\ keeps a mark literal")
|
|
123
172
|
.action(async function (chat, text) {
|
|
124
173
|
const options = this.optsWithGlobals();
|
|
125
174
|
const { renderer, settings, createClient, run } = forCommand(this);
|
|
@@ -134,6 +183,8 @@ export const messagesCommand = () => {
|
|
|
134
183
|
const sent = await client.messages.send(chatId, body, {
|
|
135
184
|
...(options.cid === undefined ? {} : { cid: options.cid }),
|
|
136
185
|
...(options.silent === true ? { notify: false } : {}),
|
|
186
|
+
...(options.replyTo === undefined ? {} : { replyTo: String(options.replyTo).trim() }),
|
|
187
|
+
...(options.markdown === true ? { markdown: true } : {}),
|
|
137
188
|
});
|
|
138
189
|
renderer.result(sent);
|
|
139
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/commands/reactions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,eAAO,MAAM,gBAAgB,QAAO,OAuBnC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { annotate } from "@leemour/cli-core/commands";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { forCommand } from "./context.js";
|
|
4
|
+
export const reactionsCommand = () => {
|
|
5
|
+
const command = new Command("reactions").description("react to messages");
|
|
6
|
+
annotate(command.command("add"), { mutates: true })
|
|
7
|
+
.argument("<chat>", "chat id, or part of a chat name")
|
|
8
|
+
.argument("<message>", "message id")
|
|
9
|
+
.argument("<emoji>", "one emoji, for example 👍")
|
|
10
|
+
.description("put your reaction on a message; it replaces the one you had")
|
|
11
|
+
.action(async function (chat, messageId, emoji) {
|
|
12
|
+
const { renderer, createClient, run } = forCommand(this);
|
|
13
|
+
await run("reactions add", async (events) => {
|
|
14
|
+
const client = createClient({ events });
|
|
15
|
+
try {
|
|
16
|
+
const chatId = await client.chats.resolve(chat);
|
|
17
|
+
renderer.result(await client.messages.react(chatId, messageId.trim(), emoji.trim()));
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
await client.close();
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
return command;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=reactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/commands/reactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAY,EAAE;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAA;IAEzE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SAChD,QAAQ,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACrD,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;SACnC,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;SAChD,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,KAAK,WAA0B,IAAY,EAAE,SAAiB,EAAE,KAAa;QACnF,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAExD,MAAM,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YACvC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC/C,QAAQ,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACtF,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* The chats this profile may send to. Off until the first `add`; `off` turns it off again.
|
|
4
|
+
*
|
|
5
|
+
* Scripts may change it too (`NEED-159` answers): the list stops a model that a message talked
|
|
6
|
+
* into writing somewhere, not an agent set on getting around it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const recipientsCommand: () => Command;
|
|
9
|
+
//# sourceMappingURL=recipients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipients.d.ts","sourceRoot":"","sources":["../../src/commands/recipients.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAO,OA0DpC,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { RecipientList, recipientsPathFor } from "../sends/recipients.js";
|
|
4
|
+
import { forCommand } from "./context.js";
|
|
5
|
+
/**
|
|
6
|
+
* The chats this profile may send to. Off until the first `add`; `off` turns it off again.
|
|
7
|
+
*
|
|
8
|
+
* Scripts may change it too (`NEED-159` answers): the list stops a model that a message talked
|
|
9
|
+
* into writing somewhere, not an agent set on getting around it.
|
|
10
|
+
*/
|
|
11
|
+
export const recipientsCommand = () => {
|
|
12
|
+
const command = new Command("recipients").description("the chats this profile may send to, when the list is on");
|
|
13
|
+
command
|
|
14
|
+
.command("list")
|
|
15
|
+
.description("the chats on the list; empty and off until the first add")
|
|
16
|
+
.action(function () {
|
|
17
|
+
const { settings, renderer } = forCommand(this);
|
|
18
|
+
const chats = listFor(settings.profile).read();
|
|
19
|
+
renderer.stream(chats ?? []);
|
|
20
|
+
if (!chats)
|
|
21
|
+
renderer.note("the recipient list is off — this profile may send to any chat");
|
|
22
|
+
else if (chats.length === 0)
|
|
23
|
+
renderer.note("the recipient list is on and empty — this profile may send nowhere");
|
|
24
|
+
});
|
|
25
|
+
command
|
|
26
|
+
.command("add")
|
|
27
|
+
.argument("<chat>", "chat id, or part of a chat name")
|
|
28
|
+
.description("allow sending to this chat; the first add turns the list on")
|
|
29
|
+
.action(async function (chat) {
|
|
30
|
+
const { settings, renderer, createClient, run } = forCommand(this);
|
|
31
|
+
await run("recipients add", async (events) => {
|
|
32
|
+
const client = createClient({ events });
|
|
33
|
+
try {
|
|
34
|
+
const found = await client.chats.show(chat);
|
|
35
|
+
const added = listFor(settings.profile).add({
|
|
36
|
+
id: found.id,
|
|
37
|
+
title: found.title,
|
|
38
|
+
addedAt: new Date().toISOString(),
|
|
39
|
+
});
|
|
40
|
+
renderer.result({ id: found.id, title: found.title, added });
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
await client.close();
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
command
|
|
48
|
+
.command("remove")
|
|
49
|
+
.argument("<chat>", "chat id, or the title as the list shows it")
|
|
50
|
+
.description("stop allowing this chat; the list stays on")
|
|
51
|
+
.action(function (chat) {
|
|
52
|
+
const { settings, renderer } = forCommand(this);
|
|
53
|
+
const gone = listFor(settings.profile).remove(chat);
|
|
54
|
+
if (!gone)
|
|
55
|
+
throw new CliError("not_found", `${chat.trim()} is not on the recipient list of ${settings.profile}`);
|
|
56
|
+
renderer.result({ id: gone.id, title: gone.title, removed: true });
|
|
57
|
+
});
|
|
58
|
+
command
|
|
59
|
+
.command("off")
|
|
60
|
+
.description("turn the list off: this profile may send to any chat again")
|
|
61
|
+
.action(function () {
|
|
62
|
+
const { settings, renderer } = forCommand(this);
|
|
63
|
+
renderer.result({ off: true, wasOn: listFor(settings.profile).off() });
|
|
64
|
+
});
|
|
65
|
+
return command;
|
|
66
|
+
};
|
|
67
|
+
const listFor = (profile) => new RecipientList(recipientsPathFor(profile));
|
|
68
|
+
//# sourceMappingURL=recipients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipients.js","sourceRoot":"","sources":["../../src/commands/recipients.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sends.d.ts","sourceRoot":"","sources":["../../src/commands/sends.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,8FAA8F;AAC9F,eAAO,MAAM,YAAY,QAAO,OAiB/B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { SendJournal, sendsPathFor } from "../sends/journal.js";
|
|
3
|
+
import { forCommand } from "./context.js";
|
|
4
|
+
/** Every attempt to send from this profile, kept whatever `--record` says. Never the text. */
|
|
5
|
+
export const sendsCommand = () => {
|
|
6
|
+
const command = new Command("sends").description("every attempt to send from this profile — never the text");
|
|
7
|
+
command
|
|
8
|
+
.command("list")
|
|
9
|
+
.description("attempts to send, newest first: sent, refused, failed, or not known")
|
|
10
|
+
.option("--limit <n>", "how many to show", (value) => Number.parseInt(value, 10), 20)
|
|
11
|
+
.action(function () {
|
|
12
|
+
const { limit } = this.opts();
|
|
13
|
+
const { settings, renderer } = forCommand(this);
|
|
14
|
+
const entries = new SendJournal(sendsPathFor(settings.profile)).entries().reverse();
|
|
15
|
+
renderer.stream(entries.slice(0, limit));
|
|
16
|
+
if (entries.length === 0)
|
|
17
|
+
renderer.note(`profile ${settings.profile} has not tried to send anything`);
|
|
18
|
+
});
|
|
19
|
+
return command;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=sends.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sends.js","sourceRoot":"","sources":["../../src/commands/sends.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,YAAY,GAAG,GAAY,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0DAA0D,CAAC,CAAA;IAE5G,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,aAAa,EAAE,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;SACpF,MAAM,CAAC;QACN,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAqB,CAAA;QAChD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAA;QAEnF,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;QACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,OAAO,iCAAiC,CAAC,CAAA;IACvG,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,MAAM,WAAW,CAAA;AAe7C,eAAO,MAAM,cAAc,QAAO,OAmGjC,CAAA"}
|
package/dist/commands/session.js
CHANGED
|
@@ -1,44 +1,72 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
1
|
+
import { Argument, Command } from "commander";
|
|
2
2
|
import { commandWords, refuseCommandName, rootOf } from "../profile.js";
|
|
3
3
|
import { adoptToken } from "../session/adopt.js";
|
|
4
|
+
import { serveQrPage } from "../session/browser.js";
|
|
4
5
|
import { readSecret } from "../session/prompt.js";
|
|
6
|
+
import { terminalQr } from "../session/qr-terminal.js";
|
|
5
7
|
import { forCommand } from "./context.js";
|
|
8
|
+
// NEED-149: gentle on purpose — it asks for ordinary use alongside, and does not cite blocked accounts.
|
|
9
|
+
const TERMS_NOTICE = [
|
|
10
|
+
"max is not the official MAX app, and the MAX terms do not allow automated programs (legal.max.ru/ps, 4.3.7).",
|
|
11
|
+
"Keep using MAX as usual in the browser or on your phone alongside it. More: docs/security.md",
|
|
12
|
+
].join("\n");
|
|
6
13
|
export const sessionCommand = () => {
|
|
7
14
|
const command = new Command("session").description("the stored MAX session for this profile");
|
|
8
15
|
/**
|
|
9
|
-
*
|
|
16
|
+
* Four ways to a token, and one way to keep it: whatever produced the token, it reaches the
|
|
17
|
+
* keyring only once MAX has accepted it (`adoptToken`).
|
|
10
18
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
19
|
+
* - `token` — pasted, or piped: `pass show max | max session start`. The default, and the escape
|
|
20
|
+
* hatch when a login meets a captcha or an unusual second factor.
|
|
21
|
+
* - `qr` — our own connection asks MAX for the code; it is drawn here, or opened in the default
|
|
22
|
+
* browser when the terminal is too narrow for it.
|
|
23
|
+
* - `qr-chrome`, `sms` — web.max.ru itself does the login, in a Chromium-family browser with a
|
|
24
|
+
* throwaway profile, and we read the token it stores. MAX sees its own web client. SMS has no
|
|
25
|
+
* other door: asked over our socket, MAX demands a captcha only the page can solve (2026-09-24).
|
|
14
26
|
*
|
|
15
|
-
* **
|
|
16
|
-
* history, and a file leaves a copy nobody deletes, so with `MAX_TOKEN` unset it is read from the
|
|
17
|
-
* terminal without being echoed — or from a pipe, for `pass show max | max session start`. From
|
|
18
|
-
* there it goes to the OS keyring — **but only once MAX has accepted it**, which is `adoptToken`.
|
|
27
|
+
* **A token is never an argument.** argv is read by `ps` and kept by shell history.
|
|
19
28
|
*/
|
|
20
29
|
command
|
|
21
30
|
.command("start")
|
|
22
|
-
.description("
|
|
23
|
-
.
|
|
24
|
-
|
|
31
|
+
.description("log this profile in to MAX")
|
|
32
|
+
.addArgument(new Argument("[method]", "token (pasted or piped), qr, qr-chrome or sms").choices(METHODS).default("token"))
|
|
33
|
+
.action(async function (method) {
|
|
34
|
+
const context = forCommand(this);
|
|
35
|
+
const { renderer, settings, store, createClient, run, interactive } = context;
|
|
25
36
|
// Creation is the only moment the collision can still be explained; after this the name is
|
|
26
37
|
// written down and `max <name>` would silently be a command instead.
|
|
27
38
|
refuseCommandName(settings.profile, commandWords(rootOf(this)));
|
|
28
|
-
|
|
39
|
+
if (method !== "token" && !interactive) {
|
|
40
|
+
renderer.failure(`\`session start ${method}\` needs a person at a terminal — use \`session start token\``);
|
|
41
|
+
process.exitCode = 2;
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// It outranks the keyring, so every later command would still log in with it and the new
|
|
45
|
+
// session would look as if it had not worked.
|
|
46
|
+
if (method !== "token" && process.env.MAX_TOKEN) {
|
|
47
|
+
renderer.failure("MAX_TOKEN is set, and it would outrank the new session — unset it first");
|
|
48
|
+
process.exitCode = 2;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const pasted = method === "token" ? process.env.MAX_TOKEN?.trim() || (await readSecret("MAX token: ")) : undefined;
|
|
29
52
|
// Before the run directory: nothing was attempted, so there is nothing to record.
|
|
30
|
-
if (!
|
|
53
|
+
if (method === "token" && !pasted) {
|
|
31
54
|
renderer.failure("no token given");
|
|
32
55
|
process.exitCode = 2;
|
|
33
56
|
return;
|
|
34
57
|
}
|
|
35
58
|
await run("session start", async (events) => {
|
|
59
|
+
const token = method === "token" ? String(pasted) : await obtain(method, context, events);
|
|
36
60
|
const client = createClient({ events });
|
|
61
|
+
// No account on record means this profile has never logged in, or `session end` forgot it.
|
|
62
|
+
const firstLogin = store.readState().viewerId === undefined;
|
|
37
63
|
try {
|
|
38
64
|
await adoptToken(client, store, token);
|
|
39
65
|
const profile = client.account.me();
|
|
40
|
-
renderer.result({ profile, stored: true });
|
|
66
|
+
renderer.result({ profile, stored: true, method });
|
|
41
67
|
renderer.success(`logged in as ${profile.name ?? profile.id}`);
|
|
68
|
+
if (firstLogin)
|
|
69
|
+
renderer.note(TERMS_NOTICE);
|
|
42
70
|
}
|
|
43
71
|
finally {
|
|
44
72
|
await client.close();
|
|
@@ -71,4 +99,41 @@ export const sessionCommand = () => {
|
|
|
71
99
|
});
|
|
72
100
|
return command;
|
|
73
101
|
};
|
|
102
|
+
const METHODS = ["token", "qr", "qr-chrome", "sms"];
|
|
103
|
+
/** Long enough to find the phone and type a number and a code; the profile dies with the wait. */
|
|
104
|
+
const BROWSER_WAIT_MS = 5 * 60_000;
|
|
105
|
+
const obtain = async (method, { createClient, renderer, browser, track, ask, streams, columns }, events) => {
|
|
106
|
+
if (method !== "qr") {
|
|
107
|
+
renderer.note(method === "qr-chrome"
|
|
108
|
+
? "web.max.ru is opening in a separate browser window — scan its QR code with the MAX app on your phone"
|
|
109
|
+
: "web.max.ru is opening in a separate browser window — choose to log in by phone number there");
|
|
110
|
+
return await browser.chromiumToken({ track, waitMs: BROWSER_WAIT_MS });
|
|
111
|
+
}
|
|
112
|
+
const client = createClient({ events });
|
|
113
|
+
let page;
|
|
114
|
+
try {
|
|
115
|
+
return await client.login.byQr({
|
|
116
|
+
show: async (link) => {
|
|
117
|
+
const drawn = terminalQr(link);
|
|
118
|
+
// Straight to the diagnostic stream, not through the renderer: --quiet must not hide the code.
|
|
119
|
+
if (columns !== undefined && drawn.width <= columns) {
|
|
120
|
+
streams.diagnostic(drawn.text);
|
|
121
|
+
renderer.note("scan this code with the MAX app on your phone");
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
page = await serveQrPage(link);
|
|
125
|
+
track(page);
|
|
126
|
+
await browser.open(page.url);
|
|
127
|
+
renderer.note("the terminal is too narrow for the QR code, so it is open in your browser — scan it there");
|
|
128
|
+
},
|
|
129
|
+
askPassword: (hint, again) => ask(`${again ? "wrong password, try again" : "MAX password"}${hint ? ` (hint: ${hint})` : ""}: `, {
|
|
130
|
+
secret: true,
|
|
131
|
+
}),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
await page?.close();
|
|
136
|
+
await client.close();
|
|
137
|
+
}
|
|
138
|
+
};
|
|
74
139
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,YAAY,QAAO,
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,YAAY,QAAO,OAmB/B,CAAA"}
|
package/dist/commands/skill.js
CHANGED
|
@@ -7,7 +7,8 @@ export const skillCommand = () => {
|
|
|
7
7
|
const command = new Command("skill").description("the instructions an agent is given for this tool");
|
|
8
8
|
command
|
|
9
9
|
.command("show")
|
|
10
|
-
.description("print SKILL.md —
|
|
10
|
+
.description("print SKILL.md — redirect it into ~/.claude/skills/max-cli/SKILL.md for Claude Code, " +
|
|
11
|
+
"or ~/.agents/skills/max-cli/SKILL.md for Codex and Gemini CLI")
|
|
11
12
|
.action(function () {
|
|
12
13
|
const { settings, renderer, streams } = forCommand(this);
|
|
13
14
|
const content = readFileSync(SKILL, "utf8").trimEnd();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,oGAAoG;AACpG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAY,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAA;IAEpG,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,oGAAoG;AACpG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAY,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAA;IAEpG,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,uFAAuF;QACrF,+DAA+D,CAClE;SACA,MAAM,CAAC;QACN,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;QACrD,2FAA2F;QAC3F,qFAAqF;QACrF,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK;YAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;;YAC7E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,17 +1,44 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
|
+
declare const profileSettings: v.StrictObjectSchema<{
|
|
3
|
+
limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
4
|
+
timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
5
|
+
color: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
6
|
+
senderColors: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
7
|
+
/** The run log reads these two; nothing records anything until it exists. */
|
|
8
|
+
record: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
9
|
+
keepRunsForDays: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
10
|
+
readOnly: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
11
|
+
sendsPerHour: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
12
|
+
}, v.ErrorMessage<v.StrictObjectIssue>>;
|
|
2
13
|
export declare const configSchema: v.StrictObjectSchema<{
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
readonly
|
|
8
|
-
|
|
14
|
+
defaultProfile: v.OptionalSchema<v.StringSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
15
|
+
/** What every profile gets unless it says otherwise. */
|
|
16
|
+
defaults: v.OptionalSchema<v.StrictObjectSchema<{
|
|
17
|
+
limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
18
|
+
timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
19
|
+
color: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
20
|
+
senderColors: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
9
21
|
/** The run log reads these two; nothing records anything until it exists. */
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
22
|
+
record: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
23
|
+
keepRunsForDays: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
24
|
+
readOnly: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
25
|
+
sendsPerHour: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
26
|
+
}, v.ErrorMessage<v.StrictObjectIssue>>, undefined>;
|
|
27
|
+
profiles: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StrictObjectSchema<{
|
|
28
|
+
limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
29
|
+
timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
30
|
+
color: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
31
|
+
senderColors: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
32
|
+
/** The run log reads these two; nothing records anything until it exists. */
|
|
33
|
+
record: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
34
|
+
keepRunsForDays: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
35
|
+
readOnly: v.OptionalSchema<v.BooleanSchema<(issue: v.BaseIssue<unknown>) => string>, undefined>;
|
|
36
|
+
sendsPerHour: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<(issue: v.BaseIssue<unknown>) => string>, v.IntegerAction<number, (issue: v.BaseIssue<unknown>) => string>, v.MinValueAction<number, 1, (issue: v.BaseIssue<unknown>) => string>]>, undefined>;
|
|
37
|
+
}, v.ErrorMessage<v.StrictObjectIssue>>, "has to be an object of profiles, by name">, {}>;
|
|
38
|
+
}, v.ErrorMessage<v.StrictObjectIssue>>;
|
|
14
39
|
export type Config = v.InferOutput<typeof configSchema>;
|
|
40
|
+
export type ProfileSetting = keyof v.InferOutput<typeof profileSettings>;
|
|
41
|
+
export declare const PROFILE_SETTINGS: ProfileSetting[];
|
|
15
42
|
/** Whatever the command line carried. Everything is optional: absent means "not given here". */
|
|
16
43
|
export interface GlobalFlags {
|
|
17
44
|
profile?: string;
|
|
@@ -62,6 +89,8 @@ export interface Settings {
|
|
|
62
89
|
commandTimeoutMs: number | undefined;
|
|
63
90
|
record: boolean;
|
|
64
91
|
keepRunsForDays: number;
|
|
92
|
+
readOnly: boolean;
|
|
93
|
+
sendsPerHour: number;
|
|
65
94
|
/** Named in errors and in `max --help`, so a person can find the file that decided this. */
|
|
66
95
|
configPath: string;
|
|
67
96
|
configFound: boolean;
|
|
@@ -70,8 +99,8 @@ export interface Settings {
|
|
|
70
99
|
/** Where each value came from — `max config show` prints it. */
|
|
71
100
|
sources: Record<SourcedSetting, Source>;
|
|
72
101
|
}
|
|
73
|
-
export type Source = "first word" | "flag" | "MAX_PROFILE" | "MAX_TIMEOUT" | "config file" | "default";
|
|
74
|
-
export type SourcedSetting = "profile" | "limit" | "timeoutMs" | "commandTimeoutMs" | "color" | "senderColors" | "record" | "keepRunsForDays";
|
|
102
|
+
export type Source = "first word" | "flag" | "MAX_PROFILE" | "MAX_TIMEOUT" | "config file" | "config defaults" | "default";
|
|
103
|
+
export type SourcedSetting = "profile" | "limit" | "timeoutMs" | "commandTimeoutMs" | "color" | "senderColors" | "record" | "keepRunsForDays" | "readOnly" | "sendsPerHour";
|
|
75
104
|
export interface ResolveOptions {
|
|
76
105
|
env?: NodeJS.ProcessEnv;
|
|
77
106
|
/** Tests pass a temporary directory; nothing else should need this. */
|
|
@@ -89,7 +118,7 @@ export interface ResolveOptions {
|
|
|
89
118
|
* Two things already jump this queue and are documented rather than re-litigated here:
|
|
90
119
|
* `MAX_TOKEN` outranks the keyring (`cli-core`'s `Credentials.read`), and `MAX_CONFIG_DIR`,
|
|
91
120
|
* `MAX_STATE_DIR` or `MAX_CACHE_DIR` move the whole installation — including which keyring entry
|
|
92
|
-
* a profile means (`ARCHITECTURE.md` §
|
|
121
|
+
* a profile means (`ARCHITECTURE.md` §14).
|
|
93
122
|
*/
|
|
94
123
|
export declare const resolveSettings: (flags?: GlobalFlags, { env, configDir }?: ResolveOptions) => Settings;
|
|
95
124
|
/**
|
|
@@ -100,4 +129,16 @@ export declare const resolveSettings: (flags?: GlobalFlags, { env, configDir }?:
|
|
|
100
129
|
* Whoever prints this has to say so, or it reads as a complete list and quietly is not.
|
|
101
130
|
*/
|
|
102
131
|
export declare const configuredProfiles: ({ env, configDir }?: ResolveOptions) => string[];
|
|
132
|
+
/**
|
|
133
|
+
* Sets or removes one setting of one profile, or of `defaults`, and writes the file back.
|
|
134
|
+
*
|
|
135
|
+
* **The value is checked by the same schema that reads the file**, on the whole result, before
|
|
136
|
+
* anything is written — so `config set` cannot produce a file the next command refuses to load.
|
|
137
|
+
*/
|
|
138
|
+
export declare const changeSetting: (path: string, { profile, setting, value }: {
|
|
139
|
+
profile: string | undefined;
|
|
140
|
+
setting: string;
|
|
141
|
+
value: string | undefined;
|
|
142
|
+
}) => unknown;
|
|
143
|
+
export {};
|
|
103
144
|
//# sourceMappingURL=config.d.ts.map
|