Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@
номера версий по [семантике](https://semver.org/lang/ru/), то есть до `1.0.0` интерфейс команд
ещё может меняться.

## Не выпущено

### Исправлено

- **`max guide catch-up` и первый экран `max --help` берут фильтр в кавычки: `max review 'date>1d' --unanswered 4h`.**
Без кавычек оболочка читала `>` как перенаправление: создавала файл `1d`, а `review` шёл без фильтра. На
cli-core 0.370.0 проверка сценариев в тестах ловит такие символы вне кавычек.
- **«Works with» пишет название сценария memo так же, как memo и остальные инструменты:** «One person across every
tool», с заглавной.

## 0.65.0 — 19.10.2026

### Что нового
Expand Down
24 changes: 12 additions & 12 deletions contracts/help.snap
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ Usage: max <profile> <command> [options]
Account commands start with your profile, a name you choose; none is ever assumed.

What you can do:
review date>1d --unanswered 4h questions to you nobody answered, across every chat
tasks list questions and promises waiting on you
search all "invoice" messages, notes, file text and voice transcripts at once
contacts context <person> shared chats and the last messages each way
schedule agent … an agent on a timer that reads and drafts, never sends
bot messages send <chat> your bot, through MAX's official Bot API
MAX_READ_ONLY=1 max … an agent that can never send
review 'date>1d' --unanswered 4h questions to you nobody answered, across every chat
tasks list questions and promises waiting on you
search all "invoice" messages, notes, file text and voice transcripts at once
contacts context <person> shared chats and the last messages each way
schedule agent … an agent on a timer that reads and drafts, never sends
bot messages send <chat> your bot, through MAX's official Bot API
MAX_READ_ONLY=1 max … an agent that can never send

Works with:
tg Telegram in the same local store: search, review and tasks offline
wa WhatsApp in the same local store: search, review and tasks offline
zm Zoom meetings: transcripts and summaries, searchable with your messages
drive Google Drive and Docs as local text, searchable with your messages
memo context <person> one person across messengers, mail, notes and meetings
tg Telegram in the same local store: search, review and tasks offline
wa WhatsApp in the same local store: search, review and tasks offline
zm Zoom meetings: transcripts and summaries, searchable with your messages
drive Google Drive and Docs as local text, searchable with your messages
memo context <person> one person across messengers, mail, notes and meetings

Start here: max personal setup (any profile name works)
Next: max commands every command, by section
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@
"@msgpack/msgpack": "3.1.3",
"@valibot/to-json-schema": "1.8.0",
"@wirecat/cli-base": "0.47.0",
"@wirecat/cli-core": "0.362.0",
"@wirecat/cli-core": "0.370.0",
"commander": "15.0.0",
"lossless-json": "4.3.1",
"ogg-opus-decoder": "1.7.5",
Expand Down
10 changes: 5 additions & 5 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion scenarios/catch-up.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Catch up after a day away
goal: Know who waits on you and what you promised, without opening every chat.
steps:
- run: max review date>1d --unanswered 4h
- run: max review 'date>1d' --unanswered 4h
why: questions to you that nobody answered for four hours, across every chat
- run: max inbox --new
why: other people's messages that arrived since your last check, each one once
Expand Down
2 changes: 1 addition & 1 deletion src/program.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ describe("the program", () => {
it("prints one scenario's steps as data, with no profile", async () => {
const { stdout, code } = await runWith(["guide", "catch-up", "--json"])
expect(code).toBe(0)
expect(JSON.parse(stdout).item.steps[0].run).toBe("max review date>1d --unanswered 4h")
expect(JSON.parse(stdout).item.steps[0].run).toBe("max review 'date>1d' --unanswered 4h")
})

it("prints the options for every command under `help options`, with no profile", async () => {
Expand Down
5 changes: 3 additions & 2 deletions src/program.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
imagesCommand,
inboxCommand,
inSection,
MEMO_SCENARIOS,
mcpCommand,
mentionsCommand,
metadataCommand,
Expand Down Expand Up @@ -85,7 +86,7 @@ const definition = (options: RunOptions = {}): ProgramDefinition => ({
pitch:
"your personal MAX for agents and scripts. Reads go to a local store; search, review and tasks work offline.",
can: [
{ command: "review date>1d --unanswered 4h", does: "questions to you nobody answered, across every chat" },
{ command: "review 'date>1d' --unanswered 4h", does: "questions to you nobody answered, across every chat" },
{ command: "tasks list", does: "questions and promises waiting on you" },
{ command: 'search all "invoice"', does: "messages, notes, file text and voice transcripts at once" },
{ command: "contacts context <person>", does: "shared chats and the last messages each way" },
Expand Down Expand Up @@ -142,7 +143,7 @@ const definition = (options: RunOptions = {}): ProgramDefinition => ({
botCommand(run),
guideCommand(MAX_APP, {
directory: fileURLToPath(new URL("../scenarios", import.meta.url)),
worksWith: [{ tool: "memo", name: "person-brief", title: "one person across every tool" }],
worksWith: [MEMO_SCENARIOS.personBrief],
}),
],
configure: (program) => {
Expand Down
Loading