From 7566197269a4a1767df1ce4d39f8fad6844ec587 Mon Sep 17 00:00:00 2001 From: Jackson Moore Date: Fri, 4 Sep 2026 14:32:23 +0200 Subject: Expose diagnostic full reset --- lua/clever_f/action_facade.lua | 10 ++++++++++ lua/clever_f/composition_root.lua | 4 ++++ lua/clever_f/sequence_coordinator.lua | 16 ++++++++++++++++ 3 files changed, 30 insertions(+) (limited to 'lua') diff --git a/lua/clever_f/action_facade.lua b/lua/clever_f/action_facade.lua index b732ca6..a3fe173 100644 --- a/lua/clever_f/action_facade.lua +++ b/lua/clever_f/action_facade.lua @@ -91,6 +91,16 @@ end ActionFacade.Reset = ActionFacade.reset +function ActionFacade:diagnostic_full_reset() + local outcome = self:coordinator():diagnostic_full_reset() + if not domain.ActionOutcome.is(outcome) then + fail("SequenceCoordinator must return an ActionOutcome", 2) + end + return outcome +end + +ActionFacade.DiagnosticFullReset = ActionFacade.diagnostic_full_reset + local function explicit_outcome(facade, method_name) local coordinator = facade:coordinator() local outcome = coordinator[method_name](coordinator) diff --git a/lua/clever_f/composition_root.lua b/lua/clever_f/composition_root.lua index f9c7a4c..35aaf1f 100644 --- a/lua/clever_f/composition_root.lua +++ b/lua/clever_f/composition_root.lua @@ -215,6 +215,10 @@ function CompositionRoot:invoke_descriptor(value) return self:facade():invoke_descriptor(value) end +function CompositionRoot:diagnostic_full_reset() + return self:facade():diagnostic_full_reset() +end + function M.new(options) return CompositionRoot.new(options) end diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua index 6d2d31b..d8cf7f0 100644 --- a/lua/clever_f/sequence_coordinator.lua +++ b/lua/clever_f/sequence_coordinator.lua @@ -510,6 +510,22 @@ end SequenceCoordinator.Reset = SequenceCoordinator.reset +function SequenceCoordinator:diagnostic_full_reset() + local record = coordinator_records[self] + local position = domain.Position.coerce(record.host:read_cursor()) + local cleanup = record.transitions:DiagnosticFullReset( + record.host:read_window() + ) + if type(record.feedback.release_transition_cleanup) ~= "function" then + fail("FeedbackService must release diagnostic cleanup", 2) + end + record.feedback:release_transition_cleanup(cleanup) + return domain.ActionOutcome.neutral(position) +end + +SequenceCoordinator.DiagnosticFullReset = + SequenceCoordinator.diagnostic_full_reset + function SequenceCoordinator:read_explicit_invocation() local host = coordinator_records[self].host if type(host) ~= "table" -- cgit v1.2.3