@pipelex/mthds-ui 0.24.0 → 0.26.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.
Files changed (35) hide show
  1. package/README.md +42 -11
  2. package/dist/{chunk-FD4PKRGZ.js → chunk-K3BWHQVX.js} +38 -20
  3. package/dist/chunk-K3BWHQVX.js.map +1 -0
  4. package/dist/{chunk-RJVEDP7M.js → chunk-VCO4GZDZ.js} +12 -2
  5. package/dist/chunk-VCO4GZDZ.js.map +1 -0
  6. package/dist/{chunk-HASMGCVK.js → chunk-XBHDA3PQ.js} +2 -2
  7. package/dist/form/react/RunPanel.css +5 -5
  8. package/dist/form/react/index.d.ts +1 -1
  9. package/dist/form/react/index.js +2 -3
  10. package/dist/form/react/index.js.map +1 -1
  11. package/dist/graph/index.d.ts +6 -4
  12. package/dist/graph/index.js +7 -3
  13. package/dist/graph/react/detail/DetailPanel.css +5 -0
  14. package/dist/graph/react/graph-core.css +4 -1
  15. package/dist/graph/react/index.css +6 -1
  16. package/dist/graph/react/index.css.map +1 -1
  17. package/dist/graph/react/index.d.ts +11 -14
  18. package/dist/graph/react/index.js +35 -8
  19. package/dist/graph/react/index.js.map +1 -1
  20. package/dist/graph/react/viewer/GraphToolbar.css +5 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +7 -3
  23. package/dist/standalone/graph-standalone.html +155 -86
  24. package/dist/standalone/graph-viewer.css +15 -3
  25. package/dist/standalone/graph-viewer.js +140 -83
  26. package/dist/static-graph/index.d.ts +80 -2
  27. package/dist/static-graph/index.js +100 -15
  28. package/dist/static-graph/index.js.map +1 -1
  29. package/dist/styles/form-kernel.css +38 -38
  30. package/dist/styles/tailwind.css +51 -0
  31. package/dist/{types-Cn2FttBC.d.ts → types-DgqW3Jg4.d.ts} +87 -56
  32. package/package.json +7 -5
  33. package/dist/chunk-FD4PKRGZ.js.map +0 -1
  34. package/dist/chunk-RJVEDP7M.js.map +0 -1
  35. /package/dist/{chunk-HASMGCVK.js.map → chunk-XBHDA3PQ.js.map} +0 -0
