toeverything/AFFiNE · error · napi::Error
Action recipe not found
Error message
Action recipe not found
What it means
copilot_action_recipe NAPI function could not resolve the requested recipe: either the version is not 'v1' or the action_id has no matching recipe in the embedded catalog, so an InvalidArg error is returned to the JS caller.
Source
Thrown at packages/backend/native/src/llm/action/catalog.rs:20
use serde::Serialize;
use serde_json::{Value, json};
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
struct ActionRecipe<'a> {
action_id: &'a str,
action_version: &'a str,
slot: &'a str,
prompt_ref: &'a str,
response_contract: Value,
output_projection: &'a str,
}
#[napi_derive::napi]
pub fn copilot_action_recipe(action_id: String, action_version: Option<String>) -> Result<String> {
let version = action_version.as_deref().unwrap_or("v1");
if version != "v1" {
return Err(Error::new(Status::InvalidArg, "Action recipe not found"));
}
let recipe = match action_id.as_str() {
"mindmap.generate" => structured(&action_id, "mindmap.generate", text_result_schema()),
"slides.outline" => structured(&action_id, "slides.outline", text_result_schema()),
"transcript.audio" => structured(
&action_id,
"Transcript audio structured",
super::super::contract_schema::transcript_result_schema(),
),
"image.filter.sketch" | "image.filter.clay" | "image.filter.anime" | "image.filter.pixel" => ActionRecipe {
action_id: &action_id,
action_version: "v1",
slot: match action_id.as_str() {
"image.filter.sketch" => "action.image.filter.sketch",
"image.filter.clay" => "action.image.filter.clay",
"image.filter.anime" => "action.image.filter.anime",
_ => "action.image.filter.pixel",
},View on GitHub (pinned to b4c8548c09)
Solutions
- Use an action id present in the catalog.
- Register the missing action recipe.
Defensive patterns
Strategy: validation
When it happens
Trigger: Returned by copilot_action_recipe when the requested action_version is not v1 or the action_id does not match any built-in recipe such as mindmap.generate, slides.outline, transcript.audio, or the image.filter actions.
Common situations: The requested copilot action id or version is not registered in the native catalog. Check the action id spelling and use version v1.
AI-assisted analysis of toeverything/AFFiNE@b4c8548c09 (2026-08-18).
Data as JSON: /api/errors/46ba486d3b69bce7.
Report an issue: GitHub.