Files
devclaw-gitea/lib/roles/registry.ts
Lauren ten Hoor 0e24a68882 refactor: migrate role handling from tiers to roles module
- Removed the deprecated tiers.ts file and migrated all related functionality to roles/index.js.
- Updated tests and tools to reflect the new role structure, replacing references to "dev", "qa", and "architect" with "developer", "tester", and "architect".
- Adjusted workflow configurations and state management to accommodate the new role naming conventions.
- Enhanced project registration and health check tools to support dynamic role handling.
- Updated task creation, update, and completion processes to align with the new role definitions.
- Improved documentation and comments to clarify role responsibilities and usage.
2026-02-15 18:32:10 +08:00

78 lines
2.0 KiB
TypeScript

/**
* roles/registry.ts — Single source of truth for all worker roles.
*
* Adding a new role? Just add an entry here. Everything else derives from this.
*
* Each role defines:
* - Identity (id, displayName)
* - Levels and models
* - Emoji for announcements
* - Valid completion results
* - Session key matching
* - Notification preferences
*/
import type { RoleConfig } from "./types.js";
export const ROLE_REGISTRY: Record<string, RoleConfig> = {
developer: {
id: "developer",
displayName: "DEVELOPER",
levels: ["junior", "medior", "senior"],
defaultLevel: "medior",
models: {
junior: "anthropic/claude-haiku-4-5",
medior: "anthropic/claude-sonnet-4-5",
senior: "anthropic/claude-opus-4-5",
},
emoji: {
junior: "⚡",
medior: "🔧",
senior: "🧠",
},
fallbackEmoji: "🔧",
completionResults: ["done", "blocked"],
sessionKeyPattern: "developer",
notifications: { onStart: true, onComplete: true },
},
tester: {
id: "tester",
displayName: "TESTER",
levels: ["junior", "medior", "senior"],
defaultLevel: "medior",
models: {
junior: "anthropic/claude-haiku-4-5",
medior: "anthropic/claude-sonnet-4-5",
senior: "anthropic/claude-opus-4-5",
},
emoji: {
junior: "⚡",
medior: "🔍",
senior: "🧠",
},
fallbackEmoji: "🔍",
completionResults: ["pass", "fail", "refine", "blocked"],
sessionKeyPattern: "tester",
notifications: { onStart: true, onComplete: true },
},
architect: {
id: "architect",
displayName: "ARCHITECT",
levels: ["junior", "senior"],
defaultLevel: "junior",
models: {
junior: "anthropic/claude-sonnet-4-5",
senior: "anthropic/claude-opus-4-5",
},
emoji: {
junior: "📐",
senior: "🏗️",
},
fallbackEmoji: "🏗️",
completionResults: ["done", "blocked"],
sessionKeyPattern: "architect",
notifications: { onStart: true, onComplete: true },
},
};