npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@openapi-flow/core

v0.15.0

Published

Engine-independent OpenAPI catalogs, operation contracts and typed request schemas

Readme

@openapi-flow/core

0.12.0: shared workflow input planning

createWorkflowInputCatalog prepares one immutable original-message catalog for all calls in a planning revision. A source ID owns its original message and lexical region. resolveWorkflowInputSelection extracts a selected JSON value or exact unquoted text range; callers never supply a replacement value or message identity. JSON retains its original type and text remains a string.

describeWorkflowApiArgumentTargets exposes finite OAS declaration templates, including explicit array indices, dynamic keys and recursive descendants. compileWorkflowApiArguments resolves those templates and original sources, deduplicates verified inputs, and applies the existing concrete-target, assembly, binding, confirmed-input and final request checks. Type projections only narrow choices; the original OAS still decides whether a concrete assignment is valid. The result retains independently checked calls and per-call validation rejections. Missing values stay missing-input requirements.

Plans carry a code-attached fingerprint covering originals, scenario, calls, OAS, roles, bindings and confirmed inputs. validateCompiledWorkflowApiArguments replays serialized receipts against an independent current context, including semantic enum evidence. Hosts must retain only validated receipts and supply only pending calls when replanning. These APIs do not implement a retry loop or change the existing single-call APIs. They do not guarantee business intent or the availability of a model or remote API.

0.11.0: validate complete literal construction plans

resolveApiLiteralValues resolves all selected destinations before assignment, rejecting duplicate or overlapping paths. Each original source is checked against its concrete remaining OAS destination before code assembles the request. Final request and source-coverage validation remain in place. Finite selected pointers retain the original recursive/dynamic schema context; schemas are not unrolled. listApiLiteralContainerTargets identifies roots whose original OAS admits object/array construction, preserving reference context. Scalar-only roots do not expose generic descendant sources. A wrong message attribution reports exact original message IDs containing the selected complete source, as rejection facts; code never reassigns that source or substitutes another message. Text remains a string and JSON keeps its original type. No source conversion, list splitting, fabricated containers or overwrite recovery is introduced.

Unreleased: read-only workflow context for native repair

Native parameter-repair descriptions include workflowContext, a compact view of the supplied source revision's API/native roles, declared ports, entrypoint, existing edges and gaps. It excludes schemas, payloads and setting values. This view remains available when the selected value-producer list is empty, as for a Merge control node. It grants no new value-reference authority: scoped producer contracts and parameter validation remain unchanged. Source-revision ports are not a claim that intermediate repair candidates have been adopted or that future edges exist. Parameter fingerprints include the new view; regenerate candidate receipts rather than rebase stored ones. Published 0.5.1 is unchanged.

Unreleased: verified keys and shared schema resources

createApiBindingKeyCatalog verifies key/path proposals against supplied original messages, assigns scoped identities and retains original string values. It does not infer names from OAS examples or generated model explanations. Manual binding APIs retain their explicit pointer support.

deduplicateCanonicalSchemaResources retains one identical identified resource and references its original canonical URI from repeated positions. Conflicting declarations with the same URI fail explicitly. Traversal visits schema positions only, preserving literal $id fields inside data. Source schemas are not mutated. This helper is used for combined evaluation output, not OAS intake rewriting.

Unreleased: sequential schema projection and native provenance

projectNativeValueSchema({ output, steps }) reads value pointers, array items and object entries in one original schema-resource context. It bundles only the final projection, preserving source data and reference resolution. A require-array step validates array availability without replacing the selected value schema. NativeSchemaProjectionError.step identifies failed array checks. Existing projection helpers remain available.

createNativeOutputContracts also derives optional provenance from the actual registered capability and its input-reference hooks. Per-call binding discovery keeps that metadata and excludes native producers whose known lineage already requires the target API. Final graph validation remains mandatory. External contracts without provenance remain unknown. Published 0.5.1 is unchanged.

0.4.2 adds resolveWorkflowIntent, validateWorkflowIntent and formatWorkflowIntentScenario for source-bound business scope before concrete material planning. Core validates references and assigns identities; it does not infer business meaning from OAS or choose execution edges. Optional planning reasons are presentation only. Native/goal review source text is attached by code, not copied by a model. Literal-value provenance, OAS, ownership, source drift and DAG validation remain functional requirements. Review wire contracts and optional reason types change; see the 0.4.2 record.

0.4.0 contracts: constraints, explicit boundary intent, scoped outlines and source-bound review/recovery contracts. Publication is tracked in the release record. The development additions below target this version, not the older public 0.3.18.

Migration: callers of createNativeParameterGenerationContract must explicitly provide planningParametersSchema as well as the executable capability. The candidate schema describes current model choices; the executable capability keeps its original runtime validator. Do not replace one with the other. High-level native configuration APIs own this composition. No missing-schema substitution, value default or silent data repair is introduced.

0.4.0 createWorkflowConnectionOutline validates proposed work bundles and assigns identities from the actual source/session/goals and structural membership. describeWorkflowConnectionOutline reports current pending work; describeWorkflowConnectionOutlineBundle retains the global graph context plus transitive producers and crossing edges. applyWorkflowConnectionOutlineStep enforces local write ownership before the existing global patch checks. These functions do not select a model, schedule execution, infer business order or prove semantic requirement coverage. See the outline contract.

0.4.0 materialRepairStages restricts primary API repair choices to their actual OAS ownership. describeWorkflowConnectionMaterialRepairWork derives dependent literal tasks after binding changes; applyWorkflowConnectionMaterialRepairWork rechecks that work and retains its original request/pending result on receipt replay. Neither function invokes a model, fills missing values or manages host checkpoint/retry policy. See the work contract.

0.4.0 goal-coverage review preserves the original requirements separately from candidate goals/material. Core checks every fact row, actual goal references, exact quotes and source-bound review receipts, and derives acceptance from the supplied judgments. It does not prove those semantic judgments or call a model. See independent initial review.

0.4.0 initial-material recovery is available independently of an accepted connection session. describeWorkflowConnectionConflictMaterials exposes actual execution mappings and original contracts. Source-bound requests and replacements are checked by validateWorkflowConnectionSourceRepairRequest and applyWorkflowConnectionMaterialRepair, then rechecked on receipt replay with replayWorkflowConnectionMaterialRepair. OAS, requirements, identities and unrelated material stay unchanged; binding/argument field ownership is enforced. Declaration order alone is not progress, while literal-array order is preserved. These functions never invoke a model or dispatch a host stage. See the recovery contract.

inspectWorkflowConnectionMaterialRepairInputs inspects a pending replacement's actual request slots before adoption. The host can then explicitly supply the complete replacement.deferredApiInputIds policy; new slots are never approved automatically and unrelated API approvals cannot be revoked. Application and receipt replay still enforce OAS, bindings and readiness. An absent versus empty optional requested-input list alone is not execution progress. These APIs remain unreleased.

0.4.0 source adds accepted connection-session revision, explicit original-edge baseline updates, causal impact/assessment invalidation and replay validation. Material repair requests are validated against their actual owning API/native stage. Runtime registries and loop policies stay with the consumer. See the connection revision guide.

Revision descriptions inspect the current graph against replacement contracts and bind both source epochs plus the accepted session history. Rejected candidate graphs expose private typed WorkflowConnectionRevisionError.violations; public error JSON still contains only the diagnostic. This does not add a host retry loop.

Version 0.3.18 aligns with LangChain's typed per-call source decisions. Core's source-selection contracts, original OAS checks and cycle validation are unchanged. See the release record.

Version 0.3.17 adds describeApiOperationCandidate, projecting an original operation into the existing discovery contract without changing its OAS or filtering candidates. Detailed contracts remain available for later generation and validation. See the release record.

0.4.0 source adds inspectWorkflowPlanningConstraints and typed WorkflowPlanningConstraintError evidence for conflicts between selected data dependencies and proposed goals. It checks necessary ordering only, does not infer business order from OAS, and never replaces the final route/completion checks or host-owned replanning policy. These additions are not in published 0.3.18.

Version 0.3.16 adds serializable incremental connection sessions, atomic bundle application, source/revision guards, native-only extension and complete DAG finalization. Existing APIs remain compatible. See the connection guide and release status and limitations.

Version 0.3.15 adds source-owned per-call binding descriptions, source-choice and field-choice resolution, resumable-result validation and complete plan assembly. It retains original OAS validation and global dependency-cycle checks. See the binding guide and release record.

