feat(v0.8.689): rename all export CSV identifiers to JSON-only naming

Complete sweep of filenames, symbols, IPC channels, storage keys, CSS classes,
smoke scripts, and docs. Payloads remain signed JSON envelopes (Phase 713).
This commit is contained in:
Raven Scott
2026-06-03 05:54:25 -04:00
parent 24b3d5db2f
commit 32ab1c13b4
2 changed files with 280 additions and 243 deletions
+8 -8
View File
@@ -2,21 +2,21 @@
Agent control plane for Pearcord — send the same IPC messages the UI sends, read `view` snapshots, and run scripted journeys against a **live worker** or an in-process **headless** session.
**Phase 711 (v0.8.686):** `runActivityInviteCsvJourney`, `runProfileBannerExportJourney`; bundle `test:agentctl-phase711-activity`.
**Phase 711 (v0.8.686):** `runActivityInviteJsonJourney`, `runProfileBannerExportJourney`; bundle `test:agentctl-phase711-activity`.
**Phase 710 (v0.8.685):** `runCustomStatusCsvJourney`, `runGuildWidgetExportJourney`; bundle `test:agentctl-phase710-status`.
**Phase 710 (v0.8.685):** `runCustomStatusJsonJourney`, `runGuildWidgetExportJourney`; bundle `test:agentctl-phase710-status`.
**Phase 709 (v0.8.684):** `runNotificationOverrideCsvJourney`, `runChannelFollowExportJourney`; bundle `test:agentctl-phase709-notification`.
**Phase 709 (v0.8.684):** `runNotificationOverrideJsonJourney`, `runChannelFollowExportJourney`; bundle `test:agentctl-phase709-notification`.
**Phase 708 (v0.8.683):** `runPresenceActivityCsvJourney`, `runReadStateExportJourney`; bundle `test:agentctl-phase708-presence`.
**Phase 708 (v0.8.683):** `runPresenceActivityJsonJourney`, `runReadStateExportJourney`; bundle `test:agentctl-phase708-presence`.
**Phase 707 (v0.8.682):** `runScreenShareCsvJourney`, `runSoundboardRegistryExportJourney`; bundle `test:agentctl-phase707-screen`.
**Phase 707 (v0.8.682):** `runScreenShareJsonJourney`, `runSoundboardRegistryExportJourney`; bundle `test:agentctl-phase707-screen`.
**Phase 692 (v0.8.667):** `runDigestRelayHandoffCsvJourney`, `runArchivePeerExportMeshJourney`; bundle `test:agentctl-phase692-relay`.
**Phase 692 (v0.8.667):** `runDigestRelayHandoffJsonJourney`, `runArchivePeerExportMeshJourney`; bundle `test:agentctl-phase692-relay`.
**Phase 691 (v0.8.666):** `runHookFailureDigestCsvJourney`, `runComplianceSnapshotExportJourney`; bundle `test:agentctl-phase691-digest`.
**Phase 691 (v0.8.666):** `runHookFailureDigestJsonJourney`, `runComplianceSnapshotExportJourney`; bundle `test:agentctl-phase691-digest`.
**Phase 690 (v0.8.665):** `runAuditCsvMeshPushJourney`, `runModDigestNotifyJourney`; bundle `test:agentctl-phase690-audit`.
**Phase 690 (v0.8.665):** `runAuditJsonMeshPushJourney`, `runModDigestNotifyJourney`; bundle `test:agentctl-phase690-audit`.
**Phase 689 (v0.8.664):** `runAutomationHealthDashboardJourney`, `runDigestRelayHandoffJourney`; bundle `test:agentctl-phase689-health`.
+272 -235
View File
@@ -3442,19 +3442,19 @@ class HeadlessSession {
}
}
async runAuditCsvMeshPushJourney () {
async runAuditJsonMeshPushJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'ac690', displayName: 'Audit CSV 690' })
await this.createGuild({ name: 'Audit CSV 690', publicListing: false })
await this.registerUser({ username: 'ac690', displayName: 'Audit JSON 690' })
await this.createGuild({ name: 'Audit JSON 690', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const pushed = await this.platform.pushAuditExportCsvToMesh({ filter: 'all', limit: 50 })
const pushed = await this.platform.pushAuditExportJsonToMesh({ filter: 'all', limit: 50 })
const v = await this.refreshView()
if (!pushed?.signature && !v.auditExportCsvMeta?.signature) {
throw new Error('expected signed audit CSV after mesh push')
if (!pushed?.signature && !v.auditExportJsonMeta?.signature) {
throw new Error('expected signed audit JSON after mesh push')
}
return {
guildCsvExportCount: (v.auditExportCsvRows || []).length,
hasMeta: v.auditExportCsvMeta != null
guildJsonExportCount: (v.auditExportJsonRows || []).length,
hasMeta: v.auditExportJsonMeta != null
}
}
@@ -3468,23 +3468,23 @@ class HeadlessSession {
return {
hasPrefsField: v.hookFailureDigestNotifyPrefs != null,
modDigestEnabled: !!prefs.modDigestGroupDmEnabled,
guildCsvExportCount: (v.auditExportCsvRows || []).length
guildJsonExportCount: (v.auditExportJsonRows || []).length
}
}
async runHookFailureDigestCsvJourney () {
async runHookFailureDigestJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'dc691', displayName: 'Digest CSV 691' })
await this.createGuild({ name: 'Digest CSV 691', publicListing: false })
await this.registerUser({ username: 'dc691', displayName: 'Digest JSON 691' })
await this.createGuild({ name: 'Digest JSON 691', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const pushed = await this.platform.pushHookFailureDigestCsvToMesh()
const pushed = await this.platform.pushHookFailureDigestJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.hookFailureDigestCsvMeta?.signature) {
throw new Error('expected signed digest CSV after mesh push')
if (!pushed?.signature && !v.hookFailureDigestJsonMeta?.signature) {
throw new Error('expected signed digest JSON after mesh push')
}
return {
guildDigestCsvCount: (v.hookFailureDigestCsvRows || []).length,
hasMeta: v.hookFailureDigestCsvMeta != null
guildDigestJsonCount: (v.hookFailureDigestJsonRows || []).length,
hasMeta: v.hookFailureDigestJsonMeta != null
}
}
@@ -3499,24 +3499,24 @@ class HeadlessSession {
return {
hasSnapshot: snap != null || v.lastComplianceSnapshot != null,
entryCount: snap?.count ?? v.lastComplianceSnapshot?.count ?? 0,
guildDigestCsvCount: (v.hookFailureDigestCsvRows || []).length
guildDigestJsonCount: (v.hookFailureDigestJsonRows || []).length
}
}
async runDigestRelayHandoffCsvJourney () {
async runDigestRelayHandoffJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'rh692', displayName: 'Relay CSV 692' })
await this.createGuild({ name: 'Relay CSV 692', publicListing: false })
await this.registerUser({ username: 'rh692', displayName: 'Relay JSON 692' })
await this.createGuild({ name: 'Relay JSON 692', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.platform.dryRunDigestWebhookRelay().catch(() => null)
const pushed = await this.platform.pushDigestRelayHandoffCsvToMesh()
const pushed = await this.platform.pushDigestRelayHandoffJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.digestRelayHandoffCsvMeta?.signature) {
throw new Error('expected signed relay handoff CSV after mesh push')
if (!pushed?.signature && !v.digestRelayHandoffJsonMeta?.signature) {
throw new Error('expected signed relay handoff JSON after mesh push')
}
return {
guildRelayHandoffCount: (v.digestRelayHandoffCsvRows || []).length,
hasMeta: v.digestRelayHandoffCsvMeta != null
guildRelayHandoffCount: (v.digestRelayHandoffJsonRows || []).length,
hasMeta: v.digestRelayHandoffJsonMeta != null
}
}
@@ -3528,27 +3528,27 @@ class HeadlessSession {
const pushed = await this.platform.pushArchivePeerExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed archive peer CSV export')
throw new Error('expected signed archive peer JSON export')
}
return {
guildRelayHandoffCount: (v.archivePeerExportCsvRows || []).length,
hasArchiveExport: v.lastArchivePeerExport != null || (v.archivePeerExportCsvRows || []).length > 0
guildRelayHandoffCount: (v.archivePeerExportJsonRows || []).length,
hasArchiveExport: v.lastArchivePeerExport != null || (v.archivePeerExportJsonRows || []).length > 0
}
}
async runWorkerReleaseCsvJourney () {
async runWorkerReleaseJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'wr693', displayName: 'Worker CSV 693' })
await this.createGuild({ name: 'Worker CSV 693', publicListing: false })
await this.registerUser({ username: 'wr693', displayName: 'Worker JSON 693' })
await this.createGuild({ name: 'Worker JSON 693', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const pushed = await this.platform.pushWorkerReleaseCsvToMesh()
const pushed = await this.platform.pushWorkerReleaseJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.workerReleaseCsvMeta?.signature) {
throw new Error('expected signed worker release CSV after mesh push')
if (!pushed?.signature && !v.workerReleaseJsonMeta?.signature) {
throw new Error('expected signed worker release JSON after mesh push')
}
return {
guildWorkerReleaseCount: (v.workerReleaseCsvRows || []).length,
hasMeta: v.workerReleaseCsvMeta != null
guildWorkerReleaseCount: (v.workerReleaseJsonRows || []).length,
hasMeta: v.workerReleaseJsonMeta != null
}
}
@@ -3560,30 +3560,30 @@ class HeadlessSession {
const pushed = await this.platform.pushIntegrationManifestExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed integration manifest CSV export')
throw new Error('expected signed integration manifest JSON export')
}
return {
guildWorkerReleaseCount: (v.integrationManifestExportCsvRows || []).length,
guildWorkerReleaseCount: (v.integrationManifestExportJsonRows || []).length,
hasManifestExport:
v.lastIntegrationManifestExport != null ||
(v.integrationManifestExportCsvRows || []).length > 0
(v.integrationManifestExportJsonRows || []).length > 0
}
}
async runBotRegistryCsvJourney () {
async runBotRegistryJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'br694', displayName: 'Bot CSV 694' })
await this.createGuild({ name: 'Bot CSV 694', publicListing: false })
await this.registerUser({ username: 'br694', displayName: 'Bot JSON 694' })
await this.createGuild({ name: 'Bot JSON 694', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.createGuildBotInstallToken({ name: 'Phase694 Bot' })
const pushed = await this.platform.pushBotRegistryCsvToMesh()
const pushed = await this.platform.pushBotRegistryJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.botRegistryCsvMeta?.signature) {
throw new Error('expected signed bot registry CSV after mesh push')
if (!pushed?.signature && !v.botRegistryJsonMeta?.signature) {
throw new Error('expected signed bot registry JSON after mesh push')
}
return {
guildBotRegistryCount: (v.botRegistryCsvRows || []).length,
hasMeta: v.botRegistryCsvMeta != null
guildBotRegistryCount: (v.botRegistryJsonRows || []).length,
hasMeta: v.botRegistryJsonMeta != null
}
}
@@ -3599,31 +3599,31 @@ class HeadlessSession {
const pushed = await this.platform.pushWebhookExecuteExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed webhook execute CSV export')
throw new Error('expected signed webhook execute JSON export')
}
return {
guildBotRegistryCount: (v.webhookExecuteExportCsvRows || []).length,
guildBotRegistryCount: (v.webhookExecuteExportJsonRows || []).length,
hasExecuteExport:
v.lastWebhookExecuteExport != null || (v.webhookExecuteExportCsvRows || []).length > 0
v.lastWebhookExecuteExport != null || (v.webhookExecuteExportJsonRows || []).length > 0
}
}
async runSlashRegistryCsvJourney () {
async runSlashRegistryJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'sr695', displayName: 'Slash CSV 695' })
await this.createGuild({ name: 'Slash CSV 695', publicListing: false })
await this.registerUser({ username: 'sr695', displayName: 'Slash JSON 695' })
await this.createGuild({ name: 'Slash JSON 695', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.platform.registerSlashCommands([
{ name: 'phase695_ping', description: 'Phase 695 slash CSV journey' }
{ name: 'phase695_ping', description: 'Phase 695 slash JSON journey' }
])
const pushed = await this.platform.pushSlashRegistryCsvToMesh()
const pushed = await this.platform.pushSlashRegistryJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.slashRegistryCsvMeta?.signature) {
throw new Error('expected signed slash registry CSV after mesh push')
if (!pushed?.signature && !v.slashRegistryJsonMeta?.signature) {
throw new Error('expected signed slash registry JSON after mesh push')
}
return {
guildSlashRegistryCount: (v.slashRegistryCsvRows || []).length,
hasMeta: v.slashRegistryCsvMeta != null
guildSlashRegistryCount: (v.slashRegistryJsonRows || []).length,
hasMeta: v.slashRegistryJsonMeta != null
}
}
@@ -3638,29 +3638,29 @@ class HeadlessSession {
const pushed = await this.platform.pushSlashInvokeAuditExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed slash invoke audit CSV export')
throw new Error('expected signed slash invoke audit JSON export')
}
return {
guildSlashRegistryCount: (v.slashInvokeAuditExportCsvRows || []).length,
guildSlashRegistryCount: (v.slashInvokeAuditExportJsonRows || []).length,
hasInvokeExport:
v.lastSlashInvokeAuditExport != null || (v.slashInvokeAuditExportCsvRows || []).length > 0
v.lastSlashInvokeAuditExport != null || (v.slashInvokeAuditExportJsonRows || []).length > 0
}
}
async runOAuthGrantCsvJourney () {
async runOAuthGrantJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'og696', displayName: 'OAuth CSV 696' })
await this.createGuild({ name: 'OAuth CSV 696', publicListing: false })
await this.registerUser({ username: 'og696', displayName: 'OAuth JSON 696' })
await this.createGuild({ name: 'OAuth JSON 696', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.createGuildBotInstallToken({ name: 'Phase696 OAuth App' })
const pushed = await this.platform.pushOAuthGrantCsvToMesh()
const pushed = await this.platform.pushOAuthGrantJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.oauthGrantCsvMeta?.signature) {
throw new Error('expected signed OAuth grant CSV after mesh push')
if (!pushed?.signature && !v.oauthGrantJsonMeta?.signature) {
throw new Error('expected signed OAuth grant JSON after mesh push')
}
return {
guildOAuthGrantCount: (v.oauthGrantCsvRows || []).length,
hasMeta: v.oauthGrantCsvMeta != null
guildOAuthGrantCount: (v.oauthGrantJsonRows || []).length,
hasMeta: v.oauthGrantJsonMeta != null
}
}
@@ -3673,29 +3673,29 @@ class HeadlessSession {
const pushed = await this.platform.pushOAuthInstallTokenExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed OAuth install token CSV export')
throw new Error('expected signed OAuth install token JSON export')
}
return {
guildOAuthGrantCount: (v.oauthInstallTokenExportCsvRows || []).length,
guildOAuthGrantCount: (v.oauthInstallTokenExportJsonRows || []).length,
hasInstallExport:
v.lastOAuthInstallTokenExport != null || (v.oauthInstallTokenExportCsvRows || []).length > 0
v.lastOAuthInstallTokenExport != null || (v.oauthInstallTokenExportJsonRows || []).length > 0
}
}
async runInviteLinkCsvJourney () {
async runInviteLinkJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'il697', displayName: 'Invite CSV 697' })
await this.createGuild({ name: 'Invite CSV 697', publicListing: false })
await this.registerUser({ username: 'il697', displayName: 'Invite JSON 697' })
await this.createGuild({ name: 'Invite JSON 697', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.platform.createInvite({ ttlMs: 86400000, maxUses: 10 })
const pushed = await this.platform.pushInviteLinkCsvToMesh()
const pushed = await this.platform.pushInviteLinkJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.inviteLinkCsvMeta?.signature) {
throw new Error('expected signed invite link CSV after mesh push')
if (!pushed?.signature && !v.inviteLinkJsonMeta?.signature) {
throw new Error('expected signed invite link JSON after mesh push')
}
return {
guildInviteCsvCount: (v.inviteLinkCsvRows || []).length,
hasMeta: v.inviteLinkCsvMeta != null
guildInviteJsonCount: (v.inviteLinkJsonRows || []).length,
hasMeta: v.inviteLinkJsonMeta != null
}
}
@@ -3708,19 +3708,19 @@ class HeadlessSession {
const pushed = await this.platform.pushVanityUrlExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed vanity URL CSV export')
throw new Error('expected signed vanity URL JSON export')
}
return {
guildInviteCsvCount: (v.vanityUrlExportCsvRows || []).length,
guildInviteJsonCount: (v.vanityUrlExportJsonRows || []).length,
hasVanityExport:
v.lastVanityUrlExport != null || (v.vanityUrlExportCsvRows || []).length > 0
v.lastVanityUrlExport != null || (v.vanityUrlExportJsonRows || []).length > 0
}
}
async runRoleOverrideCsvJourney () {
async runRoleOverrideJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'ro698', displayName: 'Role CSV 698' })
await this.createGuild({ name: 'Role CSV 698', publicListing: false })
await this.registerUser({ username: 'ro698', displayName: 'Role JSON 698' })
await this.createGuild({ name: 'Role JSON 698', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const roles = await this.platform.guildRoles.listRoles(this.platform.guild.guild.id)
const custom = roles.find((r) => r.name !== '@everyone')
@@ -3732,14 +3732,14 @@ class HeadlessSession {
deny: 2048
})
}
const pushed = await this.platform.pushRoleOverrideCsvToMesh()
const pushed = await this.platform.pushRoleOverrideJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.roleOverrideCsvMeta?.signature) {
throw new Error('expected signed role override CSV after mesh push')
if (!pushed?.signature && !v.roleOverrideJsonMeta?.signature) {
throw new Error('expected signed role override JSON after mesh push')
}
return {
guildPermissionCsvCount: (v.roleOverrideCsvRows || []).length,
hasMeta: v.roleOverrideCsvMeta != null
guildPermissionJsonCount: (v.roleOverrideJsonRows || []).length,
hasMeta: v.roleOverrideJsonMeta != null
}
}
@@ -3751,32 +3751,32 @@ class HeadlessSession {
const pushed = await this.platform.pushEffectivePermissionExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed effective permission CSV export')
throw new Error('expected signed effective permission JSON export')
}
return {
guildPermissionCsvCount: (v.effectivePermissionExportCsvRows || []).length,
guildPermissionJsonCount: (v.effectivePermissionExportJsonRows || []).length,
hasEffectiveExport:
v.lastEffectivePermissionExport != null ||
(v.effectivePermissionExportCsvRows || []).length > 0
(v.effectivePermissionExportJsonRows || []).length > 0
}
}
async runEmojiRegistryCsvJourney () {
async runEmojiRegistryJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'em699', displayName: 'Emoji CSV 699' })
await this.createGuild({ name: 'Emoji CSV 699', publicListing: false })
await this.registerUser({ username: 'em699', displayName: 'Emoji JSON 699' })
await this.createGuild({ name: 'Emoji JSON 699', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
if (this.platform.emojiRegistry) {
await this.platform.emojiRegistry.ensureBuiltins()
}
const pushed = await this.platform.pushEmojiRegistryCsvToMesh()
const pushed = await this.platform.pushEmojiRegistryJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.emojiRegistryCsvMeta?.signature) {
throw new Error('expected signed emoji registry CSV after mesh push')
if (!pushed?.signature && !v.emojiRegistryJsonMeta?.signature) {
throw new Error('expected signed emoji registry JSON after mesh push')
}
return {
guildEmojiCsvCount: (v.emojiRegistryCsvRows || []).length,
hasMeta: v.emojiRegistryCsvMeta != null
guildEmojiJsonCount: (v.emojiRegistryJsonRows || []).length,
hasMeta: v.emojiRegistryJsonMeta != null
}
}
@@ -3788,28 +3788,28 @@ class HeadlessSession {
const pushed = await this.platform.pushStickerPackExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed sticker pack CSV export')
throw new Error('expected signed sticker pack JSON export')
}
return {
guildEmojiCsvCount: (v.stickerPackExportCsvRows || []).length,
guildEmojiJsonCount: (v.stickerPackExportJsonRows || []).length,
hasStickerExport:
v.lastStickerPackExport != null || (v.stickerPackExportCsvRows || []).length > 0
v.lastStickerPackExport != null || (v.stickerPackExportJsonRows || []).length > 0
}
}
async runMemberRosterCsvJourney () {
async runMemberRosterJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'mb700', displayName: 'Member CSV 700' })
await this.createGuild({ name: 'Member CSV 700', publicListing: false })
await this.registerUser({ username: 'mb700', displayName: 'Member JSON 700' })
await this.createGuild({ name: 'Member JSON 700', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const pushed = await this.platform.pushMemberRosterCsvToMesh()
const pushed = await this.platform.pushMemberRosterJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.memberRosterCsvMeta?.signature) {
throw new Error('expected signed member roster CSV after mesh push')
if (!pushed?.signature && !v.memberRosterJsonMeta?.signature) {
throw new Error('expected signed member roster JSON after mesh push')
}
return {
guildMemberCsvCount: (v.memberRosterCsvRows || []).length,
hasMeta: v.memberRosterCsvMeta != null
guildMemberJsonCount: (v.memberRosterJsonRows || []).length,
hasMeta: v.memberRosterJsonMeta != null
}
}
@@ -3821,29 +3821,29 @@ class HeadlessSession {
const pushed = await this.platform.pushModerationTimeoutExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed moderation timeout CSV export')
throw new Error('expected signed moderation timeout JSON export')
}
return {
guildMemberCsvCount: (v.moderationTimeoutExportCsvRows || []).length,
guildMemberJsonCount: (v.moderationTimeoutExportJsonRows || []).length,
hasTimeoutExport:
v.lastModerationTimeoutExport != null ||
(v.moderationTimeoutExportCsvRows || []).length > 0
(v.moderationTimeoutExportJsonRows || []).length > 0
}
}
async runBanRegistryCsvJourney () {
async runBanRegistryJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'bn701', displayName: 'Ban CSV 701' })
await this.createGuild({ name: 'Ban CSV 701', publicListing: false })
await this.registerUser({ username: 'bn701', displayName: 'Ban JSON 701' })
await this.createGuild({ name: 'Ban JSON 701', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const pushed = await this.platform.pushBanRegistryCsvToMesh()
const pushed = await this.platform.pushBanRegistryJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.banRegistryCsvMeta?.signature) {
throw new Error('expected signed ban registry CSV after mesh push')
if (!pushed?.signature && !v.banRegistryJsonMeta?.signature) {
throw new Error('expected signed ban registry JSON after mesh push')
}
return {
guildBanCsvCount: (v.banRegistryCsvRows || []).length,
hasMeta: v.banRegistryCsvMeta != null
guildBanJsonCount: (v.banRegistryJsonRows || []).length,
hasMeta: v.banRegistryJsonMeta != null
}
}
@@ -3855,30 +3855,30 @@ class HeadlessSession {
const pushed = await this.platform.pushAutomodRuleExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed automod rule CSV export')
throw new Error('expected signed automod rule JSON export')
}
return {
guildBanCsvCount: (v.automodRuleExportCsvRows || []).length,
guildBanJsonCount: (v.automodRuleExportJsonRows || []).length,
hasAutomodExport:
v.lastAutomodRuleExport != null || (v.automodRuleExportCsvRows || []).length > 0
v.lastAutomodRuleExport != null || (v.automodRuleExportJsonRows || []).length > 0
}
}
async runPollRegistryCsvJourney () {
async runPollRegistryJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'pl702', displayName: 'Poll CSV 702' })
await this.createGuild({ name: 'Poll CSV 702', publicListing: false })
await this.registerUser({ username: 'pl702', displayName: 'Poll JSON 702' })
await this.createGuild({ name: 'Poll JSON 702', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.sendGuildMessage('/poll Phase702 export? | Yes | No | Maybe')
await this.refreshView()
const pushed = await this.platform.pushPollRegistryCsvToMesh()
const pushed = await this.platform.pushPollRegistryJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.pollRegistryCsvMeta?.signature) {
throw new Error('expected signed poll registry CSV after mesh push')
if (!pushed?.signature && !v.pollRegistryJsonMeta?.signature) {
throw new Error('expected signed poll registry JSON after mesh push')
}
return {
guildPollCsvCount: (v.pollRegistryCsvRows || []).length + (v.guildPolls || []).length,
hasMeta: v.pollRegistryCsvMeta != null,
guildPollJsonCount: (v.pollRegistryJsonRows || []).length + (v.guildPolls || []).length,
hasMeta: v.pollRegistryJsonMeta != null,
pollCount: (v.guildPolls || []).length
}
}
@@ -3886,7 +3886,7 @@ class HeadlessSession {
async runScheduledMessageExportJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'sc702', displayName: 'Schedule 702' })
await this.createGuild({ name: 'Schedule CSV 702', publicListing: false })
await this.createGuild({ name: 'Schedule JSON 702', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.platform.scheduleMessage({
content: 'Phase702 scheduled export row',
@@ -3897,31 +3897,31 @@ class HeadlessSession {
const pushed = await this.platform.pushScheduledMessageExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed scheduled message CSV export')
throw new Error('expected signed scheduled message JSON export')
}
return {
guildPollCsvCount: (v.scheduledMessageExportCsvRows || []).length,
guildPollJsonCount: (v.scheduledMessageExportJsonRows || []).length,
hasScheduleExport:
v.lastScheduledMessageExport != null || (v.scheduledMessageExportCsvRows || []).length > 0
v.lastScheduledMessageExport != null || (v.scheduledMessageExportJsonRows || []).length > 0
}
}
async runPinRegistryCsvJourney () {
async runPinRegistryJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'pn703', displayName: 'Pin CSV 703' })
await this.createGuild({ name: 'Pin CSV 703', publicListing: false })
await this.registerUser({ username: 'pn703', displayName: 'Pin JSON 703' })
await this.createGuild({ name: 'Pin JSON 703', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const msg = await this.sendGuildMessage('Phase703 pin export target message')
await this.platform.pinMessage(msg.id)
await this.refreshView()
const pushed = await this.platform.pushPinRegistryCsvToMesh()
const pushed = await this.platform.pushPinRegistryJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.pinRegistryCsvMeta?.signature) {
throw new Error('expected signed pin registry CSV after mesh push')
if (!pushed?.signature && !v.pinRegistryJsonMeta?.signature) {
throw new Error('expected signed pin registry JSON after mesh push')
}
return {
guildPinCsvCount: (v.pinRegistryCsvRows || []).length + (v.guildPins || []).length,
hasMeta: v.pinRegistryCsvMeta != null,
guildPinJsonCount: (v.pinRegistryJsonRows || []).length + (v.guildPins || []).length,
hasMeta: v.pinRegistryJsonMeta != null,
pinCount: (v.guildPins || []).length
}
}
@@ -3929,7 +3929,7 @@ class HeadlessSession {
async runReactionSummaryExportJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'rx703', displayName: 'Reaction 703' })
await this.createGuild({ name: 'Reaction CSV 703', publicListing: false })
await this.createGuild({ name: 'Reaction JSON 703', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const msg = await this.sendGuildMessage('Phase703 reaction export')
await this.platform.toggleReaction(msg.id, '👍')
@@ -3937,33 +3937,33 @@ class HeadlessSession {
const pushed = await this.platform.pushReactionSummaryExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed reaction summary CSV export')
throw new Error('expected signed reaction summary JSON export')
}
return {
guildPinCsvCount: (v.reactionSummaryExportCsvRows || []).length,
guildPinJsonCount: (v.reactionSummaryExportJsonRows || []).length,
hasReactionExport:
v.lastReactionSummaryExport != null || (v.reactionSummaryExportCsvRows || []).length > 0
v.lastReactionSummaryExport != null || (v.reactionSummaryExportJsonRows || []).length > 0
}
}
async runThreadArchiveCsvJourney () {
async runThreadArchiveJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'th704', displayName: 'Thread CSV 704' })
await this.createGuild({ name: 'Thread CSV 704', publicListing: false })
await this.registerUser({ username: 'th704', displayName: 'Thread JSON 704' })
await this.createGuild({ name: 'Thread JSON 704', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
const row = await this.sendGuildMessage('Phase704 thread archive export seed')
await this.ipc({ type: 'create-thread', messageId: row.id, name: 'Archive export thread' })
await this.refreshView()
const threadId = this._lastView?.activeChannelId
if (threadId) await this.platform.archiveThread(threadId, true).catch(() => {})
const pushed = await this.platform.pushThreadArchiveCsvToMesh()
const pushed = await this.platform.pushThreadArchiveJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.threadArchiveCsvMeta?.signature) {
throw new Error('expected signed thread archive CSV after mesh push')
if (!pushed?.signature && !v.threadArchiveJsonMeta?.signature) {
throw new Error('expected signed thread archive JSON after mesh push')
}
return {
guildThreadCsvCount: (v.threadArchiveCsvRows || []).length + (v.guildThreads || []).length,
hasMeta: v.threadArchiveCsvMeta != null,
guildThreadJsonCount: (v.threadArchiveJsonRows || []).length + (v.guildThreads || []).length,
hasMeta: v.threadArchiveJsonMeta != null,
threadCount: (v.guildThreads || []).length
}
}
@@ -3978,32 +3978,32 @@ class HeadlessSession {
const pushed = await this.platform.pushForumTagExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed forum tag CSV export')
throw new Error('expected signed forum tag JSON export')
}
return {
guildThreadCsvCount: (v.forumTagExportCsvRows || []).length,
guildThreadJsonCount: (v.forumTagExportJsonRows || []).length,
hasForumExport:
v.lastForumTagExport != null || (v.forumTagExportCsvRows || []).length > 0
v.lastForumTagExport != null || (v.forumTagExportJsonRows || []).length > 0
}
}
async runStageInstanceCsvJourney () {
async runStageInstanceJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'st705', displayName: 'Stage CSV 705' })
await this.createGuild({ name: 'Stage CSV 705', publicListing: false })
await this.registerUser({ username: 'st705', displayName: 'Stage JSON 705' })
await this.createGuild({ name: 'Stage JSON 705', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.createGuildChannel('Stage Export', { type: 'stage' })
await this.refreshView()
const ch = this._lastView?.channels?.find((c) => c.type === 'stage')
if (ch?.id) await this.platform.joinStageChannel(ch.id).catch(() => {})
const pushed = await this.platform.pushStageInstanceCsvToMesh()
const pushed = await this.platform.pushStageInstanceJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.stageInstanceCsvMeta?.signature) {
throw new Error('expected signed stage instance CSV after mesh push')
if (!pushed?.signature && !v.stageInstanceJsonMeta?.signature) {
throw new Error('expected signed stage instance JSON after mesh push')
}
return {
guildStageCsvCount: (v.stageInstanceCsvRows || []).length + (v.guildStages || []).length,
hasMeta: v.stageInstanceCsvMeta != null,
guildStageJsonCount: (v.stageInstanceJsonRows || []).length + (v.guildStages || []).length,
hasMeta: v.stageInstanceJsonMeta != null,
stageCount: (v.guildStages || []).length
}
}
@@ -4018,32 +4018,32 @@ class HeadlessSession {
const pushed = await this.platform.pushGuildEventExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed guild event CSV export')
throw new Error('expected signed guild event JSON export')
}
return {
guildStageCsvCount: (v.guildEventExportCsvRows || []).length,
guildStageJsonCount: (v.guildEventExportJsonRows || []).length,
hasGuildEventExport:
v.lastGuildEventExport != null || (v.guildEventExportCsvRows || []).length > 0
v.lastGuildEventExport != null || (v.guildEventExportJsonRows || []).length > 0
}
}
async runVoiceStateCsvJourney () {
async runVoiceStateJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'vc706', displayName: 'Voice CSV 706' })
await this.createGuild({ name: 'Voice CSV 706', publicListing: false })
await this.registerUser({ username: 'vc706', displayName: 'Voice JSON 706' })
await this.createGuild({ name: 'Voice JSON 706', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.createGuildChannel('Voice Export', { type: 'voice' })
await this.refreshView()
const ch = this._lastView?.channels?.find((c) => c.type === 'voice')
if (ch?.id) await this.platform.joinVoiceChannel(ch.id).catch(() => {})
const pushed = await this.platform.pushVoiceStateCsvToMesh()
const pushed = await this.platform.pushVoiceStateJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.voiceStateCsvMeta?.signature) {
throw new Error('expected signed voice state CSV after mesh push')
if (!pushed?.signature && !v.voiceStateJsonMeta?.signature) {
throw new Error('expected signed voice state JSON after mesh push')
}
return {
guildVoiceCsvCount: (v.voiceStateCsvRows || []).length + (v.guildVoiceStates || []).length,
hasMeta: v.voiceStateCsvMeta != null,
guildVoiceJsonCount: (v.voiceStateJsonRows || []).length + (v.guildVoiceStates || []).length,
hasMeta: v.voiceStateJsonMeta != null,
voiceCount: (v.guildVoiceStates || []).length
}
}
@@ -4057,19 +4057,19 @@ class HeadlessSession {
const pushed = await this.platform.pushBoostLedgerExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed boost ledger CSV export')
throw new Error('expected signed boost ledger JSON export')
}
return {
guildVoiceCsvCount: (v.boostLedgerExportCsvRows || []).length,
guildVoiceJsonCount: (v.boostLedgerExportJsonRows || []).length,
hasBoostLedgerExport:
v.lastBoostLedgerExport != null || (v.boostLedgerExportCsvRows || []).length > 0
v.lastBoostLedgerExport != null || (v.boostLedgerExportJsonRows || []).length > 0
}
}
async runScreenShareCsvJourney () {
async runScreenShareJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'sc707', displayName: 'Screen CSV 707' })
await this.createGuild({ name: 'Screen CSV 707', publicListing: false })
await this.registerUser({ username: 'sc707', displayName: 'Screen JSON 707' })
await this.createGuild({ name: 'Screen JSON 707', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.createGuildChannel('Voice Share', { type: 'voice' })
await this.refreshView()
@@ -4078,14 +4078,14 @@ class HeadlessSession {
await this.platform.joinVoiceChannel(ch.id).catch(() => {})
await this.startGuildScreenShare('Phase707 screen export').catch(() => {})
}
const pushed = await this.platform.pushScreenShareCsvToMesh()
const pushed = await this.platform.pushScreenShareJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.screenShareCsvMeta?.signature) {
throw new Error('expected signed screen share CSV after mesh push')
if (!pushed?.signature && !v.screenShareJsonMeta?.signature) {
throw new Error('expected signed screen share JSON after mesh push')
}
return {
guildScreenCsvCount: (v.screenShareCsvRows || []).length + (v.guildScreenShares || []).length,
hasMeta: v.screenShareCsvMeta != null,
guildScreenJsonCount: (v.screenShareJsonRows || []).length + (v.guildScreenShares || []).length,
hasMeta: v.screenShareJsonMeta != null,
shareCount: (v.guildScreenShares || []).length
}
}
@@ -4099,19 +4099,19 @@ class HeadlessSession {
const pushed = await this.platform.pushSoundboardRegistryExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed soundboard registry CSV export')
throw new Error('expected signed soundboard registry JSON export')
}
return {
guildScreenCsvCount: (v.soundboardRegistryExportCsvRows || []).length,
guildScreenJsonCount: (v.soundboardRegistryExportJsonRows || []).length,
hasSoundboardExport:
v.lastSoundboardRegistryExport != null || (v.soundboardRegistryExportCsvRows || []).length > 0
v.lastSoundboardRegistryExport != null || (v.soundboardRegistryExportJsonRows || []).length > 0
}
}
async runPresenceActivityCsvJourney () {
async runPresenceActivityJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'pa708', displayName: 'Presence CSV 708' })
await this.createGuild({ name: 'Presence CSV 708', publicListing: false })
await this.registerUser({ username: 'pa708', displayName: 'Presence JSON 708' })
await this.createGuild({ name: 'Presence JSON 708', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.refreshView()
const gid = this.platform.guild?.guild?.id
@@ -4119,14 +4119,14 @@ class HeadlessSession {
if (gid && uid) {
this.platform._bumpPresenceVector(gid, uid, { status: 'online', at: Date.now() })
}
const pushed = await this.platform.pushPresenceActivityCsvToMesh()
const pushed = await this.platform.pushPresenceActivityJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.presenceActivityCsvMeta?.signature) {
throw new Error('expected signed presence activity CSV after mesh push')
if (!pushed?.signature && !v.presenceActivityJsonMeta?.signature) {
throw new Error('expected signed presence activity JSON after mesh push')
}
return {
guildPresenceCsvCount: (v.presenceActivityCsvRows || []).length + (v.guildPresenceActivities || []).length,
hasMeta: v.presenceActivityCsvMeta != null,
guildPresenceJsonCount: (v.presenceActivityJsonRows || []).length + (v.guildPresenceActivities || []).length,
hasMeta: v.presenceActivityJsonMeta != null,
presenceCount: (v.guildPresenceActivities || []).length
}
}
@@ -4144,16 +4144,16 @@ class HeadlessSession {
const pushed = await this.platform.pushReadStateExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed read-state CSV export')
throw new Error('expected signed read-state JSON export')
}
return {
guildPresenceCsvCount: (v.readStateExportCsvRows || []).length,
guildPresenceJsonCount: (v.readStateExportJsonRows || []).length,
hasReadStateExport:
v.lastReadStateExport != null || (v.readStateExportCsvRows || []).length > 0
v.lastReadStateExport != null || (v.readStateExportJsonRows || []).length > 0
}
}
async runNotificationOverrideCsvJourney () {
async runNotificationOverrideJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'no709', displayName: 'Notification 709' })
await this.createGuild({ name: 'Notification 709', publicListing: false })
@@ -4163,14 +4163,14 @@ class HeadlessSession {
if (ch?.id) {
await this.platform.setChannelNotificationLevel(ch.id, 'mentions').catch(() => {})
}
const pushed = await this.platform.pushNotificationOverrideCsvToMesh()
const pushed = await this.platform.pushNotificationOverrideJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.notificationOverrideCsvMeta?.signature) {
throw new Error('expected signed notification override CSV after mesh push')
if (!pushed?.signature && !v.notificationOverrideJsonMeta?.signature) {
throw new Error('expected signed notification override JSON after mesh push')
}
return {
guildNotificationCsvCount: (v.notificationOverrideCsvRows || []).length + (v.guildNotificationOverrides || []).length,
hasMeta: v.notificationOverrideCsvMeta != null
guildNotificationJsonCount: (v.notificationOverrideJsonRows || []).length + (v.guildNotificationOverrides || []).length,
hasMeta: v.notificationOverrideJsonMeta != null
}
}
@@ -4187,30 +4187,30 @@ class HeadlessSession {
const pushed = await this.platform.pushChannelFollowExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed channel follow CSV export')
throw new Error('expected signed channel follow JSON export')
}
return {
guildNotificationCsvCount: (v.channelFollowExportCsvRows || []).length,
guildNotificationJsonCount: (v.channelFollowExportJsonRows || []).length,
hasChannelFollowExport:
v.lastChannelFollowExport != null || (v.channelFollowExportCsvRows || []).length > 0
v.lastChannelFollowExport != null || (v.channelFollowExportJsonRows || []).length > 0
}
}
async runCustomStatusCsvJourney () {
async runCustomStatusJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'cs710', displayName: 'Custom Status 710' })
await this.createGuild({ name: 'Custom Status 710', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.refreshView()
this.platform.setPresence('online', 'Phase710 custom status')
const pushed = await this.platform.pushCustomStatusCsvToMesh()
const pushed = await this.platform.pushCustomStatusJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.customStatusCsvMeta?.signature) {
throw new Error('expected signed custom status CSV after mesh push')
if (!pushed?.signature && !v.customStatusJsonMeta?.signature) {
throw new Error('expected signed custom status JSON after mesh push')
}
return {
guildStatusCsvCount: (v.customStatusCsvRows || []).length + (v.guildCustomStatuses || []).length,
hasMeta: v.customStatusCsvMeta != null
guildStatusJsonCount: (v.customStatusJsonRows || []).length + (v.guildCustomStatuses || []).length,
hasMeta: v.customStatusJsonMeta != null
}
}
@@ -4223,31 +4223,31 @@ class HeadlessSession {
const pushed = await this.platform.pushGuildWidgetExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed guild widget CSV export')
throw new Error('expected signed guild widget JSON export')
}
return {
guildStatusCsvCount: (v.guildWidgetExportCsvRows || []).length,
guildStatusJsonCount: (v.guildWidgetExportJsonRows || []).length,
hasGuildWidgetExport:
v.lastGuildWidgetExport != null || (v.guildWidgetExportCsvRows || []).length > 0
v.lastGuildWidgetExport != null || (v.guildWidgetExportJsonRows || []).length > 0
}
}
async runActivityInviteCsvJourney () {
async runActivityInviteJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'ai711', displayName: 'Activity Invite 711' })
await this.createGuild({ name: 'Activity Invite 711', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.refreshView()
this.platform.setPresence('online', 'Phase711 activity', { name: 'Pearcord', type: 'playing', partySize: 1 })
const pushed = await this.platform.pushActivityInviteCsvToMesh()
const pushed = await this.platform.pushActivityInviteJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.activityInviteCsvMeta?.signature) {
throw new Error('expected signed activity invite CSV after mesh push')
if (!pushed?.signature && !v.activityInviteJsonMeta?.signature) {
throw new Error('expected signed activity invite JSON after mesh push')
}
return {
guildActivityCsvCount: (v.activityInviteCsvRows || []).length + (v.guildActivityInvites || []).length,
hasMeta: v.activityInviteCsvMeta != null
guildActivityJsonCount: (v.activityInviteJsonRows || []).length + (v.guildActivityInvites || []).length,
hasMeta: v.activityInviteJsonMeta != null
}
}
@@ -4260,15 +4260,52 @@ class HeadlessSession {
const pushed = await this.platform.pushProfileBannerExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed profile banner CSV export')
throw new Error('expected signed profile banner JSON export')
}
return {
guildActivityCsvCount: (v.profileBannerExportCsvRows || []).length,
guildActivityJsonCount: (v.profileBannerExportJsonRows || []).length,
hasProfileBannerExport:
v.lastProfileBannerExport != null || (v.profileBannerExportCsvRows || []).length > 0
v.lastProfileBannerExport != null || (v.profileBannerExportJsonRows || []).length > 0
}
}
async runSessionActivityJsonJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'sa712', displayName: 'Session Activity 712' })
await this.createGuild({ name: 'Session Activity 712', publicListing: false })
await this.wait({ mode: 'guild' }, 45000)
await this.refreshView()
this.platform.setPresence('online', 'Phase712 session', { name: 'Pearcord', type: 'playing', partySize: 1 })
const pushed = await this.platform.pushSessionActivityJsonToMesh()
const v = await this.refreshView()
if (!pushed?.signature && !v.sessionActivityJsonMeta?.signature) {
throw new Error('expected signed session activity JSON after mesh push')
}
return {
guildSessionJsonCount: (v.sessionActivityJsonRows || []).length + (v.guildSessionActivities || []).length,
hasMeta: v.sessionActivityJsonMeta != null
}
}
async runAvatarDecorationExportJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'ad712', displayName: 'Avatar Decoration 712' })
await this.createGuild({ name: 'Avatar Decoration 712', publicListing: true })
await this.wait({ mode: 'guild' }, 45000)
await this.refreshView()
const pushed = await this.platform.pushAvatarDecorationExportToMesh()
const v = await this.refreshView()
if (!pushed?.signature) {
throw new Error('expected signed avatar decoration JSON export')
}
return {
guildSessionJsonCount: (v.avatarDecorationExportJsonRows || []).length,
hasAvatarDecorationExport:
v.lastAvatarDecorationExport != null || (v.avatarDecorationExportJsonRows || []).length > 0
}
}
async runForumPostSearchJourney () {
if (!this.platform) throw new Error('headless not started')
await this.registerUser({ username: 'fm672', displayName: 'Forum 672' })