Skip to content

[TS Calls] Execute semantic models written in TypeScript #366

Description

@CaelmBleidd

Part of #360. Depends on #365 and P0 gate #383.

Goal

Run semantic models written as ordinary TypeScript through the normal EtsIR interpreter.

Scope

  • Implement a source-model object using the same ID/target/execution contract as [TS Calls] Register and execute guarded semantic models #365. Do not add a separate backend registry, registration wrappers or duplicated implementation-kind tags.
  • Load the selected model sources through the native JacoDB frontend and add their EtsIR methods to the scene.
  • Bind the original receiver and arguments to the model entry point; use normal call execution for return values, exceptions, heap changes and aliases.
  • Check the supported domain before entry. Unsupported states retain the configured residual fallback.
  • Route nested unknown calls through the same dispatcher and prevent recursive model redirection.
  • Implement Array.pop as source code using indexing and length, not by calling pop again. Correct array-length writes must use the engine's actual array-length representation.
  • Keep the initial supported receiver/element domain explicit; unsupported/unknown/fake representations fall back. A single possible type returned from a multi-valued stream is not proof.
  • Reuse existing frontend loading, scene validation and signature resolution. Cache/loading work should be driven by actual reuse, not a new generic artifact subsystem.
  • Record source/artifact content identity where externally loaded models can differ independently of the tool revision. Do not introduce manually managed model versions or compatibility negotiation.

Definition of Done

A model backend platform, complete ECMAScript array semantics and unrelated core redesign are outside this issue. Extend domains only with a demonstrated case and tests.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions