@ghchinoy/litflow 0.2.8 → 0.4.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 (249) hide show
  1. package/CHANGELOG.md +12 -4
  2. package/dist/breadboard/data/common.d.ts +35 -0
  3. package/dist/breadboard/data/file-system.d.ts +9 -0
  4. package/dist/breadboard/data/inline-all-content.d.ts +8 -0
  5. package/dist/breadboard/data/recent-boards.d.ts +17 -0
  6. package/dist/breadboard/data/save-outputs-as-file.d.ts +9 -0
  7. package/dist/breadboard/engine/add-run-module.d.ts +9 -0
  8. package/dist/breadboard/engine/editor/blank.d.ts +15 -0
  9. package/dist/breadboard/engine/editor/edge.d.ts +8 -0
  10. package/dist/breadboard/engine/editor/events.d.ts +34 -0
  11. package/dist/breadboard/engine/editor/graph.d.ts +18 -0
  12. package/dist/breadboard/engine/editor/history.d.ts +21 -0
  13. package/dist/breadboard/engine/editor/index.d.ts +6 -0
  14. package/dist/breadboard/engine/editor/operations/add-asset.d.ts +10 -0
  15. package/dist/breadboard/engine/editor/operations/add-edge.d.ts +11 -0
  16. package/dist/breadboard/engine/editor/operations/add-graph.d.ts +10 -0
  17. package/dist/breadboard/engine/editor/operations/add-module.d.ts +10 -0
  18. package/dist/breadboard/engine/editor/operations/add-node.d.ts +10 -0
  19. package/dist/breadboard/engine/editor/operations/change-asset-metadata.d.ts +11 -0
  20. package/dist/breadboard/engine/editor/operations/change-configuration.d.ts +10 -0
  21. package/dist/breadboard/engine/editor/operations/change-edge-metadata.d.ts +10 -0
  22. package/dist/breadboard/engine/editor/operations/change-edge.d.ts +10 -0
  23. package/dist/breadboard/engine/editor/operations/change-graph-metadata.d.ts +9 -0
  24. package/dist/breadboard/engine/editor/operations/change-metadata.d.ts +11 -0
  25. package/dist/breadboard/engine/editor/operations/change-module.d.ts +10 -0
  26. package/dist/breadboard/engine/editor/operations/error.d.ts +9 -0
  27. package/dist/breadboard/engine/editor/operations/remove-asset.d.ts +10 -0
  28. package/dist/breadboard/engine/editor/operations/remove-edge.d.ts +10 -0
  29. package/dist/breadboard/engine/editor/operations/remove-graph.d.ts +10 -0
  30. package/dist/breadboard/engine/editor/operations/remove-integration.d.ts +10 -0
  31. package/dist/breadboard/engine/editor/operations/remove-module.d.ts +10 -0
  32. package/dist/breadboard/engine/editor/operations/remove-node.d.ts +10 -0
  33. package/dist/breadboard/engine/editor/operations/replace-graph.d.ts +9 -0
  34. package/dist/breadboard/engine/editor/operations/toggle-export.d.ts +9 -0
  35. package/dist/breadboard/engine/editor/operations/upsert-integration.d.ts +10 -0
  36. package/dist/breadboard/engine/editor/selection.d.ts +16 -0
  37. package/dist/breadboard/engine/editor/transforms/configure-sidewire.d.ts +15 -0
  38. package/dist/breadboard/engine/editor/transforms/isolate-selection.d.ts +12 -0
  39. package/dist/breadboard/engine/editor/transforms/merge-graph.d.ts +12 -0
  40. package/dist/breadboard/engine/editor/transforms/move-to-graph.d.ts +12 -0
  41. package/dist/breadboard/engine/editor/transforms/move-to-new-graph.d.ts +12 -0
  42. package/dist/breadboard/engine/editor/transforms/sidewire-to-new-graph.d.ts +72 -0
  43. package/dist/breadboard/engine/file-system/blob-transform.d.ts +8 -0
  44. package/dist/breadboard/engine/file-system/composed-peristent-backend.d.ts +8 -0
  45. package/dist/breadboard/engine/file-system/ephemeral-blob-store.d.ts +8 -0
  46. package/dist/breadboard/engine/file-system/in-memory-blob-store.d.ts +18 -0
  47. package/dist/breadboard/engine/file-system/index.d.ts +22 -0
  48. package/dist/breadboard/engine/file-system/partial-persistent-backend.d.ts +19 -0
  49. package/dist/breadboard/engine/file-system/path.d.ts +23 -0
  50. package/dist/breadboard/engine/file-system/persistent-file.d.ts +19 -0
  51. package/dist/breadboard/engine/file-system/readable-stream-file.d.ts +17 -0
  52. package/dist/breadboard/engine/file-system/stub-file-system.d.ts +18 -0
  53. package/dist/breadboard/engine/file-system/utils.d.ts +9 -0
  54. package/dist/breadboard/engine/inspector/graph/bubbled-node.d.ts +34 -0
  55. package/dist/breadboard/engine/inspector/graph/describe-cache.d.ts +15 -0
  56. package/dist/breadboard/engine/inspector/graph/describe-type-cache.d.ts +15 -0
  57. package/dist/breadboard/engine/inspector/graph/edge-cache.d.ts +22 -0
  58. package/dist/breadboard/engine/inspector/graph/edge.d.ts +40 -0
  59. package/dist/breadboard/engine/inspector/graph/event.d.ts +16 -0
  60. package/dist/breadboard/engine/inspector/graph/exports-describer.d.ts +13 -0
  61. package/dist/breadboard/engine/inspector/graph/graph-cache.d.ts +18 -0
  62. package/dist/breadboard/engine/inspector/graph/graph-describer-manager.d.ts +21 -0
  63. package/dist/breadboard/engine/inspector/graph/graph-descriptor-handle.d.ts +17 -0
  64. package/dist/breadboard/engine/inspector/graph/graph-node-type.d.ts +15 -0
  65. package/dist/breadboard/engine/inspector/graph/graph-queries.d.ts +31 -0
  66. package/dist/breadboard/engine/inspector/graph/graph.d.ts +37 -0
  67. package/dist/breadboard/engine/inspector/graph/inspectable-asset.d.ts +17 -0
  68. package/dist/breadboard/engine/inspector/graph/kits.d.ts +15 -0
  69. package/dist/breadboard/engine/inspector/graph/module.d.ts +14 -0
  70. package/dist/breadboard/engine/inspector/graph/mutable-graph.d.ts +26 -0
  71. package/dist/breadboard/engine/inspector/graph/node-cache.d.ts +20 -0
  72. package/dist/breadboard/engine/inspector/graph/node-describer-manager.d.ts +25 -0
  73. package/dist/breadboard/engine/inspector/graph/node-type-describer-manager.d.ts +19 -0
  74. package/dist/breadboard/engine/inspector/graph/node.d.ts +27 -0
  75. package/dist/breadboard/engine/inspector/graph/port-cache.d.ts +18 -0
  76. package/dist/breadboard/engine/inspector/graph/ports.d.ts +16 -0
  77. package/dist/breadboard/engine/inspector/graph/schemas.d.ts +24 -0
  78. package/dist/breadboard/engine/inspector/graph/virtual-node.d.ts +35 -0
  79. package/dist/breadboard/engine/inspector/graph-store.d.ts +45 -0
  80. package/dist/breadboard/engine/inspector/index.d.ts +7 -0
  81. package/dist/breadboard/engine/inspector/utils.d.ts +9 -0
  82. package/dist/breadboard/engine/loader/capability.d.ts +21 -0
  83. package/dist/breadboard/engine/loader/index.d.ts +7 -0
  84. package/dist/breadboard/engine/loader/loader.d.ts +29 -0
  85. package/dist/breadboard/engine/loader/resolve-graph-urls.d.ts +16 -0
  86. package/dist/breadboard/engine/runtime/bubble.d.ts +23 -0
  87. package/dist/breadboard/engine/runtime/graph-based-node-handler.d.ts +16 -0
  88. package/dist/breadboard/engine/runtime/handler.d.ts +27 -0
  89. package/dist/breadboard/engine/runtime/harness/diagnostics.d.ts +12 -0
  90. package/dist/breadboard/engine/runtime/harness/events.d.ts +145 -0
  91. package/dist/breadboard/engine/runtime/harness/index.d.ts +8 -0
  92. package/dist/breadboard/engine/runtime/harness/local.d.ts +10 -0
  93. package/dist/breadboard/engine/runtime/harness/plan-runner.d.ts +25 -0
  94. package/dist/breadboard/engine/runtime/index.d.ts +6 -0
  95. package/dist/breadboard/engine/runtime/legacy.d.ts +11 -0
  96. package/dist/breadboard/engine/runtime/run/invoke-graph.d.ts +12 -0
  97. package/dist/breadboard/engine/runtime/run/node-invoker.d.ts +12 -0
  98. package/dist/breadboard/engine/runtime/run/run-graph.d.ts +12 -0
  99. package/dist/breadboard/engine/runtime/run.d.ts +29 -0
  100. package/dist/breadboard/engine/runtime/sandbox/capabilities-manager.d.ts +15 -0
  101. package/dist/breadboard/engine/runtime/sandbox/file-system-handler-factory.d.ts +15 -0
  102. package/dist/breadboard/engine/runtime/sandbox/invoke-describer.d.ts +10 -0
  103. package/dist/breadboard/engine/runtime/static/condense.d.ts +25 -0
  104. package/dist/breadboard/engine/runtime/static/create-plan.d.ts +14 -0
  105. package/dist/breadboard/engine/runtime/static/nodes-to-subgraph.d.ts +18 -0
  106. package/dist/breadboard/engine/runtime/static/orchestrator.d.ts +72 -0
  107. package/dist/breadboard/engine/runtime/static/types.d.ts +72 -0
  108. package/dist/breadboard/engine/runtime/traversal/index.d.ts +20 -0
  109. package/dist/breadboard/engine/runtime/traversal/iterator.d.ts +12 -0
  110. package/dist/breadboard/engine/runtime/traversal/machine.d.ts +14 -0
  111. package/dist/breadboard/engine/runtime/traversal/representation.d.ts +27 -0
  112. package/dist/breadboard/engine/runtime/traversal/result.d.ts +24 -0
  113. package/dist/breadboard/engine/runtime/traversal/state.d.ts +34 -0
  114. package/dist/breadboard/engine/telemetry.d.ts +25 -0
  115. package/dist/breadboard/engine/types.d.ts +9 -0
  116. package/dist/breadboard/lit-flow-runner.d.ts +13 -0
  117. package/dist/breadboard/lit-flow-runner.test.d.ts +1 -0
  118. package/dist/breadboard/runner.d.ts +13 -0
  119. package/dist/index.d.ts +2 -0
  120. package/dist/lit-chiclet.d.ts +9 -0
  121. package/dist/lit-flow.d.ts +13 -0
  122. package/dist/lit-schema-node.d.ts +13 -0
  123. package/dist/lit-schema-node.test.d.ts +1 -0
  124. package/dist/litflow.js +6173 -658
  125. package/dist/litflow.js.map +1 -1
  126. package/package.json +33 -3
  127. package/src/breadboard/data/common.ts +450 -0
  128. package/src/breadboard/data/file-system.ts +54 -0
  129. package/src/breadboard/data/inline-all-content.ts +126 -0
  130. package/src/breadboard/data/recent-boards.ts +118 -0
  131. package/src/breadboard/data/save-outputs-as-file.ts +104 -0
  132. package/src/breadboard/engine/add-run-module.ts +168 -0
  133. package/src/breadboard/engine/editor/blank.ts +65 -0
  134. package/src/breadboard/engine/editor/edge.ts +27 -0
  135. package/src/breadboard/engine/editor/events.ts +64 -0
  136. package/src/breadboard/engine/editor/graph.ts +383 -0
  137. package/src/breadboard/engine/editor/history.ts +98 -0
  138. package/src/breadboard/engine/editor/index.ts +8 -0
  139. package/src/breadboard/engine/editor/operations/add-asset.ts +45 -0
  140. package/src/breadboard/engine/editor/operations/add-edge.ts +142 -0
  141. package/src/breadboard/engine/editor/operations/add-graph.ts +47 -0
  142. package/src/breadboard/engine/editor/operations/add-module.ts +64 -0
  143. package/src/breadboard/engine/editor/operations/add-node.ts +86 -0
  144. package/src/breadboard/engine/editor/operations/change-asset-metadata.ts +70 -0
  145. package/src/breadboard/engine/editor/operations/change-configuration.ts +82 -0
  146. package/src/breadboard/engine/editor/operations/change-edge-metadata.ts +58 -0
  147. package/src/breadboard/engine/editor/operations/change-edge.ts +111 -0
  148. package/src/breadboard/engine/editor/operations/change-graph-metadata.ts +52 -0
  149. package/src/breadboard/engine/editor/operations/change-metadata.ts +92 -0
  150. package/src/breadboard/engine/editor/operations/change-module.ts +64 -0
  151. package/src/breadboard/engine/editor/operations/error.ts +21 -0
  152. package/src/breadboard/engine/editor/operations/remove-asset.ts +48 -0
  153. package/src/breadboard/engine/editor/operations/remove-edge.ts +89 -0
  154. package/src/breadboard/engine/editor/operations/remove-graph.ts +49 -0
  155. package/src/breadboard/engine/editor/operations/remove-integration.ts +54 -0
  156. package/src/breadboard/engine/editor/operations/remove-module.ts +69 -0
  157. package/src/breadboard/engine/editor/operations/remove-node.ts +86 -0
  158. package/src/breadboard/engine/editor/operations/replace-graph.ts +52 -0
  159. package/src/breadboard/engine/editor/operations/toggle-export.ts +72 -0
  160. package/src/breadboard/engine/editor/operations/upsert-integration.ts +43 -0
  161. package/src/breadboard/engine/editor/selection.ts +58 -0
  162. package/src/breadboard/engine/editor/transforms/configure-sidewire.ts +73 -0
  163. package/src/breadboard/engine/editor/transforms/isolate-selection.ts +54 -0
  164. package/src/breadboard/engine/editor/transforms/merge-graph.ts +58 -0
  165. package/src/breadboard/engine/editor/transforms/move-to-graph.ts +102 -0
  166. package/src/breadboard/engine/editor/transforms/move-to-new-graph.ts +72 -0
  167. package/src/breadboard/engine/editor/transforms/sidewire-to-new-graph.ts +82 -0
  168. package/src/breadboard/engine/file-system/blob-transform.ts +44 -0
  169. package/src/breadboard/engine/file-system/composed-peristent-backend.ts +140 -0
  170. package/src/breadboard/engine/file-system/ephemeral-blob-store.ts +46 -0
  171. package/src/breadboard/engine/file-system/in-memory-blob-store.ts +87 -0
  172. package/src/breadboard/engine/file-system/index.ts +723 -0
  173. package/src/breadboard/engine/file-system/partial-persistent-backend.ts +109 -0
  174. package/src/breadboard/engine/file-system/path.ts +125 -0
  175. package/src/breadboard/engine/file-system/persistent-file.ts +66 -0
  176. package/src/breadboard/engine/file-system/readable-stream-file.ts +61 -0
  177. package/src/breadboard/engine/file-system/stub-file-system.ts +47 -0
  178. package/src/breadboard/engine/file-system/utils.ts +40 -0
  179. package/src/breadboard/engine/inspector/graph/bubbled-node.ts +162 -0
  180. package/src/breadboard/engine/inspector/graph/describe-cache.ts +78 -0
  181. package/src/breadboard/engine/inspector/graph/describe-type-cache.ts +48 -0
  182. package/src/breadboard/engine/inspector/graph/edge-cache.ts +118 -0
  183. package/src/breadboard/engine/inspector/graph/edge.ts +133 -0
  184. package/src/breadboard/engine/inspector/graph/event.ts +35 -0
  185. package/src/breadboard/engine/inspector/graph/exports-describer.ts +45 -0
  186. package/src/breadboard/engine/inspector/graph/graph-cache.ts +54 -0
  187. package/src/breadboard/engine/inspector/graph/graph-describer-manager.ts +338 -0
  188. package/src/breadboard/engine/inspector/graph/graph-descriptor-handle.ts +73 -0
  189. package/src/breadboard/engine/inspector/graph/graph-node-type.ts +111 -0
  190. package/src/breadboard/engine/inspector/graph/graph-queries.ts +256 -0
  191. package/src/breadboard/engine/inspector/graph/graph.ts +163 -0
  192. package/src/breadboard/engine/inspector/graph/inspectable-asset.ts +36 -0
  193. package/src/breadboard/engine/inspector/graph/kits.ts +208 -0
  194. package/src/breadboard/engine/inspector/graph/module.ts +69 -0
  195. package/src/breadboard/engine/inspector/graph/mutable-graph.ts +150 -0
  196. package/src/breadboard/engine/inspector/graph/node-cache.ts +123 -0
  197. package/src/breadboard/engine/inspector/graph/node-describer-manager.ts +279 -0
  198. package/src/breadboard/engine/inspector/graph/node-type-describer-manager.ts +122 -0
  199. package/src/breadboard/engine/inspector/graph/node.ts +149 -0
  200. package/src/breadboard/engine/inspector/graph/port-cache.ts +80 -0
  201. package/src/breadboard/engine/inspector/graph/ports.ts +292 -0
  202. package/src/breadboard/engine/inspector/graph/schemas.ts +131 -0
  203. package/src/breadboard/engine/inspector/graph/virtual-node.ts +184 -0
  204. package/src/breadboard/engine/inspector/graph-store.ts +629 -0
  205. package/src/breadboard/engine/inspector/index.ts +13 -0
  206. package/src/breadboard/engine/inspector/utils.ts +20 -0
  207. package/src/breadboard/engine/loader/capability.ts +184 -0
  208. package/src/breadboard/engine/loader/index.ts +14 -0
  209. package/src/breadboard/engine/loader/loader.ts +244 -0
  210. package/src/breadboard/engine/loader/resolve-graph-urls.ts +111 -0
  211. package/src/breadboard/engine/runtime/bubble.ts +269 -0
  212. package/src/breadboard/engine/runtime/graph-based-node-handler.ts +174 -0
  213. package/src/breadboard/engine/runtime/handler.ts +166 -0
  214. package/src/breadboard/engine/runtime/harness/diagnostics.ts +22 -0
  215. package/src/breadboard/engine/runtime/harness/events.ts +217 -0
  216. package/src/breadboard/engine/runtime/harness/index.ts +14 -0
  217. package/src/breadboard/engine/runtime/harness/local.ts +48 -0
  218. package/src/breadboard/engine/runtime/harness/plan-runner.ts +759 -0
  219. package/src/breadboard/engine/runtime/index.ts +8 -0
  220. package/src/breadboard/engine/runtime/legacy.ts +28 -0
  221. package/src/breadboard/engine/runtime/run/invoke-graph.ts +79 -0
  222. package/src/breadboard/engine/runtime/run/node-invoker.ts +137 -0
  223. package/src/breadboard/engine/runtime/run/run-graph.ts +186 -0
  224. package/src/breadboard/engine/runtime/run.ts +111 -0
  225. package/src/breadboard/engine/runtime/sandbox/capabilities-manager.ts +253 -0
  226. package/src/breadboard/engine/runtime/sandbox/file-system-handler-factory.ts +53 -0
  227. package/src/breadboard/engine/runtime/sandbox/invoke-describer.ts +125 -0
  228. package/src/breadboard/engine/runtime/static/condense.ts +155 -0
  229. package/src/breadboard/engine/runtime/static/create-plan.ts +134 -0
  230. package/src/breadboard/engine/runtime/static/nodes-to-subgraph.ts +168 -0
  231. package/src/breadboard/engine/runtime/static/orchestrator.ts +664 -0
  232. package/src/breadboard/engine/runtime/static/types.ts +77 -0
  233. package/src/breadboard/engine/runtime/traversal/index.ts +58 -0
  234. package/src/breadboard/engine/runtime/traversal/iterator.ts +124 -0
  235. package/src/breadboard/engine/runtime/traversal/machine.ts +58 -0
  236. package/src/breadboard/engine/runtime/traversal/representation.ts +115 -0
  237. package/src/breadboard/engine/runtime/traversal/result.ts +72 -0
  238. package/src/breadboard/engine/runtime/traversal/state.ts +115 -0
  239. package/src/breadboard/engine/telemetry.ts +121 -0
  240. package/src/breadboard/engine/types.ts +32 -0
  241. package/src/breadboard/lit-flow-runner.test.ts +44 -0
  242. package/src/breadboard/lit-flow-runner.ts +98 -0
  243. package/src/breadboard/runner.ts +80 -0
  244. package/src/index.ts +2 -0
  245. package/src/lit-chiclet.ts +69 -0
  246. package/src/lit-flow.ts +150 -9
  247. package/src/lit-node.ts +9 -2
  248. package/src/lit-schema-node.test.ts +65 -0
  249. package/src/lit-schema-node.ts +194 -0
