You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(engine): collapse the duplicated plan-DAG state machine into @loopover/engine
Completes #9537's last requirement, and fixes the build failure the first push
of PR #9565 hit.
THE BUILD FIX: `ToolContract` was imported from @loopover/contract/tools, which
only imports that type internally and never re-exports it. The local typecheck
resolves the package through a src alias and passed; the real package build
resolves the export map and failed at 'Build MCP'. Now imported from the package
root, which does export it.
THE PLAN-DAG DEDUP: buildPlanDag/validatePlanDag/the step state machine existed
in src/services/plan-dag.ts AND hand-copied, untyped, into the stdio MCP bin --
whose own comment explained why: it resolves @loopover/engine through the
published package, whose export map did not surface them. It does now.
Moving it turned up a THIRD partial copy already in the engine: plan-export.ts
holds the step/plan types, plan-step-readiness.ts holds nextReadySteps/isDone,
and plan-overall-status.ts holds the status vocabulary, each decomposed into its
own module. The moved file imports all three rather than restating them -- a
fourth PlanDag would have defeated the point -- and contributes only the
mutating half (build, validate, advance) that had no engine home.
src/services/plan-dag.ts stays as the Worker's import path, now a re-export, so
nothing else had to move.
Release ordering, which is why this looked blocked: both publish workflows are
workflow_dispatch-only, so nothing auto-publishes on merge and an operator
publishes the engine before the CLI, as usual. The engine takes a minor bump for
the new export, with packages/loopover-miner/expected-engine.version and both
consumers' dependency ranges moved to ^3.16.0 in the same commit so a published
CLI can never resolve an engine without it.
Also declares @loopover/contract#build as an edge of the root typecheck task.
That was working only because ci.yml happens to run a contract build first; the
edge makes a bare 'turbo run typecheck' correct on its own.
0 commit comments