rocket-engine 0.0.2b1__py3-none-any.whl

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 (241) hide show
  1. rocket_engine/__init__.py +8 -0
  2. rocket_engine/__main__.py +12 -0
  3. rocket_engine/adapters/README.md +54 -0
  4. rocket_engine/adapters/__init__.py +7 -0
  5. rocket_engine/adapters/api.py +39 -0
  6. rocket_engine/adapters/base.py +46 -0
  7. rocket_engine/adapters/cace/__init__.py +163 -0
  8. rocket_engine/adapters/circulax/README.md +10 -0
  9. rocket_engine/adapters/circulax/__init__.py +112 -0
  10. rocket_engine/adapters/circulax/_driver.py +190 -0
  11. rocket_engine/adapters/circulax/adapter.py +538 -0
  12. rocket_engine/adapters/circulax/results.py +291 -0
  13. rocket_engine/adapters/cli/README.md +34 -0
  14. rocket_engine/adapters/cli/__init__.py +305 -0
  15. rocket_engine/adapters/connectivity/__init__.py +196 -0
  16. rocket_engine/adapters/connectivity/results.py +214 -0
  17. rocket_engine/adapters/cosim/README.md +9 -0
  18. rocket_engine/adapters/cosim/__init__.py +1390 -0
  19. rocket_engine/adapters/cosim/results.py +214 -0
  20. rocket_engine/adapters/devsim/__init__.py +171 -0
  21. rocket_engine/adapters/digital_flow/README.md +9 -0
  22. rocket_engine/adapters/digital_flow/__init__.py +1121 -0
  23. rocket_engine/adapters/digital_flow/results.py +227 -0
  24. rocket_engine/adapters/digital_flow/state.py +462 -0
  25. rocket_engine/adapters/drc/README.klayout.md +7 -0
  26. rocket_engine/adapters/drc/README.md +7 -0
  27. rocket_engine/adapters/drc/__init__.py +1 -0
  28. rocket_engine/adapters/drc/klayout.py +952 -0
  29. rocket_engine/adapters/drc/magic.py +287 -0
  30. rocket_engine/adapters/drc/results.py +184 -0
  31. rocket_engine/adapters/drc/results_kl.py +188 -0
  32. rocket_engine/adapters/elmer/__init__.py +163 -0
  33. rocket_engine/adapters/envelope.py +120 -0
  34. rocket_engine/adapters/equivalence/__init__.py +156 -0
  35. rocket_engine/adapters/errors.py +181 -0
  36. rocket_engine/adapters/extract_magic/README.md +15 -0
  37. rocket_engine/adapters/extract_magic/__init__.py +425 -0
  38. rocket_engine/adapters/extract_magic/results.py +209 -0
  39. rocket_engine/adapters/formal_sby/README.md +7 -0
  40. rocket_engine/adapters/formal_sby/__init__.py +773 -0
  41. rocket_engine/adapters/formal_sby/formal_edge.py +195 -0
  42. rocket_engine/adapters/formal_sby/results.py +185 -0
  43. rocket_engine/adapters/gdsfactory/__init__.py +194 -0
  44. rocket_engine/adapters/gdsfactory/_driver.py +459 -0
  45. rocket_engine/adapters/gdsfactory/adapter.py +609 -0
  46. rocket_engine/adapters/gdsfactory/results.py +181 -0
  47. rocket_engine/adapters/hdl_sim/README.md +7 -0
  48. rocket_engine/adapters/hdl_sim/__init__.py +369 -0
  49. rocket_engine/adapters/hdl_sim/ghdl.py +155 -0
  50. rocket_engine/adapters/hdl_sim/results.py +178 -0
  51. rocket_engine/adapters/hdl_sim/verilator.py +167 -0
  52. rocket_engine/adapters/http/README.md +15 -0
  53. rocket_engine/adapters/http/__init__.py +458 -0
  54. rocket_engine/adapters/http/events.py +63 -0
  55. rocket_engine/adapters/ipc/README.md +9 -0
  56. rocket_engine/adapters/ipc/__init__.py +111 -0
  57. rocket_engine/adapters/lvs_netgen/README.md +20 -0
  58. rocket_engine/adapters/lvs_netgen/__init__.py +889 -0
  59. rocket_engine/adapters/lvs_netgen/results.py +168 -0
  60. rocket_engine/adapters/mcp/README.md +19 -0
  61. rocket_engine/adapters/mcp/__init__.py +85 -0
  62. rocket_engine/adapters/mcp/api-schema.json +6107 -0
  63. rocket_engine/adapters/mcp/pull.py +246 -0
  64. rocket_engine/adapters/mcp/server.py +794 -0
  65. rocket_engine/adapters/meep/__init__.py +167 -0
  66. rocket_engine/adapters/meow/README.md +7 -0
  67. rocket_engine/adapters/meow/__init__.py +190 -0
  68. rocket_engine/adapters/meow/_driver.py +227 -0
  69. rocket_engine/adapters/meow/_envelope.py +108 -0
  70. rocket_engine/adapters/meow/adapter.py +491 -0
  71. rocket_engine/adapters/meow/results.py +218 -0
  72. rocket_engine/adapters/mutation/__init__.py +192 -0
  73. rocket_engine/adapters/ngspice/README.md +28 -0
  74. rocket_engine/adapters/ngspice/__init__.py +627 -0
  75. rocket_engine/adapters/ngspice/results.py +215 -0
  76. rocket_engine/adapters/postlayout/README.md +28 -0
  77. rocket_engine/adapters/postlayout/__init__.py +17 -0
  78. rocket_engine/adapters/postlayout/adapter.py +1062 -0
  79. rocket_engine/adapters/postlayout/results.py +330 -0
  80. rocket_engine/adapters/postlayout/translate.py +71 -0
  81. rocket_engine/adapters/profile.py +220 -0
  82. rocket_engine/adapters/sax/README.md +23 -0
  83. rocket_engine/adapters/sax/__init__.py +516 -0
  84. rocket_engine/adapters/sax/_driver.py +148 -0
  85. rocket_engine/adapters/sax/results.py +291 -0
  86. rocket_engine/adapters/stdio_console.py +1151 -0
  87. rocket_engine/adapters/syntax/README.md +5 -0
  88. rocket_engine/adapters/syntax/__init__.py +366 -0
  89. rocket_engine/adapters/syntax/results.py +181 -0
  90. rocket_engine/adapters/synth_yosys/README.md +7 -0
  91. rocket_engine/adapters/synth_yosys/__init__.py +655 -0
  92. rocket_engine/adapters/synth_yosys/amaranth.py +120 -0
  93. rocket_engine/adapters/synth_yosys/ghdl.py +128 -0
  94. rocket_engine/adapters/synth_yosys/results.py +173 -0
  95. rocket_engine/adapters/timing_sta/README.md +9 -0
  96. rocket_engine/adapters/timing_sta/__init__.py +726 -0
  97. rocket_engine/adapters/view_sync/__init__.py +185 -0
  98. rocket_engine/adapters/view_sync/results.py +189 -0
  99. rocket_engine/adapters/vlsir/__init__.py +142 -0
  100. rocket_engine/adapters/xschem/__init__.py +440 -0
  101. rocket_engine/adapters/xschem/deck.py +266 -0
  102. rocket_engine/clients/__init__.py +5 -0
  103. rocket_engine/clients/runtime.py +255 -0
  104. rocket_engine/composition.py +2279 -0
  105. rocket_engine/execution/README.md +30 -0
  106. rocket_engine/execution/__init__.py +150 -0
  107. rocket_engine/execution/apig/__init__.py +1 -0
  108. rocket_engine/execution/apig/pool.py +463 -0
  109. rocket_engine/execution/apig/submit.py +124 -0
  110. rocket_engine/execution/block_runs_scope.py +479 -0
  111. rocket_engine/execution/coalesce.py +414 -0
  112. rocket_engine/execution/console/__init__.py +1 -0
  113. rocket_engine/execution/console/apply_session.py +318 -0
  114. rocket_engine/execution/console/lifecycle.py +265 -0
  115. rocket_engine/execution/dispatch.py +205 -0
  116. rocket_engine/execution/errors.py +31 -0
  117. rocket_engine/execution/ports.py +797 -0
  118. rocket_engine/execution/pyexec/__init__.py +1 -0
  119. rocket_engine/execution/pyexec/apply_context.py +547 -0
  120. rocket_engine/execution/pyexec/approvals.py +173 -0
  121. rocket_engine/execution/pyexec/runner.py +404 -0
  122. rocket_engine/execution/pyexec/support.py +464 -0
  123. rocket_engine/execution/python_exec.py +897 -0
  124. rocket_engine/execution/queue.py +85 -0
  125. rocket_engine/execution/replay_safe.py +601 -0
  126. rocket_engine/execution/routing/__init__.py +1 -0
  127. rocket_engine/execution/routing/calls.py +364 -0
  128. rocket_engine/execution/routing/namespace.py +785 -0
  129. rocket_engine/execution/routing/ports.py +102 -0
  130. rocket_engine/execution/routing/tools.py +346 -0
  131. rocket_engine/execution/runner.py +311 -0
  132. rocket_engine/execution/runtime.py +1149 -0
  133. rocket_engine/execution/service.py +279 -0
  134. rocket_engine/execution/worker.py +464 -0
  135. rocket_engine/interfaces/README.md +26 -0
  136. rocket_engine/interfaces/__init__.py +58 -0
  137. rocket_engine/interfaces/apig_assets.py +407 -0
  138. rocket_engine/interfaces/celllink.py +461 -0
  139. rocket_engine/interfaces/documents.py +92 -0
  140. rocket_engine/interfaces/envelopes.py +131 -0
  141. rocket_engine/interfaces/errors.py +16 -0
  142. rocket_engine/interfaces/layout.py +410 -0
  143. rocket_engine/interfaces/layout_schema.yaml +278 -0
  144. rocket_engine/interfaces/paths.py +223 -0
  145. rocket_engine/interfaces/pdks.py +550 -0
  146. rocket_engine/interfaces/ports.py +72 -0
  147. rocket_engine/interfaces/references.py +115 -0
  148. rocket_engine/interfaces/refs.py +85 -0
  149. rocket_engine/interfaces/runparams.py +304 -0
  150. rocket_engine/interfaces/setup.py +552 -0
  151. rocket_engine/interfaces/setup_catalogue.yaml +243 -0
  152. rocket_engine/interfaces/setup_probes.py +66 -0
  153. rocket_engine/interfaces/vocabulary.py +58 -0
  154. rocket_engine/interfaces/yaml_dump.py +31 -0
  155. rocket_engine/library/README.md +22 -0
  156. rocket_engine/library/__init__.py +13 -0
  157. rocket_engine/library/apig_catalog.py +371 -0
  158. rocket_engine/library/catalog.py +185 -0
  159. rocket_engine/library/errors.py +16 -0
  160. rocket_engine/mutate/__init__.py +776 -0
  161. rocket_engine/mutate/operators.py +700 -0
  162. rocket_engine/ops/__init__.py +1 -0
  163. rocket_engine/ops/deferred.py +279 -0
  164. rocket_engine/ops/editors.py +404 -0
  165. rocket_engine/ops/evidence.py +194 -0
  166. rocket_engine/ops/gates.py +262 -0
  167. rocket_engine/ops/ports.py +76 -0
  168. rocket_engine/ops/queries.py +417 -0
  169. rocket_engine/ops/runs.py +553 -0
  170. rocket_engine/ops/submit.py +614 -0
  171. rocket_engine/project/README.md +27 -0
  172. rocket_engine/project/__init__.py +6 -0
  173. rocket_engine/project/canvas/__init__.py +55 -0
  174. rocket_engine/project/canvas/compile.py +109 -0
  175. rocket_engine/project/canvas/integrate.py +48 -0
  176. rocket_engine/project/canvas/schema.py +241 -0
  177. rocket_engine/project/canvas/templates.py +46 -0
  178. rocket_engine/project/canvas/validate.py +603 -0
  179. rocket_engine/project/edit/__init__.py +5 -0
  180. rocket_engine/project/edit/cas.py +87 -0
  181. rocket_engine/project/edit/transactions.py +282 -0
  182. rocket_engine/project/errors.py +16 -0
  183. rocket_engine/project/frontend13.py +685 -0
  184. rocket_engine/project/geometry/__init__.py +23 -0
  185. rocket_engine/project/geometry/ops.py +451 -0
  186. rocket_engine/project/geometry/snap.py +103 -0
  187. rocket_engine/project/ip/__init__.py +1 -0
  188. rocket_engine/project/ip/blocks.py +195 -0
  189. rocket_engine/project/ip/entry.schema.json +78 -0
  190. rocket_engine/project/ip/lifecycle.py +402 -0
  191. rocket_engine/project/ip/verbs.py +123 -0
  192. rocket_engine/project/layers/__init__.py +6 -0
  193. rocket_engine/project/layers/bindings.py +115 -0
  194. rocket_engine/project/layers/catalog.py +228 -0
  195. rocket_engine/project/layers/presets.py +43 -0
  196. rocket_engine/project/ledger/__init__.py +1 -0
  197. rocket_engine/project/ledger/docs.py +167 -0
  198. rocket_engine/project/ledger/entities.py +176 -0
  199. rocket_engine/project/ledger/events.py +29 -0
  200. rocket_engine/project/ledger/runs.py +257 -0
  201. rocket_engine/project/ledger/shared.py +174 -0
  202. rocket_engine/project/ledger/snapshots.py +385 -0
  203. rocket_engine/project/ledger/wires.py +552 -0
  204. rocket_engine/project/process/__init__.py +14 -0
  205. rocket_engine/project/process/model.py +193 -0
  206. rocket_engine/project/process/recipes.py +121 -0
  207. rocket_engine/project/schematic/__init__.py +1 -0
  208. rocket_engine/project/schematic/hierarchy.py +312 -0
  209. rocket_engine/project/schematic/instances.py +393 -0
  210. rocket_engine/project/schematic/sheets.py +198 -0
  211. rocket_engine/project/service.py +2941 -0
  212. rocket_engine/project/symbols/__init__.py +1 -0
  213. rocket_engine/project/symbols/cells.py +324 -0
  214. rocket_engine/project/symbols/linkage.py +356 -0
  215. rocket_engine/project/symbols/symbols.py +352 -0
  216. rocket_engine/project/templates/__init__.py +303 -0
  217. rocket_engine/project/templates/errors.py +25 -0
  218. rocket_engine/project/testbench/__init__.py +49 -0
  219. rocket_engine/project/testbench/blocks.py +619 -0
  220. rocket_engine/project/testbench/templates.py +134 -0
  221. rocket_engine/stores/README.md +12 -0
  222. rocket_engine/stores/__init__.py +6 -0
  223. rocket_engine/stores/ecs.py +1508 -0
  224. rocket_engine/stores/layers.py +1023 -0
  225. rocket_engine/stores/settings.py +1188 -0
  226. rocket_engine/stores/wireplace.py +1324 -0
  227. rocket_engine/workflows/README.md +18 -0
  228. rocket_engine/workflows/__init__.py +53 -0
  229. rocket_engine/workflows/capability_plan.py +102 -0
  230. rocket_engine/workflows/completion.py +228 -0
  231. rocket_engine/workflows/connectgraph.py +734 -0
  232. rocket_engine/workflows/connectgraph_emit.py +336 -0
  233. rocket_engine/workflows/gates.py +144 -0
  234. rocket_engine/workflows/photonic_wire.py +76 -0
  235. rocket_engine/workflows/stages.py +324 -0
  236. rocket_engine/workflows/viewsync.py +399 -0
  237. rocket_engine-0.0.2b1.dist-info/METADATA +200 -0
  238. rocket_engine-0.0.2b1.dist-info/RECORD +241 -0
  239. rocket_engine-0.0.2b1.dist-info/WHEEL +4 -0
  240. rocket_engine-0.0.2b1.dist-info/entry_points.txt +2 -0
  241. rocket_engine-0.0.2b1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,102 @@
