Passa al contenuto principale

Sistema dei parametri

I Workflow possono definire parametri configurabili che fanno apparire una finestra di dialogo delle impostazioni da compilare prima dell'esecuzione. Il sistema dei parametri supporta più tipi e origini di dati dinamici.

Definizione dei parametri

I parametri sono definiti nel campo parameters di workflow.json:

{
"parameters": {
"language": {
"type": "string",
"title": "Lingua di output",
"description": "Seleziona la lingua per il contenuto di output",
"default": "en-US",
"enum": ["en-US", "zh-CN", "ja-JP"],
"allowCustom": true
},
"maxResults": {
"type": "number",
"title": "Risultati massimi",
"description": "Limite superiore al numero di risultati restituiti",
"default": 10,
"min": 1,
"max": 100
},
"enableFilter": {
"type": "boolean",
"title": "Abilita filtro",
"description": "Se abilitare il filtraggio dei risultati",
"default": true,
"visible_if": { "parameter": "language", "equals": false }
}
}
}

Tipi di parametri

TipoDescrizioneControllo applicabile
stringStringa di testoCasella di testo / menu a tendina / selettore dinamico
numberNumeroInput numerico (supporta vincoli min/max)
booleanBooleanoInterruttore / casella di selezione

Parametri richiesti

Impostare required: true quando un workflow non può essere eseguito senza un parametro:

{
"collectionScope": {
"type": "string",
"required": true,
"title": "Collection Scope"
}
}

Le stringhe richieste devono essere non vuote, i numeri richiesti devono essere finiti ed entrambi i valori di un booleano richiesto sono validi. I valori richiesti mancanti vengono rifiutati prima del dispatch del provider. I parametri rimangono facoltativi quando required è false o omesso.

Valori enum e valori personalizzati

{
"language": {
"type": "string",
"enum": ["en-US", "zh-CN", "ja-JP"],
"allowCustom": true,
"default": "en-US"
}
}
  • enum: Elenco di valori preimpostati suggeriti. Visualizzati come opzioni selezionabili nel menu a tendina
  • allowCustom (solo tipo string): Quando impostato a true, i valori enum sono solo raccomandazioni; gli utenti possono inserire liberamente altri valori. Quando impostato a false o omesso, gli utenti possono solo selezionare da enum

Visualizzazione condizionale

{
"advancedMode": {
"type": "boolean",
"title": "Modalità avanzata",
"default": false
},
"customEndpoint": {
"type": "string",
"title": "Endpoint personalizzato",
"visible_if": { "parameter": "advancedMode", "equals": true }
}
}

visible_if controlla la visualizzazione/nascondimento dei parametri nella finestra di dialogo delle impostazioni:

  • equals: true — Visualizza solo quando il valore del parametro di destinazione è truthy
  • equals: false — Visualizza solo quando il valore del parametro di destinazione è falsy

Esempio: Mostra/Nascondi collegato

{
"auto_tag_regulator": {
"type": "boolean",
"title": "Regolatore di tag automatico",
"default": true
},
"auto_tag_infer_tag": {
"type": "boolean",
"title": "Inferisci tag",
"default": true,
"visible_if": { "parameter": "auto_tag_regulator", "equals": true }
}
}

Quando auto_tag_regulator è deselezionato, il parametro auto_tag_infer_tag viene automaticamente nascosto.

Origini delle opzioni dinamiche

Le opzioni dei valori dei parametri possono provenire dai dati in tempo reale di Zotero:

{
"targetCollection": {
"type": "string",
"title": "Collezione di destinazione",
"default": "",
"optionsSource": {
"kind": "zotero.collections",
"library": "current",
"includeEmpty": true,
"valueFormat": "collectionRef",
"labelFormat": "path"
}
},
"relatedTopic": {
"type": "string",
"title": "Argomento correlato",
"optionsSource": {
"kind": "synthesis.topics",
"filter": "updatable"
}
}
}

Origini delle opzioni supportate

kindDescrizioneParametri disponibili
zotero.collectionsElenco delle collezioni nella libreria Zotero correntelibrary (current/user/number), includeEmpty, valueFormat (collectionRef), labelFormat (path/title)
synthesis.topicsElenco degli argomenti nel Synthesis Workbenchfilter (all/updatable), valueFormat (topicId), labelFormat (title)

Parametri comuni di optionsSource

ParametroDescrizione
libraryAmbito della libreria. "current" (libreria corrente), "user" (libreria utente), numero (ID di una libreria specifica)
includeEmptySe includere un'opzione vuota (per "nessuna selezione")
valueFormatFormato dei valori delle opzioni: "collectionRef" / "topicId"
labelFormatFormato di visualizzazione delle etichette delle opzioni: "path" / "title"
allowStaleConsente l'uso di dati in cache (evita di richiedere ogni volta che si aprono le impostazioni)
filterCondizione di filtro (varia in base al kind)

Vincoli per parametri numerici

{
"confidence": {
"type": "number",
"title": "Soglia di confidenza",
"default": 0.8,
"min": 0,
"max": 1
}
}

min e max vincolano l'intervallo dei valori di input.

Lettura dei parametri negli Hook

In preflight, buildRequest e applyResult, puoi leggere i valori dei parametri impostati dall'utente tramite executionOptions.workflowParams:

export function buildRequest({ executionOptions, runtime }) {
const params = executionOptions?.workflowParams || {};
const language = params.language || "en-US";
const maxResults = params.maxResults || 10;

return {
kind: "skillrunner.job.v1",
create: { skill_id: "my-skill" },
parameter: { language, max_results: maxResults },
};
}

Localizzazione dei parametri

Il title e la description dei parametri supportano la localizzazione:

{
"i18n": {
"messages": {
"zh-CN": {
"parameters.language.title": "Lingua",
"parameters.language.description": "Seleziona la lingua per il contenuto di output"
}
}
}
}

Vedere la pagina Localizzazione per il meccanismo completo di localizzazione.

Prossimi passi

  • Contesto di selezione — Comprendere come la selezione degli elementi dell'utente viene passata al Workflow
  • Tipi di richiesta — Metodi di passaggio dei parametri per diversi tipi di richiesta