style: apply prettier formatting

This commit is contained in:
ejclaw
2026-04-09 22:50:21 +09:00
parent 5714348897
commit 7753ee46f0
7 changed files with 64 additions and 49 deletions

View File

@@ -469,7 +469,6 @@ describe('session accessors', () => {
expect(hasServiceSessions).toBe(false); expect(hasServiceSessions).toBe(false);
migratedDb.close(); migratedDb.close();
}); });
}); });
// --- storeChatMetadata --- // --- storeChatMetadata ---
@@ -1181,7 +1180,9 @@ describe('paired task state', () => {
}); });
it('preserves stored reviewer service ids during init even when reviewer agent metadata exists', () => { it('preserves stored reviewer service ids during init even when reviewer agent metadata exists', () => {
const tempDir = fs.mkdtempSync('/tmp/ejclaw-channel-owner-stored-reviewer-'); const tempDir = fs.mkdtempSync(
'/tmp/ejclaw-channel-owner-stored-reviewer-',
);
const dbPath = path.join(tempDir, 'messages.db'); const dbPath = path.join(tempDir, 'messages.db');
const legacyDb = new Database(dbPath); const legacyDb = new Database(dbPath);
@@ -2858,7 +2859,6 @@ describe('service handoff completion', () => {
}), }),
]); ]);
}); });
}); });
describe('message seq cursors', () => { describe('message seq cursors', () => {
@@ -3029,10 +3029,12 @@ describe('message seq cursors', () => {
_initTestDatabaseFromFile(dbPath); _initTestDatabaseFromFile(dbPath);
expect( expect(
getMessagesSinceSeq('dc:legacy-partial-seq', 0, 'Andy').map((message) => ({ getMessagesSinceSeq('dc:legacy-partial-seq', 0, 'Andy').map(
id: message.id, (message) => ({
seq: message.seq, id: message.id,
})), seq: message.seq,
}),
),
).toEqual([ ).toEqual([
{ id: 'legacy-existing-seq', seq: 1 }, { id: 'legacy-existing-seq', seq: 1 },
{ id: 'legacy-missing-seq', seq: 2 }, { id: 'legacy-missing-seq', seq: 2 },
@@ -3309,7 +3311,9 @@ describe('legacy schema writes after init', () => {
}); });
it('creates channel owner leases after init on a canonical channel_owner schema without service id columns', () => { it('creates channel owner leases after init on a canonical channel_owner schema without service id columns', () => {
const tempDir = fs.mkdtempSync('/tmp/ejclaw-canonical-channel-owner-write-'); const tempDir = fs.mkdtempSync(
'/tmp/ejclaw-canonical-channel-owner-write-',
);
const dbPath = path.join(tempDir, 'messages.db'); const dbPath = path.join(tempDir, 'messages.db');
const legacyDb = new Database(dbPath); const legacyDb = new Database(dbPath);
@@ -3594,9 +3598,15 @@ describe('work items', () => {
}); });
expect( expect(
getOpenWorkItem('dc:stored-service-mismatch', 'codex', CODEX_MAIN_SERVICE_ID), getOpenWorkItem(
'dc:stored-service-mismatch',
'codex',
CODEX_MAIN_SERVICE_ID,
),
).toBeUndefined();
expect(
getOpenWorkItemForChat('dc:stored-service-mismatch'),
).toBeUndefined(); ).toBeUndefined();
expect(getOpenWorkItemForChat('dc:stored-service-mismatch')).toBeUndefined();
}); });
it('allows a current-service open work item even when a stale-service open row already exists', () => { it('allows a current-service open work item even when a stale-service open row already exists', () => {
@@ -3611,7 +3621,9 @@ describe('work items', () => {
result_payload: 'stale reviewer output', result_payload: 'stale reviewer output',
}); });
expect(getOpenWorkItemForChat('dc:repro', CODEX_MAIN_SERVICE_ID)).toBeUndefined(); expect(
getOpenWorkItemForChat('dc:repro', CODEX_MAIN_SERVICE_ID),
).toBeUndefined();
const currentItem = createProducedWorkItem({ const currentItem = createProducedWorkItem({
group_folder: 'discord_test', group_folder: 'discord_test',
@@ -3624,9 +3636,9 @@ describe('work items', () => {
result_payload: 'current reviewer output', result_payload: 'current reviewer output',
}); });
expect( expect(getOpenWorkItemForChat('dc:repro', CODEX_MAIN_SERVICE_ID)?.id).toBe(
getOpenWorkItemForChat('dc:repro', CODEX_MAIN_SERVICE_ID)?.id, currentItem.id,
).toBe(currentItem.id); );
}); });
it('backfills work item service ids during init on a canonical work_items schema without service_id columns', () => { it('backfills work item service ids during init on a canonical work_items schema without service_id columns', () => {

View File

@@ -1,9 +1,6 @@
import { Database } from 'bun:sqlite'; import { Database } from 'bun:sqlite';
import { import { ARBITER_AGENT_TYPE, REVIEWER_AGENT_TYPE } from '../config.js';
ARBITER_AGENT_TYPE,
REVIEWER_AGENT_TYPE,
} from '../config.js';
import { import {
collectRegisteredAgentTypes, collectRegisteredAgentTypes,
collectRegisteredAgentTypesForFolder, collectRegisteredAgentTypesForFolder,

View File

@@ -570,22 +570,25 @@ function backfillCanonicalWorkItemServiceIds(database: Database): void {
SET service_id = ? SET service_id = ?
WHERE id = ?`, WHERE id = ?`,
); );
const tx = database.transaction((workItemRows: StoredWorkItemServiceRow[]) => { const tx = database.transaction(
for (const row of workItemRows) { (workItemRows: StoredWorkItemServiceRow[]) => {
const agentType = normalizeStoredAgentType(row.agent_type) ?? 'claude-code'; for (const row of workItemRows) {
const deliveryRole = normalizePairedRole(row.delivery_role) ?? 'owner'; const agentType =
const serviceId = normalizeStoredAgentType(row.agent_type) ?? 'claude-code';
(row.service_id ? normalizeServiceId(row.service_id) : null) ?? const deliveryRole = normalizePairedRole(row.delivery_role) ?? 'owner';
resolveRoleServiceShadow(deliveryRole, agentType) ?? const serviceId =
SERVICE_SESSION_SCOPE; (row.service_id ? normalizeServiceId(row.service_id) : null) ??
resolveRoleServiceShadow(deliveryRole, agentType) ??
SERVICE_SESSION_SCOPE;
if (row.service_id === serviceId) { if (row.service_id === serviceId) {
continue; continue;
}
update.run(serviceId, row.id);
} }
},
update.run(serviceId, row.id); );
}
});
tx(rows); tx(rows);
} }
@@ -735,7 +738,10 @@ export function applySchemaMigrations(
database, database,
`ALTER TABLE work_items ADD COLUMN delivery_role TEXT`, `ALTER TABLE work_items ADD COLUMN delivery_role TEXT`,
); );
tryExecMigration(database, `ALTER TABLE work_items ADD COLUMN service_id TEXT`); tryExecMigration(
database,
`ALTER TABLE work_items ADD COLUMN service_id TEXT`,
);
database.exec( database.exec(
`UPDATE service_handoffs `UPDATE service_handoffs
@@ -766,7 +772,10 @@ export function applySchemaMigrations(
'reviewer_agent_type', 'reviewer_agent_type',
'arbiter_agent_type', 'arbiter_agent_type',
]) { ]) {
tryExecMigration(database, `ALTER TABLE channel_owner ADD COLUMN ${column} TEXT`); tryExecMigration(
database,
`ALTER TABLE channel_owner ADD COLUMN ${column} TEXT`,
);
} }
backfillCanonicalPairedTaskServiceIds(database); backfillCanonicalPairedTaskServiceIds(database);
@@ -1127,5 +1136,4 @@ export function applySchemaMigrations(
} catch { } catch {
/* columns already exist */ /* columns already exist */
} }
} }

View File

@@ -86,7 +86,8 @@ function resolvePreferredWorkItemRole(
return null; return null;
} }
const inferredAgentType = inferAgentTypeFromServiceShadow(normalizedServiceId); const inferredAgentType =
inferAgentTypeFromServiceShadow(normalizedServiceId);
return inferRoleFromServiceShadow(inferredAgentType, normalizedServiceId); return inferRoleFromServiceShadow(inferredAgentType, normalizedServiceId);
} }
@@ -131,9 +132,7 @@ export function getOpenWorkItemFromDatabase(
normalizedServiceId, normalizedServiceId,
preferredRole, preferredRole,
preferredRole, preferredRole,
) as ) as StoredWorkItemRow | undefined;
| StoredWorkItemRow
| undefined;
return row ? hydrateWorkItemRow(row) : undefined; return row ? hydrateWorkItemRow(row) : undefined;
} }

