@pipelex/mthds-ui 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-D2ID5Z3Y.js → chunk-R34J4GFM.js} +2 -1
- package/dist/chunk-R34J4GFM.js.map +1 -0
- package/dist/graph/index.d.ts +2 -2
- package/dist/graph/index.js +1 -1
- package/dist/graph/react/index.css +8 -0
- package/dist/graph/react/index.css.map +1 -1
- package/dist/graph/react/index.d.ts +2 -2
- package/dist/graph/react/index.js +360 -309
- package/dist/graph/react/index.js.map +1 -1
- package/dist/graph/react/stuff/StuffViewer.css +12 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/standalone/graph-standalone.html +21 -9
- package/dist/standalone/graph-viewer.css +12 -0
- package/dist/standalone/graph-viewer.js +9 -9
- package/dist/{types-CEDZIAmh.d.ts → types-B3nefYpV.d.ts} +21 -3
- package/package.json +1 -1
- package/dist/chunk-D2ID5Z3Y.js.map +0 -1
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
toolbarOrientation,
|
|
20
20
|
toolbarSide,
|
|
21
21
|
validateGraphSpec
|
|
22
|
-
} from "../../chunk-
|
|
22
|
+
} from "../../chunk-R34J4GFM.js";
|
|
23
23
|
import {
|
|
24
24
|
__spreadProps,
|
|
25
25
|
__spreadValues
|
|
@@ -136,6 +136,24 @@ function extractStorageUri(data) {
|
|
|
136
136
|
}
|
|
137
137
|
return null;
|
|
138
138
|
}
|
|
139
|
+
function extractInnerHtml(data) {
|
|
140
|
+
const fromObject = (obj2) => {
|
|
141
|
+
const value = obj2.inner_html;
|
|
142
|
+
if (typeof value === "string" && value.trim() !== "") return value;
|
|
143
|
+
return null;
|
|
144
|
+
};
|
|
145
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) return null;
|
|
146
|
+
const obj = data;
|
|
147
|
+
const direct = fromObject(obj);
|
|
148
|
+
if (direct != null) return direct;
|
|
149
|
+
for (const value of Object.values(obj)) {
|
|
150
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
151
|
+
const nested = fromObject(value);
|
|
152
|
+
if (nested != null) return nested;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
139
157
|
function extractFilename(data) {
|
|
140
158
|
if (!data || typeof data !== "object") return null;
|
|
141
159
|
const obj = data;
|
|
@@ -245,6 +263,7 @@ function StuffViewer({
|
|
|
245
263
|
const httpExternalUrl = React2.useMemo(() => extractUrl(stuff.data), [stuff.data]);
|
|
246
264
|
const storageUri = React2.useMemo(() => extractStorageUri(stuff.data), [stuff.data]);
|
|
247
265
|
const filename = React2.useMemo(() => extractFilename(stuff.data), [stuff.data]);
|
|
266
|
+
const innerHtml = React2.useMemo(() => extractInnerHtml(stuff.data), [stuff.data]);
|
|
248
267
|
const [resolvedStorageUrl, setResolvedStorageUrl] = React2.useState(null);
|
|
249
268
|
React2.useEffect(() => {
|
|
250
269
|
setResolvedStorageUrl(null);
|
|
@@ -340,6 +359,17 @@ function StuffViewer({
|
|
|
340
359
|
}
|
|
341
360
|
return renderMediaFallback("Image");
|
|
342
361
|
}
|
|
362
|
+
if (innerHtml != null) {
|
|
363
|
+
return /* @__PURE__ */ jsx(
|
|
364
|
+
"iframe",
|
|
365
|
+
{
|
|
366
|
+
className: "stuff-viewer-html-frame",
|
|
367
|
+
title: stuff.name ? `${stuff.name} preview` : "HTML preview",
|
|
368
|
+
sandbox: "",
|
|
369
|
+
srcDoc: DOMPurify.sanitize(innerHtml, { WHOLE_DOCUMENT: true })
|
|
370
|
+
}
|
|
371
|
+
);
|
|
372
|
+
}
|
|
343
373
|
if (stuff.dataHtml) {
|
|
344
374
|
return /* @__PURE__ */ jsx(
|
|
345
375
|
"div",
|
|
@@ -402,7 +432,7 @@ function StuffViewer({
|
|
|
402
432
|
} else if (activeTab === "text") {
|
|
403
433
|
textToCopy = stuff.dataText || jsonString || "";
|
|
404
434
|
} else {
|
|
405
|
-
textToCopy = stuff.dataText || stuff.dataHtml || jsonString || "";
|
|
435
|
+
textToCopy = innerHtml || stuff.dataText || stuff.dataHtml || jsonString || "";
|
|
406
436
|
}
|
|
407
437
|
if (!textToCopy) return;
|
|
408
438
|
if (navigator.clipboard) {
|
|
@@ -433,7 +463,7 @@ function StuffViewer({
|
|
|
433
463
|
);
|
|
434
464
|
} else {
|
|
435
465
|
downloadBlob(
|
|
436
|
-
stuff.dataHtml || jsonString || "",
|
|
466
|
+
innerHtml || stuff.dataHtml || jsonString || "",
|
|
437
467
|
`${stuff.name || "stuff"}.html`,
|
|
438
468
|
"text/html"
|
|
439
469
|
);
|
|
@@ -825,9 +855,6 @@ function PipeLLMSection({
|
|
|
825
855
|
)
|
|
826
856
|
] });
|
|
827
857
|
}
|
|
828
|
-
function LLMExecutionData(_props) {
|
|
829
|
-
return null;
|
|
830
|
-
}
|
|
831
858
|
|
|
832
859
|
// src/graph/react/detail/sections/PipeImgGenDetail.tsx
|
|
833
860
|
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
@@ -872,9 +899,6 @@ function PipeImgGenSection({
|
|
|
872
899
|
)
|
|
873
900
|
] });
|
|
874
901
|
}
|
|
875
|
-
function ImgGenExecutionData(_props) {
|
|
876
|
-
return null;
|
|
877
|
-
}
|
|
878
902
|
|
|
879
903
|
// src/graph/react/detail/sections/PipeExtractDetail.tsx
|
|
880
904
|
import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
@@ -895,9 +919,6 @@ function PipeExtractSection({
|
|
|
895
919
|
/* @__PURE__ */ jsx6(KV, { label: "Image Variable", value: blueprint.image_stuff_name })
|
|
896
920
|
] });
|
|
897
921
|
}
|
|
898
|
-
function ExtractExecutionData(_props) {
|
|
899
|
-
return null;
|
|
900
|
-
}
|
|
901
922
|
|
|
902
923
|
// src/graph/react/detail/sections/PipeSearchDetail.tsx
|
|
903
924
|
import { Fragment as Fragment4, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
@@ -926,12 +947,46 @@ function PipeSearchSection({
|
|
|
926
947
|
blueprint.exclude_domains && blueprint.exclude_domains.length > 0 && /* @__PURE__ */ jsx7(KV, { label: "Exclude Domains", value: blueprint.exclude_domains.join(", ") })
|
|
927
948
|
] });
|
|
928
949
|
}
|
|
929
|
-
|
|
930
|
-
|
|
950
|
+
|
|
951
|
+
// src/graph/react/detail/sections/llmChoice.ts
|
|
952
|
+
var LLM_CHOICE_LABEL_KEYS = ["model", "llm_handle", "handle", "llm_name", "name"];
|
|
953
|
+
function nonEmptyString(value) {
|
|
954
|
+
if (typeof value !== "string") return void 0;
|
|
955
|
+
const trimmed = value.trim();
|
|
956
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
957
|
+
}
|
|
958
|
+
function labelFromLlmChoice(choice) {
|
|
959
|
+
if (typeof choice === "string") return nonEmptyString(choice);
|
|
960
|
+
if (choice && typeof choice === "object") {
|
|
961
|
+
for (const key of LLM_CHOICE_LABEL_KEYS) {
|
|
962
|
+
const label = nonEmptyString(choice[key]);
|
|
963
|
+
if (label) return label;
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
return void 0;
|
|
931
967
|
}
|
|
932
968
|
|
|
933
|
-
// src/graph/react/detail/sections/
|
|
969
|
+
// src/graph/react/detail/sections/PipeStructureDetail.tsx
|
|
934
970
|
import { Fragment as Fragment5, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
971
|
+
function PipeStructureSection({
|
|
972
|
+
blueprint,
|
|
973
|
+
executionData
|
|
974
|
+
}) {
|
|
975
|
+
const resolvedModel = executionData == null ? void 0 : executionData.resolved_model;
|
|
976
|
+
const isMultipleOutput = executionData == null ? void 0 : executionData.is_multiple_output;
|
|
977
|
+
const renderedUser = executionData == null ? void 0 : executionData.rendered_user_prompt;
|
|
978
|
+
const modelDisplay = resolvedModel || labelFromLlmChoice(blueprint.llm_choice);
|
|
979
|
+
return /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
|
980
|
+
/* @__PURE__ */ jsx8(KV, { label: "Model", value: modelDisplay }),
|
|
981
|
+
/* @__PURE__ */ jsx8(KV, { label: "Text Variable", value: blueprint.text_input_name }),
|
|
982
|
+
/* @__PURE__ */ jsx8(KV, { label: "Multiple Output", value: isMultipleOutput }),
|
|
983
|
+
/* @__PURE__ */ jsx8(KV, { label: "Output Multiplicity", value: blueprint.output_multiplicity }),
|
|
984
|
+
/* @__PURE__ */ jsx8(PromptToggle, { label: "Prompt", templateText: void 0, renderedText: renderedUser })
|
|
985
|
+
] });
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
// src/graph/react/detail/sections/PipeComposeDetail.tsx
|
|
989
|
+
import { Fragment as Fragment6, jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
935
990
|
function formatLeafField(field) {
|
|
936
991
|
var _a, _b;
|
|
937
992
|
switch (field.method) {
|
|
@@ -952,9 +1007,9 @@ function isLongValue(text) {
|
|
|
952
1007
|
return text.length > LONG_VALUE_THRESHOLD_CHARS || text.includes("\n");
|
|
953
1008
|
}
|
|
954
1009
|
function FieldBlock({ label, value }) {
|
|
955
|
-
return /* @__PURE__ */
|
|
956
|
-
/* @__PURE__ */
|
|
957
|
-
/* @__PURE__ */
|
|
1010
|
+
return /* @__PURE__ */ jsxs9("div", { className: "detail-field-block", children: [
|
|
1011
|
+
/* @__PURE__ */ jsx9("div", { className: "detail-field-block-label", children: label }),
|
|
1012
|
+
/* @__PURE__ */ jsx9("div", { className: "detail-field-block-value", children: value })
|
|
958
1013
|
] });
|
|
959
1014
|
}
|
|
960
1015
|
function ConstructFieldsBlock({
|
|
@@ -975,18 +1030,18 @@ function ConstructFieldsBlock({
|
|
|
975
1030
|
}
|
|
976
1031
|
}
|
|
977
1032
|
const indentStyle = depth > 0 ? { paddingLeft: depth * 12 } : void 0;
|
|
978
|
-
return /* @__PURE__ */
|
|
1033
|
+
return /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
|
979
1034
|
leafFields.map(([name, field]) => {
|
|
980
1035
|
const display = formatLeafField(field);
|
|
981
1036
|
if (isLongValue(display)) {
|
|
982
|
-
return /* @__PURE__ */
|
|
1037
|
+
return /* @__PURE__ */ jsx9("div", { style: indentStyle, children: /* @__PURE__ */ jsx9(FieldBlock, { label: name, value: display }) }, name);
|
|
983
1038
|
}
|
|
984
|
-
return /* @__PURE__ */
|
|
1039
|
+
return /* @__PURE__ */ jsx9("div", { style: indentStyle, children: /* @__PURE__ */ jsx9(KV, { label: name, value: display }) }, name);
|
|
985
1040
|
}),
|
|
986
1041
|
templateFields.map(([name, field]) => {
|
|
987
1042
|
var _a, _b;
|
|
988
1043
|
const renderedForField = (_a = fieldResolutions == null ? void 0 : fieldResolutions[name]) == null ? void 0 : _a.rendered;
|
|
989
|
-
return /* @__PURE__ */
|
|
1044
|
+
return /* @__PURE__ */ jsx9("div", { style: indentStyle, children: /* @__PURE__ */ jsx9(
|
|
990
1045
|
PromptToggle,
|
|
991
1046
|
{
|
|
992
1047
|
label: `Template \u2014 ${name}`,
|
|
@@ -997,15 +1052,15 @@ function ConstructFieldsBlock({
|
|
|
997
1052
|
}),
|
|
998
1053
|
nestedFields.map(([name, field]) => {
|
|
999
1054
|
if (!field.nested) return null;
|
|
1000
|
-
return /* @__PURE__ */
|
|
1001
|
-
/* @__PURE__ */
|
|
1055
|
+
return /* @__PURE__ */ jsxs9("div", { children: [
|
|
1056
|
+
/* @__PURE__ */ jsxs9(
|
|
1002
1057
|
"div",
|
|
1003
1058
|
{
|
|
1004
1059
|
className: "detail-nested-header",
|
|
1005
1060
|
style: depth > 0 ? { paddingLeft: depth * 12 } : void 0,
|
|
1006
1061
|
children: [
|
|
1007
|
-
/* @__PURE__ */
|
|
1008
|
-
/* @__PURE__ */
|
|
1062
|
+
/* @__PURE__ */ jsx9("span", { className: "detail-nested-header-name", children: name }),
|
|
1063
|
+
/* @__PURE__ */ jsxs9("span", { className: "detail-nested-header-meta", children: [
|
|
1009
1064
|
"nested \xB7 ",
|
|
1010
1065
|
Object.keys(field.nested.fields).length,
|
|
1011
1066
|
" field",
|
|
@@ -1014,7 +1069,7 @@ function ConstructFieldsBlock({
|
|
|
1014
1069
|
]
|
|
1015
1070
|
}
|
|
1016
1071
|
),
|
|
1017
|
-
/* @__PURE__ */
|
|
1072
|
+
/* @__PURE__ */ jsx9(
|
|
1018
1073
|
ConstructFieldsBlock,
|
|
1019
1074
|
{
|
|
1020
1075
|
blueprint: field.nested,
|
|
@@ -1036,11 +1091,11 @@ function PipeComposeSection({
|
|
|
1036
1091
|
const fieldResolutions = (_a = executionData == null ? void 0 : executionData.fields) != null ? _a : null;
|
|
1037
1092
|
const constructBlueprint = blueprint.construct_blueprint;
|
|
1038
1093
|
const hasConstruct = constructBlueprint !== null && Object.keys(constructBlueprint.fields).length > 0;
|
|
1039
|
-
return /* @__PURE__ */
|
|
1040
|
-
/* @__PURE__ */
|
|
1041
|
-
/* @__PURE__ */
|
|
1042
|
-
/* @__PURE__ */
|
|
1043
|
-
blueprint.template && /* @__PURE__ */
|
|
1094
|
+
return /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
|
1095
|
+
/* @__PURE__ */ jsx9(KV, { label: "Mode", value: composeMode || (hasConstruct ? "construct" : "template") }),
|
|
1096
|
+
/* @__PURE__ */ jsx9(KV, { label: "Category", value: blueprint.category }),
|
|
1097
|
+
/* @__PURE__ */ jsx9(KV, { label: "Templating Style", value: blueprint.templating_style }),
|
|
1098
|
+
blueprint.template && /* @__PURE__ */ jsx9(
|
|
1044
1099
|
PromptToggle,
|
|
1045
1100
|
{
|
|
1046
1101
|
label: "Template",
|
|
@@ -1048,9 +1103,9 @@ function PipeComposeSection({
|
|
|
1048
1103
|
renderedText
|
|
1049
1104
|
}
|
|
1050
1105
|
),
|
|
1051
|
-
hasConstruct && /* @__PURE__ */
|
|
1052
|
-
/* @__PURE__ */
|
|
1053
|
-
/* @__PURE__ */
|
|
1106
|
+
hasConstruct && /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
|
1107
|
+
/* @__PURE__ */ jsx9("div", { className: "detail-section-label", children: "FIELDS" }),
|
|
1108
|
+
/* @__PURE__ */ jsx9(
|
|
1054
1109
|
ConstructFieldsBlock,
|
|
1055
1110
|
{
|
|
1056
1111
|
blueprint: constructBlueprint,
|
|
@@ -1061,31 +1116,28 @@ function PipeComposeSection({
|
|
|
1061
1116
|
] })
|
|
1062
1117
|
] });
|
|
1063
1118
|
}
|
|
1064
|
-
function ComposeExecutionData(_props) {
|
|
1065
|
-
return null;
|
|
1066
|
-
}
|
|
1067
1119
|
|
|
1068
1120
|
// src/graph/react/detail/sections/PipeConditionDetail.tsx
|
|
1069
|
-
import { Fragment as
|
|
1121
|
+
import { Fragment as Fragment7, jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1070
1122
|
function PipeConditionSection({
|
|
1071
1123
|
blueprint,
|
|
1072
1124
|
executionData
|
|
1073
1125
|
}) {
|
|
1074
1126
|
const evaluatedExpression = executionData == null ? void 0 : executionData.evaluated_expression;
|
|
1075
1127
|
const selectedOutcome = executionData == null ? void 0 : executionData.selected_outcome;
|
|
1076
|
-
return /* @__PURE__ */
|
|
1077
|
-
/* @__PURE__ */
|
|
1078
|
-
evaluatedExpression && /* @__PURE__ */
|
|
1079
|
-
/* @__PURE__ */
|
|
1080
|
-
/* @__PURE__ */
|
|
1081
|
-
Object.entries(blueprint.outcome_map).map(([outcome, pipeCode]) => /* @__PURE__ */
|
|
1128
|
+
return /* @__PURE__ */ jsxs10(Fragment7, { children: [
|
|
1129
|
+
/* @__PURE__ */ jsx10(PromptBlock, { label: "Expression", text: blueprint.expression }),
|
|
1130
|
+
evaluatedExpression && /* @__PURE__ */ jsx10(KV, { label: "Expression Result", value: evaluatedExpression }),
|
|
1131
|
+
/* @__PURE__ */ jsxs10("div", { children: [
|
|
1132
|
+
/* @__PURE__ */ jsx10("div", { className: "detail-section-label", children: "Outcomes" }),
|
|
1133
|
+
Object.entries(blueprint.outcome_map).map(([outcome, pipeCode]) => /* @__PURE__ */ jsxs10(
|
|
1082
1134
|
"div",
|
|
1083
1135
|
{
|
|
1084
1136
|
className: "detail-kv-row",
|
|
1085
1137
|
style: selectedOutcome === pipeCode ? { background: "rgba(80,250,123,0.08)" } : void 0,
|
|
1086
1138
|
children: [
|
|
1087
|
-
/* @__PURE__ */
|
|
1088
|
-
/* @__PURE__ */
|
|
1139
|
+
/* @__PURE__ */ jsx10("span", { className: "detail-kv-key", children: outcome }),
|
|
1140
|
+
/* @__PURE__ */ jsx10(
|
|
1089
1141
|
"span",
|
|
1090
1142
|
{
|
|
1091
1143
|
className: "detail-kv-value",
|
|
@@ -1097,83 +1149,89 @@ function PipeConditionSection({
|
|
|
1097
1149
|
},
|
|
1098
1150
|
outcome
|
|
1099
1151
|
)),
|
|
1100
|
-
/* @__PURE__ */
|
|
1101
|
-
/* @__PURE__ */
|
|
1102
|
-
/* @__PURE__ */
|
|
1152
|
+
/* @__PURE__ */ jsxs10("div", { className: "detail-kv-row", children: [
|
|
1153
|
+
/* @__PURE__ */ jsx10("span", { className: "detail-kv-key", children: "default" }),
|
|
1154
|
+
/* @__PURE__ */ jsx10("span", { className: "detail-kv-value", children: blueprint.default_outcome })
|
|
1103
1155
|
] })
|
|
1104
1156
|
] }),
|
|
1105
|
-
/* @__PURE__ */
|
|
1157
|
+
/* @__PURE__ */ jsx10(KV, { label: "Alias Expression To", value: blueprint.add_alias_from_expression_to })
|
|
1106
1158
|
] });
|
|
1107
1159
|
}
|
|
1108
|
-
function ConditionExecutionData(_props) {
|
|
1109
|
-
return null;
|
|
1110
|
-
}
|
|
1111
1160
|
|
|
1112
1161
|
// src/graph/react/detail/sections/PipeSequenceDetail.tsx
|
|
1113
|
-
import { jsx as
|
|
1162
|
+
import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1114
1163
|
function PipeSequenceSection({
|
|
1115
1164
|
blueprint
|
|
1116
1165
|
}) {
|
|
1117
|
-
return /* @__PURE__ */
|
|
1118
|
-
/* @__PURE__ */
|
|
1119
|
-
/* @__PURE__ */
|
|
1120
|
-
/* @__PURE__ */
|
|
1121
|
-
/* @__PURE__ */
|
|
1122
|
-
step.output_name && /* @__PURE__ */
|
|
1166
|
+
return /* @__PURE__ */ jsxs11("div", { children: [
|
|
1167
|
+
/* @__PURE__ */ jsx11("div", { className: "detail-section-label", children: "Steps" }),
|
|
1168
|
+
/* @__PURE__ */ jsx11("div", { className: "detail-steps-list", children: blueprint.sequential_sub_pipes.map((step, idx) => /* @__PURE__ */ jsxs11("div", { className: "detail-step-item", children: [
|
|
1169
|
+
/* @__PURE__ */ jsx11("span", { className: "detail-step-index", children: idx + 1 }),
|
|
1170
|
+
/* @__PURE__ */ jsx11("span", { className: "detail-step-code", children: step.pipe_code }),
|
|
1171
|
+
step.output_name && /* @__PURE__ */ jsxs11("span", { className: "detail-io-concept", children: [
|
|
1123
1172
|
"-> ",
|
|
1124
1173
|
step.output_name
|
|
1125
1174
|
] })
|
|
1126
1175
|
] }, idx)) })
|
|
1127
1176
|
] });
|
|
1128
1177
|
}
|
|
1129
|
-
function SequenceExecutionData(_props) {
|
|
1130
|
-
return null;
|
|
1131
|
-
}
|
|
1132
1178
|
|
|
1133
1179
|
// src/graph/react/detail/sections/PipeParallelDetail.tsx
|
|
1134
|
-
import { Fragment as
|
|
1180
|
+
import { Fragment as Fragment8, jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1135
1181
|
function PipeParallelSection({
|
|
1136
1182
|
blueprint
|
|
1137
1183
|
}) {
|
|
1138
|
-
return /* @__PURE__ */
|
|
1139
|
-
/* @__PURE__ */
|
|
1140
|
-
/* @__PURE__ */
|
|
1141
|
-
/* @__PURE__ */
|
|
1142
|
-
/* @__PURE__ */
|
|
1143
|
-
branch.output_name && /* @__PURE__ */
|
|
1184
|
+
return /* @__PURE__ */ jsxs12(Fragment8, { children: [
|
|
1185
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
1186
|
+
/* @__PURE__ */ jsx12("div", { className: "detail-section-label", children: "Branches" }),
|
|
1187
|
+
/* @__PURE__ */ jsx12("div", { className: "detail-steps-list", children: blueprint.parallel_sub_pipes.map((branch, idx) => /* @__PURE__ */ jsxs12("div", { className: "detail-step-item", children: [
|
|
1188
|
+
/* @__PURE__ */ jsx12("span", { className: "detail-step-code", children: branch.pipe_code }),
|
|
1189
|
+
branch.output_name && /* @__PURE__ */ jsxs12("span", { className: "detail-io-concept", children: [
|
|
1144
1190
|
"-> ",
|
|
1145
1191
|
branch.output_name
|
|
1146
1192
|
] })
|
|
1147
1193
|
] }, idx)) })
|
|
1148
1194
|
] }),
|
|
1149
|
-
/* @__PURE__ */
|
|
1150
|
-
/* @__PURE__ */
|
|
1195
|
+
/* @__PURE__ */ jsx12(KV, { label: "Add Each Output", value: blueprint.add_each_output }),
|
|
1196
|
+
/* @__PURE__ */ jsx12(KV, { label: "Combined Output", value: blueprint.combined_output })
|
|
1151
1197
|
] });
|
|
1152
1198
|
}
|
|
1153
|
-
function ParallelExecutionData(_props) {
|
|
1154
|
-
return null;
|
|
1155
|
-
}
|
|
1156
1199
|
|
|
1157
1200
|
// src/graph/react/detail/sections/PipeBatchDetail.tsx
|
|
1158
|
-
import { Fragment as
|
|
1201
|
+
import { Fragment as Fragment9, jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1159
1202
|
function PipeBatchSection({
|
|
1160
1203
|
blueprint,
|
|
1161
1204
|
executionData
|
|
1162
1205
|
}) {
|
|
1163
1206
|
const itemCount = executionData == null ? void 0 : executionData.item_count;
|
|
1164
|
-
return /* @__PURE__ */
|
|
1165
|
-
/* @__PURE__ */
|
|
1166
|
-
/* @__PURE__ */
|
|
1167
|
-
/* @__PURE__ */
|
|
1168
|
-
itemCount != null && /* @__PURE__ */
|
|
1207
|
+
return /* @__PURE__ */ jsxs13(Fragment9, { children: [
|
|
1208
|
+
/* @__PURE__ */ jsx13(KV, { label: "Branch Pipe", value: blueprint.branch_pipe_code }),
|
|
1209
|
+
/* @__PURE__ */ jsx13(KV, { label: "Input List Variable", value: blueprint.batch_params.input_list_stuff_name }),
|
|
1210
|
+
/* @__PURE__ */ jsx13(KV, { label: "Input Item Variable", value: blueprint.batch_params.input_item_stuff_name }),
|
|
1211
|
+
itemCount != null && /* @__PURE__ */ jsx13(KV, { label: "Items Processed", value: itemCount })
|
|
1169
1212
|
] });
|
|
1170
1213
|
}
|
|
1171
|
-
|
|
1172
|
-
|
|
1214
|
+
|
|
1215
|
+
// src/graph/react/detail/sections/executionData.ts
|
|
1216
|
+
var MERGED_EXECUTION_DATA_TYPES = /* @__PURE__ */ new Set([
|
|
1217
|
+
"PipeLLM",
|
|
1218
|
+
"PipeImgGen",
|
|
1219
|
+
"PipeExtract",
|
|
1220
|
+
"PipeSearch",
|
|
1221
|
+
"PipeStructure",
|
|
1222
|
+
"PipeCompose",
|
|
1223
|
+
"PipeSequence",
|
|
1224
|
+
"PipeParallel",
|
|
1225
|
+
"PipeCondition",
|
|
1226
|
+
"PipeBatch"
|
|
1227
|
+
]);
|
|
1228
|
+
function shouldDumpExecutionData(pipeType, hasBlueprint) {
|
|
1229
|
+
if (MERGED_EXECUTION_DATA_TYPES.has(pipeType)) return !hasBlueprint;
|
|
1230
|
+
return true;
|
|
1173
1231
|
}
|
|
1174
1232
|
|
|
1175
1233
|
// src/graph/react/detail/PipeDetailPanel.tsx
|
|
1176
|
-
import { Fragment as
|
|
1234
|
+
import { Fragment as Fragment10, jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1177
1235
|
var PIPE_TYPE_BADGES = {
|
|
1178
1236
|
PipeLLM: "LLM",
|
|
1179
1237
|
PipeExtract: "Extract",
|
|
@@ -1181,6 +1239,7 @@ var PIPE_TYPE_BADGES = {
|
|
|
1181
1239
|
PipeImgGen: "ImgGen",
|
|
1182
1240
|
PipeSearch: "Search",
|
|
1183
1241
|
PipeFunc: "Func",
|
|
1242
|
+
PipeStructure: "Structure",
|
|
1184
1243
|
PipeSignature: "Signature",
|
|
1185
1244
|
PipeSequence: "Seq",
|
|
1186
1245
|
PipeParallel: "Par",
|
|
@@ -1222,17 +1281,17 @@ function PipeDetailPanel({ node, spec, onConceptClick }) {
|
|
|
1222
1281
|
const inputs = (_c = (_b = node.io) == null ? void 0 : _b.inputs) != null ? _c : [];
|
|
1223
1282
|
const outputs = (_e = (_d = node.io) == null ? void 0 : _d.outputs) != null ? _e : [];
|
|
1224
1283
|
const description = (_f = blueprint == null ? void 0 : blueprint.description) != null ? _f : node.description;
|
|
1225
|
-
return /* @__PURE__ */
|
|
1226
|
-
/* @__PURE__ */
|
|
1227
|
-
/* @__PURE__ */
|
|
1228
|
-
/* @__PURE__ */
|
|
1284
|
+
return /* @__PURE__ */ jsxs14(Fragment10, { children: [
|
|
1285
|
+
/* @__PURE__ */ jsxs14("div", { className: "detail-sticky-header", children: [
|
|
1286
|
+
/* @__PURE__ */ jsxs14("div", { className: "detail-header", children: [
|
|
1287
|
+
/* @__PURE__ */ jsx14(
|
|
1229
1288
|
"span",
|
|
1230
1289
|
{
|
|
1231
1290
|
className: `detail-badge ${isController ? "detail-badge--controller" : "detail-badge--operator"}`,
|
|
1232
1291
|
children: badge
|
|
1233
1292
|
}
|
|
1234
1293
|
),
|
|
1235
|
-
/* @__PURE__ */
|
|
1294
|
+
/* @__PURE__ */ jsx14(
|
|
1236
1295
|
"span",
|
|
1237
1296
|
{
|
|
1238
1297
|
className: `detail-pipe-code ${isController ? "detail-pipe-code--controller" : ""}`,
|
|
@@ -1240,56 +1299,63 @@ function PipeDetailPanel({ node, spec, onConceptClick }) {
|
|
|
1240
1299
|
}
|
|
1241
1300
|
)
|
|
1242
1301
|
] }),
|
|
1243
|
-
/* @__PURE__ */
|
|
1244
|
-
/* @__PURE__ */
|
|
1245
|
-
/* @__PURE__ */
|
|
1246
|
-
((_g = node.timing) == null ? void 0 : _g.duration) != null && /* @__PURE__ */
|
|
1302
|
+
/* @__PURE__ */ jsxs14("div", { className: "detail-status", children: [
|
|
1303
|
+
/* @__PURE__ */ jsx14("span", { className: "detail-status-dot", style: { background: statusColor } }),
|
|
1304
|
+
/* @__PURE__ */ jsx14("span", { className: "detail-status-label", style: { color: statusColor }, children: status }),
|
|
1305
|
+
((_g = node.timing) == null ? void 0 : _g.duration) != null && /* @__PURE__ */ jsx14("span", { className: "detail-duration", children: formatDuration(node.timing.duration) })
|
|
1247
1306
|
] }),
|
|
1248
|
-
description && /* @__PURE__ */
|
|
1249
|
-
inputs.length > 0 && /* @__PURE__ */
|
|
1250
|
-
/* @__PURE__ */
|
|
1251
|
-
/* @__PURE__ */
|
|
1307
|
+
description && /* @__PURE__ */ jsx14("div", { className: "detail-description", children: description }),
|
|
1308
|
+
inputs.length > 0 && /* @__PURE__ */ jsxs14("div", { children: [
|
|
1309
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-section-label", children: "Inputs" }),
|
|
1310
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-io-list", children: inputs.map((input, idx) => /* @__PURE__ */ jsxs14(
|
|
1252
1311
|
"div",
|
|
1253
1312
|
{
|
|
1254
1313
|
className: "detail-io-pill",
|
|
1255
1314
|
style: { cursor: input.concept && onConceptClick ? "pointer" : void 0 },
|
|
1256
1315
|
onClick: () => input.concept && (onConceptClick == null ? void 0 : onConceptClick(input.concept)),
|
|
1257
1316
|
children: [
|
|
1258
|
-
/* @__PURE__ */
|
|
1259
|
-
input.concept && /* @__PURE__ */
|
|
1317
|
+
/* @__PURE__ */ jsx14("span", { className: "detail-io-name", children: input.name }),
|
|
1318
|
+
input.concept && /* @__PURE__ */ jsx14("span", { className: "detail-io-concept", children: input.concept })
|
|
1260
1319
|
]
|
|
1261
1320
|
},
|
|
1262
1321
|
idx
|
|
1263
1322
|
)) })
|
|
1264
1323
|
] }),
|
|
1265
|
-
outputs.length > 0 && /* @__PURE__ */
|
|
1266
|
-
/* @__PURE__ */
|
|
1267
|
-
/* @__PURE__ */
|
|
1324
|
+
outputs.length > 0 && /* @__PURE__ */ jsxs14("div", { children: [
|
|
1325
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-section-label", children: "Output" }),
|
|
1326
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-io-list", children: outputs.map((output, idx) => /* @__PURE__ */ jsxs14(
|
|
1268
1327
|
"div",
|
|
1269
1328
|
{
|
|
1270
1329
|
className: "detail-io-pill",
|
|
1271
1330
|
style: { cursor: output.concept && onConceptClick ? "pointer" : void 0 },
|
|
1272
1331
|
onClick: () => output.concept && (onConceptClick == null ? void 0 : onConceptClick(output.concept)),
|
|
1273
1332
|
children: [
|
|
1274
|
-
/* @__PURE__ */
|
|
1275
|
-
output.concept && /* @__PURE__ */
|
|
1333
|
+
/* @__PURE__ */ jsx14("span", { className: "detail-io-name", children: output.name }),
|
|
1334
|
+
output.concept && /* @__PURE__ */ jsx14("span", { className: "detail-io-concept", children: output.concept })
|
|
1276
1335
|
]
|
|
1277
1336
|
},
|
|
1278
1337
|
idx
|
|
1279
1338
|
)) })
|
|
1280
1339
|
] }),
|
|
1281
|
-
(inputs.length > 0 || outputs.length > 0) && /* @__PURE__ */
|
|
1340
|
+
(inputs.length > 0 || outputs.length > 0) && /* @__PURE__ */ jsx14("div", { style: { borderTop: "1px solid rgba(255,255,255,0.06)", margin: "4px 0" } })
|
|
1282
1341
|
] }),
|
|
1283
|
-
blueprint && /* @__PURE__ */
|
|
1284
|
-
node.execution_data && Object.keys(node.execution_data).length > 0 && /* @__PURE__ */
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1342
|
+
blueprint && /* @__PURE__ */ jsx14(BlueprintSection, { blueprint, executionData: node.execution_data }),
|
|
1343
|
+
node.execution_data && Object.keys(node.execution_data).length > 0 && /* @__PURE__ */ jsx14(
|
|
1344
|
+
ExecutionDataSection,
|
|
1345
|
+
{
|
|
1346
|
+
executionData: node.execution_data,
|
|
1347
|
+
pipeType,
|
|
1348
|
+
hasBlueprint: !!blueprint
|
|
1349
|
+
}
|
|
1350
|
+
),
|
|
1351
|
+
node.error && /* @__PURE__ */ jsxs14("div", { className: "detail-error", children: [
|
|
1352
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-error-type", children: node.error.error_type }),
|
|
1353
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-error-message", children: node.error.message }),
|
|
1354
|
+
node.error.stack && /* @__PURE__ */ jsx14("div", { className: "detail-error-stack", children: node.error.stack })
|
|
1289
1355
|
] }),
|
|
1290
|
-
node.metrics && Object.keys(node.metrics).length > 0 && /* @__PURE__ */
|
|
1291
|
-
/* @__PURE__ */
|
|
1292
|
-
Object.entries(node.metrics).map(([key, value]) => /* @__PURE__ */
|
|
1356
|
+
node.metrics && Object.keys(node.metrics).length > 0 && /* @__PURE__ */ jsxs14("div", { children: [
|
|
1357
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-section-label", children: "Metrics" }),
|
|
1358
|
+
Object.entries(node.metrics).map(([key, value]) => /* @__PURE__ */ jsx14(
|
|
1293
1359
|
KV,
|
|
1294
1360
|
{
|
|
1295
1361
|
label: key,
|
|
@@ -1298,17 +1364,17 @@ function PipeDetailPanel({ node, spec, onConceptClick }) {
|
|
|
1298
1364
|
key
|
|
1299
1365
|
))
|
|
1300
1366
|
] }),
|
|
1301
|
-
node.tags && Object.keys(node.tags).length > 0 && /* @__PURE__ */
|
|
1302
|
-
/* @__PURE__ */
|
|
1303
|
-
/* @__PURE__ */
|
|
1304
|
-
/* @__PURE__ */
|
|
1367
|
+
node.tags && Object.keys(node.tags).length > 0 && /* @__PURE__ */ jsxs14("div", { children: [
|
|
1368
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-section-label", children: "Tags" }),
|
|
1369
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-tags", children: Object.entries(node.tags).map(([key, value]) => /* @__PURE__ */ jsxs14("span", { className: "detail-tag", children: [
|
|
1370
|
+
/* @__PURE__ */ jsxs14("span", { className: "detail-tag-key", children: [
|
|
1305
1371
|
key,
|
|
1306
1372
|
": "
|
|
1307
1373
|
] }),
|
|
1308
|
-
/* @__PURE__ */
|
|
1374
|
+
/* @__PURE__ */ jsx14("span", { className: "detail-tag-value", children: value })
|
|
1309
1375
|
] }, key)) })
|
|
1310
1376
|
] }),
|
|
1311
|
-
!blueprint && /* @__PURE__ */
|
|
1377
|
+
!blueprint && /* @__PURE__ */ jsx14("div", { className: "detail-not-available", children: "Blueprint not available" })
|
|
1312
1378
|
] });
|
|
1313
1379
|
}
|
|
1314
1380
|
function BlueprintSection({
|
|
@@ -1317,70 +1383,53 @@ function BlueprintSection({
|
|
|
1317
1383
|
}) {
|
|
1318
1384
|
switch (blueprint.type) {
|
|
1319
1385
|
case "PipeLLM":
|
|
1320
|
-
return /* @__PURE__ */
|
|
1386
|
+
return /* @__PURE__ */ jsx14(PipeLLMSection, { blueprint, executionData });
|
|
1321
1387
|
case "PipeImgGen":
|
|
1322
|
-
return /* @__PURE__ */
|
|
1388
|
+
return /* @__PURE__ */ jsx14(PipeImgGenSection, { blueprint, executionData });
|
|
1323
1389
|
case "PipeCompose":
|
|
1324
|
-
return /* @__PURE__ */
|
|
1390
|
+
return /* @__PURE__ */ jsx14(PipeComposeSection, { blueprint, executionData });
|
|
1325
1391
|
case "PipeExtract":
|
|
1326
|
-
return /* @__PURE__ */
|
|
1392
|
+
return /* @__PURE__ */ jsx14(PipeExtractSection, { blueprint, executionData });
|
|
1327
1393
|
case "PipeSearch":
|
|
1328
|
-
return /* @__PURE__ */
|
|
1394
|
+
return /* @__PURE__ */ jsx14(PipeSearchSection, { blueprint, executionData });
|
|
1395
|
+
case "PipeStructure":
|
|
1396
|
+
return /* @__PURE__ */ jsx14(PipeStructureSection, { blueprint, executionData });
|
|
1329
1397
|
case "PipeSequence":
|
|
1330
|
-
return /* @__PURE__ */
|
|
1398
|
+
return /* @__PURE__ */ jsx14(PipeSequenceSection, { blueprint, executionData });
|
|
1331
1399
|
case "PipeParallel":
|
|
1332
|
-
return /* @__PURE__ */
|
|
1400
|
+
return /* @__PURE__ */ jsx14(PipeParallelSection, { blueprint, executionData });
|
|
1333
1401
|
case "PipeCondition":
|
|
1334
|
-
return /* @__PURE__ */
|
|
1402
|
+
return /* @__PURE__ */ jsx14(PipeConditionSection, { blueprint, executionData });
|
|
1335
1403
|
case "PipeBatch":
|
|
1336
|
-
return /* @__PURE__ */
|
|
1404
|
+
return /* @__PURE__ */ jsx14(PipeBatchSection, { blueprint, executionData });
|
|
1337
1405
|
case "PipeFunc":
|
|
1338
1406
|
return null;
|
|
1339
1407
|
case "PipeSignature":
|
|
1340
|
-
return /* @__PURE__ */
|
|
1408
|
+
return /* @__PURE__ */ jsx14("div", { className: "detail-not-available", children: "Signature stub \u2014 declared but not yet implemented." });
|
|
1341
1409
|
default:
|
|
1342
1410
|
return null;
|
|
1343
1411
|
}
|
|
1344
1412
|
}
|
|
1345
1413
|
function ExecutionDataSection({
|
|
1346
1414
|
executionData,
|
|
1347
|
-
pipeType
|
|
1415
|
+
pipeType,
|
|
1416
|
+
hasBlueprint
|
|
1348
1417
|
}) {
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
return /* @__PURE__ */ jsx13(LLMExecutionData, { data: executionData });
|
|
1352
|
-
case "PipeImgGen":
|
|
1353
|
-
return /* @__PURE__ */ jsx13(ImgGenExecutionData, { data: executionData });
|
|
1354
|
-
case "PipeExtract":
|
|
1355
|
-
return /* @__PURE__ */ jsx13(ExtractExecutionData, { data: executionData });
|
|
1356
|
-
case "PipeSearch":
|
|
1357
|
-
return /* @__PURE__ */ jsx13(SearchExecutionData, { data: executionData });
|
|
1358
|
-
case "PipeCompose":
|
|
1359
|
-
return /* @__PURE__ */ jsx13(ComposeExecutionData, { data: executionData });
|
|
1360
|
-
case "PipeCondition":
|
|
1361
|
-
return /* @__PURE__ */ jsx13(ConditionExecutionData, { data: executionData });
|
|
1362
|
-
case "PipeSequence":
|
|
1363
|
-
return /* @__PURE__ */ jsx13(SequenceExecutionData, { data: executionData });
|
|
1364
|
-
case "PipeParallel":
|
|
1365
|
-
return /* @__PURE__ */ jsx13(ParallelExecutionData, { data: executionData });
|
|
1366
|
-
case "PipeBatch":
|
|
1367
|
-
return /* @__PURE__ */ jsx13(BatchExecutionData, { data: executionData });
|
|
1368
|
-
default:
|
|
1369
|
-
return /* @__PURE__ */ jsx13(GenericExecutionData, { data: executionData });
|
|
1370
|
-
}
|
|
1418
|
+
if (!shouldDumpExecutionData(pipeType, hasBlueprint)) return null;
|
|
1419
|
+
return /* @__PURE__ */ jsx14(GenericExecutionData, { data: executionData });
|
|
1371
1420
|
}
|
|
1372
1421
|
function GenericExecutionData({ data }) {
|
|
1373
1422
|
const entries = Object.entries(data);
|
|
1374
1423
|
if (entries.length === 0) return null;
|
|
1375
|
-
return /* @__PURE__ */
|
|
1376
|
-
/* @__PURE__ */
|
|
1377
|
-
entries.map(([key, value]) => /* @__PURE__ */
|
|
1424
|
+
return /* @__PURE__ */ jsxs14(Fragment10, { children: [
|
|
1425
|
+
/* @__PURE__ */ jsx14("div", { className: "detail-section-label", children: "Execution" }),
|
|
1426
|
+
entries.map(([key, value]) => /* @__PURE__ */ jsx14(KV, { label: key, value: String(value) }, key))
|
|
1378
1427
|
] });
|
|
1379
1428
|
}
|
|
1380
1429
|
|
|
1381
1430
|
// src/graph/react/detail/ConceptDetailPanel.tsx
|
|
1382
1431
|
import React7 from "react";
|
|
1383
|
-
import { Fragment as
|
|
1432
|
+
import { Fragment as Fragment11, jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1384
1433
|
function ConceptDetailPanel({
|
|
1385
1434
|
concept,
|
|
1386
1435
|
ioData,
|
|
@@ -1391,17 +1440,17 @@ function ConceptDetailPanel({
|
|
|
1391
1440
|
instanceKey
|
|
1392
1441
|
}) {
|
|
1393
1442
|
var _a;
|
|
1394
|
-
return /* @__PURE__ */
|
|
1395
|
-
/* @__PURE__ */
|
|
1396
|
-
/* @__PURE__ */
|
|
1397
|
-
/* @__PURE__ */
|
|
1443
|
+
return /* @__PURE__ */ jsxs15(Fragment11, { children: [
|
|
1444
|
+
/* @__PURE__ */ jsxs15("div", { className: "detail-header", children: [
|
|
1445
|
+
/* @__PURE__ */ jsx15("span", { className: "detail-concept-code", children: concept.code }),
|
|
1446
|
+
/* @__PURE__ */ jsx15("span", { className: "detail-concept-domain", children: concept.domain_code })
|
|
1398
1447
|
] }),
|
|
1399
|
-
concept.description && /* @__PURE__ */
|
|
1400
|
-
concept.refines && /* @__PURE__ */
|
|
1448
|
+
concept.description && /* @__PURE__ */ jsx15("div", { className: "detail-description", children: concept.description }),
|
|
1449
|
+
concept.refines && /* @__PURE__ */ jsxs15("div", { className: "detail-refines", children: [
|
|
1401
1450
|
"refines ",
|
|
1402
|
-
/* @__PURE__ */
|
|
1451
|
+
/* @__PURE__ */ jsx15("span", { className: "detail-refines-code", children: concept.refines })
|
|
1403
1452
|
] }),
|
|
1404
|
-
/* @__PURE__ */
|
|
1453
|
+
/* @__PURE__ */ jsx15(
|
|
1405
1454
|
ConceptBody,
|
|
1406
1455
|
{
|
|
1407
1456
|
concept,
|
|
@@ -1428,10 +1477,10 @@ function ConceptBody({
|
|
|
1428
1477
|
const baseId = React7.useId();
|
|
1429
1478
|
const tabId = (tab) => `${baseId}-tab-${tab}`;
|
|
1430
1479
|
const panelId = (tab) => `${baseId}-tabpanel-${tab}`;
|
|
1431
|
-
const structure = concept.json_schema ? /* @__PURE__ */
|
|
1432
|
-
/* @__PURE__ */
|
|
1433
|
-
/* @__PURE__ */
|
|
1434
|
-
] }) : /* @__PURE__ */
|
|
1480
|
+
const structure = concept.json_schema ? /* @__PURE__ */ jsxs15("div", { children: [
|
|
1481
|
+
/* @__PURE__ */ jsx15("div", { className: "detail-section-label", children: "Structure" }),
|
|
1482
|
+
/* @__PURE__ */ jsx15(SchemaTable, { schema: concept.json_schema, isDryRun })
|
|
1483
|
+
] }) : /* @__PURE__ */ jsx15("div", { className: "detail-not-available", children: "Schema not available" });
|
|
1435
1484
|
if (!hasData) return structure;
|
|
1436
1485
|
const onTabKeyDown = (event) => {
|
|
1437
1486
|
var _a;
|
|
@@ -1454,7 +1503,7 @@ function ConceptBody({
|
|
|
1454
1503
|
setActiveTab(next);
|
|
1455
1504
|
(_a = document.getElementById(tabId(next))) == null ? void 0 : _a.focus();
|
|
1456
1505
|
};
|
|
1457
|
-
const renderTab = (tab, label) => /* @__PURE__ */
|
|
1506
|
+
const renderTab = (tab, label) => /* @__PURE__ */ jsx15(
|
|
1458
1507
|
"button",
|
|
1459
1508
|
{
|
|
1460
1509
|
type: "button",
|
|
@@ -1469,12 +1518,12 @@ function ConceptBody({
|
|
|
1469
1518
|
children: label
|
|
1470
1519
|
}
|
|
1471
1520
|
);
|
|
1472
|
-
return /* @__PURE__ */
|
|
1473
|
-
/* @__PURE__ */
|
|
1521
|
+
return /* @__PURE__ */ jsxs15(Fragment11, { children: [
|
|
1522
|
+
/* @__PURE__ */ jsxs15("div", { className: "detail-tabs", role: "tablist", "aria-label": "Concept views", children: [
|
|
1474
1523
|
renderTab("data", "Data"),
|
|
1475
1524
|
renderTab("structure", "Structure")
|
|
1476
1525
|
] }),
|
|
1477
|
-
/* @__PURE__ */
|
|
1526
|
+
/* @__PURE__ */ jsx15("div", { role: "tabpanel", id: panelId(activeTab), "aria-labelledby": tabId(activeTab), children: activeTab === "data" ? /* @__PURE__ */ jsx15(
|
|
1478
1527
|
StuffViewer,
|
|
1479
1528
|
{
|
|
1480
1529
|
stuff: toStuffViewerData(ioData),
|
|
@@ -1493,24 +1542,24 @@ function SchemaTable({
|
|
|
1493
1542
|
const properties = schema.properties;
|
|
1494
1543
|
const required = new Set((_a = schema.required) != null ? _a : []);
|
|
1495
1544
|
if (!properties || Object.keys(properties).length === 0) {
|
|
1496
|
-
return /* @__PURE__ */
|
|
1545
|
+
return /* @__PURE__ */ jsx15("div", { className: "detail-not-available", children: "No fields defined" });
|
|
1497
1546
|
}
|
|
1498
1547
|
const fields = Object.entries(properties);
|
|
1499
1548
|
const visibleFields = isDryRun ? fields.filter(([name]) => required.has(name)) : fields;
|
|
1500
|
-
return /* @__PURE__ */
|
|
1501
|
-
/* @__PURE__ */
|
|
1502
|
-
/* @__PURE__ */
|
|
1503
|
-
/* @__PURE__ */
|
|
1504
|
-
/* @__PURE__ */
|
|
1505
|
-
/* @__PURE__ */
|
|
1549
|
+
return /* @__PURE__ */ jsxs15("table", { className: "detail-schema-table", children: [
|
|
1550
|
+
/* @__PURE__ */ jsx15("thead", { children: /* @__PURE__ */ jsxs15("tr", { children: [
|
|
1551
|
+
/* @__PURE__ */ jsx15("th", { children: "Field" }),
|
|
1552
|
+
/* @__PURE__ */ jsx15("th", { children: "Type" }),
|
|
1553
|
+
/* @__PURE__ */ jsx15("th", {}),
|
|
1554
|
+
/* @__PURE__ */ jsx15("th", { children: "Description" })
|
|
1506
1555
|
] }) }),
|
|
1507
|
-
/* @__PURE__ */
|
|
1556
|
+
/* @__PURE__ */ jsx15("tbody", { children: visibleFields.map(([fieldName, fieldSchema]) => {
|
|
1508
1557
|
var _a2;
|
|
1509
|
-
return /* @__PURE__ */
|
|
1510
|
-
/* @__PURE__ */
|
|
1511
|
-
/* @__PURE__ */
|
|
1512
|
-
/* @__PURE__ */
|
|
1513
|
-
/* @__PURE__ */
|
|
1558
|
+
return /* @__PURE__ */ jsxs15("tr", { children: [
|
|
1559
|
+
/* @__PURE__ */ jsx15("td", { className: "detail-schema-field", children: fieldName }),
|
|
1560
|
+
/* @__PURE__ */ jsx15("td", { className: "detail-schema-type", children: extractType(fieldSchema) }),
|
|
1561
|
+
/* @__PURE__ */ jsx15("td", { children: required.has(fieldName) && /* @__PURE__ */ jsx15("span", { className: "detail-schema-required", children: "req" }) }),
|
|
1562
|
+
/* @__PURE__ */ jsx15("td", { children: (_a2 = fieldSchema.description) != null ? _a2 : "" })
|
|
1514
1563
|
] }, fieldName);
|
|
1515
1564
|
}) })
|
|
1516
1565
|
] });
|
|
@@ -1577,10 +1626,10 @@ function toAppEdges(edges) {
|
|
|
1577
1626
|
}
|
|
1578
1627
|
|
|
1579
1628
|
// src/graph/react/viewer/renderLabel.tsx
|
|
1580
|
-
import { jsx as
|
|
1629
|
+
import { jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1581
1630
|
function renderLabel(desc) {
|
|
1582
1631
|
if (desc.kind === "pipe") {
|
|
1583
|
-
return /* @__PURE__ */
|
|
1632
|
+
return /* @__PURE__ */ jsx16(
|
|
1584
1633
|
"div",
|
|
1585
1634
|
{
|
|
1586
1635
|
style: {
|
|
@@ -1594,7 +1643,7 @@ function renderLabel(desc) {
|
|
|
1594
1643
|
minWidth: 0
|
|
1595
1644
|
},
|
|
1596
1645
|
title: desc.label,
|
|
1597
|
-
children: /* @__PURE__ */
|
|
1646
|
+
children: /* @__PURE__ */ jsx16(
|
|
1598
1647
|
"span",
|
|
1599
1648
|
{
|
|
1600
1649
|
style: {
|
|
@@ -1613,7 +1662,7 @@ function renderLabel(desc) {
|
|
|
1613
1662
|
}
|
|
1614
1663
|
);
|
|
1615
1664
|
}
|
|
1616
|
-
return /* @__PURE__ */
|
|
1665
|
+
return /* @__PURE__ */ jsxs16(
|
|
1617
1666
|
"div",
|
|
1618
1667
|
{
|
|
1619
1668
|
style: {
|
|
@@ -1629,7 +1678,7 @@ function renderLabel(desc) {
|
|
|
1629
1678
|
},
|
|
1630
1679
|
title: desc.concept ? `${desc.label}: ${desc.concept}` : desc.label,
|
|
1631
1680
|
children: [
|
|
1632
|
-
/* @__PURE__ */
|
|
1681
|
+
/* @__PURE__ */ jsx16(
|
|
1633
1682
|
"span",
|
|
1634
1683
|
{
|
|
1635
1684
|
style: {
|
|
@@ -1645,7 +1694,7 @@ function renderLabel(desc) {
|
|
|
1645
1694
|
children: desc.label
|
|
1646
1695
|
}
|
|
1647
1696
|
),
|
|
1648
|
-
desc.concept && /* @__PURE__ */
|
|
1697
|
+
desc.concept && /* @__PURE__ */ jsx16(
|
|
1649
1698
|
"span",
|
|
1650
1699
|
{
|
|
1651
1700
|
style: {
|
|
@@ -1676,9 +1725,9 @@ function hydrateLabels(nodes) {
|
|
|
1676
1725
|
|
|
1677
1726
|
// src/graph/react/viewer/GraphToolbar.tsx
|
|
1678
1727
|
import { Panel } from "@xyflow/react";
|
|
1679
|
-
import { Fragment as
|
|
1728
|
+
import { Fragment as Fragment12, jsx as jsx17, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1680
1729
|
var REACTFLOW_PANEL_MARGIN = 15;
|
|
1681
|
-
var ARROW_RIGHT_ICON = /* @__PURE__ */
|
|
1730
|
+
var ARROW_RIGHT_ICON = /* @__PURE__ */ jsxs17(
|
|
1682
1731
|
"svg",
|
|
1683
1732
|
{
|
|
1684
1733
|
viewBox: "0 0 24 24",
|
|
@@ -1690,12 +1739,12 @@ var ARROW_RIGHT_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1690
1739
|
strokeLinecap: "round",
|
|
1691
1740
|
strokeLinejoin: "round",
|
|
1692
1741
|
children: [
|
|
1693
|
-
/* @__PURE__ */
|
|
1694
|
-
/* @__PURE__ */
|
|
1742
|
+
/* @__PURE__ */ jsx17("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
|
|
1743
|
+
/* @__PURE__ */ jsx17("polyline", { points: "12 5 19 12 12 19" })
|
|
1695
1744
|
]
|
|
1696
1745
|
}
|
|
1697
1746
|
);
|
|
1698
|
-
var ARROW_DOWN_ICON = /* @__PURE__ */
|
|
1747
|
+
var ARROW_DOWN_ICON = /* @__PURE__ */ jsxs17(
|
|
1699
1748
|
"svg",
|
|
1700
1749
|
{
|
|
1701
1750
|
viewBox: "0 0 24 24",
|
|
@@ -1707,12 +1756,12 @@ var ARROW_DOWN_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1707
1756
|
strokeLinecap: "round",
|
|
1708
1757
|
strokeLinejoin: "round",
|
|
1709
1758
|
children: [
|
|
1710
|
-
/* @__PURE__ */
|
|
1711
|
-
/* @__PURE__ */
|
|
1759
|
+
/* @__PURE__ */ jsx17("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
|
|
1760
|
+
/* @__PURE__ */ jsx17("polyline", { points: "19 12 12 19 5 12" })
|
|
1712
1761
|
]
|
|
1713
1762
|
}
|
|
1714
1763
|
);
|
|
1715
|
-
var MINUS_ICON = /* @__PURE__ */
|
|
1764
|
+
var MINUS_ICON = /* @__PURE__ */ jsx17(
|
|
1716
1765
|
"svg",
|
|
1717
1766
|
{
|
|
1718
1767
|
viewBox: "0 0 24 24",
|
|
@@ -1723,10 +1772,10 @@ var MINUS_ICON = /* @__PURE__ */ jsx16(
|
|
|
1723
1772
|
strokeWidth: "2",
|
|
1724
1773
|
strokeLinecap: "round",
|
|
1725
1774
|
strokeLinejoin: "round",
|
|
1726
|
-
children: /* @__PURE__ */
|
|
1775
|
+
children: /* @__PURE__ */ jsx17("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
|
|
1727
1776
|
}
|
|
1728
1777
|
);
|
|
1729
|
-
var PLUS_ICON = /* @__PURE__ */
|
|
1778
|
+
var PLUS_ICON = /* @__PURE__ */ jsxs17(
|
|
1730
1779
|
"svg",
|
|
1731
1780
|
{
|
|
1732
1781
|
viewBox: "0 0 24 24",
|
|
@@ -1738,12 +1787,12 @@ var PLUS_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1738
1787
|
strokeLinecap: "round",
|
|
1739
1788
|
strokeLinejoin: "round",
|
|
1740
1789
|
children: [
|
|
1741
|
-
/* @__PURE__ */
|
|
1742
|
-
/* @__PURE__ */
|
|
1790
|
+
/* @__PURE__ */ jsx17("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
|
|
1791
|
+
/* @__PURE__ */ jsx17("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
|
|
1743
1792
|
]
|
|
1744
1793
|
}
|
|
1745
1794
|
);
|
|
1746
|
-
var FIT_VIEW_ICON = /* @__PURE__ */
|
|
1795
|
+
var FIT_VIEW_ICON = /* @__PURE__ */ jsxs17(
|
|
1747
1796
|
"svg",
|
|
1748
1797
|
{
|
|
1749
1798
|
viewBox: "0 0 24 24",
|
|
@@ -1755,14 +1804,14 @@ var FIT_VIEW_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1755
1804
|
strokeLinecap: "round",
|
|
1756
1805
|
strokeLinejoin: "round",
|
|
1757
1806
|
children: [
|
|
1758
|
-
/* @__PURE__ */
|
|
1759
|
-
/* @__PURE__ */
|
|
1760
|
-
/* @__PURE__ */
|
|
1761
|
-
/* @__PURE__ */
|
|
1807
|
+
/* @__PURE__ */ jsx17("polyline", { points: "15 3 21 3 21 9" }),
|
|
1808
|
+
/* @__PURE__ */ jsx17("polyline", { points: "9 21 3 21 3 15" }),
|
|
1809
|
+
/* @__PURE__ */ jsx17("line", { x1: "21", y1: "3", x2: "14", y2: "10" }),
|
|
1810
|
+
/* @__PURE__ */ jsx17("line", { x1: "3", y1: "21", x2: "10", y2: "14" })
|
|
1762
1811
|
]
|
|
1763
1812
|
}
|
|
1764
1813
|
);
|
|
1765
|
-
var BOXES_ICON = /* @__PURE__ */
|
|
1814
|
+
var BOXES_ICON = /* @__PURE__ */ jsxs17(
|
|
1766
1815
|
"svg",
|
|
1767
1816
|
{
|
|
1768
1817
|
viewBox: "0 0 24 24",
|
|
@@ -1774,22 +1823,22 @@ var BOXES_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1774
1823
|
strokeLinecap: "round",
|
|
1775
1824
|
strokeLinejoin: "round",
|
|
1776
1825
|
children: [
|
|
1777
|
-
/* @__PURE__ */
|
|
1778
|
-
/* @__PURE__ */
|
|
1779
|
-
/* @__PURE__ */
|
|
1780
|
-
/* @__PURE__ */
|
|
1781
|
-
/* @__PURE__ */
|
|
1782
|
-
/* @__PURE__ */
|
|
1783
|
-
/* @__PURE__ */
|
|
1784
|
-
/* @__PURE__ */
|
|
1785
|
-
/* @__PURE__ */
|
|
1786
|
-
/* @__PURE__ */
|
|
1787
|
-
/* @__PURE__ */
|
|
1788
|
-
/* @__PURE__ */
|
|
1826
|
+
/* @__PURE__ */ jsx17("path", { d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z" }),
|
|
1827
|
+
/* @__PURE__ */ jsx17("path", { d: "m7 16.5-4.74-2.85" }),
|
|
1828
|
+
/* @__PURE__ */ jsx17("path", { d: "m7 16.5 5-3" }),
|
|
1829
|
+
/* @__PURE__ */ jsx17("path", { d: "M7 16.5v5.17" }),
|
|
1830
|
+
/* @__PURE__ */ jsx17("path", { d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z" }),
|
|
1831
|
+
/* @__PURE__ */ jsx17("path", { d: "m17 16.5-5-3" }),
|
|
1832
|
+
/* @__PURE__ */ jsx17("path", { d: "m17 16.5 4.74-2.85" }),
|
|
1833
|
+
/* @__PURE__ */ jsx17("path", { d: "M17 16.5v5.17" }),
|
|
1834
|
+
/* @__PURE__ */ jsx17("path", { d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z" }),
|
|
1835
|
+
/* @__PURE__ */ jsx17("path", { d: "M12 8 7.26 5.15" }),
|
|
1836
|
+
/* @__PURE__ */ jsx17("path", { d: "m12 8 4.74-2.85" }),
|
|
1837
|
+
/* @__PURE__ */ jsx17("path", { d: "M12 13.5V8" })
|
|
1789
1838
|
]
|
|
1790
1839
|
}
|
|
1791
1840
|
);
|
|
1792
|
-
var FOLD_ALL_ICON = /* @__PURE__ */
|
|
1841
|
+
var FOLD_ALL_ICON = /* @__PURE__ */ jsxs17(
|
|
1793
1842
|
"svg",
|
|
1794
1843
|
{
|
|
1795
1844
|
viewBox: "0 0 24 24",
|
|
@@ -1801,15 +1850,15 @@ var FOLD_ALL_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1801
1850
|
strokeLinecap: "round",
|
|
1802
1851
|
strokeLinejoin: "round",
|
|
1803
1852
|
children: [
|
|
1804
|
-
/* @__PURE__ */
|
|
1805
|
-
/* @__PURE__ */
|
|
1806
|
-
/* @__PURE__ */
|
|
1807
|
-
/* @__PURE__ */
|
|
1808
|
-
/* @__PURE__ */
|
|
1853
|
+
/* @__PURE__ */ jsx17("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" }),
|
|
1854
|
+
/* @__PURE__ */ jsx17("polyline", { points: "2 2 6 6 2 6" }),
|
|
1855
|
+
/* @__PURE__ */ jsx17("polyline", { points: "22 2 18 6 22 6" }),
|
|
1856
|
+
/* @__PURE__ */ jsx17("polyline", { points: "2 22 6 18 2 18" }),
|
|
1857
|
+
/* @__PURE__ */ jsx17("polyline", { points: "22 22 18 18 22 18" })
|
|
1809
1858
|
]
|
|
1810
1859
|
}
|
|
1811
1860
|
);
|
|
1812
|
-
var EXPAND_ALL_ICON = /* @__PURE__ */
|
|
1861
|
+
var EXPAND_ALL_ICON = /* @__PURE__ */ jsxs17(
|
|
1813
1862
|
"svg",
|
|
1814
1863
|
{
|
|
1815
1864
|
viewBox: "0 0 24 24",
|
|
@@ -1821,15 +1870,15 @@ var EXPAND_ALL_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1821
1870
|
strokeLinecap: "round",
|
|
1822
1871
|
strokeLinejoin: "round",
|
|
1823
1872
|
children: [
|
|
1824
|
-
/* @__PURE__ */
|
|
1825
|
-
/* @__PURE__ */
|
|
1826
|
-
/* @__PURE__ */
|
|
1827
|
-
/* @__PURE__ */
|
|
1828
|
-
/* @__PURE__ */
|
|
1873
|
+
/* @__PURE__ */ jsx17("rect", { x: "9", y: "9", width: "6", height: "6", rx: "1" }),
|
|
1874
|
+
/* @__PURE__ */ jsx17("polyline", { points: "3 3 7 7 3 7" }),
|
|
1875
|
+
/* @__PURE__ */ jsx17("polyline", { points: "21 3 17 7 21 7" }),
|
|
1876
|
+
/* @__PURE__ */ jsx17("polyline", { points: "3 21 7 17 3 17" }),
|
|
1877
|
+
/* @__PURE__ */ jsx17("polyline", { points: "21 21 17 17 21 17" })
|
|
1829
1878
|
]
|
|
1830
1879
|
}
|
|
1831
1880
|
);
|
|
1832
|
-
var SUN_ICON = /* @__PURE__ */
|
|
1881
|
+
var SUN_ICON = /* @__PURE__ */ jsxs17(
|
|
1833
1882
|
"svg",
|
|
1834
1883
|
{
|
|
1835
1884
|
viewBox: "0 0 24 24",
|
|
@@ -1841,19 +1890,19 @@ var SUN_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1841
1890
|
strokeLinecap: "round",
|
|
1842
1891
|
strokeLinejoin: "round",
|
|
1843
1892
|
children: [
|
|
1844
|
-
/* @__PURE__ */
|
|
1845
|
-
/* @__PURE__ */
|
|
1846
|
-
/* @__PURE__ */
|
|
1847
|
-
/* @__PURE__ */
|
|
1848
|
-
/* @__PURE__ */
|
|
1849
|
-
/* @__PURE__ */
|
|
1850
|
-
/* @__PURE__ */
|
|
1851
|
-
/* @__PURE__ */
|
|
1852
|
-
/* @__PURE__ */
|
|
1893
|
+
/* @__PURE__ */ jsx17("circle", { cx: "12", cy: "12", r: "4" }),
|
|
1894
|
+
/* @__PURE__ */ jsx17("line", { x1: "12", y1: "2", x2: "12", y2: "4" }),
|
|
1895
|
+
/* @__PURE__ */ jsx17("line", { x1: "12", y1: "20", x2: "12", y2: "22" }),
|
|
1896
|
+
/* @__PURE__ */ jsx17("line", { x1: "4.93", y1: "4.93", x2: "6.34", y2: "6.34" }),
|
|
1897
|
+
/* @__PURE__ */ jsx17("line", { x1: "17.66", y1: "17.66", x2: "19.07", y2: "19.07" }),
|
|
1898
|
+
/* @__PURE__ */ jsx17("line", { x1: "2", y1: "12", x2: "4", y2: "12" }),
|
|
1899
|
+
/* @__PURE__ */ jsx17("line", { x1: "20", y1: "12", x2: "22", y2: "12" }),
|
|
1900
|
+
/* @__PURE__ */ jsx17("line", { x1: "4.93", y1: "19.07", x2: "6.34", y2: "17.66" }),
|
|
1901
|
+
/* @__PURE__ */ jsx17("line", { x1: "17.66", y1: "6.34", x2: "19.07", y2: "4.93" })
|
|
1853
1902
|
]
|
|
1854
1903
|
}
|
|
1855
1904
|
);
|
|
1856
|
-
var MOON_ICON = /* @__PURE__ */
|
|
1905
|
+
var MOON_ICON = /* @__PURE__ */ jsx17(
|
|
1857
1906
|
"svg",
|
|
1858
1907
|
{
|
|
1859
1908
|
viewBox: "0 0 24 24",
|
|
@@ -1864,10 +1913,10 @@ var MOON_ICON = /* @__PURE__ */ jsx16(
|
|
|
1864
1913
|
strokeWidth: "2",
|
|
1865
1914
|
strokeLinecap: "round",
|
|
1866
1915
|
strokeLinejoin: "round",
|
|
1867
|
-
children: /* @__PURE__ */
|
|
1916
|
+
children: /* @__PURE__ */ jsx17("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" })
|
|
1868
1917
|
}
|
|
1869
1918
|
);
|
|
1870
|
-
var MONITOR_ICON = /* @__PURE__ */
|
|
1919
|
+
var MONITOR_ICON = /* @__PURE__ */ jsxs17(
|
|
1871
1920
|
"svg",
|
|
1872
1921
|
{
|
|
1873
1922
|
viewBox: "0 0 24 24",
|
|
@@ -1879,9 +1928,9 @@ var MONITOR_ICON = /* @__PURE__ */ jsxs16(
|
|
|
1879
1928
|
strokeLinecap: "round",
|
|
1880
1929
|
strokeLinejoin: "round",
|
|
1881
1930
|
children: [
|
|
1882
|
-
/* @__PURE__ */
|
|
1883
|
-
/* @__PURE__ */
|
|
1884
|
-
/* @__PURE__ */
|
|
1931
|
+
/* @__PURE__ */ jsx17("rect", { x: "2", y: "3", width: "20", height: "14", rx: "2" }),
|
|
1932
|
+
/* @__PURE__ */ jsx17("line", { x1: "8", y1: "21", x2: "16", y2: "21" }),
|
|
1933
|
+
/* @__PURE__ */ jsx17("line", { x1: "12", y1: "17", x2: "12", y2: "21" })
|
|
1885
1934
|
]
|
|
1886
1935
|
}
|
|
1887
1936
|
);
|
|
@@ -1935,8 +1984,8 @@ function GraphToolbar({
|
|
|
1935
1984
|
const foldAllSection = onFoldAll || onExpandAll;
|
|
1936
1985
|
const foldAllTitle = foldAllDisabled ? "Fold all controllers (nothing to fold)" : "Fold all controllers";
|
|
1937
1986
|
const expandAllTitle = expandAllDisabled ? "Expand all controllers (nothing to expand)" : "Expand all controllers";
|
|
1938
|
-
return /* @__PURE__ */
|
|
1939
|
-
onFoldAll && /* @__PURE__ */
|
|
1987
|
+
return /* @__PURE__ */ jsx17(Panel, { position, className: "graph-toolbar-panel", style: panelStyle, children: /* @__PURE__ */ jsxs17("div", { className: `graph-toolbar graph-toolbar--${orientation}`, children: [
|
|
1988
|
+
onFoldAll && /* @__PURE__ */ jsx17(
|
|
1940
1989
|
"button",
|
|
1941
1990
|
{
|
|
1942
1991
|
type: "button",
|
|
@@ -1948,7 +1997,7 @@ function GraphToolbar({
|
|
|
1948
1997
|
children: FOLD_ALL_ICON
|
|
1949
1998
|
}
|
|
1950
1999
|
),
|
|
1951
|
-
onExpandAll && /* @__PURE__ */
|
|
2000
|
+
onExpandAll && /* @__PURE__ */ jsx17(
|
|
1952
2001
|
"button",
|
|
1953
2002
|
{
|
|
1954
2003
|
type: "button",
|
|
@@ -1960,8 +2009,8 @@ function GraphToolbar({
|
|
|
1960
2009
|
children: EXPAND_ALL_ICON
|
|
1961
2010
|
}
|
|
1962
2011
|
),
|
|
1963
|
-
foldAllSection && /* @__PURE__ */
|
|
1964
|
-
/* @__PURE__ */
|
|
2012
|
+
foldAllSection && /* @__PURE__ */ jsx17("div", { className: "graph-toolbar-separator" }),
|
|
2013
|
+
/* @__PURE__ */ jsx17(
|
|
1965
2014
|
"button",
|
|
1966
2015
|
{
|
|
1967
2016
|
type: "button",
|
|
@@ -1972,7 +2021,7 @@ function GraphToolbar({
|
|
|
1972
2021
|
children: BOXES_ICON
|
|
1973
2022
|
}
|
|
1974
2023
|
),
|
|
1975
|
-
/* @__PURE__ */
|
|
2024
|
+
/* @__PURE__ */ jsx17(
|
|
1976
2025
|
"button",
|
|
1977
2026
|
{
|
|
1978
2027
|
type: "button",
|
|
@@ -1983,8 +2032,8 @@ function GraphToolbar({
|
|
|
1983
2032
|
children: isVertical ? ARROW_RIGHT_ICON : ARROW_DOWN_ICON
|
|
1984
2033
|
}
|
|
1985
2034
|
),
|
|
1986
|
-
(onZoomOut || onZoomIn || onFitView) && /* @__PURE__ */
|
|
1987
|
-
onZoomOut && /* @__PURE__ */
|
|
2035
|
+
(onZoomOut || onZoomIn || onFitView) && /* @__PURE__ */ jsx17("div", { className: "graph-toolbar-separator" }),
|
|
2036
|
+
onZoomOut && /* @__PURE__ */ jsx17(
|
|
1988
2037
|
"button",
|
|
1989
2038
|
{
|
|
1990
2039
|
type: "button",
|
|
@@ -1995,7 +2044,7 @@ function GraphToolbar({
|
|
|
1995
2044
|
children: MINUS_ICON
|
|
1996
2045
|
}
|
|
1997
2046
|
),
|
|
1998
|
-
onZoomIn && /* @__PURE__ */
|
|
2047
|
+
onZoomIn && /* @__PURE__ */ jsx17(
|
|
1999
2048
|
"button",
|
|
2000
2049
|
{
|
|
2001
2050
|
type: "button",
|
|
@@ -2006,7 +2055,7 @@ function GraphToolbar({
|
|
|
2006
2055
|
children: PLUS_ICON
|
|
2007
2056
|
}
|
|
2008
2057
|
),
|
|
2009
|
-
onFitView && /* @__PURE__ */
|
|
2058
|
+
onFitView && /* @__PURE__ */ jsx17(
|
|
2010
2059
|
"button",
|
|
2011
2060
|
{
|
|
2012
2061
|
type: "button",
|
|
@@ -2017,9 +2066,9 @@ function GraphToolbar({
|
|
|
2017
2066
|
children: FIT_VIEW_ICON
|
|
2018
2067
|
}
|
|
2019
2068
|
),
|
|
2020
|
-
themeToggleEnabled && /* @__PURE__ */
|
|
2021
|
-
/* @__PURE__ */
|
|
2022
|
-
/* @__PURE__ */
|
|
2069
|
+
themeToggleEnabled && /* @__PURE__ */ jsxs17(Fragment12, { children: [
|
|
2070
|
+
/* @__PURE__ */ jsx17("div", { className: "graph-toolbar-separator" }),
|
|
2071
|
+
/* @__PURE__ */ jsx17(
|
|
2023
2072
|
"button",
|
|
2024
2073
|
{
|
|
2025
2074
|
type: "button",
|
|
@@ -2035,7 +2084,7 @@ function GraphToolbar({
|
|
|
2035
2084
|
}
|
|
2036
2085
|
|
|
2037
2086
|
// src/graph/react/nodes/controller/ControllerGroupNode.tsx
|
|
2038
|
-
import { jsx as
|
|
2087
|
+
import { jsx as jsx18, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2039
2088
|
var CONTROLLER_CONFIG = {
|
|
2040
2089
|
PipeSequence: { badge: "Sequence", icon: "\u2192" },
|
|
2041
2090
|
PipeParallel: { badge: "Parallel", icon: "//" },
|
|
@@ -2057,12 +2106,12 @@ function ControllerGroupNode({ data }) {
|
|
|
2057
2106
|
const modifier = getControllerModifier(data.pipeType);
|
|
2058
2107
|
const isCollapsible = (data.pipeType === "PipeParallel" || data.pipeType === "PipeBatch") && ((_a = data.childCount) != null ? _a : 0) > MAX_VISIBLE_CONTROLLER_CHILDREN;
|
|
2059
2108
|
const hiddenCount = isCollapsible ? ((_b = data.childCount) != null ? _b : 0) - MAX_VISIBLE_CONTROLLER_CHILDREN : 0;
|
|
2060
|
-
return /* @__PURE__ */
|
|
2061
|
-
/* @__PURE__ */
|
|
2062
|
-
/* @__PURE__ */
|
|
2063
|
-
/* @__PURE__ */
|
|
2064
|
-
data.label && /* @__PURE__ */
|
|
2065
|
-
data.onToggleFold && /* @__PURE__ */
|
|
2109
|
+
return /* @__PURE__ */ jsxs18("div", { className: `controller-group-node ${modifier}`, children: [
|
|
2110
|
+
/* @__PURE__ */ jsxs18("div", { className: "controller-group-header", children: [
|
|
2111
|
+
/* @__PURE__ */ jsx18("span", { className: "controller-group-icon", children: config.icon }),
|
|
2112
|
+
/* @__PURE__ */ jsx18("span", { className: "controller-group-badge", children: config.badge }),
|
|
2113
|
+
data.label && /* @__PURE__ */ jsx18("span", { className: "controller-group-label", children: data.label }),
|
|
2114
|
+
data.onToggleFold && /* @__PURE__ */ jsx18(
|
|
2066
2115
|
"button",
|
|
2067
2116
|
{
|
|
2068
2117
|
type: "button",
|
|
@@ -2078,7 +2127,7 @@ function ControllerGroupNode({ data }) {
|
|
|
2078
2127
|
}
|
|
2079
2128
|
)
|
|
2080
2129
|
] }),
|
|
2081
|
-
isCollapsible && /* @__PURE__ */
|
|
2130
|
+
isCollapsible && /* @__PURE__ */ jsx18(
|
|
2082
2131
|
"button",
|
|
2083
2132
|
{
|
|
2084
2133
|
className: "controller-group-collapse",
|
|
@@ -2099,7 +2148,7 @@ import { Handle, Position } from "@xyflow/react";
|
|
|
2099
2148
|
|
|
2100
2149
|
// src/graph/react/nodes/pipe/PipeCardBase.tsx
|
|
2101
2150
|
import { useState as useState2 } from "react";
|
|
2102
|
-
import { jsx as
|
|
2151
|
+
import { jsx as jsx19, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2103
2152
|
var PIPE_TYPE_BADGES2 = {
|
|
2104
2153
|
PipeLLM: "LLM",
|
|
2105
2154
|
PipeExtract: "Extract",
|
|
@@ -2107,6 +2156,7 @@ var PIPE_TYPE_BADGES2 = {
|
|
|
2107
2156
|
PipeImgGen: "ImgGen",
|
|
2108
2157
|
PipeSearch: "Search",
|
|
2109
2158
|
PipeFunc: "Func",
|
|
2159
|
+
PipeStructure: "Structure",
|
|
2110
2160
|
PipeSignature: "Signature",
|
|
2111
2161
|
PipeSequence: "Sequence",
|
|
2112
2162
|
PipeParallel: "Parallel",
|
|
@@ -2148,17 +2198,17 @@ function PipeCardBase({ data, children }) {
|
|
|
2148
2198
|
const controllerClass = isController ? " pipe-card--controller" : "";
|
|
2149
2199
|
const signatureClass = isSignature ? " pipe-card--signature" : "";
|
|
2150
2200
|
const badgeClass = isController ? "pipe-card-badge pipe-card-badge--controller" : isSignature ? "pipe-card-badge pipe-card-badge--signature" : "pipe-card-badge";
|
|
2151
|
-
return /* @__PURE__ */
|
|
2152
|
-
/* @__PURE__ */
|
|
2153
|
-
/* @__PURE__ */
|
|
2154
|
-
/* @__PURE__ */
|
|
2155
|
-
/* @__PURE__ */
|
|
2201
|
+
return /* @__PURE__ */ jsxs19("div", { className: `pipe-card ${dirClass}${controllerClass}${signatureClass}`, children: [
|
|
2202
|
+
/* @__PURE__ */ jsxs19("div", { className: "pipe-card-header", children: [
|
|
2203
|
+
/* @__PURE__ */ jsx19("span", { className: badgeClass, children: badge }),
|
|
2204
|
+
/* @__PURE__ */ jsx19("span", { className: "pipe-card-code", title: data.pipeCode, children: data.pipeCode }),
|
|
2205
|
+
/* @__PURE__ */ jsx19(
|
|
2156
2206
|
"span",
|
|
2157
2207
|
{
|
|
2158
2208
|
className: "pipe-card-status",
|
|
2159
2209
|
style: { color: statusConfig.color },
|
|
2160
2210
|
title: statusConfig.label,
|
|
2161
|
-
children: /* @__PURE__ */
|
|
2211
|
+
children: /* @__PURE__ */ jsx19(
|
|
2162
2212
|
"span",
|
|
2163
2213
|
{
|
|
2164
2214
|
className: `pipe-card-status-dot ${isRunning ? "pipe-card-status-dot--pulse" : ""}`,
|
|
@@ -2167,7 +2217,7 @@ function PipeCardBase({ data, children }) {
|
|
|
2167
2217
|
)
|
|
2168
2218
|
}
|
|
2169
2219
|
),
|
|
2170
|
-
data.onExpand && /* @__PURE__ */
|
|
2220
|
+
data.onExpand && /* @__PURE__ */ jsx19(
|
|
2171
2221
|
"button",
|
|
2172
2222
|
{
|
|
2173
2223
|
type: "button",
|
|
@@ -2183,23 +2233,23 @@ function PipeCardBase({ data, children }) {
|
|
|
2183
2233
|
}
|
|
2184
2234
|
)
|
|
2185
2235
|
] }),
|
|
2186
|
-
data.description && /* @__PURE__ */
|
|
2187
|
-
data.inputs.length > 0 && /* @__PURE__ */
|
|
2188
|
-
/* @__PURE__ */
|
|
2189
|
-
/* @__PURE__ */
|
|
2190
|
-
visibleInputs.map((input) => /* @__PURE__ */
|
|
2236
|
+
data.description && /* @__PURE__ */ jsx19("span", { className: "pipe-card-description", title: data.description, children: data.description }),
|
|
2237
|
+
data.inputs.length > 0 && /* @__PURE__ */ jsxs19("div", { className: "pipe-card-io", children: [
|
|
2238
|
+
/* @__PURE__ */ jsx19("span", { className: "pipe-card-io-label", children: "INPUTS" }),
|
|
2239
|
+
/* @__PURE__ */ jsxs19("div", { className: "pipe-card-io-pills", children: [
|
|
2240
|
+
visibleInputs.map((input) => /* @__PURE__ */ jsxs19(
|
|
2191
2241
|
"span",
|
|
2192
2242
|
{
|
|
2193
2243
|
className: "pipe-card-io-pill",
|
|
2194
2244
|
title: `${input.name}: ${input.concept}`,
|
|
2195
2245
|
children: [
|
|
2196
|
-
/* @__PURE__ */
|
|
2197
|
-
/* @__PURE__ */
|
|
2246
|
+
/* @__PURE__ */ jsx19("span", { className: "pipe-card-io-pill-name", children: input.name }),
|
|
2247
|
+
/* @__PURE__ */ jsx19("span", { className: "pipe-card-io-pill-concept", children: input.concept })
|
|
2198
2248
|
]
|
|
2199
2249
|
},
|
|
2200
2250
|
input.name
|
|
2201
2251
|
)),
|
|
2202
|
-
hasMany && /* @__PURE__ */
|
|
2252
|
+
hasMany && /* @__PURE__ */ jsx19(
|
|
2203
2253
|
"button",
|
|
2204
2254
|
{
|
|
2205
2255
|
className: "pipe-card-io-more",
|
|
@@ -2212,16 +2262,16 @@ function PipeCardBase({ data, children }) {
|
|
|
2212
2262
|
)
|
|
2213
2263
|
] })
|
|
2214
2264
|
] }),
|
|
2215
|
-
data.outputs.length > 0 && /* @__PURE__ */
|
|
2216
|
-
/* @__PURE__ */
|
|
2217
|
-
/* @__PURE__ */
|
|
2265
|
+
data.outputs.length > 0 && /* @__PURE__ */ jsxs19("div", { className: "pipe-card-io", children: [
|
|
2266
|
+
/* @__PURE__ */ jsx19("span", { className: "pipe-card-io-label", children: "OUTPUT" }),
|
|
2267
|
+
/* @__PURE__ */ jsx19("div", { className: "pipe-card-io-pills", children: data.outputs.map((output) => /* @__PURE__ */ jsxs19(
|
|
2218
2268
|
"span",
|
|
2219
2269
|
{
|
|
2220
2270
|
className: "pipe-card-io-pill",
|
|
2221
2271
|
title: `${output.name}: ${output.concept}`,
|
|
2222
2272
|
children: [
|
|
2223
|
-
/* @__PURE__ */
|
|
2224
|
-
/* @__PURE__ */
|
|
2273
|
+
/* @__PURE__ */ jsx19("span", { className: "pipe-card-io-pill-name", children: output.name }),
|
|
2274
|
+
/* @__PURE__ */ jsx19("span", { className: "pipe-card-io-pill-concept", children: output.concept })
|
|
2225
2275
|
]
|
|
2226
2276
|
},
|
|
2227
2277
|
output.name
|
|
@@ -2239,6 +2289,7 @@ var PIPE_CARD_REGISTRY = {
|
|
|
2239
2289
|
PipeImgGen: PipeCardBase,
|
|
2240
2290
|
PipeSearch: PipeCardBase,
|
|
2241
2291
|
PipeFunc: PipeCardBase,
|
|
2292
|
+
PipeStructure: PipeCardBase,
|
|
2242
2293
|
PipeSignature: PipeCardBase,
|
|
2243
2294
|
PipeSequence: PipeCardBase,
|
|
2244
2295
|
PipeParallel: PipeCardBase,
|
|
@@ -2250,11 +2301,11 @@ function getPipeCardComponent(pipeType) {
|
|
|
2250
2301
|
}
|
|
2251
2302
|
|
|
2252
2303
|
// src/graph/react/nodes/pipe/PipeCardNode.tsx
|
|
2253
|
-
import { Fragment as
|
|
2304
|
+
import { Fragment as Fragment13, jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2254
2305
|
function PipeCardNode({ data }) {
|
|
2255
2306
|
var _a;
|
|
2256
2307
|
const Card = (_a = getPipeCardComponent(data.pipeType)) != null ? _a : PipeCardBase;
|
|
2257
|
-
return /* @__PURE__ */
|
|
2308
|
+
return /* @__PURE__ */ jsx20(Card, { data });
|
|
2258
2309
|
}
|
|
2259
2310
|
function PipeCardRFNode({
|
|
2260
2311
|
data,
|
|
@@ -2263,15 +2314,15 @@ function PipeCardRFNode({
|
|
|
2263
2314
|
}) {
|
|
2264
2315
|
const payload = data.pipeCardData;
|
|
2265
2316
|
if (!payload) return null;
|
|
2266
|
-
return /* @__PURE__ */
|
|
2267
|
-
/* @__PURE__ */
|
|
2268
|
-
/* @__PURE__ */
|
|
2269
|
-
/* @__PURE__ */
|
|
2317
|
+
return /* @__PURE__ */ jsxs20(Fragment13, { children: [
|
|
2318
|
+
/* @__PURE__ */ jsx20(Handle, { type: "target", position: targetPosition }),
|
|
2319
|
+
/* @__PURE__ */ jsx20(PipeCardNode, { data: payload }),
|
|
2320
|
+
/* @__PURE__ */ jsx20(Handle, { type: "source", position: sourcePosition })
|
|
2270
2321
|
] });
|
|
2271
2322
|
}
|
|
2272
2323
|
|
|
2273
2324
|
// src/graph/react/viewer/GraphViewer.tsx
|
|
2274
|
-
import { Fragment as
|
|
2325
|
+
import { Fragment as Fragment14, jsx as jsx21, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2275
2326
|
var nodeTypes = __spreadProps(__spreadValues({}, controllerNodeTypes), {
|
|
2276
2327
|
pipeCard: PipeCardRFNode
|
|
2277
2328
|
});
|
|
@@ -2284,7 +2335,7 @@ function StuffNodeDetail({
|
|
|
2284
2335
|
onOpenExternally
|
|
2285
2336
|
}) {
|
|
2286
2337
|
const conceptInfo = stuffData.concept && graphspec ? resolveConceptRef(graphspec, stuffData.concept) : void 0;
|
|
2287
|
-
return /* @__PURE__ */
|
|
2338
|
+
return /* @__PURE__ */ jsx21(Fragment14, { children: conceptInfo ? /* @__PURE__ */ jsx21(
|
|
2288
2339
|
ConceptDetailPanel,
|
|
2289
2340
|
{
|
|
2290
2341
|
concept: conceptInfo,
|
|
@@ -2296,7 +2347,7 @@ function StuffNodeDetail({
|
|
|
2296
2347
|
}
|
|
2297
2348
|
) : (
|
|
2298
2349
|
/* Fallback: just show the StuffViewer if no concept info */
|
|
2299
|
-
/* @__PURE__ */
|
|
2350
|
+
/* @__PURE__ */ jsx21(
|
|
2300
2351
|
StuffViewer,
|
|
2301
2352
|
{
|
|
2302
2353
|
stuff: stuffData,
|
|
@@ -2859,13 +2910,13 @@ function GraphViewer(props) {
|
|
|
2859
2910
|
expandAllDisabled: foldedControllers.size === 0
|
|
2860
2911
|
};
|
|
2861
2912
|
}, [showControllers, allControllerIds, foldedControllers]);
|
|
2862
|
-
return /* @__PURE__ */
|
|
2913
|
+
return /* @__PURE__ */ jsxs21(
|
|
2863
2914
|
"div",
|
|
2864
2915
|
{
|
|
2865
2916
|
ref: containerRef,
|
|
2866
2917
|
className: `react-flow-container react-flow-container--theme-${resolvedTheme} react-flow-container--mode-${mode}`,
|
|
2867
2918
|
children: [
|
|
2868
|
-
/* @__PURE__ */
|
|
2919
|
+
/* @__PURE__ */ jsxs21(
|
|
2869
2920
|
ReactFlow,
|
|
2870
2921
|
{
|
|
2871
2922
|
nodes,
|
|
@@ -2884,7 +2935,7 @@ function GraphViewer(props) {
|
|
|
2884
2935
|
proOptions: { hideAttribution: true },
|
|
2885
2936
|
panActivationKeyCode: null,
|
|
2886
2937
|
children: [
|
|
2887
|
-
/* @__PURE__ */
|
|
2938
|
+
/* @__PURE__ */ jsx21(
|
|
2888
2939
|
Background,
|
|
2889
2940
|
{
|
|
2890
2941
|
variant: BackgroundVariant.Dots,
|
|
@@ -2893,7 +2944,7 @@ function GraphViewer(props) {
|
|
|
2893
2944
|
color: "var(--color-bg-dots)"
|
|
2894
2945
|
}
|
|
2895
2946
|
),
|
|
2896
|
-
!hideToolbar && /* @__PURE__ */
|
|
2947
|
+
!hideToolbar && /* @__PURE__ */ jsx21(
|
|
2897
2948
|
GraphToolbar,
|
|
2898
2949
|
{
|
|
2899
2950
|
direction,
|
|
@@ -2925,7 +2976,7 @@ function GraphViewer(props) {
|
|
|
2925
2976
|
]
|
|
2926
2977
|
}
|
|
2927
2978
|
),
|
|
2928
|
-
/* @__PURE__ */
|
|
2979
|
+
/* @__PURE__ */ jsxs21(
|
|
2929
2980
|
DetailPanel,
|
|
2930
2981
|
{
|
|
2931
2982
|
isOpen: detailOpen,
|
|
@@ -2934,14 +2985,14 @@ function GraphViewer(props) {
|
|
|
2934
2985
|
isDragging: isPanelDragging,
|
|
2935
2986
|
onResizeHandleMouseDown: onResizeMouseDown,
|
|
2936
2987
|
children: [
|
|
2937
|
-
conceptOverride ? /* @__PURE__ */
|
|
2988
|
+
conceptOverride ? /* @__PURE__ */ jsx21(ConceptDetailPanel, { concept: conceptOverride }) : selectedSpecNode && graphspec ? /* @__PURE__ */ jsx21(
|
|
2938
2989
|
PipeDetailPanel,
|
|
2939
2990
|
{
|
|
2940
2991
|
node: selectedSpecNode,
|
|
2941
2992
|
spec: graphspec,
|
|
2942
2993
|
onConceptClick: handleConceptClick
|
|
2943
2994
|
}
|
|
2944
|
-
) : (detailSelection == null ? void 0 : detailSelection.stuffData) ? /* @__PURE__ */
|
|
2995
|
+
) : (detailSelection == null ? void 0 : detailSelection.stuffData) ? /* @__PURE__ */ jsx21(
|
|
2945
2996
|
StuffNodeDetail,
|
|
2946
2997
|
{
|
|
2947
2998
|
nodeId: detailSelection.nodeId,
|