@elaraai/e3-ui 1.0.103 → 1.0.104

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 (287) hide show
  1. package/dist/src/allocation/functions.d.ts +2 -1
  2. package/dist/src/allocation/functions.d.ts.map +1 -1
  3. package/dist/src/allocation/functions.js +3 -2
  4. package/dist/src/allocation/functions.js.map +1 -1
  5. package/dist/src/allocation/index.d.ts +120 -1
  6. package/dist/src/allocation/index.d.ts.map +1 -1
  7. package/dist/src/allocation/index.js +24 -4
  8. package/dist/src/allocation/index.js.map +1 -1
  9. package/dist/src/bind/data-indexed.d.ts +25 -4
  10. package/dist/src/bind/data-indexed.d.ts.map +1 -1
  11. package/dist/src/bind/data-indexed.js +58 -7
  12. package/dist/src/bind/data-indexed.js.map +1 -1
  13. package/dist/src/bind/data.d.ts +12 -14
  14. package/dist/src/bind/data.d.ts.map +1 -1
  15. package/dist/src/bind/data.js +11 -11
  16. package/dist/src/bind/data.js.map +1 -1
  17. package/dist/src/bind/func.d.ts +7 -2
  18. package/dist/src/bind/func.d.ts.map +1 -1
  19. package/dist/src/bind/func.js +10 -3
  20. package/dist/src/bind/func.js.map +1 -1
  21. package/dist/src/calendar/index.d.ts +148 -1
  22. package/dist/src/calendar/index.d.ts.map +1 -1
  23. package/dist/src/calendar/index.js +55 -5
  24. package/dist/src/calendar/index.js.map +1 -1
  25. package/dist/src/flowchart/canvas.d.ts +32 -14
  26. package/dist/src/flowchart/canvas.d.ts.map +1 -1
  27. package/dist/src/flowchart/canvas.js +21 -6
  28. package/dist/src/flowchart/canvas.js.map +1 -1
  29. package/dist/src/flowchart/details.d.ts +469 -0
  30. package/dist/src/flowchart/details.d.ts.map +1 -0
  31. package/dist/src/flowchart/details.js +1035 -0
  32. package/dist/src/flowchart/details.js.map +1 -0
  33. package/dist/src/flowchart/flowchart.d.ts +16 -72
  34. package/dist/src/flowchart/flowchart.d.ts.map +1 -1
  35. package/dist/src/flowchart/flowchart.js +10 -1
  36. package/dist/src/flowchart/flowchart.js.map +1 -1
  37. package/dist/src/flowchart/index.d.ts +282 -251
  38. package/dist/src/flowchart/index.d.ts.map +1 -1
  39. package/dist/src/flowchart/index.js +234 -220
  40. package/dist/src/flowchart/index.js.map +1 -1
  41. package/dist/src/flowchart/kinds.d.ts +438 -0
  42. package/dist/src/flowchart/kinds.d.ts.map +1 -0
  43. package/dist/src/flowchart/kinds.js +799 -0
  44. package/dist/src/flowchart/kinds.js.map +1 -0
  45. package/dist/src/flowchart/library.d.ts +154 -739
  46. package/dist/src/flowchart/library.d.ts.map +1 -1
  47. package/dist/src/flowchart/library.js +191 -673
  48. package/dist/src/flowchart/library.js.map +1 -1
  49. package/dist/src/flowchart/payload.d.ts +3652 -7843
  50. package/dist/src/flowchart/payload.d.ts.map +1 -1
  51. package/dist/src/flowchart/payload.js +331 -469
  52. package/dist/src/flowchart/payload.js.map +1 -1
  53. package/dist/src/flowchart/templates.d.ts +657 -0
  54. package/dist/src/flowchart/templates.d.ts.map +1 -0
  55. package/dist/src/flowchart/templates.js +658 -0
  56. package/dist/src/flowchart/templates.js.map +1 -0
  57. package/dist/src/flowchart/types.d.ts +2258 -214
  58. package/dist/src/flowchart/types.d.ts.map +1 -1
  59. package/dist/src/flowchart/types.js +374 -124
  60. package/dist/src/flowchart/types.js.map +1 -1
  61. package/dist/src/index.d.ts +13 -15
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js +24 -29
  64. package/dist/src/index.js.map +1 -1
  65. package/dist/src/internal.d.ts +5 -7
  66. package/dist/src/internal.d.ts.map +1 -1
  67. package/dist/src/internal.js +12 -19
  68. package/dist/src/internal.js.map +1 -1
  69. package/dist/src/ontology/index.d.ts +44 -15
  70. package/dist/src/ontology/index.d.ts.map +1 -1
  71. package/dist/src/ontology/index.js +19 -11
  72. package/dist/src/ontology/index.js.map +1 -1
  73. package/dist/src/plan/event-rows.d.ts +2 -1
  74. package/dist/src/plan/event-rows.d.ts.map +1 -1
  75. package/dist/src/plan/event-rows.js +6 -4
  76. package/dist/src/plan/event-rows.js.map +1 -1
  77. package/dist/src/plan/ir.d.ts +1 -0
  78. package/dist/src/plan/ir.d.ts.map +1 -1
  79. package/dist/src/plan/plan.d.ts +145 -1
  80. package/dist/src/plan/plan.d.ts.map +1 -1
  81. package/dist/src/plan/plan.js +67 -3
  82. package/dist/src/plan/plan.js.map +1 -1
  83. package/dist/src/plan/types.d.ts +1 -0
  84. package/dist/src/plan/types.d.ts.map +1 -1
  85. package/dist/src/query/builder.d.ts +362 -315
  86. package/dist/src/query/builder.d.ts.map +1 -1
  87. package/dist/src/query/builder.js +12 -1
  88. package/dist/src/query/builder.js.map +1 -1
  89. package/dist/src/query/index.d.ts +5 -1
  90. package/dist/src/query/index.d.ts.map +1 -1
  91. package/dist/src/query/index.js +3 -1
  92. package/dist/src/query/index.js.map +1 -1
  93. package/dist/src/roster/fit.d.ts +5 -2
  94. package/dist/src/roster/fit.d.ts.map +1 -1
  95. package/dist/src/roster/fit.js +5 -3
  96. package/dist/src/roster/fit.js.map +1 -1
  97. package/dist/src/roster/index.d.ts +103 -2
  98. package/dist/src/roster/index.d.ts.map +1 -1
  99. package/dist/src/roster/index.js +45 -6
  100. package/dist/src/roster/index.js.map +1 -1
  101. package/dist/src/runtime/index.d.ts +1 -3
  102. package/dist/src/runtime/index.d.ts.map +1 -1
  103. package/dist/src/runtime/index.js +1 -3
  104. package/dist/src/runtime/index.js.map +1 -1
  105. package/dist/src/schedule/record-window.d.ts +1 -0
  106. package/dist/src/schedule/record-window.d.ts.map +1 -1
  107. package/dist/src/schematic/index.d.ts +1 -1
  108. package/dist/src/schematic/index.d.ts.map +1 -1
  109. package/dist/src/schematic/index.js +1 -1
  110. package/dist/src/schematic/index.js.map +1 -1
  111. package/dist/src/schematic/kinds.d.ts +4 -24
  112. package/dist/src/schematic/kinds.d.ts.map +1 -1
  113. package/dist/src/schematic/kinds.js +8 -212
  114. package/dist/src/schematic/kinds.js.map +1 -1
  115. package/dist/src/schematic/payload.d.ts +140 -1
  116. package/dist/src/schematic/payload.d.ts.map +1 -1
  117. package/dist/src/schematic/payload.js +38 -1
  118. package/dist/src/schematic/payload.js.map +1 -1
  119. package/dist/src/schematic/types.d.ts.map +1 -1
  120. package/dist/src/schematic/types.js +4 -36
  121. package/dist/src/schematic/types.js.map +1 -1
  122. package/dist/src/schematic/window.d.ts +9 -42
  123. package/dist/src/schematic/window.d.ts.map +1 -1
  124. package/dist/src/schematic/window.js +10 -115
  125. package/dist/src/schematic/window.js.map +1 -1
  126. package/dist/src/sheet/actions.d.ts +388 -0
  127. package/dist/src/sheet/actions.d.ts.map +1 -0
  128. package/dist/src/sheet/actions.js +594 -0
  129. package/dist/src/sheet/actions.js.map +1 -0
  130. package/dist/src/sheet/bridge.d.ts +12 -1
  131. package/dist/src/sheet/bridge.d.ts.map +1 -1
  132. package/dist/src/sheet/bridge.js +30 -6
  133. package/dist/src/sheet/bridge.js.map +1 -1
  134. package/dist/src/sheet/columns.d.ts +5 -2
  135. package/dist/src/sheet/columns.d.ts.map +1 -1
  136. package/dist/src/sheet/columns.js.map +1 -1
  137. package/dist/src/sheet/draft-bridge.d.ts +9 -4
  138. package/dist/src/sheet/draft-bridge.d.ts.map +1 -1
  139. package/dist/src/sheet/draft-bridge.js +22 -7
  140. package/dist/src/sheet/draft-bridge.js.map +1 -1
  141. package/dist/src/sheet/fields.d.ts +13 -0
  142. package/dist/src/sheet/fields.d.ts.map +1 -1
  143. package/dist/src/sheet/fields.js +3 -0
  144. package/dist/src/sheet/fields.js.map +1 -1
  145. package/dist/src/sheet/index.d.ts +32 -2
  146. package/dist/src/sheet/index.d.ts.map +1 -1
  147. package/dist/src/sheet/index.js +18 -3
  148. package/dist/src/sheet/index.js.map +1 -1
  149. package/dist/src/sheet/library.d.ts +8 -0
  150. package/dist/src/sheet/library.d.ts.map +1 -1
  151. package/dist/src/sheet/root.d.ts +23 -1
  152. package/dist/src/sheet/root.d.ts.map +1 -1
  153. package/dist/src/sheet/root.js +40 -5
  154. package/dist/src/sheet/root.js.map +1 -1
  155. package/dist/src/sheet/sheet.d.ts +7843 -4132
  156. package/dist/src/sheet/sheet.d.ts.map +1 -1
  157. package/dist/src/sheet/sheet.js +41 -2
  158. package/dist/src/sheet/sheet.js.map +1 -1
  159. package/dist/src/sheet/templates.d.ts +4 -0
  160. package/dist/src/sheet/templates.d.ts.map +1 -1
  161. package/dist/src/sheet/types.d.ts +12449 -5268
  162. package/dist/src/sheet/types.d.ts.map +1 -1
  163. package/dist/src/sheet/types.js +114 -2
  164. package/dist/src/sheet/types.js.map +1 -1
  165. package/dist/src/utils/derive.d.ts +1 -1
  166. package/dist/src/utils/derive.js +1 -1
  167. package/dist/src/utils/record-kind.d.ts +625 -0
  168. package/dist/src/utils/record-kind.d.ts.map +1 -0
  169. package/dist/src/utils/record-kind.js +450 -0
  170. package/dist/src/utils/record-kind.js.map +1 -0
  171. package/dist/src/utils/views.d.ts +55 -0
  172. package/dist/src/utils/views.d.ts.map +1 -0
  173. package/dist/src/utils/views.js +72 -0
  174. package/dist/src/utils/views.js.map +1 -0
  175. package/dist/src/utils/vocabulary.d.ts +48 -0
  176. package/dist/src/utils/vocabulary.d.ts.map +1 -0
  177. package/dist/src/utils/vocabulary.js +47 -0
  178. package/dist/src/utils/vocabulary.js.map +1 -0
  179. package/dist/test/allocation/allocation.examples.d.ts +2 -0
  180. package/dist/test/allocation/allocation.examples.d.ts.map +1 -1
  181. package/dist/test/allocation/allocation.examples.js +81 -2
  182. package/dist/test/allocation/allocation.examples.js.map +1 -1
  183. package/dist/test/bind/func/func.examples.d.ts +19 -1
  184. package/dist/test/bind/func/func.examples.d.ts.map +1 -1
  185. package/dist/test/bind/func/func.examples.js +36 -1
  186. package/dist/test/bind/func/func.examples.js.map +1 -1
  187. package/dist/test/calendar/calendar.examples.d.ts +2 -0
  188. package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
  189. package/dist/test/calendar/calendar.examples.js +80 -2
  190. package/dist/test/calendar/calendar.examples.js.map +1 -1
  191. package/dist/test/decision/queue.examples.d.ts +1 -0
  192. package/dist/test/decision/queue.examples.d.ts.map +1 -1
  193. package/dist/test/decision/queue.examples.js +12 -0
  194. package/dist/test/decision/queue.examples.js.map +1 -1
  195. package/dist/test/examples-package.d.ts.map +1 -1
  196. package/dist/test/examples-package.js +5 -4
  197. package/dist/test/examples-package.js.map +1 -1
  198. package/dist/test/flowchart/flowchart.examples.d.ts +1250 -4605
  199. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
  200. package/dist/test/flowchart/flowchart.examples.js +861 -512
  201. package/dist/test/flowchart/flowchart.examples.js.map +1 -1
  202. package/dist/test/ontology/ontology.examples.d.ts +2 -3
  203. package/dist/test/ontology/ontology.examples.d.ts.map +1 -1
  204. package/dist/test/ontology/ontology.examples.js +32 -21
  205. package/dist/test/ontology/ontology.examples.js.map +1 -1
  206. package/dist/test/plan/plan-events.examples.d.ts +1 -0
  207. package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
  208. package/dist/test/plan/plan-events.examples.js +44 -0
  209. package/dist/test/plan/plan-events.examples.js.map +1 -1
  210. package/dist/test/plan/plan-nested.examples.d.ts +2 -2
  211. package/dist/test/plan/plan-nested.examples.js +5 -5
  212. package/dist/test/plan/plan-nested.examples.js.map +1 -1
  213. package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
  214. package/dist/test/plan/plan-records.examples.js +1 -1
  215. package/dist/test/plan/plan-records.examples.js.map +1 -1
  216. package/dist/test/query/query.examples.d.ts +2 -0
  217. package/dist/test/query/query.examples.d.ts.map +1 -1
  218. package/dist/test/query/query.examples.js +37 -1
  219. package/dist/test/query/query.examples.js.map +1 -1
  220. package/dist/test/roster/roster.examples.d.ts +2 -0
  221. package/dist/test/roster/roster.examples.d.ts.map +1 -1
  222. package/dist/test/roster/roster.examples.js +76 -15
  223. package/dist/test/roster/roster.examples.js.map +1 -1
  224. package/dist/test/schematic/schematic-records.examples.d.ts.map +1 -1
  225. package/dist/test/schematic/schematic-records.examples.js +6 -4
  226. package/dist/test/schematic/schematic-records.examples.js.map +1 -1
  227. package/dist/test/schematic/schematic.examples.d.ts +1 -0
  228. package/dist/test/schematic/schematic.examples.d.ts.map +1 -1
  229. package/dist/test/schematic/schematic.examples.js +144 -0
  230. package/dist/test/schematic/schematic.examples.js.map +1 -1
  231. package/dist/test/sheet/sheet-actions.examples.d.ts +1264 -0
  232. package/dist/test/sheet/sheet-actions.examples.d.ts.map +1 -0
  233. package/dist/test/sheet/sheet-actions.examples.js +394 -0
  234. package/dist/test/sheet/sheet-actions.examples.js.map +1 -0
  235. package/dist/test/sheet/sheet.examples.d.ts +1 -0
  236. package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
  237. package/dist/test/sheet/sheet.examples.js +77 -0
  238. package/dist/test/sheet/sheet.examples.js.map +1 -1
  239. package/dist/test/studio/studio.examples.d.ts +1 -0
  240. package/dist/test/studio/studio.examples.d.ts.map +1 -1
  241. package/dist/test/studio/studio.examples.js +18 -8
  242. package/dist/test/studio/studio.examples.js.map +1 -1
  243. package/package.json +12 -12
  244. package/dist/src/diff/index.d.ts +0 -407
  245. package/dist/src/diff/index.d.ts.map +0 -1
  246. package/dist/src/diff/index.js +0 -203
  247. package/dist/src/diff/index.js.map +0 -1
  248. package/dist/src/experiment/index.d.ts +0 -1033
  249. package/dist/src/experiment/index.d.ts.map +0 -1
  250. package/dist/src/experiment/index.js +0 -197
  251. package/dist/src/experiment/index.js.map +0 -1
  252. package/dist/src/experiment/types.d.ts +0 -1093
  253. package/dist/src/experiment/types.d.ts.map +0 -1
  254. package/dist/src/experiment/types.js +0 -423
  255. package/dist/src/experiment/types.js.map +0 -1
  256. package/dist/src/flowchart/over.d.ts +0 -227
  257. package/dist/src/flowchart/over.d.ts.map +0 -1
  258. package/dist/src/flowchart/over.js +0 -213
  259. package/dist/src/flowchart/over.js.map +0 -1
  260. package/dist/src/flowchart/patch.d.ts +0 -64
  261. package/dist/src/flowchart/patch.d.ts.map +0 -1
  262. package/dist/src/flowchart/patch.js +0 -67
  263. package/dist/src/flowchart/patch.js.map +0 -1
  264. package/dist/src/flowchart/values.d.ts +0 -271
  265. package/dist/src/flowchart/values.d.ts.map +0 -1
  266. package/dist/src/flowchart/values.js +0 -220
  267. package/dist/src/flowchart/values.js.map +0 -1
  268. package/dist/src/flowchart/window.d.ts +0 -306
  269. package/dist/src/flowchart/window.d.ts.map +0 -1
  270. package/dist/src/flowchart/window.js +0 -63
  271. package/dist/src/flowchart/window.js.map +0 -1
  272. package/dist/src/runtime/diff.d.ts +0 -36
  273. package/dist/src/runtime/diff.d.ts.map +0 -1
  274. package/dist/src/runtime/diff.js +0 -34
  275. package/dist/src/runtime/diff.js.map +0 -1
  276. package/dist/src/runtime/experiment.d.ts +0 -48
  277. package/dist/src/runtime/experiment.d.ts.map +0 -1
  278. package/dist/src/runtime/experiment.js +0 -10
  279. package/dist/src/runtime/experiment.js.map +0 -1
  280. package/dist/test/diff/diff.examples.d.ts +0 -313
  281. package/dist/test/diff/diff.examples.d.ts.map +0 -1
  282. package/dist/test/diff/diff.examples.js +0 -452
  283. package/dist/test/diff/diff.examples.js.map +0 -1
  284. package/dist/test/experiment/experiment.examples.d.ts +0 -1512
  285. package/dist/test/experiment/experiment.examples.d.ts.map +0 -1
  286. package/dist/test/experiment/experiment.examples.js +0 -609
  287. package/dist/test/experiment/experiment.examples.js.map +0 -1
