@wirecat/max-cli 0.0.0 → 0.42.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 +21 -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 +119 -2
- package/skills/max-cli/SKILL.md +518 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SpeechModel } from "./models.js";
|
|
2
|
+
/** What transcription needs from a speech engine — small enough for a test to stand in for it. */
|
|
3
|
+
export interface Recognizer {
|
|
4
|
+
recognize(pcm: Float32Array): string;
|
|
5
|
+
free(): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const SAMPLE_RATE = 16000;
|
|
8
|
+
/**
|
|
9
|
+
* MAX voice messages are Ogg Opus at 48 kHz (measured on a received one), and the models want
|
|
10
|
+
* 16 kHz. Averaging each three samples is ours rather than the engine's resampler, which announces
|
|
11
|
+
* itself on stderr on every call.
|
|
12
|
+
*/
|
|
13
|
+
export declare const toModelRate: (samples: Float32Array, rate: number) => Float32Array;
|
|
14
|
+
export declare const decodeOgg: (bytes: Uint8Array) => Promise<{
|
|
15
|
+
samples: Float32Array;
|
|
16
|
+
rate: number;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* The model, and a voice detector that cuts the audio at pauses into pieces of at most 20 seconds.
|
|
20
|
+
* The cutting is not optional: five minutes in one piece crash the WebAssembly build (measured).
|
|
21
|
+
*
|
|
22
|
+
* `sherpa-onnx` is loaded here, on first use, so no other command pays for its 15 MB of WebAssembly.
|
|
23
|
+
*/
|
|
24
|
+
export declare const openRecognizer: (model: SpeechModel, path: (name: string) => string, vadModel: string) => Recognizer;
|
|
25
|
+
//# sourceMappingURL=speech.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech.d.ts","sourceRoot":"","sources":["../../src/transcribe/speech.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,kGAAkG;AAClG,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAA;IACpC,IAAI,IAAI,IAAI,CAAA;CACb;AAED,eAAO,MAAM,WAAW,QAAS,CAAA;AAQjC;;;;GAIG;AACH,eAAO,MAAM,WAAW,YAAa,YAAY,QAAQ,MAAM,KAAG,YAYjE,CAAA;AAED,eAAO,MAAM,SAAS,UAAiB,UAAU,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAYlG,CAAA;AA0BD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAAW,WAAW,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,YAAY,MAAM,KAAG,UA0DrG,CAAA"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
export const SAMPLE_RATE = 16_000;
|
|
3
|
+
/**
|
|
4
|
+
* Half a second of silence ahead of the speech. Without it the voice detector clipped a recording
|
|
5
|
+
* that starts talking at once: "Ничьих" came back as "чьих" (measured 2026-09-24).
|
|
6
|
+
*/
|
|
7
|
+
const LEAD = SAMPLE_RATE / 2;
|
|
8
|
+
/**
|
|
9
|
+
* MAX voice messages are Ogg Opus at 48 kHz (measured on a received one), and the models want
|
|
10
|
+
* 16 kHz. Averaging each three samples is ours rather than the engine's resampler, which announces
|
|
11
|
+
* itself on stderr on every call.
|
|
12
|
+
*/
|
|
13
|
+
export const toModelRate = (samples, rate) => {
|
|
14
|
+
const step = rate / SAMPLE_RATE;
|
|
15
|
+
const length = Math.floor(samples.length / step);
|
|
16
|
+
const pcm = new Float32Array(LEAD + length);
|
|
17
|
+
for (let i = 0; i < length; i++) {
|
|
18
|
+
const from = Math.floor(i * step);
|
|
19
|
+
const to = Math.max(from + 1, Math.floor((i + 1) * step));
|
|
20
|
+
let sum = 0;
|
|
21
|
+
for (let j = from; j < to; j++)
|
|
22
|
+
sum += samples[j] ?? 0;
|
|
23
|
+
pcm[LEAD + i] = sum / (to - from);
|
|
24
|
+
}
|
|
25
|
+
return pcm;
|
|
26
|
+
};
|
|
27
|
+
export const decodeOgg = async (bytes) => {
|
|
28
|
+
const { OggOpusDecoder } = await import("ogg-opus-decoder");
|
|
29
|
+
const decoder = new OggOpusDecoder();
|
|
30
|
+
await decoder.ready;
|
|
31
|
+
try {
|
|
32
|
+
const { channelData, sampleRate, samplesDecoded } = await decoder.decodeFile(bytes);
|
|
33
|
+
const samples = channelData[0];
|
|
34
|
+
if (!samples || samplesDecoded === 0)
|
|
35
|
+
throw new Error("no Ogg Opus audio in it");
|
|
36
|
+
return { samples, rate: sampleRate };
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
decoder.free();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const WINDOW = 512;
|
|
43
|
+
/**
|
|
44
|
+
* The model, and a voice detector that cuts the audio at pauses into pieces of at most 20 seconds.
|
|
45
|
+
* The cutting is not optional: five minutes in one piece crash the WebAssembly build (measured).
|
|
46
|
+
*
|
|
47
|
+
* `sherpa-onnx` is loaded here, on first use, so no other command pays for its 15 MB of WebAssembly.
|
|
48
|
+
*/
|
|
49
|
+
export const openRecognizer = (model, path, vadModel) => {
|
|
50
|
+
const sherpa = createRequire(import.meta.url)("sherpa-onnx");
|
|
51
|
+
const engine = sherpa.createOfflineRecognizer({
|
|
52
|
+
featConfig: { sampleRate: SAMPLE_RATE, featureDim: model.featureDim },
|
|
53
|
+
modelConfig: { ...model.config(path), numThreads: 1, provider: "cpu", debug: 0 },
|
|
54
|
+
decodingMethod: "greedy_search",
|
|
55
|
+
});
|
|
56
|
+
const vad = sherpa.createVad({
|
|
57
|
+
sileroVad: {
|
|
58
|
+
model: vadModel,
|
|
59
|
+
threshold: 0.5,
|
|
60
|
+
minSilenceDuration: 0.5,
|
|
61
|
+
minSpeechDuration: 0.25,
|
|
62
|
+
maxSpeechDuration: 20,
|
|
63
|
+
windowSize: WINDOW,
|
|
64
|
+
},
|
|
65
|
+
sampleRate: SAMPLE_RATE,
|
|
66
|
+
numThreads: 1,
|
|
67
|
+
provider: "cpu",
|
|
68
|
+
debug: 0,
|
|
69
|
+
bufferSizeInSeconds: 30,
|
|
70
|
+
});
|
|
71
|
+
const piece = (samples) => {
|
|
72
|
+
const stream = engine.createStream();
|
|
73
|
+
try {
|
|
74
|
+
stream.acceptWaveform(SAMPLE_RATE, samples);
|
|
75
|
+
engine.decode(stream);
|
|
76
|
+
return engine.getResult(stream).text.trim();
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
stream.free();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
recognize: (pcm) => {
|
|
84
|
+
// One recognizer can hear several recordings in a row; nothing of the last may leak into this one.
|
|
85
|
+
vad.reset();
|
|
86
|
+
const parts = [];
|
|
87
|
+
const drain = () => {
|
|
88
|
+
while (!vad.isEmpty()) {
|
|
89
|
+
parts.push(piece(vad.front().samples));
|
|
90
|
+
vad.pop();
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
for (let i = 0; i + WINDOW <= pcm.length; i += WINDOW) {
|
|
94
|
+
vad.acceptWaveform(pcm.subarray(i, i + WINDOW));
|
|
95
|
+
drain();
|
|
96
|
+
}
|
|
97
|
+
vad.flush();
|
|
98
|
+
drain();
|
|
99
|
+
return parts.filter(Boolean).join(" ");
|
|
100
|
+
},
|
|
101
|
+
free: () => {
|
|
102
|
+
vad.free();
|
|
103
|
+
engine.free();
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=speech.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech.js","sourceRoot":"","sources":["../../src/transcribe/speech.ts"],"names":[],"mappings":"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"}
|
package/dist/update.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { FetchLike } from "@wirecat/cli-core/http";
|
|
2
|
+
import { type Installer } from "@wirecat/cli-core/update";
|
|
3
|
+
export declare const PACKAGE = "@wirecat/max-cli";
|
|
4
|
+
/** npm, the clock, the terminal and the package manager as `max upgrade` sees them — faked in a test. */
|
|
5
|
+
export interface UpdateEnvironment {
|
|
6
|
+
fetch?: FetchLike;
|
|
7
|
+
now?: () => number;
|
|
8
|
+
stderrIsTTY?: boolean;
|
|
9
|
+
scriptPath?: string;
|
|
10
|
+
/** Runs the update and answers its exit code; its output goes to stderr. */
|
|
11
|
+
spawn?: (argv: string[]) => number;
|
|
12
|
+
}
|
|
13
|
+
export declare const installer: ({ scriptPath }?: UpdateEnvironment) => Installer;
|
|
14
|
+
export declare const latest: (environment?: UpdateEnvironment) => Promise<string | undefined>;
|
|
15
|
+
/** The package manager's output goes to stderr, so stdout stays one result. */
|
|
16
|
+
export declare const runUpdate: (argv: string[], environment?: UpdateEnvironment) => number;
|
|
17
|
+
/**
|
|
18
|
+
* The daily "a newer version exists" line, or `undefined`. Started beside the command and awaited
|
|
19
|
+
* after it, so asking npm costs the command nothing; any failure is silence, never an error.
|
|
20
|
+
*/
|
|
21
|
+
export declare const updateNotice: (argv: readonly string[], { tty, environment, env, }: {
|
|
22
|
+
tty?: boolean;
|
|
23
|
+
environment?: UpdateEnvironment;
|
|
24
|
+
env?: NodeJS.ProcessEnv;
|
|
25
|
+
}) => Promise<string | undefined>;
|
|
26
|
+
/** The daily line telling an agent that `max skill install` gives it this tool's guide, or `undefined`. */
|
|
27
|
+
export declare const skillHint: (argv: readonly string[], { env, now }?: {
|
|
28
|
+
env?: NodeJS.ProcessEnv;
|
|
29
|
+
now?: () => number;
|
|
30
|
+
}) => string | undefined;
|
|
31
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,0BAA0B,CAAA;AAKjC,eAAO,MAAM,OAAO,qBAAqB,CAAA;AAEzC,yGAAyG;AACzG,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CACnC;AAED,eAAO,MAAM,SAAS,oBAAoB,iBAAiB,KAAQ,SACM,CAAA;AAEzE,eAAO,MAAM,MAAM,iBAAiB,iBAAiB,gCACoB,CAAA;AAEzE,+EAA+E;AAC/E,eAAO,MAAM,SAAS,SAAU,MAAM,EAAE,gBAAe,iBAAiB,KAAQ,MACT,CAAA;AAKvE;;;GAGG;AACH,eAAO,MAAM,YAAY,SACjB,SAAS,MAAM,EAAE,8BAKpB;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KAC7E,OAAO,CAAC,MAAM,GAAG,SAAS,CAiC5B,CAAA;AAED,2GAA2G;AAC3G,eAAO,MAAM,SAAS,SACd,SAAS,MAAM,EAAE,iBACK;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,KAC1E,MAAM,GAAG,SAcX,CAAA"}
|
package/dist/update.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { resolvePaths } from "@wirecat/cli-core";
|
|
5
|
+
import { skillHint as sharedSkillHint } from "@wirecat/cli-core/skill";
|
|
6
|
+
import { installerOf, latestVersion, runUpdate as runPackageManager, updateNotice as sharedNotice, } from "@wirecat/cli-core/update";
|
|
7
|
+
import { resolveSettings } from "./config.js";
|
|
8
|
+
import { SKILL_APP } from "./skill.js";
|
|
9
|
+
import { VERSION } from "./version.js";
|
|
10
|
+
export const PACKAGE = "@wirecat/max-cli";
|
|
11
|
+
export const installer = ({ scriptPath } = {}) => installerOf(scriptPath ?? realpathSync(fileURLToPath(import.meta.url)));
|
|
12
|
+
export const latest = (environment = {}) => latestVersion(PACKAGE, environment.fetch ?? fetch, { timeoutMs: 3000 });
|
|
13
|
+
/** The package manager's output goes to stderr, so stdout stays one result. */
|
|
14
|
+
export const runUpdate = (argv, environment = {}) => environment.spawn ? environment.spawn(argv) : runPackageManager(argv);
|
|
15
|
+
const statePath = (env) => join(resolvePaths({ appName: "max-cli", prefix: "MAX", env }).state, "update-check.json");
|
|
16
|
+
/**
|
|
17
|
+
* The daily "a newer version exists" line, or `undefined`. Started beside the command and awaited
|
|
18
|
+
* after it, so asking npm costs the command nothing; any failure is silence, never an error.
|
|
19
|
+
*/
|
|
20
|
+
export const updateNotice = (argv, { tty, environment = {}, env = process.env, }) => {
|
|
21
|
+
try {
|
|
22
|
+
const delimiter = argv.indexOf("--");
|
|
23
|
+
const options = argv.slice(0, delimiter < 0 ? undefined : delimiter);
|
|
24
|
+
if (["--help", "-h", "--version", "-V", "--json", "--jsonl", "--dry-run", "--timeout", "commands"].some((word) => options.includes(word)))
|
|
25
|
+
return Promise.resolve(undefined);
|
|
26
|
+
if (argv.includes("upgrade"))
|
|
27
|
+
return Promise.resolve(undefined);
|
|
28
|
+
const pretty = !argv.includes("--json") && !argv.includes("--jsonl") && (tty ?? process.stdout.isTTY === true);
|
|
29
|
+
// cli-core names the command `update`; it is `upgrade` here (CONVENTIONS, "Command names").
|
|
30
|
+
return sharedNotice({
|
|
31
|
+
argv,
|
|
32
|
+
packageName: PACKAGE,
|
|
33
|
+
command: "max",
|
|
34
|
+
version: VERSION,
|
|
35
|
+
statePath: statePath(env),
|
|
36
|
+
fetch: environment.fetch ?? fetch,
|
|
37
|
+
...(environment.now ? { now: environment.now } : {}),
|
|
38
|
+
format: pretty ? "pretty" : "json",
|
|
39
|
+
stderrIsTTY: environment.stderrIsTTY ?? process.stderr.isTTY === true,
|
|
40
|
+
quiet: argv.includes("--quiet"),
|
|
41
|
+
enabled: resolveSettings({}, { env }).updateCheck,
|
|
42
|
+
installer: installer(environment),
|
|
43
|
+
env,
|
|
44
|
+
offVariables: ["MAX_NO_UPDATE_CHECK"],
|
|
45
|
+
}).then((line) => line?.replace("`max update`", "`max upgrade`"));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return Promise.resolve(undefined);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
/** The daily line telling an agent that `max skill install` gives it this tool's guide, or `undefined`. */
|
|
52
|
+
export const skillHint = (argv, { env = process.env, now } = {}) => {
|
|
53
|
+
try {
|
|
54
|
+
if (argv.includes("--quiet"))
|
|
55
|
+
return undefined;
|
|
56
|
+
return sharedSkillHint({
|
|
57
|
+
app: SKILL_APP,
|
|
58
|
+
argv,
|
|
59
|
+
env,
|
|
60
|
+
statePath: statePath(env),
|
|
61
|
+
enabled: resolveSettings({}, { env }).skillHint,
|
|
62
|
+
...(now ? { now } : {}),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|
package/dist/upload.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const isImage: (path: string) => boolean;
|
|
2
|
+
export declare const isVideo: (path: string) => boolean;
|
|
3
|
+
export declare const readUpload: (path: string, { anyFile }?: {
|
|
4
|
+
anyFile?: boolean;
|
|
5
|
+
}) => Promise<Buffer>;
|
|
6
|
+
/** Measured 2026-09-24: a multipart POST, field `file`, answers `{photos: {<key>: {token}}}`. */
|
|
7
|
+
export declare const uploadPhoto: (url: string, path: string, bytes: Buffer) => Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Measured 2026-09-24: the bytes raw, with `Content-Range: 0-<end>/<size>` — no `bytes ` unit, as
|
|
10
|
+
* PyMax sends it and MAX accepted.
|
|
11
|
+
*/
|
|
12
|
+
export declare const uploadFile: (url: string, path: string, bytes: Buffer) => Promise<void>;
|
|
13
|
+
/** Measured 2026-09-27 with the `bytes ` unit, which PyMax and the web client send for these. */
|
|
14
|
+
export declare const uploadMedia: (kind: "video" | "voice message", url: string, path: string, bytes: Buffer) => Promise<void>;
|
|
15
|
+
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,OAAO,SAAU,MAAM,KAAG,OAAqD,CAAA;AAK5F,eAAO,MAAM,OAAO,SAAU,MAAM,KAAG,OAA4D,CAAA;AA2BnG,eAAO,MAAM,UAAU,SAAgB,MAAM,gBAAuB;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAAQ,OAAO,CAAC,MAAM,CAc9G,CAAA;AAUD,iGAAiG;AACjG,eAAO,MAAM,WAAW,QAAe,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAY1F,CAAA;AAkBD;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAS,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CACN,CAAA;AAE5E,iGAAiG;AACjG,eAAO,MAAM,WAAW,SAAU,OAAO,GAAG,eAAe,OAAO,MAAM,QAAQ,MAAM,SAAS,MAAM,kBACrB,CAAA"}
|
package/dist/upload.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { basename, extname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
4
|
+
import { CliError, resolvePaths } from "@wirecat/cli-core";
|
|
5
|
+
import { WEB_USER_AGENT } from "./spec/identity.js";
|
|
6
|
+
const HEADERS = {
|
|
7
|
+
"User-Agent": WEB_USER_AGENT.headerUserAgent,
|
|
8
|
+
Referer: "https://web.max.ru/",
|
|
9
|
+
Origin: "https://web.max.ru",
|
|
10
|
+
};
|
|
11
|
+
const IMAGE_TYPES = {
|
|
12
|
+
".jpg": "image/jpeg",
|
|
13
|
+
".jpeg": "image/jpeg",
|
|
14
|
+
".png": "image/png",
|
|
15
|
+
".webp": "image/webp",
|
|
16
|
+
".gif": "image/gif",
|
|
17
|
+
};
|
|
18
|
+
export const isImage = (path) => extname(path).toLowerCase() in IMAGE_TYPES;
|
|
19
|
+
/** The Bot API's list of video formats; MAX transcodes what it takes. */
|
|
20
|
+
const VIDEO_EXTENSIONS = new Set([".mp4", ".mov", ".webm", ".mkv"]);
|
|
21
|
+
export const isVideo = (path) => VIDEO_EXTENSIONS.has(extname(path).toLowerCase());
|
|
22
|
+
/**
|
|
23
|
+
* A file somebody talked an agent into sending would be a key or a token: those live in hidden
|
|
24
|
+
* files and folders, `~/.ssh` among them, and in max's own folders, which `MAX_*_DIR` can move out
|
|
25
|
+
* of sight (`NEED-274`). The real path is checked as well as the typed one, so a link does not hide
|
|
26
|
+
* where it points.
|
|
27
|
+
*/
|
|
28
|
+
const refusedPlace = (path) => {
|
|
29
|
+
const own = Object.values(resolvePaths({ appName: "max-cli", prefix: "MAX" }));
|
|
30
|
+
let real = resolve(path);
|
|
31
|
+
try {
|
|
32
|
+
real = realpathSync(path);
|
|
33
|
+
}
|
|
34
|
+
catch { }
|
|
35
|
+
return [resolve(path), real].some((candidate) => candidate.split(sep).some((part) => part.startsWith(".") && part !== "." && part !== "..") ||
|
|
36
|
+
own.some((dir) => inside(candidate, dir)));
|
|
37
|
+
};
|
|
38
|
+
const inside = (path, dir) => {
|
|
39
|
+
const fold = (value) => (process.platform === "win32" ? value.toLowerCase() : value);
|
|
40
|
+
const way = relative(fold(resolve(dir)), fold(path));
|
|
41
|
+
return way === "" || (!way.startsWith("..") && !isAbsolute(way));
|
|
42
|
+
};
|
|
43
|
+
export const readUpload = async (path, { anyFile = false } = {}) => {
|
|
44
|
+
if (!anyFile && refusedPlace(path)) {
|
|
45
|
+
throw new CliError("validation_error", `cannot send ${path}: hidden files and folders, ~/.ssh and max's own folders are not sent — ` +
|
|
46
|
+
"add --allow-any-file if this file is meant to go");
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
return await readFile(path);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
const reason = error.code === "ENOENT" ? "no such file" : "it cannot be read";
|
|
53
|
+
throw new CliError("validation_error", `cannot send ${path}: ${reason}`);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
/** The whole upload, not a stall: `fetch` reports no progress on a body it sends. */
|
|
57
|
+
const UPLOAD_MS = 15 * 60_000;
|
|
58
|
+
const uploadDeadline = () => AbortSignal.timeout(UPLOAD_MS);
|
|
59
|
+
const refused = (kind, status) => new CliError("network_error", `the ${kind} could not be uploaded: HTTP ${status} — nothing was sent`);
|
|
60
|
+
/** Measured 2026-09-24: a multipart POST, field `file`, answers `{photos: {<key>: {token}}}`. */
|
|
61
|
+
export const uploadPhoto = async (url, path, bytes) => {
|
|
62
|
+
const form = new FormData();
|
|
63
|
+
const type = IMAGE_TYPES[extname(path).toLowerCase()] ?? "application/octet-stream";
|
|
64
|
+
form.append("file", new Blob([bytes], { type }), `image${extname(path).toLowerCase()}`);
|
|
65
|
+
const response = await fetch(url, { method: "POST", headers: HEADERS, body: form, signal: uploadDeadline() });
|
|
66
|
+
if (!response.ok)
|
|
67
|
+
throw refused("photo", response.status);
|
|
68
|
+
const answer = (await response.json().catch(() => ({})));
|
|
69
|
+
const token = Object.values(answer.photos ?? {})[0]?.token;
|
|
70
|
+
if (typeof token !== "string")
|
|
71
|
+
throw new CliError("provider_error", "the photo upload answered no token — nothing was sent");
|
|
72
|
+
return token;
|
|
73
|
+
};
|
|
74
|
+
const postRaw = async (kind, url, path, bytes, range) => {
|
|
75
|
+
const response = await fetch(url, {
|
|
76
|
+
method: "POST",
|
|
77
|
+
headers: {
|
|
78
|
+
...HEADERS,
|
|
79
|
+
"Content-Disposition": `attachment; filename=${encodeURIComponent(basename(path))}`,
|
|
80
|
+
"Content-Range": range,
|
|
81
|
+
"Content-Type": "application/octet-stream",
|
|
82
|
+
},
|
|
83
|
+
body: bytes,
|
|
84
|
+
signal: uploadDeadline(),
|
|
85
|
+
});
|
|
86
|
+
await response.body?.cancel();
|
|
87
|
+
if (!response.ok)
|
|
88
|
+
throw refused(kind, response.status);
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Measured 2026-09-24: the bytes raw, with `Content-Range: 0-<end>/<size>` — no `bytes ` unit, as
|
|
92
|
+
* PyMax sends it and MAX accepted.
|
|
93
|
+
*/
|
|
94
|
+
export const uploadFile = (url, path, bytes) => postRaw("file", url, path, bytes, `0-${bytes.length - 1}/${bytes.length}`);
|
|
95
|
+
/** Measured 2026-09-27 with the `bytes ` unit, which PyMax and the web client send for these. */
|
|
96
|
+
export const uploadMedia = (kind, url, path, bytes) => postRaw(kind, url, path, bytes, `bytes 0-${bytes.length - 1}/${bytes.length}`);
|
|
97
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAA"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
|
package/dist/voice.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a voice message carries besides the file, as web.max.ru builds it (`FIND-104`): its length
|
|
3
|
+
* in milliseconds and 80 bars of loudness, 0–127. Computed here, so only the file leaves the machine.
|
|
4
|
+
*/
|
|
5
|
+
export declare const voiceOf: (path: string, bytes: Uint8Array) => Promise<{
|
|
6
|
+
durationMs: number;
|
|
7
|
+
wave: Uint8Array;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../src/voice.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,eAAO,MAAM,OAAO,SAAgB,MAAM,SAAS,UAAU,KAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAyB/G,CAAA"}
|
package/dist/voice.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-core";
|
|
2
|
+
import { decodeOgg } from "./transcribe/speech.js";
|
|
3
|
+
const BARS = 80;
|
|
4
|
+
const isOggOpus = (bytes) => {
|
|
5
|
+
const head = Buffer.from(bytes.subarray(0, 64)).toString("latin1");
|
|
6
|
+
return head.startsWith("OggS") && head.includes("OpusHead");
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* What a voice message carries besides the file, as web.max.ru builds it (`FIND-104`): its length
|
|
10
|
+
* in milliseconds and 80 bars of loudness, 0–127. Computed here, so only the file leaves the machine.
|
|
11
|
+
*/
|
|
12
|
+
export const voiceOf = async (path, bytes) => {
|
|
13
|
+
if (!isOggOpus(bytes)) {
|
|
14
|
+
throw new CliError("validation_error", `${path} is not Ogg Opus, the format of a voice message — convert it first: ` +
|
|
15
|
+
"ffmpeg -i <file> -ac 1 -ar 48000 -c:a libopus -b:a 32k voice.ogg");
|
|
16
|
+
}
|
|
17
|
+
let decoded;
|
|
18
|
+
try {
|
|
19
|
+
decoded = await decodeOgg(bytes);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new CliError("validation_error", `${path} could not be decoded as Ogg Opus`);
|
|
23
|
+
}
|
|
24
|
+
const { samples, rate } = decoded;
|
|
25
|
+
const wave = new Uint8Array(BARS);
|
|
26
|
+
const size = Math.max(1, Math.floor(samples.length / BARS));
|
|
27
|
+
for (let bar = 0; bar < BARS; bar++) {
|
|
28
|
+
let peak = 0;
|
|
29
|
+
for (let index = bar * size; index < Math.min(samples.length, (bar + 1) * size); index++) {
|
|
30
|
+
peak = Math.max(peak, Math.abs(samples[index] ?? 0));
|
|
31
|
+
}
|
|
32
|
+
wave[bar] = Math.min(127, Math.round(peak * 127));
|
|
33
|
+
}
|
|
34
|
+
return { durationMs: Math.round((samples.length / rate) * 1000), wave };
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../src/voice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,MAAM,IAAI,GAAG,EAAE,CAAA;AAEf,MAAM,SAAS,GAAG,CAAC,KAAiB,EAAW,EAAE;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC7D,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,KAAiB,EAAqD,EAAE;IAClH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,GAAG,IAAI,sEAAsE;YAC3E,kEAAkE,CACrE,CAAA;IACH,CAAC;IACD,IAAI,OAAgD,CAAA;IACpD,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,IAAI,mCAAmC,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACjC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IAC3D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACzF,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA;AACzE,CAAC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Payload } from "./protocol/frame.js";
|
|
2
|
+
/** The warnings the client raises: a code, never the sentence — the sentence quotes MAX, and MAX quotes us. */
|
|
3
|
+
export type WarningCode = "chats_partial" | "token_not_saved" | "cache_not_written" | "reactions_unread" | "names_unread" | "response_shape";
|
|
4
|
+
/**
|
|
5
|
+
* The ids a request named, by name, from a list of fields that is written out here.
|
|
6
|
+
*
|
|
7
|
+
* **An allowlist, never a filter.** Copying the request and removing what looks dangerous means a
|
|
8
|
+
* field nobody has seen yet arrives in the log by default; this way it cannot. `token` is the case
|
|
9
|
+
* that matters: it is a field of `session.login` and there is no branch here that could reach it.
|
|
10
|
+
*/
|
|
11
|
+
export declare const idsOf: (request: unknown) => {
|
|
12
|
+
ids?: Record<string, string>;
|
|
13
|
+
counts?: Record<string, number>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* How many of each list MAX sent back — `{ chats: 25, contacts: 6 }`.
|
|
17
|
+
*
|
|
18
|
+
* Every array at the top of the answer, counted. Generic on purpose: a per-operation table of
|
|
19
|
+
* "which field is the interesting one" is a second registry to keep in step with `src/spec/`, and
|
|
20
|
+
* a field name with a length beside it is content-free whatever MAX adds next.
|
|
21
|
+
*/
|
|
22
|
+
export declare const countsIn: (payload: Payload) => Record<string, number> | undefined;
|
|
23
|
+
//# sourceMappingURL=wire-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire-events.d.ts","sourceRoot":"","sources":["../src/wire-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,+GAA+G;AAC/G,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,cAAc,GACd,gBAAgB,CAAA;AAEpB;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,YAAa,OAAO,KAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAqBvG,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,YAAa,OAAO,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAIpE,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ids a request named, by name, from a list of fields that is written out here.
|
|
3
|
+
*
|
|
4
|
+
* **An allowlist, never a filter.** Copying the request and removing what looks dangerous means a
|
|
5
|
+
* field nobody has seen yet arrives in the log by default; this way it cannot. `token` is the case
|
|
6
|
+
* that matters: it is a field of `session.login` and there is no branch here that could reach it.
|
|
7
|
+
*/
|
|
8
|
+
export const idsOf = (request) => {
|
|
9
|
+
if (!isRecord(request))
|
|
10
|
+
return {};
|
|
11
|
+
const ids = {};
|
|
12
|
+
const counts = {};
|
|
13
|
+
if (isId(request.chatId))
|
|
14
|
+
ids.chat = String(request.chatId);
|
|
15
|
+
if (isId(request.messageId))
|
|
16
|
+
ids.message = String(request.messageId);
|
|
17
|
+
if (typeof request.cid === "number")
|
|
18
|
+
ids.send = String(request.cid);
|
|
19
|
+
// `messages.send` carries its client id one level down, and the `cid` is the one thing that makes
|
|
20
|
+
// an ambiguous send repeatable — see `MaxClient.messages.send`.
|
|
21
|
+
const message = isRecord(request.message) ? request.message : undefined;
|
|
22
|
+
if (message && typeof message.cid === "number")
|
|
23
|
+
ids.send = String(message.cid);
|
|
24
|
+
if (Array.isArray(request.contactIds))
|
|
25
|
+
counts.contacts = request.contactIds.length;
|
|
26
|
+
return {
|
|
27
|
+
...(Object.keys(ids).length > 0 ? { ids } : {}),
|
|
28
|
+
...(Object.keys(counts).length > 0 ? { counts } : {}),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* How many of each list MAX sent back — `{ chats: 25, contacts: 6 }`.
|
|
33
|
+
*
|
|
34
|
+
* Every array at the top of the answer, counted. Generic on purpose: a per-operation table of
|
|
35
|
+
* "which field is the interesting one" is a second registry to keep in step with `src/spec/`, and
|
|
36
|
+
* a field name with a length beside it is content-free whatever MAX adds next.
|
|
37
|
+
*/
|
|
38
|
+
export const countsIn = (payload) => {
|
|
39
|
+
const counts = {};
|
|
40
|
+
for (const [field, value] of Object.entries(payload))
|
|
41
|
+
if (Array.isArray(value))
|
|
42
|
+
counts[field] = value.length;
|
|
43
|
+
return Object.keys(counts).length > 0 ? counts : undefined;
|
|
44
|
+
};
|
|
45
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
46
|
+
const isId = (value) => typeof value === "string" || typeof value === "number" || typeof value === "bigint";
|
|
47
|
+
//# sourceMappingURL=wire-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire-events.js","sourceRoot":"","sources":["../src/wire-events.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAqE,EAAE;IAC3G,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAA;IAEjC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACpE,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEnE,kGAAkG;IAClG,gEAAgE;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACvE,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAE9E,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAA;IAElF,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAA;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAsC,EAAE;IAC/E,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IAC5G,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5D,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE,MAAM,IAAI,GAAG,CAAC,KAAc,EAAqC,EAAE,CACjE,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAA"}
|