Skip to content

Complete Studio Script member lifecycle gating and invoke contract handling #442

@potter-sun

Description

@potter-sun

Problem

Studio can edit and draft-run Script implementations, but the member lifecycle still behaves as workflow-first. Script cannot reliably move through save observation, bind, invoke, and observe as a first-class member without risking stale source or incorrect endpoint assumptions.

Scope

  • Add Script Build state handoff from StudioScriptBuildPanel to the Studio parent.
  • Only expose a Script pending bind candidate after the saved revision is observed as applied in the script catalog.
  • Add a Script branch in the parent bind handler that calls studioApi.bindScopeScript.
  • Refetch/select the bound service after binding.
  • Make Invoke use the bound service endpoint contract instead of assuming every Script supports chat stream.
  • Keep draft-run inside Build and do not treat draft-run as proof that the member is bound or invokable.

Acceptance Criteria

  • Dirty Script source does not create a bind candidate.
  • Save accepted but not catalog-applied Script source does not create a bind candidate.
  • Catalog-applied Script revision creates a Script pending bind candidate.
  • Binding that candidate calls studioApi.bindScopeScript, not bindScopeWorkflow.
  • Invoke defaults to chat only when the bound Script service exposes a chat-compatible endpoint.
  • Non-chat Script endpoints show an honest contract/blocked state instead of pretending chat works.
  • Frontend tests cover save-observed gating, Script bind, and non-chat invoke behavior.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions