feat(agentctl): forum cache and thread parent perms scenarios (v0.8.265)
Add selectSecondForumChannel step plus agentctl-forum-channel-cache and agentctl-thread-parent-perms scenarios for cache invalidation and perms. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -152,10 +152,12 @@ Bundled scenarios under `apps/pearcord/scenarios/`:
|
|||||||
| `agentctl-guild-load-supersede.json` | Second `create-guild` + beta search not served from cache (v0.8.263) |
|
| `agentctl-guild-load-supersede.json` | Second `create-guild` + beta search not served from cache (v0.8.263) |
|
||||||
| `agentctl-channel-search.json` | Channel-scoped `update-search` hit (v0.8.264) |
|
| `agentctl-channel-search.json` | Channel-scoped `update-search` hit (v0.8.264) |
|
||||||
| `agentctl-mark-read-mention-alerts.json` | Seed mention alert + `markActiveChannelRead` clears `mentionAlerts` (v0.8.264) |
|
| `agentctl-mark-read-mention-alerts.json` | Seed mention alert + `markActiveChannelRead` clears `mentionAlerts` (v0.8.264) |
|
||||||
|
| `agentctl-forum-channel-cache.json` | Forum search then switch forum → empty hits (v0.8.265) |
|
||||||
|
| `agentctl-thread-parent-perms.json` | Thread exposes `parentChannelPermissions` in view (v0.8.265) |
|
||||||
|
|
||||||
`mesh.connectGuildMeshThread(scenarioPath)` — host steps + invite + `create-thread` + reply; guest must receive `threadReply` token.
|
`mesh.connectGuildMeshThread(scenarioPath)` — host steps + invite + `create-thread` + reply; guest must receive `threadReply` token.
|
||||||
|
|
||||||
Scenario step extras (headless + attached `run`): `joinFirstVoice`, `openDmPeer`, `selectFirstForumChannel`, `markActiveChannelRead`, `seedMentionAlertForActiveChannel`, `createThreadFromLastMessage`, `markThreadAndParentRead`, `messagesMin`, `messageContentIncludes`, `searchResultsMin`, `searchResultsMax`, `mentionAlertCountMax` on `wait`.
|
Scenario step extras (headless + attached `run`): `joinFirstVoice`, `openDmPeer`, `selectFirstForumChannel`, `selectSecondForumChannel`, `markActiveChannelRead`, `seedMentionAlertForActiveChannel`, `createThreadFromLastMessage`, `markThreadAndParentRead`, `messagesMin`, `messageContentIncludes`, `searchResultsMin`, `searchResultsMax`, `mentionAlertCountMax`, `parentChannelPermissions` on `wait`.
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
|
|||||||
@@ -126,6 +126,13 @@ class HeadlessSession {
|
|||||||
const view = await this.ipc({ type: 'select-channel', channelId: ch.id })
|
const view = await this.ipc({ type: 'select-channel', channelId: ch.id })
|
||||||
results.push({ selectFirstForumChannel: true, channelId: ch.id, view })
|
results.push({ selectFirstForumChannel: true, channelId: ch.id, view })
|
||||||
}
|
}
|
||||||
|
if (step.selectSecondForumChannel) {
|
||||||
|
const forums = (this._lastView?.channels || []).filter((c) => c.type === 'forum')
|
||||||
|
if (forums.length < 2) throw new Error('need at least two forum channels')
|
||||||
|
const ch = forums[1]
|
||||||
|
const view = await this.ipc({ type: 'select-channel', channelId: ch.id })
|
||||||
|
results.push({ selectSecondForumChannel: true, channelId: ch.id, view })
|
||||||
|
}
|
||||||
if (step.markActiveChannelRead) {
|
if (step.markActiveChannelRead) {
|
||||||
const chId = this._lastView?.activeChannelId
|
const chId = this._lastView?.activeChannelId
|
||||||
if (!chId) throw new Error('no active channel for mark-channel-read')
|
if (!chId) throw new Error('no active channel for mark-channel-read')
|
||||||
|
|||||||
Reference in New Issue
Block a user