Version 0.3.14 adds source-owned structured errors and aligns the n8n adapter's fixed API result collection. Supported security updates use Scalar parser 0.29.16, fast-uri 3.1.9 and the host Zod peer below. The owner accepted the n8n adapter's unresolved upstream Zod 3 advisory for this release on 2026-10-25. This does not clear the audit finding. The existing Ajv special-key limitation below remains. See the 0.3.14 release record for actual publication and host status; preparation is not publication.

@openapi-flow/core/errors exports the browser-safe OpenApiFlowError, guard, diagnostic/code schemas and inferred types without importing Node-owned OAS code. Covered errors retain the original exception in cause; toJSON() exposes only the closed diagnostic, never private messages, stacks or model output. Existing typed errors pass through unchanged. This does not migrate every internal throw or add logging, retries, schema repair or host recovery policy.

Zod ^4.6.7 is a required peer, shared with the host rather than installed as a separately pinned runtime copy. Development tests and the strict installed-consumer check use 4.6.7. This preserves the public schema type boundary without casts or dependency overrides.

Version 0.3.13. This patch keeps Core contracts and validation unchanged while aligning the adapters' common draft-planning input fix. Optional enum interpretation from 0.3.11/0.3.12 remains source- and type-checked without automatic defaults. Canonical draft, clarification and runtime-input APIs described below are included. Ajv 8.20.0 does not correctly validate a declared properties.__proto__; generated validation may reject valid data or omit that property's constraints. This accepted limitation remains unchanged, without renaming data or skipping its failing regression. See the release record for actual publication and host status.

Native and fixed-material connection planning accept the optional, existing WorkflowEntryPointContract as entrypoint. Core validates and snapshots this owner-provided start alongside the other inputs; it does not infer one when absent, add a selectable trigger or let model output modify it.

Connection planning accepts explicit current deferredApiInputIds derived with collectDeferredApiInputSlots. Missing inputs remain absent and require canonical template preflight before execution; supplied values and the full DAG are still validated. See input deferral.

canonical gapNodes and the separate createWorkflowDraftCapabilityGap, inspectWorkflowDraftCapabilityGap, describeWorkflowDraftCapabilityGap functions preserve explicit unsupported roles, original evidence and supplied contract identities without inventing data outputs. See the gap contract.

requestedInputs metadata tracks scenario-required presence separately from OAS requiredness. Questions, answers, canonical calls and execution slots retain the same pointers; listMissingRequestedApiInputs shares deterministic presence checks with compiled runtimes. Original schemas and actual values remain unchanged. See requested inputs.

request-dependency intent has its own description, Zod schema and resolveWorkflowDraftApiBindingIntent receipt. Supplying that inputIntent to API binding planning restricts mappings/questions to validated selected targets and requires complete coverage. OAS literal generation and missing-required-value checks remain unchanged. See input intent.

semantic edits support explicit restoration of currently removed requirements, without copying historical replacement values. See requirement restoration.

answer-source resolution and replayable input-answer evidence are documented in the answer extraction guide.

combined graph planning adds captured source contexts, explicit prepared/additional instance assembly and verifiable planning records under workflow/graphs. Shared API/native data capture has its own schema/type modules. See the combined graph guide. A legacy executable gap report is explicitly marked unvalidated, not certified as a DAG.

connection planning has deterministic source capture, plan assembly and provenance creation/verification in workflow/connections. See the connection planning guide. These APIs do not call a model, modify fixed materials or replace full DAG validation.

native-plan contracts preserve additional instances separately from prepared materials, derive gap identities/implementation receipts, and validate optional model/code-only provenance. Empty explicit OAS inventories form real empty catalogs; supplied invalid documents still fail. See native planning ownership and records.

binding-planning records preserve actual proposed pointer mappings, per-call reasons and original supplied OAS/native context. Core snapshots only declared source data and verifies records against the original input and plan. See binding decisions and provenance.

literal-generation records distinguish original proposed literals from confirmed/bound inputs. Core snapshots data, owns the projected-contract evidence and verifies persisted records against the original generation input. No values or reasons are fabricated when no literal fields remain. See literal attribution and call roles.

request-format decisions distinguish no body, a sole declared format, explicit model choice and the approved explicit-null default policy. Core owns resolution and exact optional scenario/requestBody evidence; model reasoning does not impersonate code's default choice. Format logic is grouped in arguments/media. See request media decisions.

discovery explanation APIs snapshot and validate the actual scenario, candidate metadata and original operation identities. Code derives evidence from the selected API, offered alternatives or entire supplied inventory; models never write source quotes or contract claims here. See API selection explanations.

semantic edit questions declare an explicit owner. Independent semantic questions still block their actual scope; concerns owned by selected API/native, requirement or connection stages retain exact provenance and route only to that verified stage. They do not create duplicate workflow blockers or fabricate answers. describeWorkflowDraftClarificationOwnership describes those code-resolved owners. The wire schema also makes whole-request no-change exclusive with real edits. See question ownership.

canonical drafts require code-owned requirementHistory. Explicit revisions/withdrawals preserve prior snapshots and exact evidence, while active planning messages remain separate from the audit transcript. Typed requirement answers use a candidate context without rebasing the original plan. See requirement history and current evidence.

describeWorkflowDraftSelectedNodes and describeWorkflowDraftRequirementEdit expose selected API/native identities before request values or producer contracts are ready. The derived createWorkflowDraftRequirementAnswerSchema bounds typed human scope answers; Core re-derives that authority during staging and assembly. Missing materials still block final assembly. See requirement edits and selected scopes.

typed API binding questions use the selected OAS input/source contracts. Code owns question wording, identities, schemas and validated source choices. Explicit human answers resolve the same proposal without inventing values, repairing outputs or exposing partial bindings.

describeWorkflowClarificationAnswerRevision, reviseWorkflowClarificationAnswers and validateWorkflowClarificationAnswerRevision provide atomic typed answer replacement and question reopening without a model. Original snapshots and explicit transition receipts remain auditable; current answer evidence is separated from superseded receipts. See answer revisions.

review suggestion contracts validate the current read-only review projection, original evidence and configured budgets, then allocate stable suggestion identities. adoptWorkflowReviewSuggestion creates an explicit user-adoption receipt, never an edit or executable workflow. See review follow-ups and adoption.

selected API addition/replacement primitives derive the new request from its full original OAS key, validate actual source mappings, exclude bound/confirmed fields from literal schemas and return typed missing-input questions or explicitly enabled runtime slots. Identities, graph metadata, evidence text and validation remain code-owned; existing sibling settings are preserved.

native additions expose the actual selected implementation schema while code retains the instance ID/capability. describeWorkflowDraftNativeNodeAddition, createWorkflowDraftNativeNodeAdditionSchema and resolveWorkflowDraftNativeNodeAddition validate configuration/ownership or return questions, without automatic connections or adoption. resolveWorkflowDraftNativeNodeParameterOwnership separately derives an immutable ownership/remaining-literal contract for staged mixed-field generation. See native instance additions.

Independent native configuration accepts ordered replies containing the original code-identified question and exact user text. Core validates target/material fingerprints, original proposals and answer order without rewriting the scenario or selection. Missing plan-time literal values are handled by the value stage, not treated as missing capabilities during role selection. These receipts check consistency, not caller authenticity; see native setting replies.

resolveNativeMaterialSnapshot and draft-facing resolveWorkflowDraftNativeSnapshot bind actual producer contracts independently for each content revision. Pending references expose no previous output schema; edit staging discovers cascading consumer repairs after explicit upstream decisions. Original definitions, full schema checks and atomic DAG validation remain intact. See material snapshots.

describeWorkflowDraftNativeReferenceRepair/resolveWorkflowDraftNativeReferenceRepair derive one actual consumer task, validate implementation-owned parameter locations and construct only reference patches. Questions produce no partial repair; original settings and complete-graph validation remain authoritative. See the repair boundary and remaining composition work.

native parameter editing derives selected field types from the registered implementation, preserves unpatched settings and validates original Zod refinements and actual response/native sources. Runtime ownership is explicitly opt-in; missing choices yield scoped questions, not dummy values or partial resolutions. See the native parameter-edit contract.

describeWorkflowDraftConnectionEdit/resolveWorkflowDraftConnectionEdit derive actual staged ports/reference constraints and validate explicit connection deltas through atomic assembly. Unrelated edges are retained; incomplete contracts/repairs return visible prerequisites, not fake readiness. See the connection-edit contract.

stageWorkflowDraftEdit exposes explicit pending edit results and unavailable source contracts without pretending incomplete content is canonical. describeWorkflowDraftApiBindingEdit/resolveWorkflowDraftApiBindingEdit support source-grounded changes for an existing API or actual consumer repair; validateApiBindingAssignment shares the complete validator's declaration checks without fabricating unrelated binding lists. See the staged binding-edit boundary.

scoped API input-edit contracts derive target schemas from the selected original OAS and validate source-grounded typed values before generating precise patches. createWorkflowDraftApiInputEditContract, createWorkflowDraftApiInputEditValuesSchema and resolveWorkflowDraftApiInputEdits are usable without a model; the LangChain adapter adds separate target/value calls. See ownership, validation and pending-input semantics.

prepareWorkflowDraftEdit and assembleWorkflowDraftEdit accept explicit step results, preserve unpatched request/native values and derive consumer repair work from declared references. Final assembly returns a checked candidate revision with structural impact; it never mutates the original draft or repairs missing mappings/edges silently. These are deterministic host-to-core contracts, not generic schemas for model generation. See the scoped assembly guide.

createWorkflowDraftEditPlan, validateWorkflowDraftEditPlan and describeWorkflowDraftEditContext bind explicit semantic edits to the current draft, contracts and request messages. Code owns version fingerprints, new instance IDs and direct stage metadata; no draft mutation or implicit repair occurs. This is the analysis boundary, not a complete edit assembler. See the edit analysis contract.

native input contracts add collectNativeRuntimeInputSlots, inspectNativeRuntimeInputs and createWorkflowRuntimeInputsSchema. Capabilities declaring runtime-independent ports, references and output contracts can defer whole objects or explicitly selected field pointers while preserving other literals. Code derives identities and validates the full combined object without changing actual values; canonical drafts and API/native readiness remain separate. Export individual slot schemas to preserve independent resource scopes. Scoped edits, staged new draft-native additions and independent role/value planning support explicit field ownership. resolveNativeInstanceSelection, describeNativeNodeConfiguration and resolveNativeNodeParameters derive/validate the standalone contracts without model calls or fabricated drafts/edges. See the native runtime input contract.

requirements APIs add createWorkflowClarificationRound, resolveWorkflowClarificationReplies, explicit question-budget configuration and source checks. Questions have code-owned identities; partial/deferred answers preserve confirmed facts without automatically adopting suggestions. See the clarification contract. These additions are not in npm 0.2.0.

source additions provide inspectApiArgumentRequirements, validateApiInputAnswers, applyConfirmedApiInputs, resolveApiSelectionAnswers and createApiInputAnswersSchema. Snapshot/call-scoped confirmedInputs are excluded from literal generation and applied by code. These additions are not included in npm 0.2.0; see the conversation guide.

Engine-independent OpenAPI catalog, full operation contract lookup, OAS-derived Zod request schemas and argument validation. Version 0.2.0 is published; 0.1.0 has a different API.

createWorkflowPlanningCapabilities({ capabilities, apiCallIds }) specializes only capabilities that explicitly provide createPlanningParametersSchema(context). Existing runtime schemas and capability objects are not mutated; custom definitions without the hook retain their schema. validateNativeApiResponseReferences({ nativeNodes, capabilities, apiCallIds }) checks the API identities declared by each implementation's responseReferences and per-port inputReferences. It does not inspect arbitrary JSON field names, validate native-output identities as API IDs, infer a missing producer or repair a reference. These functions establish early planning boundaries; execution order and response contract validation remain separate.

0.4.0 source hardening: createApiInputSourceSelectionSchema exports a bounded ID grammar instead of enumerating every position in the input text. Its original Zod schema still checks membership in the exact supplied catalog. resolveApiInputSourceSelections independently reconstructs that catalog and validates identity, ordered boundaries and a single original text segment before copying values. The serialized JSON Schema alone is not a catalog-membership validator. Preserve the local Zod/core resolution step; do not trust a model-provided ID merely because it matches the wire grammar. No source text is truncated, coerced or substituted.

createApiArgumentGenerationContract({ operation, bindings, requestMediaType }) is the shared literal-generation boundary. It returns the Zod schema, its matching literalInputSchema JSON Schema, and hasLiteralInputs. Bound paths have no original value definition and are forbidden (including through open additional properties); unbound OAS-approved fields stay available. Fully bound closed nested objects have no remaining literal decision. Open objects can still accept additional scenario values, so binding every named property does not close that OAS contract. The original operation and complete runtime request schema remain unchanged.

Dynamic OAS assertions are no longer round-tripped through experimental z.fromJSONSchema. createOasValueSchema uses Zod's public refinement and metadata APIs: Scalar's JSON Schema validator checks the preserved assertions, and Zod exports those same assertions to LangChain. Type-less constraints, enum siblings and simultaneous compositions are not replaced by inferred types or weaker schemas. OAS 3.0 nullable and boolean exclusive bounds are explicitly translated to Draft 2020-12 syntax; formats, annotations and enum/example data are retained. Each embedded schema has a resource ID so fragment references keep their original scope. These IDs are schema identifiers, not inferred API input values. validateApiArguments and the complete createApiRequestSchema use the same dialect conversion; the latter retains required fields for the n8n standalone validator. Uncompileable selected schemas fail with their source before a model call. Provider-specific schema support is still an external boundary, not a reason to trim the OAS contract.

See Zod's JSON Schema and metadata APIs and the OAS 3.0 Schema Object for the conversion boundary and nullable semantics. This does not claim exhaustive support for every schema dialect or provider.

import {
  createApiCatalog,
  listApiOperations,
  resolveApiOperations,
} from '@openapi-flow/core';

The host supplies { id, spec } documents. Catalog creation requires neither deployment credentials nor a per-path effect policy. The selected full OAS contract remains available before any engine-specific conversion. Operation keys carry document ID, snapshot hash and OAS JSON Pointer; changed documents fail lookup.

createApiArgumentsSchema preserves OAS request types and excludes bound fields from model proposals. validateApiArguments checks literal constraints and returns missing-input pointers. validateApiBindingPlan checks response-to-request identities, pointers, known incompatible types and cycles. materializeApiArguments(values, bindings, responses, material) copies actual values without coercion or defaults; the OAS material determines missing container kinds. createApiRequestSchema supplies the complete final request schema for runtime validation. The /runtime entrypoint contains execution-only materialization and serializers without catalog/document intake. Core does not call an LLM, import LangChain/n8n, execute APIs or provide a server. The /internal export is an unstable adapter boundary. See the workspace guide.

listApiResponsePointers(operation) describes finite response-body declarations grouped by the original response key and media type. Each declaredPointers entry has an exact RFC 6901 body pointer, its schemaLocation, and the type/description actually declared by the schema. Empty pointer means the entire response body. Composition and conditional branch locations stay distinct; enum/example/default data are not traversed as schemas. OAS 3.0 nullable syntax is normalized without changing the operation.

dynamicLocations identifies dictionaries, pattern keys, homogeneous array items, unexpanded references, recursive schema boundaries and unconstrained values. It never invents a dictionary key or a sample item index. A tuple's explicitly declared positions can be listed, but their runtime existence is not guaranteed. This catalog is advisory, not an exhaustive schema projection, a whitelist, a schema satisfiability proof or a promise that optional/conditional fields exist. The full OAS and existing binding/runtime validators remain authoritative; missing response values still fail without substitution.

WorkflowGraphPlan describes native capability settings, named-port edges, starts and unmet requirements. validateWorkflowGraphPlan uses host-supplied capability contracts to check graph identity/ports/cycles, exclusive-branch join compatibility and API response availability on every incoming route. It does not prove scenario coverage or exhaustively validate response pointer types against every OAS schema dialect; missing fields fail in the runtime compiler. This contract is engine-independent and does not import an n8n node registry.

Our code is MIT-licensed. Core has no n8n SDK dependency. Dependency licenses remain separate; see third-party notices.

ReviewableWorkflowApiMaterial discriminates ready calls with real arguments from blocked calls with OAS identity, declared bindings and causal gap IDs, but no fabricated arguments. createReviewableWorkflowGraphPlan adds explicitly identified gaps and blocked calls to the proposed DAG, derives its actual roots, and invokes validateReviewableWorkflowGraphPlan. Topology and binding-contract validation are never skipped because of gaps. Blocked/gap nodes have ports but no available API response. validateApiBindingAssignments checks assignments independently of execution readiness; validateApiBindingGaps requires every reported gap to identify a known call and an OAS-declared request pointer. The strict validateApiBindingPlan still rejects all gaps. These contracts do not imply that review workflows may be executed.