@@ -1,271 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Elara AI Pty Ltd
3
- * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
- */
5
- /**
6
- * `Flowchart.value` and `Flowchart.values` (#1244, `Flowchart Builder Spec.md`
7
- * §4.3, §4.4): the flows a solution ships, written as literals — flows by
8
- * name, a record's value, or one flow, the value of the host's dataset — each
9
- * filled where the literal leaves a field out and checked when the package
10
- * builds, as `Query.value` checks the saved queries a solution ships.
11
- *
12
- * @packageDocumentation
13
- */
14
- import { type ValueTypeOf } from "@elaraai/east";
15
- import { FlowchartFlowType, type FlowchartFlowsType } from "./types.js";
16
- /** String shorthand for a transition's kind (`Flowchart.Types.Kind`): `"planned"` draws solid, `"observed"` dashed. */
17
- export type FlowchartLinkKindLiteral = "planned" | "observed";
18
- /**
19
- * One lane of a flow, as a literal writes it.
20
- *
21
- * @property key - Its identity, which states name
22
- * @property label - Its band's header; left out, the key, uppercased
23
- */
24
- export interface FlowchartLaneInput {
25
- /** Its identity, which states name. */
26
- readonly key: string;
27
- /** Its band's header; left out, the key, uppercased. */
28
- readonly label?: string;
29
- }
30
- /**
31
- * One state of a flow, as a literal writes it.
32
- *
33
- * @property key - Its short code: its identity, which transitions and decisions name
34
- * @property label - The name under its code
35
- * @property lane - The lane it is in, which the flow must have
36
- * @property members - A state class's count of members: the ×N badge
37
- * @property notes - Notes shown on hover
38
- */
39
- export interface FlowchartStateInput {
40
- /** Its short code: its identity, which transitions and decisions name. */
41
- readonly key: string;
42
- /** The name under its code. */
43
- readonly label?: string;
44
- /** The lane it is in, which the flow must have. */
45
- readonly lane: string;
46
- /** A state class's count of members: the ×N badge. */
47
- readonly members?: bigint;
48
- /** Notes shown on hover. */
49
- readonly notes?: string;
50
- }
51
- /**
52
- * The evidence behind a transition, as a literal writes it.
53
- *
54
- * @property volume - The volume measured across it: its stroke's weight and its badge
55
- * @property count - The events behind it
56
- * @property measuredAt - When it was measured
57
- * @property unit - The volume's unit, printed on its badge
58
- */
59
- export interface FlowchartEvidenceInput {
60
- /** The volume measured across it: its stroke's weight and its badge. */
61
- readonly volume?: number;
62
- /** The events behind it. */
63
- readonly count?: bigint;
64
- /** When it was measured. */
65
- readonly measuredAt?: Date;
66
- /** The volume's unit, printed on its badge. */
67
- readonly unit?: string;
68
- }
69
- /**
70
- * One transition of a flow, as a literal writes it.
71
- *
72
- * @property key - Its identity; left out, the renderer derives one from its ends
73
- * @property from - The state it leaves
74
- * @property to - The state it enters; one the flow does not have draws as the unresolved ghost
75
- * @property kind - `"planned"` (solid, the default) or `"observed"` (dashed)
76
- * @property trigger - The decision that governs it, which the flow must have
77
- * @property evidence - The evidence behind it
78
- */
79
- export interface FlowchartLinkInput {
80
- /** Its identity; left out, the renderer derives one from its ends. */
81
- readonly key?: string;
82
- /** The state it leaves. */
83
- readonly from: string;
84
- /** The state it enters; one the flow does not have draws as the unresolved ghost. */
85
- readonly to: string;
86
- /** `"planned"` (solid, the default) or `"observed"` (dashed). */
87
- readonly kind?: FlowchartLinkKindLiteral;
88
- /** The decision that governs it, which the flow must have. */
89
- readonly trigger?: string;
90
- /** The evidence behind it. */
91
- readonly evidence?: FlowchartEvidenceInput;
92
- }
93
- /**
94
- * One decision of a flow, as a literal writes it.
95
- *
96
- * @property key - Its identity, which transitions name
97
- * @property label - Its name
98
- * @property letter - Its diamond's letter; left out, its name's first
99
- * @property owner - Who decides it
100
- * @property queue - The states queued at it
101
- * @property outcomes - A line on what it decides
102
- */
103
- export interface FlowchartTriggerInput {
104
- /** Its identity, which transitions name. */
105
- readonly key: string;
106
- /** Its name. */
107
- readonly label: string;
108
- /** Its diamond's letter; left out, its name's first. */
109
- readonly letter?: string;
110
- /** Who decides it. */
111
- readonly owner?: string;
112
- /** The states queued at it. */
113
- readonly queue?: readonly string[];
114
- /** A line on what it decides. */
115
- readonly outcomes?: string;
116
- }
117
- /**
118
- * One flow, as a literal writes it — what `Flowchart.value` takes, and each
119
- * flow `Flowchart.values` takes by name.
120
- *
121
- * @property description - One sentence about it: the line its card in the Flows tab shows
122
- * @property lanes - Its lanes, in band order
123
- * @property states - Its states
124
- * @property links - Its transitions
125
- * @property triggers - Its decisions; left out, none
126
- */
127
- export interface FlowchartFlowInput {
128
- /** One sentence about it: the line its card in the Flows tab shows. */
129
- readonly description?: string;
130
- /** Its lanes, in band order. */
131
- readonly lanes: readonly FlowchartLaneInput[];
132
- /** Its states. */
133
- readonly states: readonly FlowchartStateInput[];
134
- /** Its transitions. */
135
- readonly links: readonly FlowchartLinkInput[];
136
- /** Its decisions; left out, none. */
137
- readonly triggers?: readonly FlowchartTriggerInput[];
138
- }
139
- /** One flow's value. */
140
- type FlowValue = ValueTypeOf<typeof FlowchartFlowType>;
141
- /**
142
- * One flow's value — what an app with a single flow declares its input of one
143
- * flow with, which it hands the flowchart as `data` — written as a literal and
144
- * checked when the package builds. A record always holds flows by name, so a
145
- * lone flow in a record is `Flowchart.values` with one entry.
146
- *
147
- * @remarks
148
- * - **Filled**: a literal leaves out what it does not need — the flow's
149
- * `description`, a state's `label`, `members` and `notes`, a link's `key`,
150
- * `kind`, `trigger` and `evidence`, a lane's `label`, a decision's `letter`,
151
- * `owner`, `queue` and `outcomes`, and `triggers` — and each is `none`, or
152
- * empty.
153
- * - **Checked**: a flow whose rows would not draw or commit fails the build —
154
- * two lanes, states, links or decisions of one key, a state naming a lane
155
- * the flow does not have, a link naming a decision it does not have. A link
156
- * naming a state the flow does not have is kept: it draws as the unresolved
157
- * ghost.
158
- *
159
- * @param flow - The flow, as a literal ({@link FlowchartFlowInput})
160
- * @returns The flow: a value of `Flowchart.Types.Flow`
161
- * @throws {Error} When two lanes, states, links or decisions share a key, a
162
- * state names a lane the flow does not have, or a link names a decision it
163
- * does not have — naming the row and the remedy
164
- *
165
- * @example
166
- * ```tsx
167
- * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
168
- * import { East, variant } from "@elaraai/east";
169
- * import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
170
- * import { Data, Flowchart } from "@elaraai/e3-ui";
171
- * import e3 from "@elaraai/e3";
172
- *
173
- * export const handoverFlow = e3.input("flowchart_handover", Flowchart.Types.Flow, variant("value", Flowchart.value({
174
- * description: "From the last scan to the driver's signature",
175
- * lanes: [{ key: "load", label: "Load" }, { key: "road", label: "Road" }, { key: "door", label: "Door" }],
176
- * states: [
177
- * { key: "LDD", label: "Loaded", lane: "load" },
178
- * { key: "DSP", label: "Dispatched", lane: "road" },
179
- * { key: "DLV", label: "Delivered", lane: "door" },
180
- * { key: "RTN", label: "Returned", lane: "door" },
181
- * ],
182
- * links: [
183
- * { from: "LDD", to: "DSP" },
184
- * { from: "DSP", to: "DLV", trigger: "attempt" },
185
- * { from: "DSP", to: "RTN", kind: "observed", trigger: "attempt" },
186
- * ],
187
- * triggers: [{ key: "attempt", label: "attempt", owner: "driver" }],
188
- * })));
189
- *
190
- * const flowchart = East.function([], UIComponentType, (_$) => (
191
- * <Reactive>{$ => {
192
- * const handover = $.let(Data.bind(handoverFlow));
193
- * return (
194
- * <Box height="500px">
195
- * <Flowchart data={handover} orientation="TD" inspector={false} name="handover" />
196
- * </Box>
197
- * );
198
- * }}</Reactive>
199
- * ));
200
- * ```
201
- */
202
- export declare function flowchartValue(flow: FlowchartFlowInput): FlowValue;
203
- /**
204
- * A record of flows' value, by name — what an app declares its record of
205
- * flows with — each flow written as a literal and checked when the package
206
- * builds, as `Flowchart.value` checks one: a record's value, as `Query.value`
207
- * is one.
208
- *
209
- * @param flows - The flows, each its name to its literal ({@link FlowchartFlowInput})
210
- * @returns The flows by name: a value of the record's type, `Flowchart.Types.Flows`
211
- * @throws {Error} When a flow does not check, naming the flow, the row and the
212
- * remedy, as `Flowchart.value` does
213
- *
214
- * @example
215
- * ```tsx
216
- * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
217
- * import { East } from "@elaraai/east";
218
- * import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
219
- * import { Flowchart, Record } from "@elaraai/e3-ui";
220
- * import e3 from "@elaraai/e3";
221
- *
222
- * export const depotFlows = e3.record("flowchart_depot_flows", Flowchart.Types.Flows, {
223
- * initial: Flowchart.values({
224
- * "Inbound parcels": {
225
- * description: "From the trailer to the van",
226
- * lanes: [{ key: "intake", label: "Intake" }, { key: "sort", label: "Sort" }, { key: "load", label: "Load" }],
227
- * states: [
228
- * { key: "ARV", label: "Arrived", lane: "intake" },
229
- * { key: "SCN", label: "Scanned", lane: "intake" },
230
- * { key: "CH*", label: "Sort chutes", lane: "sort", members: 12n },
231
- * { key: "LDD", label: "Loaded", lane: "load" },
232
- * ],
233
- * links: [
234
- * { from: "ARV", to: "SCN" },
235
- * { from: "SCN", to: "CH*", trigger: "route" },
236
- * { from: "CH*", to: "LDD" },
237
- * { from: "SCN", to: "SCN", kind: "observed" },
238
- * ],
239
- * triggers: [{ key: "route", label: "route", owner: "sort-planner" }],
240
- * },
241
- * "Returns": {
242
- * description: "From the counter back to the sender",
243
- * lanes: [{ key: "counter", label: "Counter" }, { key: "check", label: "Check" }, { key: "out", label: "Out" }],
244
- * states: [
245
- * { key: "RCV", label: "Received", lane: "counter" },
246
- * { key: "INS", label: "Inspected", lane: "check" },
247
- * { key: "RSD", label: "Resent", lane: "out" },
248
- * ],
249
- * links: [{ from: "RCV", to: "INS" }, { from: "INS", to: "RSD" }, { from: "INS", to: "BIN", kind: "observed" }],
250
- * },
251
- * }),
252
- * mutations: (mutation) => ({
253
- * patch: mutation.patch(),
254
- * }),
255
- * });
256
- *
257
- * const flowchart = East.function([], UIComponentType, (_$) => (
258
- * <Reactive>{$ => {
259
- * const flows = $.let(Record.bind(depotFlows));
260
- * return (
261
- * <Box height="500px">
262
- * <Flowchart record={flows} flow="Inbound parcels" library={[Flowchart.library.flows()]} />
263
- * </Box>
264
- * );
265
- * }}</Reactive>
266
- * ));
267
- * ```
268
- */
269
- export declare function flowchartValues(flows: Readonly<Record<string, FlowchartFlowInput>>): ValueTypeOf<FlowchartFlowsType>;
270
- export {};
271
- //# sourceMappingURL=values.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../src/flowchart/values.ts"],"names":[],"mappings":"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"}
@@ -1,220 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Elara AI Pty Ltd
3
- * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
- */
5
- /**
6
- * `Flowchart.value` and `Flowchart.values` (#1244, `Flowchart Builder Spec.md`
7
- * §4.3, §4.4): the flows a solution ships, written as literals — flows by
8
- * name, a record's value, or one flow, the value of the host's dataset — each
9
- * filled where the literal leaves a field out and checked when the package
10
- * builds, as `Query.value` checks the saved queries a solution ships.
11
- *
12
- * @packageDocumentation
13
- */
14
- import { SortedMap, StringType, compareFor, none, some, variant } from "@elaraai/east";
15
- import { FlowchartFlowType } from "./types.js";
16
- /** An optional literal field as an `Option`. */
17
- function optional(field) {
18
- return field === undefined ? none : some(field);
19
- }
20
- /** The keys a flow's rows of one kind carry, each once: the second of a key is refused, naming it. */
21
- function keysOnce(keys, where, rows, row) {
22
- const seen = new Set();
23
- for (const key of keys) {
24
- if (seen.has(key)) {
25
- throw new Error(`${where}: two ${rows} are keyed "${key}" — a ${row}'s key is its identity in the flow, so give each ${row} its own`);
26
- }
27
- seen.add(key);
28
- }
29
- return seen;
30
- }
31
- /**
32
- * One flow's value from its literal: checked, and filled where the literal
33
- * leaves a field out.
34
- *
35
- * @param flow - The literal
36
- * @param where - Who is asking, and of which flow: what a refusal opens with
37
- * @returns The flow's value
38
- * @throws {Error} When two lanes, states, links or decisions of the flow share a key, a state names a lane the flow does not have, or a link names a decision it does not have
39
- */
40
- function flowValue(flow, where) {
41
- const triggers = flow.triggers ?? [];
42
- const lanes = keysOnce(flow.lanes.map((l) => l.key), where, "lanes", "lane");
43
- keysOnce(flow.states.map((s) => s.key), where, "states", "state");
44
- keysOnce(flow.links.flatMap((l) => (l.key === undefined ? [] : [l.key])), where, "links", "link");
45
- const decisions = keysOnce(triggers.map((t) => t.key), where, "decisions", "decision");
46
- for (const state of flow.states) {
47
- if (!lanes.has(state.lane)) {
48
- throw new Error(`${where}: the state "${state.key}" names the lane "${state.lane}", which the flow has none of — add it to \`lanes\`, or name a lane the flow has`);
49
- }
50
- }
51
- // A link naming a state the flow does not have is kept: it draws as the
52
- // unresolved ghost, and the Issues tab lists it.
53
- for (const link of flow.links) {
54
- if (link.trigger !== undefined && !decisions.has(link.trigger)) {
55
- throw new Error(`${where}: the link "${link.from}" → "${link.to}" names the decision "${link.trigger}", which the flow has none of — add it to \`triggers\`, or leave the link's \`trigger\` out`);
56
- }
57
- }
58
- return {
59
- description: optional(flow.description),
60
- lanes: flow.lanes.map((l) => ({ key: l.key, label: optional(l.label) })),
61
- states: flow.states.map((s) => ({
62
- key: s.key, label: optional(s.label), lane: s.lane, members: optional(s.members), notes: optional(s.notes),
63
- })),
64
- links: flow.links.map((l) => ({
65
- key: optional(l.key),
66
- from: l.from,
67
- to: l.to,
68
- kind: l.kind === undefined ? none : some(variant(l.kind, null)),
69
- trigger: optional(l.trigger),
70
- evidence: l.evidence === undefined ? none : some({
71
- volume: optional(l.evidence.volume),
72
- count: optional(l.evidence.count),
73
- measuredAt: optional(l.evidence.measuredAt),
74
- unit: optional(l.evidence.unit),
75
- }),
76
- })),
77
- triggers: triggers.map((t) => ({
78
- key: t.key, label: t.label, letter: optional(t.letter), owner: optional(t.owner),
79
- queue: t.queue === undefined ? none : some([...t.queue]), outcomes: optional(t.outcomes),
80
- })),
81
- };
82
- }
83
- /**
84
- * One flow's value — what an app with a single flow declares its input of one
85
- * flow with, which it hands the flowchart as `data` — written as a literal and
86
- * checked when the package builds. A record always holds flows by name, so a
87
- * lone flow in a record is `Flowchart.values` with one entry.
88
- *
89
- * @remarks
90
- * - **Filled**: a literal leaves out what it does not need — the flow's
91
- * `description`, a state's `label`, `members` and `notes`, a link's `key`,
92
- * `kind`, `trigger` and `evidence`, a lane's `label`, a decision's `letter`,
93
- * `owner`, `queue` and `outcomes`, and `triggers` — and each is `none`, or
94
- * empty.
95
- * - **Checked**: a flow whose rows would not draw or commit fails the build —
96
- * two lanes, states, links or decisions of one key, a state naming a lane
97
- * the flow does not have, a link naming a decision it does not have. A link
98
- * naming a state the flow does not have is kept: it draws as the unresolved
99
- * ghost.
100
- *
101
- * @param flow - The flow, as a literal ({@link FlowchartFlowInput})
102
- * @returns The flow: a value of `Flowchart.Types.Flow`
103
- * @throws {Error} When two lanes, states, links or decisions share a key, a
104
- * state names a lane the flow does not have, or a link names a decision it
105
- * does not have — naming the row and the remedy
106
- *
107
- * @example
108
- * ```tsx
109
- * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
110
- * import { East, variant } from "@elaraai/east";
111
- * import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
112
- * import { Data, Flowchart } from "@elaraai/e3-ui";
113
- * import e3 from "@elaraai/e3";
114
- *
115
- * export const handoverFlow = e3.input("flowchart_handover", Flowchart.Types.Flow, variant("value", Flowchart.value({
116
- * description: "From the last scan to the driver's signature",
117
- * lanes: [{ key: "load", label: "Load" }, { key: "road", label: "Road" }, { key: "door", label: "Door" }],
118
- * states: [
119
- * { key: "LDD", label: "Loaded", lane: "load" },
120
- * { key: "DSP", label: "Dispatched", lane: "road" },
121
- * { key: "DLV", label: "Delivered", lane: "door" },
122
- * { key: "RTN", label: "Returned", lane: "door" },
123
- * ],
124
- * links: [
125
- * { from: "LDD", to: "DSP" },
126
- * { from: "DSP", to: "DLV", trigger: "attempt" },
127
- * { from: "DSP", to: "RTN", kind: "observed", trigger: "attempt" },
128
- * ],
129
- * triggers: [{ key: "attempt", label: "attempt", owner: "driver" }],
130
- * })));
131
- *
132
- * const flowchart = East.function([], UIComponentType, (_$) => (
133
- * <Reactive>{$ => {
134
- * const handover = $.let(Data.bind(handoverFlow));
135
- * return (
136
- * <Box height="500px">
137
- * <Flowchart data={handover} orientation="TD" inspector={false} name="handover" />
138
- * </Box>
139
- * );
140
- * }}</Reactive>
141
- * ));
142
- * ```
143
- */
144
- export function flowchartValue(flow) {
145
- return flowValue(flow, "Flowchart.value");
146
- }
147
- /**
148
- * A record of flows' value, by name — what an app declares its record of
149
- * flows with — each flow written as a literal and checked when the package
150
- * builds, as `Flowchart.value` checks one: a record's value, as `Query.value`
151
- * is one.
152
- *
153
- * @param flows - The flows, each its name to its literal ({@link FlowchartFlowInput})
154
- * @returns The flows by name: a value of the record's type, `Flowchart.Types.Flows`
155
- * @throws {Error} When a flow does not check, naming the flow, the row and the
156
- * remedy, as `Flowchart.value` does
157
- *
158
- * @example
159
- * ```tsx
160
- * // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
161
- * import { East } from "@elaraai/east";
162
- * import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
163
- * import { Flowchart, Record } from "@elaraai/e3-ui";
164
- * import e3 from "@elaraai/e3";
165
- *
166
- * export const depotFlows = e3.record("flowchart_depot_flows", Flowchart.Types.Flows, {
167
- * initial: Flowchart.values({
168
- * "Inbound parcels": {
169
- * description: "From the trailer to the van",
170
- * lanes: [{ key: "intake", label: "Intake" }, { key: "sort", label: "Sort" }, { key: "load", label: "Load" }],
171
- * states: [
172
- * { key: "ARV", label: "Arrived", lane: "intake" },
173
- * { key: "SCN", label: "Scanned", lane: "intake" },
174
- * { key: "CH*", label: "Sort chutes", lane: "sort", members: 12n },
175
- * { key: "LDD", label: "Loaded", lane: "load" },
176
- * ],
177
- * links: [
178
- * { from: "ARV", to: "SCN" },
179
- * { from: "SCN", to: "CH*", trigger: "route" },
180
- * { from: "CH*", to: "LDD" },
181
- * { from: "SCN", to: "SCN", kind: "observed" },
182
- * ],
183
- * triggers: [{ key: "route", label: "route", owner: "sort-planner" }],
184
- * },
185
- * "Returns": {
186
- * description: "From the counter back to the sender",
187
- * lanes: [{ key: "counter", label: "Counter" }, { key: "check", label: "Check" }, { key: "out", label: "Out" }],
188
- * states: [
189
- * { key: "RCV", label: "Received", lane: "counter" },
190
- * { key: "INS", label: "Inspected", lane: "check" },
191
- * { key: "RSD", label: "Resent", lane: "out" },
192
- * ],
193
- * links: [{ from: "RCV", to: "INS" }, { from: "INS", to: "RSD" }, { from: "INS", to: "BIN", kind: "observed" }],
194
- * },
195
- * }),
196
- * mutations: (mutation) => ({
197
- * patch: mutation.patch(),
198
- * }),
199
- * });
200
- *
201
- * const flowchart = East.function([], UIComponentType, (_$) => (
202
- * <Reactive>{$ => {
203
- * const flows = $.let(Record.bind(depotFlows));
204
- * return (
205
- * <Box height="500px">
206
- * <Flowchart record={flows} flow="Inbound parcels" library={[Flowchart.library.flows()]} />
207
- * </Box>
208
- * );
209
- * }}</Reactive>
210
- * ));
211
- * ```
212
- */
213
- export function flowchartValues(flows) {
214
- const byName = new SortedMap([], compareFor(StringType));
215
- for (const [name, flow] of Object.entries(flows)) {
216
- byName.set(name, flowValue(flow, `Flowchart.values: "${name}"`));
217
- }
218
- return byName;
219
- }
220
- //# sourceMappingURL=values.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/flowchart/values.ts"],"names":[],"mappings":"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"}