@@ -1,41 +1,41 @@
1
1
  /**
2
- * The form kernel's Tailwind utilities, wrapped in a cascade layer.
3
- *
4
- * WHY THE LAYER, AND WHY THIS FILE EXISTS AT ALL
5
- *
6
- * `@pipelex/mthds-form/styles.css` is a COMPLETE Tailwind build: preflight plus
7
- * every utility the kernel's controls use, unprefixed and unscoped. That is the
8
- * right shape for its intended reader — a host with no Tailwind of its own — and
9
- * exactly the wrong shape for a host that HAS one. Injected raw into such a host
10
- * it is a second, later stylesheet full of colliding rules:
11
- *
12
- * - Its bare `.hidden { display: none }` outranks the host's `.sm\:inline`,
13
- * because the two have equal specificity and it happens to come last. Every
14
- * `class="hidden sm:inline"` label in the host app disappears at every
15
- * width. This is not hypothetical: it silently blanked the toolbar and
16
- * dialog labels across a consuming application the moment a graph mounted.
17
- * - Its preflight re-bases `*, ::before, ::after { border: 0 solid }`. A
18
- * shorthand always sets every longhand, so the host's own default border
19
- * color is still replaced — but with `currentColor`, which is Tailwind 4's
20
- * default. Through kernel 0.7.0 the declaration carried `#e5e7eb` and the
21
- * symptom was a pale grey hairline under anything with a border width and
22
- * no explicit color class. That symptom is gone as of 0.8.0; the collision
23
- * is milder, and the layer settles it either way.
24
- *
25
- * Both are the same failure: our sheet loading LATER than the host's and winning
26
- * ties it has no business winning. A cascade layer settles it by construction —
27
- * layered rules lose to unlayered rules regardless of source order, so the host
28
- * keeps every declaration it makes itself, and we still supply the classes it
29
- * never generated. Nothing here changes for a host with no Tailwind: a layer
30
- * only decides conflicts, and there are none to decide.
31
- *
32
- * The alternative — dropping the import and asking Tailwind hosts to widen their
33
- * content globs into `node_modules` — is the arrangement that was already
34
- * failing before the import was added. See the block comments in
35
- * `../graph/react/index.ts` and `../form/react/index.ts` for why the kernel's
36
- * classes cannot be left to the host to generate.
37
- *
38
- * `theme.css` stays out, layered or not: it defines the semantic tokens
39
- * (`--background`, `--border`, …) a shadcn host already owns.
2
+ * The form kernel's prebuilt stylesheet, for a host WITHOUT Tailwind.
3
+ *
4
+ * Such a host imports it once, from its own entry:
5
+ *
6
+ * import "@pipelex/mthds-ui/form-kernel.css";
7
+ *
8
+ * No JavaScript in this package imports it. From v0.20.0 through v0.24.0 both
9
+ * React entries injected it into every host, and no single position in the
10
+ * cascade served a host that has Tailwind of its own; the block comments in
11
+ * `../graph/react/index.ts` and `../form/react/index.ts` say why.
12
+ *
13
+ * WHAT A HOST GETS WITH IT
14
+ *
15
+ * `@pipelex/mthds-form/styles.css` is a COMPLETE Tailwind build: every utility
16
+ * the kernel's controls use, unprefixed and unscoped, and Tailwind's preflight.
17
+ * The preflight is what lets the controls render with no framework underneath,
18
+ * and it applies to the whole page, not only to the controls: it resets every
19
+ * browser default the host does not restate itself, so headings drop to body
20
+ * size, lists lose their markers, and paragraphs and the body lose their
21
+ * margins. A dedicated panel such as a webview expects that; a page of ordinary
22
+ * content that embeds a graph restates the defaults it wants to keep.
23
+ *
24
+ * WHY THE LAYER
25
+ *
26
+ * Layered rules lose to unlayered rules whatever the source order, so the
27
+ * host's own rules win every tie against the kernel's utilities and preflight,
28
+ * even though this sheet may load after the host's. In a host without Tailwind
29
+ * that is the whole question, which is why the layer stays.
30
+ *
31
+ * A HOST WITH TAILWIND 4 MUST NOT IMPORT THIS FILE. It compiles the kernel's
32
+ * classes itself, through `@pipelex/mthds-ui/tailwind.css` (`./tailwind.css`
33
+ * beside this file), and this sheet would put a second preflight in its page,
34
+ * ranked wherever the host's layers leave it.
35
+ *
36
+ * `theme.css` stays out: it defines the semantic tokens (`--background`,
37
+ * `--border`, …) that belong to the host. Since kernel `0.9.0` every utility in
38
+ * the kernel's sheet reads its token with a fallback, so a host that defines no
39
+ * tokens renders the kernel's light neutral palette.
40
40
  */