@@ -0,0 +1,48 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import {
9
+ DescribeResultTypeCacheArgs,
10
+ InspectableDescriberResultCacheEntry,
11
+ InspectableDescriberResultTypeCache,
12
+ NodeDescriberResult,
13
+ NodeTypeIdentifier,
14
+ } from "@breadboard-ai/types";
15
+ import { SnapshotUpdater } from "@breadboard-ai/utils";
16
+
17
+ export { DescribeResultTypeCache };
18
+
19
+ type MapItem = SnapshotUpdater<NodeDescriberResult>;
20
+
21
+ class DescribeResultTypeCache implements InspectableDescriberResultTypeCache {
22
+ #map = new Map<NodeTypeIdentifier, MapItem>();
23
+
24
+ constructor(public readonly args: DescribeResultTypeCacheArgs) {}
25
+
26
+ get(type: NodeTypeIdentifier): InspectableDescriberResultCacheEntry {
27
+ let result = this.#map.get(type);
28
+ if (result) {
29
+ return result.snapshot();
30
+ }
31
+ result = new SnapshotUpdater({
32
+ initial: () => this.args.initial(),
33
+ latest: () => this.args.latest(type),
34
+ updated: () => this.args.updated(type),
35
+ });
36
+ this.#map.set(type, result);
37
+ return result.snapshot();
38
+ }
39
+
40
+ update(affectedTypes: NodeTypeIdentifier[]): void {
41
+ for (const type of affectedTypes) {
42
+ this.#map.delete(type);
43
+ }
44
+ }
45
+ clear(): void {
46
+ this.#map.clear();
47
+ }
48
+ }
@@ -0,0 +1,118 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import {
9
+ Edge as EdgeDescriptor,
10
+ GraphDescriptor,
11
+ GraphIdentifier,
12
+ InspectableEdge,
13
+ InspectableEdgeCache,
14
+ } from "@breadboard-ai/types";
15
+ import { Edge, unfixUpStarEdge } from "./edge.js";
16
+
17
+ type EdgeFactory = (
18
+ edge: EdgeDescriptor,
19
+ graphId: GraphIdentifier
20
+ ) => InspectableEdge;
21
+
22
+ export class EdgeCache implements InspectableEdgeCache {
23
+ #factory: EdgeFactory;
24
+ #map: Map<GraphIdentifier, Map<EdgeDescriptor, InspectableEdge>> = new Map();
25
+
26
+ constructor(factory: EdgeFactory) {
27
+ this.#factory = factory;
28
+ }
29
+
30
+ rebuild(graph: GraphDescriptor) {
31
+ // Initialize the edge map from the graph. This is only done once, and all
32
+ // following updates are performed incrementally.
33
+ const mainGraphEdges = new Map(
34
+ graph.edges.map((edge) => [edge, this.#factory(edge, "")])
35
+ );
36
+ this.#map.set("", mainGraphEdges);
37
+ Object.entries(graph.graphs || {}).forEach(([graphId, graph]) => {
38
+ const subGraphEdges = new Map(
39
+ graph.edges.map((edge) => [edge, this.#factory(edge, graphId)])
40
+ );
41
+ this.#map.set(graphId, subGraphEdges);
42
+ });
43
+ }
44
+
45
+ get(
46
+ edge: EdgeDescriptor,
47
+ graphId: GraphIdentifier
48
+ ): InspectableEdge | undefined {
49
+ return this.#map.get(graphId)?.get(edge);
50
+ }
51
+
52
+ getOrCreate(edge: EdgeDescriptor, graphId: GraphIdentifier): InspectableEdge {
53
+ let result = this.get(edge, graphId);
54
+ if (result) {
55
+ return result;
56
+ }
57
+ result = this.#factory(edge, graphId);
58
+ this.add(edge, graphId);
59
+ return result;
60
+ }
61
+
62
+ add(edge: EdgeDescriptor, graphId: GraphIdentifier) {
63
+ console.assert(
64
+ !this.#map.get(graphId)?.has(edge),
65
+ "Edge already exists when adding."
66
+ );
67
+ let graphEdges = this.#map.get(graphId);
68
+ if (!graphEdges) {
69
+ graphEdges = new Map();
70
+ this.#map.set(graphId, graphEdges);
71
+ }
72
+ graphEdges.set(edge, this.#factory(edge, graphId));
73
+ }
74
+
75
+ remove(edge: EdgeDescriptor, graphId: GraphIdentifier) {
76
+ console.assert(
77
+ this.#map.get(graphId)?.has(edge),
78
+ "Edge not found when removing."
79
+ );
80
+ const inspectableEdge = this.#map.get(graphId)?.get(edge);
81
+ this.#map.get(graphId)?.delete(edge);
82
+ (inspectableEdge as Edge)?.setDeleted();
83
+ }
84
+
85
+ has(edge: EdgeDescriptor, graphId: GraphIdentifier): boolean {
86
+ return !!this.#map.get(graphId)?.has(edge);
87
+ }
88
+
89
+ hasByValue(edge: EdgeDescriptor, graphId: GraphIdentifier): boolean {
90
+ edge = unfixUpStarEdge(edge);
91
+ const edges = this.edges(graphId);
92
+ return !!edges.find((e) => {
93
+ return (
94
+ e.from.descriptor.id === edge.from &&
95
+ e.to.descriptor.id === edge.to &&
96
+ e.out === edge.out &&
97
+ e.in === edge.in
98
+ );
99
+ });
100
+ }
101
+
102
+ edges(graphId: GraphIdentifier): InspectableEdge[] {
103
+ return Array.from(this.#map.get(graphId)?.values() || []);
104
+ }
105
+
106
+ addSubgraphEdges(subgraph: GraphDescriptor, graphId: GraphIdentifier): void {
107
+ subgraph.edges.map((edge) => {
108
+ this.add(edge, graphId);
109
+ });
110
+ }
111
+
112
+ removeSubgraphEdges(graphId: GraphIdentifier): void {
113
+ this.#map.get(graphId)?.forEach((inspectableEdge) => {
114
+ (inspectableEdge as Edge).setDeleted();
115
+ });
116
+ this.#map.delete(graphId);
117
+ }
118
+ }
@@ -0,0 +1,133 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ Edge as EdgeDescriptor,
10
+ EdgeMetadata,
11
+ GraphIdentifier,
12
+ InspectableEdge,
13
+ InspectablePort,
14
+ MutableGraph,
15
+ } from "@breadboard-ai/types";
16
+ import { InspectableEdgeType } from "@breadboard-ai/types";
17
+ export { Edge };
18
+
19
+ /**
20
+ * This helper is necessary because both "*" and "" are valid representations
21
+ * of a wildcard edge tail. This function ensures that the edge is always
22
+ * consistent.
23
+ * @param edge -- the edge to fix up
24
+ * @returns
25
+ */
26
+ export const fixUpStarEdge = (edge: EdgeDescriptor): EdgeDescriptor => {
27
+ if (edge.out === "*") {
28
+ return { ...edge, in: "" };
29
+ }
30
+ return edge;
31
+ };
32
+
33
+ /**
34
+ * This is inverse of the helper above, necessary when working with
35
+ * instances of `InspectableEdge` directly, since they will show "*" on both
36
+ * sides of the edge.
37
+ * @param edge -- the edge to un-fix up
38
+ * @returns
39
+ */
40
+ export const unfixUpStarEdge = (edge: EdgeDescriptor): EdgeDescriptor => {
41
+ if (edge.out === "*") {
42
+ return { ...edge, in: "*" };
43
+ }
44
+ return edge;
45
+ };
46
+
47
+ export const fixupConstantEdge = (edge: EdgeDescriptor): EdgeDescriptor => {
48
+ const { constant, ...rest } = edge;
49
+ if (constant === false) {
50
+ return rest;
51
+ }
52
+ return edge;
53
+ };
54
+
55
+ class Edge implements InspectableEdge {
56
+ #mutable: MutableGraph | null;
57
+ #edge: EdgeDescriptor;
58
+ #graphId: GraphIdentifier;
59
+
60
+ constructor(
61
+ mutable: MutableGraph,
62
+ edge: EdgeDescriptor,
63
+ graphId: GraphIdentifier
64
+ ) {
65
+ this.#mutable = mutable;
66
+ this.#edge = edge;
67
+ this.#graphId = graphId;
68
+ }
69
+
70
+ raw(): EdgeDescriptor {
71
+ return this.#edge;
72
+ }
73
+
74
+ get from() {
75
+ if (!this.#mutable) {
76
+ throw new Error(
77
+ `Unable to access "from": this edge was deleted and is no longer part of the graph`
78
+ );
79
+ }
80
+ const from = this.#mutable.nodes.get(this.#edge.from, this.#graphId);
81
+ console.assert(from, "From node not found when getting from.");
82
+ return from!;
83
+ }
84
+
85
+ get out() {
86
+ return this.#edge.out as string;
87
+ }
88
+
89
+ get to() {
90
+ if (!this.#mutable) {
91
+ throw new Error(
92
+ `Unable to access "to": this edge was deleted and is no longer part of the graph`
93
+ );
94
+ }
95
+ const to = this.#mutable.nodes.get(this.#edge.to, this.#graphId);
96
+ console.assert(to, "To node not found when getting to.");
97
+ return to!;
98
+ }
99
+
100
+ get in() {
101
+ const edgein = this.#edge.out === "*" ? "*" : this.#edge.in;
102
+ return edgein as string;
103
+ }
104
+
105
+ get type() {
106
+ if (this.#edge.out === "*") return InspectableEdgeType.Star;
107
+ if (this.#edge.out === "") return InspectableEdgeType.Control;
108
+ if (this.#edge.constant) return InspectableEdgeType.Constant;
109
+ return InspectableEdgeType.Ordinary;
110
+ }
111
+
112
+ metadata(): EdgeMetadata | undefined {
113
+ return this.#edge.metadata;
114
+ }
115
+
116
+ async outPort(): Promise<InspectablePort> {
117
+ const ports = await this.from.ports();
118
+ return ports.outputs.ports.find((port) => port.name === this.out)!;
119
+ }
120
+
121
+ async inPort(): Promise<InspectablePort> {
122
+ const ports = await this.to.ports();
123
+ return ports.inputs.ports.find((port) => port.name === this.in)!;
124
+ }
125
+
126
+ setDeleted() {
127
+ this.#mutable = null;
128
+ }
129
+
130
+ deleted(): boolean {
131
+ return !this.#mutable;
132
+ }
133
+ }
@@ -0,0 +1,35 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import {
9
+ GraphIdentifier,
10
+ GraphStoreUpdateEvent,
11
+ MainGraphIdentifier,
12
+ NodeIdentifier,
13
+ } from "@breadboard-ai/types";
14
+
15
+ export { UpdateEvent };
16
+
17
+ const eventInit = {
18
+ bubbles: true,
19
+ cancelable: true,
20
+ composed: true,
21
+ };
22
+
23
+ class UpdateEvent extends Event implements GraphStoreUpdateEvent {
24
+ static eventName = "update";
25
+
26
+ constructor(
27
+ public readonly mainGraphId: MainGraphIdentifier,
28
+ public readonly graphId: GraphIdentifier,
29
+ public readonly nodeId: NodeIdentifier,
30
+ public readonly affectedGraphs: MainGraphIdentifier[],
31
+ public readonly topologyChange: boolean
32
+ ) {
33
+ super(UpdateEvent.eventName, { ...eventInit });
34
+ }
35
+ }
@@ -0,0 +1,45 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import {
9
+ GraphDescriberFactory,
10
+ MutableGraph,
11
+ NodeDescriberExport,
12
+ NodeDescriberResult,
13
+ } from "@breadboard-ai/types";
14
+ import { ok } from "@breadboard-ai/utils";
15
+
16
+ export { ExportsDescriber };
17
+
18
+ class ExportsDescriber {
19
+ constructor(
20
+ private readonly mutable: MutableGraph,
21
+ private readonly describerFactory: GraphDescriberFactory
22
+ ) {}
23
+
24
+ async transform(result: NodeDescriberResult): Promise<NodeDescriberResult> {
25
+ const { exports } = this.mutable.graph;
26
+ if (!exports) return result;
27
+
28
+ const entries = Object.fromEntries(
29
+ (
30
+ await Promise.all(
31
+ exports.map(async (id) => {
32
+ const describer = this.describerFactory(id, this.mutable);
33
+ if (!ok(describer)) return null;
34
+
35
+ const result = await describer.describe();
36
+ const url = `${this.mutable.graph.url}${id}`;
37
+ return [url, result];
38
+ })
39
+ )
40
+ ).filter((item) => item !== null) as [string, NodeDescriberExport][]
41
+ );
42
+
43
+ return { ...result, exports: entries };
44
+ }
45
+ }
@@ -0,0 +1,54 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import {
9
+ GraphDescriptor,
10
+ GraphIdentifier,
11
+ InspectableGraph,
12
+ InspectableGraphCache,
13
+ InspectableSubgraphs,
14
+ } from "@breadboard-ai/types";
15
+
16
+ export { GraphCache };
17
+
18
+ type GraphFactory = (graphId: GraphIdentifier) => InspectableGraph;
19
+
20
+ class GraphCache implements InspectableGraphCache {
21
+ #factory: GraphFactory;
22
+ #graphs: Map<GraphIdentifier, InspectableGraph> = new Map();
23
+
24
+ constructor(factory: GraphFactory) {
25
+ this.#factory = factory;
26
+ }
27
+
28
+ rebuild(graph: GraphDescriptor) {
29
+ this.#graphs = new Map(
30
+ Object.keys(graph.graphs || []).map((id) => [id, this.#factory(id)])
31
+ );
32
+ this.#graphs.set("", this.#factory(""));
33
+ }
34
+
35
+ get(id: GraphIdentifier): InspectableGraph | undefined {
36
+ return this.#graphs.get(id);
37
+ }
38
+
39
+ add(id: GraphIdentifier): void {
40
+ this.#graphs.set(id, this.#factory(id));
41
+ }
42
+
43
+ graphs(): InspectableSubgraphs {
44
+ return Object.fromEntries([...this.#graphs.entries()].filter(([id]) => id));
45
+ }
46
+
47
+ remove(id: GraphIdentifier): void {
48
+ this.#graphs.delete(id);
49
+ }
50
+
51
+ clear(): void {
52
+ this.#graphs.clear();
53
+ }
54
+ }