@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,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LZ4 *block* format โ no frame header, no checksum โ which is what MAX puts in a frame body.
|
|
3
|
+
*
|
|
4
|
+
* Hand-written because both directions are small and a native binding is what breaks under Bun
|
|
5
|
+
* (REQUIREMENTS ยง36). The decompressor mirrors the one that read all 73 frames of the 2026-09-25
|
|
6
|
+
* capture; the compressor keeps the format's end-of-block rules, which a lenient decoder such as
|
|
7
|
+
* ours would not notice being broken but MAX's might.
|
|
8
|
+
*/
|
|
9
|
+
const MIN_MATCH = 4;
|
|
10
|
+
/** The last five bytes of a block are always literals. */
|
|
11
|
+
const LAST_LITERALS = 5;
|
|
12
|
+
/** No match may start within the last twelve bytes. */
|
|
13
|
+
const MF_LIMIT = 12;
|
|
14
|
+
const MAX_OFFSET = 0xffff;
|
|
15
|
+
const HASH_BITS = 12;
|
|
16
|
+
export class Lz4Error extends Error {
|
|
17
|
+
constructor(what) {
|
|
18
|
+
super(`MAX sent an LZ4 block that ${what}`);
|
|
19
|
+
this.name = "Lz4Error";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export const compressBlock = (src) => {
|
|
23
|
+
const out = new Growable(src.length + (src.length >> 8) + 16);
|
|
24
|
+
const table = new Int32Array(1 << HASH_BITS).fill(-1);
|
|
25
|
+
const matchLimit = src.length - LAST_LITERALS;
|
|
26
|
+
let anchor = 0;
|
|
27
|
+
let i = 0;
|
|
28
|
+
while (i < src.length - MF_LIMIT) {
|
|
29
|
+
const sequence = read32(src, i);
|
|
30
|
+
const slot = Math.imul(sequence, 2654435761) >>> (32 - HASH_BITS);
|
|
31
|
+
const candidate = table[slot];
|
|
32
|
+
table[slot] = i;
|
|
33
|
+
if (candidate < 0 || i - candidate > MAX_OFFSET || read32(src, candidate) !== sequence) {
|
|
34
|
+
i += 1;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
let length = MIN_MATCH;
|
|
38
|
+
while (i + length < matchLimit && src[i + length] === src[candidate + length])
|
|
39
|
+
length += 1;
|
|
40
|
+
writeSequence(out, src.subarray(anchor, i), i - candidate, length);
|
|
41
|
+
i += length;
|
|
42
|
+
anchor = i;
|
|
43
|
+
}
|
|
44
|
+
writeSequence(out, src.subarray(anchor), 0, 0);
|
|
45
|
+
return out.bytes();
|
|
46
|
+
};
|
|
47
|
+
/** `maxOutput` bounds a hostile or corrupt block; the frame header gives the caller one. */
|
|
48
|
+
export const decompressBlock = (src, maxOutput) => {
|
|
49
|
+
const out = new Growable(Math.min(maxOutput, src.length * 4), maxOutput);
|
|
50
|
+
let p = 0;
|
|
51
|
+
while (p < src.length) {
|
|
52
|
+
const token = src[p++];
|
|
53
|
+
let literals = token >> 4;
|
|
54
|
+
if (literals === 15)
|
|
55
|
+
literals += readLength(src, () => p++);
|
|
56
|
+
if (p + literals > src.length)
|
|
57
|
+
throw new Lz4Error("runs past its own end");
|
|
58
|
+
if (out.length + literals > maxOutput)
|
|
59
|
+
throw new Lz4Error("is larger than its frame allows");
|
|
60
|
+
out.append(src.subarray(p, p + literals));
|
|
61
|
+
p += literals;
|
|
62
|
+
if (p >= src.length)
|
|
63
|
+
break;
|
|
64
|
+
if (p + 2 > src.length)
|
|
65
|
+
throw new Lz4Error("ends in the middle of an offset");
|
|
66
|
+
const offset = src[p] | (src[p + 1] << 8);
|
|
67
|
+
p += 2;
|
|
68
|
+
if (offset === 0 || offset > out.length)
|
|
69
|
+
throw new Lz4Error("points before its own start");
|
|
70
|
+
let length = token & 15;
|
|
71
|
+
if (length === 15)
|
|
72
|
+
length += readLength(src, () => p++);
|
|
73
|
+
length += MIN_MATCH;
|
|
74
|
+
if (out.length + length > maxOutput)
|
|
75
|
+
throw new Lz4Error("is larger than its frame allows");
|
|
76
|
+
out.copyBack(offset, length);
|
|
77
|
+
}
|
|
78
|
+
return out.bytes();
|
|
79
|
+
};
|
|
80
|
+
const read32 = (bytes, at) => (bytes[at] |
|
|
81
|
+
(bytes[at + 1] << 8) |
|
|
82
|
+
(bytes[at + 2] << 16) |
|
|
83
|
+
(bytes[at + 3] << 24)) >>>
|
|
84
|
+
0;
|
|
85
|
+
const readLength = (src, next) => {
|
|
86
|
+
let total = 0;
|
|
87
|
+
let byte;
|
|
88
|
+
do {
|
|
89
|
+
const at = next();
|
|
90
|
+
if (at >= src.length)
|
|
91
|
+
throw new Lz4Error("ends in the middle of a length");
|
|
92
|
+
byte = src[at];
|
|
93
|
+
total += byte;
|
|
94
|
+
} while (byte === 255);
|
|
95
|
+
return total;
|
|
96
|
+
};
|
|
97
|
+
const writeLength = (out, value) => {
|
|
98
|
+
let rest = value;
|
|
99
|
+
while (rest >= 255) {
|
|
100
|
+
out.push(255);
|
|
101
|
+
rest -= 255;
|
|
102
|
+
}
|
|
103
|
+
out.push(rest);
|
|
104
|
+
};
|
|
105
|
+
/** A match length of zero means the final, literals-only sequence. */
|
|
106
|
+
const writeSequence = (out, literals, offset, matchLength) => {
|
|
107
|
+
const literalNibble = Math.min(literals.length, 15);
|
|
108
|
+
const matchNibble = matchLength === 0 ? 0 : Math.min(matchLength - MIN_MATCH, 15);
|
|
109
|
+
out.push((literalNibble << 4) | matchNibble);
|
|
110
|
+
if (literals.length >= 15)
|
|
111
|
+
writeLength(out, literals.length - 15);
|
|
112
|
+
out.append(literals);
|
|
113
|
+
if (matchLength === 0)
|
|
114
|
+
return;
|
|
115
|
+
out.push(offset & 0xff);
|
|
116
|
+
out.push(offset >> 8);
|
|
117
|
+
if (matchLength - MIN_MATCH >= 15)
|
|
118
|
+
writeLength(out, matchLength - MIN_MATCH - 15);
|
|
119
|
+
};
|
|
120
|
+
class Growable {
|
|
121
|
+
#buffer;
|
|
122
|
+
#limit;
|
|
123
|
+
length = 0;
|
|
124
|
+
/** `limit` keeps doubling from allocating past what the caller will accept. */
|
|
125
|
+
constructor(capacity, limit = Number.POSITIVE_INFINITY) {
|
|
126
|
+
this.#limit = limit;
|
|
127
|
+
this.#buffer = new Uint8Array(Math.max(capacity, 16));
|
|
128
|
+
}
|
|
129
|
+
push(byte) {
|
|
130
|
+
this.#reserve(1);
|
|
131
|
+
this.#buffer[this.length++] = byte;
|
|
132
|
+
}
|
|
133
|
+
append(bytes) {
|
|
134
|
+
this.#reserve(bytes.length);
|
|
135
|
+
this.#buffer.set(bytes, this.length);
|
|
136
|
+
this.length += bytes.length;
|
|
137
|
+
}
|
|
138
|
+
/** Byte by byte on purpose: a match may overlap the bytes it is still producing. */
|
|
139
|
+
copyBack(offset, length) {
|
|
140
|
+
this.#reserve(length);
|
|
141
|
+
const from = this.length - offset;
|
|
142
|
+
for (let k = 0; k < length; k++)
|
|
143
|
+
this.#buffer[this.length + k] = this.#buffer[from + k];
|
|
144
|
+
this.length += length;
|
|
145
|
+
}
|
|
146
|
+
bytes() {
|
|
147
|
+
return this.#buffer.slice(0, this.length);
|
|
148
|
+
}
|
|
149
|
+
#reserve(extra) {
|
|
150
|
+
if (this.length + extra <= this.#buffer.length)
|
|
151
|
+
return;
|
|
152
|
+
const next = new Uint8Array(Math.max(Math.min(this.#buffer.length * 2, this.#limit), this.length + extra));
|
|
153
|
+
next.set(this.#buffer.subarray(0, this.length));
|
|
154
|
+
this.#buffer = next;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=lz4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lz4.js","sourceRoot":"","sources":["../../src/protocol/lz4.ts"],"names":[],"mappings":"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"}
|
package/dist/record.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Chat, Contact, Id, Member, PeopleLookup } from "@wirecat/cli-messaging";
|
|
2
|
+
export interface SyncSummary {
|
|
3
|
+
known: number;
|
|
4
|
+
added: number;
|
|
5
|
+
changed: number;
|
|
6
|
+
}
|
|
7
|
+
export interface LoginDelta {
|
|
8
|
+
chats: Chat[];
|
|
9
|
+
people: Contact[];
|
|
10
|
+
members: Map<Id, Id[]>;
|
|
11
|
+
/** Left out when the login was not this client's own, so the marker would claim changes it never saw. */
|
|
12
|
+
marker?: number;
|
|
13
|
+
}
|
|
14
|
+
/** MAX login data and transcripts in `messages.db`; history is saved by the shared `stored` wrapper. */
|
|
15
|
+
export interface MaxRecord {
|
|
16
|
+
transcript(chatId: Id, messageId: Id): Promise<{
|
|
17
|
+
text: string;
|
|
18
|
+
source: string;
|
|
19
|
+
} | undefined>;
|
|
20
|
+
keepTranscript(chatId: Id, messageId: Id, text: string, source: string): Promise<void>;
|
|
21
|
+
syncMarker(): Promise<number | undefined>;
|
|
22
|
+
applyLogin(delta: LoginDelta): Promise<SyncSummary | undefined>;
|
|
23
|
+
people(): Promise<PeopleLookup>;
|
|
24
|
+
chatsWith(personId: Id): Promise<Chat[]>;
|
|
25
|
+
rememberChats(chats: Chat[], complete: boolean): Promise<Chat[]>;
|
|
26
|
+
members(chatId: Id): Promise<Member[]>;
|
|
27
|
+
names(ids: Id[]): Promise<Map<Id, string>>;
|
|
28
|
+
remember(people: Contact[]): Promise<void>;
|
|
29
|
+
/** The next login asks for everything, as `contacts sync` wants. */
|
|
30
|
+
forgetMarker(): Promise<void>;
|
|
31
|
+
close(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The store opens on first use, and the account is read then too: the first login of a new profile
|
|
35
|
+
* is what names it.
|
|
36
|
+
*/
|
|
37
|
+
export declare const maxRecord: ({ account, env }: {
|
|
38
|
+
account: () => Id | undefined;
|
|
39
|
+
env?: NodeJS.ProcessEnv;
|
|
40
|
+
}) => MaxRecord;
|
|
41
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAKrF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACtB,yGAAyG;IACzG,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wGAAwG;AACxG,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IAC5F,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtF,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACzC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA;IAC/D,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAAA;IAC/B,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACxC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAChE,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACtC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,oEAAoE;IACpE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,qBAAsB;IAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KAAG,SAsGxG,CAAA"}
|
package/dist/record.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { openStore } from "@wirecat/cli-messaging/store";
|
|
2
|
+
const MARKER = "login.marker";
|
|
3
|
+
/**
|
|
4
|
+
* The store opens on first use, and the account is read then too: the first login of a new profile
|
|
5
|
+
* is what names it.
|
|
6
|
+
*/
|
|
7
|
+
export const maxRecord = ({ account, env }) => {
|
|
8
|
+
let opened;
|
|
9
|
+
const store = () => {
|
|
10
|
+
opened ??= openStore(env === undefined ? {} : { env });
|
|
11
|
+
return opened;
|
|
12
|
+
};
|
|
13
|
+
const keyOf = () => {
|
|
14
|
+
const id = account();
|
|
15
|
+
return id === undefined ? undefined : { provider: "max", account: id };
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
transcript: async (chatId, messageId) => {
|
|
19
|
+
const key = keyOf();
|
|
20
|
+
return key ? (await store()).transcript(key, chatId, messageId) : undefined;
|
|
21
|
+
},
|
|
22
|
+
keepTranscript: async (chatId, messageId, text, source) => {
|
|
23
|
+
const key = keyOf();
|
|
24
|
+
if (!key)
|
|
25
|
+
throw new Error("cannot keep a transcript before the MAX account is known");
|
|
26
|
+
await (await store()).keepTranscript(key, chatId, messageId, text, source);
|
|
27
|
+
},
|
|
28
|
+
syncMarker: async () => {
|
|
29
|
+
const key = keyOf();
|
|
30
|
+
const saved = key && (await (await store()).syncState(key, MARKER));
|
|
31
|
+
return saved === undefined ? undefined : Number(saved.value);
|
|
32
|
+
},
|
|
33
|
+
applyLogin: async ({ chats, people, members, marker }) => {
|
|
34
|
+
const key = keyOf();
|
|
35
|
+
if (!key)
|
|
36
|
+
return;
|
|
37
|
+
const db = await store();
|
|
38
|
+
const known = await db.people("max", { account: key.account });
|
|
39
|
+
const added = people.filter((person) => !known.get(person.id)).length;
|
|
40
|
+
await db.applyDelta(key, {
|
|
41
|
+
chats,
|
|
42
|
+
people: people.map(factsOf),
|
|
43
|
+
members,
|
|
44
|
+
...(marker === undefined ? {} : { state: { [MARKER]: String(marker) } }),
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
known: (await db.people("max", { account: key.account })).all().length,
|
|
48
|
+
added,
|
|
49
|
+
changed: people.length - added,
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
people: async () => {
|
|
53
|
+
const key = keyOf();
|
|
54
|
+
return key ? (await store()).people("max", { account: key.account }) : { get: () => undefined, all: () => [] };
|
|
55
|
+
},
|
|
56
|
+
chatsWith: async (personId) => {
|
|
57
|
+
const key = keyOf();
|
|
58
|
+
return key ? (await store()).chatsWith(key, personId) : [];
|
|
59
|
+
},
|
|
60
|
+
rememberChats: async (chats, complete) => {
|
|
61
|
+
const key = keyOf();
|
|
62
|
+
if (!key)
|
|
63
|
+
return chats;
|
|
64
|
+
const db = await store();
|
|
65
|
+
await db.saveChats(key, chats);
|
|
66
|
+
if (complete && chats.length > 0)
|
|
67
|
+
await db.markChatsLeft(key, chats.map((chat) => chat.id));
|
|
68
|
+
return (await db.chats(key, {})).items;
|
|
69
|
+
},
|
|
70
|
+
members: async (chatId) => {
|
|
71
|
+
const key = keyOf();
|
|
72
|
+
return key ? (await store()).members(key, chatId) : [];
|
|
73
|
+
},
|
|
74
|
+
names: async (ids) => {
|
|
75
|
+
const key = keyOf();
|
|
76
|
+
const names = new Map();
|
|
77
|
+
if (!key || ids.length === 0)
|
|
78
|
+
return names;
|
|
79
|
+
const known = await (await store()).people("max", { account: key.account });
|
|
80
|
+
for (const id of ids) {
|
|
81
|
+
const name = known.get(id)?.name;
|
|
82
|
+
if (name)
|
|
83
|
+
names.set(id, name);
|
|
84
|
+
}
|
|
85
|
+
return names;
|
|
86
|
+
},
|
|
87
|
+
remember: async (people) => {
|
|
88
|
+
const key = keyOf();
|
|
89
|
+
if (key && people.length > 0)
|
|
90
|
+
await (await store()).savePeople(key, people.map(factsOf));
|
|
91
|
+
},
|
|
92
|
+
forgetMarker: async () => {
|
|
93
|
+
const key = keyOf();
|
|
94
|
+
if (key)
|
|
95
|
+
await (await store()).clearSyncState(key, MARKER);
|
|
96
|
+
},
|
|
97
|
+
close: async () => {
|
|
98
|
+
if (opened)
|
|
99
|
+
await (await opened.catch(() => undefined))?.close();
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
const factsOf = ({ id, name, username, description }) => ({ id, name, username, description });
|
|
104
|
+
//# sourceMappingURL=record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Message, MessageHit, Poll, WindowedMessage } from "../domain/models.js";
|
|
2
|
+
export interface RenderOptions {
|
|
3
|
+
/** 0 โ the conversation; 1 โ the ids worth searching by; 2 โ everything the model knows. */
|
|
4
|
+
verbosity?: 0 | 1 | 2;
|
|
5
|
+
width?: number;
|
|
6
|
+
/**
|
|
7
|
+
* Whether to style at all. **Decided by the caller**: `styleText` checks the stream under Node and
|
|
8
|
+
* not under Bun, which styles a pipe too (measured 2026-09-22).
|
|
9
|
+
*/
|
|
10
|
+
color?: boolean;
|
|
11
|
+
/** A colour per sender, `ะฒั` keeping cyan to itself. */
|
|
12
|
+
senderColors?: boolean;
|
|
13
|
+
locale?: string;
|
|
14
|
+
timeZone?: string;
|
|
15
|
+
profile?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const renderMessages: (messages: (Message | MessageHit | WindowedMessage)[], options?: RenderOptions) => string;
|
|
18
|
+
export declare const renderMessage: (message: Message | MessageHit | WindowedMessage, options?: RenderOptions) => string;
|
|
19
|
+
/**
|
|
20
|
+
* `๐ question`, then one line per answer with the id `max polls vote` takes, its votes, and โ on
|
|
21
|
+
* the owner's own. What kind of poll it is goes on the last line, beside the count.
|
|
22
|
+
*/
|
|
23
|
+
export declare const pollLines: (poll: Poll) => string[];
|
|
24
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/rendering/messages.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,OAAO,EACP,UAAU,EACV,IAAI,EAGJ,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,wDAAwD;IACxD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AASD,eAAO,MAAM,cAAc,aACf,CAAC,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC,EAAE,YAC3C,aAAa,KACrB,MAcF,CAAA;AAED,eAAO,MAAM,aAAa,YAAa,OAAO,GAAG,UAAU,GAAG,eAAe,YAAW,aAAa,KAAQ,MAgD5G,CAAA;AAmED;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAU,IAAI,KAAG,MAAM,EAc5C,CAAA"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { styleText } from "node:util";
|
|
2
|
+
import { singleLine, visibleControls } from "@wirecat/cli-core";
|
|
3
|
+
import stringWidth from "string-width";
|
|
4
|
+
import wrapAnsi from "wrap-ansi";
|
|
5
|
+
const TIME_WIDTH = 8;
|
|
6
|
+
const INDENT = " ".repeat(TIME_WIDTH + 2);
|
|
7
|
+
const MIN_WIDTH = 40;
|
|
8
|
+
const SENDER_COLOURS = ["green", "yellow", "magenta", "blue", "red"];
|
|
9
|
+
export const renderMessages = (messages, options = {}) => {
|
|
10
|
+
if (messages.length === 0)
|
|
11
|
+
return "(nothing)";
|
|
12
|
+
const day = dayFormatter(options);
|
|
13
|
+
const paint = painter(options);
|
|
14
|
+
let previous;
|
|
15
|
+
const blocks = [];
|
|
16
|
+
for (const message of messages) {
|
|
17
|
+
const date = day(message.timestamp);
|
|
18
|
+
if (date !== previous)
|
|
19
|
+
blocks.push(paint("dim", `โโ ${date} โโ`));
|
|
20
|
+
previous = date;
|
|
21
|
+
blocks.push(renderMessage(message, options));
|
|
22
|
+
}
|
|
23
|
+
return blocks.join("\n\n");
|
|
24
|
+
};
|
|
25
|
+
export const renderMessage = (message, options = {}) => {
|
|
26
|
+
const paint = painter(options);
|
|
27
|
+
const width = Math.max(MIN_WIDTH, options.width ?? 80);
|
|
28
|
+
const room = width - INDENT.length;
|
|
29
|
+
const time = timeFormatter(options);
|
|
30
|
+
const verbosity = options.verbosity ?? 0;
|
|
31
|
+
const chat = "chatTitle" in message ? paint("dim", ` ยท ${singleLine(message.chatTitle ?? message.chatId)}`) : "";
|
|
32
|
+
const mark = "anchor" in message && message.anchor ? paint("bold", " โ") : "";
|
|
33
|
+
const lines = [`${paint("dim", time(message.timestamp))} ${senderOf(message, options)}${chat}${mark}`];
|
|
34
|
+
const body = (text) => wrapAnsi(visibleControls(text), room, { hard: true }).split("\n");
|
|
35
|
+
if (message.replyTo)
|
|
36
|
+
lines.push(paint("dim", preview("โณ", message.replyTo, room)));
|
|
37
|
+
if (message.forwardedFrom) {
|
|
38
|
+
lines.push(paint("dim", `โช ${nameOf(message.forwardedFrom)}`));
|
|
39
|
+
if (message.forwardedFrom.text)
|
|
40
|
+
lines.push(...body(message.forwardedFrom.text));
|
|
41
|
+
lines.push(...attachmentLines(message.forwardedFrom.attachments, paint, options));
|
|
42
|
+
}
|
|
43
|
+
if (message.text)
|
|
44
|
+
lines.push(...body(message.text));
|
|
45
|
+
lines.push(...attachmentLines(message.attachments, paint, options));
|
|
46
|
+
if (message.reactions && message.reactions.total > 0)
|
|
47
|
+
lines.push(paint("dim", reactionLine(message.reactions)));
|
|
48
|
+
if (message.editedAt)
|
|
49
|
+
lines.push(paint("dim", `edited ${editedAt(message, options)}`));
|
|
50
|
+
if (verbosity >= 1) {
|
|
51
|
+
const fields = [
|
|
52
|
+
["message", message.id],
|
|
53
|
+
["sender", message.senderId],
|
|
54
|
+
["chat", message.chatId],
|
|
55
|
+
["reply to", message.replyTo?.id],
|
|
56
|
+
["forward of", message.forwardedFrom?.id],
|
|
57
|
+
...message.attachments.map((a) => ["link", a.url]),
|
|
58
|
+
];
|
|
59
|
+
if (verbosity >= 2) {
|
|
60
|
+
fields.push(["provider", "max"], ["profile", options.profile], ["sent", message.timestamp], ["edited", message.editedAt], ["outgoing", message.outgoing === null ? "unknown" : String(message.outgoing)], ...message.attachments.map((a) => ["attachment", JSON.stringify(a)]));
|
|
61
|
+
}
|
|
62
|
+
const shown = fields.filter((field) => typeof field[1] === "string");
|
|
63
|
+
const label = Math.max(...shown.map(([key]) => key.length));
|
|
64
|
+
lines.push("", ...shown.map(([key, value]) => paint("dim", `${key.padEnd(label)} ${singleLine(value)}`)));
|
|
65
|
+
}
|
|
66
|
+
return lines.map((line, index) => (index === 0 || line === "" ? line : `${INDENT}${line}`)).join("\n");
|
|
67
|
+
};
|
|
68
|
+
const painter = ({ color = false }) => (style, text) => color ? styleText(style, text, { validateStream: false }) : text;
|
|
69
|
+
const senderOf = (message, options) => {
|
|
70
|
+
const paint = painter(options);
|
|
71
|
+
if (message.outgoing === true)
|
|
72
|
+
return paint(["bold", "cyan"], "ะฒั");
|
|
73
|
+
const name = nameOf(message);
|
|
74
|
+
if (!options.senderColors)
|
|
75
|
+
return paint("bold", name);
|
|
76
|
+
const colour = SENDER_COLOURS[hash(message.senderId ?? name) % SENDER_COLOURS.length] ?? "green";
|
|
77
|
+
return paint(["bold", colour], name);
|
|
78
|
+
};
|
|
79
|
+
const nameOf = ({ senderName, senderId, outgoing }) => outgoing === true ? "ะฒั" : singleLine(senderName ?? senderId ?? "unknown");
|
|
80
|
+
const hash = (value) => [...value].reduce((sum, char) => (sum * 31 + char.charCodeAt(0)) >>> 0, 7);
|
|
81
|
+
/** One line: it is a pointer to the other message, not a second copy of it. */
|
|
82
|
+
const preview = (mark, quoted, room) => {
|
|
83
|
+
const text = singleLine(quoted.text.split("\n")[0] ?? "") || (quoted.attachments[0] ? `๐ ${quoted.attachments[0].kind}` : "");
|
|
84
|
+
const line = text ? `${mark} ${nameOf(quoted)}: ${text}` : `${mark} message ${quoted.id}`;
|
|
85
|
+
if (stringWidth(line) <= room)
|
|
86
|
+
return line;
|
|
87
|
+
return `${wrapAnsi(line, room - 1, { hard: true }).split("\n")[0]}โฆ`;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Compact, and each one a link: `๐ photo`, `๐ photo ร3 1 2 3`, `๐ report.pdf ยท 24 MB`. The link
|
|
91
|
+
* is an OSC 8 hyperlink where there is colour; without it the address is printed, so it is never
|
|
92
|
+
* out of reach.
|
|
93
|
+
*/
|
|
94
|
+
const attachmentLines = (attachments, paint, options) => {
|
|
95
|
+
// The address sits inside our own OSC 8 sequence: a BEL or ESC in it would end that sequence early.
|
|
96
|
+
const link = (label, raw) => {
|
|
97
|
+
if (raw === undefined)
|
|
98
|
+
return label;
|
|
99
|
+
const url = singleLine(raw);
|
|
100
|
+
return options.color ? `\u001b]8;;${url}\u0007${label}\u001b]8;;\u0007` : `${label} ${url}`;
|
|
101
|
+
};
|
|
102
|
+
const polls = attachments.flatMap((attachment) => (attachment.poll ? [attachment.poll] : []));
|
|
103
|
+
const groups = new Map();
|
|
104
|
+
for (const attachment of attachments.filter((each) => !each.poll)) {
|
|
105
|
+
const key = attachment.kind === "poll"
|
|
106
|
+
? "a poll of a newer kind this version cannot show"
|
|
107
|
+
: singleLine(attachment.name ?? attachment.title ?? attachment.kind);
|
|
108
|
+
groups.set(key, [...(groups.get(key) ?? []), attachment]);
|
|
109
|
+
}
|
|
110
|
+
const files = [...groups].map(([label, same]) => {
|
|
111
|
+
const first = same[0];
|
|
112
|
+
const size = first?.size === undefined ? "" : ` ยท ${megabytes(first.size)}`;
|
|
113
|
+
if (same.length === 1)
|
|
114
|
+
return paint("dim", `๐ ${link(`${label}${size}`, first?.url)}`);
|
|
115
|
+
const each = same.map((attachment, index) => link(String(index + 1), attachment.url)).join(" ");
|
|
116
|
+
return paint("dim", `๐ ${label} ร${same.length} ${each}`);
|
|
117
|
+
});
|
|
118
|
+
return [...polls.flatMap(pollLines), ...files];
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* `๐ question`, then one line per answer with the id `max polls vote` takes, its votes, and โ on
|
|
122
|
+
* the owner's own. What kind of poll it is goes on the last line, beside the count.
|
|
123
|
+
*/
|
|
124
|
+
export const pollLines = (poll) => {
|
|
125
|
+
const kind = [
|
|
126
|
+
poll.closed ? "closed" : "",
|
|
127
|
+
poll.multiple ? "several answers" : "",
|
|
128
|
+
poll.anonymous ? "anonymous" : "",
|
|
129
|
+
poll.quiz ? "quiz" : "",
|
|
130
|
+
].filter(Boolean);
|
|
131
|
+
return [
|
|
132
|
+
`๐ ${visibleControls(poll.question)}`,
|
|
133
|
+
...poll.answers.map((answer) => ` [${answer.id}] ${visibleControls(answer.text)} โ ${answer.votes}${answer.mine ? " โ" : ""}`),
|
|
134
|
+
` ${[`${poll.total} voted`, ...kind].join(" ยท ")}`,
|
|
135
|
+
];
|
|
136
|
+
};
|
|
137
|
+
const megabytes = (bytes) => bytes >= 1_000_000 ? `${Math.round(bytes / 1_000_000)} MB` : `${Math.max(1, Math.round(bytes / 1_000))} KB`;
|
|
138
|
+
const parts = (format, iso) => Object.fromEntries(format.formatToParts(new Date(iso)).map(({ type, value }) => [type, value]));
|
|
139
|
+
const timeFormatter = ({ timeZone }) => {
|
|
140
|
+
const format = new Intl.DateTimeFormat("en-GB", {
|
|
141
|
+
hour: "2-digit",
|
|
142
|
+
minute: "2-digit",
|
|
143
|
+
second: "2-digit",
|
|
144
|
+
hourCycle: "h23",
|
|
145
|
+
...(timeZone ? { timeZone } : {}),
|
|
146
|
+
});
|
|
147
|
+
return (iso) => {
|
|
148
|
+
const { hour, minute, second } = parts(format, iso);
|
|
149
|
+
return `${hour}:${minute}:${second}`;
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
/** `3 ัะฝะฒะฐัั 2026` โ the `ะณ.` Intl adds for Russian is dropped; the line is a heading, not a date field. */
|
|
153
|
+
const dayFormatter = ({ locale = "ru-RU", timeZone }) => {
|
|
154
|
+
const format = new Intl.DateTimeFormat(locale, {
|
|
155
|
+
day: "numeric",
|
|
156
|
+
month: "long",
|
|
157
|
+
year: "numeric",
|
|
158
|
+
...(timeZone ? { timeZone } : {}),
|
|
159
|
+
});
|
|
160
|
+
return (iso) => format.format(new Date(iso)).replace(/\s*ะณ\.$/, "");
|
|
161
|
+
};
|
|
162
|
+
const reactionLine = ({ counts, mine }) => {
|
|
163
|
+
const shown = counts.map(({ reaction, count }) => `${singleLine(reaction)} ${count}`).join(" ");
|
|
164
|
+
return mine ? `${shown} (you: ${singleLine(mine)})` : shown;
|
|
165
|
+
};
|
|
166
|
+
const editedAt = (message, options) => {
|
|
167
|
+
const edited = message.editedAt ?? message.timestamp;
|
|
168
|
+
const time = timeFormatter(options)(edited);
|
|
169
|
+
const day = dayFormatter(options);
|
|
170
|
+
return day(edited) === day(message.timestamp) ? time : `${day(edited)} ${time}`;
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/rendering/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type RunMetadata } from "@wirecat/cli-messaging/cli";
|
|
2
|
+
import type { SendEntry } from "@wirecat/cli-messaging/sends";
|
|
3
|
+
import type { Diagnosis } from "./diagnose.js";
|
|
4
|
+
/** Where problem reports go (`NEED-267`, changed by the owner to issues). Anybody can read them there. */
|
|
5
|
+
export declare const REPORT_URL = "https://github.com/WireCatLabs/max-cli/issues/new";
|
|
6
|
+
export interface Report {
|
|
7
|
+
createdAt: string;
|
|
8
|
+
version: string;
|
|
9
|
+
runtime: string;
|
|
10
|
+
platform: string;
|
|
11
|
+
arch: string;
|
|
12
|
+
profile: string;
|
|
13
|
+
doctor: Diagnosis;
|
|
14
|
+
/** The run the report is about: the one asked for, or the newest that failed. */
|
|
15
|
+
run: {
|
|
16
|
+
metadata: RunMetadata;
|
|
17
|
+
events: Record<string, unknown>[];
|
|
18
|
+
} | null;
|
|
19
|
+
/** The newest write actions โ outcomes and ids, never text (`src/sends/journal.ts`). */
|
|
20
|
+
sends: SendEntry[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* **Everything a report holds is already free of content** โ the run log and the send journal are
|
|
24
|
+
* built that way. Two things are added: chat and message ids become labels, and the home directory
|
|
25
|
+
* is hidden, since the doctor's paths name the person's account on this machine.
|
|
26
|
+
*/
|
|
27
|
+
export declare const buildReport: ({ profile, doctor, runsDir, runId, sends, now, home, }: {
|
|
28
|
+
profile: string;
|
|
29
|
+
doctor: Diagnosis;
|
|
30
|
+
runsDir: string;
|
|
31
|
+
runId?: string;
|
|
32
|
+
sends: SendEntry[];
|
|
33
|
+
now?: Date;
|
|
34
|
+
home?: string;
|
|
35
|
+
}) => Report;
|
|
36
|
+
/**
|
|
37
|
+
* A new issue with its title and body filled in, through GitHub's `title` and `body` query
|
|
38
|
+
* parameters. The file cannot travel in a link; the person drags it in. **Only the file's name**
|
|
39
|
+
* goes into the body โ the issue is public, and a full path names the account on this machine.
|
|
40
|
+
*/
|
|
41
|
+
export declare const issueUrlFor: (report: Report, file: string) => string;
|
|
42
|
+
export declare const reportFileName: (now: Date) => string;
|
|
43
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,WAAW,EAAuB,MAAM,4BAA4B,CAAA;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,0GAA0G;AAC1G,eAAO,MAAM,UAAU,sDAAsD,CAAA;AAI7E,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,SAAS,CAAA;IACjB,iFAAiF;IACjF,GAAG,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAAE,GAAG,IAAI,CAAA;IACxE,wFAAwF;IACxF,KAAK,EAAE,SAAS,EAAE,CAAA;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,2DAQrB;IACD,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,KAAG,MAuBH,CAAA;AAyCD;;;;GAIG;AACH,eAAO,MAAM,WAAW,WAAY,MAAM,QAAQ,MAAM,KAAG,MAkB1D,CAAA;AAED,eAAO,MAAM,cAAc,QAAS,IAAI,KAAG,MAIR,CAAA"}
|