@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,64 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ InspectableGraph,
13
+ ModuleIdentifier,
14
+ SingleEditResult,
15
+ } from "@breadboard-ai/types";
16
+
17
+ export class ChangeModule implements EditOperation {
18
+ async can(
19
+ id: ModuleIdentifier,
20
+ inspector: InspectableGraph
21
+ ): Promise<SingleEditResult> {
22
+ const exists = !!inspector.moduleById(id);
23
+ if (!exists) {
24
+ return {
25
+ success: false,
26
+ error: `Unable to update module: module with id "${id}" does not exist`,
27
+ };
28
+ }
29
+ return {
30
+ success: true,
31
+ affectedNodes: [],
32
+ affectedModules: [id],
33
+ affectedGraphs: [],
34
+ };
35
+ }
36
+
37
+ async do(
38
+ spec: EditSpec,
39
+ context: EditOperationContext
40
+ ): Promise<SingleEditResult> {
41
+ if (spec.type !== "changemodule") {
42
+ throw new Error(
43
+ `Editor API integrity error: expected type "changemodule", received "${spec.type}" instead.`
44
+ );
45
+ }
46
+ const id = spec.id;
47
+ const { graph, mutable } = context;
48
+ const inspector = mutable.graphs.get("")!;
49
+ const can = await this.can(id, inspector);
50
+ if (!can.success) {
51
+ return can;
52
+ }
53
+
54
+ graph.modules = graph.modules || {};
55
+ graph.modules[spec.id] = spec.module;
56
+ return {
57
+ success: true,
58
+ affectedNodes: [],
59
+ affectedModules: [spec.id],
60
+ affectedGraphs: [],
61
+ visualOnly: false,
62
+ };
63
+ }
64
+ }
@@ -0,0 +1,21 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type { GraphIdentifier, SingleEditResult } from "@breadboard-ai/types";
9
+
10
+ export { error, errorNoInspect };
11
+
12
+ function errorNoInspect(graphId: GraphIdentifier) {
13
+ return error(`Unable to inspect graph with the id of "${graphId}"`);
14
+ }
15
+
16
+ function error(message: string): SingleEditResult {
17
+ return {
18
+ success: false,
19
+ error: message,
20
+ };
21
+ }
@@ -0,0 +1,48 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ SingleEditResult,
13
+ } from "@breadboard-ai/types";
14
+
15
+ export { RemoveAsset };
16
+
17
+ class RemoveAsset implements EditOperation {
18
+ async do(
19
+ spec: EditSpec,
20
+ context: EditOperationContext
21
+ ): Promise<SingleEditResult> {
22
+ if (spec.type !== "removeasset") {
23
+ throw new Error(
24
+ `Editor API integrity error: expected type "removeasset", received "${spec.type}" instead.`
25
+ );
26
+ }
27
+
28
+ const { path } = spec;
29
+
30
+ const {
31
+ graph: { assets },
32
+ } = context;
33
+
34
+ if (assets) {
35
+ delete assets[path];
36
+ if (Object.keys(assets).length === 0) {
37
+ delete context.graph.assets;
38
+ }
39
+ }
40
+
41
+ return {
42
+ success: true,
43
+ affectedGraphs: [],
44
+ affectedModules: [],
45
+ affectedNodes: [],
46
+ };
47
+ }
48
+ }
@@ -0,0 +1,89 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ EditableEdgeSpec,
13
+ GraphIdentifier,
14
+ InspectableGraph,
15
+ SingleEditResult,
16
+ } from "@breadboard-ai/types";
17
+ import { fixUpStarEdge } from "../../inspector/graph/edge.js";
18
+ import { GraphDescriptorHandle } from "../../inspector/graph/graph-descriptor-handle.js";
19
+ import { findEdgeIndex } from "../edge.js";
20
+ import { errorNoInspect } from "./error.js";
21
+
22
+ export class RemoveEdge implements EditOperation {
23
+ async can(
24
+ spec: EditableEdgeSpec,
25
+ inspector: InspectableGraph,
26
+ graphId: GraphIdentifier
27
+ ): Promise<SingleEditResult> {
28
+ if (!inspector.hasEdge(spec)) {
29
+ return {
30
+ success: false,
31
+ error: `Edge from "${spec.from}:${spec.out}" to "${spec.to}:${spec.in}" does not exist`,
32
+ };
33
+ }
34
+ return {
35
+ success: true,
36
+ affectedNodes: [
37
+ { id: spec.from, graphId },
38
+ { id: spec.to, graphId },
39
+ ],
40
+ affectedModules: [],
41
+ affectedGraphs: [],
42
+ topologyChange: true,
43
+ };
44
+ }
45
+
46
+ async do(
47
+ spec: EditSpec,
48
+ context: EditOperationContext
49
+ ): Promise<SingleEditResult> {
50
+ if (spec.type !== "removeedge") {
51
+ throw new Error(
52
+ `Editor API integrity error: expected type "removeedge", received "${spec.type}" instead.`
53
+ );
54
+ }
55
+ let edge = spec.edge;
56
+ const { graphId } = spec;
57
+ const { mutable } = context;
58
+ const inspector = mutable.graphs.get(graphId);
59
+ if (!inspector) {
60
+ return errorNoInspect(graphId);
61
+ }
62
+
63
+ const can = await this.can(edge, inspector, graphId);
64
+ if (!can.success) {
65
+ return can;
66
+ }
67
+ const handle = GraphDescriptorHandle.create(context.graph, graphId);
68
+ if (!handle.success) {
69
+ return handle;
70
+ }
71
+ const graph = handle.result.graph();
72
+
73
+ edge = fixUpStarEdge(edge);
74
+ const edges = graph.edges;
75
+ const index = findEdgeIndex(graph, edge);
76
+ const foundEdge = edges.splice(index, 1)[0];
77
+ mutable.edges.remove(foundEdge, graphId);
78
+ return {
79
+ success: true,
80
+ affectedNodes: [
81
+ { id: edge.from, graphId },
82
+ { id: edge.to, graphId },
83
+ ],
84
+ affectedModules: [],
85
+ affectedGraphs: [graphId],
86
+ topologyChange: true,
87
+ };
88
+ }
89
+ }
@@ -0,0 +1,49 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ SingleEditResult,
13
+ } from "@breadboard-ai/types";
14
+
15
+ export { RemoveGraph };
16
+
17
+ class RemoveGraph implements EditOperation {
18
+ async do(
19
+ edit: EditSpec,
20
+ context: EditOperationContext
21
+ ): Promise<SingleEditResult> {
22
+ if (edit.type !== "removegraph") {
23
+ throw new Error(
24
+ `Editor API integrity error: expected type "removegraph", received "${edit.type}" instead.`
25
+ );
26
+ }
27
+ const { id } = edit;
28
+ const { graph, mutable } = context;
29
+
30
+ if (!graph.graphs || !graph.graphs?.[id]) {
31
+ return {
32
+ success: false,
33
+ error: `Failed to remove graph: "${id}" does not exist.`,
34
+ };
35
+ }
36
+ delete graph.graphs[id];
37
+ if (!Object.keys(graph.graphs).length) {
38
+ delete graph.graphs;
39
+ }
40
+ mutable.removeSubgraph(id);
41
+
42
+ return {
43
+ success: true,
44
+ affectedModules: [],
45
+ affectedNodes: [],
46
+ affectedGraphs: [id],
47
+ };
48
+ }
49
+ }
@@ -0,0 +1,54 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ SingleEditResult,
13
+ } from "@breadboard-ai/types";
14
+
15
+ export { RemoveIntegration };
16
+
17
+ class RemoveIntegration implements EditOperation {
18
+ async do(
19
+ spec: EditSpec,
20
+ context: EditOperationContext
21
+ ): Promise<SingleEditResult> {
22
+ if (spec.type !== "removeintegration") {
23
+ throw new Error(
24
+ `Editor API integrity error: expected type "removeintegration", received "${spec.type}" instead.`
25
+ );
26
+ }
27
+
28
+ const { id } = spec;
29
+
30
+ const {
31
+ graph: { integrations },
32
+ } = context;
33
+
34
+ let noChange = false;
35
+
36
+ if (integrations?.[id]) {
37
+ delete integrations[id];
38
+ if (Object.keys(integrations).length === 0) {
39
+ delete context.graph.integrations;
40
+ }
41
+ } else {
42
+ noChange = true;
43
+ }
44
+
45
+ return {
46
+ success: true,
47
+ affectedGraphs: [],
48
+ affectedModules: [],
49
+ affectedNodes: [],
50
+ integrationsChange: true,
51
+ noChange,
52
+ };
53
+ }
54
+ }
@@ -0,0 +1,69 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ InspectableGraph,
13
+ ModuleIdentifier,
14
+ SingleEditResult,
15
+ } from "@breadboard-ai/types";
16
+
17
+ export class RemoveModule implements EditOperation {
18
+ async can(
19
+ id: ModuleIdentifier,
20
+ inspector: InspectableGraph
21
+ ): Promise<SingleEditResult> {
22
+ if (!inspector.moduleById(id)) {
23
+ return {
24
+ success: false,
25
+ error: `Module "${id}" does not exist`,
26
+ };
27
+ }
28
+ return {
29
+ success: true,
30
+ affectedNodes: [],
31
+ affectedModules: [id],
32
+ affectedGraphs: [],
33
+ };
34
+ }
35
+
36
+ async do(
37
+ spec: EditSpec,
38
+ context: EditOperationContext
39
+ ): Promise<SingleEditResult> {
40
+ if (spec.type !== "removemodule") {
41
+ throw new Error(
42
+ `Editor API integrity error: expected type "removemodule", received "${spec.type}" instead.`
43
+ );
44
+ }
45
+ const { id } = spec;
46
+ const { graph, mutable } = context;
47
+ const inspector = mutable.graphs.get("")!;
48
+ const can = await this.can(id, inspector);
49
+ if (!can.success) {
50
+ return can;
51
+ }
52
+
53
+ if (!graph.modules) {
54
+ return {
55
+ success: false,
56
+ error: `Modules do not exist on graph`,
57
+ };
58
+ }
59
+
60
+ delete graph.modules[id];
61
+
62
+ return {
63
+ success: true,
64
+ affectedNodes: [],
65
+ affectedModules: [id],
66
+ affectedGraphs: [],
67
+ };
68
+ }
69
+ }
@@ -0,0 +1,86 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2024 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ GraphIdentifier,
13
+ InspectableGraph,
14
+ NodeIdentifier,
15
+ SingleEditResult,
16
+ } from "@breadboard-ai/types";
17
+ import { GraphDescriptorHandle } from "../../inspector/graph/graph-descriptor-handle.js";
18
+ import { errorNoInspect } from "./error.js";
19
+
20
+ export class RemoveNode implements EditOperation {
21
+ async can(
22
+ id: NodeIdentifier,
23
+ inspector: InspectableGraph,
24
+ graphId: GraphIdentifier
25
+ ): Promise<SingleEditResult> {
26
+ const exists = !!inspector.nodeById(id);
27
+ if (!exists) {
28
+ return {
29
+ success: false,
30
+ error: `Unable to remove node: node with id "${id}" does not exist`,
31
+ };
32
+ }
33
+ return {
34
+ success: true,
35
+ affectedNodes: [{ id, graphId }],
36
+ affectedModules: [],
37
+ affectedGraphs: [],
38
+ topologyChange: true,
39
+ };
40
+ }
41
+
42
+ async do(
43
+ spec: EditSpec,
44
+ context: EditOperationContext
45
+ ): Promise<SingleEditResult> {
46
+ if (spec.type !== "removenode") {
47
+ throw new Error(
48
+ `Editor API integrity error: expected type "removenode", received "${spec.type}" instead.`
49
+ );
50
+ }
51
+ const { id, graphId } = spec;
52
+ const { mutable } = context;
53
+ const inspector = mutable.graphs.get(graphId);
54
+ if (!inspector) {
55
+ return errorNoInspect(graphId);
56
+ }
57
+ const can = await this.can(id, inspector, graphId);
58
+ if (!can.success) {
59
+ return can;
60
+ }
61
+ const handle = GraphDescriptorHandle.create(context.graph, graphId);
62
+ if (!handle.success) {
63
+ return handle;
64
+ }
65
+ const graph = handle.result.graph();
66
+
67
+ // Remove any edges that are connected to the removed node.
68
+ graph.edges = graph.edges.filter((edge) => {
69
+ const shouldRemove = edge.from === id || edge.to === id;
70
+ if (shouldRemove) {
71
+ mutable.edges.remove(edge, graphId);
72
+ }
73
+ return !shouldRemove;
74
+ });
75
+ // Remove the node from the graph.
76
+ graph.nodes = graph.nodes.filter((node) => node.id != id);
77
+ mutable.nodes.remove(id, graphId);
78
+ return {
79
+ success: true,
80
+ affectedNodes: [{ id, graphId }],
81
+ affectedModules: [],
82
+ affectedGraphs: [graphId],
83
+ topologyChange: true,
84
+ };
85
+ }
86
+ }
@@ -0,0 +1,52 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ SingleEditResult,
13
+ } from "@breadboard-ai/types";
14
+
15
+ export class ReplaceGraph implements EditOperation {
16
+ async do(
17
+ edit: EditSpec,
18
+ context: EditOperationContext
19
+ ): Promise<SingleEditResult> {
20
+ if (edit.type !== "replacegraph") {
21
+ throw new Error(
22
+ `Editor API integrity error: expected type "replacegraph", received "${edit.type}" instead.`
23
+ );
24
+ }
25
+
26
+ // Do a full in-place replacement of the graph. Re-assigning onto context
27
+ // won't work because the object itself is captured and used elsewhere.
28
+ const originalUrl = context.graph.url;
29
+ for (const key in context.graph) {
30
+ if (Object.prototype.hasOwnProperty.call(context.graph, key)) {
31
+ delete context.graph[key as keyof typeof context.graph];
32
+ }
33
+ }
34
+ Object.assign(context.graph, edit.replacement);
35
+ // Ensure the URL doesn't change; it's very important.
36
+ context.graph.url = originalUrl;
37
+
38
+ // Also update the "mutable" graph, which is actually a bunch of caches for
39
+ // the UI that are not automatically synchronized with the actual graph.
40
+ context.mutable.rebuild(edit.replacement);
41
+
42
+ return {
43
+ success: true,
44
+ // We don't need to include any affected things, because rebuild replaces
45
+ // them anyway.
46
+ affectedModules: [],
47
+ affectedNodes: [],
48
+ affectedGraphs: [],
49
+ topologyChange: true,
50
+ };
51
+ }
52
+ }
@@ -0,0 +1,72 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ GraphIdentifier,
13
+ ModuleIdentifier,
14
+ SingleEditResult,
15
+ } from "@breadboard-ai/types";
16
+
17
+ export class ToggleExport implements EditOperation {
18
+ async do(
19
+ spec: EditSpec,
20
+ context: EditOperationContext
21
+ ): Promise<SingleEditResult> {
22
+ if (spec.type !== "toggleexport") {
23
+ throw new Error(
24
+ `Editor API integrity error: expected type "toggleexport", received "${spec.type}" instead.`
25
+ );
26
+ }
27
+ const { id, exportType: type } = spec;
28
+ const { mutable } = context;
29
+
30
+ let exportId;
31
+ const affectedGraphs: GraphIdentifier[] = [];
32
+ const affectedModules: ModuleIdentifier[] = [];
33
+
34
+ if (type === "imperative") {
35
+ // toggle module export.
36
+ const moduleId = id as ModuleIdentifier;
37
+ if (!mutable.graph.modules?.[moduleId]) {
38
+ return {
39
+ success: false,
40
+ error: `Unable to toggle export: module "${moduleId}" does not exist.`,
41
+ };
42
+ }
43
+ exportId = `#module:${id}`;
44
+ affectedModules.push(id);
45
+ } else {
46
+ // toggle graph export.
47
+ const graphId = id as GraphIdentifier;
48
+ if (graphId !== "" && !mutable.graph.graphs?.[graphId]) {
49
+ return {
50
+ success: false,
51
+ error: `Unable to toggle export: graph "${graphId}" does not exist.`,
52
+ };
53
+ }
54
+ exportId = `#${id}`;
55
+ affectedGraphs.push(id);
56
+ }
57
+
58
+ const exports = new Set(mutable.graph.exports || []);
59
+ if (exports.has(exportId)) {
60
+ exports.delete(exportId);
61
+ } else {
62
+ exports.add(exportId);
63
+ }
64
+ mutable.graph.exports = [...exports];
65
+ return {
66
+ success: true,
67
+ affectedNodes: [],
68
+ affectedModules,
69
+ affectedGraphs,
70
+ };
71
+ }
72
+ }
@@ -0,0 +1,43 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+
8
+ import type {
9
+ EditOperation,
10
+ EditOperationContext,
11
+ EditSpec,
12
+ SingleEditResult,
13
+ } from "@breadboard-ai/types";
14
+
15
+ export { UpsertInteration };
16
+
17
+ class UpsertInteration implements EditOperation {
18
+ async do(
19
+ spec: EditSpec,
20
+ context: EditOperationContext
21
+ ): Promise<SingleEditResult> {
22
+ if (spec.type !== "upsertintegration") {
23
+ throw new Error(
24
+ `Editor API integrity error: expected type "upsertintegration", received "${spec.type}" instead.`
25
+ );
26
+ }
27
+
28
+ const { id, integration } = spec;
29
+
30
+ const { graph } = context;
31
+
32
+ graph.integrations ??= {};
33
+ graph.integrations[id] = integration;
34
+
35
+ return {
36
+ success: true,
37
+ affectedGraphs: [],
38
+ affectedModules: [],
39
+ affectedNodes: [],
40
+ integrationsChange: true,
41
+ };
42
+ }
43
+ }