41
41
  @import "@pipelex/mthds-form/styles.css" layer(mthds-form);
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Where the form kernel's classes are, for a host with Tailwind 4.
3
+ *
4
+ * The kernel's controls are styled with Tailwind utilities that live in its
5
+ * shipped JavaScript, not in the host's source tree, so a host's build has to be
6
+ * told to scan it. The kernel's documented Tailwind 4 setup (its
7
+ * `docs/theming.md`, "A host that runs Tailwind") does that with an `@source`
8
+ * line naming a path into `node_modules`. This file replaces THAT LINE and
9
+ * nothing else: a host writes
10
+ *
11
+ * @import "@pipelex/mthds-ui/tailwind.css";
12
+ *
13
+ * among its other `@import`s, in any position, since `@source` does not depend
14
+ * on order. The rest of the kernel's setup stays the host's: `tw-animate-css`,
15
+ * whose utilities the select popover's and the tooltip's transitions use, and
16
+ * the `@theme inline` mapping of the shadcn tokens, without which a class such
17
+ * as `bg-background` compiles to nothing however well the scan found it.
18
+ *
19
+ * WHY TWO PATHS
20
+ *
21
+ * Tailwind resolves an imported package stylesheet to its REAL path and resolves
22
+ * that file's `@source` directives relative to it, so both paths below are
23
+ * relative to where this file lands, `dist/styles/` inside this package. An
24
+ * explicit `@source` is scanned even inside `node_modules`.
25
+ *
26
+ * - `../../../mthds-form/dist` is the kernel as a sibling of this package:
27
+ * in a pnpm virtual store, where every dependency of this package is linked
28
+ * beside it, and in an npm tree that hoisted the kernel to the top.
29
+ * - `../../node_modules/@pipelex/mthds-form/dist` is the kernel nested under
30
+ * this package, which npm does when the host's tree already holds another
31
+ * version at the top.
32
+ *
33
+ * A path that does not exist is skipped silently, which is why both are listed:
34
+ * in the layouts pnpm and npm give this package, one of them is the copy of the
35
+ * kernel this package imports, and the host never names a path into
36
+ * `node_modules` or declares the kernel itself.
37
+ *
38
+ * ONE LAYOUT ESCAPES BOTH
39
+ *
40
+ * A tree holding two versions of this package that share a kernel range can
41
+ * have npm nest one of them, under the workspace or dependency that asked for
42
+ * it, while the kernel they share is hoisted further up. No path fixed relative
43
+ * to this file reaches a kernel an arbitrary number of levels above it, so both
44
+ * candidates are skipped, silently, and the host adds its own `@source` at the
45
+ * kernel's `dist` (`docs/run-form-panel.md`).
46
+ *
47
+ * No JavaScript imports this file, and a host WITHOUT Tailwind never loads it:
48
+ * it imports `@pipelex/mthds-ui/form-kernel.css` instead. Never both.
49
+ */
50
+ @source "../../../mthds-form/dist";
51
+ @source "../../node_modules/@pipelex/mthds-form/dist";
@@ -26,10 +26,23 @@ declare const STUFF_ID_PREFIX = "stuff_";
26
26
  declare function stuffNodeId(digest: string): string;
27
27
  declare function isStuffNodeId(id: string): boolean;
28
28
  declare function stuffDigestFromId(id: string): string;
