fix: respect disabled fields in JSON input mode (#8663)
* fix: respect disabled fields in JSON input mode Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: guard against undefined default in disabled field enforcement Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: show toast when disabled fields are reset to defaults on run Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,7 +38,10 @@
|
||||
export async function run(overrideScheduledForStr?: string | undefined | null) {
|
||||
let processedArgs: Record<string, any>
|
||||
try {
|
||||
processedArgs = await processSecretArgs(args ?? {}, runnable?.schema)
|
||||
processedArgs = await processSecretArgs(
|
||||
enforceDisabledDefaults(args ?? {}, true),
|
||||
runnable?.schema
|
||||
)
|
||||
} catch (e) {
|
||||
sendUserToast('Failed to process sensitive args: ' + e, true)
|
||||
return
|
||||
@@ -132,6 +135,30 @@
|
||||
}
|
||||
}
|
||||
|
||||
function enforceDisabledDefaults(
|
||||
args: Record<string, any>,
|
||||
notify: boolean = false
|
||||
): Record<string, any> {
|
||||
const schema = runnable?.schema
|
||||
if (!schema?.properties) return args
|
||||
const result = { ...args }
|
||||
const resetKeys: string[] = []
|
||||
for (const [key, prop] of Object.entries(schema.properties) as [string, any][]) {
|
||||
if (prop?.disabled && 'default' in prop) {
|
||||
if (notify && result[key] !== prop.default) {
|
||||
resetKeys.push(key)
|
||||
}
|
||||
result[key] = prop.default
|
||||
}
|
||||
}
|
||||
if (resetKeys.length > 0) {
|
||||
sendUserToast(
|
||||
`Disabled field${resetKeys.length > 1 ? 's' : ''} ${resetKeys.map((k) => `'${k}'`).join(', ')} reset to default value${resetKeys.length > 1 ? 's' : ''}`
|
||||
)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
export function setCode(code: string) {
|
||||
jsonEditor?.setCode(code)
|
||||
}
|
||||
@@ -249,7 +276,7 @@
|
||||
bind:this={jsonEditor}
|
||||
on:select={(e) => {
|
||||
if (e.detail) {
|
||||
args = e.detail
|
||||
args = enforceDisabledDefaults(e.detail)
|
||||
}
|
||||
}}
|
||||
updateOnBlur={false}
|
||||
|
||||
Reference in New Issue
Block a user