@wirecat/max-cli 0.50.0 → 0.52.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 +9 -9
- package/dist/adapter/max-adapter.d.ts.map +1 -1
- package/dist/adapter/max-adapter.js +8 -4
- package/dist/adapter/max-adapter.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +2 -0
- package/dist/app.js.map +1 -1
- package/dist/bot/adapter.d.ts.map +1 -1
- package/dist/bot/adapter.js +3 -2
- package/dist/bot/adapter.js.map +1 -1
- package/dist/bot/mcp-tools.d.ts.map +1 -1
- package/dist/bot/mcp-tools.js +3 -3
- package/dist/bot/mcp-tools.js.map +1 -1
- package/dist/bot/transport.d.ts.map +1 -1
- package/dist/bot/transport.js +8 -3
- package/dist/bot/transport.js.map +1 -1
- package/dist/bot/uploads.d.ts +2 -2
- package/dist/bot/uploads.d.ts.map +1 -1
- package/dist/bot/uploads.js +3 -3
- package/dist/bot/uploads.js.map +1 -1
- package/dist/client/account.d.ts +39 -0
- package/dist/client/account.d.ts.map +1 -0
- package/dist/client/account.js +92 -0
- package/dist/client/account.js.map +1 -0
- package/dist/client/chat-members.d.ts +27 -0
- package/dist/client/chat-members.d.ts.map +1 -0
- package/dist/client/chat-members.js +73 -0
- package/dist/client/chat-members.js.map +1 -0
- package/dist/client/chat-reads.d.ts +57 -0
- package/dist/client/chat-reads.d.ts.map +1 -0
- package/dist/client/chat-reads.js +160 -0
- package/dist/client/chat-reads.js.map +1 -0
- package/dist/client/chat-writes.d.ts +111 -0
- package/dist/client/chat-writes.d.ts.map +1 -0
- package/dist/client/chat-writes.js +240 -0
- package/dist/client/chat-writes.js.map +1 -0
- package/dist/client/contacts.d.ts +39 -0
- package/dist/client/contacts.d.ts.map +1 -0
- package/dist/client/contacts.js +93 -0
- package/dist/client/contacts.js.map +1 -0
- package/dist/client/delivery.d.ts +35 -0
- package/dist/client/delivery.d.ts.map +1 -0
- package/dist/client/delivery.js +62 -0
- package/dist/client/delivery.js.map +1 -0
- package/dist/client/folders.d.ts +20 -0
- package/dist/client/folders.d.ts.map +1 -0
- package/dist/client/folders.js +57 -0
- package/dist/client/folders.js.map +1 -0
- package/dist/client/history.d.ts +41 -0
- package/dist/client/history.d.ts.map +1 -0
- package/dist/client/history.js +111 -0
- package/dist/client/history.js.map +1 -0
- package/dist/client/live.d.ts +38 -0
- package/dist/client/live.d.ts.map +1 -0
- package/dist/client/live.js +182 -0
- package/dist/client/live.js.map +1 -0
- package/dist/client/login.d.ts +11 -0
- package/dist/client/login.d.ts.map +1 -0
- package/dist/client/login.js +8 -0
- package/dist/client/login.js.map +1 -0
- package/dist/client/message-reads.d.ts +53 -0
- package/dist/client/message-reads.d.ts.map +1 -0
- package/dist/client/message-reads.js +164 -0
- package/dist/client/message-reads.js.map +1 -0
- package/dist/client/message-writes.d.ts +84 -0
- package/dist/client/message-writes.d.ts.map +1 -0
- package/dist/client/message-writes.js +254 -0
- package/dist/client/message-writes.js.map +1 -0
- package/dist/client/people.d.ts +31 -0
- package/dist/client/people.d.ts.map +1 -0
- package/dist/client/people.js +130 -0
- package/dist/client/people.js.map +1 -0
- package/dist/client/polls.d.ts +53 -0
- package/dist/client/polls.d.ts.map +1 -0
- package/dist/client/polls.js +141 -0
- package/dist/client/polls.js.map +1 -0
- package/dist/client/read-policy.d.ts +2 -0
- package/dist/client/read-policy.d.ts.map +1 -0
- package/dist/client/read-policy.js +34 -0
- package/dist/client/read-policy.js.map +1 -0
- package/dist/client/request.d.ts +21 -0
- package/dist/client/request.d.ts.map +1 -0
- package/dist/client/request.js +69 -0
- package/dist/client/request.js.map +1 -0
- package/dist/client/session.d.ts +50 -0
- package/dist/client/session.d.ts.map +1 -0
- package/dist/client/session.js +293 -0
- package/dist/client/session.js.map +1 -0
- package/dist/client/stickers.d.ts +12 -0
- package/dist/client/stickers.d.ts.map +1 -0
- package/dist/client/stickers.js +29 -0
- package/dist/client/stickers.js.map +1 -0
- package/dist/client/types.d.ts +54 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/upload-transport.d.ts +15 -0
- package/dist/client/upload-transport.d.ts.map +1 -0
- package/dist/client/upload-transport.js +49 -0
- package/dist/client/upload-transport.js.map +1 -0
- package/dist/client/uploads.d.ts +15 -0
- package/dist/client/uploads.d.ts.map +1 -0
- package/dist/client/uploads.js +25 -0
- package/dist/client/uploads.js.map +1 -0
- package/dist/client/values.d.ts +120 -0
- package/dist/client/values.d.ts.map +1 -0
- package/dist/client/values.js +186 -0
- package/dist/client/values.js.map +1 -0
- package/dist/client/writes.d.ts +40 -0
- package/dist/client/writes.d.ts.map +1 -0
- package/dist/client/writes.js +186 -0
- package/dist/client/writes.js.map +1 -0
- package/dist/client.d.ts +29 -644
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +267 -2828
- package/dist/client.js.map +1 -1
- package/dist/commands/bot-comments.d.ts.map +1 -1
- package/dist/commands/bot-comments.js +13 -13
- package/dist/commands/bot-comments.js.map +1 -1
- package/dist/commands/bot-context.d.ts.map +1 -1
- package/dist/commands/bot-context.js +11 -3
- package/dist/commands/bot-context.js.map +1 -1
- package/dist/commands/bot-members.d.ts.map +1 -1
- package/dist/commands/bot-members.js +25 -14
- package/dist/commands/bot-members.js.map +1 -1
- package/dist/commands/bot-messenger.d.ts +5 -2
- package/dist/commands/bot-messenger.d.ts.map +1 -1
- package/dist/commands/bot-messenger.js +7 -11
- package/dist/commands/bot-messenger.js.map +1 -1
- package/dist/commands/bot-setup.d.ts.map +1 -1
- package/dist/commands/bot-setup.js +3 -2
- package/dist/commands/bot-setup.js.map +1 -1
- package/dist/commands/bot.d.ts +2 -1
- package/dist/commands/bot.d.ts.map +1 -1
- package/dist/commands/bot.js +6 -6
- package/dist/commands/bot.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +33 -33
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/contacts.d.ts.map +1 -1
- package/dist/commands/contacts.js +4 -5
- package/dist/commands/contacts.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +10 -9
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +13 -13
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/messages.d.ts.map +1 -1
- package/dist/commands/messages.js +12 -4
- package/dist/commands/messages.js.map +1 -1
- package/dist/commands/paging.d.ts +0 -36
- package/dist/commands/paging.d.ts.map +1 -1
- package/dist/commands/paging.js +0 -50
- package/dist/commands/paging.js.map +1 -1
- package/dist/commands/recipients.d.ts.map +1 -1
- package/dist/commands/recipients.js +15 -14
- package/dist/commands/recipients.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +14 -4
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +8 -7
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup.js +2 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/watch.d.ts +4 -2
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +21 -5
- package/dist/commands/watch.js.map +1 -1
- package/dist/config.d.ts +843 -143
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -33
- package/dist/config.js.map +1 -1
- package/dist/mcp/legacy-check.d.ts.map +1 -1
- package/dist/mcp/legacy-check.js +5 -3
- package/dist/mcp/legacy-check.js.map +1 -1
- package/dist/mcp/photo.d.ts.map +1 -1
- package/dist/mcp/photo.js +2 -2
- package/dist/mcp/photo.js.map +1 -1
- package/dist/mcp/prompts.d.ts.map +1 -1
- package/dist/mcp/prompts.js +10 -8
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +36 -27
- package/dist/mcp/tools.js.map +1 -1
- package/dist/messenger.d.ts.map +1 -1
- package/dist/messenger.js +11 -1
- package/dist/messenger.js.map +1 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +4 -1
- package/dist/permissions.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +7 -3
- package/dist/program.js.map +1 -1
- package/dist/protocol/connection.d.ts.map +1 -1
- package/dist/protocol/connection.js +44 -12
- package/dist/protocol/connection.js.map +1 -1
- package/dist/sends.d.ts +1 -1
- package/dist/sends.js +1 -1
- package/dist/server/server.d.ts +3 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +39 -21
- package/dist/server/server.js.map +1 -1
- package/dist/server/subscribe.d.ts.map +1 -1
- package/dist/server/subscribe.js +30 -4
- package/dist/server/subscribe.js.map +1 -1
- package/dist/server/subscribers.d.ts +18 -0
- package/dist/server/subscribers.d.ts.map +1 -0
- package/dist/server/subscribers.js +146 -0
- package/dist/server/subscribers.js.map +1 -0
- package/dist/upload.d.ts +6 -5
- package/dist/upload.d.ts.map +1 -1
- package/dist/upload.js +16 -11
- package/dist/upload.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/skills/max-cli/SKILL.md +79 -59
package/dist/commands/mcp.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
3
|
import { installerOf } from "@wirecat/cli-base/update";
|
|
4
|
-
import { httpTokenFile, revokeAll } from "@wirecat/cli-core/cli";
|
|
4
|
+
import { httpTokenFile, itemOf, LOCAL_READ, LOCAL_WRITE, REMOTE_WRITE, renderAnswer, revokeAll, snakeKeys, } from "@wirecat/cli-core/cli";
|
|
5
5
|
import { Command } from "commander";
|
|
6
6
|
import { MAX_APP } from "../app.js";
|
|
7
7
|
import { ownScript } from "../install.js";
|
|
@@ -43,7 +43,7 @@ const withFlags = (command) => command
|
|
|
43
43
|
.option("--allow-moderate", "deprecated: use permissions.chats.moderate and group rules; does not grant access");
|
|
44
44
|
const checked = (flags, _mcpTools) => flags;
|
|
45
45
|
export const mcpCommand = () => {
|
|
46
|
-
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`"))
|
|
46
|
+
const command = withFlags(annotate(new Command("mcp"), { effects: REMOTE_WRITE }).description("serve this profile to an agent over MCP, on stdin and stdout — `claude mcp add max -- max mcp`"))
|
|
47
47
|
.option("--http", "serve over HTTP on 127.0.0.1 for ChatGPT and Claude in the browser, behind your tunnel; the profile's permissions decide")
|
|
48
48
|
.option("--http-confirmation <mode>", "no longer used — writes show no form; the profile's permissions decide")
|
|
49
49
|
.option("--port <port>", `the local port for --http (default ${DEFAULT_PORT})`)
|
|
@@ -55,7 +55,7 @@ export const mcpCommand = () => {
|
|
|
55
55
|
const tokenFile = httpTokenFile(MAX_APP, context.settings.profile, process.env);
|
|
56
56
|
if (own.revoke) {
|
|
57
57
|
revokeAll(tokenFile);
|
|
58
|
-
context
|
|
58
|
+
renderAnswer(this, context, itemOf({ revoked: true, profile: context.settings.profile }));
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
const { allowSend, confirmSend, allowMarkRead, allowDelete, allowModerate } = checked(this.opts(), context.settings.mcpTools);
|
|
@@ -88,7 +88,7 @@ export const mcpCommand = () => {
|
|
|
88
88
|
allowModerate: allowModerate === true,
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
|
-
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 () {
|
|
91
|
+
command.addCommand(withFlags(annotate(new Command("config"), { effects: LOCAL_READ }).description("print the mcpServers entry for Claude Desktop, Cursor and others, with full paths; writes nothing")).action(async function () {
|
|
92
92
|
const { renderer, settings, format, streams, run } = forCommand(this);
|
|
93
93
|
const flags = checked(this.optsWithGlobals(), settings.mcpTools);
|
|
94
94
|
await run("mcp config", async () => {
|
|
@@ -103,18 +103,18 @@ export const mcpCommand = () => {
|
|
|
103
103
|
if (format === "pretty")
|
|
104
104
|
streams.data(JSON.stringify(entry.config, null, 2));
|
|
105
105
|
else
|
|
106
|
-
renderer
|
|
106
|
+
renderAnswer(this, { renderer, format, streams }, itemOf({ config: entry.config }));
|
|
107
107
|
if (entry.warning)
|
|
108
108
|
renderer.note(entry.warning);
|
|
109
109
|
});
|
|
110
110
|
}));
|
|
111
|
-
command.addCommand(withFlags(annotate(new Command("setup"), {
|
|
111
|
+
command.addCommand(withFlags(annotate(new Command("setup"), { effects: LOCAL_WRITE })
|
|
112
112
|
.description("add this profile's local MCP server to Codex or Claude Code")
|
|
113
113
|
.argument("<client>", "codex or claude-code")
|
|
114
114
|
.option("--allow-writes", "acknowledge that this profile offers writing tools")).action(async function (client) {
|
|
115
115
|
if (client !== "codex" && client !== "claude-code")
|
|
116
116
|
throw new CliError("validation_error", "choose codex or claude-code");
|
|
117
|
-
const { renderer, settings } = forCommand(this);
|
|
117
|
+
const { renderer, settings, format, streams } = forCommand(this);
|
|
118
118
|
const entry = serverEntry({
|
|
119
119
|
profile: settings.profile,
|
|
120
120
|
flags: checked(this.optsWithGlobals(), settings.mcpTools),
|
|
@@ -131,14 +131,14 @@ export const mcpCommand = () => {
|
|
|
131
131
|
const { potentialWrites } = await probeStdio(configuration);
|
|
132
132
|
if (potentialWrites.length > 0 && this.opts().allowWrites !== true)
|
|
133
133
|
throw new Error(`this profile offers ${potentialWrites.length} tools that may write; review its permissions, then pass --allow-writes to install it`);
|
|
134
|
-
renderer
|
|
134
|
+
renderAnswer(this, { renderer, format, streams }, itemOf(snakeKeys({ ...installStdioEntry(client, name, configuration), potentialWrites: potentialWrites.length })));
|
|
135
135
|
}
|
|
136
136
|
catch (error) {
|
|
137
137
|
throw new CliError("validation_error", error instanceof Error ? error.message : "MCP setup failed");
|
|
138
138
|
}
|
|
139
139
|
}));
|
|
140
|
-
command.addCommand(withFlags(new Command("doctor").description("check this profile's local MCP handshake and tool list")).action(async function () {
|
|
141
|
-
const { renderer, settings } = forCommand(this);
|
|
140
|
+
command.addCommand(withFlags(annotate(new Command("doctor"), { effects: LOCAL_READ }).description("check this profile's local MCP handshake and tool list")).action(async function () {
|
|
141
|
+
const { renderer, settings, format, streams } = forCommand(this);
|
|
142
142
|
const entry = serverEntry({
|
|
143
143
|
profile: settings.profile,
|
|
144
144
|
flags: checked(this.optsWithGlobals(), settings.mcpTools),
|
|
@@ -152,12 +152,12 @@ export const mcpCommand = () => {
|
|
|
152
152
|
const { probeStdio } = await import("@wirecat/cli-base/mcp");
|
|
153
153
|
try {
|
|
154
154
|
const { tools, potentialWrites } = await probeStdio(server);
|
|
155
|
-
renderer
|
|
155
|
+
renderAnswer(this, { renderer, format, streams }, itemOf({
|
|
156
156
|
healthy: true,
|
|
157
157
|
profile: settings.profile,
|
|
158
158
|
tools: tools.length,
|
|
159
|
-
|
|
160
|
-
});
|
|
159
|
+
potential_writes: potentialWrites.length,
|
|
160
|
+
}));
|
|
161
161
|
}
|
|
162
162
|
catch (error) {
|
|
163
163
|
throw new CliError("validation_error", error instanceof Error ? error.message : "MCP doctor failed");
|
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,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAcA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,eAAO,MAAM,eAAe,QAAO,OA6GlC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import {
|
|
2
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { deleteCommand, editCommand, forwardCommand, itemOf, pinCommand, REMOTE_READ, renderAnswer, sendCommand, messagesCommand as sharedMessagesCommand, unpinCommand, } from "@wirecat/cli-core/cli";
|
|
3
4
|
import { Command } from "commander";
|
|
4
5
|
import { maxMessenger, sharedSubcommand } from "../messenger.js";
|
|
5
6
|
import { maxRecord } from "../record.js";
|
|
@@ -37,8 +38,7 @@ export const messagesCommand = () => {
|
|
|
37
38
|
* fetched, the connection closed, and then the model runs — up to a minute for five minutes of
|
|
38
39
|
* speech, which should not hold a socket open.
|
|
39
40
|
*/
|
|
40
|
-
command
|
|
41
|
-
.command("transcribe")
|
|
41
|
+
annotate(command.command("transcribe"), { effects: REMOTE_READ })
|
|
42
42
|
.argument("<chat>", "chat id, or part of a chat name")
|
|
43
43
|
.argument("<message>", "id of a voice message")
|
|
44
44
|
.description("turn a voice message into text, on this machine — the recording goes nowhere")
|
|
@@ -72,7 +72,15 @@ export const messagesCommand = () => {
|
|
|
72
72
|
if (format === "pretty")
|
|
73
73
|
streams.data(`${transcript.text}\n`);
|
|
74
74
|
else
|
|
75
|
-
renderer
|
|
75
|
+
renderAnswer(this, { renderer, format, streams }, itemOf({
|
|
76
|
+
message_id: transcript.messageId,
|
|
77
|
+
chat_id: transcript.chatId,
|
|
78
|
+
text: transcript.text,
|
|
79
|
+
pending: false,
|
|
80
|
+
via: "local",
|
|
81
|
+
model: transcript.model,
|
|
82
|
+
cached: transcript.cached,
|
|
83
|
+
}));
|
|
76
84
|
}
|
|
77
85
|
finally {
|
|
78
86
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,IAAI,qBAAqB,EACxC,YAAY,GACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAY,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAA;IAEvF,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;IAClD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QAAE,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAC3G,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAA;IAClE,2BAA2B;IAC3B,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAA;IAE/G,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/E,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;IAExD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;SAClD,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;SAChE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,EAA0C,CAAA;QACnF,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,IAAI,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACnF,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,wDAAwD,CAAC,CAAA;QAClG,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IACJ,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC5B,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IACxD,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAEpD;;;;OAIG;IACH,OAAO
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,MAAM,EACN,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,IAAI,qBAAqB,EACxC,YAAY,GACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAY,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAA;IAEvF,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;IAClD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QAAE,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAC3G,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAA;IAClE,2BAA2B;IAC3B,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAA;IAE/G,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/E,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;IAExD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;SAClD,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;SAChE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,EAA0C,CAAA;QACnF,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,IAAI,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACnF,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,wDAAwD,CAAC,CAAA;QAClG,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IACJ,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC5B,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IACxD,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAEpD;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SAC9D,QAAQ,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACrD,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;SAC9C,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,cAAc,EAAE,0EAA0E,CAAC;SAClG,MAAM,CAAC,KAAK,WAA0B,IAAY,EAAE,SAAiB;QACpE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAsB,CAAA;QACzD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;QAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAA;QAC7D,MAAM,SAAS,GAAG,eAAe,EAAE,CAAA;QACnC,MAAM,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC/E,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC/C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;oBAC9D,IAAI,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,EAAE;wBAAE,MAAM,aAAa,CAAC,KAAK,CAAC,CAAA;gBAC3D,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE;oBACpE,GAAG,OAAO,CAAC,OAAO;oBAClB,KAAK;oBACL,SAAS;oBACT,MAAM;oBACN,OAAO,EAAE,KAAK,IAAI,EAAE;wBAClB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;wBACpB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE,kBAAkB,CAAC,CAAA;oBAChE,CAAC;iBACF,CAAC,CAAA;gBACF,IAAI,MAAM,KAAK,QAAQ;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,CAAA;;oBAE3D,YAAY,CACV,IAAI,EACJ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAC7B,MAAM,CAAC;wBACL,UAAU,EAAE,UAAU,CAAC,SAAS;wBAChC,OAAO,EAAE,UAAU,CAAC,MAAM;wBAC1B,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,OAAO,EAAE,KAAK;wBACd,GAAG,EAAE,OAAO;wBACZ,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,MAAM,EAAE,UAAU,CAAC,MAAM;qBAC1B,CAAC,CACH,CAAA;YACL,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;gBACtB,CAAC;wBAAS,CAAC;oBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;gBACtB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CACvF;KACF,CAAC,CAAA;IACF,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAExB,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAEzD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;IAC1C,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,KAAa,EAAE,QAAQ,GAAa,EAAE,EAAE,EAAE,CAAC;QACnF,GAAG,QAAQ;QACX,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;KAC3C,CAAC,CAAA;IACF,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;IAC5C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;IAC9C,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAErD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { type Renderer, type RenderFormat, type Streams } from "@wirecat/cli-base";
|
|
2
1
|
import type { Command } from "commander";
|
|
3
2
|
import type { Settings } from "../config.js";
|
|
4
|
-
import type { Page } from "../domain/models.js";
|
|
5
3
|
/** Checked while parsing, so the error can quote what was typed rather than the `NaN` it became. */
|
|
6
4
|
export declare const wholeNumber: (flag: string) => (value: string) => number;
|
|
7
5
|
/**
|
|
@@ -22,38 +20,4 @@ export declare const window: ({ limit, page, all }: Settings) => {
|
|
|
22
20
|
limit?: number;
|
|
23
21
|
offset: number;
|
|
24
22
|
};
|
|
25
|
-
/**
|
|
26
|
-
* A list with no pages — folders, members, runs, everything a bot lists — in the envelope a paged
|
|
27
|
-
* one uses (`NEED-358`), so an agent reads one shape. `--jsonl` streams it and a person gets the table.
|
|
28
|
-
* `extra` goes beside it: a Bot API list paged by `marker` carries its marker and `hasMore`.
|
|
29
|
-
*/
|
|
30
|
-
export declare const renderList: (renderer: Renderer, format: RenderFormat, items: readonly unknown[], extra?: {
|
|
31
|
-
hasMore?: boolean;
|
|
32
|
-
} & Record<string, unknown>) => void;
|
|
33
|
-
export declare const listed: (items: readonly unknown[]) => {
|
|
34
|
-
items: readonly unknown[];
|
|
35
|
-
page: number;
|
|
36
|
-
limit: number;
|
|
37
|
-
hasMore: boolean;
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* **One shape for every listing**, and the caller never has to work out which one it got.
|
|
41
|
-
*
|
|
42
|
-
* In the machine modes stdout carries the envelope. For a person it carries the table it always
|
|
43
|
-
* did, and the line about there being another page goes to **stderr** as a note — stdout is data
|
|
44
|
-
* in every mode, and a pager's hint is not data.
|
|
45
|
-
*
|
|
46
|
-
* It is a helper each command calls rather than something inside `renderer.result`, because
|
|
47
|
-
* `account show` and `session start` are not lists and keep answering a bare object.
|
|
48
|
-
*/
|
|
49
|
-
export declare const renderPage: <T>({ renderer, format, settings, streams, }: {
|
|
50
|
-
renderer: Renderer;
|
|
51
|
-
format: RenderFormat;
|
|
52
|
-
settings: Settings;
|
|
53
|
-
streams: Streams;
|
|
54
|
-
}, { items, hasMore }: Page<T>, view?: (items: T[]) => string,
|
|
55
|
-
/** What to type for the rest, when the listing is not paged by `--page`. */
|
|
56
|
-
more?: (items: T[]) => string,
|
|
57
|
-
/** Fields beside the page in `--json`. */
|
|
58
|
-
extra?: object) => void;
|
|
59
23
|
//# sourceMappingURL=paging.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../src/commands/paging.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../src/commands/paging.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,oGAAoG;AACpG,eAAO,MAAM,WAAW,SACf,MAAM,aACL,MAAM,KAAG,MAKhB,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,UAAU,YAAa,OAAO,KAAG,OAIF,CAAA;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,yBAA0B,QAAQ,KAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAC3B,CAAA"}
|
package/dist/commands/paging.js
CHANGED
|
@@ -24,54 +24,4 @@ export const withPaging = (command) => command
|
|
|
24
24
|
* CLI that pages this way has this; it is in `--help` rather than engineered away.
|
|
25
25
|
*/
|
|
26
26
|
export const window = ({ limit, page, all }) => all ? { offset: 0 } : { limit, offset: (page - 1) * limit };
|
|
27
|
-
/**
|
|
28
|
-
* A list with no pages — folders, members, runs, everything a bot lists — in the envelope a paged
|
|
29
|
-
* one uses (`NEED-358`), so an agent reads one shape. `--jsonl` streams it and a person gets the table.
|
|
30
|
-
* `extra` goes beside it: a Bot API list paged by `marker` carries its marker and `hasMore`.
|
|
31
|
-
*/
|
|
32
|
-
export const renderList = (renderer, format, items, extra = {}) => {
|
|
33
|
-
if (format === "json")
|
|
34
|
-
renderer.result({ ...listed(items), ...extra });
|
|
35
|
-
else
|
|
36
|
-
renderer.stream(items);
|
|
37
|
-
};
|
|
38
|
-
export const listed = (items) => ({ items, page: 1, limit: items.length, hasMore: false });
|
|
39
|
-
/**
|
|
40
|
-
* **One shape for every listing**, and the caller never has to work out which one it got.
|
|
41
|
-
*
|
|
42
|
-
* In the machine modes stdout carries the envelope. For a person it carries the table it always
|
|
43
|
-
* did, and the line about there being another page goes to **stderr** as a note — stdout is data
|
|
44
|
-
* in every mode, and a pager's hint is not data.
|
|
45
|
-
*
|
|
46
|
-
* It is a helper each command calls rather than something inside `renderer.result`, because
|
|
47
|
-
* `account show` and `session start` are not lists and keep answering a bare object.
|
|
48
|
-
*/
|
|
49
|
-
export const renderPage = ({ renderer, format, settings, streams, }, { items, hasMore }, view,
|
|
50
|
-
/** What to type for the rest, when the listing is not paged by `--page`. */
|
|
51
|
-
more,
|
|
52
|
-
/** Fields beside the page in `--json`. */
|
|
53
|
-
extra = {}) => {
|
|
54
|
-
if (format === "jsonl") {
|
|
55
|
-
renderer.stream(items);
|
|
56
|
-
if (!settings.all && hasMore)
|
|
57
|
-
renderer.note(more ? more(items) : `more — \`--page ${settings.page + 1}\` for the next`);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (format !== "pretty") {
|
|
61
|
-
renderer.result({
|
|
62
|
-
items,
|
|
63
|
-
page: settings.all ? 1 : settings.page,
|
|
64
|
-
limit: settings.all ? items.length : settings.limit,
|
|
65
|
-
hasMore: settings.all ? false : hasMore,
|
|
66
|
-
...extra,
|
|
67
|
-
});
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
if (view)
|
|
71
|
-
streams.data(view(items));
|
|
72
|
-
else
|
|
73
|
-
renderer.result(items);
|
|
74
|
-
if (!settings.all && hasMore)
|
|
75
|
-
renderer.note(more ? more(items) : `page ${settings.page} of more — \`--page ${settings.page + 1}\` for the next`);
|
|
76
|
-
};
|
|
77
27
|
//# sourceMappingURL=paging.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../../src/commands/paging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../../src/commands/paging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5C,oGAAoG;AACpG,MAAM,CAAC,MAAM,WAAW,GACtB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,KAAa,EAAU,EAAE;IACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,IAAI,8CAA8C,KAAK,GAAG,CAAC,CAAA;IACvG,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC,CAAA;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAW,EAAE,CACtD,OAAO;KACJ,MAAM,CAAC,aAAa,EAAE,kBAAkB,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;KACjE,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;KACxE,MAAM,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAY,EAAsC,EAAE,CAC3F,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipients.d.ts","sourceRoot":"","sources":["../../src/commands/recipients.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recipients.d.ts","sourceRoot":"","sources":["../../src/commands/recipients.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAO,OAmEpC,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { itemOf, LOCAL_READ, LOCAL_WRITE, listOf, renderAnswer, snakeKeys } from "@wirecat/cli-core/cli";
|
|
3
4
|
import { Command } from "commander";
|
|
4
5
|
import { recipientListFor } from "../sends.js";
|
|
5
6
|
import { forCommand } from "./context.js";
|
|
6
|
-
import { renderList } from "./paging.js";
|
|
7
7
|
/**
|
|
8
8
|
* The chats this profile may send to. Off until the first `add`; `off` turns it off again.
|
|
9
9
|
*
|
|
@@ -12,25 +12,26 @@ import { renderList } from "./paging.js";
|
|
|
12
12
|
*/
|
|
13
13
|
export const recipientsCommand = () => {
|
|
14
14
|
const command = new Command("recipients").description("the chats this profile may send to, when the list is on");
|
|
15
|
-
command
|
|
16
|
-
.command("list")
|
|
15
|
+
annotate(command.command("list"), { effects: LOCAL_READ })
|
|
17
16
|
.description("the chats on the list; empty and off until the first add")
|
|
18
17
|
.action(async function () {
|
|
19
|
-
const
|
|
18
|
+
const context = forCommand(this);
|
|
19
|
+
const { settings, renderer, run } = context;
|
|
20
20
|
await run("recipients list", async () => {
|
|
21
21
|
const chats = recipientListFor(settings.profile).read();
|
|
22
|
-
|
|
22
|
+
const items = (chats ?? []).map(snakeKeys);
|
|
23
|
+
renderAnswer(this, context, listOf("recipients list", { items, limit: items.length, has_more: false }));
|
|
23
24
|
if (!chats)
|
|
24
25
|
renderer.note("the recipient list is off — this profile may send to any chat");
|
|
25
26
|
else if (chats.length === 0)
|
|
26
27
|
renderer.note("the recipient list is on and empty — this profile may send nowhere");
|
|
27
28
|
});
|
|
28
29
|
});
|
|
29
|
-
annotate(command.command("add"), {
|
|
30
|
+
annotate(command.command("add"), { effects: LOCAL_WRITE })
|
|
30
31
|
.argument("<chat>", "chat id, or part of a chat name")
|
|
31
32
|
.description("allow sending to this chat; the first add turns the list on")
|
|
32
33
|
.action(async function (chat) {
|
|
33
|
-
const { settings, renderer, createClient, run } = forCommand(this);
|
|
34
|
+
const { settings, renderer, format, streams, createClient, run } = forCommand(this);
|
|
34
35
|
await run("recipients add", async (events) => {
|
|
35
36
|
const client = createClient({ events });
|
|
36
37
|
try {
|
|
@@ -42,31 +43,31 @@ export const recipientsCommand = () => {
|
|
|
42
43
|
...(partnerId ? { partnerId } : {}),
|
|
43
44
|
addedAt: new Date().toISOString(),
|
|
44
45
|
});
|
|
45
|
-
renderer
|
|
46
|
+
renderAnswer(this, { renderer, format, streams }, itemOf({ id: found.id, title: found.title, added }));
|
|
46
47
|
}
|
|
47
48
|
finally {
|
|
48
49
|
await client.close();
|
|
49
50
|
}
|
|
50
51
|
});
|
|
51
52
|
});
|
|
52
|
-
annotate(command.command("remove"), {
|
|
53
|
+
annotate(command.command("remove"), { effects: LOCAL_WRITE })
|
|
53
54
|
.argument("<chat>", "chat id, or the title as the list shows it")
|
|
54
55
|
.description("stop allowing this chat; the list stays on")
|
|
55
56
|
.action(async function (chat) {
|
|
56
|
-
const { settings, renderer, run } = forCommand(this);
|
|
57
|
+
const { settings, renderer, format, streams, run } = forCommand(this);
|
|
57
58
|
await run("recipients remove", async () => {
|
|
58
59
|
const gone = recipientListFor(settings.profile).remove(chat);
|
|
59
60
|
if (!gone)
|
|
60
61
|
throw new CliError("not_found", `${chat.trim()} is not on the recipient list of ${settings.profile}`);
|
|
61
|
-
renderer
|
|
62
|
+
renderAnswer(this, { renderer, format, streams }, itemOf({ id: gone.id, title: gone.title, removed: true }));
|
|
62
63
|
});
|
|
63
64
|
});
|
|
64
|
-
annotate(command.command("clear"), {
|
|
65
|
+
annotate(command.command("clear"), { effects: LOCAL_WRITE })
|
|
65
66
|
.description("empty the list and turn it off: this profile may send to any chat again")
|
|
66
67
|
.action(async function () {
|
|
67
|
-
const { settings, renderer, run } = forCommand(this);
|
|
68
|
+
const { settings, renderer, format, streams, run } = forCommand(this);
|
|
68
69
|
await run("recipients clear", async () => {
|
|
69
|
-
renderer
|
|
70
|
+
renderAnswer(this, { renderer, format, streams }, itemOf({ off: true, was_on: recipientListFor(settings.profile).off() }));
|
|
70
71
|
});
|
|
71
72
|
});
|
|
72
73
|
return command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipients.js","sourceRoot":"","sources":["../../src/commands/recipients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"recipients.js","sourceRoot":"","sources":["../../src/commands/recipients.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAW3C;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,QAAO,OA+E1B,CAAA"}
|
package/dist/commands/serve.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { writeFileSync } from "node:fs";
|
|
2
2
|
import { CliError } from "@wirecat/cli-base";
|
|
3
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
4
|
import { holdLock, lockPath, releaseLock } from "@wirecat/cli-core/background";
|
|
5
|
+
import { REMOTE_WRITE } from "@wirecat/cli-core/cli";
|
|
4
6
|
import { Command, Option } from "commander";
|
|
5
7
|
import { MAX_APP } from "../app.js";
|
|
6
8
|
import { parseDuration } from "../config.js";
|
|
@@ -8,7 +10,7 @@ import { asFirstWord } from "../profile.js";
|
|
|
8
10
|
import { MaxServer, refusedLogin } from "../server/server.js";
|
|
9
11
|
import { refusedPath } from "../server/start.js";
|
|
10
12
|
import { VERSION } from "../version.js";
|
|
11
|
-
import { forCommand } from "./context.js";
|
|
13
|
+
import { environmentOf, forCommand } from "./context.js";
|
|
12
14
|
import { serveMembers } from "./serve-members.js";
|
|
13
15
|
import { serveStems } from "./serve-stems.js";
|
|
14
16
|
/**
|
|
@@ -18,12 +20,14 @@ import { serveStems } from "./serve-stems.js";
|
|
|
18
20
|
* in the background when none is running** (`serve` setting, `--no-serve` to decline), and that
|
|
19
21
|
* one is given `--idle`, so it does not outlive the work that started it.
|
|
20
22
|
*/
|
|
21
|
-
export const serveCommand = () => new Command("serve")
|
|
23
|
+
export const serveCommand = () => annotate(new Command("serve"), { effects: REMOTE_WRITE })
|
|
22
24
|
.description("stay connected to MAX and stream new messages to `max watch`, until Ctrl-C")
|
|
23
25
|
.option("--idle <duration>", "stop after this long with nobody using it — 15m, 1h is 60m")
|
|
26
|
+
.option("--max-subscriber-buffer-bytes <bytes>", "buffer per watcher before disconnecting it; 0 is unlimited")
|
|
27
|
+
.option("--max-subscriber-total-buffer-bytes <bytes>", "combined watcher buffer budget; 0 is unlimited")
|
|
24
28
|
.addOption(new Option("--started-by-command").hideHelp())
|
|
25
29
|
.action(async function () {
|
|
26
|
-
const { idle, startedByCommand = false } = this.opts();
|
|
30
|
+
const { idle, startedByCommand = false, maxSubscriberBufferBytes, maxSubscriberTotalBufferBytes, } = this.opts();
|
|
27
31
|
const { renderer, settings, store, run, format, streams, track } = forCommand(this);
|
|
28
32
|
const idleMs = idle === undefined ? undefined : parseDuration(idle, "--idle");
|
|
29
33
|
await run("serve", async (events) => {
|
|
@@ -32,6 +36,12 @@ export const serveCommand = () => new Command("serve")
|
|
|
32
36
|
: streams.diagnostic(JSON.stringify({ time: new Date().toISOString(), note: line }));
|
|
33
37
|
const server = new MaxServer({
|
|
34
38
|
store,
|
|
39
|
+
...(maxSubscriberBufferBytes === undefined
|
|
40
|
+
? {}
|
|
41
|
+
: { maxSubscriberBufferBytes: Number(maxSubscriberBufferBytes) }),
|
|
42
|
+
...(maxSubscriberTotalBufferBytes === undefined
|
|
43
|
+
? {}
|
|
44
|
+
: { maxSubscriberTotalBufferBytes: Number(maxSubscriberTotalBufferBytes) }),
|
|
35
45
|
members: (client) => serveMembers({ client, store, note }),
|
|
36
46
|
// Unwatched — a log file, systemd — each line says when, or "connecting again in 60s" means nothing.
|
|
37
47
|
note,
|
|
@@ -51,7 +61,7 @@ export const serveCommand = () => new Command("serve")
|
|
|
51
61
|
process.once("SIGINT", stop);
|
|
52
62
|
process.once("SIGTERM", stop);
|
|
53
63
|
// Not how max finds its server — the socket is — but what the shared store commands look for.
|
|
54
|
-
const lock = lockPath(MAX_APP, store.profile, process.env);
|
|
64
|
+
const lock = lockPath(MAX_APP, store.profile, environmentOf(this).env ?? process.env);
|
|
55
65
|
const startedAt = new Date().toISOString();
|
|
56
66
|
const stems = serveStems({ note });
|
|
57
67
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAY,EAAE,CACxC,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;KACtD,WAAW,CAAC,4EAA4E,CAAC;KACzF,MAAM,CAAC,mBAAmB,EAAE,4DAA4D,CAAC;KACzF,MAAM,CAAC,uCAAuC,EAAE,4DAA4D,CAAC;KAC7G,MAAM,CAAC,6CAA6C,EAAE,gDAAgD,CAAC;KACvG,SAAS,CAAC,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC;KACxD,MAAM,CAAC,KAAK;IACX,MAAM,EACJ,IAAI,EACJ,gBAAgB,GAAG,KAAK,EACxB,wBAAwB,EACxB,6BAA6B,GAC9B,GAAG,IAAI,CAAC,IAAI,EAKT,CAAA;IACJ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IACnF,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAE7E,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAC5B,MAAM,KAAK,QAAQ;YACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACxF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,KAAK;YACL,GAAG,CAAC,wBAAwB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,6BAA6B,KAAK,SAAS;gBAC7C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,6BAA6B,EAAE,MAAM,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAC7E,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC1D,qGAAqG;YACrG,IAAI;YACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3C,gBAAgB;SACjB,CAAC,CAAA;QACF,KAAK,CAAC;YACJ,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBAC3C,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC,CAAA;gBACrF,MAAM,OAAO,CAAA;YACf,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC7B,8FAA8F;QAC9F,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;QACrF,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;YACxG,QAAQ,CAAC,IAAI,CACX,qBAAqB,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,gDAAgD,CACnG,CAAA;YACD,MAAM,MAAM,CAAC,IAAI,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YACnB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YACrF,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAA;YACtF,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAkB,KAAK,gBAAgB,EAAqB,MAAM,cAAc,CAAA;AAOvF,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,cAAc,CAAA;AAG9D,eAAO,MAAM,YAAY,QAGb,CAAA;AAEZ,eAAO,MAAM,cAAc,QAAO,OAkFjC,CAAA;AAkBD,QAAA,MAAM,OAAO,YAAI,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAU,CAAA;AAC5D,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7C,eAAO,MAAM,YAAY,YAAmB,cAAc,UAAU,MAAM,UAAU,gBAAgB,CAAC,QAAQ,CAAC;;;;;EA6B7G,CAAA"}
|
package/dist/commands/session.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CliError, indent } from "@wirecat/cli-base";
|
|
2
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { itemOf, REMOTE_WRITE, renderAnswer, snakeKeys } from "@wirecat/cli-core/cli";
|
|
3
4
|
import { Argument, Command } from "commander";
|
|
4
5
|
import { refuseWhilePaused } from "../client.js";
|
|
5
6
|
import { maskedProfile } from "../domain/map.js";
|
|
@@ -30,8 +31,7 @@ export const sessionCommand = () => {
|
|
|
30
31
|
*
|
|
31
32
|
* **A token is never an argument.** argv is read by `ps` and kept by shell history.
|
|
32
33
|
*/
|
|
33
|
-
command
|
|
34
|
-
.command("start")
|
|
34
|
+
annotate(command.command("start"), { effects: REMOTE_WRITE })
|
|
35
35
|
.description("log this profile in to MAX")
|
|
36
36
|
.addHelpText("after", "\nFirst time: run `max personal setup --agent codex` for guided login and agent setup.\n" +
|
|
37
37
|
"Examples:\n max personal session start qr Scan a QR with MAX on your phone\n" +
|
|
@@ -49,7 +49,7 @@ export const sessionCommand = () => {
|
|
|
49
49
|
refuseCommandName(context.settings.profile, commandWords(rootOf(this)));
|
|
50
50
|
await run("session start", async (events) => {
|
|
51
51
|
const { firstLogin, ...answer } = await startSession(context, method, events);
|
|
52
|
-
|
|
52
|
+
renderAnswer(this, context, itemOf(snakeKeys(answer)));
|
|
53
53
|
renderer.success(`logged in as ${answer.profile.name ?? answer.profile.id}`);
|
|
54
54
|
if (firstLogin)
|
|
55
55
|
renderer.note(TERMS_NOTICE);
|
|
@@ -61,13 +61,14 @@ export const sessionCommand = () => {
|
|
|
61
61
|
* Ends the session on MAX's side (LOGOUT, opcode 20), then forgets it here, as `tg session end` does
|
|
62
62
|
* (`NEED-821` A). A token copied from a browser tab is that tab's session, so the tab is logged out too.
|
|
63
63
|
*/
|
|
64
|
-
annotate(command.command("end"), {
|
|
64
|
+
annotate(command.command("end"), { effects: REMOTE_WRITE })
|
|
65
65
|
.description("log this profile out on MAX's side and forget the session here")
|
|
66
66
|
.action(async function () {
|
|
67
|
-
const
|
|
67
|
+
const context = forCommand(this);
|
|
68
|
+
const { renderer, store, run, createClient } = context;
|
|
68
69
|
await run("session end", async (events) => {
|
|
69
70
|
if (store.readToken() === undefined) {
|
|
70
|
-
|
|
71
|
+
renderAnswer(this, context, itemOf({ profile: store.profile, forgotten: false, revoked_on_server: false }));
|
|
71
72
|
renderer.note(`there was no session for "${store.profile}"`);
|
|
72
73
|
return;
|
|
73
74
|
}
|
|
@@ -78,7 +79,7 @@ export const sessionCommand = () => {
|
|
|
78
79
|
}
|
|
79
80
|
const revokedOnServer = await logOut(createClient({ events }));
|
|
80
81
|
const had = store.forget();
|
|
81
|
-
|
|
82
|
+
renderAnswer(this, context, itemOf({ profile: store.profile, forgotten: had, revoked_on_server: revokedOnServer }));
|
|
82
83
|
renderer.success(`logged "${store.profile}" out of MAX and forgot the session here`);
|
|
83
84
|
});
|
|
84
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAyC,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAuB,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9D,wGAAwG;AACxG,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,8GAA8G;IAC9G,8FAA8F;CAC/F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAA;IAE7F;;;;;;;;;;;;;OAaG;IACH,OAAO
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|