feat(studio): per-field ports in flow editor + store-doc scroll fix
Some checks failed
Security / Security check (push) Failing after 1s
Some checks failed
Security / Security check (push) Failing after 1s
Picks up: - fai_studio_flow_editor 0.9.0: per-field input + output ports rendered from ModuleInfo, i18n tooltips, four additional canvas patterns ported from jai_client. - fai_client_sdk 0.18.0: regenerated ModuleField bindings for the schema_version 3 / per-field-description proto bump in fai/platform. Wires StudioFlowRunDriver.moduleInfo so the editor can fetch declared field info per step capability. The hub maps schema_version 3 manifest fields (inputs/outputs with description.en/de) through ModuleInfoResponse; this patch wraps them back into the editor's ModuleSpec / ModuleField vocabulary so the canvas paints them as distinct anchors with hover tooltips. ModuleDetail in hub.dart now carries the same inputs + outputs lists (with ModuleFieldInfo type + i18n description map), enabling other Studio surfaces — e.g. the module-detail sheet — to render bilingual field docs in a later pass. Plus: store-doc nested-scroll fix. The module detail panel's docs section sat inside its own 480px viewport inside the outer sheet's SingleChildScrollView, producing the double-scrollbar feel. Setting physics: NeverScrollableScrollPhysics on the Markdown widget and dropping the maxHeight lets the docs scroll as part of the outer sheet — one scrollbar, predictable mouse-wheel behaviour. Bumps fai_studio to 0.56.0. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
34d086c29b
commit
a698be0b57
5 changed files with 466 additions and 336 deletions
|
|
@ -40,6 +40,39 @@ class StudioFlowRunDriver implements editor.FlowRunDriver {
|
|||
return mapped;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<editor.ModuleSpec?> moduleInfo(String capability) async {
|
||||
try {
|
||||
final detail = await HubService.instance.moduleInfo(capability);
|
||||
return editor.ModuleSpec(
|
||||
capability: capability,
|
||||
inputs: detail.inputs
|
||||
.map(
|
||||
(f) => editor.ModuleField(
|
||||
name: f.name,
|
||||
type: f.type,
|
||||
description: f.description,
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
outputs: detail.outputs
|
||||
.map(
|
||||
(f) => editor.ModuleField(
|
||||
name: f.name,
|
||||
type: f.type,
|
||||
description: f.description,
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
);
|
||||
} catch (_) {
|
||||
// Module not installed locally, or transient hub error.
|
||||
// Returning null lets the editor fall back to YAML-
|
||||
// derived ports instead of failing the whole canvas.
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<editor.FlowRunEvent> events() {
|
||||
return HubService.instance
|
||||
|
|
@ -82,10 +115,7 @@ class StudioFlowRunDriver implements editor.FlowRunDriver {
|
|||
error: e.error ?? '',
|
||||
);
|
||||
case 'step.awaiting_approval':
|
||||
return editor.StepAwaitingApproval(
|
||||
flowName: flowName,
|
||||
stepId: stepId,
|
||||
);
|
||||
return editor.StepAwaitingApproval(flowName: flowName, stepId: stepId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue