mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-30 22:22:02 +02:00
Implements a unified action system that serves as a single source of truth for all operations in Yaak (Tauri app, CLI, plugins, deep links, MCP server). Key features: - ActionExecutor: Combined registry and execution engine with async RwLock - ActionHandler: Trait-based handlers using async closures - Context system: RequiredContext and CurrentContext for action availability - Action groups: Organize related actions - TypeScript bindings: Auto-generated via ts-rs for frontend use Design highlights: - Handlers are closures (no dependencies on other yaak crates) - Registration requires both metadata and handler (prevents orphan actions) - Flexible return values via serde_json::Value - All methods are async using tokio All 33 tests passing. Ready for integration with yaak-core and yaak-app. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
55 lines
1.2 KiB
TypeScript
Generated
55 lines
1.2 KiB
TypeScript
Generated
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
|
import type { ActionGroupId } from "./ActionGroupId";
|
|
import type { ActionId } from "./ActionId";
|
|
import type { ActionScope } from "./ActionScope";
|
|
import type { RequiredContext } from "./RequiredContext";
|
|
|
|
/**
|
|
* Metadata about an action for discovery.
|
|
*/
|
|
export type ActionMetadata = {
|
|
/**
|
|
* Unique identifier for this action.
|
|
*/
|
|
id: ActionId,
|
|
/**
|
|
* Display label for the action.
|
|
*/
|
|
label: string,
|
|
/**
|
|
* Optional description of what the action does.
|
|
*/
|
|
description: string | null,
|
|
/**
|
|
* Icon name to display.
|
|
*/
|
|
icon: string | null,
|
|
/**
|
|
* The scope this action applies to.
|
|
*/
|
|
scope: ActionScope,
|
|
/**
|
|
* Keyboard shortcut (e.g., "Cmd+Enter").
|
|
*/
|
|
keyboardShortcut: string | null,
|
|
/**
|
|
* Whether the action requires a selection/target.
|
|
*/
|
|
requiresSelection: boolean,
|
|
/**
|
|
* Optional condition expression for when action is enabled.
|
|
*/
|
|
enabledCondition: string | null,
|
|
/**
|
|
* Optional group this action belongs to.
|
|
*/
|
|
groupId: ActionGroupId | null,
|
|
/**
|
|
* Sort order within a group (lower = earlier).
|
|
*/
|
|
order: number,
|
|
/**
|
|
* Context requirements for this action.
|
|
*/
|
|
requiredContext: RequiredContext, };
|