@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,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which of the personal account's permission names (`CLI-37`) a bot write falls under, so one
|
|
3
|
+
* `allow` list covers both. An operation missing here is refused whenever `allow` is set — a
|
|
4
|
+
* write added by a future schema sync starts out forbidden, not allowed.
|
|
5
|
+
*/
|
|
6
|
+
export const BOT_PERMISSIONS = {
|
|
7
|
+
sendMessage: "send",
|
|
8
|
+
sendComment: "send",
|
|
9
|
+
sendAction: "send",
|
|
10
|
+
answerOnCallback: "send",
|
|
11
|
+
getUploadUrl: "send",
|
|
12
|
+
editMessage: "edit",
|
|
13
|
+
editComment: "edit",
|
|
14
|
+
deleteMessage: "delete",
|
|
15
|
+
deleteComment: "delete",
|
|
16
|
+
pinMessage: "pin",
|
|
17
|
+
unpinMessage: "pin",
|
|
18
|
+
editChat: "groups",
|
|
19
|
+
leaveChat: "groups",
|
|
20
|
+
postAdmins: "groups",
|
|
21
|
+
deleteAdmins: "groups",
|
|
22
|
+
addMembers: "groups",
|
|
23
|
+
removeMember: "groups",
|
|
24
|
+
editMyCommands: "profile",
|
|
25
|
+
getUpdates: "read",
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* How a bot write is journaled. `getUpdates` is absent on purpose: it is a write only because it
|
|
29
|
+
* commits the marker, it reaches nobody, and a recipient list has nothing to say about it.
|
|
30
|
+
*/
|
|
31
|
+
export const BOT_JOURNAL_KINDS = {
|
|
32
|
+
sendMessage: "message",
|
|
33
|
+
sendComment: "message",
|
|
34
|
+
answerOnCallback: "message",
|
|
35
|
+
sendAction: "chat",
|
|
36
|
+
editMessage: "edit",
|
|
37
|
+
editComment: "edit",
|
|
38
|
+
deleteMessage: "delete",
|
|
39
|
+
deleteComment: "delete",
|
|
40
|
+
pinMessage: "pin",
|
|
41
|
+
unpinMessage: "pin",
|
|
42
|
+
editChat: "chat",
|
|
43
|
+
leaveChat: "chat",
|
|
44
|
+
postAdmins: "chat",
|
|
45
|
+
deleteAdmins: "chat",
|
|
46
|
+
addMembers: "chat",
|
|
47
|
+
removeMember: "chat",
|
|
48
|
+
editMyCommands: "account",
|
|
49
|
+
subscribe: "account",
|
|
50
|
+
unsubscribe: "account",
|
|
51
|
+
getUploadUrl: "account",
|
|
52
|
+
};
|
|
53
|
+
export const BOT_KEYS = {
|
|
54
|
+
getMyInfo: "bot.me",
|
|
55
|
+
editMyCommands: "bot.commands.set",
|
|
56
|
+
getChat: "bot.chats.show",
|
|
57
|
+
editChat: "bot.chats.update",
|
|
58
|
+
sendAction: "bot.chats.action",
|
|
59
|
+
getPinnedMessage: "bot.messages.pinned",
|
|
60
|
+
pinMessage: "bot.messages.pin",
|
|
61
|
+
unpinMessage: "bot.messages.unpin",
|
|
62
|
+
getMembership: "bot.chats.members.me",
|
|
63
|
+
leaveChat: "bot.chats.leave",
|
|
64
|
+
getAdmins: "bot.chats.admins.list",
|
|
65
|
+
postAdmins: "bot.chats.admins.add",
|
|
66
|
+
deleteAdmins: "bot.chats.admins.remove",
|
|
67
|
+
getMembers: "bot.chats.members.list",
|
|
68
|
+
addMembers: "bot.chats.members.add",
|
|
69
|
+
removeMember: "bot.chats.members.remove",
|
|
70
|
+
getSubscriptions: "bot.webhooks.list",
|
|
71
|
+
subscribe: "bot.webhooks.set",
|
|
72
|
+
unsubscribe: "bot.webhooks.delete",
|
|
73
|
+
getUploadUrl: "bot.uploads",
|
|
74
|
+
getMessages: "bot.messages.list",
|
|
75
|
+
sendMessage: "bot.messages.send",
|
|
76
|
+
editMessage: "bot.messages.edit",
|
|
77
|
+
deleteMessage: "bot.messages.delete",
|
|
78
|
+
getMessageById: "bot.messages.show",
|
|
79
|
+
getComments: "bot.messages.list",
|
|
80
|
+
sendComment: "bot.messages.send",
|
|
81
|
+
editComment: "bot.messages.edit",
|
|
82
|
+
deleteComment: "bot.messages.delete",
|
|
83
|
+
getCommentById: "bot.messages.show",
|
|
84
|
+
getVideoAttachmentDetails: "bot.messages.download",
|
|
85
|
+
answerOnCallback: "bot.buttons.press",
|
|
86
|
+
getUpdates: "bot.updates.poll",
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/bot/permissions.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAyC;IACnE,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,MAAM;IACxB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,MAAM;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAuC;IACnE,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,SAAS;IACzB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;CACxB,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAqC;IACxD,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,kBAAkB;IAClC,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,gBAAgB,EAAE,qBAAqB;IACvC,UAAU,EAAE,kBAAkB;IAC9B,YAAY,EAAE,oBAAoB;IAClC,aAAa,EAAE,sBAAsB;IACrC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,uBAAuB;IAClC,UAAU,EAAE,sBAAsB;IAClC,YAAY,EAAE,yBAAyB;IACvC,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,uBAAuB;IACnC,YAAY,EAAE,0BAA0B;IACxC,gBAAgB,EAAE,mBAAmB;IACrC,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,aAAa;IAC3B,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,cAAc,EAAE,mBAAmB;IACnC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,cAAc,EAAE,mBAAmB;IACnC,yBAAyB,EAAE,uBAAuB;IAClD,gBAAgB,EAAE,mBAAmB;IACrC,UAAU,EAAE,kBAAkB;CAC/B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChatRegistry as SharedChatRegistry } from "@wirecat/cli-messaging/cli";
|
|
2
|
+
export type { SeenChat } from "@wirecat/cli-messaging/cli";
|
|
3
|
+
/** Everything this machine keeps about its bots: seen chats, recipients, the send journal. */
|
|
4
|
+
export declare const botsDirectory: (env?: NodeJS.ProcessEnv) => string;
|
|
5
|
+
/** cli-messaging's, under max-cli's state directory. */
|
|
6
|
+
export declare class ChatRegistry extends SharedChatRegistry {
|
|
7
|
+
constructor(profile: string, env?: NodeJS.ProcessEnv);
|
|
8
|
+
}
|
|
9
|
+
/** Every profile that has ever kept a registry — the bots this machine has used. */
|
|
10
|
+
export declare const registryProfiles: (env?: NodeJS.ProcessEnv) => string[];
|
|
11
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/bot/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,kBAAkB,EAGnC,MAAM,4BAA4B,CAAA;AAGnC,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE1D,8FAA8F;AAC9F,eAAO,MAAM,aAAa,SAAS,MAAM,CAAC,UAAU,KAAiB,MAA2C,CAAA;AAEhH,wDAAwD;AACxD,qBAAa,YAAa,SAAQ,kBAAkB;IAClD,YAAY,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAEhE;CACF;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,SAAS,MAAM,CAAC,UAAU,KAAiB,MAAM,EAA0C,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ChatRegistry as SharedChatRegistry, botsDirectory as sharedBotsDirectory, registryProfiles as sharedRegistryProfiles, } from "@wirecat/cli-messaging/cli";
|
|
2
|
+
import { MAX_APP } from "../app.js";
|
|
3
|
+
/** Everything this machine keeps about its bots: seen chats, recipients, the send journal. */
|
|
4
|
+
export const botsDirectory = (env = process.env) => sharedBotsDirectory(MAX_APP, env);
|
|
5
|
+
/** cli-messaging's, under max-cli's state directory. */
|
|
6
|
+
export class ChatRegistry extends SharedChatRegistry {
|
|
7
|
+
constructor(profile, env = process.env) {
|
|
8
|
+
super(MAX_APP, profile, env);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/** Every profile that has ever kept a registry — the bots this machine has used. */
|
|
12
|
+
export const registryProfiles = (env = process.env) => sharedRegistryProfiles(MAX_APP, env);
|
|
13
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/bot/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,kBAAkB,EAClC,aAAa,IAAI,mBAAmB,EACpC,gBAAgB,IAAI,sBAAsB,GAC3C,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG,EAAU,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAEhH,wDAAwD;AACxD,MAAM,OAAO,YAAa,SAAQ,kBAAkB;IAClD,YAAY,OAAe,EAAE,GAAG,GAAsB,OAAO,CAAC,GAAG;QAC/D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG,EAAY,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Russian Trusted Root CA, issued by the Ministry of Digital Development. It signs
|
|
3
|
+
* platform-api2.max.ru, and Node's bundled roots do not include it (measured 2026-09-26, FIND-219).
|
|
4
|
+
* SHA-256 D2:6D:2D:02:31:B7:C3:9F:92:CC:73:85:12:BA:54:10:35:19:E4:40:5D:68:B5:BD:70:3E:97:88:CA:8E:CF:31,
|
|
5
|
+
* valid until 2032-02-27. Used for our own bot requests only (owner, NEED-293).
|
|
6
|
+
*/
|
|
7
|
+
export declare const RUSSIAN_TRUSTED_ROOT_CA = "-----BEGIN CERTIFICATE-----\nMIIFwjCCA6qgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUlUx\nPzA9BgNVBAoMNlRoZSBNaW5pc3RyeSBvZiBEaWdpdGFsIERldmVsb3BtZW50IGFu\nZCBDb21tdW5pY2F0aW9uczEgMB4GA1UEAwwXUnVzc2lhbiBUcnVzdGVkIFJvb3Qg\nQ0EwHhcNMjIwMzAxMjEwNDE1WhcNMzIwMjI3MjEwNDE1WjBwMQswCQYDVQQGEwJS\nVTE/MD0GA1UECgw2VGhlIE1pbmlzdHJ5IG9mIERpZ2l0YWwgRGV2ZWxvcG1lbnQg\nYW5kIENvbW11bmljYXRpb25zMSAwHgYDVQQDDBdSdXNzaWFuIFRydXN0ZWQgUm9v\ndCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMfFOZ8pUAL3+r2n\nqqE0Zp52selXsKGFYoG0GM5bwz1bSFtCt+AZQMhkWQheI3poZAToYJu69pHLKS6Q\nXBiwBC1cvzYmUYKMYZC7jE5YhEU2bSL0mX7NaMxMDmH2/NwuOVRj8OImVa5s1F4U\nzn4Kv3PFlDBjjSjXKVY9kmjUBsXQrIHeaqmUIsPIlNWUnimXS0I0abExqkbdrXbX\nYwCOXhOO2pDUx3ckmJlCMUGacUTnylyQW2VsJIyIGA8V0xzdaeUXg0VZ6ZmNUr5Y\nBer/EAOLPb8NYpsAhJe2mXjMB/J9HNsoFMBFJ0lLOT/+dQvjbdRZoOT8eqJpWnVD\nU+QL/qEZnz57N88OWM3rabJkRNdU/Z7x5SFIM9FrqtN8xewsiBWBI0K6XFuOBOTD\n4V08o4TzJ8+Ccq5XlCUW2L48pZNCYuBDfBh7FxkB7qDgGDiaftEkZZfApRg2E+M9\nG8wkNKTPLDc4wH0FDTijhgxR3Y4PiS1HL2Zhw7bD3CbslmEGgfnnZojNkJtcLeBH\nBLa52/dSwNU4WWLubaYSiAmA9IUMX1/RpfpxOxd4Ykmhz97oFbUaDJFipIggx5sX\nePAlkTdWnv+RWBxlJwMQ25oEHmRguNYf4Zr/Rxr9cS93Y+mdXIZaBEE0KS2iLRqa\nOiWBki9IMQU4phqPOBAaG7A+eP8PAgMBAAGjZjBkMB0GA1UdDgQWBBTh0YHlzlpf\nBKrS6badZrHF+qwshzAfBgNVHSMEGDAWgBTh0YHlzlpfBKrS6badZrHF+qwshzAS\nBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF\nAAOCAgEAALIY1wkilt/urfEVM5vKzr6utOeDWCUczmWX/RX4ljpRdgF+5fAIS4vH\ntmXkqpSCOVeWUrJV9QvZn6L227ZwuE15cWi8DCDal3Ue90WgAJJZMfTshN4OI8cq\nW9E4EG9wglbEtMnObHlms8F3CHmrw3k6KmUkWGoa+/ENmcVl68u/cMRl1JbW2bM+\n/3A+SAg2c6iPDlehczKx2oa95QW0SkPPWGuNA/CE8CpyANIhu9XFrj3RQ3EqeRcS\nAQQod1RNuHpfETLU/A2gMmvn/w/sx7TB3W5BPs6rprOA37tutPq9u6FTZOcG1Oqj\nC/B7yTqgI7rbyvox7DEXoX7rIiEqyNNUguTk/u3SZ4VXE2kmxdmSh3TQvybfbnXV\n4JbCZVaqiZraqc7oZMnRoWrXRG3ztbnbes/9qhRGI7PqXqeKJBztxRTEVj8ONs1d\nWN5szTwaPIvhkhO3CO5ErU2rVdUr89wKpNXbBODFKRtgxUT70YpmJ46VVaqdAhOZ\nD9EUUn4YaeLaS8AjSF/h7UkjOibNc4qVDiPP+rkehFWM66PVnP1Msh93tc+taIfC\nEYVMxjh8zNbFuoc7fzvvrFILLe7ifvEIUqSVIC/AzplM/Jxw7buXFeGP1qVCBEHq\n391d/9RAfaZ12zkwFsl+IKwE/OZxW8AHa9i1p4GO0YSNuczzEm4=\n-----END CERTIFICATE-----\n";
|
|
8
|
+
//# sourceMappingURL=russian-trusted-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"russian-trusted-root.d.ts","sourceRoot":"","sources":["../../src/bot/russian-trusted-root.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,+iEAiCnC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Russian Trusted Root CA, issued by the Ministry of Digital Development. It signs
|
|
3
|
+
* platform-api2.max.ru, and Node's bundled roots do not include it (measured 2026-09-26, FIND-219).
|
|
4
|
+
* SHA-256 D2:6D:2D:02:31:B7:C3:9F:92:CC:73:85:12:BA:54:10:35:19:E4:40:5D:68:B5:BD:70:3E:97:88:CA:8E:CF:31,
|
|
5
|
+
* valid until 2032-02-27. Used for our own bot requests only (owner, NEED-293).
|
|
6
|
+
*/
|
|
7
|
+
export const RUSSIAN_TRUSTED_ROOT_CA = `-----BEGIN CERTIFICATE-----
|
|
8
|
+
MIIFwjCCA6qgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUlUx
|
|
9
|
+
PzA9BgNVBAoMNlRoZSBNaW5pc3RyeSBvZiBEaWdpdGFsIERldmVsb3BtZW50IGFu
|
|
10
|
+
ZCBDb21tdW5pY2F0aW9uczEgMB4GA1UEAwwXUnVzc2lhbiBUcnVzdGVkIFJvb3Qg
|
|
11
|
+
Q0EwHhcNMjIwMzAxMjEwNDE1WhcNMzIwMjI3MjEwNDE1WjBwMQswCQYDVQQGEwJS
|
|
12
|
+
VTE/MD0GA1UECgw2VGhlIE1pbmlzdHJ5IG9mIERpZ2l0YWwgRGV2ZWxvcG1lbnQg
|
|
13
|
+
YW5kIENvbW11bmljYXRpb25zMSAwHgYDVQQDDBdSdXNzaWFuIFRydXN0ZWQgUm9v
|
|
14
|
+
dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMfFOZ8pUAL3+r2n
|
|
15
|
+
qqE0Zp52selXsKGFYoG0GM5bwz1bSFtCt+AZQMhkWQheI3poZAToYJu69pHLKS6Q
|
|
16
|
+
XBiwBC1cvzYmUYKMYZC7jE5YhEU2bSL0mX7NaMxMDmH2/NwuOVRj8OImVa5s1F4U
|
|
17
|
+
zn4Kv3PFlDBjjSjXKVY9kmjUBsXQrIHeaqmUIsPIlNWUnimXS0I0abExqkbdrXbX
|
|
18
|
+
YwCOXhOO2pDUx3ckmJlCMUGacUTnylyQW2VsJIyIGA8V0xzdaeUXg0VZ6ZmNUr5Y
|
|
19
|
+
Ber/EAOLPb8NYpsAhJe2mXjMB/J9HNsoFMBFJ0lLOT/+dQvjbdRZoOT8eqJpWnVD
|
|
20
|
+
U+QL/qEZnz57N88OWM3rabJkRNdU/Z7x5SFIM9FrqtN8xewsiBWBI0K6XFuOBOTD
|
|
21
|
+
4V08o4TzJ8+Ccq5XlCUW2L48pZNCYuBDfBh7FxkB7qDgGDiaftEkZZfApRg2E+M9
|
|
22
|
+
G8wkNKTPLDc4wH0FDTijhgxR3Y4PiS1HL2Zhw7bD3CbslmEGgfnnZojNkJtcLeBH
|
|
23
|
+
BLa52/dSwNU4WWLubaYSiAmA9IUMX1/RpfpxOxd4Ykmhz97oFbUaDJFipIggx5sX
|
|
24
|
+
ePAlkTdWnv+RWBxlJwMQ25oEHmRguNYf4Zr/Rxr9cS93Y+mdXIZaBEE0KS2iLRqa
|
|
25
|
+
OiWBki9IMQU4phqPOBAaG7A+eP8PAgMBAAGjZjBkMB0GA1UdDgQWBBTh0YHlzlpf
|
|
26
|
+
BKrS6badZrHF+qwshzAfBgNVHSMEGDAWgBTh0YHlzlpfBKrS6badZrHF+qwshzAS
|
|
27
|
+
BgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
|
|
28
|
+
AAOCAgEAALIY1wkilt/urfEVM5vKzr6utOeDWCUczmWX/RX4ljpRdgF+5fAIS4vH
|
|
29
|
+
tmXkqpSCOVeWUrJV9QvZn6L227ZwuE15cWi8DCDal3Ue90WgAJJZMfTshN4OI8cq
|
|
30
|
+
W9E4EG9wglbEtMnObHlms8F3CHmrw3k6KmUkWGoa+/ENmcVl68u/cMRl1JbW2bM+
|
|
31
|
+
/3A+SAg2c6iPDlehczKx2oa95QW0SkPPWGuNA/CE8CpyANIhu9XFrj3RQ3EqeRcS
|
|
32
|
+
AQQod1RNuHpfETLU/A2gMmvn/w/sx7TB3W5BPs6rprOA37tutPq9u6FTZOcG1Oqj
|
|
33
|
+
C/B7yTqgI7rbyvox7DEXoX7rIiEqyNNUguTk/u3SZ4VXE2kmxdmSh3TQvybfbnXV
|
|
34
|
+
4JbCZVaqiZraqc7oZMnRoWrXRG3ztbnbes/9qhRGI7PqXqeKJBztxRTEVj8ONs1d
|
|
35
|
+
WN5szTwaPIvhkhO3CO5ErU2rVdUr89wKpNXbBODFKRtgxUT70YpmJ46VVaqdAhOZ
|
|
36
|
+
D9EUUn4YaeLaS8AjSF/h7UkjOibNc4qVDiPP+rkehFWM66PVnP1Msh93tc+taIfC
|
|
37
|
+
EYVMxjh8zNbFuoc7fzvvrFILLe7ifvEIUqSVIC/AzplM/Jxw7buXFeGP1qVCBEHq
|
|
38
|
+
391d/9RAfaZ12zkwFsl+IKwE/OZxW8AHa9i1p4GO0YSNuczzEm4=
|
|
39
|
+
-----END CERTIFICATE-----
|
|
40
|
+
`;
|
|
41
|
+
//# sourceMappingURL=russian-trusted-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"russian-trusted-root.js","sourceRoot":"","sources":["../../src/bot/russian-trusted-root.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCtC,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type RetryConfig, type SleepLike } from "@wirecat/cli-core";
|
|
2
|
+
import type { ManifestOperation } from "@wirecat/cli-core/codegen";
|
|
3
|
+
import { type FetchLike } from "@wirecat/cli-core/http";
|
|
4
|
+
import { type DiagnosticEvent } from "@wirecat/cli-messaging/cli";
|
|
5
|
+
export declare const BOT_API_URL = "https://platform-api2.max.ru";
|
|
6
|
+
/**
|
|
7
|
+
* Adds the Минцифры root to the trusted roots (`NEED-293`). On Node (22.19+) that changes the
|
|
8
|
+
* process-wide default, so every TLS connection this process makes from then on trusts it, not only
|
|
9
|
+
* the Bot API's: Node's `fetch` takes no per-request list. Bun does, so there only these calls do.
|
|
10
|
+
*/
|
|
11
|
+
export declare const botFetch: () => FetchLike;
|
|
12
|
+
export interface CallInput {
|
|
13
|
+
path?: Readonly<Record<string, string>>;
|
|
14
|
+
query?: Readonly<Record<string, string | readonly string[]>>;
|
|
15
|
+
/** JSON text, sent as it is — ids in it must reach MAX as the digits the caller wrote. */
|
|
16
|
+
body?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TransportOptions {
|
|
19
|
+
token: string;
|
|
20
|
+
baseUrl?: string;
|
|
21
|
+
fetch?: FetchLike;
|
|
22
|
+
timeoutMs?: number;
|
|
23
|
+
retry?: RetryConfig;
|
|
24
|
+
sleep?: SleepLike;
|
|
25
|
+
random?: () => number;
|
|
26
|
+
signal?: AbortSignal;
|
|
27
|
+
/** `--trace` and the run log; one request and one response per HTTP attempt. */
|
|
28
|
+
events?: (event: DiagnosticEvent) => void;
|
|
29
|
+
now?: () => number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The official Bot API over HTTP. Speaks for one token, writes nothing to stdout or stderr, and
|
|
33
|
+
* turns every failure into a `CliError` that never contains the token.
|
|
34
|
+
*/
|
|
35
|
+
export declare class BotTransport {
|
|
36
|
+
#private;
|
|
37
|
+
constructor(options: TransportOptions);
|
|
38
|
+
/** The parsed answer, numbers still lossless; `null` when MAX answered with no body. */
|
|
39
|
+
call(operation: ManifestOperation, input?: CallInput): Promise<unknown>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* What `max bot api` prints: a number that fits a JS number stays one, and a bigger one becomes
|
|
43
|
+
* its exact digits as a string rather than a rounded different number.
|
|
44
|
+
*/
|
|
45
|
+
export declare const plainJson: (value: unknown) => unknown;
|
|
46
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/bot/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,WAAW,EAEhB,KAAK,SAAS,EAEf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,wBAAwB,CAAA;AACrF,OAAO,EAAE,KAAK,eAAe,EAAuC,MAAM,4BAA4B,CAAA;AAMtG,eAAO,MAAM,WAAW,iCAAiC,CAAA;AAQzD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,QAAO,SAU3B,CAAA;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACvC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;IAC5D,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gFAAgF;IAChF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IACzC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAyBD;;;GAGG;AACH,qBAAa,YAAY;;IAYvB,YAAY,OAAO,EAAE,gBAAgB,EAWpC;IAED,wFAAwF;IAClF,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAoChF;CAuIF;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,OAKxC,CAAA"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import tls from "node:tls";
|
|
2
|
+
import { backoffMs, CliError, DEFAULT_RETRY, realSleep, singleLine, } from "@wirecat/cli-core";
|
|
3
|
+
import { providerWaitMs, statusToCode } from "@wirecat/cli-core/http";
|
|
4
|
+
import { providerErrorKey } from "@wirecat/cli-messaging/cli";
|
|
5
|
+
import { guardedWrite, newOperationId } from "@wirecat/cli-messaging/sends";
|
|
6
|
+
import { isLosslessNumber, isSafeNumber, parse, stringify } from "lossless-json";
|
|
7
|
+
import { VERSION } from "../version.js";
|
|
8
|
+
import { RUSSIAN_TRUSTED_ROOT_CA } from "./russian-trusted-root.js";
|
|
9
|
+
export const BOT_API_URL = "https://platform-api2.max.ru";
|
|
10
|
+
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
11
|
+
/** `GET /updates` holds the request open for up to its own `timeout`; ours has to outlast it. */
|
|
12
|
+
const LONG_POLL_MARGIN_MS = 15_000;
|
|
13
|
+
let trusted = false;
|
|
14
|
+
/**
|
|
15
|
+
* Adds the Минцифры root to the trusted roots (`NEED-293`). On Node (22.19+) that changes the
|
|
16
|
+
* process-wide default, so every TLS connection this process makes from then on trusts it, not only
|
|
17
|
+
* the Bot API's: Node's `fetch` takes no per-request list. Bun does, so there only these calls do.
|
|
18
|
+
*/
|
|
19
|
+
export const botFetch = () => {
|
|
20
|
+
if ("Bun" in globalThis) {
|
|
21
|
+
const ca = [...tls.rootCertificates, RUSSIAN_TRUSTED_ROOT_CA];
|
|
22
|
+
return (input, init) => fetch(input, { ...init, tls: { ca } });
|
|
23
|
+
}
|
|
24
|
+
if (!trusted && typeof tls.setDefaultCACertificates === "function") {
|
|
25
|
+
tls.setDefaultCACertificates([...tls.getCACertificates("default"), RUSSIAN_TRUSTED_ROOT_CA]);
|
|
26
|
+
trusted = true;
|
|
27
|
+
}
|
|
28
|
+
return fetch;
|
|
29
|
+
};
|
|
30
|
+
/** Path parameters that are ids, by the name the run log uses. `videoToken` is not one of them. */
|
|
31
|
+
const LOGGED_IDS = {
|
|
32
|
+
chatId: "chat",
|
|
33
|
+
messageId: "message",
|
|
34
|
+
userId: "user",
|
|
35
|
+
commentId: "comment",
|
|
36
|
+
};
|
|
37
|
+
const TLS_FAILURES = new Set([
|
|
38
|
+
"UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
|
|
39
|
+
"UNABLE_TO_VERIFY_LEAF_SIGNATURE",
|
|
40
|
+
"SELF_SIGNED_CERT_IN_CHAIN",
|
|
41
|
+
"CERT_HAS_EXPIRED",
|
|
42
|
+
]);
|
|
43
|
+
const GATEWAY_FAILURES = new Set([502, 503, 504]);
|
|
44
|
+
const causeCode = (error) => {
|
|
45
|
+
const cause = error?.cause;
|
|
46
|
+
const code = typeof cause?.code === "string" ? cause.code : error?.code;
|
|
47
|
+
return typeof code === "string" ? code : undefined;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* The official Bot API over HTTP. Speaks for one token, writes nothing to stdout or stderr, and
|
|
51
|
+
* turns every failure into a `CliError` that never contains the token.
|
|
52
|
+
*/
|
|
53
|
+
export class BotTransport {
|
|
54
|
+
#token;
|
|
55
|
+
#baseUrl;
|
|
56
|
+
#fetch;
|
|
57
|
+
#timeoutMs;
|
|
58
|
+
#retry;
|
|
59
|
+
#sleep;
|
|
60
|
+
#random;
|
|
61
|
+
#signal;
|
|
62
|
+
#events;
|
|
63
|
+
#now;
|
|
64
|
+
constructor(options) {
|
|
65
|
+
this.#token = options.token;
|
|
66
|
+
this.#baseUrl = (options.baseUrl ?? BOT_API_URL).replace(/\/$/, "");
|
|
67
|
+
this.#fetch = options.fetch ?? botFetch();
|
|
68
|
+
this.#timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
69
|
+
this.#retry = options.retry ?? DEFAULT_RETRY;
|
|
70
|
+
this.#sleep = options.sleep ?? realSleep;
|
|
71
|
+
this.#random = options.random ?? Math.random;
|
|
72
|
+
this.#signal = options.signal;
|
|
73
|
+
this.#events = options.events ?? (() => { });
|
|
74
|
+
this.#now = options.now ?? Date.now;
|
|
75
|
+
}
|
|
76
|
+
/** The parsed answer, numbers still lossless; `null` when MAX answered with no body. */
|
|
77
|
+
async call(operation, input = {}) {
|
|
78
|
+
if (operation.binding.kind !== "http") {
|
|
79
|
+
throw new CliError("configuration_error", `${operation.id} is not an HTTP operation`);
|
|
80
|
+
}
|
|
81
|
+
const url = this.#url(operation.binding.path, input);
|
|
82
|
+
const reads = operation.effect === "read";
|
|
83
|
+
const timeoutMs = this.#timeoutFor(operation, input);
|
|
84
|
+
const ids = idsIn(input);
|
|
85
|
+
for (let attempt = 1;; attempt++) {
|
|
86
|
+
const said = { operation: operation.id, ...(ids ? { ids } : {}) };
|
|
87
|
+
const started = this.#now();
|
|
88
|
+
this.#events({ event: "request", ...said });
|
|
89
|
+
try {
|
|
90
|
+
const send = () => this.#once(operation, url, input.body, timeoutMs);
|
|
91
|
+
// Permissions are checked by the caller; this also lets the command deadline see a write in flight.
|
|
92
|
+
const { answer, status, bytes } = await (reads
|
|
93
|
+
? send()
|
|
94
|
+
: guardedWrite({ check: () => { }, record: () => { } }, { operationId: newOperationId(), chatId: null }, send));
|
|
95
|
+
this.#events({ event: "response", ...said, status, bytes, durationMs: this.#now() - started, outcome: "ok" });
|
|
96
|
+
return answer;
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
this.#events({ event: "response", ...said, durationMs: this.#now() - started, ...failureOf(error) });
|
|
100
|
+
if (!(error instanceof CliError))
|
|
101
|
+
throw error;
|
|
102
|
+
if (this.#signal?.aborted)
|
|
103
|
+
throw error;
|
|
104
|
+
const retryable = reads && error.details.retryable === true && attempt <= this.#retry.retries;
|
|
105
|
+
if (!retryable)
|
|
106
|
+
throw error;
|
|
107
|
+
const wait = error.details.retryAfterMs ?? backoffMs(attempt, this.#retry, this.#random);
|
|
108
|
+
if (wait > this.#retry.maxRetryAfterMs)
|
|
109
|
+
throw error;
|
|
110
|
+
try {
|
|
111
|
+
await this.#sleep(wait, this.#signal, "retry");
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
#url(template, input) {
|
|
120
|
+
const path = template.replace(/\{([^}]+)\}/g, (_, name) => {
|
|
121
|
+
const value = input.path?.[name];
|
|
122
|
+
if (value === undefined)
|
|
123
|
+
throw new CliError("validation_error", `missing path parameter ${name}`);
|
|
124
|
+
return encodeURIComponent(value);
|
|
125
|
+
});
|
|
126
|
+
const url = new URL(`${this.#baseUrl}${path}`);
|
|
127
|
+
for (const [name, value] of Object.entries(input.query ?? {})) {
|
|
128
|
+
url.searchParams.set(name, typeof value === "string" ? value : value.join(","));
|
|
129
|
+
}
|
|
130
|
+
return url;
|
|
131
|
+
}
|
|
132
|
+
#timeoutFor(operation, input) {
|
|
133
|
+
const poll = Number(input.query?.timeout);
|
|
134
|
+
return operation.id === "getUpdates" && Number.isFinite(poll)
|
|
135
|
+
? Math.max(this.#timeoutMs, poll * 1000 + LONG_POLL_MARGIN_MS)
|
|
136
|
+
: this.#timeoutMs;
|
|
137
|
+
}
|
|
138
|
+
async #once(operation, url, body, timeoutMs) {
|
|
139
|
+
const signals = [AbortSignal.timeout(timeoutMs), ...(this.#signal ? [this.#signal] : [])];
|
|
140
|
+
const reads = operation.effect === "read";
|
|
141
|
+
let response;
|
|
142
|
+
try {
|
|
143
|
+
response = await this.#fetch(url, {
|
|
144
|
+
method: operation.binding.kind === "http" ? operation.binding.method : "POST",
|
|
145
|
+
headers: {
|
|
146
|
+
Authorization: this.#token,
|
|
147
|
+
"User-Agent": `max-cli/${VERSION}`,
|
|
148
|
+
Accept: "application/json",
|
|
149
|
+
...(body === undefined ? {} : { "Content-Type": "application/json" }),
|
|
150
|
+
},
|
|
151
|
+
...(body === undefined ? {} : { body }),
|
|
152
|
+
signal: AbortSignal.any(signals),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
throw this.#transportFailure(operation, error, reads, timeoutMs);
|
|
157
|
+
}
|
|
158
|
+
const text = await response.text();
|
|
159
|
+
if (!response.ok)
|
|
160
|
+
throw this.#refusal(operation, response, text, reads);
|
|
161
|
+
const answered = { status: response.status, bytes: Buffer.byteLength(text) };
|
|
162
|
+
if (text.trim() === "")
|
|
163
|
+
return { answer: null, ...answered };
|
|
164
|
+
try {
|
|
165
|
+
return { answer: parse(text), ...answered };
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
throw new CliError("invalid_response", `MAX answered ${operation.id} with something that is not JSON`, {
|
|
169
|
+
operation: operation.id,
|
|
170
|
+
status: response.status,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
#transportFailure(operation, error, reads, timeoutMs) {
|
|
175
|
+
const code = causeCode(error);
|
|
176
|
+
if (code && TLS_FAILURES.has(code)) {
|
|
177
|
+
return new CliError("network_error", `this machine does not trust ${new URL(this.#baseUrl).host}'s certificate (${code}). ` +
|
|
178
|
+
"max-cli adds the Russian Trusted Root CA itself on Node 22.19+ and Bun — update Node, " +
|
|
179
|
+
"or set NODE_EXTRA_CA_CERTS to that certificate", { operation: operation.id, retryable: false });
|
|
180
|
+
}
|
|
181
|
+
if (this.#signal?.aborted) {
|
|
182
|
+
const deadline = this.#signal.reason?.name === "TimeoutError";
|
|
183
|
+
if (!deadline)
|
|
184
|
+
return new CliError("cancelled", `${operation.id} was cancelled`, { operation: operation.id });
|
|
185
|
+
if (!reads) {
|
|
186
|
+
return new CliError("outcome_unknown", `the command's time ran out while ${operation.id} was in flight; MAX may or may not have carried it out`, { operation: operation.id, retryable: false });
|
|
187
|
+
}
|
|
188
|
+
return new CliError("timeout", `the command's time ran out during ${operation.id}`, {
|
|
189
|
+
operation: operation.id,
|
|
190
|
+
retryable: false,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
const timedOut = error?.name === "TimeoutError";
|
|
194
|
+
if (!reads) {
|
|
195
|
+
return new CliError("outcome_unknown", `${operation.id} got no answer${timedOut ? ` within ${timeoutMs} ms` : ""}; MAX may or may not have ` +
|
|
196
|
+
"carried it out — check before repeating it", { operation: operation.id, retryable: false });
|
|
197
|
+
}
|
|
198
|
+
return new CliError(timedOut ? "timeout" : "network_error", timedOut ? `${operation.id} got no answer within ${timeoutMs} ms` : `${operation.id} could not reach MAX`, { operation: operation.id, retryable: true });
|
|
199
|
+
}
|
|
200
|
+
#refusal(operation, response, text, reads) {
|
|
201
|
+
let maxCode;
|
|
202
|
+
let said;
|
|
203
|
+
try {
|
|
204
|
+
const body = parse(text);
|
|
205
|
+
if (typeof body?.code === "string")
|
|
206
|
+
maxCode = body.code;
|
|
207
|
+
said = typeof body?.message === "string" ? body.message : typeof body?.error === "string" ? body.error : undefined;
|
|
208
|
+
}
|
|
209
|
+
catch { }
|
|
210
|
+
const reason = said ? `: ${singleLine(said).replaceAll(this.#token, "<token>").slice(0, 300)}` : "";
|
|
211
|
+
// A gateway answers for MAX without saying whether MAX got the write, so it is no refusal.
|
|
212
|
+
if (!reads && GATEWAY_FAILURES.has(response.status)) {
|
|
213
|
+
return new CliError("outcome_unknown", `${operation.id} got ${response.status} from a gateway in front of MAX${reason}; MAX may or may not have ` +
|
|
214
|
+
"carried it out — check before repeating it", { operation: operation.id, status: response.status, retryable: false, ...(maxCode ? { maxCode } : {}) });
|
|
215
|
+
}
|
|
216
|
+
const retryable = response.status === 429 || response.status === 502 || response.status === 503;
|
|
217
|
+
const retryAfterMs = providerWaitMs(response.headers, () => new Date());
|
|
218
|
+
return new CliError(statusToCode(response.status), `MAX refused ${operation.id} (${response.status}${maxCode ? ` ${maxCode}` : ""})${reason}`, {
|
|
219
|
+
operation: operation.id,
|
|
220
|
+
status: response.status,
|
|
221
|
+
retryable,
|
|
222
|
+
...(maxCode ? { maxCode } : {}),
|
|
223
|
+
...(retryAfterMs === undefined ? {} : { retryAfterMs }),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* What `max bot api` prints: a number that fits a JS number stays one, and a bigger one becomes
|
|
229
|
+
* its exact digits as a string rather than a rounded different number.
|
|
230
|
+
*/
|
|
231
|
+
export const plainJson = (value) => JSON.parse(stringify(value, (_, inner) => isLosslessNumber(inner) && !isSafeNumber(inner.value) ? inner.toString() : inner) ?? "null");
|
|
232
|
+
const idsIn = (input) => {
|
|
233
|
+
const ids = Object.entries(input.path ?? {}).flatMap(([name, value]) => {
|
|
234
|
+
const logged = LOGGED_IDS[name];
|
|
235
|
+
return logged ? [[logged, value]] : [];
|
|
236
|
+
});
|
|
237
|
+
return ids.length ? Object.fromEntries(ids) : undefined;
|
|
238
|
+
};
|
|
239
|
+
/** The code and MAX's own key, never the message: MAX's refusal can quote what we sent. */
|
|
240
|
+
const failureOf = (error) => {
|
|
241
|
+
if (!(error instanceof CliError))
|
|
242
|
+
return { outcome: "error", errorCode: "generic_failure" };
|
|
243
|
+
const status = typeof error.details.status === "number" ? error.details.status : undefined;
|
|
244
|
+
const providerError = providerErrorKey(error.details.maxCode);
|
|
245
|
+
return {
|
|
246
|
+
outcome: "error",
|
|
247
|
+
errorCode: error.code,
|
|
248
|
+
...(status === undefined ? {} : { status }),
|
|
249
|
+
...(providerError ? { providerError } : {}),
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/bot/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type SleepLike } from "@wirecat/cli-core";
|
|
2
|
+
import { type FetchLike } from "@wirecat/cli-core/http";
|
|
3
|
+
import type { DiagnosticEvent } from "@wirecat/cli-messaging/cli";
|
|
4
|
+
export declare const UPLOAD_TYPES: readonly ["image", "video", "audio", "file"];
|
|
5
|
+
export type UploadType = (typeof UPLOAD_TYPES)[number];
|
|
6
|
+
export declare const uploadTypeOf: (path: string) => UploadType;
|
|
7
|
+
/** What goes into a message body's `attachments`. */
|
|
8
|
+
export interface Attachment {
|
|
9
|
+
type: UploadType;
|
|
10
|
+
payload: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface UploadEndpoint {
|
|
13
|
+
url: string;
|
|
14
|
+
token?: string | null;
|
|
15
|
+
}
|
|
16
|
+
export declare const endpointOf: (answer: unknown) => UploadEndpoint;
|
|
17
|
+
/**
|
|
18
|
+
* The second step: the bytes, streamed from disk as multipart field `data`. The upload URL is not
|
|
19
|
+
* the Bot API host and is itself a credential, so it gets no token and never appears in an error.
|
|
20
|
+
* Video and audio answer XML and are named by step one's token; image and file by the answer.
|
|
21
|
+
*/
|
|
22
|
+
export declare const uploadFile: (options: {
|
|
23
|
+
/** A file on disk, or one already read — `content` — as the shared commands hand it over. */
|
|
24
|
+
path?: string;
|
|
25
|
+
content?: {
|
|
26
|
+
name: string;
|
|
27
|
+
bytes: Uint8Array;
|
|
28
|
+
};
|
|
29
|
+
type: UploadType;
|
|
30
|
+
endpoint: UploadEndpoint;
|
|
31
|
+
fetch: FetchLike;
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
timeoutMs?: number;
|
|
34
|
+
/** One request and one response; never the URL, which is a credential, nor the file's name. */
|
|
35
|
+
events?: (event: DiagnosticEvent) => void;
|
|
36
|
+
}) => Promise<Attachment>;
|
|
37
|
+
/**
|
|
38
|
+
* Repeats a send only while MAX refuses it as not ready — a refusal, so nothing was sent. Any
|
|
39
|
+
* other failure, an unclear outcome above all, goes straight back to the caller.
|
|
40
|
+
*/
|
|
41
|
+
export declare const whenAttachmentReady: <T>(send: () => Promise<T>, signal?: AbortSignal, sleep?: SleepLike) => Promise<T>;
|
|
42
|
+
//# sourceMappingURL=uploads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../src/bot/uploads.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAIjE,eAAO,MAAM,YAAY,YAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAU,CAAA;AACxE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAwBtD,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,UAA0E,CAAA;AAEtH,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,eAAO,MAAM,UAAU,WAAY,OAAO,KAAG,cAQ5C,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,UAAU,YAAmB;IACxC,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAA;IAC7C,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;CAC1C,KAAG,OAAO,CAAC,UAAU,CAyErB,CAAA;AAWD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAU,CAAC,QACnC,MAAM,OAAO,CAAC,CAAC,CAAC,WACb,WAAW,UACb,SAAS,KACf,OAAO,CAAC,CAAC,CAUX,CAAA"}
|