Add room skill setting mutations (#133)
* add gated codex goals support * sync README SDK versions * bump claude agent sdk * add codex goals settings toggle * reuse status dashboard message and simplify settings actions * refine settings page UX * fix settings nav hash routing * add dashboard UX verification * refine dashboard settings and inbox UX * remove inbox top-level navigation * remove dashboard health top-level navigation * fix: allow runtime image attachment paths * feat: configure attachment allowlist dirs * fix: clean duplicate dashboard status messages * fix: poll dashboard duplicate cleanup between status updates * fix: delete dashboard duplicates on create * Refine settings IA with tabbed sections * Add read-only runtime inventory settings * Fix runtime inventory MCP JSON parsing * Add room skill settings inventory * Add room skill setting mutations
This commit is contained in:
@@ -38,6 +38,14 @@ export interface StoredRoomSkillOverride {
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface StoredRoomSkillOverrideInput {
|
||||
chatJid: string;
|
||||
agentType: AgentType;
|
||||
skillScope: string;
|
||||
skillName: string;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export interface AssignRoomInput {
|
||||
name: string;
|
||||
roomMode?: RoomMode;
|
||||
@@ -373,6 +381,56 @@ export function getStoredRoomSkillOverridesFromDatabase(
|
||||
.filter((row): row is StoredRoomSkillOverride => Boolean(row));
|
||||
}
|
||||
|
||||
export function upsertStoredRoomSkillOverrideInDatabase(
|
||||
database: Database,
|
||||
input: StoredRoomSkillOverrideInput,
|
||||
): void {
|
||||
const agentType = normalizeStoredAgentType(input.agentType);
|
||||
if (!agentType) {
|
||||
throw new Error(`Unsupported agent type: ${input.agentType}`);
|
||||
}
|
||||
const now = new Date().toISOString();
|
||||
database
|
||||
.prepare(
|
||||
`INSERT INTO room_skill_overrides (
|
||||
chat_jid, agent_type, skill_scope, skill_name, enabled,
|
||||
created_at, updated_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
ON CONFLICT(chat_jid, agent_type, skill_scope, skill_name)
|
||||
DO UPDATE SET
|
||||
enabled = excluded.enabled,
|
||||
updated_at = excluded.updated_at`,
|
||||
)
|
||||
.run(
|
||||
input.chatJid,
|
||||
agentType,
|
||||
input.skillScope,
|
||||
input.skillName,
|
||||
input.enabled ? 1 : 0,
|
||||
now,
|
||||
now,
|
||||
);
|
||||
}
|
||||
|
||||
export function deleteStoredRoomSkillOverrideFromDatabase(
|
||||
database: Database,
|
||||
input: Omit<StoredRoomSkillOverrideInput, 'enabled'>,
|
||||
): void {
|
||||
const agentType = normalizeStoredAgentType(input.agentType);
|
||||
if (!agentType) {
|
||||
throw new Error(`Unsupported agent type: ${input.agentType}`);
|
||||
}
|
||||
database
|
||||
.prepare(
|
||||
`DELETE FROM room_skill_overrides
|
||||
WHERE chat_jid = ?
|
||||
AND agent_type = ?
|
||||
AND skill_scope = ?
|
||||
AND skill_name = ?`,
|
||||
)
|
||||
.run(input.chatJid, agentType, input.skillScope, input.skillName);
|
||||
}
|
||||
|
||||
function getStoredRoomModeRowFromDatabase(
|
||||
database: Database,
|
||||
chatJid: string,
|
||||
|
||||
@@ -28,6 +28,7 @@ import {
|
||||
assignRoomInDatabase,
|
||||
clearExplicitRoomModeInDatabase,
|
||||
deleteStoredRoomSettingsForTestsInDatabase,
|
||||
deleteStoredRoomSkillOverrideFromDatabase,
|
||||
getAllRoomBindingsFromDatabase,
|
||||
getEffectiveRoomModeFromDatabase,
|
||||
getEffectiveRuntimeRoomModeFromDatabase,
|
||||
@@ -41,7 +42,9 @@ import {
|
||||
setRegisteredGroupForTestsInDatabase,
|
||||
setStoredRoomOwnerAgentTypeForTestsInDatabase,
|
||||
type StoredRoomSkillOverride,
|
||||
type StoredRoomSkillOverrideInput,
|
||||
updateRegisteredGroupNameInDatabase,
|
||||
upsertStoredRoomSkillOverrideInDatabase,
|
||||
} from './rooms.js';
|
||||
import { type StoredRoomSettings } from './room-registration.js';
|
||||
import {
|
||||
@@ -373,6 +376,18 @@ export function getStoredRoomSkillOverrides(
|
||||
return getStoredRoomSkillOverridesFromDatabase(db, chatJid);
|
||||
}
|
||||
|
||||
export function upsertStoredRoomSkillOverride(
|
||||
input: StoredRoomSkillOverrideInput,
|
||||
): void {
|
||||
upsertStoredRoomSkillOverrideInDatabase(requireDatabase(), input);
|
||||
}
|
||||
|
||||
export function deleteStoredRoomSkillOverride(
|
||||
input: Omit<StoredRoomSkillOverrideInput, 'enabled'>,
|
||||
): void {
|
||||
deleteStoredRoomSkillOverrideFromDatabase(requireDatabase(), input);
|
||||
}
|
||||
|
||||
export function getExplicitRoomMode(chatJid: string): RoomMode | undefined {
|
||||
return getExplicitRoomModeFromDatabase(requireDatabase(), chatJid);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user