Route document workflow prompts through app core

This commit is contained in:
2026-06-02 22:36:05 +02:00
parent d28aa25358
commit c8d769c02c
10 changed files with 130 additions and 96 deletions

View File

@@ -97,6 +97,7 @@ struct ClassifyOpenArgs {
};
struct SimulateAppSessionArgs {
bool has_canvas = true;
bool new_document = false;
bool unsaved = false;
bool close_prompt_open = false;
@@ -298,6 +299,20 @@ const char* document_save_decision_name(pp::app::DocumentSaveDecision decision)
return "no-op";
}
const char* document_workflow_decision_name(pp::app::DocumentWorkflowDecision decision) noexcept
{
switch (decision) {
case pp::app::DocumentWorkflowDecision::unavailable:
return "unavailable";
case pp::app::DocumentWorkflowDecision::continue_now:
return "continue-now";
case pp::app::DocumentWorkflowDecision::prompt_save_before_continue:
return "prompt-save-before-continue";
}
return "unavailable";
}
pp::foundation::Result<float> parse_float_arg(std::string_view text)
{
float value = 0.0F;
@@ -336,7 +351,7 @@ void print_help()
<< " simulate-document-edits [--width N] [--height N]\n"
<< " simulate-document-export [--width N] [--height N]\n"
<< " simulate-document-history [--width N] [--height N] [--history N]\n"
<< " simulate-app-session [--new-document] [--unsaved] [--close-prompt-open] [--save-intent save|save-as|save-version|save-dirty-version]\n"
<< " simulate-app-session [--no-canvas] [--new-document] [--unsaved] [--close-prompt-open] [--save-intent save|save-as|save-version|save-dirty-version]\n"
<< " simulate-blend\n"
<< " simulate-image-import [--width N] [--height N]\n"
<< " simulate-stroke --x1 N --y1 N --x2 N --y2 N [--spacing N]\n"
@@ -1178,6 +1193,8 @@ pp::foundation::Status parse_simulate_app_session_args(
const std::string_view key(argv[i]);
if (key == "--new-document") {
args.new_document = true;
} else if (key == "--no-canvas") {
args.has_canvas = false;
} else if (key == "--unsaved") {
args.unsaved = true;
} else if (key == "--close-prompt-open") {
@@ -1221,8 +1238,10 @@ int simulate_app_session(int argc, char** argv)
args.new_document,
args.unsaved,
args.save_intent);
const auto workflow_decision = pp::app::plan_document_workflow(args.has_canvas, args.unsaved);
std::cout << "{\"ok\":true,\"command\":\"simulate-app-session\""
<< ",\"state\":{\"newDocument\":" << json_bool(args.new_document)
<< ",\"state\":{\"hasCanvas\":" << json_bool(args.has_canvas)
<< ",\"newDocument\":" << json_bool(args.new_document)
<< ",\"unsaved\":" << json_bool(args.unsaved)
<< ",\"closePromptOpen\":" << json_bool(args.close_prompt_open)
<< "},\"decisions\":{\"projectOpen\":\""
@@ -1233,6 +1252,8 @@ int simulate_app_session(int argc, char** argv)
<< document_save_intent_name(args.save_intent)
<< "\",\"saveRequest\":\""
<< document_save_decision_name(save_decision)
<< "\",\"workflowStart\":\""
<< document_workflow_decision_name(workflow_decision)
<< "\"}}\n";
return 0;
}