载入中...
搜索中...
未找到
EditorAutomationProvider.cpp
浏览该文件的文档.
135std::string EditorAutomationProvider::invoke(const std::string& operation, const std::string& requestJson) {
139 return errorJson(EditorStatus::Rejected, "editor.automation.invalid-json", "Request must be a JSON object");
164 if (const auto* value = integerField(request, "expectedRevision")) expected = static_cast<Revision>(*value);
173 auto result = session_.executeRetainedPlan(PlanId(stringField(request, "planId")), CommandSource::Automation);
181 auto planned = session_.planCommand(command, valueField(request, "payload"), CommandSource::Automation);
207 const bool changed = operation == "undo" ? session_.transactions().undo() : session_.transactions().redo();
221 const auto* descriptor = descriptorValue ? descriptorValue->getIf<EditorValue::Object>() : nullptr;
247std::string EditorAutomationProvider::describeObservation(const EditorValue::Object& request) const {
251 return errorJson(EditorStatus::NotFound, "editor.automation.observe-session", "Observation session not found");
261 return errorJson(EditorStatus::NotFound, "editor.automation.observe-session", "Observation session not found");
264 return errorJson(EditorStatus::Rejected, "editor.automation.observe-event", "Observation event must be an object");
273 return errorJson(EditorStatus::NotFound, "editor.automation.observe-session", "Observation session not found");
291 return errorJson(EditorStatus::NotFound, "editor.automation.observe-session", "Observation session not found");
302 if (!value) return errorJson(EditorStatus::Failed, "editor.automation.target-list", "Could not build response");
322 eve::cap::forEach<IEditorAutomationTargetFactory>([&](IEditorAutomationTargetFactory* factory) {
340 return errorJson(EditorStatus::Rejected, "editor.automation.target-id", "Target id must not be empty");
342 return errorJson(EditorStatus::Conflict, "editor.automation.target-exists", "Target already exists");
361 if (!registered.ok()) return editorValueToJson(resultValue(registered.code(), registered.diagnostics()));
const T & value() const &
Borrow the value from a const lvalue after checking success.
Definition Result.h:308
bool ok() const noexcept
Whether this result represents a non-failure outcome.
Definition Result.h:255
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
const std::string & value() const noexcept
Returns the exact legacy or canonical compatibility spelling.
Definition Identity.h:362
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
~EditorAutomationProvider() override
Releases EditorAutomationProvider resources.
EditorAutomationProvider(EditorCommandService &commands, EditorTargetCoordinator &targets)
Bind borrowed services that outlive this provider.
Definition EditorAutomationProvider.cpp:120
void targetUnregistered(const TargetId &target)
Clear automation state that still borrows an unregistered target.
Definition EditorAutomationProvider.cpp:129
std::string invoke(const std::string &operation, const std::string &requestJson) override
Invoke discovery, inspect, execute, plan, commit, undo or redo.
Definition EditorAutomationProvider.cpp:135
Registry and execution gate for UI-, script- and automation-neutral commands.
Definition EditorCommandService.h:51
bool supportsPlanning(const CommandId &id) const
Return whether the registered command requires plan/commit execution.
Definition EditorCommandService.cpp:113
void clearTarget()
Clear the active target and invalidate retained plans derived from it.
Definition EditorSession.cpp:84
void setCommandService(EditorCommandService *service)
Compatibility-only nullable pointer facade over bindCommandService() and clearCommandService().
Definition EditorSession.h:110
Result< void > cancelRetainedPlan(const PlanId &id)
Discard one retained plan without executing it.
Definition EditorSession.cpp:254
Result< TransactionReceipt > executeCommandReceipt(const CommandId &id, const EditorValue &payload={}, CommandSource source=CommandSource::Api)
Execute a legacy-compatible command and return a V2 transaction receipt.
Definition EditorSession.cpp:208
void setSessionId(SessionId id)
Assign the stable identity included in asynchronous context snapshots.
Definition EditorSession.h:118
void clearRetainedPlans()
Discard all retained plans, for example after replacing a document or target.
Definition EditorSession.cpp:264
Result< CommandPlan > planCommand(const CommandId &id, const EditorValue &payload={}, CommandSource source=CommandSource::Api, std::optional< Revision > expectedRevision=std::nullopt) const
Plan a registered command without applying target mutations.
Definition EditorSession.cpp:174
void setHostProfile(HostProfile profile)
Set the host capability boundary used for command discovery and execution.
Definition EditorSession.h:114
Result< TransactionReceipt > executeRetainedPlan(const PlanId &id, CommandSource source=CommandSource::Api)
Execute a retained plan. Successful plans are consumed exactly once.
Definition EditorSession.cpp:243
const TargetId & boundTargetId() const noexcept
Return the identity of the current binding without dereferencing the target.
Definition EditorSession.h:95
Result< TransactionReceipt > executePlan(const CommandPlan &plan, const EditorValue &payload={}, CommandSource source=CommandSource::Api)
Execute a previously returned plan through its registered executor.
Definition EditorSession.cpp:190
Result< PlanId > retainPlan(const CommandId &id, const EditorValue &payload={}, CommandSource source=CommandSource::Api, std::optional< Revision > expectedRevision=std::nullopt)
Plan a command and retain its immutable payload under the returned plan id.
Definition EditorSession.cpp:231
Coordinates editable targets, per-target histories and domain commands.
Definition EditorTargetCoordinator.h:25
Result< TransactionReceipt > redo(const TargetId &target)
Redo.
Definition EditorTargetCoordinator.cpp:223
Result< void > unregisterTarget(const TargetId &target)
Unregisters target.
Definition EditorTargetCoordinator.cpp:177
Result< EditorValue > inspect(const TargetId &target) const
Inspect.
Definition EditorTargetCoordinator.cpp:203
Result< void > bind(EditorSession &session, const TargetId &target)
Binds .
Definition EditorTargetCoordinator.cpp:191
Result< TransactionReceipt > undo(const TargetId &target)
Undo.
Definition EditorTargetCoordinator.cpp:215
Result< void > registerTarget(IEditableTarget &target)
Registers target.
Definition EditorTargetCoordinator.cpp:156
bool undo()
Compatibility-only boolean projection of undoTransaction().
Definition EditorTransactions.cpp:41
bool redo()
Compatibility-only boolean projection of redoTransaction().
Definition EditorTransactions.cpp:45
static HostProfile automation()
Headless profile that denies commands unless allow-listed.
Definition EditorHostProfile.cpp:21
Multicast push-based stream: both an Observable and a push source. Thread-safe: onNext/onError/onComp...
Definition Rx.h:399
RAII-style dispose handle for an active stream subscription. Disposing unsubscribes from the source; ...
Definition Rx.h:93
constexpr eve::DiagnosticCode diagnosticCodeForStatus(Status status) noexcept
Coarse default diagnostic category for a failure status.
Definition EditingResult.h:82
std::string editorValueToJson(const EditorValue &value)
Serialize an EditorValue to deterministic compact JSON.
Definition EditingValueJson.cpp:346
Result< EditorValue > editorValueFromJson(const std::string &json)
Parse JSON into the pointer-free EditorValue protocol tree.
Definition EditingValueJson.cpp:352
RuleId diagnosticRule(const Diagnostic &diagnostic)
Return the projected editing rule, or an empty RuleId when absent.
Definition EditingResult.h:34
Diagnostic ruleDiagnostic(eve::DiagnosticCode code, RuleId rule, DiagnosticSeverity severity, std::string message)
Build a common diagnostic carrying an open editing rule identity.
Definition EditingResult.h:25
Definition ActionPreviewController.cpp:6
eve::editing::Value EditorValue
Compatibility alias for the UI-independent authoring value tree.
Definition EditorValue.h:8
eve::editing::TransactionState TransactionState
Definition EditorProtocol.h:15
std::string_view statusName(BattleStatus status) noexcept
Return the stable protocol spelling of a battle status.
Definition TacticsTypes.cpp:215
Definition Container.h:602
Definition EditorAutomationProvider.cpp:112
EditorValue::Object descriptor
Definition EditorAutomationProvider.cpp:113
rx::Subscription subscription
Definition EditorAutomationProvider.cpp:116
std::unique_ptr< rx::Observable< std::string > > distinct
Definition EditorAutomationProvider.cpp:115
rx::Subject< std::string > source
Definition EditorAutomationProvider.cpp:114
std::vector< std::string > pending
Definition EditorAutomationProvider.cpp:117