diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ee850ca..b66092a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 ### Что нового diff --git a/contracts/help.snap b/contracts/help.snap index 81a2dc52..2a8cfb33 100644 --- a/contracts/help.snap +++ b/contracts/help.snap @@ -5,20 +5,20 @@ Usage: max [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 shared chats and the last messages each way - schedule agent … an agent on a timer that reads and drafts, never sends - bot messages send 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 shared chats and the last messages each way + schedule agent … an agent on a timer that reads and drafts, never sends + bot messages send 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 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 one person across messengers, mail, notes and meetings Start here: max personal setup (any profile name works) Next: max commands every command, by section diff --git a/package.json b/package.json index 1d6e887c..92ca5446 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c61ec780..71465bc1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,8 +25,8 @@ importers: specifier: 0.47.0 version: 0.47.0(commander@15.0.0)(typescript@7.0.2)(vitest@5.0.3) '@wirecat/cli-core': - specifier: 0.362.0 - version: 0.362.0(@napi-rs/canvas@1.0.11)(@wirecat/cli-base@0.47.0(commander@15.0.0)(typescript@7.0.2)(vitest@5.0.3))(cac@6.7.14)(commander@15.0.0)(typescript@7.0.2)(zod@4.6.5) + specifier: 0.370.0 + version: 0.370.0(@napi-rs/canvas@1.0.11)(@wirecat/cli-base@0.47.0(commander@15.0.0)(typescript@7.0.2)(vitest@5.0.3))(cac@6.7.14)(commander@15.0.0)(typescript@7.0.2)(zod@4.6.5) commander: specifier: 15.0.0 version: 15.0.0 @@ -1330,8 +1330,8 @@ packages: '@wirecat/cli-core-sqlite@1.0.1': resolution: {integrity: sha512-dFkTE3+XdvZwrt7bZZEd2fzdqR2vFgnnGPOhmBKGNa7uKQHjOdqJL8Q9O5cajIjy5o8Gl0LVn0OZbYajhLvQ1A==} - '@wirecat/cli-core@0.362.0': - resolution: {integrity: sha512-iZsFZG1zsV4dTlHaLaC1/e478hjaeDitSABGHfRKIrZWrOvmIAfVQXiy/3fx3IZ4n64DO/uQln8+DTGLWC2sSg==} + '@wirecat/cli-core@0.370.0': + resolution: {integrity: sha512-Y7I165sG0C9ezTehnSJKjWxN2sov276HRinl61kyDCC7lTLlTVHGh8g6O5NFoV5cfk0kmTzGlJYZRNbbLICGiw==} engines: {node: ^22.16.0 || >=24} hasBin: true peerDependencies: @@ -3540,7 +3540,7 @@ snapshots: '@wirecat/cli-core-sqlite@1.0.1': {} - '@wirecat/cli-core@0.362.0(@napi-rs/canvas@1.0.11)(@wirecat/cli-base@0.47.0(commander@15.0.0)(typescript@7.0.2)(vitest@5.0.3))(cac@6.7.14)(commander@15.0.0)(typescript@7.0.2)(zod@4.6.5)': + '@wirecat/cli-core@0.370.0(@napi-rs/canvas@1.0.11)(@wirecat/cli-base@0.47.0(commander@15.0.0)(typescript@7.0.2)(vitest@5.0.3))(cac@6.7.14)(commander@15.0.0)(typescript@7.0.2)(zod@4.6.5)': dependencies: '@anthropic-ai/sdk': 0.131.0(zod@4.6.5) '@bomb.sh/tab': 0.0.22(cac@6.7.14)(commander@15.0.0) diff --git a/scenarios/catch-up.md b/scenarios/catch-up.md index f3fb625b..c4cc2f6f 100644 --- a/scenarios/catch-up.md +++ b/scenarios/catch-up.md @@ -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 diff --git a/src/program.test.ts b/src/program.test.ts index 3853bbd4..20994569 100644 --- a/src/program.test.ts +++ b/src/program.test.ts @@ -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 () => { diff --git a/src/program.ts b/src/program.ts index 147abf72..3563c448 100644 --- a/src/program.ts +++ b/src/program.ts @@ -11,6 +11,7 @@ import { imagesCommand, inboxCommand, inSection, + MEMO_SCENARIOS, mcpCommand, mentionsCommand, metadataCommand, @@ -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 ", does: "shared chats and the last messages each way" }, @@ -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) => {