oh-my-opencode/src/shared/session-utils.ts
YeonGyu-Kim 560d13dc70 Normalize agent name comparisons to handle display name keys
Hooks and tools now use getAgentConfigKey() to resolve agent names (which may
be display names like 'Atlas (Plan Executor)') to lowercase config keys
before comparison.

- session-utils: orchestrator check uses getAgentConfigKey
- atlas event-handler: boulder agent matching uses config keys
- category-skill-reminder: target agent check uses config keys
- todo-continuation-enforcer: skipAgents comparison normalized
- subagent-resolver: resolves 'metis' -> 'Metis (Plan Consultant)' for lookup
2026-02-16 20:43:09 +09:00

26 lines
1.0 KiB
TypeScript

import { findNearestMessageWithFields, findNearestMessageWithFieldsFromSDK } from "../features/hook-message-injector"
import { getMessageDir } from "./opencode-message-dir"
import { isSqliteBackend } from "./opencode-storage-detection"
import { log } from "./logger"
import { getAgentConfigKey } from "./agent-display-names"
import type { PluginInput } from "@opencode-ai/plugin"
export async function isCallerOrchestrator(sessionID?: string, client?: PluginInput["client"]): Promise<boolean> {
if (!sessionID) return false
if (isSqliteBackend() && client) {
try {
const nearest = await findNearestMessageWithFieldsFromSDK(client, sessionID)
return getAgentConfigKey(nearest?.agent ?? "") === "atlas"
} catch (error) {
log("[session-utils] SDK orchestrator check failed", { sessionID, error: String(error) })
return false
}
}
const messageDir = getMessageDir(sessionID)
if (!messageDir) return false
const nearest = findNearestMessageWithFields(messageDir)
return getAgentConfigKey(nearest?.agent ?? "") === "atlas"
}