@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,135 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { defineOperation, reserveOpcode } from "../define.js";
|
|
3
|
+
import { id } from "../scalars.js";
|
|
4
|
+
export const contactsInfo = defineOperation({
|
|
5
|
+
name: "contacts.info",
|
|
6
|
+
constant: "CONTACT_INFO",
|
|
7
|
+
opcode: 32,
|
|
8
|
+
auth: true,
|
|
9
|
+
request: v.strictObject({ contactIds: v.array(id()) }),
|
|
10
|
+
response: v.looseObject({ contacts: v.optional(v.array(v.looseObject({}))) }),
|
|
11
|
+
guard: null,
|
|
12
|
+
provenance: {
|
|
13
|
+
confidence: "measured",
|
|
14
|
+
sources: ["measured against MAX 2026-09-19: asked for ten, got ten"],
|
|
15
|
+
notes: "One request for every unknown id at once. A person with forty dialogs should not cost forty round trips.",
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
export const contactsPresence = defineOperation({
|
|
19
|
+
name: "contacts.presence",
|
|
20
|
+
constant: "CONTACT_PRESENCE",
|
|
21
|
+
opcode: 35,
|
|
22
|
+
auth: true,
|
|
23
|
+
request: v.strictObject({ contactIds: v.array(id()) }),
|
|
24
|
+
response: v.looseObject({
|
|
25
|
+
presence: v.optional(v.record(v.string(), v.looseObject({}))),
|
|
26
|
+
time: v.optional(v.number()),
|
|
27
|
+
}),
|
|
28
|
+
guard: null,
|
|
29
|
+
provenance: {
|
|
30
|
+
confidence: "measured",
|
|
31
|
+
sources: [
|
|
32
|
+
"web.max.ru tab, recorded 2026-09-25 (`docs_ai/captures/2026-09-25-web-tab-3.jsonl`): sent on opening a profile",
|
|
33
|
+
"answer measured 2026-10-08 on test account B (FIND-971): `{presence: {<id>: {seen}}, time}`",
|
|
34
|
+
],
|
|
35
|
+
notes: "`seen` is in seconds: the recorder rewrites epoch milliseconds and left it a number (FIND-988). The web client " +
|
|
36
|
+
"re-asks every 300 s rather than wait for the 132 push. Its `status` is read only as `1` online, from the tab's " +
|
|
37
|
+
"code (chunk `Cdo8IOYe`, 2026-10-08) — no answer carrying it was measured.",
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
const CONTACT_ACTIONS = {
|
|
41
|
+
ADD: "contact-add",
|
|
42
|
+
REMOVE: "contact-remove",
|
|
43
|
+
UPDATE: "contact-rename",
|
|
44
|
+
BLOCK: "contact-block",
|
|
45
|
+
UNBLOCK: "contact-unblock",
|
|
46
|
+
};
|
|
47
|
+
const webClient = "web.max.ru chunk `_app/immutable/chunks/5oCuRT0F.js`, read 2026-09-24";
|
|
48
|
+
export const contactsByPhone = defineOperation({
|
|
49
|
+
name: "contacts.byPhone",
|
|
50
|
+
constant: "CONTACT_INFO_BY_PHONE",
|
|
51
|
+
opcode: 46,
|
|
52
|
+
auth: true,
|
|
53
|
+
request: v.strictObject({ phone: v.pipe(v.string(), v.minLength(1)) }),
|
|
54
|
+
response: v.looseObject({ contact: v.optional(v.looseObject({})) }),
|
|
55
|
+
guard: null,
|
|
56
|
+
provenance: {
|
|
57
|
+
confidence: "measured",
|
|
58
|
+
sources: [
|
|
59
|
+
"measured against MAX 2026-09-24 (`pnpm probe:account`): the owner's own number answered with the owner",
|
|
60
|
+
webClient,
|
|
61
|
+
"PyMax 53103f0 `search_by_phone`",
|
|
62
|
+
],
|
|
63
|
+
notes: "⚠ The request carries a phone number: nothing may log it, print it in an error or keep it in a fixture.",
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
export const contactsUpdate = defineOperation({
|
|
67
|
+
name: "contacts.update",
|
|
68
|
+
constant: "CONTACT_UPDATE",
|
|
69
|
+
opcode: 34,
|
|
70
|
+
auth: true,
|
|
71
|
+
request: v.union([
|
|
72
|
+
v.strictObject({ contactId: id(), action: v.picklist(["ADD", "REMOVE", "BLOCK", "UNBLOCK"]) }),
|
|
73
|
+
/** A name of your own for the person. */
|
|
74
|
+
v.strictObject({
|
|
75
|
+
contactId: id(),
|
|
76
|
+
action: v.literal("UPDATE"),
|
|
77
|
+
firstName: v.pipe(v.string(), v.minLength(1)),
|
|
78
|
+
/** Always present, `null` when there is none: without it MAX answers and changes nothing. */
|
|
79
|
+
lastName: v.nullable(v.string()),
|
|
80
|
+
}),
|
|
81
|
+
]),
|
|
82
|
+
response: v.looseObject({ contact: v.optional(v.looseObject({})) }),
|
|
83
|
+
guard: (request) => ({
|
|
84
|
+
chatId: null,
|
|
85
|
+
kind: "account",
|
|
86
|
+
action: CONTACT_ACTIONS[request.action],
|
|
87
|
+
}),
|
|
88
|
+
provenance: {
|
|
89
|
+
confidence: "measured",
|
|
90
|
+
sources: [
|
|
91
|
+
"measured 2026-09-27: `max contacts add` then `remove` on a person the owner named; the owner saw the contact appear in the app",
|
|
92
|
+
"measured 2026-09-27 (`pnpm probe:profile`), on a person who agreed: `UPDATE` answers `{contact}` and keeps the name as a `CUSTOM` entry beside theirs; `BLOCK` and `UNBLOCK` answer `{}`, and CONTACT_INFO shows `status: BLOCKED` in between",
|
|
93
|
+
'captured 2026-09-28 from web.max.ru renaming a contact: `{contactId: <wrapped id>, action: "UPDATE", firstName, lastName: null}`. Measured the same day: without `lastName` MAX answers `{contact}` with the old `CUSTOM` name and changes nothing; with `lastName: null` the rename holds on a separate CONTACT_INFO read',
|
|
94
|
+
webClient,
|
|
95
|
+
"PyMax 53103f0 `add_contact`, `remove_contact`",
|
|
96
|
+
],
|
|
97
|
+
notes: "Blocking works for somebody who is not a contact (`status: REMOVED` before and after).",
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
export const contactsImport = defineOperation({
|
|
101
|
+
name: "contacts.import",
|
|
102
|
+
constant: "SYNC",
|
|
103
|
+
opcode: 21,
|
|
104
|
+
auth: true,
|
|
105
|
+
request: v.strictObject({
|
|
106
|
+
/** Phone number to the name it was saved under. */
|
|
107
|
+
contactList: v.record(v.string(), v.strictObject({ firstName: v.string() })),
|
|
108
|
+
}),
|
|
109
|
+
response: v.looseObject({ contacts: v.optional(v.array(v.looseObject({}))) }),
|
|
110
|
+
guard: () => ({ chatId: null, kind: "account", action: "contact-import" }),
|
|
111
|
+
provenance: {
|
|
112
|
+
confidence: "measured",
|
|
113
|
+
sources: [
|
|
114
|
+
"measured against MAX 2026-09-24 (`pnpm probe:account`), the owner's own number only: answered `{phones: {<number>: <number>}}` and no contact",
|
|
115
|
+
"PyMax 53103f0 `import_contacts`",
|
|
116
|
+
],
|
|
117
|
+
notes: "One witness, under a generic name: not found in the entry chunks of web.max.ru (2026-09-24), whose lazy chunks were not read. It uploads other people's numbers to MAX (`NEED-203`).",
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
export const unidentified36 = reserveOpcode({
|
|
121
|
+
name: "protocol.unidentified36",
|
|
122
|
+
constant: "UNIDENTIFIED_36",
|
|
123
|
+
opcode: 36,
|
|
124
|
+
reason: "Nobody agrees what it is: tsmax and PyMax call it `CONTACT_LIST`; the protocol documentation calls it `GET_BLOCKED`. Sent once with the owner's permission on 2026-09-20 and it exists — but it refuses every payload we can guess, and one guess closed the connection. It stays unsent until somebody watches a real client send it (`PROTO-1`).",
|
|
125
|
+
provenance: {
|
|
126
|
+
confidence: "unknown",
|
|
127
|
+
sources: [
|
|
128
|
+
"tsmax and PyMax call it CONTACT_LIST",
|
|
129
|
+
"max-api-docs calls it GET_BLOCKED",
|
|
130
|
+
"measured against MAX 2026-09-20: `{}` and `{marker}` are refused with `proto.payload`, `{marker, count}` closes the connection",
|
|
131
|
+
],
|
|
132
|
+
notes: "The refusal names the payload rather than the opcode, so 36 is real and validates its arguments — we simply do not know its shape. Guessing cost a dropped connection, which is why the ladder stopped at three.",
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=contacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/spec/operations/contacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
export declare const foldersList: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
3
|
+
readonly folderSync: v.NumberSchema<undefined>;
|
|
4
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
5
|
+
readonly folders: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
|
|
6
|
+
readonly foldersOrder: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, undefined>;
|
|
7
|
+
readonly folderSync: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
8
|
+
}, undefined>>;
|
|
9
|
+
export declare const foldersUpdate: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
10
|
+
id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
11
|
+
title: v.StringSchema<undefined>;
|
|
12
|
+
include: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>, undefined>, undefined>;
|
|
13
|
+
/** Sent back as they came: nobody has described what they hold. */
|
|
14
|
+
filters: v.ArraySchema<v.UnknownSchema, undefined>;
|
|
15
|
+
options: v.ArraySchema<v.UnknownSchema, undefined>;
|
|
16
|
+
favorites: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, undefined>;
|
|
17
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
18
|
+
readonly folder: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
19
|
+
readonly folderSync: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
20
|
+
}, undefined>>;
|
|
21
|
+
export declare const foldersDelete: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
22
|
+
readonly folderIds: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
23
|
+
}, undefined>, v.LooseObjectSchema<{}, undefined>>;
|
|
24
|
+
export declare const foldersReorder: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
25
|
+
readonly foldersOrder: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
26
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
27
|
+
readonly folders: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
|
|
28
|
+
readonly foldersOrder: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, undefined>;
|
|
29
|
+
readonly folderSync: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
30
|
+
}, undefined>>;
|
|
31
|
+
//# sourceMappingURL=folders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/folders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B,eAAO,MAAM,WAAW;;;;;;cAoBtB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;IA5BxB,mEAAmE;;;;;;;cAiDnE,CAAA;AAEF,eAAO,MAAM,aAAa;;kDAaxB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;cAsBzB,CAAA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { defineOperation } from "../define.js";
|
|
3
|
+
import { id } from "../scalars.js";
|
|
4
|
+
const webClient = "web.max.ru chunk `_app/immutable/chunks/5oCuRT0F.js`, read 2026-09-24";
|
|
5
|
+
const webClientNow = "web.max.ru chunk `_app/immutable/chunks/Cdo8IOYe.js`, read 2026-10-08";
|
|
6
|
+
const Folder = {
|
|
7
|
+
id: v.pipe(v.string(), v.minLength(1)),
|
|
8
|
+
title: v.string(),
|
|
9
|
+
include: v.optional(v.array(id())),
|
|
10
|
+
/** Sent back as they came: nobody has described what they hold. */
|
|
11
|
+
filters: v.array(v.unknown()),
|
|
12
|
+
options: v.array(v.unknown()),
|
|
13
|
+
favorites: v.optional(v.array(v.unknown())),
|
|
14
|
+
};
|
|
15
|
+
export const foldersList = defineOperation({
|
|
16
|
+
name: "folders.list",
|
|
17
|
+
constant: "FOLDERS_GET",
|
|
18
|
+
opcode: 272,
|
|
19
|
+
auth: true,
|
|
20
|
+
request: v.strictObject({ folderSync: v.number() }),
|
|
21
|
+
response: v.looseObject({
|
|
22
|
+
folders: v.optional(v.array(v.looseObject({}))),
|
|
23
|
+
foldersOrder: v.optional(v.array(v.unknown())),
|
|
24
|
+
folderSync: v.optional(v.number()),
|
|
25
|
+
}),
|
|
26
|
+
guard: null,
|
|
27
|
+
provenance: {
|
|
28
|
+
confidence: "measured",
|
|
29
|
+
sources: [
|
|
30
|
+
"measured against MAX 2026-09-24 (`pnpm probe:account`): no folder of the owner's carries `include`",
|
|
31
|
+
webClient,
|
|
32
|
+
"PyMax 53103f0 `get_folders`",
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
export const foldersUpdate = defineOperation({
|
|
37
|
+
name: "folders.update",
|
|
38
|
+
constant: "FOLDERS_UPDATE",
|
|
39
|
+
opcode: 274,
|
|
40
|
+
auth: true,
|
|
41
|
+
request: v.strictObject(Folder),
|
|
42
|
+
response: v.looseObject({ folder: v.optional(v.looseObject({})), folderSync: v.optional(v.number()) }),
|
|
43
|
+
// A new folder and a changed one look the same on the wire — both carry an id — so the journal
|
|
44
|
+
// calls both an update; either needs the same permission.
|
|
45
|
+
guard: () => ({ chatId: null, kind: "account", action: "folder-update" }),
|
|
46
|
+
provenance: {
|
|
47
|
+
confidence: "measured",
|
|
48
|
+
sources: [
|
|
49
|
+
"measured against MAX 2026-09-24 (`pnpm probe:account`): created, renamed and deleted a folder; a 21-character title came back `folder.validation.title.too-long`, 15 was taken",
|
|
50
|
+
"a chat put in and taken out measured 2026-09-27 (`max chats folders update --add|--remove`): `chats folders list` showed the chat in the folder, then an empty folder; the owner saw it in the app",
|
|
51
|
+
webClient,
|
|
52
|
+
"PyMax 53103f0 `create_folder`, `update_folder`",
|
|
53
|
+
],
|
|
54
|
+
notes: "Creates a folder under an id it has not seen, replaces one it has. **The whole folder**: the web client sends every field back, and PyMax's `include or []` would empty a folder whose title changed.",
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
export const foldersDelete = defineOperation({
|
|
58
|
+
name: "folders.delete",
|
|
59
|
+
constant: "FOLDERS_DELETE",
|
|
60
|
+
opcode: 276,
|
|
61
|
+
auth: true,
|
|
62
|
+
request: v.strictObject({ folderIds: v.array(v.pipe(v.string(), v.minLength(1))) }),
|
|
63
|
+
response: v.looseObject({}),
|
|
64
|
+
guard: () => ({ chatId: null, kind: "account", action: "folder-delete" }),
|
|
65
|
+
provenance: {
|
|
66
|
+
confidence: "measured",
|
|
67
|
+
sources: ["measured against MAX 2026-09-24 (`pnpm probe:account`)", webClient, "PyMax 53103f0 `delete_folder`"],
|
|
68
|
+
notes: "Deletes the folder, not the chats in it.",
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
export const foldersReorder = defineOperation({
|
|
72
|
+
name: "folders.reorder",
|
|
73
|
+
constant: "FOLDERS_REORDER",
|
|
74
|
+
opcode: 275,
|
|
75
|
+
auth: true,
|
|
76
|
+
/** Every folder, in the new order — the web client sends them all, never a moved one alone. */
|
|
77
|
+
request: v.strictObject({ foldersOrder: v.array(v.pipe(v.string(), v.minLength(1))) }),
|
|
78
|
+
response: v.looseObject({
|
|
79
|
+
folders: v.optional(v.array(v.looseObject({}))),
|
|
80
|
+
foldersOrder: v.optional(v.array(v.unknown())),
|
|
81
|
+
folderSync: v.optional(v.number()),
|
|
82
|
+
}),
|
|
83
|
+
guard: () => ({ chatId: null, kind: "account", action: "folder-order" }),
|
|
84
|
+
provenance: {
|
|
85
|
+
confidence: "measured",
|
|
86
|
+
sources: [
|
|
87
|
+
webClientNow,
|
|
88
|
+
"rumax a9ecaf3 `reorder_folders` (`src/api/chats.rs:362`)",
|
|
89
|
+
"measured against MAX 2026-10-08 on test account B: `all.chat.folder` not first is refused `folder.order.all-folder-not-first`; the current order again is refused `folder.order.same`",
|
|
90
|
+
],
|
|
91
|
+
notes: "The web client applies the answer as a folder delta, the same shape `FOLDERS_GET` answers with.",
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=folders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folders.js","sourceRoot":"","sources":["../../../src/spec/operations/folders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
export declare const loginQrRequest: import("../define.js").Operation<v.StrictObjectSchema<{}, undefined>, v.LooseObjectSchema<{
|
|
3
|
+
readonly qrLink: v.StringSchema<undefined>;
|
|
4
|
+
readonly trackId: v.StringSchema<undefined>;
|
|
5
|
+
readonly pollingInterval: v.NumberSchema<undefined>;
|
|
6
|
+
readonly expiresAt: v.NumberSchema<undefined>;
|
|
7
|
+
}, undefined>>;
|
|
8
|
+
export declare const loginQrStatus: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
9
|
+
readonly trackId: v.StringSchema<undefined>;
|
|
10
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
11
|
+
readonly status: v.LooseObjectSchema<{
|
|
12
|
+
readonly expiresAt: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
13
|
+
readonly loginAvailable: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
14
|
+
}, undefined>;
|
|
15
|
+
}, undefined>>;
|
|
16
|
+
export declare const loginByQr: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
17
|
+
readonly trackId: v.StringSchema<undefined>;
|
|
18
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
19
|
+
tokenAttrs: v.OptionalSchema<v.LooseObjectSchema<{
|
|
20
|
+
readonly LOGIN: v.OptionalSchema<v.LooseObjectSchema<{
|
|
21
|
+
readonly token: v.StringSchema<undefined>;
|
|
22
|
+
}, undefined>, undefined>;
|
|
23
|
+
}, undefined>, undefined>;
|
|
24
|
+
passwordChallenge: v.OptionalSchema<v.LooseObjectSchema<{
|
|
25
|
+
readonly trackId: v.StringSchema<undefined>;
|
|
26
|
+
readonly hint: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
27
|
+
}, undefined>, undefined>;
|
|
28
|
+
}, undefined>>;
|
|
29
|
+
export declare const loginSmsRequest: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
30
|
+
readonly phone: v.StringSchema<undefined>;
|
|
31
|
+
readonly type: v.LiteralSchema<"START_AUTH", undefined>;
|
|
32
|
+
readonly language: v.StringSchema<undefined>;
|
|
33
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
34
|
+
readonly token: v.StringSchema<undefined>;
|
|
35
|
+
readonly codeLength: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
36
|
+
}, undefined>>;
|
|
37
|
+
export declare const loginSmsCode: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
38
|
+
readonly token: v.StringSchema<undefined>;
|
|
39
|
+
readonly verifyCode: v.StringSchema<undefined>;
|
|
40
|
+
readonly authTokenType: v.LiteralSchema<"CHECK_CODE", undefined>;
|
|
41
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
42
|
+
tokenAttrs: v.OptionalSchema<v.LooseObjectSchema<{
|
|
43
|
+
readonly LOGIN: v.OptionalSchema<v.LooseObjectSchema<{
|
|
44
|
+
readonly token: v.StringSchema<undefined>;
|
|
45
|
+
}, undefined>, undefined>;
|
|
46
|
+
}, undefined>, undefined>;
|
|
47
|
+
passwordChallenge: v.OptionalSchema<v.LooseObjectSchema<{
|
|
48
|
+
readonly trackId: v.StringSchema<undefined>;
|
|
49
|
+
readonly hint: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
50
|
+
}, undefined>, undefined>;
|
|
51
|
+
}, undefined>>;
|
|
52
|
+
export declare const loginPassword: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
53
|
+
readonly trackId: v.StringSchema<undefined>;
|
|
54
|
+
readonly password: v.StringSchema<undefined>;
|
|
55
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
56
|
+
readonly tokenAttrs: v.OptionalSchema<v.LooseObjectSchema<{
|
|
57
|
+
readonly LOGIN: v.OptionalSchema<v.LooseObjectSchema<{
|
|
58
|
+
readonly token: v.StringSchema<undefined>;
|
|
59
|
+
}, undefined>, undefined>;
|
|
60
|
+
}, undefined>, undefined>;
|
|
61
|
+
readonly error: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
62
|
+
}, undefined>>;
|
|
63
|
+
export declare const qrApprove: import("../define.js").Reservation;
|
|
64
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B,eAAO,MAAM,cAAc;;;;;cAiBzB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;cAgBxB,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;cAYpB,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;cAc1B,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;cASvB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;cAaxB,CAAA;AAEF,eAAO,MAAM,SAAS,oCAOpB,CAAA"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { defineOperation, reserveOpcode } from "../define.js";
|
|
3
|
+
/**
|
|
4
|
+
* How MAX hands over a token once a person has proved who they are — by QR, SMS code or password.
|
|
5
|
+
* ⚠ **It is a credential**: nothing prints it, logs it or puts it in a fixture.
|
|
6
|
+
*/
|
|
7
|
+
const Issued = {
|
|
8
|
+
tokenAttrs: v.optional(v.looseObject({ LOGIN: v.optional(v.looseObject({ token: v.string() })) })),
|
|
9
|
+
passwordChallenge: v.optional(v.looseObject({ trackId: v.string(), hint: v.optional(v.string()) })),
|
|
10
|
+
};
|
|
11
|
+
const PYMAX = "PyMax 2.4.1 src/pymax/api/auth/service.py, GitHub 53103f0";
|
|
12
|
+
const DOCS = "max-api-docs/protocol/auth.md (dac4b19)";
|
|
13
|
+
export const loginQrRequest = defineOperation({
|
|
14
|
+
name: "login.qrRequest",
|
|
15
|
+
constant: "GET_QR",
|
|
16
|
+
opcode: 288,
|
|
17
|
+
auth: false,
|
|
18
|
+
request: v.strictObject({}),
|
|
19
|
+
response: v.looseObject({
|
|
20
|
+
qrLink: v.string(),
|
|
21
|
+
trackId: v.string(),
|
|
22
|
+
pollingInterval: v.number(),
|
|
23
|
+
expiresAt: v.number(),
|
|
24
|
+
}),
|
|
25
|
+
guard: null,
|
|
26
|
+
provenance: {
|
|
27
|
+
confidence: "measured",
|
|
28
|
+
sources: ["measured against MAX 2026-09-24: `session start qr` logged in", PYMAX, DOCS],
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
export const loginQrStatus = defineOperation({
|
|
32
|
+
name: "login.qrStatus",
|
|
33
|
+
constant: "GET_QR_STATUS",
|
|
34
|
+
opcode: 289,
|
|
35
|
+
auth: false,
|
|
36
|
+
request: v.strictObject({ trackId: v.string() }),
|
|
37
|
+
response: v.looseObject({
|
|
38
|
+
status: v.looseObject({ expiresAt: v.optional(v.number()), loginAvailable: v.optional(v.boolean()) }),
|
|
39
|
+
}),
|
|
40
|
+
guard: null,
|
|
41
|
+
provenance: {
|
|
42
|
+
confidence: "measured",
|
|
43
|
+
sources: ["measured against MAX 2026-09-24: `session start qr` logged in", PYMAX, DOCS],
|
|
44
|
+
notes: "`loginAvailable` is in PyMax only. The protocol notes say the token arrives as a push of opcode 18 instead.",
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
export const loginByQr = defineOperation({
|
|
48
|
+
name: "login.byQr",
|
|
49
|
+
constant: "LOGIN_BY_QR",
|
|
50
|
+
opcode: 291,
|
|
51
|
+
auth: false,
|
|
52
|
+
request: v.strictObject({ trackId: v.string() }),
|
|
53
|
+
response: v.looseObject(Issued),
|
|
54
|
+
guard: null,
|
|
55
|
+
provenance: {
|
|
56
|
+
confidence: "measured",
|
|
57
|
+
sources: ["measured against MAX 2026-09-24: `session start qr` logged in", PYMAX],
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
export const loginSmsRequest = defineOperation({
|
|
61
|
+
name: "login.smsRequest",
|
|
62
|
+
constant: "AUTH_REQUEST",
|
|
63
|
+
opcode: 17,
|
|
64
|
+
auth: false,
|
|
65
|
+
request: v.strictObject({ phone: v.string(), type: v.literal("START_AUTH"), language: v.string() }),
|
|
66
|
+
response: v.looseObject({ token: v.string(), codeLength: v.optional(v.number()) }),
|
|
67
|
+
guard: null,
|
|
68
|
+
provenance: {
|
|
69
|
+
confidence: "confirmed",
|
|
70
|
+
sources: [PYMAX, DOCS],
|
|
71
|
+
notes: "Measured 2026-09-24: MAX refused the first request with a captcha demand, which only the web page can solve. So `session start sms` opens web.max.ru instead of sending this; nothing sends it.",
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
export const loginSmsCode = defineOperation({
|
|
75
|
+
name: "login.smsCode",
|
|
76
|
+
constant: "AUTH",
|
|
77
|
+
opcode: 18,
|
|
78
|
+
auth: false,
|
|
79
|
+
request: v.strictObject({ token: v.string(), verifyCode: v.string(), authTokenType: v.literal("CHECK_CODE") }),
|
|
80
|
+
response: v.looseObject(Issued),
|
|
81
|
+
guard: null,
|
|
82
|
+
provenance: { confidence: "confirmed", sources: [PYMAX, DOCS] },
|
|
83
|
+
});
|
|
84
|
+
export const loginPassword = defineOperation({
|
|
85
|
+
name: "login.password",
|
|
86
|
+
constant: "AUTH_LOGIN_CHECK_PASSWORD",
|
|
87
|
+
opcode: 115,
|
|
88
|
+
auth: false,
|
|
89
|
+
request: v.strictObject({ trackId: v.string(), password: v.string() }),
|
|
90
|
+
response: v.looseObject({ tokenAttrs: Issued.tokenAttrs, error: v.optional(v.string()) }),
|
|
91
|
+
guard: null,
|
|
92
|
+
provenance: {
|
|
93
|
+
confidence: "measured",
|
|
94
|
+
sources: ["measured against MAX 2026-09-24: `session start qr` on an account with a cloud password", PYMAX],
|
|
95
|
+
notes: "A wrong password is refused as `password2fa.wrong`, and the same `trackId` takes another attempt.",
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
export const qrApprove = reserveOpcode({
|
|
99
|
+
name: "login.qrApprove",
|
|
100
|
+
constant: "AUTH_QR_APPROVE",
|
|
101
|
+
opcode: 290,
|
|
102
|
+
reason: "The phone's side of a QR login: it lets whoever showed the code into the owner's account. A CLI logging itself in never approves anybody.",
|
|
103
|
+
provenance: { confidence: "observed", sources: [PYMAX] },
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/spec/operations/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
export declare const messagesSend: import("../define.js").Operation<v.UnionSchema<[v.StrictObjectSchema<{
|
|
3
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
4
|
+
readonly message: v.StrictObjectSchema<{
|
|
5
|
+
/** Left out on a forward, as the web client does: the forwarded message is the content. */
|
|
6
|
+
readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
7
|
+
/**
|
|
8
|
+
* The client id MAX deduplicates by — measured, and it is what makes one retry safe. It must
|
|
9
|
+
* never be regenerated on a retry: a fresh one means a second message in somebody's chat.
|
|
10
|
+
*/
|
|
11
|
+
readonly cid: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>]>;
|
|
12
|
+
/** 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). */
|
|
13
|
+
readonly elements: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
14
|
+
readonly type: v.StringSchema<undefined>;
|
|
15
|
+
readonly from: v.NumberSchema<undefined>;
|
|
16
|
+
readonly length: v.NumberSchema<undefined>;
|
|
17
|
+
readonly attributes: v.OptionalSchema<v.StrictObjectSchema<{
|
|
18
|
+
readonly url: v.StringSchema<undefined>;
|
|
19
|
+
}, undefined>, undefined>;
|
|
20
|
+
}, undefined>, undefined>, undefined>;
|
|
21
|
+
readonly attaches: v.ArraySchema<v.UnknownSchema, undefined>;
|
|
22
|
+
/** Read back as `{type, chatId, message}` — the quoted message whole (measured 2026-09-23). */
|
|
23
|
+
readonly link: v.OptionalSchema<v.VariantSchema<"type", [v.StrictObjectSchema<{
|
|
24
|
+
readonly type: v.LiteralSchema<"REPLY", undefined>;
|
|
25
|
+
readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
26
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
27
|
+
readonly type: v.LiteralSchema<"FORWARD", undefined>;
|
|
28
|
+
readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
29
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
30
|
+
}, undefined>], undefined>, undefined>;
|
|
31
|
+
/**
|
|
32
|
+
* When MAX itself sends it, in epoch milliseconds — the message waits in the chat's DELAYED
|
|
33
|
+
* history until then. The answer adds `notifySender` and `notifyOpponents`, which we leave
|
|
34
|
+
* to MAX as the web client does (measured 2026-09-24, `FIND-139`).
|
|
35
|
+
*/
|
|
36
|
+
readonly delayedAttributes: v.OptionalSchema<v.StrictObjectSchema<{
|
|
37
|
+
readonly timeToFire: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>]>;
|
|
38
|
+
}, undefined>, undefined>;
|
|
39
|
+
}, undefined>;
|
|
40
|
+
/** Left out when starting a bot, as the web client does. */
|
|
41
|
+
readonly notify: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
42
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
43
|
+
readonly message: v.StrictObjectSchema<{
|
|
44
|
+
readonly cid: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>]>;
|
|
45
|
+
readonly attaches: v.TupleSchema<[v.StrictObjectSchema<{
|
|
46
|
+
readonly _type: v.LiteralSchema<"CONTROL", undefined>;
|
|
47
|
+
readonly event: v.LiteralSchema<"new", undefined>;
|
|
48
|
+
readonly chatType: v.PicklistSchema<["CHAT", "CHANNEL"], undefined>;
|
|
49
|
+
readonly title: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
50
|
+
readonly userIds: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>, undefined>;
|
|
51
|
+
}, undefined>], undefined>;
|
|
52
|
+
}, undefined>;
|
|
53
|
+
readonly notify: v.BooleanSchema<undefined>;
|
|
54
|
+
}, undefined>], undefined>, v.LooseObjectSchema<{
|
|
55
|
+
readonly message: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
56
|
+
readonly chat: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
57
|
+
}, undefined>>;
|
|
58
|
+
export declare const messagesEdit: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
59
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
60
|
+
readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
61
|
+
/** Left out when closing a poll, as the web client does: only the attachment changes. */
|
|
62
|
+
readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
63
|
+
readonly elements: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
64
|
+
readonly type: v.StringSchema<undefined>;
|
|
65
|
+
readonly from: v.NumberSchema<undefined>;
|
|
66
|
+
readonly length: v.NumberSchema<undefined>;
|
|
67
|
+
readonly attributes: v.OptionalSchema<v.StrictObjectSchema<{
|
|
68
|
+
readonly url: v.StringSchema<undefined>;
|
|
69
|
+
}, undefined>, undefined>;
|
|
70
|
+
}, undefined>, undefined>, undefined>;
|
|
71
|
+
/** `attachments`, not `attaches` as in MSG_SEND — every source spells them differently. */
|
|
72
|
+
readonly attachments: v.ArraySchema<v.UnknownSchema, undefined>;
|
|
73
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
74
|
+
readonly message: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
75
|
+
}, undefined>>;
|
|
76
|
+
export declare const messagesReactions: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
77
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
78
|
+
readonly messageIds: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>, undefined>;
|
|
79
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
80
|
+
readonly messagesReactions: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
81
|
+
}, undefined>>;
|
|
82
|
+
export declare const messagesMedia: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
83
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
84
|
+
readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
85
|
+
readonly attachTypes: v.ArraySchema<v.PicklistSchema<["PHOTO", "VIDEO", "FILE", "AUDIO", "SHARE"], undefined>, undefined>;
|
|
86
|
+
readonly forward: v.NumberSchema<undefined>;
|
|
87
|
+
readonly backward: v.NumberSchema<undefined>;
|
|
88
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
89
|
+
readonly messages: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
|
|
90
|
+
readonly total: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
91
|
+
}, undefined>>;
|
|
92
|
+
export declare const messagesSearch: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
93
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
94
|
+
readonly query: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
95
|
+
readonly count: v.NumberSchema<undefined>;
|
|
96
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
97
|
+
readonly result: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
|
|
98
|
+
readonly total: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
99
|
+
}, undefined>>;
|
|
100
|
+
export declare const messagesReact: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
101
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
102
|
+
readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
103
|
+
readonly reaction: v.StrictObjectSchema<{
|
|
104
|
+
readonly reactionType: v.LiteralSchema<"EMOJI", undefined>;
|
|
105
|
+
readonly id: v.StringSchema<undefined>;
|
|
106
|
+
}, undefined>;
|
|
107
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
108
|
+
readonly reactionInfo: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
109
|
+
}, undefined>>;
|
|
110
|
+
export declare const messagesPress: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
111
|
+
/** The keyboard attach's own `callbackId`, not the button's. */
|
|
112
|
+
readonly callbackId: v.StringSchema<undefined>;
|
|
113
|
+
readonly type: v.LiteralSchema<"CALLBACK", undefined>;
|
|
114
|
+
readonly payload: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
115
|
+
readonly timestamp: v.NumberSchema<undefined>;
|
|
116
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
117
|
+
readonly chat: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
118
|
+
readonly message: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
119
|
+
readonly unread: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
120
|
+
readonly mark: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
121
|
+
}, undefined>>;
|
|
122
|
+
export declare const messagesUnreact: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
123
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
124
|
+
readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
125
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
126
|
+
readonly reactionInfo: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
127
|
+
}, undefined>>;
|
|
128
|
+
export declare const messagesPollVote: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
129
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
130
|
+
readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
131
|
+
readonly pollId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
132
|
+
/** Plain integers, not ids: wrapped as 64-bit, MAX answered `proto.payload` and closed the connection. Empty takes the vote back. */
|
|
133
|
+
readonly answersIds: v.ArraySchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
|
|
134
|
+
}, undefined>, v.LooseObjectSchema<{
|
|
135
|
+
readonly state: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
|
|
136
|
+
}, undefined>>;
|
|
137
|
+
export declare const messagesDelete: import("../define.js").Operation<v.StrictObjectSchema<{
|
|
138
|
+
readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
|
|
139
|
+
readonly messageIds: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>, undefined>;
|
|
140
|
+
readonly forMe: v.BooleanSchema<undefined>;
|
|
141
|
+
}, undefined>, v.LooseObjectSchema<{}, undefined>>;
|
|
142
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAK5B,eAAO,MAAM,YAAY;;;QASjB,2FAA2F;;QAE3F;;;WAGG;;QAEH,yOAAyO;;;;;;;;;;QAYzO,+FAA+F;;;;;;;;;QAQ/F;;;;WAIG;;;;;IAGL,4DAA4D;;;;;;;;;;;;;;;;;cAsFhE,CAAA;AAEF,eAAO,MAAM,YAAY;;;IAQrB,yFAAyF;;;;;;;;;;IAYzF,2FAA2F;;;;cA4B7F,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;cAkB5B,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;cAwBxB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;cAkBzB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;cAsBxB,CAAA;AAEF,eAAO,MAAM,aAAa;IAMtB,gEAAgE;;;;;;;;;;cAsBlE,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;cAa1B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;IASzB,qIAAqI;;;;cAgBvI,CAAA;AAEF,eAAO,MAAM,cAAc;;;;kDAyBzB,CAAA"}
|