View File

@@ -135,10 +135,7 @@ export function recoverPendingMessages(args: {
}): void { }): void {
const registeredGroups = args.getRegisteredGroups(); const registeredGroups = args.getRegisteredGroups();
for (const [chatJid, group] of Object.entries(registeredGroups)) { for (const [chatJid, group] of Object.entries(registeredGroups)) {
const openWorkItem = getOpenWorkItemForChat( const openWorkItem = getOpenWorkItemForChat(chatJid, SERVICE_SESSION_SCOPE);
chatJid,
SERVICE_SESSION_SCOPE,
);
if (openWorkItem) { if (openWorkItem) {
logger.info( logger.info(
{ chatJid, group: group.name, workItemId: openWorkItem.id }, { chatJid, group: group.name, workItemId: openWorkItem.id },

View File

@@ -7,7 +7,10 @@ import {
getLastBotFinalMessage, getLastBotFinalMessage,
getLatestOpenPairedTaskForChat, getLatestOpenPairedTaskForChat,
} from './db.js'; } from './db.js';
import { isSessionCommandSenderAllowed, SERVICE_SESSION_SCOPE } from './config.js'; import {
isSessionCommandSenderAllowed,
SERVICE_SESSION_SCOPE,
} from './config.js';
import { GroupQueue, GroupRunContext } from './group-queue.js'; import { GroupQueue, GroupRunContext } from './group-queue.js';
import { import {
findChannel, findChannel,
@@ -480,10 +483,7 @@ export function createMessageRuntime(deps: MessageRuntimeDeps): {
// Delivery retries can come from forced fallback runs whose agent_type // Delivery retries can come from forced fallback runs whose agent_type
// differs from the room owner's registered agent type. // differs from the room owner's registered agent type.
const openWorkItem = getOpenWorkItemForChat( const openWorkItem = getOpenWorkItemForChat(chatJid, SERVICE_SESSION_SCOPE);
chatJid,
SERVICE_SESSION_SCOPE,
);
const openWorkItemOutcome = await processOpenWorkItemDelivery({ const openWorkItemOutcome = await processOpenWorkItemDelivery({
chatJid, chatJid,
runId, runId,

View File

@@ -76,7 +76,9 @@ function normalizeLeaseRow(
reviewer_agent_type: reviewerAgentType, reviewer_agent_type: reviewerAgentType,
arbiter_agent_type: arbiterAgentType, arbiter_agent_type: arbiterAgentType,
owner_service_id: owner_service_id:
(row.owner_service_id ? normalizeServiceId(row.owner_service_id) : null) ?? (row.owner_service_id
? normalizeServiceId(row.owner_service_id)
: null) ??
resolveRoleServiceShadow('owner', ownerAgentType) ?? resolveRoleServiceShadow('owner', ownerAgentType) ??
normalizeServiceId(SERVICE_ID), normalizeServiceId(SERVICE_ID),
reviewer_service_id: reviewer_service_id: