Skip to content

build(deps): bump @openuidev/react-lang from 0.3.2 to 1.0.0 - #106

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/openuidev/react-lang-1.0.0
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/openuidev/react-lang-1.0.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 16, 2026

Copy link
Copy Markdown
Contributor

Bumps @openuidev/react-lang from 0.3.2 to 1.0.0.

Release notes

Sourced from @​openuidev/react-lang's releases.

@​openuidev/react-lang@​1.0.0

Major Changes

  • #1348 9e76b1d Thanks @​Aditya-thesys! - OpenUI Lang 1.0.

    • Upgrade @openuidev/lang-core and @openuidev/react-lang together, and together with the server that generates the system prompt. A 1.0 prompt teaches bare action steps (@ToAssistant("Hi") without Action([...])), which a 0.x client does not run.
    • react-ui 0.18 requires react-lang 1.0 (peer >=1.0.0 <2.0.0); upgrade them together.
    • browser-bundle 0.2 bundles react-lang 1.0 and react-ui 0.18.
    • server 0.3 uses lang-core 1.0 for autofix (parser and system prompt); stay on server 0.2 with a 0.x client. Autofix ignores warnings and accepts a ternary entry, so a program that renders does not start a fix round.
    • vue-lang, svelte-lang and angular-lang stay on 0.4 (OpenUI Lang 0.x). Keep @openuidev/lang-core ^0.4 for the prompts they render.
    • A program whose root statement is written last shows nothing while it streams, until the root line arrives. Write root first, as the system prompt asks.
    • A cut-off output that never reached its root statement, or any statement calling the root component, now renders blank instead of a partial tree.

Minor Changes

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Add custom actions: defineAction({ name, description, params }) plus createLibrary({ actions }). Programs use them like the built-in steps, alone or in Action([...]), for example Button("Copy", @CopyToClipboard(order.id)), with positional arguments in params key order. On click the step reaches the host onAction as { type: name, params } (schema defaults applied), in order with the other steps, and the event is typed from the library so params narrows by type. Args are validated like library function args, and a step with invalid args is a no-op. Only a real call produces a custom step: a plan read from data (an object literal, $state, an @Each item) loses its custom steps, and a legacy action object whose type names a custom action is ignored. library.toJSONSchema() lists actions under actions, the prompt lists them with the built-in action steps, and toSpec() includes them. The React Renderer and the server autofix parser pick them up automatically, and the react-ui Button validates its form before a custom action.

    Types: the exported ActionStep union adds { type: "custom_action"; name; params }, so a switch over ActionStep types needs a case for it.

    In react-ui, AgentInterface takes onAction, which receives the actions the chat does not handle itself, such as custom actions.

    The built-in steps (@Run, @ToAssistant, @OpenUrl, @Set, @Reset) are now defined like custom actions and live in the same call registry, so their prompt lines are generated too (for example @OpenUrl(url: string)). ACTION_NAMES is removed.

    A defined action has a .ref for slots that take only some actions, for example share: z.union([copy.ref, steps.OpenUrl.ref]).optional(): the prompt signature prints share?: @CopyToClipboard | @OpenUrl, and the JSON gets a CopyToClipboard $defs entry { type: "CopyToClipboard", params }.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Add parseMessage and buildMessage for the OpenUI message protocol (]]>openui:content, context, end marker lines). The react-lang Renderer now accepts a stored message as response and renders its content.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Add library functions: defineFunction({ name, description, params, returns, fn }) plus createLibrary({ functions }), for example @Percent(done, total). Programs call them with positional arguments in params key order, and fn receives one object with schema defaults applied. library.toJSONSchema() lists them under functions (params and returns as JSON Schema) and toSpec() describes them like components, so every parser built from the schema, including the server autofix, accepts them. Args go through the component prop pipeline: the parser maps them by name and validates literals (type-mismatch, missing-required, excess-args; an invalid optional arg is dropped so its default applies), the runtime validates dynamic args and return values. An invalid call or a throwing fn evaluates to null with a runtime-error. Calls run on every streamed chunk like built-ins; the Renderer reports their errors once streaming ends. The prompt lists them with the built-in functions, and the new builtinFunctions prompt option lists the built-ins without toolCalls or bindings; prompt options never change what parses or runs.

    Built-ins are now defined with defineFunction too, so their prompt lines are generated (for example @Sum(numbers: number[]) → number). BUILTINS, BUILTIN_NAMES, LAZY_BUILTINS, isBuiltin and the BuiltinDef type are removed.

Patch Changes

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Action slots are JSON Schema $refs, like component slots. An action prop is {"$ref": "#/$defs/ActionExpression"}, and the library's $defs has ActionExpression with the same legacy object union as before. A slot can name specific steps with refs, for example share: z.union([steps.ToAssistant.ref, steps.OpenUrl.ref]).optional() (lang-core, re-exported by react-lang): the JSON gets ToAssistant and OpenUrl $defs, and the prompt signature prints share?: @ToAssistant | @OpenUrl. These refs only shape the prompt and the JSON for now; the runtime accepts any step in them. Action $defs are never components.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Action steps are plans. Every step call now evaluates to a one-step plan ({ steps: [step] }), so a single step needs no wrapper: Button("Ask", @ToAssistant("Tell me more")). Several steps still need Action([...]), for example Button("Save", Action([@Set($saved, true), @ToAssistant("Saved")])); a plain list of steps stays a plain array. An invalid step evaluates to an empty plan (a no-op) instead of null, and Action([...]) flattens nested plans. Legacy { type, params } action configs are unchanged.

    New action() helper (lang-core, re-exported by react-lang), like reactive(): it returns the action prop schema, already tagged ActionExpression, so libraries write action: action().optional() instead of calling tagSchemaId(..., "ActionExpression") themselves. react-ui's action props use it.

    Prompt change: for libraries with action props (ActionExpression), the system prompt teaches one step bare and several steps in Action([...]). The react-ui prompt examples, including the chat library examples, use step calls instead of legacy objects.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Stored messages and Cloud responses whose second content line starts mid-line, after a cut-off first attempt, read the second attempt, as before.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Action steps read the form state when each step runs, so an earlier @Set in the same plan is visible.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - OpenUI Lang 1.0 entry rule: the entry is the root statement, else the first statement that calls the library root component, wherever it is (no-root with severity: "warning"), else a no-root error. With no entry, statements are not also reported as orphaned. root = $t ? A : B is a valid entry, exposed as ParseResult.rootExpression and evaluated with the new evaluateRoot(). An @Name(...) call that is not a built-in or action step reports unknown-function and evaluates to null; its statement is kept. React: renders ternary entries and reports no-root instead of parse-failed when statements parsed but no entry rendered. ValidationErrorCode adds no-root and unknown-function. ValidationError and OpenUIError gain an optional severity: "warning"; react-lang passes it through to onError.

    Breaking:

... (truncated)

Changelog

Sourced from @​openuidev/react-lang's changelog.

1.0.0

Major Changes

  • #1348 9e76b1d Thanks @​Aditya-thesys! - OpenUI Lang 1.0.

    • Upgrade @openuidev/lang-core and @openuidev/react-lang together, and together with the server that generates the system prompt. A 1.0 prompt teaches bare action steps (@ToAssistant("Hi") without Action([...])), which a 0.x client does not run.
    • react-ui 0.18 requires react-lang 1.0 (peer >=1.0.0 <2.0.0); upgrade them together.
    • browser-bundle 0.2 bundles react-lang 1.0 and react-ui 0.18.
    • server 0.3 uses lang-core 1.0 for autofix (parser and system prompt); stay on server 0.2 with a 0.x client. Autofix ignores warnings and accepts a ternary entry, so a program that renders does not start a fix round.
    • vue-lang, svelte-lang and angular-lang stay on 0.4 (OpenUI Lang 0.x). Keep @openuidev/lang-core ^0.4 for the prompts they render.
    • A program whose root statement is written last shows nothing while it streams, until the root line arrives. Write root first, as the system prompt asks.
    • A cut-off output that never reached its root statement, or any statement calling the root component, now renders blank instead of a partial tree.

Minor Changes

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Add custom actions: defineAction({ name, description, params }) plus createLibrary({ actions }). Programs use them like the built-in steps, alone or in Action([...]), for example Button("Copy", @CopyToClipboard(order.id)), with positional arguments in params key order. On click the step reaches the host onAction as { type: name, params } (schema defaults applied), in order with the other steps, and the event is typed from the library so params narrows by type. Args are validated like library function args, and a step with invalid args is a no-op. Only a real call produces a custom step: a plan read from data (an object literal, $state, an @Each item) loses its custom steps, and a legacy action object whose type names a custom action is ignored. library.toJSONSchema() lists actions under actions, the prompt lists them with the built-in action steps, and toSpec() includes them. The React Renderer and the server autofix parser pick them up automatically, and the react-ui Button validates its form before a custom action.

    Types: the exported ActionStep union adds { type: "custom_action"; name; params }, so a switch over ActionStep types needs a case for it.

    In react-ui, AgentInterface takes onAction, which receives the actions the chat does not handle itself, such as custom actions.

    The built-in steps (@Run, @ToAssistant, @OpenUrl, @Set, @Reset) are now defined like custom actions and live in the same call registry, so their prompt lines are generated too (for example @OpenUrl(url: string)). ACTION_NAMES is removed.

    A defined action has a .ref for slots that take only some actions, for example share: z.union([copy.ref, steps.OpenUrl.ref]).optional(): the prompt signature prints share?: @CopyToClipboard | @OpenUrl, and the JSON gets a CopyToClipboard $defs entry { type: "CopyToClipboard", params }.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Add parseMessage and buildMessage for the OpenUI message protocol (]]>openui:content, context, end marker lines). The react-lang Renderer now accepts a stored message as response and renders its content.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Add library functions: defineFunction({ name, description, params, returns, fn }) plus createLibrary({ functions }), for example @Percent(done, total). Programs call them with positional arguments in params key order, and fn receives one object with schema defaults applied. library.toJSONSchema() lists them under functions (params and returns as JSON Schema) and toSpec() describes them like components, so every parser built from the schema, including the server autofix, accepts them. Args go through the component prop pipeline: the parser maps them by name and validates literals (type-mismatch, missing-required, excess-args; an invalid optional arg is dropped so its default applies), the runtime validates dynamic args and return values. An invalid call or a throwing fn evaluates to null with a runtime-error. Calls run on every streamed chunk like built-ins; the Renderer reports their errors once streaming ends. The prompt lists them with the built-in functions, and the new builtinFunctions prompt option lists the built-ins without toolCalls or bindings; prompt options never change what parses or runs.

    Built-ins are now defined with defineFunction too, so their prompt lines are generated (for example @Sum(numbers: number[]) → number). BUILTINS, BUILTIN_NAMES, LAZY_BUILTINS, isBuiltin and the BuiltinDef type are removed.

Patch Changes

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Action slots are JSON Schema $refs, like component slots. An action prop is {"$ref": "#/$defs/ActionExpression"}, and the library's $defs has ActionExpression with the same legacy object union as before. A slot can name specific steps with refs, for example share: z.union([steps.ToAssistant.ref, steps.OpenUrl.ref]).optional() (lang-core, re-exported by react-lang): the JSON gets ToAssistant and OpenUrl $defs, and the prompt signature prints share?: @ToAssistant | @OpenUrl. These refs only shape the prompt and the JSON for now; the runtime accepts any step in them. Action $defs are never components.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Action steps are plans. Every step call now evaluates to a one-step plan ({ steps: [step] }), so a single step needs no wrapper: Button("Ask", @ToAssistant("Tell me more")). Several steps still need Action([...]), for example Button("Save", Action([@Set($saved, true), @ToAssistant("Saved")])); a plain list of steps stays a plain array. An invalid step evaluates to an empty plan (a no-op) instead of null, and Action([...]) flattens nested plans. Legacy { type, params } action configs are unchanged.

    New action() helper (lang-core, re-exported by react-lang), like reactive(): it returns the action prop schema, already tagged ActionExpression, so libraries write action: action().optional() instead of calling tagSchemaId(..., "ActionExpression") themselves. react-ui's action props use it.

    Prompt change: for libraries with action props (ActionExpression), the system prompt teaches one step bare and several steps in Action([...]). The react-ui prompt examples, including the chat library examples, use step calls instead of legacy objects.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Stored messages and Cloud responses whose second content line starts mid-line, after a cut-off first attempt, read the second attempt, as before.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - Action steps read the form state when each step runs, so an earlier @Set in the same plan is visible.

  • #1348 9e76b1d Thanks @​Aditya-thesys! - OpenUI Lang 1.0 entry rule: the entry is the root statement, else the first statement that calls the library root component, wherever it is (no-root with severity: "warning"), else a no-root error. With no entry, statements are not also reported as orphaned. root = $t ? A : B is a valid entry, exposed as ParseResult.rootExpression and evaluated with the new evaluateRoot(). An @Name(...) call that is not a built-in or action step reports unknown-function and evaluates to null; its statement is kept. React: renders ternary entries and reports no-root instead of parse-failed when statements parsed but no entry rendered. ValidationErrorCode adds no-root and unknown-function. ValidationError and OpenUIError gain an optional severity: "warning"; react-lang passes it through to onError.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [@openuidev/react-lang](https://github.com/thesysdev/openui/tree/HEAD/packages/react-lang) from 0.3.2 to 1.0.0.
- [Release notes](https://github.com/thesysdev/openui/releases)
- [Changelog](https://github.com/thesysdev/openui/blob/main/packages/react-lang/CHANGELOG.md)
- [Commits](https://github.com/thesysdev/openui/commits/@openuidev/react-lang@1.0.0/packages/react-lang)

---
updated-dependencies:
- dependency-name: "@openuidev/react-lang"
  dependency-version: 1.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot requested a review from debpalash as a code owner October 16, 2026 04:47
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants