@wirecat/cli-core 0.270.0 → 0.272.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/dist/cli/bot/admins.d.ts.map +1 -1
- package/dist/cli/bot/admins.js +5 -5
- package/dist/cli/bot/admins.js.map +1 -1
- package/dist/cli/bot/api.d.ts.map +1 -1
- package/dist/cli/bot/api.js +5 -1
- package/dist/cli/bot/api.js.map +1 -1
- package/dist/cli/bot/command.d.ts.map +1 -1
- package/dist/cli/bot/command.js +15 -18
- package/dist/cli/bot/command.js.map +1 -1
- package/dist/cli/bot/mcp.d.ts.map +1 -1
- package/dist/cli/bot/mcp.js +4 -2
- package/dist/cli/bot/mcp.js.map +1 -1
- package/dist/cli/bot/messages.d.ts.map +1 -1
- package/dist/cli/bot/messages.js +7 -6
- package/dist/cli/bot/messages.js.map +1 -1
- package/dist/cli/bot/moderation.d.ts.map +1 -1
- package/dist/cli/bot/moderation.js +5 -5
- package/dist/cli/bot/moderation.js.map +1 -1
- package/dist/cli/bot/people.d.ts.map +1 -1
- package/dist/cli/bot/people.js +6 -4
- package/dist/cli/bot/people.js.map +1 -1
- package/dist/cli/bot/port.d.ts +1 -1
- package/dist/cli/bot/port.d.ts.map +1 -1
- package/dist/cli/bot/setup.d.ts.map +1 -1
- package/dist/cli/bot/setup.js +8 -9
- package/dist/cli/bot/setup.js.map +1 -1
- package/dist/cli/bot/store.d.ts.map +1 -1
- package/dist/cli/bot/store.js +3 -2
- package/dist/cli/bot/store.js.map +1 -1
- package/dist/cli/bot/watch.d.ts.map +1 -1
- package/dist/cli/bot/watch.js +3 -1
- package/dist/cli/bot/watch.js.map +1 -1
- package/dist/cli/command-contract.d.ts +2 -2
- package/dist/cli/command-contract.d.ts.map +1 -1
- package/dist/cli/command-contract.js +2 -4
- package/dist/cli/command-contract.js.map +1 -1
- package/dist/cli/commands-command.d.ts +1 -1
- package/dist/cli/commands-command.d.ts.map +1 -1
- package/dist/cli/commands-command.js +8 -7
- package/dist/cli/commands-command.js.map +1 -1
- package/dist/cli/config-command.d.ts.map +1 -1
- package/dist/cli/config-command.js +4 -4
- package/dist/cli/config-command.js.map +1 -1
- package/dist/cli/effects.d.ts +20 -0
- package/dist/cli/effects.d.ts.map +1 -0
- package/dist/cli/effects.js +28 -0
- package/dist/cli/effects.js.map +1 -0
- package/dist/cli/envelope.d.ts +68 -23
- package/dist/cli/envelope.d.ts.map +1 -1
- package/dist/cli/envelope.js +36 -10
- package/dist/cli/envelope.js.map +1 -1
- package/dist/cli/index.d.ts +7 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +6 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/messenger/account-command.d.ts.map +1 -1
- package/dist/cli/messenger/account-command.js +4 -3
- package/dist/cli/messenger/account-command.js.map +1 -1
- package/dist/cli/messenger/account-sessions-command.d.ts.map +1 -1
- package/dist/cli/messenger/account-sessions-command.js +4 -3
- package/dist/cli/messenger/account-sessions-command.js.map +1 -1
- package/dist/cli/messenger/admin-commands.d.ts.map +1 -1
- package/dist/cli/messenger/admin-commands.js +15 -15
- package/dist/cli/messenger/admin-commands.js.map +1 -1
- package/dist/cli/messenger/admin-contacts-command.d.ts.map +1 -1
- package/dist/cli/messenger/admin-contacts-command.js +4 -3
- package/dist/cli/messenger/admin-contacts-command.js.map +1 -1
- package/dist/cli/messenger/admin-folders-command.d.ts.map +1 -1
- package/dist/cli/messenger/admin-folders-command.js +8 -7
- package/dist/cli/messenger/admin-folders-command.js.map +1 -1
- package/dist/cli/messenger/admin-moderation-command.d.ts.map +1 -1
- package/dist/cli/messenger/admin-moderation-command.js +5 -5
- package/dist/cli/messenger/admin-moderation-command.js.map +1 -1
- package/dist/cli/messenger/admin-statistics-command.d.ts.map +1 -1
- package/dist/cli/messenger/admin-statistics-command.js +5 -1
- package/dist/cli/messenger/admin-statistics-command.js.map +1 -1
- package/dist/cli/messenger/archive-commands.d.ts.map +1 -1
- package/dist/cli/messenger/archive-commands.js +5 -3
- package/dist/cli/messenger/archive-commands.js.map +1 -1
- package/dist/cli/messenger/attachments-command.d.ts.map +1 -1
- package/dist/cli/messenger/attachments-command.js +6 -5
- package/dist/cli/messenger/attachments-command.js.map +1 -1
- package/dist/cli/messenger/backfill-command.d.ts.map +1 -1
- package/dist/cli/messenger/backfill-command.js +7 -9
- package/dist/cli/messenger/backfill-command.js.map +1 -1
- package/dist/cli/messenger/chats-bots-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-bots-command.js +3 -2
- package/dist/cli/messenger/chats-bots-command.js.map +1 -1
- package/dist/cli/messenger/chats-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-command.js +6 -7
- package/dist/cli/messenger/chats-command.js.map +1 -1
- package/dist/cli/messenger/chats-documents-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-documents-command.js +3 -1
- package/dist/cli/messenger/chats-documents-command.js.map +1 -1
- package/dist/cli/messenger/chats-members-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-members-command.js +7 -6
- package/dist/cli/messenger/chats-members-command.js.map +1 -1
- package/dist/cli/messenger/chats-read-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-read-command.js +2 -1
- package/dist/cli/messenger/chats-read-command.js.map +1 -1
- package/dist/cli/messenger/chats-stats-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-stats-command.js +2 -1
- package/dist/cli/messenger/chats-stats-command.js.map +1 -1
- package/dist/cli/messenger/chats-tracking-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-tracking-command.js +5 -6
- package/dist/cli/messenger/chats-tracking-command.js.map +1 -1
- package/dist/cli/messenger/complete-command.d.ts.map +1 -1
- package/dist/cli/messenger/complete-command.js +3 -2
- package/dist/cli/messenger/complete-command.js.map +1 -1
- package/dist/cli/messenger/contacts-command.d.ts.map +1 -1
- package/dist/cli/messenger/contacts-command.js +12 -18
- package/dist/cli/messenger/contacts-command.js.map +1 -1
- package/dist/cli/messenger/context.d.ts +1 -1
- package/dist/cli/messenger/context.d.ts.map +1 -1
- package/dist/cli/messenger/context.js.map +1 -1
- package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
- package/dist/cli/messenger/conversations-command.js +19 -29
- package/dist/cli/messenger/conversations-command.js.map +1 -1
- package/dist/cli/messenger/counters-command.d.ts.map +1 -1
- package/dist/cli/messenger/counters-command.js +3 -2
- package/dist/cli/messenger/counters-command.js.map +1 -1
- package/dist/cli/messenger/doctor-command.d.ts.map +1 -1
- package/dist/cli/messenger/doctor-command.js +7 -4
- package/dist/cli/messenger/doctor-command.js.map +1 -1
- package/dist/cli/messenger/download-command.d.ts.map +1 -1
- package/dist/cli/messenger/download-command.js +3 -2
- package/dist/cli/messenger/download-command.js.map +1 -1
- package/dist/cli/messenger/flood-command.d.ts.map +1 -1
- package/dist/cli/messenger/flood-command.js +3 -1
- package/dist/cli/messenger/flood-command.js.map +1 -1
- package/dist/cli/messenger/flooded.d.ts +1 -1
- package/dist/cli/messenger/flooded.d.ts.map +1 -1
- package/dist/cli/messenger/flooded.js +1 -1
- package/dist/cli/messenger/flooded.js.map +1 -1
- package/dist/cli/messenger/gaps-command.d.ts.map +1 -1
- package/dist/cli/messenger/gaps-command.js +4 -4
- package/dist/cli/messenger/gaps-command.js.map +1 -1
- package/dist/cli/messenger/guard-commands.d.ts.map +1 -1
- package/dist/cli/messenger/guard-commands.js +6 -6
- package/dist/cli/messenger/guard-commands.js.map +1 -1
- package/dist/cli/messenger/images-command.d.ts.map +1 -1
- package/dist/cli/messenger/images-command.js +3 -2
- package/dist/cli/messenger/images-command.js.map +1 -1
- package/dist/cli/messenger/inbox.d.ts.map +1 -1
- package/dist/cli/messenger/inbox.js +6 -1
- package/dist/cli/messenger/inbox.js.map +1 -1
- package/dist/cli/messenger/mcp-command.d.ts.map +1 -1
- package/dist/cli/messenger/mcp-command.js +5 -4
- package/dist/cli/messenger/mcp-command.js.map +1 -1
- package/dist/cli/messenger/mentions-command.d.ts.map +1 -1
- package/dist/cli/messenger/mentions-command.js +23 -12
- package/dist/cli/messenger/mentions-command.js.map +1 -1
- package/dist/cli/messenger/message-items.d.ts +1 -1
- package/dist/cli/messenger/message-items.d.ts.map +1 -1
- package/dist/cli/messenger/message-writes.d.ts +5 -6
- package/dist/cli/messenger/message-writes.d.ts.map +1 -1
- package/dist/cli/messenger/message-writes.js +7 -8
- package/dist/cli/messenger/message-writes.js.map +1 -1
- package/dist/cli/messenger/messages-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-command.js +5 -5
- package/dist/cli/messenger/messages-command.js.map +1 -1
- package/dist/cli/messenger/messages-comments-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-comments-command.js +3 -1
- package/dist/cli/messenger/messages-comments-command.js.map +1 -1
- package/dist/cli/messenger/messages-delete-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-delete-command.js +2 -1
- package/dist/cli/messenger/messages-delete-command.js.map +1 -1
- package/dist/cli/messenger/messages-edit-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-edit-command.js +2 -1
- package/dist/cli/messenger/messages-edit-command.js.map +1 -1
- package/dist/cli/messenger/messages-evidence-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-evidence-command.js +3 -1
- package/dist/cli/messenger/messages-evidence-command.js.map +1 -1
- package/dist/cli/messenger/messages-forward-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-forward-command.js +4 -3
- package/dist/cli/messenger/messages-forward-command.js.map +1 -1
- package/dist/cli/messenger/messages-link-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-link-command.js +2 -1
- package/dist/cli/messenger/messages-link-command.js.map +1 -1
- package/dist/cli/messenger/messages-pin-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-pin-command.js +3 -2
- package/dist/cli/messenger/messages-pin-command.js.map +1 -1
- package/dist/cli/messenger/messages-press-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-press-command.js +2 -1
- package/dist/cli/messenger/messages-press-command.js.map +1 -1
- package/dist/cli/messenger/messages-scheduled-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-scheduled-command.js +3 -2
- package/dist/cli/messenger/messages-scheduled-command.js.map +1 -1
- package/dist/cli/messenger/messages-search-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-search-command.js +3 -0
- package/dist/cli/messenger/messages-search-command.js.map +1 -1
- package/dist/cli/messenger/messages-send-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-send-command.js +4 -3
- package/dist/cli/messenger/messages-send-command.js.map +1 -1
- package/dist/cli/messenger/messages-stats-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-stats-command.js +2 -1
- package/dist/cli/messenger/messages-stats-command.js.map +1 -1
- package/dist/cli/messenger/metadata-command.d.ts.map +1 -1
- package/dist/cli/messenger/metadata-command.js +3 -3
- package/dist/cli/messenger/metadata-command.js.map +1 -1
- package/dist/cli/messenger/models-command.d.ts.map +1 -1
- package/dist/cli/messenger/models-command.js +9 -9
- package/dist/cli/messenger/models-command.js.map +1 -1
- package/dist/cli/messenger/observed.d.ts +1 -1
- package/dist/cli/messenger/observed.d.ts.map +1 -1
- package/dist/cli/messenger/observed.js +1 -1
- package/dist/cli/messenger/observed.js.map +1 -1
- package/dist/cli/messenger/official-stats-command.d.ts.map +1 -1
- package/dist/cli/messenger/official-stats-command.js +3 -2
- package/dist/cli/messenger/official-stats-command.js.map +1 -1
- package/dist/cli/messenger/polls-command.d.ts.map +1 -1
- package/dist/cli/messenger/polls-command.js +9 -9
- package/dist/cli/messenger/polls-command.js.map +1 -1
- package/dist/cli/messenger/private-people-command.d.ts.map +1 -1
- package/dist/cli/messenger/private-people-command.js +10 -6
- package/dist/cli/messenger/private-people-command.js.map +1 -1
- package/dist/cli/messenger/rankings-command.d.ts.map +1 -1
- package/dist/cli/messenger/rankings-command.js +3 -2
- package/dist/cli/messenger/rankings-command.js.map +1 -1
- package/dist/cli/messenger/reactions-command.d.ts.map +1 -1
- package/dist/cli/messenger/reactions-command.js +3 -2
- package/dist/cli/messenger/reactions-command.js.map +1 -1
- package/dist/cli/messenger/records-command.d.ts.map +1 -1
- package/dist/cli/messenger/records-command.js +12 -13
- package/dist/cli/messenger/records-command.js.map +1 -1
- package/dist/cli/messenger/replies-command.d.ts.map +1 -1
- package/dist/cli/messenger/replies-command.js +8 -7
- package/dist/cli/messenger/replies-command.js.map +1 -1
- package/dist/cli/messenger/replies-consents-command.d.ts.map +1 -1
- package/dist/cli/messenger/replies-consents-command.js +4 -4
- package/dist/cli/messenger/replies-consents-command.js.map +1 -1
- package/dist/cli/messenger/replies-edit-command.d.ts.map +1 -1
- package/dist/cli/messenger/replies-edit-command.js +5 -4
- package/dist/cli/messenger/replies-edit-command.js.map +1 -1
- package/dist/cli/messenger/retention-command.d.ts.map +1 -1
- package/dist/cli/messenger/retention-command.js +2 -1
- package/dist/cli/messenger/retention-command.js.map +1 -1
- package/dist/cli/messenger/review.d.ts.map +1 -1
- package/dist/cli/messenger/review.js +6 -1
- package/dist/cli/messenger/review.js.map +1 -1
- package/dist/cli/messenger/schedule-command.d.ts.map +1 -1
- package/dist/cli/messenger/schedule-command.js +8 -12
- package/dist/cli/messenger/schedule-command.js.map +1 -1
- package/dist/cli/messenger/search-answers.d.ts +1 -1
- package/dist/cli/messenger/search-answers.d.ts.map +1 -1
- package/dist/cli/messenger/search-answers.js +5 -3
- package/dist/cli/messenger/search-answers.js.map +1 -1
- package/dist/cli/messenger/search-command.d.ts.map +1 -1
- package/dist/cli/messenger/search-command.js +3 -2
- package/dist/cli/messenger/search-command.js.map +1 -1
- package/dist/cli/messenger/searches-command.d.ts.map +1 -1
- package/dist/cli/messenger/searches-command.js +9 -7
- package/dist/cli/messenger/searches-command.js.map +1 -1
- package/dist/cli/messenger/serve-command.d.ts.map +1 -1
- package/dist/cli/messenger/serve-command.js +3 -1
- package/dist/cli/messenger/serve-command.js.map +1 -1
- package/dist/cli/messenger/serve-notice.js +5 -5
- package/dist/cli/messenger/serve-notice.js.map +1 -1
- package/dist/cli/messenger/server-command.d.ts.map +1 -1
- package/dist/cli/messenger/server-command.js +9 -14
- package/dist/cli/messenger/server-command.js.map +1 -1
- package/dist/cli/messenger/stats-answers.d.ts.map +1 -1
- package/dist/cli/messenger/stats-answers.js +1 -0
- package/dist/cli/messenger/stats-answers.js.map +1 -1
- package/dist/cli/messenger/stats-command.d.ts.map +1 -1
- package/dist/cli/messenger/stats-command.js +2 -1
- package/dist/cli/messenger/stats-command.js.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.js +12 -10
- package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
- package/dist/cli/messenger/stored.d.ts +1 -1
- package/dist/cli/messenger/stored.d.ts.map +1 -1
- package/dist/cli/messenger/stored.js +1 -1
- package/dist/cli/messenger/stored.js.map +1 -1
- package/dist/cli/messenger/tags-command.d.ts.map +1 -1
- package/dist/cli/messenger/tags-command.js +5 -6
- package/dist/cli/messenger/tags-command.js.map +1 -1
- package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
- package/dist/cli/messenger/tasks-command.js +9 -15
- package/dist/cli/messenger/tasks-command.js.map +1 -1
- package/dist/cli/messenger/topics-command.d.ts.map +1 -1
- package/dist/cli/messenger/topics-command.js +12 -12
- package/dist/cli/messenger/topics-command.js.map +1 -1
- package/dist/cli/messenger/transcribe-command.d.ts.map +1 -1
- package/dist/cli/messenger/transcribe-command.js +3 -2
- package/dist/cli/messenger/transcribe-command.js.map +1 -1
- package/dist/cli/messenger/watch-command.d.ts +1 -1
- package/dist/cli/messenger/watch-command.d.ts.map +1 -1
- package/dist/cli/messenger/watch-command.js +3 -1
- package/dist/cli/messenger/watch-command.js.map +1 -1
- package/dist/cli/preview.d.ts.map +1 -1
- package/dist/cli/preview.js +3 -1
- package/dist/cli/preview.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +10 -2
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/reasons.d.ts +1 -1
- package/dist/cli/reasons.d.ts.map +1 -1
- package/dist/cli/reasons.js +2 -1
- package/dist/cli/reasons.js.map +1 -1
- package/dist/cli/runs/command.d.ts.map +1 -1
- package/dist/cli/runs/command.js +7 -9
- package/dist/cli/runs/command.js.map +1 -1
- package/dist/cli/runs/log-events.d.ts +10 -0
- package/dist/cli/runs/log-events.d.ts.map +1 -0
- package/dist/cli/runs/log-events.js +31 -0
- package/dist/cli/runs/log-events.js.map +1 -0
- package/dist/cli/runs/recording.d.ts +1 -1
- package/dist/cli/runs/recording.d.ts.map +1 -1
- package/dist/cli/runs/recording.js +6 -4
- package/dist/cli/runs/recording.js.map +1 -1
- package/dist/cli/runs/scope.d.ts +5 -0
- package/dist/cli/runs/scope.d.ts.map +1 -1
- package/dist/cli/runs/scope.js +7 -0
- package/dist/cli/runs/scope.js.map +1 -1
- package/dist/cli/skill-command.d.ts.map +1 -1
- package/dist/cli/skill-command.js +12 -4
- package/dist/cli/skill-command.js.map +1 -1
- package/dist/cli/steps.d.ts +21 -4
- package/dist/cli/steps.d.ts.map +1 -1
- package/dist/cli/steps.js +20 -4
- package/dist/cli/steps.js.map +1 -1
- package/dist/cli/upgrade-command.d.ts.map +1 -1
- package/dist/cli/upgrade-command.js +3 -1
- package/dist/cli/upgrade-command.js.map +1 -1
- package/dist/domain/calendar.d.ts +2 -0
- package/dist/domain/calendar.d.ts.map +1 -0
- package/dist/domain/calendar.js +14 -0
- package/dist/domain/calendar.js.map +1 -0
- package/dist/domain/mentions.d.ts +1 -1
- package/dist/domain/mentions.d.ts.map +1 -1
- package/dist/domain/mentions.js +8 -2
- package/dist/domain/mentions.js.map +1 -1
- package/dist/domain/person-names.d.ts +30 -0
- package/dist/domain/person-names.d.ts.map +1 -0
- package/dist/domain/person-names.js +120 -0
- package/dist/domain/person-names.js.map +1 -0
- package/dist/embeddings/models.d.ts +2 -0
- package/dist/embeddings/models.d.ts.map +1 -1
- package/dist/embeddings/models.js +2 -0
- package/dist/embeddings/models.js.map +1 -1
- package/dist/entities/index.d.ts +9 -3
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/kit/contract.d.ts +1 -1
- package/dist/kit/contract.d.ts.map +1 -1
- package/dist/kit/contract.js +1 -1
- package/dist/kit/contract.js.map +1 -1
- package/dist/kit/fake.d.ts +1 -1
- package/dist/kit/fake.d.ts.map +1 -1
- package/dist/kit/fake.js +3 -2
- package/dist/kit/fake.js.map +1 -1
- package/dist/mcp/instructions.js +1 -1
- package/dist/mcp/instructions.js.map +1 -1
- package/dist/mcp/resources.js +1 -1
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +3 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +1 -1
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/tool.d.ts +10 -3
- package/dist/mcp/tool.d.ts.map +1 -1
- package/dist/mcp/tool.js +24 -10
- package/dist/mcp/tool.js.map +1 -1
- package/dist/mcp/tools/account.js +1 -1
- package/dist/mcp/tools/account.js.map +1 -1
- package/dist/mcp/tools/admin.js.map +1 -1
- package/dist/mcp/tools/attachments.d.ts.map +1 -1
- package/dist/mcp/tools/attachments.js +2 -0
- package/dist/mcp/tools/attachments.js.map +1 -1
- package/dist/mcp/tools/contacts.d.ts.map +1 -1
- package/dist/mcp/tools/contacts.js +3 -2
- package/dist/mcp/tools/contacts.js.map +1 -1
- package/dist/mcp/tools/folders.js.map +1 -1
- package/dist/mcp/tools/messages-actions.js +3 -3
- package/dist/mcp/tools/messages-actions.js.map +1 -1
- package/dist/mcp/tools/messages-photo.js +1 -1
- package/dist/mcp/tools/messages-photo.js.map +1 -1
- package/dist/mcp/tools/messages-send.js +3 -3
- package/dist/mcp/tools/messages-send.js.map +1 -1
- package/dist/mcp/tools/messages.d.ts.map +1 -1
- package/dist/mcp/tools/messages.js +3 -1
- package/dist/mcp/tools/messages.js.map +1 -1
- package/dist/mcp/tools/polls.js +4 -4
- package/dist/mcp/tools/polls.js.map +1 -1
- package/dist/mcp/tools/rankings.js +1 -1
- package/dist/mcp/tools/rankings.js.map +1 -1
- package/dist/mcp/tools/search-tools.js +5 -5
- package/dist/mcp/tools/search-tools.js.map +1 -1
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +1 -1
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/mcp/tools/store.d.ts.map +1 -1
- package/dist/mcp/tools/store.js +2 -0
- package/dist/mcp/tools/store.js.map +1 -1
- package/dist/mcp/tools/topics.js +4 -4
- package/dist/mcp/tools/topics.js.map +1 -1
- package/dist/meetings/answers.d.ts +7 -2
- package/dist/meetings/answers.d.ts.map +1 -1
- package/dist/meetings/answers.js +7 -2
- package/dist/meetings/answers.js.map +1 -1
- package/dist/meetings/cli/passage.js +1 -1
- package/dist/meetings/cli/passage.js.map +1 -1
- package/dist/meetings/cli/project-evidence.js +1 -1
- package/dist/meetings/cli/project-evidence.js.map +1 -1
- package/dist/meetings/cli/search.d.ts.map +1 -1
- package/dist/meetings/cli/search.js +6 -2
- package/dist/meetings/cli/search.js.map +1 -1
- package/dist/meetings/index.d.ts +2 -0
- package/dist/meetings/index.d.ts.map +1 -1
- package/dist/meetings/index.js +1 -0
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/mcp/index.d.ts +13 -2
- package/dist/meetings/mcp/index.d.ts.map +1 -1
- package/dist/meetings/mcp/index.js +1 -1
- package/dist/meetings/mcp/index.js.map +1 -1
- package/dist/meetings/mcp/passage.d.ts +13 -2
- package/dist/meetings/mcp/passage.d.ts.map +1 -1
- package/dist/meetings/mcp/passage.js +1 -1
- package/dist/meetings/mcp/passage.js.map +1 -1
- package/dist/meetings/mcp/project-evidence.d.ts +13 -2
- package/dist/meetings/mcp/project-evidence.d.ts.map +1 -1
- package/dist/meetings/mcp/project-evidence.js +1 -1
- package/dist/meetings/mcp/project-evidence.js.map +1 -1
- package/dist/meetings/mcp/search.d.ts +13 -2
- package/dist/meetings/mcp/search.d.ts.map +1 -1
- package/dist/meetings/mcp/search.js +1 -1
- package/dist/meetings/mcp/search.js.map +1 -1
- package/dist/meetings/project-evidence-answer.d.ts +9 -3
- package/dist/meetings/project-evidence-answer.d.ts.map +1 -1
- package/dist/meetings/project-evidence-answer.js +6 -1
- package/dist/meetings/project-evidence-answer.js.map +1 -1
- package/dist/meetings/reads.d.ts +11 -3
- package/dist/meetings/reads.d.ts.map +1 -1
- package/dist/meetings/reads.js +2 -2
- package/dist/meetings/reads.js.map +1 -1
- package/dist/meetings/upcoming-types.d.ts +55 -0
- package/dist/meetings/upcoming-types.d.ts.map +1 -0
- package/dist/meetings/upcoming-types.js +2 -0
- package/dist/meetings/upcoming-types.js.map +1 -0
- package/dist/meetings/upcoming-validation.d.ts +5 -0
- package/dist/meetings/upcoming-validation.d.ts.map +1 -0
- package/dist/meetings/upcoming-validation.js +78 -0
- package/dist/meetings/upcoming-validation.js.map +1 -0
- package/dist/meetings/upcoming.d.ts +7 -0
- package/dist/meetings/upcoming.d.ts.map +1 -0
- package/dist/meetings/upcoming.js +72 -0
- package/dist/meetings/upcoming.js.map +1 -0
- package/dist/moderation/check.d.ts +1 -1
- package/dist/moderation/check.d.ts.map +1 -1
- package/dist/parity/deep.js +1 -1
- package/dist/parity/manifest.js +1 -1
- package/dist/parity/manifest.js.map +1 -1
- package/dist/{cli/messenger/port.d.ts → ports/messenger.d.ts} +7 -7
- package/dist/ports/messenger.d.ts.map +1 -0
- package/dist/{cli/messenger/port.js → ports/messenger.js} +1 -1
- package/dist/ports/messenger.js.map +1 -0
- package/dist/search/account-list.d.ts +3 -0
- package/dist/search/account-list.d.ts.map +1 -1
- package/dist/search/account-list.js +3 -1
- package/dist/search/account-list.js.map +1 -1
- package/dist/search/lucene/registry.d.ts.map +1 -1
- package/dist/search/lucene/registry.js +15 -0
- package/dist/search/lucene/registry.js.map +1 -1
- package/dist/sends/buttons.d.ts +1 -1
- package/dist/sends/buttons.d.ts.map +1 -1
- package/dist/sends/buttons.js +1 -1
- package/dist/sends/buttons.js.map +1 -1
- package/dist/sends/guard.js +2 -2
- package/dist/sends/guard.js.map +1 -1
- package/dist/sends/guarded.d.ts.map +1 -1
- package/dist/sends/guarded.js +5 -2
- package/dist/sends/guarded.js.map +1 -1
- package/dist/sends/index.d.ts +1 -1
- package/dist/sends/index.d.ts.map +1 -1
- package/dist/sends/index.js +1 -1
- package/dist/sends/index.js.map +1 -1
- package/dist/sends/journal.d.ts.map +1 -1
- package/dist/sends/journal.js +7 -3
- package/dist/sends/journal.js.map +1 -1
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +3 -0
- package/dist/sends/permissions.js.map +1 -1
- package/dist/sends/polls.d.ts +1 -1
- package/dist/sends/polls.d.ts.map +1 -1
- package/dist/sends/polls.js +1 -1
- package/dist/sends/polls.js.map +1 -1
- package/dist/sends/send-as.d.ts +1 -1
- package/dist/sends/send-as.d.ts.map +1 -1
- package/dist/sends/send-as.js +1 -1
- package/dist/sends/send-as.js.map +1 -1
- package/dist/sends/upload.d.ts +18 -2
- package/dist/sends/upload.d.ts.map +1 -1
- package/dist/sends/upload.js +32 -10
- package/dist/sends/upload.js.map +1 -1
- package/dist/services/account.d.ts +1 -1
- package/dist/services/account.d.ts.map +1 -1
- package/dist/services/account.js +1 -1
- package/dist/services/account.js.map +1 -1
- package/dist/services/admin-statistics.js +1 -1
- package/dist/services/admin-statistics.js.map +1 -1
- package/dist/services/admin.d.ts.map +1 -1
- package/dist/services/admin.js +1 -1
- package/dist/services/admin.js.map +1 -1
- package/dist/services/archive-gaps.js +1 -1
- package/dist/services/archive-gaps.js.map +1 -1
- package/dist/services/archive.d.ts.map +1 -1
- package/dist/services/archive.js +2 -2
- package/dist/services/archive.js.map +1 -1
- package/dist/services/attachments.js +1 -1
- package/dist/services/attachments.js.map +1 -1
- package/dist/services/chat-documents.js +1 -1
- package/dist/services/chat-documents.js.map +1 -1
- package/dist/services/chat-stats.d.ts.map +1 -1
- package/dist/services/chat-stats.js +2 -2
- package/dist/services/chat-stats.js.map +1 -1
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +2 -2
- package/dist/services/chats.js.map +1 -1
- package/dist/services/conversations.js +1 -1
- package/dist/services/conversations.js.map +1 -1
- package/dist/services/deps.d.ts +1 -1
- package/dist/services/deps.d.ts.map +1 -1
- package/dist/services/embeddings-maintenance.d.ts +51 -0
- package/dist/services/embeddings-maintenance.d.ts.map +1 -0
- package/dist/services/embeddings-maintenance.js +309 -0
- package/dist/services/embeddings-maintenance.js.map +1 -0
- package/dist/services/embeddings-search.d.ts +4 -0
- package/dist/services/embeddings-search.d.ts.map +1 -0
- package/dist/services/embeddings-search.js +329 -0
- package/dist/services/embeddings-search.js.map +1 -0
- package/dist/services/embeddings.d.ts +5 -12
- package/dist/services/embeddings.d.ts.map +1 -1
- package/dist/services/embeddings.js +7 -630
- package/dist/services/embeddings.js.map +1 -1
- package/dist/services/evidence-read.js +1 -1
- package/dist/services/evidence-read.js.map +1 -1
- package/dist/services/file-download.d.ts +1 -1
- package/dist/services/file-download.d.ts.map +1 -1
- package/dist/services/folders.d.ts.map +1 -1
- package/dist/services/folders.js +1 -1
- package/dist/services/folders.js.map +1 -1
- package/dist/services/inbox.d.ts +1 -2
- package/dist/services/inbox.d.ts.map +1 -1
- package/dist/services/inbox.js +2 -3
- package/dist/services/inbox.js.map +1 -1
- package/dist/services/index.d.ts +7 -3
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +5 -2
- package/dist/services/index.js.map +1 -1
- package/dist/services/meeting-model.d.ts +1 -1
- package/dist/services/meeting-model.d.ts.map +1 -1
- package/dist/services/meeting-model.js +1 -2
- package/dist/services/meeting-model.js.map +1 -1
- package/dist/services/mentions.d.ts +4 -0
- package/dist/services/mentions.d.ts.map +1 -1
- package/dist/services/mentions.js +2 -2
- package/dist/services/mentions.js.map +1 -1
- package/dist/services/message-query-validation.d.ts +3 -0
- package/dist/services/message-query-validation.d.ts.map +1 -0
- package/dist/services/message-query-validation.js +14 -0
- package/dist/services/message-query-validation.js.map +1 -0
- package/dist/services/message-resolution.d.ts +36 -0
- package/dist/services/message-resolution.d.ts.map +1 -0
- package/dist/services/message-resolution.js +171 -0
- package/dist/services/message-resolution.js.map +1 -0
- package/dist/services/messages-archive-search.d.ts +24 -0
- package/dist/services/messages-archive-search.d.ts.map +1 -0
- package/dist/services/messages-archive-search.js +123 -0
- package/dist/services/messages-archive-search.js.map +1 -0
- package/dist/services/messages-search.d.ts +1 -2
- package/dist/services/messages-search.d.ts.map +1 -1
- package/dist/services/messages-search.js +2 -14
- package/dist/services/messages-search.js.map +1 -1
- package/dist/services/messages.d.ts +6 -51
- package/dist/services/messages.d.ts.map +1 -1
- package/dist/services/messages.js +10 -303
- package/dist/services/messages.js.map +1 -1
- package/dist/services/metadata.js +2 -2
- package/dist/services/metadata.js.map +1 -1
- package/dist/services/moderation.d.ts.map +1 -1
- package/dist/services/moderation.js +1 -1
- package/dist/services/moderation.js.map +1 -1
- package/dist/services/notes-search.d.ts.map +1 -1
- package/dist/services/notes-search.js +1 -2
- package/dist/services/notes-search.js.map +1 -1
- package/dist/services/people.d.ts.map +1 -1
- package/dist/services/people.js +3 -3
- package/dist/services/people.js.map +1 -1
- package/dist/services/pictures.d.ts +1 -1
- package/dist/services/pictures.d.ts.map +1 -1
- package/dist/services/pictures.js +2 -2
- package/dist/services/pictures.js.map +1 -1
- package/dist/services/rankings.d.ts.map +1 -1
- package/dist/services/rankings.js +1 -1
- package/dist/services/rankings.js.map +1 -1
- package/dist/services/retention.d.ts +26 -26
- package/dist/services/retention.d.ts.map +1 -1
- package/dist/services/retention.js +1 -1
- package/dist/services/retention.js.map +1 -1
- package/dist/services/search-all-meetings.d.ts.map +1 -1
- package/dist/services/search-all-meetings.js +18 -5
- package/dist/services/search-all-meetings.js.map +1 -1
- package/dist/services/search-all.d.ts +6 -4
- package/dist/services/search-all.d.ts.map +1 -1
- package/dist/services/search-all.js +2 -2
- package/dist/services/search-all.js.map +1 -1
- package/dist/services/search-catchup.d.ts +1 -1
- package/dist/services/search-catchup.d.ts.map +1 -1
- package/dist/services/search-catchup.js +2 -2
- package/dist/services/search-catchup.js.map +1 -1
- package/dist/services/search-record.d.ts +29 -0
- package/dist/services/search-record.d.ts.map +1 -0
- package/dist/services/search-record.js +20 -0
- package/dist/services/search-record.js.map +1 -0
- package/dist/services/search-refresh.d.ts +1 -1
- package/dist/services/search-refresh.d.ts.map +1 -1
- package/dist/services/search-refresh.js +2 -1
- package/dist/services/search-refresh.js.map +1 -1
- package/dist/services/searches.d.ts +2 -27
- package/dist/services/searches.d.ts.map +1 -1
- package/dist/services/searches.js +3 -19
- package/dist/services/searches.js.map +1 -1
- package/dist/services/server-search.d.ts.map +1 -1
- package/dist/services/server-search.js +1 -1
- package/dist/services/server-search.js.map +1 -1
- package/dist/services/tags.js +1 -1
- package/dist/services/tags.js.map +1 -1
- package/dist/services/tasks.js +1 -1
- package/dist/services/tasks.js.map +1 -1
- package/dist/services/topics.d.ts +0 -1
- package/dist/services/topics.d.ts.map +1 -1
- package/dist/services/topics.js +2 -2
- package/dist/services/topics.js.map +1 -1
- package/dist/speech/hearing.d.ts +1 -1
- package/dist/speech/hearing.d.ts.map +1 -1
- package/dist/speech/transcribe.d.ts +1 -1
- package/dist/speech/transcribe.d.ts.map +1 -1
- package/dist/speech/transcribe.js +1 -1
- package/dist/speech/transcribe.js.map +1 -1
- package/dist/store/sqlite/lucene.d.ts.map +1 -1
- package/dist/store/sqlite/lucene.js +29 -0
- package/dist/store/sqlite/lucene.js.map +1 -1
- package/dist/store/sqlite/meeting-hit-index.js +1 -1
- package/dist/store/sqlite/meeting-hit-index.js.map +1 -1
- package/dist/store/sqlite/meeting-hit-search.js +1 -1
- package/dist/store/sqlite/meeting-hit-search.js.map +1 -1
- package/dist/store/sqlite/meeting-index-values.d.ts +19 -0
- package/dist/store/sqlite/meeting-index-values.d.ts.map +1 -0
- package/dist/store/sqlite/meeting-index-values.js +37 -0
- package/dist/store/sqlite/meeting-index-values.js.map +1 -0
- package/dist/store/sqlite/meetings.d.ts +0 -12
- package/dist/store/sqlite/meetings.d.ts.map +1 -1
- package/dist/store/sqlite/meetings.js +1 -35
- package/dist/store/sqlite/meetings.js.map +1 -1
- package/dist/store/sqlite/mentions.d.ts +3 -0
- package/dist/store/sqlite/mentions.d.ts.map +1 -1
- package/dist/store/sqlite/mentions.js +99 -22
- package/dist/store/sqlite/mentions.js.map +1 -1
- package/dist/store/sqlite/retention.d.ts.map +1 -1
- package/dist/store/sqlite/retention.js +1 -1
- package/dist/store/sqlite/retention.js.map +1 -1
- package/dist/store/store.d.ts +1 -0
- package/dist/store/store.d.ts.map +1 -1
- package/package.json +3 -3
- package/parity.json +8 -8
- package/dist/cli/messenger/port.d.ts.map +0 -1
- package/dist/cli/messenger/port.js.map +0 -1
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import type { Messenger } from "../cli/messenger/context.js";
|
|
2
|
-
import { type After, type Download, type Sent } from "../cli/messenger/port.js";
|
|
3
1
|
import type { DownloadedFile } from "../domain/attachments.js";
|
|
4
2
|
import { type MessageLink } from "../domain/message-link.js";
|
|
5
3
|
import type { Deletion, Discussion, Id, Message, Page, Provider, WindowedMessage } from "../domain/models.js";
|
|
4
|
+
import { type After, type Download, type Sent } from "../ports/messenger.js";
|
|
6
5
|
import type { SkippedSource } from "../search/account-list.js";
|
|
7
|
-
import {
|
|
6
|
+
import type { Match } from "../search/search.js";
|
|
8
7
|
import { type Operated } from "../sends/guarded.js";
|
|
9
8
|
import type { PermissionKey } from "../sends/permissions.js";
|
|
10
|
-
import type
|
|
11
|
-
import type {
|
|
12
|
-
import type { AccountKey, ChatCompleteness, MatchPlace, MessageStore, SearchScope, StoredHit, WordQuery } from "../store/store.js";
|
|
9
|
+
import { type Upload } from "../sends/upload.js";
|
|
10
|
+
import type { AccountKey, ChatCompleteness, MatchPlace, StoredHit } from "../store/store.js";
|
|
13
11
|
import { type ServiceDeps } from "./deps.js";
|
|
14
|
-
import {
|
|
12
|
+
import type { MessageStats, QueryMetadata, SearchCoverage, StatsGrouping } from "./messages-search.js";
|
|
15
13
|
import type { PictureHit } from "./pictures.js";
|
|
16
14
|
import { type SearchAllFound, type SearchAllRequest } from "./search-all.js";
|
|
17
15
|
import { type SearchAllIncludingMeetingsFound, type SearchAllWithMeetingsRequest } from "./search-all-meetings.js";
|
|
18
|
-
import {
|
|
16
|
+
import type { SearchKind } from "./search-kind.js";
|
|
19
17
|
import { type SearchRefreshed, type SyncOptions } from "./search-refresh.js";
|
|
20
18
|
import { type Backend, type HitSource, type ServerOptions, type ServerSearched } from "./server-search.js";
|
|
21
19
|
import { type ThreadContext, type ThreadOptions } from "./thread-context.js";
|
|
@@ -175,13 +173,6 @@ export interface Reacted {
|
|
|
175
173
|
}
|
|
176
174
|
/** max-cli's: many at once is what a ban for automation looks like. */
|
|
177
175
|
export declare const DELETE_AT_ONCE = 10;
|
|
178
|
-
/** How long a search may spend building the word index, then the stems, first (phase 2 plan S3: about 200 ms). */
|
|
179
|
-
export declare const SEARCH_FILL_MS = 200;
|
|
180
|
-
export declare const statsStore: (store: MessageStore, account: AccountKey, request: SearchQuery & {
|
|
181
|
-
by: StatsGrouping;
|
|
182
|
-
}, messenger?: Saved) => Promise<MessageStats>;
|
|
183
|
-
/** What a store search reads of the messenger: its saved-messages chat, and its command for a hint. */
|
|
184
|
-
type Saved = Partial<Pick<Messenger, "savedChatId" | "app">>;
|
|
185
176
|
/** Every write goes through the guard: asked before it goes, told after, on every outcome. */
|
|
186
177
|
export interface MessagesService {
|
|
187
178
|
/** The account these messages are read as, which names each one's locator. */
|
|
@@ -252,40 +243,4 @@ export interface MessagesService {
|
|
|
252
243
|
}): Promise<Operated<Reacted>>;
|
|
253
244
|
}
|
|
254
245
|
export declare const messagesService: (deps: ServiceDeps) => MessagesService;
|
|
255
|
-
export declare const validateSearchDialect: (request: SearchQuery) => void;
|
|
256
|
-
/** How deep a search pages: each page reads every hit before it again. */
|
|
257
|
-
export declare const MAX_SEARCH_OFFSET = 1000;
|
|
258
|
-
/**
|
|
259
|
-
* Search the store, one page at a time: `offset` skips the hits a page before held, and `nextOffset` says where
|
|
260
|
-
* the next page starts. A page is the hits up to `offset + limit` read again and cut, so deep pages cost more.
|
|
261
|
-
*/
|
|
262
|
-
export declare const searchStore: (store: MessageStore, account: AccountKey, request: SearchQuery, messenger?: Saved) => Promise<SearchFound>;
|
|
263
|
-
/**
|
|
264
|
-
* The chat a store read is about. Offline, a chat with nothing kept answers empty, as it always has;
|
|
265
|
-
* in store mode the store is the only source, so an empty answer would pass for "nothing was said".
|
|
266
|
-
*/
|
|
267
|
-
export declare const readChatId: (deps: ServiceDeps, reference: string, store: MessageStore, account: AccountKey) => Promise<string>;
|
|
268
|
-
/** A chat as typed, found among the stored chats the way an adapter finds it among its own. */
|
|
269
|
-
export declare const storedChatId: (messenger: Saved, reference: string, store: MessageStore, account: AccountKey) => Promise<string>;
|
|
270
|
-
/** `storedChatId`, among the chats of the account the store is bound to. */
|
|
271
|
-
export declare const chatIdIn: (messenger: Saved, reference: string, store: AccountStore) => Promise<string>;
|
|
272
|
-
/** A chat as `--chat` names it, in whichever of the accounts holds it — one of them, or it is an error. */
|
|
273
|
-
export declare const chatAmong: (messenger: Saved, store: MessageStore, accounts: AccountKey[], reference: string) => Promise<{
|
|
274
|
-
account: AccountKey;
|
|
275
|
-
chatId: Id;
|
|
276
|
-
}>;
|
|
277
|
-
/** A sender, through the names each messenger's accounts have seen; `from:` names one person. */
|
|
278
|
-
export declare const senderAmong: (store: MessageStore, accounts: AccountKey[], reference: string) => Promise<{
|
|
279
|
-
provider: string;
|
|
280
|
-
id: string;
|
|
281
|
-
}>;
|
|
282
|
-
/**
|
|
283
|
-
* The parsed query and the scope it names: the account the command runs as, or every account of the
|
|
284
|
-
* messenger `in:` or `--source` names. `chat:` resolves as `--chat` does, `from:` through the names
|
|
285
|
-
* `contacts search` uses, `from:me` as what the accounts sent — all inside the accounts chosen.
|
|
286
|
-
*/
|
|
287
|
-
export declare const scopeOf: (messenger: Saved, store: MessageStore, account: AccountKey, { text, chat, source, accounts: given, senders, kind, }: Pick<SearchQuery, "chat" | "source" | "accounts" | "senders" | "kind"> & {
|
|
288
|
-
text: string;
|
|
289
|
-
}) => Promise<[WordQuery, SearchScope]>;
|
|
290
|
-
export {};
|
|
291
246
|
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/services/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/services/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,24 @@
|
|
|
1
|
-
import { CliError
|
|
2
|
-
import { capability } from "../cli/messenger/port.js";
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
2
|
import { threadIdOf } from "../cli/messenger/thread.js";
|
|
4
3
|
import { validateFormattedText, visibleFormattedText } from "../domain/formatting.js";
|
|
5
|
-
import { formatLocator
|
|
4
|
+
import { formatLocator } from "../domain/locator.js";
|
|
6
5
|
import { messageLinkTarget, validatePermalink } from "../domain/message-link.js";
|
|
7
|
-
import {
|
|
8
|
-
import { inSource, parseQuery, sourceOf } from "../search/query.js";
|
|
9
|
-
import { search } from "../search/search.js";
|
|
6
|
+
import { capability } from "../ports/messenger.js";
|
|
10
7
|
import { codeOf, guardedWrite } from "../sends/guarded.js";
|
|
11
8
|
import { sendAsCheck } from "../sends/send-as.js";
|
|
12
9
|
import { newOperationId, newSendId } from "../sends/send-id.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
10
|
+
import { uploadSize } from "../sends/upload.js";
|
|
11
|
+
import { crossAccount, fromStore, PUSHED } from "./deps.js";
|
|
12
|
+
import { readChatId, storedChatId } from "./message-resolution.js";
|
|
13
|
+
import { accountOf, keyOf, searchStore, statsStore, topUp } from "./messages-archive-search.js";
|
|
16
14
|
import { searchAll } from "./search-all.js";
|
|
17
15
|
import { searchAllWithMeetings, } from "./search-all-meetings.js";
|
|
18
|
-
import {
|
|
16
|
+
import { searchRecordOf } from "./search-record.js";
|
|
19
17
|
import { refreshSearch, withRefresh } from "./search-refresh.js";
|
|
20
|
-
import { searchRecordOf } from "./searches.js";
|
|
21
18
|
import { searchServer, sourceKey, } from "./server-search.js";
|
|
22
19
|
import { readThreadContext, threadBounds } from "./thread-context.js";
|
|
23
20
|
/** max-cli's: many at once is what a ban for automation looks like. */
|
|
24
21
|
export const DELETE_AT_ONCE = 10;
|
|
25
|
-
/** How long a search may spend building the word index, then the stems, first (phase 2 plan S3: about 200 ms). */
|
|
26
|
-
export const SEARCH_FILL_MS = 200;
|
|
27
|
-
export const statsStore = async (store, account, request, messenger = {}) => {
|
|
28
|
-
const stop = Date.now() + SEARCH_FILL_MS;
|
|
29
|
-
await store.fillSearchIndex({ until: () => Date.now() >= stop });
|
|
30
|
-
await store.fillStems({ until: () => Date.now() >= stop });
|
|
31
|
-
return statsLucene(store, account, request, messenger);
|
|
32
|
-
};
|
|
33
22
|
export const messagesService = (deps) => {
|
|
34
23
|
const { guard } = deps;
|
|
35
24
|
const inStore = async (read) => read(await deps.store(), await deps.account());
|
|
@@ -287,7 +276,7 @@ export const messagesService = (deps) => {
|
|
|
287
276
|
...(origin === undefined ? {} : { origin }),
|
|
288
277
|
...(attachments.length === 0
|
|
289
278
|
? {}
|
|
290
|
-
: { attachments: attachments.map(({ kind,
|
|
279
|
+
: { attachments: attachments.map(({ kind, source }) => ({ kind, bytes: uploadSize(source) })) }),
|
|
291
280
|
};
|
|
292
281
|
try {
|
|
293
282
|
const done = await guardedWrite(guard, attempt, () => connection.send(chatId, text, {
|
|
@@ -310,7 +299,7 @@ export const messagesService = (deps) => {
|
|
|
310
299
|
catch (error) {
|
|
311
300
|
if (at !== undefined && codeOf(error) === "outcome_unknown") {
|
|
312
301
|
throw new CliError("outcome_unknown", "no answer — the message may have been scheduled. Look in `messages scheduled` before anything else; " +
|
|
313
|
-
"never send it again with --
|
|
302
|
+
"never send it again with --operation-id", { scheduled_for: at });
|
|
314
303
|
}
|
|
315
304
|
throw error;
|
|
316
305
|
}
|
|
@@ -379,22 +368,6 @@ export const messagesService = (deps) => {
|
|
|
379
368
|
},
|
|
380
369
|
};
|
|
381
370
|
};
|
|
382
|
-
const withThreads = async (store, found, request) => {
|
|
383
|
-
if (!request.thread)
|
|
384
|
-
return found;
|
|
385
|
-
const items = [];
|
|
386
|
-
for (const hit of found.items)
|
|
387
|
-
items.push({
|
|
388
|
-
...hit,
|
|
389
|
-
thread: await readThreadContext(store, accountOf(hit), hit.chatId, hit.id, {
|
|
390
|
-
before: request.context ?? 0,
|
|
391
|
-
after: request.context ?? 0,
|
|
392
|
-
...request.thread,
|
|
393
|
-
signal: request.signal,
|
|
394
|
-
}),
|
|
395
|
-
});
|
|
396
|
-
return { ...found, items };
|
|
397
|
-
};
|
|
398
371
|
/** The server answers for the account it runs as only; another account's message with the same ids is the archive's. */
|
|
399
372
|
const withServer = (found, account, server) => server
|
|
400
373
|
? {
|
|
@@ -407,272 +380,6 @@ const withServer = (found, account, server) => server
|
|
|
407
380
|
})),
|
|
408
381
|
}
|
|
409
382
|
: found;
|
|
410
|
-
export const validateSearchDialect = (request) => {
|
|
411
|
-
const { pattern } = request;
|
|
412
|
-
if (request.language !== undefined && !["lucene", "legacy"].includes(request.language))
|
|
413
|
-
throw new CliError("validation_error", "--language takes lucene or legacy");
|
|
414
|
-
if (pattern && (request.language === "lucene" || request.ast !== undefined || request.timezone !== undefined))
|
|
415
|
-
throw new CliError("validation_error", "--regex is legacy JavaScript mode; not with Lucene, AST or timezone");
|
|
416
|
-
if (request.language === "legacy" && (request.ast !== undefined || request.timezone !== undefined))
|
|
417
|
-
throw new CliError("validation_error", "AST and timezone require the Lucene language");
|
|
418
|
-
if (pattern && (request.source !== undefined || request.accounts !== undefined || request.senders !== undefined)) {
|
|
419
|
-
throw new CliError("validation_error", "--regex reads the account it runs as — not with --source, other accounts or senders");
|
|
420
|
-
}
|
|
421
|
-
};
|
|
422
|
-
/**
|
|
423
|
-
* `search messages` over a store, from the account given — or from `query.accounts`, which a caller such
|
|
424
|
-
* as a bot's search passes after checking it may read them.
|
|
425
|
-
*/
|
|
426
|
-
// A large file builds its word index a slice per search as well as in `store migrate` (NEED-453 A).
|
|
427
|
-
const topUp = async (store) => {
|
|
428
|
-
const stop = Date.now() + SEARCH_FILL_MS;
|
|
429
|
-
await store.fillSearchIndex({ until: () => Date.now() >= stop });
|
|
430
|
-
await store.fillStems({ until: () => Date.now() >= stop });
|
|
431
|
-
};
|
|
432
|
-
/** How deep a search pages: each page reads every hit before it again. */
|
|
433
|
-
export const MAX_SEARCH_OFFSET = 1000;
|
|
434
|
-
/**
|
|
435
|
-
* Search the store, one page at a time: `offset` skips the hits a page before held, and `nextOffset` says where
|
|
436
|
-
* the next page starts. A page is the hits up to `offset + limit` read again and cut, so deep pages cost more.
|
|
437
|
-
*/
|
|
438
|
-
export const searchStore = async (store, account, request, messenger = {}) => {
|
|
439
|
-
const offset = request.offset ?? 0;
|
|
440
|
-
if (!Number.isInteger(offset) || offset < 0 || offset > MAX_SEARCH_OFFSET)
|
|
441
|
-
throw new CliError("validation_error", `offset takes a whole number from 0 to ${MAX_SEARCH_OFFSET}`);
|
|
442
|
-
const found = await searchPage(store, account, { ...request, limit: request.limit + offset }, messenger);
|
|
443
|
-
return {
|
|
444
|
-
...found,
|
|
445
|
-
items: found.items.slice(offset),
|
|
446
|
-
...(found.hasMore && offset + request.limit <= MAX_SEARCH_OFFSET ? { nextOffset: offset + request.limit } : {}),
|
|
447
|
-
};
|
|
448
|
-
};
|
|
449
|
-
const searchPage = async (store, account, request, messenger) => {
|
|
450
|
-
const { text, pattern, chat, source, accounts, senders, limit, newest = false, context = 0 } = request;
|
|
451
|
-
if (request.signal?.aborted)
|
|
452
|
-
throw new CliError("validation_error", "search was aborted", { reason: "query.aborted", complete: false });
|
|
453
|
-
validateSearchDialect(request);
|
|
454
|
-
if (request.thread)
|
|
455
|
-
threadBounds(request.thread);
|
|
456
|
-
if (request.discover !== undefined && typeof request.discover !== "boolean")
|
|
457
|
-
throw new CliError("validation_error", "discover takes a boolean");
|
|
458
|
-
if (request.discover && (pattern || request.language === "legacy"))
|
|
459
|
-
throw new CliError("validation_error", "discovery requires Lucene text, without legacy or regex");
|
|
460
|
-
if (request.discover && request.backend === "server")
|
|
461
|
-
throw new CliError("validation_error", "discovery searches the local archive; use backend archive");
|
|
462
|
-
await topUp(store);
|
|
463
|
-
if (request.discover)
|
|
464
|
-
return withThreads(store, await searchDiscovery(store, account, request, messenger), request);
|
|
465
|
-
if (!pattern && (request.language === "lucene" || request.ast !== undefined))
|
|
466
|
-
return withThreads(store, await searchLucene(store, account, request, messenger), request);
|
|
467
|
-
const found = pattern
|
|
468
|
-
? {
|
|
469
|
-
...(await store.find({
|
|
470
|
-
pattern,
|
|
471
|
-
signal: request.signal,
|
|
472
|
-
account,
|
|
473
|
-
limit,
|
|
474
|
-
...(chat === undefined ? {} : { chatId: await storedChatId(messenger, chat, store, account) }),
|
|
475
|
-
})),
|
|
476
|
-
corrections: [],
|
|
477
|
-
wordsReady: (await store.searchIndexState())?.ready === true,
|
|
478
|
-
}
|
|
479
|
-
: await search(store, ...(await scopeOf(messenger, store, account, {
|
|
480
|
-
text: text ?? "",
|
|
481
|
-
chat,
|
|
482
|
-
source,
|
|
483
|
-
accounts,
|
|
484
|
-
senders,
|
|
485
|
-
kind: request.kind,
|
|
486
|
-
})), { limit, newest });
|
|
487
|
-
const items = await Promise.all(found.items.map(async (hit) => context > 0
|
|
488
|
-
? {
|
|
489
|
-
...hit,
|
|
490
|
-
context: await store.around(accountOf(hit), hit.chatId, hit.id, { before: context, after: context }),
|
|
491
|
-
}
|
|
492
|
-
: hit));
|
|
493
|
-
return withThreads(store, { ...found, items, completeness: await completenessOf(store, found.items) }, request);
|
|
494
|
-
};
|
|
495
|
-
/**
|
|
496
|
-
* The chat a store read is about. Offline, a chat with nothing kept answers empty, as it always has;
|
|
497
|
-
* in store mode the store is the only source, so an empty answer would pass for "nothing was said".
|
|
498
|
-
*/
|
|
499
|
-
export const readChatId = async (deps, reference, store, account) => {
|
|
500
|
-
if (deps.reads !== "store")
|
|
501
|
-
return storedChatId(deps.messenger, reference, store, account);
|
|
502
|
-
const chatId = await storedChatId(deps.messenger, reference, store, account).catch((error) => {
|
|
503
|
-
if (codeOf(error) === "not_found")
|
|
504
|
-
throw new CliError("not_found", nothingStored(deps.messenger));
|
|
505
|
-
throw error;
|
|
506
|
-
});
|
|
507
|
-
if ((await store.countMessages(account, chatId)) === 0) {
|
|
508
|
-
throw new CliError("not_found", nothingStored(deps.messenger), { chat: chatId });
|
|
509
|
-
}
|
|
510
|
-
return chatId;
|
|
511
|
-
};
|
|
512
|
-
/** A chat as typed, found among the stored chats the way an adapter finds it among its own. */
|
|
513
|
-
export const storedChatId = async (messenger, reference, store, account) => chatIdAmong(messenger, reference, account, () => store.chats(account, {}));
|
|
514
|
-
/** `storedChatId`, among the chats of the account the store is bound to. */
|
|
515
|
-
export const chatIdIn = (messenger, reference, store) => chatIdAmong(messenger, reference, store.account, () => store.chats({}));
|
|
516
|
-
const chatIdAmong = async (messenger, reference, account, held) => {
|
|
517
|
-
const trimmed = reference.trim();
|
|
518
|
-
if (messenger.savedChatId && ["me", "self", "saved"].includes(trimmed.toLowerCase())) {
|
|
519
|
-
return messenger.savedChatId(account);
|
|
520
|
-
}
|
|
521
|
-
if (/^-?\d+$/.test(trimmed))
|
|
522
|
-
return trimmed;
|
|
523
|
-
const chats = (await held()).items;
|
|
524
|
-
const exact = chats.find((one) => one.id === trimmed);
|
|
525
|
-
if (exact)
|
|
526
|
-
return exact.id;
|
|
527
|
-
if (trimmed.startsWith("@")) {
|
|
528
|
-
const username = trimmed.slice(1).toLowerCase();
|
|
529
|
-
const found = chats.find((one) => String(one.providerMetadata?.username ?? "").toLowerCase() === username);
|
|
530
|
-
if (!found)
|
|
531
|
-
throw new CliError("not_found", `no stored chat is ${trimmed}`);
|
|
532
|
-
return found.id;
|
|
533
|
-
}
|
|
534
|
-
return pickChat(trimmed, chats).id;
|
|
535
|
-
};
|
|
536
|
-
const accountOf = (hit) => {
|
|
537
|
-
const { provider, account } = parseLocator(hit.locator);
|
|
538
|
-
return { provider, account };
|
|
539
|
-
};
|
|
540
|
-
const keyOf = ({ provider, account }) => `${provider}/${account}`;
|
|
541
|
-
/** Each chat's completeness from the account that holds it: a search may span several. */
|
|
542
|
-
const completenessOf = async (store, hits) => {
|
|
543
|
-
const chats = new Map();
|
|
544
|
-
for (const hit of hits) {
|
|
545
|
-
const account = accountOf(hit);
|
|
546
|
-
const held = chats.get(keyOf(account)) ?? { account, chatIds: new Set() };
|
|
547
|
-
held.chatIds.add(hit.chatId);
|
|
548
|
-
chats.set(keyOf(account), held);
|
|
549
|
-
}
|
|
550
|
-
const found = await Promise.all([...chats.values()].map(async ({ account, chatIds }) => (await store.chatCompleteness(account, [...chatIds])).map((one) => ({ ...one, ...account }))));
|
|
551
|
-
return found.flat();
|
|
552
|
-
};
|
|
553
|
-
/** Several candidates in different accounts: which messenger each is in says which one was meant. */
|
|
554
|
-
const ambiguousAcross = (reference, what, candidates) => {
|
|
555
|
-
const width = Math.max(...candidates.map(({ provider, id }) => `${provider} ${id}`.length));
|
|
556
|
-
const lines = candidates.map(({ provider, id, label }) => ` ${`${provider} ${id}`.padEnd(width)} ${label}`);
|
|
557
|
-
return new CliError("validation_error", `"${singleLine(reference)}" matches ${candidates.length} ${what} in different accounts — ` +
|
|
558
|
-
`name one by its id, or narrow the search with in:<messenger>:\n${lines.join("\n")}`, { candidates: candidates.map(({ provider, id }) => ({ provider, id })) });
|
|
559
|
-
};
|
|
560
|
-
const missing = (error) => {
|
|
561
|
-
if (codeOf(error) === "not_found")
|
|
562
|
-
return undefined;
|
|
563
|
-
throw error;
|
|
564
|
-
};
|
|
565
|
-
/** A chat as `--chat` names it, in whichever of the accounts holds it — one of them, or it is an error. */
|
|
566
|
-
export const chatAmong = async (messenger, store, accounts, reference) => {
|
|
567
|
-
const [only] = accounts;
|
|
568
|
-
if (accounts.length === 1 && only)
|
|
569
|
-
return { account: only, chatId: await storedChatId(messenger, reference, store, only) };
|
|
570
|
-
const found = (await Promise.all(accounts.map(async (account) => {
|
|
571
|
-
const held = (await store.chats(account, {})).items;
|
|
572
|
-
const chatId = await storedChatId(messenger, reference, store, account).catch(missing);
|
|
573
|
-
const chat = held.find((one) => one.id === chatId);
|
|
574
|
-
return chat ? [{ account, chat }] : [];
|
|
575
|
-
}))).flat();
|
|
576
|
-
const [one] = found;
|
|
577
|
-
if (found.length === 1 && one)
|
|
578
|
-
return { account: one.account, chatId: one.chat.id };
|
|
579
|
-
if (found.length === 0)
|
|
580
|
-
throw new CliError("not_found", `no stored chat matches "${singleLine(reference)}"`);
|
|
581
|
-
throw ambiguousAcross(reference, "chats", found.map(({ account, chat }) => ({
|
|
582
|
-
provider: account.provider,
|
|
583
|
-
id: chat.id,
|
|
584
|
-
label: singleLine(chat.title ?? ""),
|
|
585
|
-
})));
|
|
586
|
-
};
|
|
587
|
-
/** A sender, through the names each messenger's accounts have seen; `from:` names one person. */
|
|
588
|
-
export const senderAmong = async (store, accounts, reference) => {
|
|
589
|
-
const providers = [...new Set(accounts.map(({ provider }) => provider))];
|
|
590
|
-
const [only] = accounts;
|
|
591
|
-
try {
|
|
592
|
-
if (accounts.length === 1 && only) {
|
|
593
|
-
const person = pickPerson(reference, await store.people(only.provider, { account: only.account }));
|
|
594
|
-
return { provider: only.provider, id: person.id };
|
|
595
|
-
}
|
|
596
|
-
const found = (await Promise.all(providers.map(async (provider) => {
|
|
597
|
-
const ids = accounts.filter((one) => one.provider === provider).map(({ account }) => account);
|
|
598
|
-
const person = await store
|
|
599
|
-
.people(provider, { accounts: ids })
|
|
600
|
-
.then((people) => pickPerson(reference, people))
|
|
601
|
-
.catch(missing);
|
|
602
|
-
return person ? [{ provider, person }] : [];
|
|
603
|
-
}))).flat();
|
|
604
|
-
const [one] = found;
|
|
605
|
-
if (found.length === 1 && one)
|
|
606
|
-
return { provider: one.provider, id: one.person.id };
|
|
607
|
-
if (found.length === 0) {
|
|
608
|
-
throw new CliError("not_found", isId(reference) ? `no person ${reference} in what these accounts have seen` : `nobody matches "${reference}"`);
|
|
609
|
-
}
|
|
610
|
-
throw ambiguousAcross(reference, "people", found.map(({ provider, person }) => ({ provider, id: person.id, label: singleLine(person.name ?? "") })));
|
|
611
|
-
}
|
|
612
|
-
catch (error) {
|
|
613
|
-
if (error instanceof CliError && error.code === "not_found") {
|
|
614
|
-
throw new CliError("not_found", `from:${reference} — ${error.message}`);
|
|
615
|
-
}
|
|
616
|
-
throw error;
|
|
617
|
-
}
|
|
618
|
-
};
|
|
619
|
-
/**
|
|
620
|
-
* The parsed query and the scope it names: the account the command runs as, or every account of the
|
|
621
|
-
* messenger `in:` or `--source` names. `chat:` resolves as `--chat` does, `from:` through the names
|
|
622
|
-
* `contacts search` uses, `from:me` as what the accounts sent — all inside the accounts chosen.
|
|
623
|
-
*/
|
|
624
|
-
export const scopeOf = async (messenger, store, account, { text, chat, source, accounts: given, senders, kind, }) => {
|
|
625
|
-
const held = await store.accounts();
|
|
626
|
-
const providers = [...new Set(held.map(({ provider }) => provider))];
|
|
627
|
-
const parsed = parseQuery(text, { providers });
|
|
628
|
-
if (chat !== undefined && parsed.chat !== undefined && parsed.chat !== chat) {
|
|
629
|
-
throw new CliError("validation_error", `--chat and chat: name different chats: "${chat}" and "${parsed.chat}"`);
|
|
630
|
-
}
|
|
631
|
-
const listed = await listedAccounts(store, account, source, messenger.app, kind);
|
|
632
|
-
if (listed && parsed.in !== undefined)
|
|
633
|
-
throw new CliError("validation_error", "--source names the accounts — leave in: out, or put it in the list");
|
|
634
|
-
const sourced = source === undefined || listed ? undefined : sourceOf("--source", source, providers);
|
|
635
|
-
if (sourced !== undefined && parsed.in !== undefined && sourced !== parsed.in) {
|
|
636
|
-
throw new CliError("validation_error", `--source and in: name different messengers: ${sourced} and ${parsed.in}`);
|
|
637
|
-
}
|
|
638
|
-
const wanted = parsed.in ?? sourced;
|
|
639
|
-
if (given !== undefined && (wanted !== undefined || listed)) {
|
|
640
|
-
throw new CliError("validation_error", "this search reads the accounts it was given — not with in: or --source");
|
|
641
|
-
}
|
|
642
|
-
if (given?.length === 0)
|
|
643
|
-
throw new CliError("validation_error", "a search names at least one account");
|
|
644
|
-
if (senders !== undefined && parsed.from !== undefined) {
|
|
645
|
-
throw new CliError("validation_error", "--from and from: together — name the people once");
|
|
646
|
-
}
|
|
647
|
-
const accounts = accountsOfKind(kind, given ??
|
|
648
|
-
listed?.accounts ??
|
|
649
|
-
(wanted === undefined || held.length === 0
|
|
650
|
-
? [account]
|
|
651
|
-
: held.filter(({ provider }) => inSource(wanted, provider))), held, wanted, messenger.app?.command, undefined, listed !== undefined || given !== undefined);
|
|
652
|
-
const named = parsed.chat ?? chat;
|
|
653
|
-
const scope = { accounts };
|
|
654
|
-
if (named !== undefined)
|
|
655
|
-
scope.chat = await chatAmong(messenger, store, accounts, named);
|
|
656
|
-
if (senders !== undefined)
|
|
657
|
-
scope.senders = senders;
|
|
658
|
-
if (parsed.from?.toLowerCase() === "me")
|
|
659
|
-
scope.outgoing = true;
|
|
660
|
-
else if (parsed.from !== undefined)
|
|
661
|
-
scope.sender = await senderAmong(store, accounts, parsed.from);
|
|
662
|
-
if (parsed.after !== undefined)
|
|
663
|
-
scope.after = parsed.after;
|
|
664
|
-
if (parsed.before !== undefined)
|
|
665
|
-
scope.before = parsed.before;
|
|
666
|
-
if (parsed.has.length > 0) {
|
|
667
|
-
const held = await store.attachmentKinds();
|
|
668
|
-
const unknown = parsed.has.find((kind) => !["attachment", "link", ...held].includes(kind));
|
|
669
|
-
if (unknown !== undefined) {
|
|
670
|
-
throw new CliError("validation_error", `has:${unknown} — the store holds no ${unknown}; it holds ${["attachment", "link", ...held].join(", ")}`);
|
|
671
|
-
}
|
|
672
|
-
scope.has = parsed.has;
|
|
673
|
-
}
|
|
674
|
-
return [{ required: parsed.required, excluded: parsed.excluded }, scope];
|
|
675
|
-
};
|
|
676
383
|
/** What a run is kept as: the query and options it was given — a regular expression as its source. */
|
|
677
384
|
const paramsOf = (command, query) => ({
|
|
678
385
|
...(query.pattern
|