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.
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
Acceptance Criteria