fix(planning): resumePlan surfaces step-mode HITL fields#246
Merged
saurabhjain1592 merged 2 commits intoJul 10, 2026
Conversation
added 2 commits
July 10, 2026 02:03
The orchestrator's confirm/step-mode resume path emits step_result, next_step, next_step_name, total_steps and workflow_id (plus message on terminal paths), and the v9.6.1 community OpenAPI spec declares all of them on ResumePlanResponse. The TypeScript resumePlan transformer dropped every one of them, and the ResumePlanResponse type doc wrongly marked the camelCase slots as deprecated/never-populated. - src/client.ts: map workflow_id, step_result, next_step, next_step_name and total_steps onto the result (existing mappings preserved). - src/types/planning.ts: un-deprecate workflowId, message, stepResult, nextStep, nextStepName and totalSteps with accurate wire-path docs (step-mode HITL vs terminal resume). message is a real wire field (terminal-path outcome summary), not a workflowId alias. - tests: new resumePlan unit tests covering the step-gating payload, the terminal completed path, the rejected path, and the error path. - wire-shape baseline regenerated against the same pin (community ac1b7cd8, unchanged): the ResumePlanResponse drift entry and its note drop; acknowledged _note keys on DecideResponse and MCPCheckOutputResponse re-added (refresh.js strips them). - CHANGELOG: Fixed bullet under the un-cut 8.5.1 section; version unchanged. Refs getaxonflow/axonflow-enterprise#2861 Signed-off-by: Saurabh Jain <dev@getaxonflow.com>
Adds runtime-e2e/resume_plan_step_fields/: generatePlan(executionMode: 'confirm') → executePlan (WCP gates step 0) → resumePlan per gated step → terminal resume, against a real Enterprise agent. Asserts every non-terminal resume carries workflow_id/step_result/next_step/ next_step_name/total_steps and the terminal resume carries workflow_id + message with no step-gating fields. Verified green against the live local Enterprise stack (RESULT: PASS, 12/12 checks). Refs getaxonflow/axonflow-enterprise#2861 Signed-off-by: Saurabh Jain <dev@getaxonflow.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #245; when #245 merges this auto-retargets to main.
What
resumePlandropped every field the platform emits on the step/confirm-mode resume path, andResumePlanResponsedocumented them as deprecated/never-populated. That doc is wrong against today's platform: the orchestrator's resume handler (platform/orchestrator/run.go, resumePlanHandler) emitsstep_result/next_step/next_step_name/total_stepswhen it gates the next step (status: awaiting_approval), plusworkflow_idon every path andmessageon terminal paths — and the v9.6.1 community OpenAPI spec declares all of them onResumePlanResponse. Go/Python/Java SDKs already model them.Refs getaxonflow/axonflow-enterprise#2861.
Changes
workflowId,stepResult,nextStep,nextStepName,totalSteps(existingplanId/status/result/approved/messagemappings preserved).workflowId/message/stepResult/nextStep/nextStepName/totalStepswith accurate docs: step-mode HITL fields populated when the platform gates the next step, absent on terminal resumes.messageverified against the wire before touching: it is a real wire field (terminal-path outcome summary, e.g. "All steps completed" / "Step rejected, plan aborted"), not aworkflowIdalias — the old deprecation text was wrong, so it is un-deprecated too.resumePlanunit tests (none existed): step-gating wire payload (all fields land), terminal completed path (message present, step-gating fields undefined), rejected path (approved: falseon the request wire), error path.scripts/wire-shape/refresh.jsagainst the same pin (communityac1b7cd8…,openapi_specs_shaunchanged from chore(contract): bump OpenAPI spec pin to community v9.6.1 #245). TheResumePlanResponsedrift entry and its burn-down note drop, exactly as chore(contract): bump OpenAPI spec pin to community v9.6.1 #245's note said they should. Acknowledged_notekeys onDecideResponse/MCPCheckOutputResponsere-added after regeneration (refresh.js strips_notekeys, per the note's own instruction).### Fixedbullet under the existing un-cut[8.5.1]section; version stays 8.5.1.Verification
npm ci && npm run build && npm testgreen locally (32 suites, 971 passed / 13 pre-existing skips).scripts/wire-shape/validate.jsgreen against the pinned spec dir.npm run lintclean.