29
+ type StuffMultiplicity = number | boolean | null;
30
+ /** Whether a multiplicity declares a list: variable-length, or a fixed count of at least two. */
31
+ declare function isPluralMultiplicity(multiplicity: StuffMultiplicity | undefined): boolean;
32
+ /** The authored marker for a multiplicity — `"[]"`, `"[N]"`, or `""` for a single value. */
33
+ declare function multiplicitySuffix(multiplicity: StuffMultiplicity | undefined): string;
29
34
  interface GraphSpecNodeIoItem {
30
35
  name: string;
31
36
  digest?: string;
37
+ /** The bare concept code or ref, never carrying a multiplicity marker — that is `multiplicity`. */
32
38
  concept?: string;
39
+ /**
40
+ * How many values the stuff holds (see `StuffMultiplicity`). Emitted only on a
41
+ * plural stuff; absent means single. The static builder writes it, and a
42
+ * runtime graph carries it once its producer emits it, so a renderer must read
43
+ * absence as single rather than as unknown.
44
+ */
45
+ multiplicity?: StuffMultiplicity;
33
46
  content_type?: string;
34
47
  preview?: string;
35
48
  size?: number;
@@ -179,12 +192,17 @@ interface GraphSpecEdge {
179
192
  target_stuff_digest?: string;
180
193
  meta?: Record<string, unknown>;
181
194
  }
195
+ /**
196
+ * A concept as the registry serializes it. A field that can be `null` is also
197
+ * declared optional, because a host that drops `null` values delivers it absent:
198
+ * test it with `!= null`, optional chaining or truthiness.
199
+ */
182
200
  interface ConceptInfo {
183
201
  code: string;
184
202
  domain_code: string;
185
203
  description: string;
186
204
  structure_class_name: string;
187
- refines: string | null;
205
+ refines?: string | null;
188
206
  json_schema?: Record<string, unknown>;
189
207
  }
190
208
  /**
@@ -197,20 +215,20 @@ interface ConceptInfo {
197
215
  type PresenceMarker = "plain" | "optional" | "force";
198
216
  interface StuffSpecInfo {
199
217
  concept: ConceptInfo;
200
- multiplicity: number | boolean | null;
218
+ multiplicity?: StuffMultiplicity;
201
219
  presence?: PresenceMarker;
202
220
  }
203
221
  interface TemplateBlueprint {
204
222
  template: string;
205
- templating_style: string | null;
223
+ templating_style?: string | null;
206
224
  category: string;
207
- extra_context: Record<string, unknown> | null;
225
+ extra_context?: Record<string, unknown> | null;
208
226
  }
209
227
  interface SubPipeSpec {
210
228
  pipe_code: string;
211
- output_name: string | null;
212
- output_multiplicity: string | number | boolean | null;
213
- batch_params: {
229
+ output_name?: string | null;
230
+ output_multiplicity?: string | number | boolean | null;
231
+ batch_params?: {
214
232
  input_list_stuff_name: string;
215
233
  input_item_stuff_name: string;
216
234
  } | null;
@@ -227,33 +245,33 @@ interface PipeBlueprintBase {
227
245
  interface PipeLLMBlueprint extends PipeBlueprintBase {
228
246
  type: "PipeLLM";
229
247
  llm_prompt_spec: {
230
- system_prompt_blueprint: TemplateBlueprint | null;
231
- prompt_blueprint: TemplateBlueprint | null;
232
- user_image_references: unknown[] | null;
233
- user_document_references: unknown[] | null;
234
- system_image_references: unknown[] | null;
235
- system_document_references: unknown[] | null;
248
+ system_prompt_blueprint?: TemplateBlueprint | null;
249
+ prompt_blueprint?: TemplateBlueprint | null;
250
+ user_image_references?: unknown[] | null;
251
+ user_document_references?: unknown[] | null;
252
+ system_image_references?: unknown[] | null;
253
+ system_document_references?: unknown[] | null;
236
254
  };
237
- llm_choices: {
238
- for_text: string | null;
239
- for_object: string | null;
255
+ llm_choices?: {
256
+ for_text?: string | null;
257
+ for_object?: string | null;
240
258
  } | null;
241
- structuring_method: string | null;
242
- output_multiplicity: string | number | null;
259
+ structuring_method?: string | null;
260
+ output_multiplicity?: string | number | null;
243
261
  }
244
262
  interface PipeImgGenBlueprint extends PipeBlueprintBase {
245
263
  type: "PipeImgGen";
246
264
  img_gen_prompt_blueprint: {
247
- prompt_blueprint: TemplateBlueprint | null;
248
- negative_prompt_blueprint: TemplateBlueprint | null;
249
- image_references: unknown[] | null;
265
+ prompt_blueprint?: TemplateBlueprint | null;
266
+ negative_prompt_blueprint?: TemplateBlueprint | null;
267
+ image_references?: unknown[] | null;
250
268
  };
251
- img_gen_choice: string | null;
252
- aspect_ratio: string | null;
253
- is_raw: boolean | null;
254
- seed: number | string | null;
255
- background: string | null;
256
- output_format: string | null;
269
+ img_gen_choice?: string | null;
270
+ aspect_ratio?: string | null;
271
+ is_raw?: boolean | null;
272
+ seed?: number | string | null;
273
+ background?: string | null;
274
+ output_format?: string | null;
257
275
  output_multiplicity: number;
258
276
  }
259
277
  /**
@@ -300,35 +318,35 @@ interface FieldResolution {
300
318
  interface PipeComposeBlueprint extends PipeBlueprintBase {
301
319
  type: "PipeCompose";
302
320
  /** Legacy monolithic template. Null when construct_blueprint is used instead. */
303
- template: string | null;
304
- templating_style: string | null;
321
+ template?: string | null;
322
+ templating_style?: string | null;
305
323
  category: string;
306
- extra_context: Record<string, unknown> | null;
324
+ extra_context?: Record<string, unknown> | null;
307
325
  /** Field-level construct form (e.g. `[pipe.X.construct]` in MTHDS). */
308
- construct_blueprint: PipeComposeConstructBlueprint | null;
326
+ construct_blueprint?: PipeComposeConstructBlueprint | null;
309
327
  }
