Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e8ab3d8
feat(bot-mode): add hosted room authority and replay
dokterdok Aug 26, 2026
440be65
feat(bot-mode): keep same-gateway rooms running without Desktop
dokterdok Aug 27, 2026
a2bed16
fix(bot-mode): preserve queued room turns and stop fences
dokterdok Aug 27, 2026
1f37602
test(bot-mode): use deterministic clocks for lease recovery
dokterdok Aug 27, 2026
cde0d72
feat(api): add durable runs idempotency
Aug 17, 2026
7e9d567
feat(peer): add async run and status commands
Aug 26, 2026
c67eeb9
docs(peer): document async run and durable idempotency
Aug 26, 2026
f95e6cd
fix(peer): route peer requests through the credential redirect guard
pierrenode Aug 26, 2026
a7a5174
fix(bot-mode): pin the registry-owning profile on peer deliveries
liuhao1024 Aug 26, 2026
f02429b
fix(peer): reconcile durable async run recovery
dokterdok Aug 26, 2026
19c8b3d
chore(contributors): preserve peer salvage attribution
dokterdok Aug 26, 2026
8d20a2a
refactor(api): isolate run idempotency storage
dokterdok Aug 27, 2026
86c7258
feat(bot-mode): add scoped cross-gateway RoomLink
dokterdok Aug 26, 2026
82a9d13
feat(bot-mode): secure autonomous room links
dokterdok Aug 26, 2026
ee90c19
fix(bot-mode): harden RoomLink lifecycle and protocol parity
dokterdok Aug 27, 2026
2f1d5c2
refactor(api): extract RoomLink grant handlers
dokterdok Aug 27, 2026
1abf778
refactor(api): extract RoomLink dispatch handling
dokterdok Aug 27, 2026
773c178
refactor(api): extract durable run control
dokterdok Aug 27, 2026
39387fa
refactor(api): isolate RoomLink run authority
dokterdok Aug 27, 2026
9147044
fix(bot-mode): queue unreachable RoomLink turns
dokterdok Aug 27, 2026
3ed4c52
fix(bot-mode): preserve decomposed approval and v2 contracts
dokterdok Aug 27, 2026
1a83588
test(bot-mode): compose RoomLink stop coverage with room fences
dokterdok Aug 27, 2026
f13a13f
fix(bot-mode): acknowledge terminal peer stops
dokterdok Aug 27, 2026
7cf0b44
fix(bot-mode): inherit RoomLink endpoint in profiles
dokterdok Aug 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,152 changes: 1,152 additions & 0 deletions apps/desktop/src/plugins/hermes-bots/hosted-room-client.js

Large diffs are not rendered by default.

1,073 changes: 1,012 additions & 61 deletions apps/desktop/src/plugins/hermes-bots/plugin.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,23 @@ test('source contract: every selected machine is persisted in the durable room r
assert.match(pluginSource, /room\.members = roomMembers/)
assert.doesNotMatch(pluginSource, /const remoteMembers = selected/)
})

test('source contract: creation negotiates continuity without exposing routing jargon', () => {
assert.match(pluginSource, /resolveAutonomousRoomPlan\(selected/)
assert.match(pluginSource, /describeAutonomousRoomPlan\(plan/)
assert.match(pluginSource, /setKeepRunning\(copy\.defaultEnabled && keepRunningPreference\.current !== 'off'\)/)
assert.match(pluginSource, /withHostedRoomProbeTimeout\(Promise\.all/)
assert.match(pluginSource, /disabled: !canCreate \|\| createPending \|\| hostProbePending/)
assert.match(pluginSource, /jsxs\('details'/)
assert.match(pluginSource, /'Advanced'/)
assert.match(pluginSource, /'groups\.peer\.invite'/)
assert.match(pluginSource, /'groups\.peer\.register'/)
assert.match(pluginSource, /Checking room continuity/)
assert.doesNotMatch(pluginSource, /children: 'RoomLink'/)
assert.doesNotMatch(pluginSource, /children: 'Peer transport'/)
})

test('source contract: an admitted autonomous room must roll back before any Desktop fallback', () => {
assert.match(pluginSource, /cancel_id: `rollback-\$\{roomId\}`/)
assert.doesNotMatch(pluginSource, /Room created\. Keep Desktop open until its gateways are ready\./)
})
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ test('source contract: settings dialog edits name and picture after creation', (
assert.match(pluginSource, /Group settings — rename \$\{group\} or set a room picture/)
})

test('source contract: settings explain the active background-work level', () => {
assert.match(pluginSource, /children: 'Background work'/)
assert.match(pluginSource, /Continues when Desktop is closed/)
assert.match(pluginSource, /Keep Desktop open while this room is working/)
assert.doesNotMatch(pluginSource, /children: 'RoomLink'/)
})

test('source contract: rename re-keys the room AND local memberships, keeps sessions', () => {
// The room record moves wholesale under the new key (sessions included, so
// members keep resuming their per-group sessions by stored sid).
Expand Down
Loading
Loading