summaryrefslogtreecommitdiff
path: root/lua/clever_f
diff options
context:
space:
mode:
authorJackson Moore <jacksonmoore@tuta.io>2026-09-04 13:34:01 +0200
committerJackson Moore <jacksonmoore@tuta.io>2026-09-04 13:34:01 +0200
commit30f6f516dd8970162d82594934be591cb2c4047f (patch)
treecb85bc23a6e790d3139990517e3d8b37c6c8ed77 /lua/clever_f
parent6e69d3d53ee9037dd8bedb1267413937f9a7e817 (diff)
Inspect primary fold policy
Diffstat (limited to 'lua/clever_f')
-rw-r--r--lua/clever_f/sequence_coordinator.lua20
1 files changed, 19 insertions, 1 deletions
diff --git a/lua/clever_f/sequence_coordinator.lua b/lua/clever_f/sequence_coordinator.lua
index 10949bd..bcff504 100644
--- a/lua/clever_f/sequence_coordinator.lua
+++ b/lua/clever_f/sequence_coordinator.lua
@@ -75,8 +75,26 @@ function SequenceCoordinator:read_primary_invocation()
}
end
+function SequenceCoordinator:inspect_fold_open_policy(invocation)
+ if type(invocation) ~= "table" or not domain.Position.is(invocation.position) then
+ fail("fold preflight requires primary invocation state", 2)
+ end
+ local host = coordinator_records[self].host
+ if type(host.read_fold_state) ~= "function" then
+ fail("SequenceCoordinator host must provide fold state", 2)
+ end
+ local fold_state = host:read_fold_state()
+ if not domain.FoldState.is(fold_state) then
+ fail("SequenceCoordinator host must return FoldState", 2)
+ end
+ return fold_state
+end
+
function SequenceCoordinator:primary(value)
- return self:validate_primary_descriptor(value)
+ local descriptor = self:validate_primary_descriptor(value)
+ local invocation = self:read_primary_invocation()
+ invocation.fold_state = self:inspect_fold_open_policy(invocation)
+ return descriptor
end
function M.new(options)