Repository navigation
Send saved next steps to connected CRM hosts - #579
Merged
Merged
Conversation
The optional field gated the required message, so a null or array nextSteps left the CRM waiting with no result or error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… large Adding nextSteps could push a snapshot that used to fit past the 131072-character field, and then nothing was saved. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A failed check with a blank alias and no name became null in the string array sent to the host. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The field and the CRM export each chose outcome content, links, phone and unmet requirements, so they could drift and send hosts instructions the person never saw. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Print and the CRM export found the visible component through fields that had mounted, so an export read before form-js repainted saw the previous answers, and Screener had to read it before setting results. They now evaluate hide conditions the way form-js does, including groups and repeated items. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Standalone screeners projected every evaluation and threw it away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eligible benefits got an empty list that screen readers announced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A benefit with no usable copy showed an empty labeled region, and an empty list when ineligible, unlike the Salesforce example. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The example tests, including the new Salesforce URL and outcome checks, ran only by hand, so regressions passed devbox run test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both example hosts hand-wrote a looser HTTP(S) check than the screener's. host.js now exports safeHttpUrl, which both hosts use, and a test keeps it in step with normalizeHttpUrl. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
prestoncabe
force-pushed
the
559-crm-next-steps
branch
from
October 27, 2026 22:07
eca2ca9 to
d3d426e
Compare
prestoncabe
marked this pull request as ready for review
October 27, 2026 22:13
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.
Connected CRM hosts receive optional structured
nextStepswith successful result messages. Screen, print, and CRM content share a projection of the saved screener copy, so application instructions and failed-check names stay consistent.Closes #559. Sixth PR for #552, following #578.
This is an additive extension to protocol version 1, supported in object and JSON message modes. Only decided benefits are exported. Eligible entries include validated application/help links, a contact number, and Markdown instructions; ineligible entries include named unmet requirements and a Markdown note. No visible component omits the extension;
whenCompletesends an empty object until every benefit is decided. Each new snapshot replaces previous instructions. A malformed optional extension is dropped without losing the decisions.Print and CRM choose the first component whose own and ancestor conditions show it, using form-js's current expression context. Selection covers repeated scopes and dynamic lists with repetition disabled, and remains available during re-imports. Standalone screeners skip CRM projection. Existing stale-response and disconnection protections remain in force.
The browser and Salesforce examples save on the explicit Save action, render Markdown as text, omit empty sections, validate saved links with a shared adapter helper, and read older snapshots. Salesforce saves decisions without next steps when the optional instructions exceed its configured field size, and reports that omission. CRM example tests now run through
devbox run test -- examplesand in CI.Validation:
git diff --checkpassed.