refactor: centralize host evidence actions (#194)

This commit is contained in:
Eyejoker
2026-05-30 00:08:28 +09:00
committed by GitHub
parent adf9c16b9a
commit 46b5543cb5
8 changed files with 193 additions and 143 deletions

View File

@@ -0,0 +1,78 @@
export const DB_EVIDENCE_ACTIONS = [
'db_paired_task_status',
'db_paired_task_flow',
'db_recent_paired_failures',
'db_recent_scheduled_tasks',
'db_scheduled_task_runs',
] as const;
export const DEPLOY_EVIDENCE_ACTIONS = [
'ejclaw_deploy_state',
'ejclaw_artifact_metadata',
] as const;
export const GITHUB_EVIDENCE_ACTIONS = [
'github_pr_status',
'github_pr_diff_stat',
'github_run_status',
'github_run_jobs',
'github_workflow_file',
] as const;
export const HOST_EVIDENCE_ACTIONS = [
'ejclaw_service_status',
'ejclaw_service_logs',
'ejclaw_role_runtime_config',
...DEPLOY_EVIDENCE_ACTIONS,
...DB_EVIDENCE_ACTIONS,
...GITHUB_EVIDENCE_ACTIONS,
] as const;
export const ARTIFACT_EVIDENCE_KINDS = [
'build_outputs',
'dashboard_dist',
'runner_dist',
'android_debug_apk',
'attachments_dir',
] as const;
export type DbEvidenceAction = (typeof DB_EVIDENCE_ACTIONS)[number];
export type DeployEvidenceAction = (typeof DEPLOY_EVIDENCE_ACTIONS)[number];
export type GitHubEvidenceAction = (typeof GITHUB_EVIDENCE_ACTIONS)[number];
export type HostEvidenceAction = (typeof HOST_EVIDENCE_ACTIONS)[number];
export type ArtifactEvidenceKind = (typeof ARTIFACT_EVIDENCE_KINDS)[number];
function includesEvidenceValue<T extends readonly string[]>(
values: T,
value: unknown,
): value is T[number] {
return typeof value === 'string' && values.includes(value as T[number]);
}
export function isDbEvidenceAction(value: unknown): value is DbEvidenceAction {
return includesEvidenceValue(DB_EVIDENCE_ACTIONS, value);
}
export function isDeployEvidenceAction(
value: unknown,
): value is DeployEvidenceAction {
return includesEvidenceValue(DEPLOY_EVIDENCE_ACTIONS, value);
}
export function isGitHubEvidenceAction(
value: unknown,
): value is GitHubEvidenceAction {
return includesEvidenceValue(GITHUB_EVIDENCE_ACTIONS, value);
}
export function isHostEvidenceAction(
value: unknown,
): value is HostEvidenceAction {
return includesEvidenceValue(HOST_EVIDENCE_ACTIONS, value);
}
export function isArtifactEvidenceKind(
value: unknown,
): value is ArtifactEvidenceKind {
return includesEvidenceValue(ARTIFACT_EVIDENCE_KINDS, value);
}

View File

@@ -10,6 +10,23 @@ export {
PAIRED_ROOM_ROLES,
type PairedRoomRole,
} from './paired-room-role.js';
export {
ARTIFACT_EVIDENCE_KINDS,
DB_EVIDENCE_ACTIONS,
DEPLOY_EVIDENCE_ACTIONS,
GITHUB_EVIDENCE_ACTIONS,
HOST_EVIDENCE_ACTIONS,
isArtifactEvidenceKind,
isDbEvidenceAction,
isDeployEvidenceAction,
isGitHubEvidenceAction,
isHostEvidenceAction,
type ArtifactEvidenceKind,
type DbEvidenceAction,
type DeployEvidenceAction,
type GitHubEvidenceAction,
type HostEvidenceAction,
} from './evidence-actions.js';
export {
extractMarkdownImageAttachments,
extractMediaAttachments,