310
328
  interface PipeExtractBlueprint extends PipeBlueprintBase {
311
329
  type: "PipeExtract";
312
- extract_choice: string | null;
330
+ extract_choice?: string | null;
313
331
  should_caption_images: boolean;
314
- max_page_images: number | null;
332
+ max_page_images?: number | null;
315
333
  should_include_page_views: boolean;
316
- page_views_dpi: number | null;
317
- render_js: boolean | null;
318
- include_raw_html: boolean | null;
319
- image_stuff_name: string | null;
320
- document_stuff_name: string | null;
334
+ page_views_dpi?: number | null;
335
+ render_js?: boolean | null;
336
+ include_raw_html?: boolean | null;
337
+ image_stuff_name?: string | null;
338
+ document_stuff_name?: string | null;
321
339
  }
322
340
  interface PipeSearchBlueprint extends PipeBlueprintBase {
323
341
  type: "PipeSearch";
324
- search_choice: string | null;
342
+ search_choice?: string | null;
325
343
  prompt_blueprint: TemplateBlueprint;
326
- include_images_override: boolean | null;
327
- max_results_override: number | null;
328
- from_date: string | null;
329
- to_date: string | null;
330
- include_domains: string[] | null;
331
- exclude_domains: string[] | null;
344
+ include_images_override?: boolean | null;
345
+ max_results_override?: number | null;
346
+ from_date?: string | null;
347
+ to_date?: string | null;
348
+ include_domains?: string[] | null;
349
+ exclude_domains?: string[] | null;
332
350
  is_structured_output: boolean;
333
351
  }
334
352
  interface PipeFuncBlueprint extends PipeBlueprintBase {
@@ -346,11 +364,11 @@ interface PipeStructureBlueprint extends PipeBlueprintBase {
346
364
  * setting object, or null (→ resolved from the model deck's `for_object`
347
365
  * default at run time).
348
366
  */
349
- llm_choice: string | Record<string, unknown> | null;
367
+ llm_choice?: string | Record<string, unknown> | null;
350
368
  /** The single Text-compatible input variable the structuring reads. */
351
369
  text_input_name: string;
352
370
  /** `true` → let the LLM decide the count, a number → fixed count, null → single object. */
353
- output_multiplicity: boolean | number | null;
371
+ output_multiplicity?: boolean | number | null;
354
372
  }
355
373
  /**
356
374
  * A contract-only pipe: declares inputs + output but has no implementation.
@@ -362,9 +380,10 @@ interface PipeSignatureBlueprint extends Omit<PipeBlueprintBase, "pipe_category"
362
380
  /**
363
381
  * Signatures sit outside the executable taxonomy, so pipelex serializes
364
382
  * `pipe_category: null` (present, not omitted) — unlike operator/controller
365
- * blueprints which carry "PipeOperator" / "PipeController".
383
+ * blueprints which carry "PipeOperator" / "PipeController". Optional all the
384
+ * same, since a host that drops `null` values delivers it absent.
366
385
  */
367
- pipe_category: null;
386
+ pipe_category?: null;
368
387
  /** Intended downstream pipe type once implemented — an optional hint. */
369
388
  signature_for?: PipeType | null;
370
389
  }
@@ -389,7 +408,7 @@ interface PipeConditionBlueprint extends PipeBlueprintBase {
389
408
  expression: string;
390
409
  outcome_map: Record<string, string>;
391
410
  default_outcome: string;
392
- add_alias_from_expression_to: string | null;
411
+ add_alias_from_expression_to?: string | null;
393
412
  }
394
413
  interface PipeBatchBlueprint extends PipeBlueprintBase {
395
414
  type: "PipeBatch";
@@ -399,6 +418,11 @@ interface PipeBatchBlueprint extends PipeBlueprintBase {
399
418
  input_item_stuff_name: string;
400
419
  };
401
420
  }
421
+ /**
422
+ * A pipe as the registry serializes it, discriminated on `type`. A field that can
423
+ * be `null` is also declared optional, because a host that drops `null` values
424
+ * delivers it absent: test it with `!= null`, optional chaining or truthiness.
425
+ */
402
426
  type PipeBlueprintUnion = PipeLLMBlueprint | PipeImgGenBlueprint | PipeComposeBlueprint | PipeExtractBlueprint | PipeSearchBlueprint | PipeFuncBlueprint | PipeStructureBlueprint | PipeSignatureBlueprint | PipeSequenceBlueprint | PipeParallelBlueprint | PipeConditionBlueprint | PipeBatchBlueprint;
403
427
  interface GraphSpec {
404
428
  graph_id?: string;
@@ -418,12 +442,15 @@ interface GraphSpec {
418
442
  declare function graphSpecMode(spec: Pick<GraphSpec, "meta"> | null | undefined): GraphSpecMode | undefined;
419
443
  declare function isStaticGraphSpec(spec: Pick<GraphSpec, "meta"> | null | undefined): boolean;
420
444
  declare function isDryGraphSpec(spec: Pick<GraphSpec, "meta"> | null | undefined): boolean;
445
+ /** One stuff as the dataflow analysis registers it, from the first io item naming its digest. */
446
+ interface StuffRegistryEntry {
447
+ name: string;
448
+ concept?: string;
449
+ multiplicity?: StuffMultiplicity;
450
+ contentType?: string;
451
+ }
421
452
  interface DataflowAnalysis {
422
- readonly stuffRegistry: Readonly<Record<string, {
423
- name: string;
424
- concept?: string;
425
- contentType?: string;
426
- }>>;
453
+ readonly stuffRegistry: Readonly<Record<string, StuffRegistryEntry>>;
427
454
  readonly stuffProducers: Readonly<Record<string, string>>;
428
455
  readonly stuffConsumers: Readonly<Record<string, readonly string[]>>;
429
456
  readonly controllerNodeIds: ReadonlySet<string>;
@@ -524,12 +551,16 @@ declare function toolbarSide(position: ToolbarPosition): ToolbarSide;
524
551
  * host's validation lifecycle, not the static analyzer's: `validating` while a
525
552
  * verdict is being produced, `valid`/`invalid` once one exists, and `error`
526
553
  * when no verdict could be produced at all (validator unavailable, timeout…).
554
+ * `unvalidated` is for a host with no validator at all, such as a page drawing
555
+ * a method from its source: no verdict exists or is coming, and the issues are
556
+ * what reading the source turned up.
527
557
  */
528
558
  declare const VALIDATION_STATE: {
529
559
  readonly VALIDATING: "validating";
530
560
  readonly VALID: "valid";
531
561
  readonly INVALID: "invalid";
532
562
  readonly ERROR: "error";
563
+ readonly UNVALIDATED: "unvalidated";
533
564
  };
534
565
  type ValidationState = (typeof VALIDATION_STATE)[keyof typeof VALIDATION_STATE];
535
566
  /**
@@ -717,4 +748,4 @@ declare const ARROW_CLOSED_MARKER = "arrowclosed";
717
748
  declare function nodeWidth(n: GraphNode): number;
718
749
  declare function nodeHeight(n: GraphNode): number;
719
750
 
720
- export { NODE_TYPE_PIPE_CARD as $, ARROW_CLOSED_MARKER as A, type FieldResolution as B, type ConceptInfo as C, type DataflowAnalysis as D, EDGE_TYPE as E, type FoldMode as F, type GraphTheme as G, GRAPH_DIRECTION as H, GRAPH_SPEC_MODE as I, GRAPH_THEME as J, GRAPH_THEME_MODE as K, type LabelDescriptor as L, type GraphSpecEdge as M, type NodeValidationSummary as N, type GraphSpecEdgeKind as O, type PipeBlueprintUnion as P, type GraphSpecMeta as Q, type GraphSpecModelUsage as R, type GraphSpecNodeError as S, type ToolbarPosition as T, type GraphSpecNodeIo as U, type ValidationIssue as V, type GraphSpecNodeTiming as W, type GraphSpecNodeUsage as X, type GraphSpecUsage as Y, KNOWN_PIPE_TYPES as Z, NODE_TYPE_CONTROLLER as _, type PresenceMarker as a, NODE_TYPE_STUFF as a0, type NodeKind as a1, type PipeBatchBlueprint as a2, type PipeBlueprintBase as a3, type PipeComposeBlueprint as a4, type PipeComposeConstructBlueprint as a5, type PipeComposeConstructField as a6, type PipeConditionBlueprint as a7, type PipeExtractBlueprint as a8, type PipeFuncBlueprint as a9, type PipeImgGenBlueprint as aa, type PipeLLMBlueprint as ab, type PipeParallelBlueprint as ac, type PipeSearchBlueprint as ad, type PipeSequenceBlueprint as ae, type PipeSignatureBlueprint as af, type PipeStructureBlueprint as ag, STUFF_ID_PREFIX as ah, type StuffRole as ai, type StuffSpecInfo as aj, type SubPipeSpec as ak, TOOLBAR_POSITION as al, type TemplateBlueprint as am, type ToolbarOrientation as an, type ToolbarSide as ao, VALIDATION_STATE as ap, graphSpecMode as aq, isDryGraphSpec as ar, isStaticGraphSpec as as, isStuffNodeId as at, nodeHeight as au, nodeWidth as av, stuffDigestFromId as aw, stuffNodeId as ax, toolbarOrientation as ay, toolbarSide as az, type GraphSpec as b, type GraphNodeData as c, type GraphEdge as d, type GraphNode as e, type GraphConfig as f, type GraphDirection as g, type GraphThemeMode as h, type PipeStatus as i, type GraphSpecNodeIoItem as j, type ValidationState as k, type PipeControllerType as l, type FoldToggleOptions as m, type PipeType as n, type GraphSpecMode as o, type GraphSpecNode as p, type PipeOperatorType as q, type PipeCallNode as r, type GraphData as s, type PipeCardPayload as t, type LayoutConfig as u, CONTROLLER_PADDING_BOTTOM as v, CONTROLLER_PADDING_TOP as w, CONTROLLER_PADDING_X as x, type EdgeType as y, FOLD_MODE as z };
751
+ export { NODE_TYPE_PIPE_CARD as $, ARROW_CLOSED_MARKER as A, type FieldResolution as B, type ConceptInfo as C, type DataflowAnalysis as D, EDGE_TYPE as E, type FoldMode as F, type GraphTheme as G, GRAPH_DIRECTION as H, GRAPH_SPEC_MODE as I, GRAPH_THEME as J, GRAPH_THEME_MODE as K, type LabelDescriptor as L, type GraphSpecEdge as M, type NodeValidationSummary as N, type GraphSpecEdgeKind as O, type PipeBlueprintUnion as P, type GraphSpecMeta as Q, type GraphSpecModelUsage as R, type GraphSpecNodeError as S, type ToolbarPosition as T, type GraphSpecNodeIo as U, type ValidationIssue as V, type GraphSpecNodeTiming as W, type GraphSpecNodeUsage as X, type GraphSpecUsage as Y, KNOWN_PIPE_TYPES as Z, NODE_TYPE_CONTROLLER as _, type PresenceMarker as a, NODE_TYPE_STUFF as a0, type NodeKind as a1, type PipeBatchBlueprint as a2, type PipeBlueprintBase as a3, type PipeComposeBlueprint as a4, type PipeComposeConstructBlueprint as a5, type PipeComposeConstructField as a6, type PipeConditionBlueprint as a7, type PipeExtractBlueprint as a8, type PipeFuncBlueprint as a9, stuffDigestFromId as aA, stuffNodeId as aB, toolbarOrientation as aC, toolbarSide as aD, type PipeImgGenBlueprint as aa, type PipeLLMBlueprint as ab, type PipeParallelBlueprint as ac, type PipeSearchBlueprint as ad, type PipeSequenceBlueprint as ae, type PipeSignatureBlueprint as af, type PipeStructureBlueprint as ag, STUFF_ID_PREFIX as ah, type StuffMultiplicity as ai, type StuffRegistryEntry as aj, type StuffRole as ak, type StuffSpecInfo as al, type SubPipeSpec as am, TOOLBAR_POSITION as an, type TemplateBlueprint as ao, type ToolbarOrientation as ap, type ToolbarSide as aq, VALIDATION_STATE as ar, graphSpecMode as as, isDryGraphSpec as at, isPluralMultiplicity as au, isStaticGraphSpec as av, isStuffNodeId as aw, multiplicitySuffix as ax, nodeHeight as ay, nodeWidth as az, type GraphSpec as b, type GraphNodeData as c, type GraphEdge as d, type GraphNode as e, type GraphConfig as f, type GraphDirection as g, type GraphThemeMode as h, type PipeStatus as i, type GraphSpecNodeIoItem as j, type ValidationState as k, type PipeControllerType as l, type FoldToggleOptions as m, type PipeType as n, type GraphSpecMode as o, type GraphSpecNode as p, type PipeOperatorType as q, type PipeCallNode as r, type GraphData as s, type PipeCardPayload as t, type LayoutConfig as u, CONTROLLER_PADDING_BOTTOM as v, CONTROLLER_PADDING_TOP as w, CONTROLLER_PADDING_X as x, type EdgeType as y, FOLD_MODE as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipelex/mthds-ui",
3
- "version": "0.24.0",
3
+ "version": "0.26.0",
4
4
  "description": "Shared graph rendering logic for MTHDS method visualization",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -51,7 +51,9 @@
51
51
  "./static-graph": {
52
52
  "import": "./dist/static-graph/index.js",
53
53
  "types": "./dist/static-graph/index.d.ts"
54
- }
54
+ },
55
+ "./tailwind.css": "./dist/styles/tailwind.css",
56
+ "./form-kernel.css": "./dist/styles/form-kernel.css"
55
57
  },
56
58
  "files": [
57
59
  "dist"
@@ -76,14 +78,14 @@
76
78
  "build-storybook": "storybook build"
77
79
  },
78
80
  "dependencies": {
79
- "@pipelex/mthds-form": "^0.8.0",
81
+ "@pipelex/mthds-form": "^0.11.0",
80
82
  "@xyflow/react": "^12",
81
83
  "elkjs": "^0.11.1",
82
84
  "smol-toml": "^1.7.0"
83
85
  },
84
86
  "peerDependencies": {
85
- "react": "^19",
86
- "react-dom": "^19",
87
+ "react": "^19.2.3",
88
+ "react-dom": "^19.2.3",
87
89
  "shiki": "^3.22.0"
88
90
  },
89
91
  "peerDependenciesMeta": {