feat: 新增技能编排引擎和工作流构建器组件
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
refactor: 统一Hands系统常量到单个源文件 refactor: 更新Hands中文名称和描述 fix: 修复技能市场在连接状态变化时重新加载 fix: 修复身份变更提案的错误处理逻辑 docs: 更新多个功能文档的验证状态和实现位置 docs: 更新Hands系统文档 test: 添加测试文件验证工作区路径
This commit is contained in:
79
desktop/src/constants/hands.ts
Normal file
79
desktop/src/constants/hands.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* Hand ID Constants - Single Source of Truth
|
||||
*
|
||||
* All Hand-related constants should reference this file.
|
||||
* Do NOT hardcode Hand IDs elsewhere.
|
||||
*/
|
||||
|
||||
// === Hand IDs (must match backend zclaw-hands) ===
|
||||
|
||||
export const HAND_IDS = {
|
||||
BROWSER: 'browser',
|
||||
RESEARCHER: 'researcher',
|
||||
COLLECTOR: 'collector',
|
||||
PREDICTOR: 'predictor',
|
||||
LEAD: 'lead',
|
||||
TRADER: 'trader',
|
||||
CLIP: 'clip',
|
||||
TWITTER: 'twitter',
|
||||
// Additional hands from backend
|
||||
SLIDESHOW: 'slideshow',
|
||||
SPEECH: 'speech',
|
||||
QUIZ: 'quiz',
|
||||
WHITEBOARD: 'whiteboard',
|
||||
} as const;
|
||||
|
||||
export type HandIdType = typeof HAND_IDS[keyof typeof HAND_IDS];
|
||||
|
||||
// === Hand Categories ===
|
||||
|
||||
export const HAND_CATEGORIES = {
|
||||
RESEARCH: 'research',
|
||||
DATA: 'data',
|
||||
AUTOMATION: 'automation',
|
||||
COMMUNICATION: 'communication',
|
||||
CONTENT: 'content',
|
||||
PRODUCTIVITY: 'productivity',
|
||||
} as const;
|
||||
|
||||
export type HandCategoryType = typeof HAND_CATEGORIES[keyof typeof HAND_CATEGORIES];
|
||||
|
||||
// === Hand ID to Category Mapping ===
|
||||
|
||||
export const HAND_CATEGORY_MAP: Record<string, HandCategoryType> = {
|
||||
[HAND_IDS.BROWSER]: HAND_CATEGORIES.RESEARCH,
|
||||
[HAND_IDS.RESEARCHER]: HAND_CATEGORIES.RESEARCH,
|
||||
[HAND_IDS.COLLECTOR]: HAND_CATEGORIES.DATA,
|
||||
[HAND_IDS.PREDICTOR]: HAND_CATEGORIES.DATA,
|
||||
[HAND_IDS.TRADER]: HAND_CATEGORIES.DATA,
|
||||
[HAND_IDS.LEAD]: HAND_CATEGORIES.COMMUNICATION,
|
||||
[HAND_IDS.TWITTER]: HAND_CATEGORIES.COMMUNICATION,
|
||||
[HAND_IDS.CLIP]: HAND_CATEGORIES.CONTENT,
|
||||
[HAND_IDS.SLIDESHOW]: HAND_CATEGORIES.CONTENT,
|
||||
[HAND_IDS.SPEECH]: HAND_CATEGORIES.CONTENT,
|
||||
[HAND_IDS.QUIZ]: HAND_CATEGORIES.PRODUCTIVITY,
|
||||
[HAND_IDS.WHITEBOARD]: HAND_CATEGORIES.PRODUCTIVITY,
|
||||
};
|
||||
|
||||
// === Helper Functions ===
|
||||
|
||||
/**
|
||||
* Get the category for a Hand ID
|
||||
*/
|
||||
export function getHandCategory(handId: string): HandCategoryType {
|
||||
return HAND_CATEGORY_MAP[handId] || HAND_CATEGORIES.PRODUCTIVITY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a Hand ID is valid
|
||||
*/
|
||||
export function isValidHandId(id: string): id is HandIdType {
|
||||
return Object.values(HAND_IDS).includes(id as HandIdType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Hand IDs as an array
|
||||
*/
|
||||
export function getAllHandIds(): string[] {
|
||||
return Object.values(HAND_IDS);
|
||||
}
|
||||
Reference in New Issue
Block a user