diff --git a/apps/web/components/dashboard/release-skill-metadata-dialog.tsx b/apps/web/components/dashboard/release-skill-metadata-dialog.tsx index 011c585..2ef0378 100644 --- a/apps/web/components/dashboard/release-skill-metadata-dialog.tsx +++ b/apps/web/components/dashboard/release-skill-metadata-dialog.tsx @@ -194,6 +194,7 @@ function SkillEditorRow({ const [runtimeEnforcement, setRuntimeEnforcement] = useState(skill.enforcement ?? "advisory"); const [runtimePriority, setRuntimePriority] = useState(skill.priority ?? 50); const [runtimeVersion, setRuntimeVersion] = useState(skill.version ?? "0.0.0"); + const [runtimeDirty, setRuntimeDirty] = useState(false); /** Errors returned from the API after a failed save (merged with live validation for display). */ const [serverIssues, setServerIssues] = useState([]); /** When false and body is valid non-empty, show rendered markdown; click or focus opens the editor. */ @@ -236,6 +237,7 @@ function SkillEditorRow({ setRuntimeEnforcement(skill.enforcement ?? "advisory"); setRuntimePriority(skill.priority ?? 50); setRuntimeVersion(skill.version ?? "0.0.0"); + setRuntimeDirty(false); setServerIssues([]); setSkillBodyEditing(false); }, [skill]); @@ -260,21 +262,20 @@ function SkillEditorRow({ failure_modes: listFromMultiline(failureModesText), invoke_first: invokeFirst, }, - runtime: { + }; + if (runtimeDirty) { + payload.runtime = { kind: runtimeKind, scope: runtimeScope, activation: { mode: runtimeActivation, intents: listFromMultiline(useWhenText), - events: [], - tags: [], - examples: [], }, enforcement: runtimeEnforcement, priority: runtimePriority, version: runtimeVersion.trim() || "0.0.0", - }, - }; + }; + } if (schemaDirty) { payload.replace_schema = true; payload.schema_json = schemaJson; @@ -284,6 +285,7 @@ function SkillEditorRow({ onSuccess: () => { setServerIssues([]); setSchemaDirty(false); + setRuntimeDirty(false); queryClient.invalidateQueries({ queryKey: ["compiled-skills", projectId, releaseId], }); @@ -445,9 +447,9 @@ function SkillEditorRow({ size="sm" onClick={() => writebackMutation.mutate()} disabled={writebackMutation.isPending || skill.clarification_required === true} - title={skill.clarification_required ? "Resolve and save runtime clarification before write-back" : "Open a draft GitHub pull request"} + title={skill.clarification_required ? "Resolve and save runtime clarification before opening a sidecar pull request" : "Open a draft pull request for .mycontext/skills.yaml"} > - {writebackMutation.isPending ? "Opening PR…" : "Write Back"} + {writebackMutation.isPending ? "Opening PR…" : "Open Sidecar PR"}