Versione verificata
| Framework verificato | GX-TXT 0.9.8.10-dev-031 |
|---|---|
| Data verifica | 3 ottobre 2026 |
| Bridge contract | OCTAVE_SCRIPT_BRIDGE_API_v1, condiviso dai client GNU Octave e Python |
| Inventario usato | docs/api/SCRIPT_BRIDGE_COVERAGE_v1.json |
1. Prima distinzione: reference pubblica ≠ operazione disponibile al Bridge
Una API reference GX-TXT può descrivere il contratto pubblico completo del provider, comprese operazioni destinate a CORE, Tcl, GUI o moduli nativi. Lo Script Bridge espone soltanto le operazioni per le quali esiste una binding script-callable registrata dal provider.
Per questo motivo la domanda corretta non è soltanto «esiste FOO_API_v1?», ma:
- questa API è registrata per lo Script Bridge corrente?
- la specifica operation che mi serve è registrata?
- provider, versione e capability corrispondono a ciò che richiede il mio script?
- quali sono gli argomenti e il result contract documentati dal provider?
2. Le funzioni generiche del Bridge
Il livello generico è stabile e uguale concettualmente per Python e Octave.
| Funzione | Uso |
|---|---|
gxtxt_bridge_info() | Identità/versione del Bridge, linguaggi supportati e callback contract. |
gxtxt_api_list() | Elenca soltanto le API attualmente registrate come script-callable. |
gxtxt_api_has(api_id) | Test rapido di disponibilità. |
gxtxt_api_describe(api_id) | Descriptor machine-readable: provider, versione, capability, operations, argomenti e result contract. |
gxtxt_api_has_operation(api_id, operation) | Verifica una operation specifica. |
gxtxt_api_require(requirements) | Preflight dichiarativo; fallisce prima del calcolo se il contratto richiesto non è presente. |
gxtxt_api_call(api_id, operation, args) | Invoca l'operation con argomenti posizionali tipizzati. |
gxtxt_context() | Contesto della run: input alias, run ID, script identity, output directory e parametri. |
gxtxt_callback_register() / release() | Callback execution-scoped per le API che le supportano. |
gxtxt_api_describe() conferma se e come quella operazione è esposta al tuo script in quella release.
3. Metodo corretto per leggere una API reference
3.1 Identifica API ID e versione
Cerca nella reference l'ID versionato, per esempio CANONICAL_DATASET_API_v2. La versione del contratto è indipendente dalla release GX-TXT.
3.2 Cerca la sezione Script Bridge
Molte reference riportano esplicitamente una sezione Octave Script Bridge o equivalente. Quella sezione è particolarmente importante: descrive le operations esposte, la convenzione degli argomenti posizionali e il risultato visto dallo script.
3.3 Non trasformare automaticamente le firme Tcl in chiamate Bridge
Esempio: la Canonical Dataset API v2 documenta numerose funzioni Tcl per handle, hyperslab e binary transport. Nella dev-031 il Bridge espone invece soltanto:
list()
describe(dataset_id)
read_range(dataset_id, variable_ids, zero_based_start, count)
Quindi una funzione Tcl presente nella stessa reference non diventa automaticamente un nome valido per gxtxt_api_call().
3.4 Controlla gli argomenti strutturati
gxtxt_api_describe() include descriptor delle operations con nome, summary, argomenti strutturati, required status e result_contract. Le opzioni scientifiche, enumerazioni, unità e semantiche restano però responsabilità della reference specifica del provider.
3.5 Controlla provider e capability quando la dipendenza è importante
Se lo script dipende non soltanto dall'ID ma da un provider o da capability specifiche, esprimilo nel preflight anziché affidarti a un controllo manuale.
4. Required APIs: rendere esplicito il contratto dello script
La sintassi compatta è:
API_ID
API_ID@version
API_ID@version:provider_id
API_ID@version:provider_id+capability|capability
Esempi:
CANONICAL_DATASET_API_v2@2
PLOT_DATASET_API_v3@3:plot.dataset+plotspec|render
Il controllo avviene prima del corpo scientifico. Questo è preferibile a scoprire a metà calcolo che un'operazione necessaria non è disponibile.
5. Dalla reference alla chiamata: esempio completo
La reference di CANONICAL_DATASET_API_v2 dichiara per il Bridge l'operation read_range con argomenti:
dataset_id, variable_id_cell/list, zero_based_start, count
Python
from gxtxt import (
gxtxt_api_list, gxtxt_api_describe, gxtxt_api_require,
gxtxt_api_has_operation, gxtxt_api_call
)
# 1. Runtime discovery
apis = gxtxt_api_list()
desc = gxtxt_api_describe("CANONICAL_DATASET_API_v2")
# 2. Fail before scientific work if the contract is missing
gxtxt_api_require("CANONICAL_DATASET_API_v2@2:canonical_dataset")
# 3. Verify the operation named by the reference
if not gxtxt_api_has_operation("CANONICAL_DATASET_API_v2", "read_range"):
raise RuntimeError("read_range is unavailable")
# 4. Translate the provider reference literally into positional args
block = gxtxt_api_call(
"CANONICAL_DATASET_API_v2",
"read_range",
["sample", ["v0001"], 0, 1024],
)
GNU Octave
apis = gxtxt_api_list();
desc = gxtxt_api_describe('CANONICAL_DATASET_API_v2');
gxtxt_api_require('CANONICAL_DATASET_API_v2@2:canonical_dataset');
if (!gxtxt_api_has_operation('CANONICAL_DATASET_API_v2','read_range'))
error('read_range is unavailable');
endif
block = gxtxt_api_call(
'CANONICAL_DATASET_API_v2',
'read_range',
{'sample', {'v0001'}, 0, 1024}
);
La traduzione è deliberatamente meccanica: API ID e operation sono stringhe esatte della binding; args resta una lista/tupla Python o una cell array Octave nello stesso ordine documentato.
Per una spiegazione didattica delle API più ampie: NUMERIC_API_v1 e SIGNAL_API_v1.
6. Reference utilizzabili con lo Script Bridge nella dev-031
La tabella seguente non sostituisce le reference specifiche: serve a sapere quali reference vale la pena consultare da uno script e quali operations risultano esposte nella copertura verificata.
| API reference | v | Provider | Operations bridged | Quando consultarla |
|---|---|---|---|---|
CANONICAL_DATASET_API_v2 | 2 | canonical_dataset | list, describe, read_range | Dataset: elenco, descrizione e lettura bounded. |
DATASET_VARIABLE_SCHEMA_API_v3 | 3 | dataset_variable_schema | list, get | Variable ID, dtype, shape, coordinate e metadata. |
DATASET_METADATA_API_v1 | 1 | dataset_metadata | read, update, unset | Metadata persistenti del Dataset. |
DATASET_SELECTION_API_v1 | 1 | dataset_selection | list, describe | Lettura delle selezioni persistenti. |
TABLE_STREAM_API_v3 | 3 | table_stream | open_dataset, metadata, next, diagnostics, close | Streaming tabellare per Dataset grandi. |
TEMPORAL_SET_API_v1 | 1 | temporal_set | list, read, resolve_info, resolve_member | Set temporali e risoluzione dei membri. |
UNIT_REGISTRY_API_v1 | 1 | unit_registry | list, definition, compatible, convert | Unità, compatibilità e conversione. |
DATASET_PUBLICATION_API_v2 | 2 | dataset_publication | begin, declare_dimension, declare_variable, write_variable, append, finalize, abort | Pubblicazione di Dataset derivati. |
DATASET_FILE_PUBLICATION_API_v1 | 1 | dataset_file_publication | publish | Pubblicazione di file completati. |
SESSION_PERSISTENCE_API_v1 | 1 | session_persistence | commit | Commit esplicito della persistenza Session. |
PLOT_DATASET_API_v3 | 3 | plot.dataset | api_info, new_spec, validate_spec, upsert_plot, read_plot, render, artifacts, build_scene, interactive_status, sync_interactive | Facade corrente per grafici persistenti e 3D. |
PLOT_DATASET_API_v2 | 2 | plot.dataset | api_info, validate_spec, create_plot, read_plot, render, rerender | Facade PlotSpec v2 ancora bridged. |
GRAPH_SERIES_API_v1 | 1 | graph_series | list | Ispezione delle Graph Series. |
VIEWER_PROVIDER_API_v1 | 1 | viewer_provider | providers, scene_get, scene_set, layer_ids, layer_get, layer_set | Scene/layer tramite Viewer Provider pubblico. |
NATIVE_3D_VIEWER_API_v1 | 1 | viewer.native_3d | source_identity | Identità pubblica della sorgente 3D. |
NUMERIC_API_v1 | 1 | math.numeric | array_binary, array_compare, array_mask, array_reduce, array_select, array_unary, array_where, foundation, linear_matrix, statistics_dataset, root_find, minimize_1d, minimize, nonlinear_fit, dataset_nonlinear_fit | Numerica generale, algebra, fitting, ottimizzazione e callback. |
SIGNAL_API_v1 | 1 | math.signal | 66 operazioni | Signal processing: filter, spectral, STFT, LTI, metrics, multirate. |
RF_NETWORK_API_v1 | 1 | math.rf_network | 29 operazioni | Reti RF: conversioni, metriche, cascade, de-embedding, sweep. |
MAGNETICS_API_v1 | 1 | math.magnetics | 45 operazioni | Magnetismo: campi, circuiti, BH, energia, integrali e coordinate. |
SCRIPT_CALLBACK_API_v1 | 1 | Bridge execution scope | register, release | Callback Python/Octave passabili alle API numeriche supportate. |
PARALLEL_EXECUTION_API_v1 | 1 | parallel_execution | api_info, resources | Policy risorse; execute/process_command restano host-only. |
PROGRESS_API_v1 | 1 | progress | publish | Aggiornamento dello stato/progresso. |
SESSION_INSPECTION_API_v1 | 1 | session_inspection | summary, dataset_ids, dataset, selection_ids | Ispezione read-oriented della Session. |
PROJECT_API_v1 | 1 | project | list, get | Ispezione dei Project. |
SCIENTIFIC_REFERENCE_LIBRARY_API_v1 | 1 | scientific_reference_library | list_libraries, library_info, list_entities, entity_info, list_spectra, spectrum_info, read_spectrum, search, bulk_rank | Librerie scientifiche di riferimento. |
SEMANTIC_REGISTRY_API_v1 | 1 | semantic_registry | list, definition | Semantiche registrate. |
DOCUMENTATION_BROWSER_API_v1 | 1 | documentation_browser | list, read | Documentazione pubblica accessibile al runtime. |
INTERACTIVE_DOCUMENT_API_v1 | 1 | interactive_document | list, read | Documenti interattivi: lettura; write resta host-only. |
MODULE_API_v1 | 1 | module | public_api_ids | Scoperta delle API pubbliche esposte dai moduli. |
gxtxt_api_describe() per filtrare per nome e poi aprire la reference specifica, invece di memorizzare l'intero catalogo.
7. Percorsi consigliati per tipo di lavoro
Leggere un Dataset
SESSION_INSPECTION_API_v1 → DATASET_VARIABLE_SCHEMA_API_v3 → CANONICAL_DATASET_API_v2. Per flussi grandi usa TABLE_STREAM_API_v3.
Pubblicare risultati
DATASET_PUBLICATION_API_v2 per Dataset strutturati; DATASET_FILE_PUBLICATION_API_v1 per file completati.
Creare o aggiornare grafici
Preferisci PLOT_DATASET_API_v3 come facade corrente. La reference Plot Dataset spiega PlotSpec, identità persistente, rendering e 3D.
Calcolo numerico
NUMERIC_API_v1, SIGNAL_API_v1, RF_NETWORK_API_v1, MAGNETICS_API_v1. Se la firma richiede una funzione, consulta anche SCRIPT_CALLBACK_API_v1.
Unità e semantica
UNIT_REGISTRY_API_v1 e SEMANTIC_REGISTRY_API_v1 evitano conversioni e interpretazioni hardcoded nello script.
Viewer e 3D
VIEWER_PROVIDER_API_v1, NATIVE_3D_VIEWER_API_v1 e PLOT_DATASET_API_v3. I controlli GUI live non sono tutti script-callable.
Librerie scientifiche
SCIENTIFIC_REFERENCE_LIBRARY_API_v1 per ricerca, ranking, entità e spettri registrati.
Risorse e progress
PARALLEL_EXECUTION_API_v1/resources per dimensionare i worker; PROGRESS_API_v1/publish per lo stato della run.
8. Callback: quando una reference contiene una funzione da valutare
Alcune operations numeriche accettano funzioni definite dallo script. Non si serializza il codice della funzione: si registra un handle execution-scoped con SCRIPT_CALLBACK_API_v1.
# Python
rhs = gxtxt_callback_register(lambda t, y: -2*y)
result = gxtxt_api_call(
"NUMERIC_API_v1", "foundation",
["ode", "solve", rhs, [0.,1.], [1.], {"reltol":1e-8}]
)
gxtxt_callback_release(rhs)
Lo stesso principio vale in Octave con function handle. La reference numerica specifica definisce shape e semantica del callback; la Callback API definisce lifecycle, errori e limiti del trasporto.
9. Tipi e transport: come interpretare i result contract
Il Bridge trasporta stringhe UTF-8, booleani, interi, float, vettori, matrici, celle/liste, struct/dict, liste di struct e combinazioni annidate. Gli array numerici grandi usano automaticamente un trasporto binario privato.
- oltre 10.000 elementi gli array numerici possono usare il blocco binario float64;
- in Python gli array numerici ritornano come NumPy
ndarrayse NumPy è installato, altrimenti come liste; - in Octave il caller riceve normali valori Octave;
- lo script non gestisce file di trasporto né path interni.
Quando una reference parla di «struct», «dictionary», «cell» o «list», interpreta il tipo nel linguaggio client mantenendo la struttura logica, non l'implementazione Tcl del provider.
10. API pubbliche ma host-only
Le seguenti reference possono essere pubbliche e utili per sviluppare moduli o CORE, ma la copertura dev-031 le marca come host-only per gli script:
| API / operation | Perché non si usa dal Bridge |
|---|---|
CONFIGURATION_API_v1 | Configurazione host e selezione runtime. |
GRAPH_PROVIDER_API_v1 | Registrazione provider e dispatch grafico GUI. |
ANALYSIS_SOURCE_MAP_API_v1 | Registrazione Analysis Sources; lo script riceve binding già risolti in gxtxt_context(). |
SESSION_GENERATOR_LIBRARY_API_v1 | Amministrazione generatori e creazione Session. |
SCRIPT_EXECUTION_API_v1 | Registry e lifecycle del runner. |
PARALLEL_EXECUTION_API_v1/execute | Command prefix Tcl/process rimangono host-owned; lo script legge solo la policy resources. |
NATIVE_3D_VIEWER_API_v1/renderer_controls | Controlli renderer con GUI live. |
INTERACTIVE_DOCUMENT_API_v1/write | Creazione/update documenti provider-owned. |
Notare i casi parziali: PARALLEL_EXECUTION_API_v1 è disponibile per resources, ma non per execute; INTERACTIVE_DOCUMENT_API_v1 è leggibile, ma write è host-only.
11. Interfacce intenzionalmente non script-safe
| Interfaccia | Motivo |
|---|---|
PLUGIN_INSTALL_API_v1 | Installazione amministrativa dei package. |
ACQUISITION_HANDLER_API_v1 | Registrazione handler, probe e import dispatch. |
NATIVE_3D_RAW_HOST_PROTOCOL | Protocollo raw privato Native3D. |
DATASET_REGISTRY_INTERNAL | Registry Dataset mutabile e Manifest raw. |
VIEWER_BACKEND_REGISTER | Registrazione backend e callback GUI. |
PARALLEL_EXECUTION_API_v1/process_command | Builder di comandi eseguibili arbitrari. |
12. Errori del Bridge
Gli identificatori generici stabili documentati sono:
GXTXT:ScriptBridge:NotActive | Chiamata fuori da una run con Bridge attivo. |
UnknownAPI | API non registrata script-callable. |
UnknownOperation | Operation non presente nella binding. |
InvalidArguments | Firma/argomenti non validi. |
Transport | Errore nel typed transport. |
RemoteError | Errore esplicito del provider. |
Un provider error non viene convertito in un risultato vuoto. In Python gli errori arrivano come GXTXTBridgeError; in Octave come errori con identificatore/messaggio.
13. Il Bridge non è una sandbox
Il Bridge limita quali servizi GX-TXT possono essere invocati, ma lo script Python/Octave resta codice del ricercatore eseguito con i permessi locali dell'utente. Non usare questa architettura come confine di sicurezza per codice non fidato.
14. Come aggiornare questa guida a una nuova release GX-TXT
Questa è la parte da ripetere ogni volta che la documentazione viene riallineata a una nuova release.
- Leggere
VERSION.txtdella nuova baseline. - Leggere integralmente
docs/api/SCRIPT_BRIDGE_COVERAGE_v1.json. - Confrontare API aggiunte/rimosse, versioni, provider, status e lista operations.
- Ricontrollare
OCTAVE_SCRIPT_BRIDGE_API_v1.mdePYTHON_SCRIPT_CLIENT_v1.md. - Per ogni API che cambia, aprire la reference del provider e verificare la sua sezione Script Bridge.
- Controllare
gxtxt_api_describe()su una run reale per almeno le API principali. - Aggiornare la matrice di questa pagina e la data di verifica.
- Rigenerare soltanto lo ZIP differenziale del sito.
15. Riferimenti del framework usati per questa guida
docs/api/OCTAVE_SCRIPT_BRIDGE_API_v1.mddocs/api/PYTHON_SCRIPT_CLIENT_v1.mddocs/api/SCRIPT_BRIDGE_COVERAGE_v1.jsondocs/api/SCRIPT_CALLBACK_API_v1.md- le reference specifiche delle API elencate nella matrice precedente.