1
+ """Port handler seam: position-checked apply plus ack, shared by ports.
2
+
3
+ Every port handler honors position-check-then-apply: one
4
+ ledger position applies once per port, and every delivery —
5
+ first or duplicate — advances the ack. Handlers bind to the
6
+ port's own bus guard, so the check cannot drift per port.
7
+ """
8
+
9
+ from ..ports import PositionGuard
10
+
11
+
12
+ class PortHandler:
13
+ """One port's apply path: guard, apply, ack.
14
+
15
+ Args:
16
+ bus: PortBus the port is attached to.
17
+ port: Attached port name this handler serves.
18
+ guard: PositionGuard to check positions against; the
19
+ port's bound bus guard when omitted.
20
+ """
21
+
22
+ def __init__(self, bus, port, guard=None):
23
+ """Bind one handler to one port's guard and ack flow.
24
+
25
+ Args:
26
+ bus: PortBus the port is attached to.
27
+ port: Attached port name this handler serves.
28
+ guard: PositionGuard to check positions against;
29
+ the port's bound bus guard when omitted.
30
+
31
+ Returns:
32
+ Bound handler.
33
+ """
34
+ self._bus = bus
35
+ self._port = port
36
+ self._guard = (guard if guard is not None
37
+ else bus.guard_for(port))
38
+
39
+ @property
40
+ def port(self):
41
+ """Port name this handler serves.
42
+
43
+ Returns:
44
+ Attached port name.
45
+ """
46
+ return self._port
47
+
48
+ @property
49
+ def guard(self):
50
+ """Position guard this handler checks against.
51
+
52
+ Returns:
53
+ The bound PositionGuard.
54
+ """
55
+ return self._guard
56
+
57
+ def handle(self, event, apply):
58
+ """Apply one event once, then ack its position.
59
+
60
+ Args:
61
+ event: Ledger event mapping with an integer seq.
62
+ apply: Callable taking the event, run only when
63
+ its position is new for the port.
64
+
65
+ Returns:
66
+ (applied, result) pair: applied True plus the
67
+ apply result on first application, (False,
68
+ None) on a duplicate position. Either way the
69
+ position is acked.
70
+
71
+ Raises:
72
+ ExecutionError: invalid_command for an event
73
+ without an integer seq, unknown_port for a
74
+ detached port.
75
+ Exception: Whatever apply raises propagates, and
76
+ the position stays unapplied for redelivery.
77
+ """
78
+ seq = event.get("seq") if isinstance(event, dict) else None
79
+ applied, result = self._guard.apply_once(
80
+ self._port, seq, apply, event)
81
+ self._bus.ack(self._port, seq)
82
+ return applied, result
83
+
84
+ def drain(self, apply, limit=None):
85
+ """Drain the port backlog through one apply callable.
86
+
87
+ Args:
88
+ apply: Callable taking one event mapping, run
89
+ once per ledger position.
90
+ limit: Maximum events to deliver; the whole
91
+ backlog when omitted.
92
+
93
+ Returns:
94
+ Drain record with port, delivered and applied
95
+ counts, the acked position, and handler
96
+ error messages.
97
+
98
+ Raises:
99
+ ExecutionError: unknown_port for a detached port.
100
+ """
101
+ return self._bus.drain(self._port, apply,
102
+ limit=limit, guarded=True)
@@ -0,0 +1,346 @@
1
+ """Worker-side console op recorder in prelude shape."""
2
+
3
+ from .calls import tool_call
4
+
5
+
6
+ class ConsoleTools:
7
+ """Worker-side console namespace: tier-2 verbs as op records.
8
+
9
+ The recording twin of ConsoleNamespace: one explicit wrapper
10
+ per tier-2 verb plus a generic fallback for every other op,
11
+ each appending a canonical op-call record in the prelude shape
12
+ (operation plus verbatim keyword arguments) and answering the
13
+ recorded receipt. Recording never validates semantics and
14
+ never executes — the host replays each record through shared
15
+ dispatch after the worker exits, where admission judges it.
16
+
17
+ Args:
18
+ sink: Optional callable receiving every recorded entry
19
+ besides the calls list (a JSONL writer serves).
20
+ """
21
+
22
+ def __init__(self, sink=None):
23
+ self.calls = []
24
+ self._sink = sink
25
+ self._index = 0
26
+
27
+ def _record(self, operation, args, kwargs):
28
+ """Append one op record; positional args fail prelude-loud."""
29
+ if args:
30
+ raise TypeError(
31
+ "op calls take keyword arguments only: %s." % operation
32
+ )
33
+ entry = tool_call(operation, kwargs)
34
+ self.calls.append(entry)
35
+ if self._sink is not None:
36
+ self._sink(entry)
37
+ self._index += 1
38
+ return {"state": "recorded", "operation": operation,
39
+ "index": self._index}
40
+
41
+ def __getattr__(self, operation):
42
+ """Record one call to any op by name (generic fallback)."""
43
+ def call(*args, **kwargs):
44
+ return self._record(operation, args, kwargs)
45
+
46
+ return call
47
+
48
+ def write_doc(self, *args, **kwargs):
49
+ """Record one write_doc op call.
50
+
51
+ Args:
52
+ args: Rejected positionally, prelude parity.
53
+ kwargs: Keyword op arguments recorded verbatim.
54
+
55
+ Returns:
56
+ Recorded receipt with state, operation, and index.
57
+
58
+ Raises:
59
+ TypeError: When positional args arrive (keyword-only).
60
+ """
61
+ return self._record("write_doc", args, kwargs)
62
+
63
+ def delete_doc(self, *args, **kwargs):
64
+ """Record one delete_doc op call.
65
+
66
+ Args:
67
+ args: Rejected positionally, prelude parity.
68
+ kwargs: Keyword op arguments recorded verbatim.
69
+
70
+ Returns:
71
+ Recorded receipt with state, operation, and index.
72
+
73
+ Raises:
74
+ TypeError: When positional args arrive (keyword-only).
75
+ """
76
+ return self._record("delete_doc", args, kwargs)
77
+
78
+ def apply_mutations(self, *args, **kwargs):
79
+ """Record one apply_mutations op call.
80
+
81
+ Args:
82
+ args: Rejected positionally, prelude parity.
83
+ kwargs: Keyword op arguments recorded verbatim.
84
+
85
+ Returns:
86
+ Recorded receipt with state, operation, and index.
87
+
88
+ Raises:
89
+ TypeError: When positional args arrive (keyword-only).
90
+ """
91
+ return self._record("apply_mutations", args, kwargs)
92
+
93
+ def place_cell(self, *args, **kwargs):
94
+ """Record one place_cell op call.
95
+
96
+ Args:
97
+ args: Rejected positionally, prelude parity.
98
+ kwargs: Keyword op arguments recorded verbatim.
99
+
100
+ Returns:
101
+ Recorded receipt with state, operation, and index.
102
+
103
+ Raises:
104
+ TypeError: When positional args arrive (keyword-only).
105
+ """
106
+ return self._record("place_cell", args, kwargs)
107
+
108
+ def create_entity(self, *args, **kwargs):
109
+ """Record one create_entity op call.
110
+
111
+ Args:
112
+ args: Rejected positionally, prelude parity.
113
+ kwargs: Keyword op arguments recorded verbatim.
114
+
115
+ Returns:
116
+ Recorded receipt with state, operation, and index.
117
+
118
+ Raises:
119
+ TypeError: When positional args arrive (keyword-only).
120
+ """
121
+ return self._record("create_entity", args, kwargs)
122
+
123
+ def set_component(self, *args, **kwargs):
124
+ """Record one set_component op call.
125
+
126
+ Args:
127
+ args: Rejected positionally, prelude parity.
128
+ kwargs: Keyword op arguments recorded verbatim.
129
+
130
+ Returns:
131
+ Recorded receipt with state, operation, and index.
132
+
133
+ Raises:
134
+ TypeError: When positional args arrive (keyword-only).
135
+ """
136
+ return self._record("set_component", args, kwargs)
137
+
138
+ def attach_component(self, *args, **kwargs):
139
+ """Record one attach_component op call.
140
+
141
+ Args:
142
+ args: Rejected positionally, prelude parity.
143
+ kwargs: Keyword op arguments recorded verbatim.
144
+
145
+ Returns:
146
+ Recorded receipt with state, operation, and index.
147
+
148
+ Raises:
149
+ TypeError: When positional args arrive (keyword-only).
150
+ """
151
+ return self._record("attach_component", args, kwargs)
152
+
153
+ def detach_component(self, *args, **kwargs):
154
+ """Record one detach_component op call.
155
+
156
+ Args:
157
+ args: Rejected positionally, prelude parity.
158
+ kwargs: Keyword op arguments recorded verbatim.
159
+
160
+ Returns:
161
+ Recorded receipt with state, operation, and index.
162
+
163
+ Raises:
164
+ TypeError: When positional args arrive (keyword-only).
165
+ """
166
+ return self._record("detach_component", args, kwargs)
167
+
168
+ def delete_entity(self, *args, **kwargs):
169
+ """Record one delete_entity op call.
170
+
171
+ Args:
172
+ args: Rejected positionally, prelude parity.
173
+ kwargs: Keyword op arguments recorded verbatim.
174
+
175
+ Returns:
176
+ Recorded receipt with state, operation, and index.
177
+
178
+ Raises:
179
+ TypeError: When positional args arrive (keyword-only).
180
+ """
181
+ return self._record("delete_entity", args, kwargs)
182
+
183
+ def place_wire(self, *args, **kwargs):
184
+ """Record one place_wire op call.
185
+
186
+ Args:
187
+ args: Rejected positionally, prelude parity.
188
+ kwargs: Keyword op arguments recorded verbatim.
189
+
190
+ Returns:
191
+ Recorded receipt with state, operation, and index.
192
+
193
+ Raises:
194
+ TypeError: When positional args arrive (keyword-only).
195
+ """
196
+ return self._record("place_wire", args, kwargs)
197
+
198
+ def place_junction(self, *args, **kwargs):
199
+ """Record one place_junction op call.
200
+
201
+ Args:
202
+ args: Rejected positionally, prelude parity.
203
+ kwargs: Keyword op arguments recorded verbatim.
204
+
205
+ Returns:
206
+ Recorded receipt with state, operation, and index.
207
+
208
+ Raises:
209
+ TypeError: When positional args arrive (keyword-only).
210
+ """
211
+ return self._record("place_junction", args, kwargs)
212
+
213
+ def connect_endpoint(self, *args, **kwargs):
214
+ """Record one connect_endpoint op call.
215
+
216
+ Args:
217
+ args: Rejected positionally, prelude parity.
218
+ kwargs: Keyword op arguments recorded verbatim.
219
+
220
+ Returns:
221
+ Recorded receipt with state, operation, and index.
222
+
223
+ Raises:
224
+ TypeError: When positional args arrive (keyword-only).
225
+ """
226
+ return self._record("connect_endpoint", args, kwargs)
227
+
228
+ def move_wire(self, *args, **kwargs):
229
+ """Record one move_wire op call.
230
+
231
+ Args:
232
+ args: Rejected positionally, prelude parity.
233
+ kwargs: Keyword op arguments recorded verbatim.
234
+
235
+ Returns:
236
+ Recorded receipt with state, operation, and index.
237
+
238
+ Raises:
239
+ TypeError: When positional args arrive (keyword-only).
240
+ """
241
+ return self._record("move_wire", args, kwargs)
242
+
243
+ def split_wire(self, *args, **kwargs):
244
+ """Record one split_wire op call.
245
+
246
+ Args:
247
+ args: Rejected positionally, prelude parity.
248
+ kwargs: Keyword op arguments recorded verbatim.
249
+
250
+ Returns:
251
+ Recorded receipt with state, operation, and index.
252
+
253
+ Raises:
254
+ TypeError: When positional args arrive (keyword-only).
255
+ """
256
+ return self._record("split_wire", args, kwargs)
257
+
258
+ def delete_wire(self, *args, **kwargs):
259
+ """Record one delete_wire op call.
260
+
261
+ Args:
262
+ args: Rejected positionally, prelude parity.
263
+ kwargs: Keyword op arguments recorded verbatim.
264
+
265
+ Returns:
266
+ Recorded receipt with state, operation, and index.
267
+
268
+ Raises:
269
+ TypeError: When positional args arrive (keyword-only).
270
+ """
271
+ return self._record("delete_wire", args, kwargs)
272
+
273
+ def delete_junction(self, *args, **kwargs):
274
+ """Record one delete_junction op call.
275
+
276
+ Args:
277
+ args: Rejected positionally, prelude parity.
278
+ kwargs: Keyword op arguments recorded verbatim.
279
+
280
+ Returns:
281
+ Recorded receipt with state, operation, and index.
282
+
283
+ Raises:
284
+ TypeError: When positional args arrive (keyword-only).
285
+ """
286
+ return self._record("delete_junction", args, kwargs)
287
+
288
+ def materialize_nets(self, *args, **kwargs):
289
+ """Record one materialize_nets op call.
290
+
291
+ Args:
292
+ args: Rejected positionally, prelude parity.
293
+ kwargs: Keyword op arguments recorded verbatim.
294
+
295
+ Returns:
296
+ Recorded receipt with state, operation, and index.
297
+
298
+ Raises:
299
+ TypeError: When positional args arrive (keyword-only).
300
+ """
301
+ return self._record("materialize_nets", args, kwargs)
302
+
303
+ def create_project(self, *args, **kwargs):
304
+ """Record one create_project op call.
305
+
306
+ Args:
307
+ args: Rejected positionally, prelude parity.
308
+ kwargs: Keyword op arguments recorded verbatim.
309
+
310
+ Returns:
311
+ Recorded receipt with state, operation, and index.
312
+
313
+ Raises:
314
+ TypeError: When positional args arrive (keyword-only).
315
+ """
316
+ return self._record("create_project", args, kwargs)
317
+
318
+ def rewind(self, *args, **kwargs):
319
+ """Record one rewind op call.
320
+
321
+ Args:
322
+ args: Rejected positionally, prelude parity.
323
+ kwargs: Keyword op arguments recorded verbatim.
324
+
325
+ Returns:
326
+ Recorded receipt with state, operation, and index.
327
+
328
+ Raises:
329
+ TypeError: When positional args arrive (keyword-only).
330
+ """
331
+ return self._record("rewind", args, kwargs)
332
+
333
+ def write_settings(self, *args, **kwargs):
334
+ """Record one write_settings op call.
335
+
336
+ Args:
337
+ args: Rejected positionally, prelude parity.
338
+ kwargs: Keyword op arguments recorded verbatim.
339
+
340
+ Returns:
341
+ Recorded receipt with state, operation, and index.
342
+
343
+ Raises:
344
+ TypeError: When positional args arrive (keyword-only).
345
+ """
346
+ return self._record("write_settings", args, kwargs)