@wirecat/max-cli 0.0.0 → 0.43.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/LICENSE +204 -0
- package/README.md +531 -0
- package/dist/adapter/max-adapter.d.ts +17 -0
- package/dist/adapter/max-adapter.d.ts.map +1 -0
- package/dist/adapter/max-adapter.js +364 -0
- package/dist/adapter/max-adapter.js.map +1 -0
- package/dist/app.d.ts +3 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +9 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/max.d.ts +3 -0
- package/dist/bin/max.d.ts.map +1 -0
- package/dist/bin/max.js +20 -0
- package/dist/bin/max.js.map +1 -0
- package/dist/bot/adapter.d.ts +25 -0
- package/dist/bot/adapter.d.ts.map +1 -0
- package/dist/bot/adapter.js +404 -0
- package/dist/bot/adapter.js.map +1 -0
- package/dist/bot/auth.d.ts +13 -0
- package/dist/bot/auth.d.ts.map +1 -0
- package/dist/bot/auth.js +9 -0
- package/dist/bot/auth.js.map +1 -0
- package/dist/bot/client.d.ts +26 -0
- package/dist/bot/client.d.ts.map +1 -0
- package/dist/bot/client.js +105 -0
- package/dist/bot/client.js.map +1 -0
- package/dist/bot/generated/manifest.d.ts +3 -0
- package/dist/bot/generated/manifest.d.ts.map +1 -0
- package/dist/bot/generated/manifest.js +1232 -0
- package/dist/bot/generated/manifest.js.map +1 -0
- package/dist/bot/generated/schemas.d.ts +271 -0
- package/dist/bot/generated/schemas.d.ts.map +1 -0
- package/dist/bot/generated/schemas.js +869 -0
- package/dist/bot/generated/schemas.js.map +1 -0
- package/dist/bot/generated/types.d.ts +1088 -0
- package/dist/bot/generated/types.d.ts.map +1 -0
- package/dist/bot/generated/types.js +5 -0
- package/dist/bot/generated/types.js.map +1 -0
- package/dist/bot/input.d.ts +6 -0
- package/dist/bot/input.d.ts.map +1 -0
- package/dist/bot/input.js +6 -0
- package/dist/bot/input.js.map +1 -0
- package/dist/bot/joins.d.ts +26 -0
- package/dist/bot/joins.d.ts.map +1 -0
- package/dist/bot/joins.js +56 -0
- package/dist/bot/joins.js.map +1 -0
- package/dist/bot/keep.d.ts +25 -0
- package/dist/bot/keep.d.ts.map +1 -0
- package/dist/bot/keep.js +98 -0
- package/dist/bot/keep.js.map +1 -0
- package/dist/bot/map.d.ts +14 -0
- package/dist/bot/map.d.ts.map +1 -0
- package/dist/bot/map.js +101 -0
- package/dist/bot/map.js.map +1 -0
- package/dist/bot/mcp-tools.d.ts +4 -0
- package/dist/bot/mcp-tools.d.ts.map +1 -0
- package/dist/bot/mcp-tools.js +78 -0
- package/dist/bot/mcp-tools.js.map +1 -0
- package/dist/bot/permissions.d.ts +14 -0
- package/dist/bot/permissions.d.ts.map +1 -0
- package/dist/bot/permissions.js +88 -0
- package/dist/bot/permissions.js.map +1 -0
- package/dist/bot/registry.d.ts +11 -0
- package/dist/bot/registry.d.ts.map +1 -0
- package/dist/bot/registry.js +13 -0
- package/dist/bot/registry.js.map +1 -0
- package/dist/bot/russian-trusted-root.d.ts +8 -0
- package/dist/bot/russian-trusted-root.d.ts.map +1 -0
- package/dist/bot/russian-trusted-root.js +41 -0
- package/dist/bot/russian-trusted-root.js.map +1 -0
- package/dist/bot/transport.d.ts +46 -0
- package/dist/bot/transport.d.ts.map +1 -0
- package/dist/bot/transport.js +252 -0
- package/dist/bot/transport.js.map +1 -0
- package/dist/bot/uploads.d.ts +42 -0
- package/dist/bot/uploads.d.ts.map +1 -0
- package/dist/bot/uploads.js +145 -0
- package/dist/bot/uploads.js.map +1 -0
- package/dist/client.d.ts +650 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2836 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/account.d.ts +3 -0
- package/dist/commands/account.d.ts.map +1 -0
- package/dist/commands/account.js +4 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/bot-comments.d.ts +3 -0
- package/dist/commands/bot-comments.d.ts.map +1 -0
- package/dist/commands/bot-comments.js +74 -0
- package/dist/commands/bot-comments.js.map +1 -0
- package/dist/commands/bot-context.d.ts +38 -0
- package/dist/commands/bot-context.d.ts.map +1 -0
- package/dist/commands/bot-context.js +121 -0
- package/dist/commands/bot-context.js.map +1 -0
- package/dist/commands/bot-members.d.ts +14 -0
- package/dist/commands/bot-members.d.ts.map +1 -0
- package/dist/commands/bot-members.js +64 -0
- package/dist/commands/bot-members.js.map +1 -0
- package/dist/commands/bot-messenger.d.ts +10 -0
- package/dist/commands/bot-messenger.d.ts.map +1 -0
- package/dist/commands/bot-messenger.js +101 -0
- package/dist/commands/bot-messenger.js.map +1 -0
- package/dist/commands/bot-reads.d.ts +4 -0
- package/dist/commands/bot-reads.d.ts.map +1 -0
- package/dist/commands/bot-reads.js +13 -0
- package/dist/commands/bot-reads.js.map +1 -0
- package/dist/commands/bot-sends.d.ts +13 -0
- package/dist/commands/bot-sends.d.ts.map +1 -0
- package/dist/commands/bot-sends.js +103 -0
- package/dist/commands/bot-sends.js.map +1 -0
- package/dist/commands/bot-setup.d.ts +3 -0
- package/dist/commands/bot-setup.d.ts.map +1 -0
- package/dist/commands/bot-setup.js +20 -0
- package/dist/commands/bot-setup.js.map +1 -0
- package/dist/commands/bot.d.ts +3 -0
- package/dist/commands/bot.d.ts.map +1 -0
- package/dist/commands/bot.js +60 -0
- package/dist/commands/bot.js.map +1 -0
- package/dist/commands/calls.d.ts +3 -0
- package/dist/commands/calls.d.ts.map +1 -0
- package/dist/commands/calls.js +4 -0
- package/dist/commands/calls.js.map +1 -0
- package/dist/commands/chats.d.ts +3 -0
- package/dist/commands/chats.d.ts.map +1 -0
- package/dist/commands/chats.js +46 -0
- package/dist/commands/chats.js.map +1 -0
- package/dist/commands/commands.d.ts +2 -0
- package/dist/commands/commands.d.ts.map +1 -0
- package/dist/commands/commands.js +4 -0
- package/dist/commands/commands.js.map +1 -0
- package/dist/commands/complete.d.ts +2 -0
- package/dist/commands/complete.d.ts.map +1 -0
- package/dist/commands/complete.js +34 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +170 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/contacts.d.ts +10 -0
- package/dist/commands/contacts.d.ts.map +1 -0
- package/dist/commands/contacts.js +80 -0
- package/dist/commands/contacts.js.map +1 -0
- package/dist/commands/context.d.ts +126 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +137 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/doctor.d.ts +24 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +308 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/mcp.d.ts +36 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +214 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/messages.d.ts +3 -0
- package/dist/commands/messages.d.ts.map +1 -0
- package/dist/commands/messages.js +105 -0
- package/dist/commands/messages.js.map +1 -0
- package/dist/commands/models.d.ts +3 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +4 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/paging.d.ts +59 -0
- package/dist/commands/paging.d.ts.map +1 -0
- package/dist/commands/paging.js +77 -0
- package/dist/commands/paging.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 +74 -0
- package/dist/commands/recipients.js.map +1 -0
- package/dist/commands/runs.d.ts +2 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +4 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/sends.d.ts +3 -0
- package/dist/commands/sends.d.ts.map +1 -0
- package/dist/commands/sends.js +4 -0
- package/dist/commands/sends.js.map +1 -0
- package/dist/commands/serve-members.d.ts +14 -0
- package/dist/commands/serve-members.d.ts.map +1 -0
- package/dist/commands/serve-members.js +54 -0
- package/dist/commands/serve-members.js.map +1 -0
- package/dist/commands/serve-stems.d.ts +9 -0
- package/dist/commands/serve-stems.d.ts.map +1 -0
- package/dist/commands/serve-stems.js +26 -0
- package/dist/commands/serve-stems.js.map +1 -0
- package/dist/commands/serve.d.ts +10 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +79 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/server.d.ts +16 -0
- package/dist/commands/server.d.ts.map +1 -0
- package/dist/commands/server.js +51 -0
- package/dist/commands/server.js.map +1 -0
- package/dist/commands/session.d.ts +15 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +169 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +168 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/skill.d.ts +3 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +7 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/stickers.d.ts +3 -0
- package/dist/commands/stickers.d.ts.map +1 -0
- package/dist/commands/stickers.js +4 -0
- package/dist/commands/stickers.js.map +1 -0
- package/dist/commands/upgrade.d.ts +2 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +14 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/watch.d.ts +27 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +105 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/config.d.ts +385 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +372 -0
- package/dist/config.js.map +1 -0
- package/dist/deadline.d.ts +2 -0
- package/dist/deadline.d.ts.map +1 -0
- package/dist/deadline.js +2 -0
- package/dist/deadline.js.map +1 -0
- package/dist/diagnose.d.ts +143 -0
- package/dist/diagnose.d.ts.map +1 -0
- package/dist/diagnose.js +183 -0
- package/dist/diagnose.js.map +1 -0
- package/dist/domain/map.d.ts +65 -0
- package/dist/domain/map.d.ts.map +1 -0
- package/dist/domain/map.js +431 -0
- package/dist/domain/map.js.map +1 -0
- package/dist/domain/models.d.ts +238 -0
- package/dist/domain/models.d.ts.map +1 -0
- package/dist/domain/models.js +17 -0
- package/dist/domain/models.js.map +1 -0
- package/dist/download.d.ts +38 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +199 -0
- package/dist/download.js.map +1 -0
- package/dist/format-markdown.d.ts +13 -0
- package/dist/format-markdown.d.ts.map +1 -0
- package/dist/format-markdown.js +241 -0
- package/dist/format-markdown.js.map +1 -0
- package/dist/generated/client.generated.d.ts +95 -0
- package/dist/generated/client.generated.d.ts.map +1 -0
- package/dist/generated/client.generated.js +91 -0
- package/dist/generated/client.generated.js.map +1 -0
- package/dist/generated/opcodes.generated.d.ts +76 -0
- package/dist/generated/opcodes.generated.d.ts.map +1 -0
- package/dist/generated/opcodes.generated.js +76 -0
- package/dist/generated/opcodes.generated.js.map +1 -0
- package/dist/generated/operations.generated.d.ts +502 -0
- package/dist/generated/operations.generated.d.ts.map +1 -0
- package/dist/generated/operations.generated.js +72 -0
- package/dist/generated/operations.generated.js.map +1 -0
- package/dist/inbox-point.d.ts +3 -0
- package/dist/inbox-point.d.ts.map +1 -0
- package/dist/inbox-point.js +17 -0
- package/dist/inbox-point.js.map +1 -0
- package/dist/install/postinstall.d.ts +8 -0
- package/dist/install/postinstall.d.ts.map +1 -0
- package/dist/install/postinstall.js +62 -0
- package/dist/install/postinstall.js.map +1 -0
- package/dist/install.d.ts +43 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +142 -0
- package/dist/install.js.map +1 -0
- package/dist/markdown.d.ts +13 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +6 -0
- package/dist/markdown.js.map +1 -0
- package/dist/mcp/instructions.d.ts +13 -0
- package/dist/mcp/instructions.d.ts.map +1 -0
- package/dist/mcp/instructions.js +16 -0
- package/dist/mcp/instructions.js.map +1 -0
- package/dist/mcp/legacy-check.d.ts +12 -0
- package/dist/mcp/legacy-check.d.ts.map +1 -0
- package/dist/mcp/legacy-check.js +44 -0
- package/dist/mcp/legacy-check.js.map +1 -0
- package/dist/mcp/photo.d.ts +9 -0
- package/dist/mcp/photo.d.ts.map +1 -0
- package/dist/mcp/photo.js +38 -0
- package/dist/mcp/photo.js.map +1 -0
- package/dist/mcp/prompts.d.ts +7 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +100 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/resources.d.ts +15 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +56 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts +31 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +116 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +30 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +109 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/shared.d.ts +14 -0
- package/dist/mcp/shared.d.ts.map +1 -0
- package/dist/mcp/shared.js +46 -0
- package/dist/mcp/shared.js.map +1 -0
- package/dist/mcp/tools.d.ts +30 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +248 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/messenger.d.ts +15 -0
- package/dist/messenger.d.ts.map +1 -0
- package/dist/messenger.js +149 -0
- package/dist/messenger.js.map +1 -0
- package/dist/moderation/check.d.ts +103 -0
- package/dist/moderation/check.d.ts.map +1 -0
- package/dist/moderation/check.js +273 -0
- package/dist/moderation/check.js.map +1 -0
- package/dist/moderation/points.d.ts +8 -0
- package/dist/moderation/points.d.ts.map +1 -0
- package/dist/moderation/points.js +21 -0
- package/dist/moderation/points.js.map +1 -0
- package/dist/moderation/rules.d.ts +7 -0
- package/dist/moderation/rules.d.ts.map +1 -0
- package/dist/moderation/rules.js +24 -0
- package/dist/moderation/rules.js.map +1 -0
- package/dist/online.d.ts +23 -0
- package/dist/online.d.ts.map +1 -0
- package/dist/online.js +87 -0
- package/dist/online.js.map +1 -0
- package/dist/output.d.ts +2 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +2 -0
- package/dist/output.js.map +1 -0
- package/dist/permissions.d.ts +20 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +76 -0
- package/dist/permissions.js.map +1 -0
- package/dist/profile.d.ts +33 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +60 -0
- package/dist/profile.js.map +1 -0
- package/dist/program.d.ts +10 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +172 -0
- package/dist/program.js.map +1 -0
- package/dist/protocol/connection.d.ts +83 -0
- package/dist/protocol/connection.d.ts.map +1 -0
- package/dist/protocol/connection.js +301 -0
- package/dist/protocol/connection.js.map +1 -0
- package/dist/protocol/frame.d.ts +55 -0
- package/dist/protocol/frame.d.ts.map +1 -0
- package/dist/protocol/frame.js +149 -0
- package/dist/protocol/frame.js.map +1 -0
- package/dist/protocol/lz4.d.ts +15 -0
- package/dist/protocol/lz4.d.ts.map +1 -0
- package/dist/protocol/lz4.js +157 -0
- package/dist/protocol/lz4.js.map +1 -0
- package/dist/record.d.ts +41 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +104 -0
- package/dist/record.js.map +1 -0
- package/dist/rendering/messages.d.ts +24 -0
- package/dist/rendering/messages.d.ts.map +1 -0
- package/dist/rendering/messages.js +172 -0
- package/dist/rendering/messages.js.map +1 -0
- package/dist/report.d.ts +43 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +104 -0
- package/dist/report.js.map +1 -0
- package/dist/resolve.d.ts +6 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +5 -0
- package/dist/resolve.js.map +1 -0
- package/dist/sends.d.ts +17 -0
- package/dist/sends.d.ts.map +1 -0
- package/dist/sends.js +97 -0
- package/dist/sends.js.map +1 -0
- package/dist/server/lines.d.ts +23 -0
- package/dist/server/lines.d.ts.map +1 -0
- package/dist/server/lines.js +56 -0
- package/dist/server/lines.js.map +1 -0
- package/dist/server/replies.d.ts +31 -0
- package/dist/server/replies.d.ts.map +1 -0
- package/dist/server/replies.js +95 -0
- package/dist/server/replies.js.map +1 -0
- package/dist/server/server-connection.d.ts +55 -0
- package/dist/server/server-connection.d.ts.map +1 -0
- package/dist/server/server-connection.js +245 -0
- package/dist/server/server-connection.js.map +1 -0
- package/dist/server/server.d.ts +88 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +634 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/start.d.ts +37 -0
- package/dist/server/start.d.ts.map +1 -0
- package/dist/server/start.js +102 -0
- package/dist/server/start.js.map +1 -0
- package/dist/server/subscribe.d.ts +9 -0
- package/dist/server/subscribe.d.ts.map +1 -0
- package/dist/server/subscribe.js +26 -0
- package/dist/server/subscribe.js.map +1 -0
- package/dist/session/adopt.d.ts +22 -0
- package/dist/session/adopt.d.ts.map +1 -0
- package/dist/session/adopt.js +34 -0
- package/dist/session/adopt.js.map +1 -0
- package/dist/session/browser.d.ts +55 -0
- package/dist/session/browser.d.ts.map +1 -0
- package/dist/session/browser.js +321 -0
- package/dist/session/browser.js.map +1 -0
- package/dist/session/handshake.d.ts +57 -0
- package/dist/session/handshake.d.ts.map +1 -0
- package/dist/session/handshake.js +40 -0
- package/dist/session/handshake.js.map +1 -0
- 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 +2 -0
- package/dist/session/prompt.d.ts.map +1 -0
- package/dist/session/prompt.js +2 -0
- package/dist/session/prompt.js.map +1 -0
- 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 +76 -0
- package/dist/session/store.d.ts.map +1 -0
- package/dist/session/store.js +134 -0
- package/dist/session/store.js.map +1 -0
- package/dist/skill.d.ts +7 -0
- package/dist/skill.d.ts.map +1 -0
- package/dist/skill.js +8 -0
- package/dist/skill.js.map +1 -0
- package/dist/spec/check.d.ts +16 -0
- package/dist/spec/check.d.ts.map +1 -0
- package/dist/spec/check.js +44 -0
- package/dist/spec/check.js.map +1 -0
- package/dist/spec/define.d.ts +108 -0
- package/dist/spec/define.d.ts.map +1 -0
- package/dist/spec/define.js +47 -0
- package/dist/spec/define.js.map +1 -0
- package/dist/spec/guards.d.ts +16 -0
- package/dist/spec/guards.d.ts.map +1 -0
- package/dist/spec/guards.js +30 -0
- package/dist/spec/guards.js.map +1 -0
- package/dist/spec/identity.d.ts +57 -0
- package/dist/spec/identity.d.ts.map +1 -0
- package/dist/spec/identity.js +53 -0
- package/dist/spec/identity.js.map +1 -0
- package/dist/spec/index.d.ts +15 -0
- package/dist/spec/index.d.ts.map +1 -0
- package/dist/spec/index.js +84 -0
- package/dist/spec/index.js.map +1 -0
- package/dist/spec/operations/account.d.ts +39 -0
- package/dist/spec/operations/account.d.ts.map +1 -0
- package/dist/spec/operations/account.js +103 -0
- package/dist/spec/operations/account.js.map +1 -0
- package/dist/spec/operations/assets.d.ts +17 -0
- package/dist/spec/operations/assets.d.ts.map +1 -0
- package/dist/spec/operations/assets.js +43 -0
- package/dist/spec/operations/assets.js.map +1 -0
- 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 +40 -0
- package/dist/spec/operations/attachments.js.map +1 -0
- package/dist/spec/operations/banners.d.ts +7 -0
- package/dist/spec/operations/banners.d.ts.map +1 -0
- package/dist/spec/operations/banners.js +16 -0
- package/dist/spec/operations/banners.js.map +1 -0
- package/dist/spec/operations/calls.d.ts +8 -0
- package/dist/spec/operations/calls.d.ts.map +1 -0
- package/dist/spec/operations/calls.js +25 -0
- package/dist/spec/operations/calls.js.map +1 -0
- package/dist/spec/operations/chats.d.ts +115 -0
- package/dist/spec/operations/chats.d.ts.map +1 -0
- package/dist/spec/operations/chats.js +331 -0
- package/dist/spec/operations/chats.js.map +1 -0
- package/dist/spec/operations/contacts.d.ts +39 -0
- package/dist/spec/operations/contacts.d.ts.map +1 -0
- package/dist/spec/operations/contacts.js +135 -0
- package/dist/spec/operations/contacts.js.map +1 -0
- package/dist/spec/operations/folders.d.ts +31 -0
- package/dist/spec/operations/folders.d.ts.map +1 -0
- package/dist/spec/operations/folders.js +94 -0
- package/dist/spec/operations/folders.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 +105 -0
- package/dist/spec/operations/login.js.map +1 -0
- package/dist/spec/operations/messages.d.ts +142 -0
- package/dist/spec/operations/messages.d.ts.map +1 -0
- package/dist/spec/operations/messages.js +347 -0
- package/dist/spec/operations/messages.js.map +1 -0
- package/dist/spec/operations/session.d.ts +120 -0
- package/dist/spec/operations/session.d.ts.map +1 -0
- package/dist/spec/operations/session.js +202 -0
- package/dist/spec/operations/session.js.map +1 -0
- package/dist/spec/operations/uploads.d.ts +31 -0
- package/dist/spec/operations/uploads.d.ts.map +1 -0
- package/dist/spec/operations/uploads.js +59 -0
- package/dist/spec/operations/uploads.js.map +1 -0
- package/dist/spec/scalars.d.ts +17 -0
- package/dist/spec/scalars.d.ts.map +1 -0
- package/dist/spec/scalars.js +33 -0
- package/dist/spec/scalars.js.map +1 -0
- package/dist/transcribe/index.d.ts +70 -0
- package/dist/transcribe/index.d.ts.map +1 -0
- package/dist/transcribe/index.js +127 -0
- package/dist/transcribe/index.js.map +1 -0
- package/dist/transcribe/install.d.ts +2 -0
- package/dist/transcribe/install.d.ts.map +1 -0
- package/dist/transcribe/install.js +2 -0
- package/dist/transcribe/install.js.map +1 -0
- package/dist/transcribe/models.d.ts +5 -0
- package/dist/transcribe/models.d.ts.map +1 -0
- package/dist/transcribe/models.js +6 -0
- package/dist/transcribe/models.js.map +1 -0
- package/dist/transcribe/speech.d.ts +25 -0
- package/dist/transcribe/speech.d.ts.map +1 -0
- package/dist/transcribe/speech.js +107 -0
- package/dist/transcribe/speech.js.map +1 -0
- package/dist/update.d.ts +31 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +69 -0
- package/dist/update.js.map +1 -0
- package/dist/upload.d.ts +15 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +97 -0
- package/dist/upload.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/voice.d.ts +9 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +36 -0
- package/dist/voice.js.map +1 -0
- package/dist/wire-events.d.ts +23 -0
- package/dist/wire-events.d.ts.map +1 -0
- package/dist/wire-events.js +47 -0
- package/dist/wire-events.js.map +1 -0
- package/install/postinstall.mjs +3 -0
- package/install/windows.ps1 +160 -0
- package/package.json +120 -3
- package/skills/max-cli/SKILL.md +523 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { defineOperation } from "../define.js";
|
|
3
|
+
import { ambiguous, chatOf, countOf, messageOf, objectOf, peopleOf } from "../guards.js";
|
|
4
|
+
import { id } from "../scalars.js";
|
|
5
|
+
export const messagesSend = defineOperation({
|
|
6
|
+
name: "messages.send",
|
|
7
|
+
constant: "MSG_SEND",
|
|
8
|
+
opcode: 64,
|
|
9
|
+
auth: true,
|
|
10
|
+
request: v.union([
|
|
11
|
+
v.strictObject({
|
|
12
|
+
chatId: id(),
|
|
13
|
+
message: v.strictObject({
|
|
14
|
+
/** Left out on a forward, as the web client does: the forwarded message is the content. */
|
|
15
|
+
text: v.optional(v.string()),
|
|
16
|
+
/**
|
|
17
|
+
* The client id MAX deduplicates by — measured, and it is what makes one retry safe. It must
|
|
18
|
+
* never be regenerated on a retry: a fresh one means a second message in somebody's chat.
|
|
19
|
+
*/
|
|
20
|
+
cid: v.pipe(v.number(), v.integer()),
|
|
21
|
+
/** Markup in UTF-16 positions. STRONG, EMPHASIZED, STRIKETHROUGH, MONOSPACED measured locally 2026-09-24; LINK attributes.url and UNDERLINE preserved in raw CHAT_HISTORY readback locally 2026-10-03 (release Saved messages check). */
|
|
22
|
+
elements: v.optional(v.array(v.strictObject({
|
|
23
|
+
type: v.string(),
|
|
24
|
+
from: v.number(),
|
|
25
|
+
length: v.number(),
|
|
26
|
+
attributes: v.optional(v.strictObject({ url: v.string() })),
|
|
27
|
+
}))),
|
|
28
|
+
attaches: v.array(v.unknown()),
|
|
29
|
+
/** Read back as `{type, chatId, message}` — the quoted message whole (measured 2026-09-23). */
|
|
30
|
+
link: v.optional(v.variant("type", [
|
|
31
|
+
v.strictObject({ type: v.literal("REPLY"), messageId: id() }),
|
|
32
|
+
/** `chatId` is the chat the message is forwarded **from** (web.max.ru, PyMax). */
|
|
33
|
+
v.strictObject({ type: v.literal("FORWARD"), messageId: id(), chatId: id() }),
|
|
34
|
+
])),
|
|
35
|
+
/**
|
|
36
|
+
* When MAX itself sends it, in epoch milliseconds — the message waits in the chat's DELAYED
|
|
37
|
+
* history until then. The answer adds `notifySender` and `notifyOpponents`, which we leave
|
|
38
|
+
* to MAX as the web client does (measured 2026-09-24, `FIND-139`).
|
|
39
|
+
*/
|
|
40
|
+
delayedAttributes: v.optional(v.strictObject({ timeToFire: v.pipe(v.number(), v.integer()) })),
|
|
41
|
+
}),
|
|
42
|
+
/** Left out when starting a bot, as the web client does. */
|
|
43
|
+
notify: v.optional(v.boolean()),
|
|
44
|
+
}),
|
|
45
|
+
/**
|
|
46
|
+
* Creating a group is a message too: a CONTROL attachment with no chat to send it to. Measured
|
|
47
|
+
* 2026-09-24 with nobody invited (`pnpm probe:groups`); the answer adds `chat` and `chatId`.
|
|
48
|
+
* `CHANNEL` measured 2026-09-28 (`scripts/probe-channel.ts`): the answer is a private channel.
|
|
49
|
+
*/
|
|
50
|
+
v.strictObject({
|
|
51
|
+
message: v.strictObject({
|
|
52
|
+
cid: v.pipe(v.number(), v.integer()),
|
|
53
|
+
attaches: v.tuple([
|
|
54
|
+
v.strictObject({
|
|
55
|
+
_type: v.literal("CONTROL"),
|
|
56
|
+
event: v.literal("new"),
|
|
57
|
+
chatType: v.picklist(["CHAT", "CHANNEL"]),
|
|
58
|
+
title: v.pipe(v.string(), v.minLength(1)),
|
|
59
|
+
userIds: v.array(id()),
|
|
60
|
+
}),
|
|
61
|
+
]),
|
|
62
|
+
}),
|
|
63
|
+
notify: v.boolean(),
|
|
64
|
+
}),
|
|
65
|
+
]),
|
|
66
|
+
response: v.looseObject({ message: v.optional(v.looseObject({})), chat: v.optional(v.looseObject({})) }),
|
|
67
|
+
guard: (request) => {
|
|
68
|
+
const message = objectOf(request.message);
|
|
69
|
+
const cid = typeof message.cid === "number" ? { sendId: String(message.cid) } : {};
|
|
70
|
+
const [control] = Array.isArray(message.attaches) ? message.attaches.map(objectOf) : [];
|
|
71
|
+
if (request.chatId === undefined && control?._type === "CONTROL" && control.event === "new") {
|
|
72
|
+
return {
|
|
73
|
+
chatId: null,
|
|
74
|
+
kind: "chat",
|
|
75
|
+
action: "create",
|
|
76
|
+
people: countOf(control.userIds),
|
|
77
|
+
personIds: peopleOf(control.userIds),
|
|
78
|
+
...cid,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const chatId = chatOf(request);
|
|
82
|
+
// Starting a bot is a message to it, as the web client's Start button sends it (chunk `Cdo8IOYe`, 2026-10-08).
|
|
83
|
+
const only = Array.isArray(message.attaches) && message.attaches.length === 1;
|
|
84
|
+
if (only && control?._type === "CONTROL" && control.event === "botStarted")
|
|
85
|
+
return { chatId, kind: "message", key: "chats.start", ...cid };
|
|
86
|
+
// A control attachment changes a chat; in a message it would pass as a plain send.
|
|
87
|
+
if (Array.isArray(message.attaches) && message.attaches.some((attach) => objectOf(attach)._type === "CONTROL")) {
|
|
88
|
+
return ambiguous("messages.send");
|
|
89
|
+
}
|
|
90
|
+
const attaches = Array.isArray(message.attaches) ? message.attaches.map(objectOf) : [];
|
|
91
|
+
if (attaches.some((attach) => attach._type === "POLL") &&
|
|
92
|
+
(attaches.length !== 1 ||
|
|
93
|
+
(typeof message.text === "string" && message.text !== "") ||
|
|
94
|
+
objectOf(message.link).type !== undefined))
|
|
95
|
+
return ambiguous("polls.create");
|
|
96
|
+
const link = objectOf(message.link);
|
|
97
|
+
const at = objectOf(message.delayedAttributes).timeToFire;
|
|
98
|
+
if (link.type === "FORWARD") {
|
|
99
|
+
if (typeof message.text === "string" && message.text !== "")
|
|
100
|
+
return ambiguous("messages.send");
|
|
101
|
+
return { chatId, kind: "forward", ...cid };
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
chatId,
|
|
105
|
+
kind: "message",
|
|
106
|
+
...(control?._type === "POLL" ? { key: "polls.create" } : {}),
|
|
107
|
+
...cid,
|
|
108
|
+
length: typeof message.text === "string" ? message.text.length : 0,
|
|
109
|
+
...(typeof at === "number" ? { scheduledFor: new Date(at).toISOString() } : {}),
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
provenance: {
|
|
113
|
+
confidence: "measured",
|
|
114
|
+
sources: [
|
|
115
|
+
"measured against MAX 2026-09-19, including deduplication by `cid` across two connections",
|
|
116
|
+
"`link` and `elements` measured 2026-09-23 in Saved messages (`pnpm probe:reply`); shapes from tsmax and PyMax",
|
|
117
|
+
"the FORWARD link: web.max.ru `_app/immutable/chunks/5oCuRT0F.js` (2026-09-24), PyMax `api/messages/payloads.py:56-73`",
|
|
118
|
+
"a forward with no `text` and no `elements` measured 2026-09-24 in Saved messages (`pnpm probe:edit-pin-forward`)",
|
|
119
|
+
"LINK attributes.url and UNDERLINE sent and preserved in raw CHAT_HISTORY readback 2026-10-03 in Saved messages (release check)",
|
|
120
|
+
"group creation measured 2026-09-24 (`pnpm probe:groups`); shape from PyMax create_group",
|
|
121
|
+
"`delayedAttributes` from web.max.ru (2026-09-24, `FIND-78`), measured 2026-09-24 in Saved messages (`pnpm probe:scheduled`)",
|
|
122
|
+
],
|
|
123
|
+
notes: "How long MAX remembers a `cid` is still unmeasured (`PROTO-2`); the two probes were seconds apart. " +
|
|
124
|
+
"The forward was measured from chat 0 to chat 0, so that `link.chatId` is the source rests on the two clients.",
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
export const messagesEdit = defineOperation({
|
|
128
|
+
name: "messages.edit",
|
|
129
|
+
constant: "MSG_EDIT",
|
|
130
|
+
opcode: 67,
|
|
131
|
+
auth: true,
|
|
132
|
+
request: v.strictObject({
|
|
133
|
+
chatId: id(),
|
|
134
|
+
messageId: id(),
|
|
135
|
+
/** Left out when closing a poll, as the web client does: only the attachment changes. */
|
|
136
|
+
text: v.optional(v.string()),
|
|
137
|
+
elements: v.optional(v.array(v.strictObject({
|
|
138
|
+
type: v.string(),
|
|
139
|
+
from: v.number(),
|
|
140
|
+
length: v.number(),
|
|
141
|
+
attributes: v.optional(v.strictObject({ url: v.string() })),
|
|
142
|
+
}))),
|
|
143
|
+
/** `attachments`, not `attaches` as in MSG_SEND — every source spells them differently. */
|
|
144
|
+
attachments: v.array(v.unknown()),
|
|
145
|
+
}),
|
|
146
|
+
response: v.looseObject({ message: v.optional(v.looseObject({})) }),
|
|
147
|
+
guard: (request) => ({
|
|
148
|
+
chatId: chatOf(request),
|
|
149
|
+
kind: "edit",
|
|
150
|
+
...(request.text === undefined &&
|
|
151
|
+
Array.isArray(request.attachments) &&
|
|
152
|
+
request.attachments.length === 1 &&
|
|
153
|
+
objectOf(request.attachments[0])._type === "POLL"
|
|
154
|
+
? { key: "polls.close" }
|
|
155
|
+
: {}),
|
|
156
|
+
...messageOf(request),
|
|
157
|
+
length: typeof request.text === "string" ? request.text.length : 0,
|
|
158
|
+
}),
|
|
159
|
+
provenance: {
|
|
160
|
+
confidence: "measured",
|
|
161
|
+
sources: [
|
|
162
|
+
"measured against MAX 2026-09-24 in Saved messages (`pnpm probe:edit-pin-forward`)",
|
|
163
|
+
"web.max.ru `_app/immutable/chunks/5oCuRT0F.js` (2026-09-24)",
|
|
164
|
+
"PyMax `api/messages/payloads.py:21-28` (53103f0)",
|
|
165
|
+
],
|
|
166
|
+
notes: 'Answers `{message}` with `status: "EDITED"`. `attachments: []` removes a photo; the ones history gives, sent back ' +
|
|
167
|
+
"as they are, keep it. LOGIN's `config.server.edit-timeout` was 604800 s. The web client edits only your own " +
|
|
168
|
+
"messages, and never a forward.",
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
export const messagesReactions = defineOperation({
|
|
172
|
+
name: "messages.reactions",
|
|
173
|
+
constant: "MSG_GET_REACTIONS",
|
|
174
|
+
opcode: 180,
|
|
175
|
+
auth: true,
|
|
176
|
+
request: v.strictObject({ chatId: id(), messageIds: v.array(id()) }),
|
|
177
|
+
response: v.looseObject({ messagesReactions: v.optional(v.looseObject({})) }),
|
|
178
|
+
guard: null,
|
|
179
|
+
provenance: {
|
|
180
|
+
confidence: "measured",
|
|
181
|
+
sources: [
|
|
182
|
+
"measured against MAX 2026-09-24 in Saved messages (`pnpm probe:message-shapes`)",
|
|
183
|
+
"tsmax getReactions",
|
|
184
|
+
"PyMax get_reactions",
|
|
185
|
+
],
|
|
186
|
+
notes: "Answers `{messagesReactions: {<message id>: {counters: [{count, reaction}], yourReaction, totalCount}}}`. History carries no reactions (measured 2026-09-23), so this is the only way to read them.",
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
export const messagesMedia = defineOperation({
|
|
190
|
+
name: "messages.media",
|
|
191
|
+
constant: "CHAT_MEDIA",
|
|
192
|
+
opcode: 51,
|
|
193
|
+
auth: true,
|
|
194
|
+
/** Paged from a message, as history is; `attachTypes` as MAX names them: `PHOTO`, `VIDEO`, `FILE`, `AUDIO`, `SHARE`. */
|
|
195
|
+
request: v.strictObject({
|
|
196
|
+
chatId: id(),
|
|
197
|
+
messageId: id(),
|
|
198
|
+
attachTypes: v.array(v.picklist(["PHOTO", "VIDEO", "FILE", "AUDIO", "SHARE"])),
|
|
199
|
+
forward: v.number(),
|
|
200
|
+
backward: v.number(),
|
|
201
|
+
}),
|
|
202
|
+
response: v.looseObject({ messages: v.optional(v.array(v.looseObject({}))), total: v.optional(v.number()) }),
|
|
203
|
+
guard: null,
|
|
204
|
+
provenance: {
|
|
205
|
+
confidence: "measured",
|
|
206
|
+
sources: [
|
|
207
|
+
"web.max.ru chunk `_app/immutable/chunks/Cdo8IOYe.js`, read 2026-10-08: `send(51, {chatId, messageId, attachTypes, forward, backward})`",
|
|
208
|
+
"measured 2026-10-08 on test account B, in the A↔B dialog: `SHARE` answered all 6 link messages history holds, `total: 6`; the other kinds answered `total: 0`",
|
|
209
|
+
"rumax a9ecaf3 `get_chat_media`",
|
|
210
|
+
],
|
|
211
|
+
notes: "Reading marks nothing: no `CHAT_MARK`, and history's own read never moved a read mark (`RES-11`).",
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
export const messagesSearch = defineOperation({
|
|
215
|
+
name: "messages.search",
|
|
216
|
+
constant: "MSG_SEARCH",
|
|
217
|
+
opcode: 73,
|
|
218
|
+
auth: true,
|
|
219
|
+
request: v.strictObject({ chatId: id(), query: v.pipe(v.string(), v.minLength(1)), count: v.number() }),
|
|
220
|
+
response: v.looseObject({ result: v.optional(v.array(v.looseObject({}))), total: v.optional(v.number()) }),
|
|
221
|
+
guard: null,
|
|
222
|
+
provenance: {
|
|
223
|
+
confidence: "measured",
|
|
224
|
+
sources: [
|
|
225
|
+
"measured against MAX 2026-10-07 on a second account, in Saved messages (`pnpm probe:search`)",
|
|
226
|
+
"PyMax 53103f0 `MSG_SEARCH` (`src/pymax/protocol/enums.py:72`), named only",
|
|
227
|
+
"pr0bel1230/max-api-docs 82ff271 `protocol/messaging.md:946-989`",
|
|
228
|
+
],
|
|
229
|
+
notes: "Answers `{result: [{message, highlights}], total}`, or `{result: [], ucpQId}` when nothing matched. One chat only: without `chatId` it is refused (`proto.payload`). Matches a word's beginning, not other forms of a Russian word.",
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
export const messagesReact = defineOperation({
|
|
233
|
+
name: "messages.react",
|
|
234
|
+
constant: "MSG_REACTION",
|
|
235
|
+
opcode: 178,
|
|
236
|
+
auth: true,
|
|
237
|
+
request: v.strictObject({
|
|
238
|
+
chatId: id(),
|
|
239
|
+
messageId: id(),
|
|
240
|
+
reaction: v.strictObject({ reactionType: v.literal("EMOJI"), id: v.string() }),
|
|
241
|
+
}),
|
|
242
|
+
response: v.looseObject({ reactionInfo: v.optional(v.looseObject({})) }),
|
|
243
|
+
guard: (request) => ({ chatId: chatOf(request), kind: "reaction", key: "reactions.add", ...messageOf(request) }),
|
|
244
|
+
provenance: {
|
|
245
|
+
confidence: "measured",
|
|
246
|
+
sources: [
|
|
247
|
+
"measured against MAX 2026-09-23 in Saved messages (`pnpm probe:reply`)",
|
|
248
|
+
"tsmax addReaction",
|
|
249
|
+
"PyMax add_reaction",
|
|
250
|
+
],
|
|
251
|
+
notes: "Answers `{reactionInfo: {counters: [{count, reaction}], yourReaction, totalCount}}`. Allowed by the owner (`NEED-141`).",
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
export const messagesPress = defineOperation({
|
|
255
|
+
name: "messages.press",
|
|
256
|
+
constant: "MSG_CALLBACK",
|
|
257
|
+
opcode: 118,
|
|
258
|
+
auth: true,
|
|
259
|
+
request: v.strictObject({
|
|
260
|
+
/** The keyboard attach's own `callbackId`, not the button's. */
|
|
261
|
+
callbackId: v.string(),
|
|
262
|
+
type: v.literal("CALLBACK"),
|
|
263
|
+
payload: v.optional(v.string()),
|
|
264
|
+
timestamp: v.number(),
|
|
265
|
+
}),
|
|
266
|
+
response: v.looseObject({
|
|
267
|
+
chat: v.optional(v.looseObject({})),
|
|
268
|
+
message: v.optional(v.looseObject({})),
|
|
269
|
+
unread: v.optional(v.number()),
|
|
270
|
+
mark: v.optional(v.number()),
|
|
271
|
+
}),
|
|
272
|
+
// The request names no chat: the web client sends only what is above.
|
|
273
|
+
guard: () => ({ chatId: null, kind: "reaction", key: "messages.press" }),
|
|
274
|
+
provenance: {
|
|
275
|
+
confidence: "observed",
|
|
276
|
+
sources: [
|
|
277
|
+
"web.max.ru code, chunk `Cdo8IOYe` (2026-10-08): `send(118, {callbackId, type, payload, timestamp: Date.now()})`, the answer read for `chat`, `message`, `unread`, `mark`",
|
|
278
|
+
"the keyboard attach measured 2026-10-08 (`pnpm probe:keyboard`): `{_type: INLINE_KEYBOARD, callbackId, keyboard: {buttons: [[{type, text, payload, url, intent}]]}}`",
|
|
279
|
+
],
|
|
280
|
+
notes: "Only CALLBACK buttons are sent; the web client opens the other kinds itself.",
|
|
281
|
+
},
|
|
282
|
+
});
|
|
283
|
+
export const messagesUnreact = defineOperation({
|
|
284
|
+
name: "messages.unreact",
|
|
285
|
+
constant: "MSG_CANCEL_REACTION",
|
|
286
|
+
opcode: 179,
|
|
287
|
+
auth: true,
|
|
288
|
+
request: v.strictObject({ chatId: id(), messageId: id() }),
|
|
289
|
+
response: v.looseObject({ reactionInfo: v.optional(v.looseObject({})) }),
|
|
290
|
+
guard: (request) => ({ chatId: chatOf(request), kind: "reaction", key: "reactions.remove", ...messageOf(request) }),
|
|
291
|
+
provenance: {
|
|
292
|
+
confidence: "measured",
|
|
293
|
+
sources: ["measured against MAX 2026-09-24 in Saved messages", "tsmax removeReaction", "PyMax remove_reaction"],
|
|
294
|
+
notes: "Answers the reactions left, `{reactionInfo: {}}` when none. A second call is answered the same.",
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
export const messagesPollVote = defineOperation({
|
|
298
|
+
name: "messages.pollVote",
|
|
299
|
+
constant: "SEND_VOTE",
|
|
300
|
+
opcode: 304,
|
|
301
|
+
auth: true,
|
|
302
|
+
request: v.strictObject({
|
|
303
|
+
chatId: id(),
|
|
304
|
+
messageId: id(),
|
|
305
|
+
pollId: id(),
|
|
306
|
+
/** Plain integers, not ids: wrapped as 64-bit, MAX answered `proto.payload` and closed the connection. Empty takes the vote back. */
|
|
307
|
+
answersIds: v.array(v.pipe(v.number(), v.integer(), v.minValue(0))),
|
|
308
|
+
}),
|
|
309
|
+
response: v.looseObject({ state: v.optional(v.looseObject({})) }),
|
|
310
|
+
guard: (request) => ({ chatId: chatOf(request), kind: "reaction", key: "polls.vote", ...messageOf(request) }),
|
|
311
|
+
provenance: {
|
|
312
|
+
confidence: "measured",
|
|
313
|
+
sources: [
|
|
314
|
+
"measured 2026-09-27 in Saved messages (`pnpm probe:polls`, `FIND-247`): a vote, two answers, an empty list, a vote on a closed poll",
|
|
315
|
+
"web.max.ru `_app/immutable/chunks/5oCuRT0F.js` (2026-09-24, `FIND-140`)",
|
|
316
|
+
"PyMax 2.4.1 `vote_poll`",
|
|
317
|
+
],
|
|
318
|
+
notes: "Answers the poll's new `state`: `{total, result: [{answerId, voteCount, options, rate, votes}], voterPreviewIds}`, " +
|
|
319
|
+
"bit 1 of `options` marking the owner's own vote. A closed poll is refused with `poll.denied`.",
|
|
320
|
+
},
|
|
321
|
+
});
|
|
322
|
+
export const messagesDelete = defineOperation({
|
|
323
|
+
name: "messages.delete",
|
|
324
|
+
constant: "MSG_DELETE",
|
|
325
|
+
opcode: 66,
|
|
326
|
+
auth: true,
|
|
327
|
+
request: v.strictObject({ chatId: id(), messageIds: v.array(id()), forMe: v.boolean() }),
|
|
328
|
+
response: v.looseObject({}),
|
|
329
|
+
guard: (request) => ({
|
|
330
|
+
chatId: chatOf(request),
|
|
331
|
+
kind: "delete",
|
|
332
|
+
count: Math.max(1, countOf(request.messageIds)),
|
|
333
|
+
forEveryone: request.forMe === false,
|
|
334
|
+
}),
|
|
335
|
+
provenance: {
|
|
336
|
+
confidence: "measured",
|
|
337
|
+
sources: [
|
|
338
|
+
"PyMax 2.4.1 `delete_message`",
|
|
339
|
+
"tsmax",
|
|
340
|
+
"`forMe: false` measured 2026-09-27: the owner, as the group's admin, deleted another member's message in a test group by `max chats check` (`NEED-318`); it was gone from the history MAX returned",
|
|
341
|
+
],
|
|
342
|
+
notes: "`forMe: true` removes the messages for this account only, `false` for everyone in the chat. An admin may " +
|
|
343
|
+
"delete another member's message for everyone. Sent by `max messages delete` and `max chats check`, on the " +
|
|
344
|
+
"owner's word each time (`NEED-32` corrected, `MAX-47`, `NEED-308`).",
|
|
345
|
+
},
|
|
346
|
+
});
|
|
347
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/spec/operations/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
/**
|
|
3
|
+
* **The keep-alive, which only `max serve` sends** — a one-shot command is gone long before it
|
|
4
|
+
* would matter. `interactive` is whether the tab is visible; ours is never, as LOGIN's is.
|
|
5
|
+
*/
|
|
6
|
+
export declare const sessionPing: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
7
|
+
readonly interactive: v.BooleanSchema<undefined>;
|
|
8
|
+
}, undefined>, v.LooseObjectSchema<{}, undefined>>;
|
|
9
|
+
/**
|
|
10
|
+
* **Telemetry, and only the one event a hidden web tab sends** (`MAX-8`): the chat list shown,
|
|
11
|
+
* 20 s after the tab opened. A one-shot command never sends it — a hidden tab closed that soon
|
|
12
|
+
* sends nothing either. Why exactly this and nothing more: `docs/dev/capture/requirements.md`.
|
|
13
|
+
*
|
|
14
|
+
* The request is strict and literal on purpose: anything beyond this one event claims a person in
|
|
15
|
+
* front of a visible tab, which is a different decision.
|
|
16
|
+
*/
|
|
17
|
+
export declare const sessionLog: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
18
|
+
readonly events: v.ArraySchema<v.StrictObjectSchema<{
|
|
19
|
+
readonly type: v.LiteralSchema<"NAV", undefined>;
|
|
20
|
+
readonly userId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
21
|
+
readonly time: v.NumberSchema<undefined>;
|
|
22
|
+
readonly sessionId: v.NumberSchema<undefined>;
|
|
23
|
+
readonly event: v.LiteralSchema<"GO", undefined>;
|
|
24
|
+
readonly params: v.StrictObjectSchema<{
|
|
25
|
+
readonly action_id: v.LiteralSchema<1, undefined>;
|
|
26
|
+
readonly screen_to: v.LiteralSchema<150, undefined>;
|
|
27
|
+
readonly prev_time: v.LiteralSchema<0, undefined>;
|
|
28
|
+
readonly source_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
29
|
+
}, undefined>;
|
|
30
|
+
}, undefined>, undefined>;
|
|
31
|
+
}, undefined>, v.LooseObjectSchema<{}, undefined>>;
|
|
32
|
+
export declare const sessionInit: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
33
|
+
readonly userAgent: v.StrictObjectSchema<{
|
|
34
|
+
readonly deviceType: v.LiteralSchema<"WEB", undefined>;
|
|
35
|
+
readonly pushDeviceType: v.LiteralSchema<"WEBPUSH", undefined>;
|
|
36
|
+
readonly locale: v.StringSchema<undefined>;
|
|
37
|
+
readonly deviceLocale: v.StringSchema<undefined>;
|
|
38
|
+
readonly osVersion: v.StringSchema<undefined>;
|
|
39
|
+
readonly deviceName: v.StringSchema<undefined>;
|
|
40
|
+
readonly headerUserAgent: v.StringSchema<undefined>;
|
|
41
|
+
readonly isPwa: v.LiteralSchema<false, undefined>;
|
|
42
|
+
readonly appVersion: v.StringSchema<undefined>;
|
|
43
|
+
readonly screen: v.StringSchema<undefined>;
|
|
44
|
+
readonly timezone: v.StringSchema<undefined>;
|
|
45
|
+
}, undefined>;
|
|
46
|
+
readonly deviceId: v.StringSchema<undefined>;
|
|
47
|
+
}, undefined>, v.LooseObjectSchema<{}, undefined>>;
|
|
48
|
+
export declare const sessionLogin: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
49
|
+
readonly token: v.StringSchema<undefined>;
|
|
50
|
+
readonly chatsCount: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 100, undefined>]>;
|
|
51
|
+
/**
|
|
52
|
+
* False, always: we are a script reading, and claiming a human is present is the small lie that
|
|
53
|
+
* becomes a side effect nobody can trace (`RES-5`). **Correction 2026-09-25:** this said the web
|
|
54
|
+
* client sends true; its LOGIN on a live socket sent `false` too — `true` goes in its pings.
|
|
55
|
+
*/
|
|
56
|
+
readonly interactive: v.LiteralSchema<false, undefined>;
|
|
57
|
+
/**
|
|
58
|
+
* **Delta markers, not flags** — measured 2026-09-20. Each is a moment in time, and MAX
|
|
59
|
+
* returns only what changed in that collection since it. `0` means "everything", which is what
|
|
60
|
+
* `src/session/handshake.ts` sends and is why every command re-fetches the whole list — except
|
|
61
|
+
* a `max serve` re-login, which sends its newest chat event in `chatsSync` (`MAX-51`).
|
|
62
|
+
*
|
|
63
|
+
* The measurement, on a real account: `0` returned 6 contacts and 25 chats; the `time` the
|
|
64
|
+
* previous login answered with returned 0 and 0; a week earlier returned 1 and 11. The last of
|
|
65
|
+
* those is the one that matters — without it, "nothing came back" would equally have meant
|
|
66
|
+
* "any non-zero value suppresses the collection".
|
|
67
|
+
*
|
|
68
|
+
* Feeding them back is `MAX-10`, and it needs somewhere to keep the marker per profile.
|
|
69
|
+
*/
|
|
70
|
+
readonly chatsSync: v.NumberSchema<undefined>;
|
|
71
|
+
readonly contactsSync: v.NumberSchema<undefined>;
|
|
72
|
+
readonly presenceSync: v.NumberSchema<undefined>;
|
|
73
|
+
readonly draftsSync: v.NumberSchema<undefined>;
|
|
74
|
+
/** Only when the same connection's owner logs in again — `resume` in `src/session/handshake.ts` (`MAX-51`). */
|
|
75
|
+
readonly lastLogin: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
76
|
+
readonly configHash: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
77
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
78
|
+
readonly profile: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
79
|
+
readonly chats: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
|
|
80
|
+
readonly contacts: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
|
|
81
|
+
/**
|
|
82
|
+
* ⚠ **Shape unknown, and this field is why the response check exists.**
|
|
83
|
+
*
|
|
84
|
+
* It was declared as an array here and MAX sends an **object** — found 2026-09-20 by routing
|
|
85
|
+
* the handshake through the checked path. Nothing broke, because the reader is tolerant; what
|
|
86
|
+
* happened instead is that every message the login carries has been silently discarded since
|
|
87
|
+
* the specification was written, after we paid a request for them.
|
|
88
|
+
*
|
|
89
|
+
* The reference documents no top-level `messages` on this response at all — each chat carries
|
|
90
|
+
* its own `lastMessage` (`max-api-docs/protocol/chats.md:61`). So the array was **invented**,
|
|
91
|
+
* not misread, which is the failure `REQUIREMENTS.md` §10 exists to prevent: an unsourced
|
|
92
|
+
* shape stated with the same confidence as a measured one.
|
|
93
|
+
*
|
|
94
|
+
* Left as `unknown` until somebody looks (`PROTO-6`). `pnpm probe:ids` reports its type and key count.
|
|
95
|
+
*/
|
|
96
|
+
readonly messages: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
97
|
+
/**
|
|
98
|
+
* **A replacement for a credential that has aged** — measured on the real account 2026-09-22
|
|
99
|
+
* (`pnpm probe:token`). Logging in with a token pasted months earlier answers with a different
|
|
100
|
+
* one; logging in with *that* one answers with the same one back. So it is an exchange that
|
|
101
|
+
* happens once, not a rotation on every login.
|
|
102
|
+
*
|
|
103
|
+
* It was undeclared until then, so the exchange happened on every login and the client threw
|
|
104
|
+
* the result away, leaving the profile on whatever was pasted in months ago (`MAX-11`,
|
|
105
|
+
* `NEED-106`). The old token goes on working, which is why this is hygiene rather than repair.
|
|
106
|
+
* `NEED-8` had asserted the rotation in 2026-09-18 on the strength of `tsmax/src/app.ts:99` —
|
|
107
|
+
* somebody else's client — which is a claim; this is the measurement.
|
|
108
|
+
*
|
|
109
|
+
* ⚠ **It is a credential.** Nothing may print it, log it or put it in a fixture. `MaxClient`
|
|
110
|
+
* writes it to the keyring and never returns it.
|
|
111
|
+
*/
|
|
112
|
+
readonly token: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
113
|
+
readonly presence: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
114
|
+
readonly time: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
115
|
+
readonly chatMarker: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
116
|
+
readonly config: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
117
|
+
readonly videoChatHistory: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
118
|
+
}, undefined>>;
|
|
119
|
+
export declare const sessionLogout: import("../define.js").Operation<v.StrictObjectSchema<{}, undefined>, v.LooseObjectSchema<{}, undefined>>;
|
|
120
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAwB5B;;;GAGG;AACH,eAAO,MAAM,WAAW;;kDAatB,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;kDA+BrB,CAAA;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;kDAatB,CAAA;AAEF,eAAO,MAAM,YAAY;;;IAUrB;;;;OAIG;;IAEH;;;;;;;;;;;;OAYG;;;;;IAKH,+GAA+G;;;;;;;IAQ/G;;;;;;;;;;;;;;OAcG;;IAEH;;;;;;;;;;;;;;OAcG;;;;;;;cAmBL,CAAA;AAEF,eAAO,MAAM,aAAa,2GAkBxB,CAAA"}
|