@huaqiu/hqeda 0.1.1

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.
package/README.md ADDED
@@ -0,0 +1,2405 @@
1
+ # @huaqiu/hqeda
2
+
3
+ Official HQ EDA Skill Package — executable SDK capabilities and review playbooks.
4
+
5
+ > This README is fully generated by `pnpm capability:generate`.
6
+ > Do not edit by hand. To add documentation, update the proto
7
+ > JSDoc or the integration tests under `packages/huaqiu-client/test`.
8
+
9
+ - **Total capabilities:** 110
10
+ - **Domains:** 18
11
+ - **SDK source:** `platform/sdk/ts/src/generated/`
12
+ - **Test source:** `packages/huaqiu-client/test/`
13
+
14
+ ## Capability Catalog
15
+
16
+ ### `ai`
17
+
18
+ | Skill ID | Service.Method | Description | Input | Streaming |
19
+ | --- | --- | --- | --- | --- |
20
+ | `ai-execute-prompt` | `AIService.ExecutePrompt` | Execute Prompt via AIService.ExecutePrompt | `AIRequest` | |
21
+
22
+ #### `ai-execute-prompt`
23
+
24
+ > Execute Prompt via AIService.ExecutePrompt
25
+
26
+ - **Service:** AIService (`AIService`)
27
+ - **Method:** ExecutePrompt (`unary`)
28
+ - **Request type:** `AIRequest`
29
+ - **Response type:** `AIResponse`
30
+ - **Streaming:** false
31
+
32
+ **Parameters:**
33
+
34
+ | Name | Type | Required | Repeated | Description |
35
+ | --- | --- | --- | --- | --- |
36
+ | `context` | `ProjectContext` | | | |
37
+ | `prompt` | `string` | ✓ | | |
38
+
39
+ ### `bom`
40
+
41
+ | Skill ID | Service.Method | Description | Input | Streaming |
42
+ | --- | --- | --- | --- | --- |
43
+ | `bom-get-bom` | `EdaBomService.GetBom` | Get full BOM snapshot from current schematic state | `GetBomRequest` | |
44
+
45
+ #### `bom-get-bom`
46
+
47
+ > Get full BOM snapshot from current schematic state
48
+
49
+ - **Service:** EdaBomService (`EdaBomService`)
50
+ - **Method:** GetBom (`unary`)
51
+ - **Request type:** `GetBomRequest`
52
+ - **Response type:** `EdaBom`
53
+ - **Streaming:** false
54
+
55
+ **Parameters:**
56
+
57
+ | Name | Type | Required | Repeated | Description |
58
+ | --- | --- | --- | --- | --- |
59
+ | `projectId` | `string` | ✓ | | |
60
+
61
+ **Examples:**
62
+
63
+ - *retrieves BOM for a discovered project* (`bom.test.ts`)
64
+
65
+ ```json
66
+ {
67
+ "projectId": "<projectId>"
68
+ }
69
+ ```
70
+ - *BOM rows contain references* (`bom.test.ts`)
71
+
72
+ ```json
73
+ {
74
+ "projectId": "<projectId>"
75
+ }
76
+ ```
77
+ - *toJson produces LLM-friendly JSON output* (`bom.test.ts`)
78
+
79
+ ```json
80
+ {
81
+ "projectId": "<projectId>"
82
+ }
83
+ ```
84
+ - *server is responsive on port 59999* (`health-check.test.ts`)
85
+
86
+ ```json
87
+ {
88
+ "projectId": "<BinaryExpression>"
89
+ }
90
+ ```
91
+ - *get BOM for a discovered project* (`integration.test.ts`)
92
+
93
+ ```json
94
+ {
95
+ "projectId": "<projectId>"
96
+ }
97
+ ```
98
+
99
+ ### `canvas`
100
+
101
+ | Skill ID | Service.Method | Description | Input | Streaming |
102
+ | --- | --- | --- | --- | --- |
103
+ | `canvas-align-objects` | `CanvasOpsService.AlignObjects` | transform | `AlignModeRequest` | |
104
+ | `canvas-can-paste` | `CanvasOpsService.CanPaste` | Can Paste via CanvasOpsService.CanPaste | `CanvasContextRequest` | |
105
+ | `canvas-clear-all-sel` | `CanvasOpsService.ClearAllSel` | selection | `CanvasContextRequest` | |
106
+ | `canvas-copy-selected` | `CanvasOpsService.CopySelected` | Copy Selected via CanvasOpsService.CopySelected | `CanvasContextRequest` | |
107
+ | `canvas-delete-selected` | `CanvasOpsService.DeleteSelected` | edit | `CanvasContextRequest` | |
108
+ | `canvas-distribute-objects` | `CanvasOpsService.DistributeObjects` | Distribute Objects via CanvasOpsService.DistributeObjects | `AlignModeRequest` | |
109
+ | `canvas-get-align-type` | `CanvasOpsService.GetAlignType` | Get Align Type via CanvasOpsService.GetAlignType | `GetAlignTypeRequest` | |
110
+ | `canvas-get-selected-object-json` | `CanvasOpsService.GetSelectedObjectJson` | Get Selected Object Json via CanvasOpsService.GetSelectedObjectJson | `CanvasContextRequest` | |
111
+ | `canvas-get-selected-objects-json` | `CanvasOpsService.GetSelectedObjectsJson` | Get Selected Objects Json via CanvasOpsService.GetSelectedObjectsJson | `CanvasContextRequest` | |
112
+ | `canvas-mirror-objects` | `CanvasOpsService.MirrorObjects` | Mirror Objects via CanvasOpsService.MirrorObjects | `AlignModeRequest` | |
113
+ | `canvas-move-selected-objs` | `CanvasOpsService.MoveSelectedObjs` | Move Selected Objs via CanvasOpsService.MoveSelectedObjs | `MoveSelectedObjsRequest` | |
114
+ | `canvas-on-canvas-escape` | `CanvasOpsService.OnCanvasEscape` | state | `OnCanvasEscapeRequest` | |
115
+ | `canvas-pan-canvas` | `CanvasOpsService.PanCanvas` | viewport | `PanCanvasRequest` | |
116
+ | `canvas-paste-selected` | `CanvasOpsService.PasteSelected` | Paste Selected via CanvasOpsService.PasteSelected | `PasteRequest` | |
117
+ | `canvas-rotate-objects` | `CanvasOpsService.RotateObjects` | Rotate Objects via CanvasOpsService.RotateObjects | `CanvasContextRequest` | |
118
+ | `canvas-screen-to-canvas-local` | `CanvasOpsService.ScreenToCanvasLocal` | coordinate | `ScreenToCanvasLocalRequest` | |
119
+ | `canvas-select-all` | `CanvasOpsService.SelectAll` | Select All via CanvasOpsService.SelectAll | `CanvasContextRequest` | |
120
+ | `canvas-select-object-at` | `CanvasOpsService.SelectObjectAt` | Select Object At via CanvasOpsService.SelectObjectAt | `WindowClickRequest` | |
121
+ | `canvas-set-align-type` | `CanvasOpsService.SetAlignType` | grid align | `SetAlignTypeRequest` | |
122
+ | `canvas-set-page-size` | `CanvasOpsService.SetPageSize` | page | `SetPageSizeRequest` | |
123
+ | `canvas-set-page-size-rect` | `CanvasOpsService.SetPageSizeRect` | Set Page Size Rect via CanvasOpsService.SetPageSizeRect | `SetPageSizeRectRequest` | |
124
+ | `canvas-zoom-all` | `CanvasOpsService.ZoomAll` | Zoom All via CanvasOpsService.ZoomAll | `CanvasContextRequest` | |
125
+ | `canvas-zoom-area-by-double-box` | `CanvasOpsService.ZoomAreaByDoubleBox` | Zoom Area By Double Box via CanvasOpsService.ZoomAreaByDoubleBox | `ZoomAreaDoubleBoxRequest` | |
126
+ | `canvas-zoom-area-by-int-box` | `CanvasOpsService.ZoomAreaByIntBox` | Zoom Area By Int Box via CanvasOpsService.ZoomAreaByIntBox | `ZoomAreaIntBoxRequest` | |
127
+ | `canvas-zoom-area-by-points` | `CanvasOpsService.ZoomAreaByPoints` | Zoom Area By Points via CanvasOpsService.ZoomAreaByPoints | `ZoomAreaPointsRequest` | |
128
+ | `canvas-zoom-in` | `CanvasOpsService.ZoomIn` | zoom | `CanvasContextRequest` | |
129
+ | `canvas-zoom-out` | `CanvasOpsService.ZoomOut` | Zoom Out via CanvasOpsService.ZoomOut | `CanvasContextRequest` | |
130
+ | `canvas-zoom-selected` | `CanvasOpsService.ZoomSelected` | Zoom Selected via CanvasOpsService.ZoomSelected | `CanvasContextRequest` | |
131
+
132
+ #### `canvas-align-objects`
133
+
134
+ > transform
135
+
136
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
137
+ - **Method:** AlignObjects (`unary`)
138
+ - **Request type:** `AlignModeRequest`
139
+ - **Response type:** `SuccessResponse`
140
+ - **Streaming:** false
141
+
142
+ **Parameters:**
143
+
144
+ | Name | Type | Required | Repeated | Description |
145
+ | --- | --- | --- | --- | --- |
146
+ | `context` | `ProjectContext` | | | |
147
+ | `mode` | `number` | ✓ | | |
148
+
149
+ #### `canvas-can-paste`
150
+
151
+ > Can Paste via CanvasOpsService.CanPaste
152
+
153
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
154
+ - **Method:** CanPaste (`unary`)
155
+ - **Request type:** `CanvasContextRequest`
156
+ - **Response type:** `BoolResponse`
157
+ - **Streaming:** false
158
+
159
+ **Parameters:**
160
+
161
+ | Name | Type | Required | Repeated | Description |
162
+ | --- | --- | --- | --- | --- |
163
+ | `context` | `ProjectContext` | | | |
164
+
165
+ #### `canvas-clear-all-sel`
166
+
167
+ > selection
168
+
169
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
170
+ - **Method:** ClearAllSel (`unary`)
171
+ - **Request type:** `CanvasContextRequest`
172
+ - **Response type:** `SuccessResponse`
173
+ - **Streaming:** false
174
+
175
+ **Parameters:**
176
+
177
+ | Name | Type | Required | Repeated | Description |
178
+ | --- | --- | --- | --- | --- |
179
+ | `context` | `ProjectContext` | | | |
180
+
181
+ #### `canvas-copy-selected`
182
+
183
+ > Copy Selected via CanvasOpsService.CopySelected
184
+
185
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
186
+ - **Method:** CopySelected (`unary`)
187
+ - **Request type:** `CanvasContextRequest`
188
+ - **Response type:** `SuccessResponse`
189
+ - **Streaming:** false
190
+
191
+ **Parameters:**
192
+
193
+ | Name | Type | Required | Repeated | Description |
194
+ | --- | --- | --- | --- | --- |
195
+ | `context` | `ProjectContext` | | | |
196
+
197
+ #### `canvas-delete-selected`
198
+
199
+ > edit
200
+
201
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
202
+ - **Method:** DeleteSelected (`unary`)
203
+ - **Request type:** `CanvasContextRequest`
204
+ - **Response type:** `SuccessResponse`
205
+ - **Streaming:** false
206
+
207
+ **Parameters:**
208
+
209
+ | Name | Type | Required | Repeated | Description |
210
+ | --- | --- | --- | --- | --- |
211
+ | `context` | `ProjectContext` | | | |
212
+
213
+ #### `canvas-distribute-objects`
214
+
215
+ > Distribute Objects via CanvasOpsService.DistributeObjects
216
+
217
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
218
+ - **Method:** DistributeObjects (`unary`)
219
+ - **Request type:** `AlignModeRequest`
220
+ - **Response type:** `SuccessResponse`
221
+ - **Streaming:** false
222
+
223
+ **Parameters:**
224
+
225
+ | Name | Type | Required | Repeated | Description |
226
+ | --- | --- | --- | --- | --- |
227
+ | `context` | `ProjectContext` | | | |
228
+ | `mode` | `number` | ✓ | | |
229
+
230
+ #### `canvas-get-align-type`
231
+
232
+ > Get Align Type via CanvasOpsService.GetAlignType
233
+
234
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
235
+ - **Method:** GetAlignType (`unary`)
236
+ - **Request type:** `GetAlignTypeRequest`
237
+ - **Response type:** `GetAlignTypeResponse`
238
+ - **Streaming:** false
239
+
240
+ **Parameters:**
241
+
242
+ | Name | Type | Required | Repeated | Description |
243
+ | --- | --- | --- | --- | --- |
244
+ | `context` | `ProjectContext` | | | |
245
+ | `alignStyle` | `number` | ✓ | | |
246
+
247
+ #### `canvas-get-selected-object-json`
248
+
249
+ > Get Selected Object Json via CanvasOpsService.GetSelectedObjectJson
250
+
251
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
252
+ - **Method:** GetSelectedObjectJson (`unary`)
253
+ - **Request type:** `CanvasContextRequest`
254
+ - **Response type:** `SelectedObjectJsonResponse`
255
+ - **Streaming:** false
256
+
257
+ **Parameters:**
258
+
259
+ | Name | Type | Required | Repeated | Description |
260
+ | --- | --- | --- | --- | --- |
261
+ | `context` | `ProjectContext` | | | |
262
+
263
+ #### `canvas-get-selected-objects-json`
264
+
265
+ > Get Selected Objects Json via CanvasOpsService.GetSelectedObjectsJson
266
+
267
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
268
+ - **Method:** GetSelectedObjectsJson (`unary`)
269
+ - **Request type:** `CanvasContextRequest`
270
+ - **Response type:** `SelectedObjectsJsonResponse`
271
+ - **Streaming:** false
272
+
273
+ **Parameters:**
274
+
275
+ | Name | Type | Required | Repeated | Description |
276
+ | --- | --- | --- | --- | --- |
277
+ | `context` | `ProjectContext` | | | |
278
+
279
+ #### `canvas-mirror-objects`
280
+
281
+ > Mirror Objects via CanvasOpsService.MirrorObjects
282
+
283
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
284
+ - **Method:** MirrorObjects (`unary`)
285
+ - **Request type:** `AlignModeRequest`
286
+ - **Response type:** `SuccessResponse`
287
+ - **Streaming:** false
288
+
289
+ **Parameters:**
290
+
291
+ | Name | Type | Required | Repeated | Description |
292
+ | --- | --- | --- | --- | --- |
293
+ | `context` | `ProjectContext` | | | |
294
+ | `mode` | `number` | ✓ | | |
295
+
296
+ #### `canvas-move-selected-objs`
297
+
298
+ > Move Selected Objs via CanvasOpsService.MoveSelectedObjs
299
+
300
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
301
+ - **Method:** MoveSelectedObjs (`unary`)
302
+ - **Request type:** `MoveSelectedObjsRequest`
303
+ - **Response type:** `BoolResponse`
304
+ - **Streaming:** false
305
+
306
+ **Parameters:**
307
+
308
+ | Name | Type | Required | Repeated | Description |
309
+ | --- | --- | --- | --- | --- |
310
+ | `context` | `ProjectContext` | | | |
311
+ | `windowX` | `number` | ✓ | | |
312
+ | `windowY` | `number` | ✓ | | |
313
+ | `prevWindowX` | `number` | ✓ | | |
314
+ | `prevWindowY` | `number` | ✓ | | |
315
+
316
+ #### `canvas-on-canvas-escape`
317
+
318
+ > state
319
+
320
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
321
+ - **Method:** OnCanvasEscape (`unary`)
322
+ - **Request type:** `OnCanvasEscapeRequest`
323
+ - **Response type:** `SuccessResponse`
324
+ - **Streaming:** false
325
+
326
+ **Parameters:**
327
+
328
+ | Name | Type | Required | Repeated | Description |
329
+ | --- | --- | --- | --- | --- |
330
+ | `context` | `ProjectContext` | | | |
331
+ | `needClearSelect` | `boolean` | ✓ | | |
332
+
333
+ #### `canvas-pan-canvas`
334
+
335
+ > viewport
336
+
337
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
338
+ - **Method:** PanCanvas (`unary`)
339
+ - **Request type:** `PanCanvasRequest`
340
+ - **Response type:** `SuccessResponse`
341
+ - **Streaming:** false
342
+
343
+ **Parameters:**
344
+
345
+ | Name | Type | Required | Repeated | Description |
346
+ | --- | --- | --- | --- | --- |
347
+ | `context` | `ProjectContext` | | | |
348
+ | `deltaX` | `number` | ✓ | | |
349
+ | `deltaY` | `number` | ✓ | | |
350
+
351
+ #### `canvas-paste-selected`
352
+
353
+ > Paste Selected via CanvasOpsService.PasteSelected
354
+
355
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
356
+ - **Method:** PasteSelected (`unary`)
357
+ - **Request type:** `PasteRequest`
358
+ - **Response type:** `BoolResponse`
359
+ - **Streaming:** false
360
+
361
+ **Parameters:**
362
+
363
+ | Name | Type | Required | Repeated | Description |
364
+ | --- | --- | --- | --- | --- |
365
+ | `context` | `ProjectContext` | | | |
366
+ | `localPos` | `Vector2i64` | | | |
367
+
368
+ #### `canvas-rotate-objects`
369
+
370
+ > Rotate Objects via CanvasOpsService.RotateObjects
371
+
372
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
373
+ - **Method:** RotateObjects (`unary`)
374
+ - **Request type:** `CanvasContextRequest`
375
+ - **Response type:** `SuccessResponse`
376
+ - **Streaming:** false
377
+
378
+ **Parameters:**
379
+
380
+ | Name | Type | Required | Repeated | Description |
381
+ | --- | --- | --- | --- | --- |
382
+ | `context` | `ProjectContext` | | | |
383
+
384
+ #### `canvas-screen-to-canvas-local`
385
+
386
+ > coordinate
387
+
388
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
389
+ - **Method:** ScreenToCanvasLocal (`unary`)
390
+ - **Request type:** `ScreenToCanvasLocalRequest`
391
+ - **Response type:** `ScreenToCanvasLocalResponse`
392
+ - **Streaming:** false
393
+
394
+ **Parameters:**
395
+
396
+ | Name | Type | Required | Repeated | Description |
397
+ | --- | --- | --- | --- | --- |
398
+ | `context` | `ProjectContext` | | | |
399
+ | `screenX` | `number` | ✓ | | |
400
+ | `screenY` | `number` | ✓ | | |
401
+
402
+ #### `canvas-select-all`
403
+
404
+ > Select All via CanvasOpsService.SelectAll
405
+
406
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
407
+ - **Method:** SelectAll (`unary`)
408
+ - **Request type:** `CanvasContextRequest`
409
+ - **Response type:** `SuccessResponse`
410
+ - **Streaming:** false
411
+
412
+ **Parameters:**
413
+
414
+ | Name | Type | Required | Repeated | Description |
415
+ | --- | --- | --- | --- | --- |
416
+ | `context` | `ProjectContext` | | | |
417
+
418
+ #### `canvas-select-object-at`
419
+
420
+ > Select Object At via CanvasOpsService.SelectObjectAt
421
+
422
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
423
+ - **Method:** SelectObjectAt (`unary`)
424
+ - **Request type:** `WindowClickRequest`
425
+ - **Response type:** `SelectObjectAtResponse`
426
+ - **Streaming:** false
427
+
428
+ **Parameters:**
429
+
430
+ | Name | Type | Required | Repeated | Description |
431
+ | --- | --- | --- | --- | --- |
432
+ | `context` | `ProjectContext` | | | |
433
+ | `windowX` | `number` | ✓ | | |
434
+ | `windowY` | `number` | ✓ | | |
435
+
436
+ #### `canvas-set-align-type`
437
+
438
+ > grid align
439
+
440
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
441
+ - **Method:** SetAlignType (`unary`)
442
+ - **Request type:** `SetAlignTypeRequest`
443
+ - **Response type:** `SuccessResponse`
444
+ - **Streaming:** false
445
+
446
+ **Parameters:**
447
+
448
+ | Name | Type | Required | Repeated | Description |
449
+ | --- | --- | --- | --- | --- |
450
+ | `context` | `ProjectContext` | | | |
451
+ | `alignType` | `number` | ✓ | | |
452
+ | `alignStyle` | `number` | ✓ | | |
453
+
454
+ #### `canvas-set-page-size`
455
+
456
+ > page
457
+
458
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
459
+ - **Method:** SetPageSize (`unary`)
460
+ - **Request type:** `SetPageSizeRequest`
461
+ - **Response type:** `SuccessResponse`
462
+ - **Streaming:** false
463
+
464
+ **Parameters:**
465
+
466
+ | Name | Type | Required | Repeated | Description |
467
+ | --- | --- | --- | --- | --- |
468
+ | `context` | `ProjectContext` | | | |
469
+ | `ltX` | `number` | ✓ | | |
470
+ | `ltY` | `number` | ✓ | | |
471
+ | `rbX` | `number` | ✓ | | |
472
+ | `rbY` | `number` | ✓ | | |
473
+ | `showBorder` | `boolean` | ✓ | | |
474
+ | `pageSizeLabel` | `string` | ✓ | | |
475
+
476
+ #### `canvas-set-page-size-rect`
477
+
478
+ > Set Page Size Rect via CanvasOpsService.SetPageSizeRect
479
+
480
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
481
+ - **Method:** SetPageSizeRect (`unary`)
482
+ - **Request type:** `SetPageSizeRectRequest`
483
+ - **Response type:** `SuccessResponse`
484
+ - **Streaming:** false
485
+
486
+ **Parameters:**
487
+
488
+ | Name | Type | Required | Repeated | Description |
489
+ | --- | --- | --- | --- | --- |
490
+ | `context` | `ProjectContext` | | | |
491
+ | `x` | `number` | ✓ | | |
492
+ | `y` | `number` | ✓ | | |
493
+ | `sx` | `number` | ✓ | | |
494
+ | `sy` | `number` | ✓ | | |
495
+
496
+ #### `canvas-zoom-all`
497
+
498
+ > Zoom All via CanvasOpsService.ZoomAll
499
+
500
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
501
+ - **Method:** ZoomAll (`unary`)
502
+ - **Request type:** `CanvasContextRequest`
503
+ - **Response type:** `SuccessResponse`
504
+ - **Streaming:** false
505
+
506
+ **Parameters:**
507
+
508
+ | Name | Type | Required | Repeated | Description |
509
+ | --- | --- | --- | --- | --- |
510
+ | `context` | `ProjectContext` | | | |
511
+
512
+ #### `canvas-zoom-area-by-double-box`
513
+
514
+ > Zoom Area By Double Box via CanvasOpsService.ZoomAreaByDoubleBox
515
+
516
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
517
+ - **Method:** ZoomAreaByDoubleBox (`unary`)
518
+ - **Request type:** `ZoomAreaDoubleBoxRequest`
519
+ - **Response type:** `SuccessResponse`
520
+ - **Streaming:** false
521
+
522
+ **Parameters:**
523
+
524
+ | Name | Type | Required | Repeated | Description |
525
+ | --- | --- | --- | --- | --- |
526
+ | `context` | `ProjectContext` | | | |
527
+ | `left` | `number` | ✓ | | |
528
+ | `top` | `number` | ✓ | | |
529
+ | `right` | `number` | ✓ | | |
530
+ | `bottom` | `number` | ✓ | | |
531
+
532
+ #### `canvas-zoom-area-by-int-box`
533
+
534
+ > Zoom Area By Int Box via CanvasOpsService.ZoomAreaByIntBox
535
+
536
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
537
+ - **Method:** ZoomAreaByIntBox (`unary`)
538
+ - **Request type:** `ZoomAreaIntBoxRequest`
539
+ - **Response type:** `SuccessResponse`
540
+ - **Streaming:** false
541
+
542
+ **Parameters:**
543
+
544
+ | Name | Type | Required | Repeated | Description |
545
+ | --- | --- | --- | --- | --- |
546
+ | `context` | `ProjectContext` | | | |
547
+ | `startX` | `number` | ✓ | | |
548
+ | `startY` | `number` | ✓ | | |
549
+ | `endX` | `number` | ✓ | | |
550
+ | `endY` | `number` | ✓ | | |
551
+
552
+ #### `canvas-zoom-area-by-points`
553
+
554
+ > Zoom Area By Points via CanvasOpsService.ZoomAreaByPoints
555
+
556
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
557
+ - **Method:** ZoomAreaByPoints (`unary`)
558
+ - **Request type:** `ZoomAreaPointsRequest`
559
+ - **Response type:** `SuccessResponse`
560
+ - **Streaming:** false
561
+
562
+ **Parameters:**
563
+
564
+ | Name | Type | Required | Repeated | Description |
565
+ | --- | --- | --- | --- | --- |
566
+ | `context` | `ProjectContext` | | | |
567
+ | `start` | `Vector2i64` | | | |
568
+ | `end` | `Vector2i64` | | | |
569
+
570
+ #### `canvas-zoom-in`
571
+
572
+ > zoom
573
+
574
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
575
+ - **Method:** ZoomIn (`unary`)
576
+ - **Request type:** `CanvasContextRequest`
577
+ - **Response type:** `SuccessResponse`
578
+ - **Streaming:** false
579
+
580
+ **Parameters:**
581
+
582
+ | Name | Type | Required | Repeated | Description |
583
+ | --- | --- | --- | --- | --- |
584
+ | `context` | `ProjectContext` | | | |
585
+
586
+ #### `canvas-zoom-out`
587
+
588
+ > Zoom Out via CanvasOpsService.ZoomOut
589
+
590
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
591
+ - **Method:** ZoomOut (`unary`)
592
+ - **Request type:** `CanvasContextRequest`
593
+ - **Response type:** `SuccessResponse`
594
+ - **Streaming:** false
595
+
596
+ **Parameters:**
597
+
598
+ | Name | Type | Required | Repeated | Description |
599
+ | --- | --- | --- | --- | --- |
600
+ | `context` | `ProjectContext` | | | |
601
+
602
+ #### `canvas-zoom-selected`
603
+
604
+ > Zoom Selected via CanvasOpsService.ZoomSelected
605
+
606
+ - **Service:** CanvasOpsService (`CanvasOpsService`)
607
+ - **Method:** ZoomSelected (`unary`)
608
+ - **Request type:** `CanvasContextRequest`
609
+ - **Response type:** `SuccessResponse`
610
+ - **Streaming:** false
611
+
612
+ **Parameters:**
613
+
614
+ | Name | Type | Required | Repeated | Description |
615
+ | --- | --- | --- | --- | --- |
616
+ | `context` | `ProjectContext` | | | |
617
+
618
+ ### `capability`
619
+
620
+ | Skill ID | Service.Method | Description | Input | Streaming |
621
+ | --- | --- | --- | --- | --- |
622
+ | `capability-get-capabilities` | `CapabilityService.GetCapabilities` | Get Capabilities via CapabilityService.GetCapabilities | `GetCapabilitiesRequest` | |
623
+
624
+ #### `capability-get-capabilities`
625
+
626
+ > Get Capabilities via CapabilityService.GetCapabilities
627
+
628
+ - **Service:** CapabilityService (`CapabilityService`)
629
+ - **Method:** GetCapabilities (`unary`)
630
+ - **Request type:** `GetCapabilitiesRequest`
631
+ - **Response type:** `GetCapabilitiesResponse`
632
+ - **Streaming:** false
633
+
634
+ **Parameters:**
635
+
636
+ | Name | Type | Required | Repeated | Description |
637
+ | --- | --- | --- | --- | --- |
638
+ | `context` | `ProjectContext` | | | |
639
+
640
+ ### `context`
641
+
642
+ | Skill ID | Service.Method | Description | Input | Streaming |
643
+ | --- | --- | --- | --- | --- |
644
+ | `context-get-context` | `ContextService.GetContext` | Get Context via ContextService.GetContext | `GetContextRequest` | |
645
+
646
+ #### `context-get-context`
647
+
648
+ > Get Context via ContextService.GetContext
649
+
650
+ - **Service:** ContextService (`ContextService`)
651
+ - **Method:** GetContext (`unary`)
652
+ - **Request type:** `GetContextRequest`
653
+ - **Response type:** `GetContextResponse`
654
+ - **Streaming:** false
655
+
656
+ **Parameters:**
657
+
658
+ | Name | Type | Required | Repeated | Description |
659
+ | --- | --- | --- | --- | --- |
660
+ | `context` | `ProjectContext` | | | |
661
+ | `includeGraph` | `boolean` | ✓ | | Bitfield-ish flags. Each flag turns on a sub-facet of the response. |
662
+ | `includeSelection` | `boolean` | ✓ | | |
663
+ | `includeSymbols` | `boolean` | ✓ | | |
664
+ | `includeNets` | `boolean` | ✓ | | |
665
+ | `includeViewport` | `boolean` | ✓ | | |
666
+ | `includeOpenDocuments` | `boolean` | ✓ | | |
667
+ | `includeCursor` | `boolean` | ✓ | | |
668
+
669
+ ### `discovery`
670
+
671
+ | Skill ID | Service.Method | Description | Input | Streaming |
672
+ | --- | --- | --- | --- | --- |
673
+ | `discovery-get-server-info` | `DiscoveryService.GetServerInfo` | Get Server Info via DiscoveryService.GetServerInfo | `GetServerInfoRequest` | |
674
+
675
+ #### `discovery-get-server-info`
676
+
677
+ > Get Server Info via DiscoveryService.GetServerInfo
678
+
679
+ - **Service:** DiscoveryService (`DiscoveryService`)
680
+ - **Method:** GetServerInfo (`unary`)
681
+ - **Request type:** `GetServerInfoRequest`
682
+ - **Response type:** `GetServerInfoResponse`
683
+ - **Streaming:** false
684
+
685
+ **Parameters:**
686
+
687
+ | Name | Type | Required | Repeated | Description |
688
+ | --- | --- | --- | --- | --- |
689
+ | `context` | `EditorContext` | | | |
690
+
691
+ **Examples:**
692
+
693
+ - *server is responsive on port 59999* (`health-check.test.ts`)
694
+
695
+ ```json
696
+ {}
697
+ ```
698
+ - *discover server info* (`integration.test.ts`)
699
+
700
+ ```json
701
+ {}
702
+ ```
703
+
704
+ ### `erc`
705
+
706
+ | Skill ID | Service.Method | Description | Input | Streaming |
707
+ | --- | --- | --- | --- | --- |
708
+ | `erc-clear-all-findings` | `ERCService.ClearAllFindings` | Clear All Findings via ERCService.ClearAllFindings | `ClearAllFindingsRequest` | |
709
+ | `erc-clear-findings` | `ERCService.ClearFindings` | Clear Findings via ERCService.ClearFindings | `ClearFindingsRequest` | |
710
+ | `erc-run-checks` | `ERCService.RunChecks` | Run erc check with the eda's built-in engine | `RunChecksRequest` | |
711
+ | `erc-set-erc-report-webview-visibility` | `ERCService.SetErcReportWebviewVisibility` | ONLY controls report webview visibility | `SetErcReportWebviewVisibilityRequest` | |
712
+ | `erc-set-report-webview-state` | `ERCService.SetReportWebviewState` | Set Report Webview State via ERCService.SetReportWebviewState | `SetReportWebviewStateRequest` | |
713
+ | `erc-show-findings` | `ERCService.ShowFindings` | Canvas interaction (row click → highlight in EDA view) | `ShowFindingsRequest` | |
714
+
715
+ #### `erc-clear-all-findings`
716
+
717
+ > Clear All Findings via ERCService.ClearAllFindings
718
+
719
+ - **Service:** ERCService (`ERCService`)
720
+ - **Method:** ClearAllFindings (`unary`)
721
+ - **Request type:** `ClearAllFindingsRequest`
722
+ - **Response type:** `ClearFindingsResponse`
723
+ - **Streaming:** false
724
+
725
+ **Parameters:**
726
+
727
+ | Name | Type | Required | Repeated | Description |
728
+ | --- | --- | --- | --- | --- |
729
+ | `context` | `ProjectContext` | | | |
730
+
731
+ #### `erc-clear-findings`
732
+
733
+ > Clear Findings via ERCService.ClearFindings
734
+
735
+ - **Service:** ERCService (`ERCService`)
736
+ - **Method:** ClearFindings (`unary`)
737
+ - **Request type:** `ClearFindingsRequest`
738
+ - **Response type:** `ClearFindingsResponse`
739
+ - **Streaming:** false
740
+
741
+ **Parameters:**
742
+
743
+ | Name | Type | Required | Repeated | Description |
744
+ | --- | --- | --- | --- | --- |
745
+ | `context` | `ProjectContext` | | | |
746
+ | `findingIds` | `string[]` | | ✓ | |
747
+
748
+ #### `erc-run-checks`
749
+
750
+ > Run erc check with the eda's built-in engine
751
+
752
+ - **Service:** ERCService (`ERCService`)
753
+ - **Method:** RunChecks (`unary`)
754
+ - **Request type:** `RunChecksRequest`
755
+ - **Response type:** `RunChecksResponse`
756
+ - **Streaming:** false
757
+
758
+ **Parameters:**
759
+
760
+ | Name | Type | Required | Repeated | Description |
761
+ | --- | --- | --- | --- | --- |
762
+ | `context` | `ProjectContext` | | | |
763
+
764
+ #### `erc-set-erc-report-webview-visibility`
765
+
766
+ > ONLY controls report webview visibility
767
+
768
+ - **Service:** ERCService (`ERCService`)
769
+ - **Method:** SetErcReportWebviewVisibility (`unary`)
770
+ - **Request type:** `SetErcReportWebviewVisibilityRequest`
771
+ - **Response type:** `SetErcReportWebviewVisibilityResponse`
772
+ - **Streaming:** false
773
+
774
+ **Parameters:**
775
+
776
+ | Name | Type | Required | Repeated | Description |
777
+ | --- | --- | --- | --- | --- |
778
+ | `context` | `ProjectContext` | | | |
779
+ | `visible` | `boolean` | | | If omitted -> treat as toggle
780
+ true -> show report webview
781
+ false -> hide report webview |
782
+
783
+ #### `erc-set-report-webview-state`
784
+
785
+ > Set Report Webview State via ERCService.SetReportWebviewState
786
+
787
+ - **Service:** ERCService (`ERCService`)
788
+ - **Method:** SetReportWebviewState (`unary`)
789
+ - **Request type:** `SetReportWebviewStateRequest`
790
+ - **Response type:** `SetReportWebviewStateResponse`
791
+ - **Streaming:** false
792
+
793
+ **Parameters:**
794
+
795
+ | Name | Type | Required | Repeated | Description |
796
+ | --- | --- | --- | --- | --- |
797
+ | `context` | `ProjectContext` | | | |
798
+ | `visible` | `boolean` | | | Optional explicit state.
799
+ If omitted -> toggle current state.
800
+ If true -> show
801
+ If false -> hide |
802
+ | `reportId` | `string` | | | Optional: which report to focus (if multiple reports exist later) |
803
+
804
+ #### `erc-show-findings`
805
+
806
+ > Canvas interaction (row click → highlight in EDA view)
807
+
808
+ - **Service:** ERCService (`ERCService`)
809
+ - **Method:** ShowFindings (`unary`)
810
+ - **Request type:** `ShowFindingsRequest`
811
+ - **Response type:** `ShowFindingsResponse`
812
+ - **Streaming:** false
813
+
814
+ **Parameters:**
815
+
816
+ | Name | Type | Required | Repeated | Description |
817
+ | --- | --- | --- | --- | --- |
818
+ | `context` | `ProjectContext` | | | |
819
+ | `findings` | `ErcFinding[]` | | ✓ | |
820
+
821
+ ### `event`
822
+
823
+ | Skill ID | Service.Method | Description | Input | Streaming |
824
+ | --- | --- | --- | --- | --- |
825
+ | `event-subscribe` | `EventService.Subscribe` | Subscribe via EventService.Subscribe | `SubscribeRequest` | ✓ |
826
+
827
+ #### `event-subscribe`
828
+
829
+ > Subscribe via EventService.Subscribe
830
+
831
+ - **Service:** EventService (`EventService`)
832
+ - **Method:** Subscribe (`server_streaming`)
833
+ - **Request type:** `SubscribeRequest`
834
+ - **Response type:** `EventEnvelope`
835
+ - **Streaming:** true
836
+
837
+ **Parameters:**
838
+
839
+ | Name | Type | Required | Repeated | Description |
840
+ | --- | --- | --- | --- | --- |
841
+ | `context` | `ProjectContext` | | | |
842
+ | `sinceRevision` | `bigint` | ✓ | | Start from this kernel revision. If zero, the server starts
843
+ from the next event produced after the subscription was ope |
844
+ | `eventTypeFilter` | `string[]` | | ✓ | Optional filter. If non-empty, only events whose `event_type`
845
+ matches one of the supplied strings are delivered. |
846
+
847
+ ### `export`
848
+
849
+ | Skill ID | Service.Method | Description | Input | Streaming |
850
+ | --- | --- | --- | --- | --- |
851
+ | `export-export-bom` | `ExportService.ExportBOM` | Export Bom via ExportService.ExportBOM | `ExportBOMRequest` | |
852
+ | `export-export-target` | `ExportService.ExportTarget` | Export Target via ExportService.ExportTarget | `ExportTargetRequest` | |
853
+
854
+ #### `export-export-bom`
855
+
856
+ > Export Bom via ExportService.ExportBOM
857
+
858
+ - **Service:** ExportService (`ExportService`)
859
+ - **Method:** ExportBOM (`unary`)
860
+ - **Request type:** `ExportBOMRequest`
861
+ - **Response type:** `ExportBOMResponse`
862
+ - **Streaming:** false
863
+
864
+ **Parameters:**
865
+
866
+ | Name | Type | Required | Repeated | Description |
867
+ | --- | --- | --- | --- | --- |
868
+ | `context` | `ProjectContext` | | | |
869
+
870
+ #### `export-export-target`
871
+
872
+ > Export Target via ExportService.ExportTarget
873
+
874
+ - **Service:** ExportService (`ExportService`)
875
+ - **Method:** ExportTarget (`unary`)
876
+ - **Request type:** `ExportTargetRequest`
877
+ - **Response type:** `ExportTargetResponse`
878
+ - **Streaming:** false
879
+
880
+ **Parameters:**
881
+
882
+ | Name | Type | Required | Repeated | Description |
883
+ | --- | --- | --- | --- | --- |
884
+ | `context` | `ProjectContext` | | | |
885
+ | `targetFormat` | `string` | ✓ | | |
886
+
887
+ ### `graph`
888
+
889
+ | Skill ID | Service.Method | Description | Input | Streaming |
890
+ | --- | --- | --- | --- | --- |
891
+ | `graph-get-connectivity` | `GraphService.GetConnectivity` | Get Connectivity via GraphService.GetConnectivity | `ConnectivityRequest` | |
892
+ | `graph-query-graph` | `GraphService.QueryGraph` | Query Graph via GraphService.QueryGraph | `GraphQueryRequest` | |
893
+
894
+ #### `graph-get-connectivity`
895
+
896
+ > Get Connectivity via GraphService.GetConnectivity
897
+
898
+ - **Service:** GraphService (`GraphService`)
899
+ - **Method:** GetConnectivity (`unary`)
900
+ - **Request type:** `ConnectivityRequest`
901
+ - **Response type:** `ConnectivityResponse`
902
+ - **Streaming:** false
903
+
904
+ **Parameters:**
905
+
906
+ | Name | Type | Required | Repeated | Description |
907
+ | --- | --- | --- | --- | --- |
908
+ | `context` | `ProjectContext` | | | |
909
+ | `netIds` | `string[]` | | ✓ | |
910
+ | `symbolIds` | `string[]` | | ✓ | |
911
+
912
+ #### `graph-query-graph`
913
+
914
+ > Query Graph via GraphService.QueryGraph
915
+
916
+ - **Service:** GraphService (`GraphService`)
917
+ - **Method:** QueryGraph (`unary`)
918
+ - **Request type:** `GraphQueryRequest`
919
+ - **Response type:** `GraphQueryResponse`
920
+ - **Streaming:** false
921
+
922
+ **Parameters:**
923
+
924
+ | Name | Type | Required | Repeated | Description |
925
+ | --- | --- | --- | --- | --- |
926
+ | `context` | `ProjectContext` | | | |
927
+ | `query` | `string` | ✓ | | |
928
+
929
+ ### `import`
930
+
931
+ | Skill ID | Service.Method | Description | Input | Streaming |
932
+ | --- | --- | --- | --- | --- |
933
+ | `import-import-design` | `ImportService.ImportDesign` | Import a design from an external EDA system | `ImportDesignRequest` | |
934
+
935
+ #### `import-import-design`
936
+
937
+ > Import a design from an external EDA system
938
+
939
+ - **Service:** ImportService (`ImportService`)
940
+ - **Method:** ImportDesign (`unary`)
941
+ - **Request type:** `ImportDesignRequest`
942
+ - **Response type:** `ImportDesignResponse`
943
+ - **Streaming:** false
944
+
945
+ **Parameters:**
946
+
947
+ | Name | Type | Required | Repeated | Description |
948
+ | --- | --- | --- | --- | --- |
949
+ | `context` | `ProjectContext` | | | |
950
+ | `sourceVendor` | `string` | ✓ | | Source EDA vendor/tool |
951
+ | `sourceFormat` | `string` | ✓ | | File format (e.g. "altium", "kicad", "odb++", "ipc2581") |
952
+ | `sourceUri` | `string` | ✓ | | URL or uploaded file location |
953
+
954
+ ### `kernel`
955
+
956
+ | Skill ID | Service.Method | Description | Input | Streaming |
957
+ | --- | --- | --- | --- | --- |
958
+ | `kernel-get-entity` | `KernelService.GetEntity` | Get Entity via KernelService.GetEntity | `GetEntityRequest` | |
959
+ | `kernel-get-snapshot` | `KernelService.GetSnapshot` | Get Snapshot via KernelService.GetSnapshot | `GetSnapshotRequest` | |
960
+
961
+ #### `kernel-get-entity`
962
+
963
+ > Get Entity via KernelService.GetEntity
964
+
965
+ - **Service:** KernelService (`KernelService`)
966
+ - **Method:** GetEntity (`unary`)
967
+ - **Request type:** `GetEntityRequest`
968
+ - **Response type:** `GetEntityResponse`
969
+ - **Streaming:** false
970
+
971
+ **Parameters:**
972
+
973
+ | Name | Type | Required | Repeated | Description |
974
+ | --- | --- | --- | --- | --- |
975
+ | `context` | `ProjectContext` | | | |
976
+ | `entityId` | `string` | ✓ | | |
977
+
978
+ #### `kernel-get-snapshot`
979
+
980
+ > Get Snapshot via KernelService.GetSnapshot
981
+
982
+ - **Service:** KernelService (`KernelService`)
983
+ - **Method:** GetSnapshot (`unary`)
984
+ - **Request type:** `GetSnapshotRequest`
985
+ - **Response type:** `GetSnapshotResponse`
986
+ - **Streaming:** false
987
+
988
+ **Parameters:**
989
+
990
+ | Name | Type | Required | Repeated | Description |
991
+ | --- | --- | --- | --- | --- |
992
+ | `context` | `ProjectContext` | | | |
993
+ | `atRevision` | `bigint` | ✓ | | |
994
+
995
+ **Examples:**
996
+
997
+ - *get kernel snapshot for a discovered project* (`integration.test.ts`)
998
+
999
+ ```json
1000
+ {
1001
+ "context": "<createProjectContext>"
1002
+ }
1003
+ ```
1004
+ - *retrieves snapshot for a discovered project* (`kernel-snapshot.test.ts`)
1005
+
1006
+ ```json
1007
+ {
1008
+ "context": "<createProjectContext>"
1009
+ }
1010
+ ```
1011
+ - *snapshot contains symbol definitions* (`kernel-snapshot.test.ts`)
1012
+
1013
+ ```json
1014
+ {
1015
+ "context": "<createProjectContext>"
1016
+ }
1017
+ ```
1018
+ - *toJson produces LLM-friendly JSON output* (`kernel-snapshot.test.ts`)
1019
+
1020
+ ```json
1021
+ {
1022
+ "context": "<createProjectContext>"
1023
+ }
1024
+ ```
1025
+
1026
+ ### `obj-place`
1027
+
1028
+ | Skill ID | Service.Method | Description | Input | Streaming |
1029
+ | --- | --- | --- | --- | --- |
1030
+ | `obj-place-add-bus-segment` | `ObjPlaceService.AddBusSegment` | Add Bus Segment via ObjPlaceService.AddBusSegment | `LocalClickRequest` | |
1031
+ | `obj-place-add-ellipse` | `ObjPlaceService.AddEllipse` | Add Ellipse via ObjPlaceService.AddEllipse | `BoxShiftPlaceRequest` | |
1032
+ | `obj-place-add-free-line-segment` | `ObjPlaceService.AddFreeLineSegment` | Add Free Line Segment via ObjPlaceService.AddFreeLineSegment | `AddFreeLineSegmentRequest` | |
1033
+ | `obj-place-add-line` | `ObjPlaceService.AddLine` | Add Line via ObjPlaceService.AddLine | `AddLineRequest` | |
1034
+ | `obj-place-add-rect` | `ObjPlaceService.AddRect` | Add Rect via ObjPlaceService.AddRect | `BoxPlaceRequest` | |
1035
+ | `obj-place-add-wire-segment` | `ObjPlaceService.AddWireSegment` | Add Wire Segment via ObjPlaceService.AddWireSegment | `LocalClickRequest` | |
1036
+ | `obj-place-cancel-bus-draw` | `ObjPlaceService.CancelBusDraw` | Cancel Bus Draw via ObjPlaceService.CancelBusDraw | `ContextOnlyRequest` | |
1037
+ | `obj-place-cancel-ellipse-arc-draw` | `ObjPlaceService.CancelEllipseArcDraw` | Cancel Ellipse Arc Draw via ObjPlaceService.CancelEllipseArcDraw | `ContextOnlyRequest` | |
1038
+ | `obj-place-cancel-ellipse-draw` | `ObjPlaceService.CancelEllipseDraw` | Cancel Ellipse Draw via ObjPlaceService.CancelEllipseDraw | `ContextOnlyRequest` | |
1039
+ | `obj-place-cancel-free-line-draw` | `ObjPlaceService.CancelFreeLineDraw` | Cancel Free Line Draw via ObjPlaceService.CancelFreeLineDraw | `ContextOnlyRequest` | |
1040
+ | `obj-place-cancel-line-draw` | `ObjPlaceService.CancelLineDraw` | Cancel Line Draw via ObjPlaceService.CancelLineDraw | `CancelLineDrawRequest` | |
1041
+ | `obj-place-cancel-rect-draw` | `ObjPlaceService.CancelRectDraw` | Cancel Rect Draw via ObjPlaceService.CancelRectDraw | `ContextOnlyRequest` | |
1042
+ | `obj-place-cancel-wire-draw` | `ObjPlaceService.CancelWireDraw` | Cancel Wire Draw via ObjPlaceService.CancelWireDraw | `ContextOnlyRequest` | |
1043
+ | `obj-place-handle-bus-draw-click` | `ObjPlaceService.HandleBusDrawClick` | bus | `LocalClickRequest` | |
1044
+ | `obj-place-handle-ellipse-arc-draw-click` | `ObjPlaceService.HandleEllipseArcDrawClick` | Handle Ellipse Arc Draw Click via ObjPlaceService.HandleEllipseArcDrawClick | `LocalClickRequest` | |
1045
+ | `obj-place-handle-ellipse-draw-click` | `ObjPlaceService.HandleEllipseDrawClick` | Handle Ellipse Draw Click via ObjPlaceService.HandleEllipseDrawClick | `LocalClickRequest` | |
1046
+ | `obj-place-handle-free-line-draw-click` | `ObjPlaceService.HandleFreeLineDrawClick` | Handle Free Line Draw Click via ObjPlaceService.HandleFreeLineDrawClick | `LocalClickRequest` | |
1047
+ | `obj-place-handle-image-draw-click` | `ObjPlaceService.HandleImageDrawClick` | Handle Image Draw Click via ObjPlaceService.HandleImageDrawClick | `HandleImageDrawClickRequest` | |
1048
+ | `obj-place-handle-line-draw-click` | `ObjPlaceService.HandleLineDrawClick` | Handle Line Draw Click via ObjPlaceService.HandleLineDrawClick | `HandleLineDrawClickRequest` | |
1049
+ | `obj-place-handle-net-alias-draw-click` | `ObjPlaceService.HandleNetAliasDrawClick` | Handle Net Alias Draw Click via ObjPlaceService.HandleNetAliasDrawClick | `LocalClickRequest` | |
1050
+ | `obj-place-handle-rect-draw-click` | `ObjPlaceService.HandleRectDrawClick` | Handle Rect Draw Click via ObjPlaceService.HandleRectDrawClick | `LocalClickRequest` | |
1051
+ | `obj-place-handle-table-draw-click` | `ObjPlaceService.HandleTableDrawClick` | Handle Table Draw Click via ObjPlaceService.HandleTableDrawClick | `LocalClickRequest` | |
1052
+ | `obj-place-handle-text-draw-click` | `ObjPlaceService.HandleTextDrawClick` | Handle Text Draw Click via ObjPlaceService.HandleTextDrawClick | `LocalClickRequest` | |
1053
+ | `obj-place-handle-wire-draw-click` | `ObjPlaceService.HandleWireDrawClick` | wire | `LocalClickRequest` | |
1054
+ | `obj-place-place-bus` | `ObjPlaceService.PlaceBus` | Place Bus via ObjPlaceService.PlaceBus | `PlaceLineRequest` | |
1055
+ | `obj-place-place-ellipse` | `ObjPlaceService.PlaceEllipse` | ellipse | `BoxShiftPlaceRequest` | |
1056
+ | `obj-place-place-ellipse-arc` | `ObjPlaceService.PlaceEllipseArc` | ellipse arc | `ObjDataPlaceRequest` | |
1057
+ | `obj-place-place-ellipse-arc-from-virtual` | `ObjPlaceService.PlaceEllipseArcFromVirtual` | Place Ellipse Arc From Virtual via ObjPlaceService.PlaceEllipseArcFromVirtual | `ContextOnlyRequest` | |
1058
+ | `obj-place-place-free-line` | `ObjPlaceService.PlaceFreeLine` | free line | `PlaceFreeLineRequest` | |
1059
+ | `obj-place-place-image` | `ObjPlaceService.PlaceImage` | image | `PlaceImageRequest` | |
1060
+ | `obj-place-place-line` | `ObjPlaceService.PlaceLine` | line | `PlaceLineRequest` | |
1061
+ | `obj-place-place-net-alias` | `ObjPlaceService.PlaceNetAlias` | net alias | `PlaceNetAliasRequest` | |
1062
+ | `obj-place-place-rect` | `ObjPlaceService.PlaceRect` | rect | `BoxPlaceRequest` | |
1063
+ | `obj-place-place-table` | `ObjPlaceService.PlaceTable` | table | `ObjDataPlaceRequest` | |
1064
+ | `obj-place-place-table-from-virtual` | `ObjPlaceService.PlaceTableFromVirtual` | Place Table From Virtual via ObjPlaceService.PlaceTableFromVirtual | `ContextOnlyRequest` | |
1065
+ | `obj-place-place-text` | `ObjPlaceService.PlaceText` | text | `ObjDataPlaceRequest` | |
1066
+ | `obj-place-place-text-from-virtual` | `ObjPlaceService.PlaceTextFromVirtual` | Place Text From Virtual via ObjPlaceService.PlaceTextFromVirtual | `ContextOnlyRequest` | |
1067
+ | `obj-place-place-wire` | `ObjPlaceService.PlaceWire` | Place Wire via ObjPlaceService.PlaceWire | `PlaceLineRequest` | |
1068
+
1069
+ #### `obj-place-add-bus-segment`
1070
+
1071
+ > Add Bus Segment via ObjPlaceService.AddBusSegment
1072
+
1073
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1074
+ - **Method:** AddBusSegment (`unary`)
1075
+ - **Request type:** `LocalClickRequest`
1076
+ - **Response type:** `HandleBusDrawClickResponse`
1077
+ - **Streaming:** false
1078
+
1079
+ **Parameters:**
1080
+
1081
+ | Name | Type | Required | Repeated | Description |
1082
+ | --- | --- | --- | --- | --- |
1083
+ | `context` | `ProjectContext` | | | |
1084
+ | `localPos` | `Vector2i64` | | | |
1085
+
1086
+ #### `obj-place-add-ellipse`
1087
+
1088
+ > Add Ellipse via ObjPlaceService.AddEllipse
1089
+
1090
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1091
+ - **Method:** AddEllipse (`unary`)
1092
+ - **Request type:** `BoxShiftPlaceRequest`
1093
+ - **Response type:** `ObjectPlaceResponse`
1094
+ - **Streaming:** false
1095
+
1096
+ **Parameters:**
1097
+
1098
+ | Name | Type | Required | Repeated | Description |
1099
+ | --- | --- | --- | --- | --- |
1100
+ | `context` | `ProjectContext` | | | |
1101
+ | `box` | `Box2i64` | | | |
1102
+ | `snapToGrid` | `boolean` | ✓ | | |
1103
+ | `shiftConstrain` | `boolean` | ✓ | | |
1104
+
1105
+ #### `obj-place-add-free-line-segment`
1106
+
1107
+ > Add Free Line Segment via ObjPlaceService.AddFreeLineSegment
1108
+
1109
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1110
+ - **Method:** AddFreeLineSegment (`unary`)
1111
+ - **Request type:** `AddFreeLineSegmentRequest`
1112
+ - **Response type:** `ObjectPlaceResponse`
1113
+ - **Streaming:** false
1114
+
1115
+ **Parameters:**
1116
+
1117
+ | Name | Type | Required | Repeated | Description |
1118
+ | --- | --- | --- | --- | --- |
1119
+ | `context` | `ProjectContext` | | | |
1120
+ | `geometry` | `Line2i64` | | | |
1121
+ | `snapToGrid` | `boolean` | ✓ | | |
1122
+ | `orthoConstrain` | `boolean` | ✓ | | |
1123
+
1124
+ #### `obj-place-add-line`
1125
+
1126
+ > Add Line via ObjPlaceService.AddLine
1127
+
1128
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1129
+ - **Method:** AddLine (`unary`)
1130
+ - **Request type:** `AddLineRequest`
1131
+ - **Response type:** `AddLineResponse`
1132
+ - **Streaming:** false
1133
+
1134
+ **Parameters:**
1135
+
1136
+ | Name | Type | Required | Repeated | Description |
1137
+ | --- | --- | --- | --- | --- |
1138
+ | `context` | `ProjectContext` | | | |
1139
+ | `geometry` | `Line2i64` | | | |
1140
+ | `snapToGrid` | `boolean` | ✓ | | |
1141
+
1142
+ #### `obj-place-add-rect`
1143
+
1144
+ > Add Rect via ObjPlaceService.AddRect
1145
+
1146
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1147
+ - **Method:** AddRect (`unary`)
1148
+ - **Request type:** `BoxPlaceRequest`
1149
+ - **Response type:** `ObjectPlaceResponse`
1150
+ - **Streaming:** false
1151
+
1152
+ **Parameters:**
1153
+
1154
+ | Name | Type | Required | Repeated | Description |
1155
+ | --- | --- | --- | --- | --- |
1156
+ | `context` | `ProjectContext` | | | |
1157
+ | `box` | `Box2i64` | | | |
1158
+ | `snapToGrid` | `boolean` | ✓ | | |
1159
+
1160
+ #### `obj-place-add-wire-segment`
1161
+
1162
+ > Add Wire Segment via ObjPlaceService.AddWireSegment
1163
+
1164
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1165
+ - **Method:** AddWireSegment (`unary`)
1166
+ - **Request type:** `LocalClickRequest`
1167
+ - **Response type:** `HandleWireDrawClickResponse`
1168
+ - **Streaming:** false
1169
+
1170
+ **Parameters:**
1171
+
1172
+ | Name | Type | Required | Repeated | Description |
1173
+ | --- | --- | --- | --- | --- |
1174
+ | `context` | `ProjectContext` | | | |
1175
+ | `localPos` | `Vector2i64` | | | |
1176
+
1177
+ #### `obj-place-cancel-bus-draw`
1178
+
1179
+ > Cancel Bus Draw via ObjPlaceService.CancelBusDraw
1180
+
1181
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1182
+ - **Method:** CancelBusDraw (`unary`)
1183
+ - **Request type:** `ContextOnlyRequest`
1184
+ - **Response type:** `SuccessResponse`
1185
+ - **Streaming:** false
1186
+
1187
+ **Parameters:**
1188
+
1189
+ | Name | Type | Required | Repeated | Description |
1190
+ | --- | --- | --- | --- | --- |
1191
+ | `context` | `ProjectContext` | | | |
1192
+
1193
+ #### `obj-place-cancel-ellipse-arc-draw`
1194
+
1195
+ > Cancel Ellipse Arc Draw via ObjPlaceService.CancelEllipseArcDraw
1196
+
1197
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1198
+ - **Method:** CancelEllipseArcDraw (`unary`)
1199
+ - **Request type:** `ContextOnlyRequest`
1200
+ - **Response type:** `SuccessResponse`
1201
+ - **Streaming:** false
1202
+
1203
+ **Parameters:**
1204
+
1205
+ | Name | Type | Required | Repeated | Description |
1206
+ | --- | --- | --- | --- | --- |
1207
+ | `context` | `ProjectContext` | | | |
1208
+
1209
+ #### `obj-place-cancel-ellipse-draw`
1210
+
1211
+ > Cancel Ellipse Draw via ObjPlaceService.CancelEllipseDraw
1212
+
1213
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1214
+ - **Method:** CancelEllipseDraw (`unary`)
1215
+ - **Request type:** `ContextOnlyRequest`
1216
+ - **Response type:** `SuccessResponse`
1217
+ - **Streaming:** false
1218
+
1219
+ **Parameters:**
1220
+
1221
+ | Name | Type | Required | Repeated | Description |
1222
+ | --- | --- | --- | --- | --- |
1223
+ | `context` | `ProjectContext` | | | |
1224
+
1225
+ #### `obj-place-cancel-free-line-draw`
1226
+
1227
+ > Cancel Free Line Draw via ObjPlaceService.CancelFreeLineDraw
1228
+
1229
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1230
+ - **Method:** CancelFreeLineDraw (`unary`)
1231
+ - **Request type:** `ContextOnlyRequest`
1232
+ - **Response type:** `SuccessResponse`
1233
+ - **Streaming:** false
1234
+
1235
+ **Parameters:**
1236
+
1237
+ | Name | Type | Required | Repeated | Description |
1238
+ | --- | --- | --- | --- | --- |
1239
+ | `context` | `ProjectContext` | | | |
1240
+
1241
+ #### `obj-place-cancel-line-draw`
1242
+
1243
+ > Cancel Line Draw via ObjPlaceService.CancelLineDraw
1244
+
1245
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1246
+ - **Method:** CancelLineDraw (`unary`)
1247
+ - **Request type:** `CancelLineDrawRequest`
1248
+ - **Response type:** `CancelLineDrawResponse`
1249
+ - **Streaming:** false
1250
+
1251
+ **Parameters:**
1252
+
1253
+ | Name | Type | Required | Repeated | Description |
1254
+ | --- | --- | --- | --- | --- |
1255
+ | `context` | `ProjectContext` | | | |
1256
+
1257
+ #### `obj-place-cancel-rect-draw`
1258
+
1259
+ > Cancel Rect Draw via ObjPlaceService.CancelRectDraw
1260
+
1261
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1262
+ - **Method:** CancelRectDraw (`unary`)
1263
+ - **Request type:** `ContextOnlyRequest`
1264
+ - **Response type:** `SuccessResponse`
1265
+ - **Streaming:** false
1266
+
1267
+ **Parameters:**
1268
+
1269
+ | Name | Type | Required | Repeated | Description |
1270
+ | --- | --- | --- | --- | --- |
1271
+ | `context` | `ProjectContext` | | | |
1272
+
1273
+ #### `obj-place-cancel-wire-draw`
1274
+
1275
+ > Cancel Wire Draw via ObjPlaceService.CancelWireDraw
1276
+
1277
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1278
+ - **Method:** CancelWireDraw (`unary`)
1279
+ - **Request type:** `ContextOnlyRequest`
1280
+ - **Response type:** `SuccessResponse`
1281
+ - **Streaming:** false
1282
+
1283
+ **Parameters:**
1284
+
1285
+ | Name | Type | Required | Repeated | Description |
1286
+ | --- | --- | --- | --- | --- |
1287
+ | `context` | `ProjectContext` | | | |
1288
+
1289
+ #### `obj-place-handle-bus-draw-click`
1290
+
1291
+ > bus
1292
+
1293
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1294
+ - **Method:** HandleBusDrawClick (`unary`)
1295
+ - **Request type:** `LocalClickRequest`
1296
+ - **Response type:** `HandleBusDrawClickResponse`
1297
+ - **Streaming:** false
1298
+
1299
+ **Parameters:**
1300
+
1301
+ | Name | Type | Required | Repeated | Description |
1302
+ | --- | --- | --- | --- | --- |
1303
+ | `context` | `ProjectContext` | | | |
1304
+ | `localPos` | `Vector2i64` | | | |
1305
+
1306
+ #### `obj-place-handle-ellipse-arc-draw-click`
1307
+
1308
+ > Handle Ellipse Arc Draw Click via ObjPlaceService.HandleEllipseArcDrawClick
1309
+
1310
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1311
+ - **Method:** HandleEllipseArcDrawClick (`unary`)
1312
+ - **Request type:** `LocalClickRequest`
1313
+ - **Response type:** `HandleEllipseArcDrawClickResponse`
1314
+ - **Streaming:** false
1315
+
1316
+ **Parameters:**
1317
+
1318
+ | Name | Type | Required | Repeated | Description |
1319
+ | --- | --- | --- | --- | --- |
1320
+ | `context` | `ProjectContext` | | | |
1321
+ | `localPos` | `Vector2i64` | | | |
1322
+
1323
+ #### `obj-place-handle-ellipse-draw-click`
1324
+
1325
+ > Handle Ellipse Draw Click via ObjPlaceService.HandleEllipseDrawClick
1326
+
1327
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1328
+ - **Method:** HandleEllipseDrawClick (`unary`)
1329
+ - **Request type:** `LocalClickRequest`
1330
+ - **Response type:** `HandleEllipseDrawClickResponse`
1331
+ - **Streaming:** false
1332
+
1333
+ **Parameters:**
1334
+
1335
+ | Name | Type | Required | Repeated | Description |
1336
+ | --- | --- | --- | --- | --- |
1337
+ | `context` | `ProjectContext` | | | |
1338
+ | `localPos` | `Vector2i64` | | | |
1339
+
1340
+ #### `obj-place-handle-free-line-draw-click`
1341
+
1342
+ > Handle Free Line Draw Click via ObjPlaceService.HandleFreeLineDrawClick
1343
+
1344
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1345
+ - **Method:** HandleFreeLineDrawClick (`unary`)
1346
+ - **Request type:** `LocalClickRequest`
1347
+ - **Response type:** `HandleFreeLineDrawClickResponse`
1348
+ - **Streaming:** false
1349
+
1350
+ **Parameters:**
1351
+
1352
+ | Name | Type | Required | Repeated | Description |
1353
+ | --- | --- | --- | --- | --- |
1354
+ | `context` | `ProjectContext` | | | |
1355
+ | `localPos` | `Vector2i64` | | | |
1356
+
1357
+ #### `obj-place-handle-image-draw-click`
1358
+
1359
+ > Handle Image Draw Click via ObjPlaceService.HandleImageDrawClick
1360
+
1361
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1362
+ - **Method:** HandleImageDrawClick (`unary`)
1363
+ - **Request type:** `HandleImageDrawClickRequest`
1364
+ - **Response type:** `HandleImageDrawClickResponse`
1365
+ - **Streaming:** false
1366
+
1367
+ **Parameters:**
1368
+
1369
+ | Name | Type | Required | Repeated | Description |
1370
+ | --- | --- | --- | --- | --- |
1371
+ | `context` | `ProjectContext` | | | |
1372
+ | `localPos` | `Vector2i64` | | | |
1373
+ | `inPage` | `boolean` | ✓ | | |
1374
+
1375
+ #### `obj-place-handle-line-draw-click`
1376
+
1377
+ > Handle Line Draw Click via ObjPlaceService.HandleLineDrawClick
1378
+
1379
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1380
+ - **Method:** HandleLineDrawClick (`unary`)
1381
+ - **Request type:** `HandleLineDrawClickRequest`
1382
+ - **Response type:** `HandleLineDrawClickResponse`
1383
+ - **Streaming:** false
1384
+
1385
+ **Parameters:**
1386
+
1387
+ | Name | Type | Required | Repeated | Description |
1388
+ | --- | --- | --- | --- | --- |
1389
+ | `context` | `ProjectContext` | | | |
1390
+ | `localPos` | `Vector2i64` | | | |
1391
+
1392
+ #### `obj-place-handle-net-alias-draw-click`
1393
+
1394
+ > Handle Net Alias Draw Click via ObjPlaceService.HandleNetAliasDrawClick
1395
+
1396
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1397
+ - **Method:** HandleNetAliasDrawClick (`unary`)
1398
+ - **Request type:** `LocalClickRequest`
1399
+ - **Response type:** `HandleNetAliasDrawClickResponse`
1400
+ - **Streaming:** false
1401
+
1402
+ **Parameters:**
1403
+
1404
+ | Name | Type | Required | Repeated | Description |
1405
+ | --- | --- | --- | --- | --- |
1406
+ | `context` | `ProjectContext` | | | |
1407
+ | `localPos` | `Vector2i64` | | | |
1408
+
1409
+ #### `obj-place-handle-rect-draw-click`
1410
+
1411
+ > Handle Rect Draw Click via ObjPlaceService.HandleRectDrawClick
1412
+
1413
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1414
+ - **Method:** HandleRectDrawClick (`unary`)
1415
+ - **Request type:** `LocalClickRequest`
1416
+ - **Response type:** `HandleRectDrawClickResponse`
1417
+ - **Streaming:** false
1418
+
1419
+ **Parameters:**
1420
+
1421
+ | Name | Type | Required | Repeated | Description |
1422
+ | --- | --- | --- | --- | --- |
1423
+ | `context` | `ProjectContext` | | | |
1424
+ | `localPos` | `Vector2i64` | | | |
1425
+
1426
+ #### `obj-place-handle-table-draw-click`
1427
+
1428
+ > Handle Table Draw Click via ObjPlaceService.HandleTableDrawClick
1429
+
1430
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1431
+ - **Method:** HandleTableDrawClick (`unary`)
1432
+ - **Request type:** `LocalClickRequest`
1433
+ - **Response type:** `HandleTableDrawClickResponse`
1434
+ - **Streaming:** false
1435
+
1436
+ **Parameters:**
1437
+
1438
+ | Name | Type | Required | Repeated | Description |
1439
+ | --- | --- | --- | --- | --- |
1440
+ | `context` | `ProjectContext` | | | |
1441
+ | `localPos` | `Vector2i64` | | | |
1442
+
1443
+ #### `obj-place-handle-text-draw-click`
1444
+
1445
+ > Handle Text Draw Click via ObjPlaceService.HandleTextDrawClick
1446
+
1447
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1448
+ - **Method:** HandleTextDrawClick (`unary`)
1449
+ - **Request type:** `LocalClickRequest`
1450
+ - **Response type:** `HandleTextDrawClickResponse`
1451
+ - **Streaming:** false
1452
+
1453
+ **Parameters:**
1454
+
1455
+ | Name | Type | Required | Repeated | Description |
1456
+ | --- | --- | --- | --- | --- |
1457
+ | `context` | `ProjectContext` | | | |
1458
+ | `localPos` | `Vector2i64` | | | |
1459
+
1460
+ #### `obj-place-handle-wire-draw-click`
1461
+
1462
+ > wire
1463
+
1464
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1465
+ - **Method:** HandleWireDrawClick (`unary`)
1466
+ - **Request type:** `LocalClickRequest`
1467
+ - **Response type:** `HandleWireDrawClickResponse`
1468
+ - **Streaming:** false
1469
+
1470
+ **Parameters:**
1471
+
1472
+ | Name | Type | Required | Repeated | Description |
1473
+ | --- | --- | --- | --- | --- |
1474
+ | `context` | `ProjectContext` | | | |
1475
+ | `localPos` | `Vector2i64` | | | |
1476
+
1477
+ #### `obj-place-place-bus`
1478
+
1479
+ > Place Bus via ObjPlaceService.PlaceBus
1480
+
1481
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1482
+ - **Method:** PlaceBus (`unary`)
1483
+ - **Request type:** `PlaceLineRequest`
1484
+ - **Response type:** `PlaceLineResponse`
1485
+ - **Streaming:** false
1486
+
1487
+ **Parameters:**
1488
+
1489
+ | Name | Type | Required | Repeated | Description |
1490
+ | --- | --- | --- | --- | --- |
1491
+ | `context` | `ProjectContext` | | | |
1492
+ | `geometry` | `Line2i64` | | | |
1493
+ | `snapToGrid` | `boolean` | ✓ | | |
1494
+
1495
+ #### `obj-place-place-ellipse`
1496
+
1497
+ > ellipse
1498
+
1499
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1500
+ - **Method:** PlaceEllipse (`unary`)
1501
+ - **Request type:** `BoxShiftPlaceRequest`
1502
+ - **Response type:** `ObjectPlaceResponse`
1503
+ - **Streaming:** false
1504
+
1505
+ **Parameters:**
1506
+
1507
+ | Name | Type | Required | Repeated | Description |
1508
+ | --- | --- | --- | --- | --- |
1509
+ | `context` | `ProjectContext` | | | |
1510
+ | `box` | `Box2i64` | | | |
1511
+ | `snapToGrid` | `boolean` | ✓ | | |
1512
+ | `shiftConstrain` | `boolean` | ✓ | | |
1513
+
1514
+ #### `obj-place-place-ellipse-arc`
1515
+
1516
+ > ellipse arc
1517
+
1518
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1519
+ - **Method:** PlaceEllipseArc (`unary`)
1520
+ - **Request type:** `ObjDataPlaceRequest`
1521
+ - **Response type:** `ObjectPlaceResponse`
1522
+ - **Streaming:** false
1523
+
1524
+ **Parameters:**
1525
+
1526
+ | Name | Type | Required | Repeated | Description |
1527
+ | --- | --- | --- | --- | --- |
1528
+ | `context` | `ProjectContext` | | | |
1529
+ | `objDataJson` | `string` | ✓ | | |
1530
+
1531
+ #### `obj-place-place-ellipse-arc-from-virtual`
1532
+
1533
+ > Place Ellipse Arc From Virtual via ObjPlaceService.PlaceEllipseArcFromVirtual
1534
+
1535
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1536
+ - **Method:** PlaceEllipseArcFromVirtual (`unary`)
1537
+ - **Request type:** `ContextOnlyRequest`
1538
+ - **Response type:** `ObjectPlaceResponse`
1539
+ - **Streaming:** false
1540
+
1541
+ **Parameters:**
1542
+
1543
+ | Name | Type | Required | Repeated | Description |
1544
+ | --- | --- | --- | --- | --- |
1545
+ | `context` | `ProjectContext` | | | |
1546
+
1547
+ #### `obj-place-place-free-line`
1548
+
1549
+ > free line
1550
+
1551
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1552
+ - **Method:** PlaceFreeLine (`unary`)
1553
+ - **Request type:** `PlaceFreeLineRequest`
1554
+ - **Response type:** `ObjectPlaceResponse`
1555
+ - **Streaming:** false
1556
+
1557
+ **Parameters:**
1558
+
1559
+ | Name | Type | Required | Repeated | Description |
1560
+ | --- | --- | --- | --- | --- |
1561
+ | `context` | `ProjectContext` | | | |
1562
+ | `geometry` | `Line2i64` | | | |
1563
+ | `snapToGrid` | `boolean` | ✓ | | |
1564
+ | `orthoConstrain` | `boolean` | ✓ | | |
1565
+
1566
+ #### `obj-place-place-image`
1567
+
1568
+ > image
1569
+
1570
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1571
+ - **Method:** PlaceImage (`unary`)
1572
+ - **Request type:** `PlaceImageRequest`
1573
+ - **Response type:** `ObjectPlaceResponse`
1574
+ - **Streaming:** false
1575
+
1576
+ **Parameters:**
1577
+
1578
+ | Name | Type | Required | Repeated | Description |
1579
+ | --- | --- | --- | --- | --- |
1580
+ | `context` | `ProjectContext` | | | |
1581
+ | `localPos` | `Vector2i64` | | | |
1582
+ | `imagePath` | `string` | ✓ | | |
1583
+ | `snapToGrid` | `boolean` | ✓ | | |
1584
+
1585
+ #### `obj-place-place-line`
1586
+
1587
+ > line
1588
+
1589
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1590
+ - **Method:** PlaceLine (`unary`)
1591
+ - **Request type:** `PlaceLineRequest`
1592
+ - **Response type:** `PlaceLineResponse`
1593
+ - **Streaming:** false
1594
+
1595
+ **Parameters:**
1596
+
1597
+ | Name | Type | Required | Repeated | Description |
1598
+ | --- | --- | --- | --- | --- |
1599
+ | `context` | `ProjectContext` | | | |
1600
+ | `geometry` | `Line2i64` | | | |
1601
+ | `snapToGrid` | `boolean` | ✓ | | |
1602
+
1603
+ #### `obj-place-place-net-alias`
1604
+
1605
+ > net alias
1606
+
1607
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1608
+ - **Method:** PlaceNetAlias (`unary`)
1609
+ - **Request type:** `PlaceNetAliasRequest`
1610
+ - **Response type:** `ObjectPlaceResponse`
1611
+ - **Streaming:** false
1612
+
1613
+ **Parameters:**
1614
+
1615
+ | Name | Type | Required | Repeated | Description |
1616
+ | --- | --- | --- | --- | --- |
1617
+ | `context` | `ProjectContext` | | | |
1618
+ | `localPos` | `Vector2i64` | | | |
1619
+ | `snapToGrid` | `boolean` | ✓ | | |
1620
+
1621
+ #### `obj-place-place-rect`
1622
+
1623
+ > rect
1624
+
1625
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1626
+ - **Method:** PlaceRect (`unary`)
1627
+ - **Request type:** `BoxPlaceRequest`
1628
+ - **Response type:** `ObjectPlaceResponse`
1629
+ - **Streaming:** false
1630
+
1631
+ **Parameters:**
1632
+
1633
+ | Name | Type | Required | Repeated | Description |
1634
+ | --- | --- | --- | --- | --- |
1635
+ | `context` | `ProjectContext` | | | |
1636
+ | `box` | `Box2i64` | | | |
1637
+ | `snapToGrid` | `boolean` | ✓ | | |
1638
+
1639
+ #### `obj-place-place-table`
1640
+
1641
+ > table
1642
+
1643
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1644
+ - **Method:** PlaceTable (`unary`)
1645
+ - **Request type:** `ObjDataPlaceRequest`
1646
+ - **Response type:** `ObjectPlaceResponse`
1647
+ - **Streaming:** false
1648
+
1649
+ **Parameters:**
1650
+
1651
+ | Name | Type | Required | Repeated | Description |
1652
+ | --- | --- | --- | --- | --- |
1653
+ | `context` | `ProjectContext` | | | |
1654
+ | `objDataJson` | `string` | ✓ | | |
1655
+
1656
+ #### `obj-place-place-table-from-virtual`
1657
+
1658
+ > Place Table From Virtual via ObjPlaceService.PlaceTableFromVirtual
1659
+
1660
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1661
+ - **Method:** PlaceTableFromVirtual (`unary`)
1662
+ - **Request type:** `ContextOnlyRequest`
1663
+ - **Response type:** `ObjectPlaceResponse`
1664
+ - **Streaming:** false
1665
+
1666
+ **Parameters:**
1667
+
1668
+ | Name | Type | Required | Repeated | Description |
1669
+ | --- | --- | --- | --- | --- |
1670
+ | `context` | `ProjectContext` | | | |
1671
+
1672
+ #### `obj-place-place-text`
1673
+
1674
+ > text
1675
+
1676
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1677
+ - **Method:** PlaceText (`unary`)
1678
+ - **Request type:** `ObjDataPlaceRequest`
1679
+ - **Response type:** `ObjectPlaceResponse`
1680
+ - **Streaming:** false
1681
+
1682
+ **Parameters:**
1683
+
1684
+ | Name | Type | Required | Repeated | Description |
1685
+ | --- | --- | --- | --- | --- |
1686
+ | `context` | `ProjectContext` | | | |
1687
+ | `objDataJson` | `string` | ✓ | | |
1688
+
1689
+ #### `obj-place-place-text-from-virtual`
1690
+
1691
+ > Place Text From Virtual via ObjPlaceService.PlaceTextFromVirtual
1692
+
1693
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1694
+ - **Method:** PlaceTextFromVirtual (`unary`)
1695
+ - **Request type:** `ContextOnlyRequest`
1696
+ - **Response type:** `ObjectPlaceResponse`
1697
+ - **Streaming:** false
1698
+
1699
+ **Parameters:**
1700
+
1701
+ | Name | Type | Required | Repeated | Description |
1702
+ | --- | --- | --- | --- | --- |
1703
+ | `context` | `ProjectContext` | | | |
1704
+
1705
+ #### `obj-place-place-wire`
1706
+
1707
+ > Place Wire via ObjPlaceService.PlaceWire
1708
+
1709
+ - **Service:** ObjPlaceService (`ObjPlaceService`)
1710
+ - **Method:** PlaceWire (`unary`)
1711
+ - **Request type:** `PlaceLineRequest`
1712
+ - **Response type:** `PlaceLineResponse`
1713
+ - **Streaming:** false
1714
+
1715
+ **Parameters:**
1716
+
1717
+ | Name | Type | Required | Repeated | Description |
1718
+ | --- | --- | --- | --- | --- |
1719
+ | `context` | `ProjectContext` | | | |
1720
+ | `geometry` | `Line2i64` | | | |
1721
+ | `snapToGrid` | `boolean` | ✓ | | |
1722
+
1723
+ ### `placement`
1724
+
1725
+ | Skill ID | Service.Method | Description | Input | Streaming |
1726
+ | --- | --- | --- | --- | --- |
1727
+ | `placement-cancel-block-draw` | `ComponentPlaceService.CancelBlockDraw` | Cancel Block Draw via ComponentPlaceService.CancelBlockDraw | `ContextOnlyRequest` | |
1728
+ | `placement-clear-net-alias-attach-obj` | `ComponentPlaceService.ClearNetAliasAttachObj` | Clear Net Alias Attach Obj via ComponentPlaceService.ClearNetAliasAttachObj | `ContextOnlyRequest` | |
1729
+ | `placement-handle-block-draw-click` | `ComponentPlaceService.HandleBlockDrawClick` | Handle Block Draw Click via ComponentPlaceService.HandleBlockDrawClick | `LocalClickRequest` | |
1730
+ | `placement-handle-part-draw-click` | `ComponentPlaceService.HandlePartDrawClick` | Handle Part Draw Click via ComponentPlaceService.HandlePartDrawClick | `HandlePartDrawClickRequest` | |
1731
+ | `placement-handle-symbol-draw-click` | `ComponentPlaceService.HandleSymbolDrawClick` | Handle Symbol Draw Click via ComponentPlaceService.HandleSymbolDrawClick | `HandleSymbolDrawClickRequest` | |
1732
+ | `placement-place-block` | `ComponentPlaceService.PlaceBlock` | block | `BoxPlaceRequest` | |
1733
+ | `placement-place-part` | `ComponentPlaceService.PlacePart` | part | `PlacePartRequest` | |
1734
+ | `placement-place-symbol` | `ComponentPlaceService.PlaceSymbol` | symbol | `PlaceSymbolRequest` | |
1735
+ | `placement-set-net-alias-attach-obj` | `ComponentPlaceService.SetNetAliasAttachObj` | net alias attach | `SetNetAliasAttachObjRequest` | |
1736
+
1737
+ #### `placement-cancel-block-draw`
1738
+
1739
+ > Cancel Block Draw via ComponentPlaceService.CancelBlockDraw
1740
+
1741
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1742
+ - **Method:** CancelBlockDraw (`unary`)
1743
+ - **Request type:** `ContextOnlyRequest`
1744
+ - **Response type:** `SuccessResponse`
1745
+ - **Streaming:** false
1746
+
1747
+ **Parameters:**
1748
+
1749
+ | Name | Type | Required | Repeated | Description |
1750
+ | --- | --- | --- | --- | --- |
1751
+ | `context` | `ProjectContext` | | | |
1752
+
1753
+ #### `placement-clear-net-alias-attach-obj`
1754
+
1755
+ > Clear Net Alias Attach Obj via ComponentPlaceService.ClearNetAliasAttachObj
1756
+
1757
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1758
+ - **Method:** ClearNetAliasAttachObj (`unary`)
1759
+ - **Request type:** `ContextOnlyRequest`
1760
+ - **Response type:** `SuccessResponse`
1761
+ - **Streaming:** false
1762
+
1763
+ **Parameters:**
1764
+
1765
+ | Name | Type | Required | Repeated | Description |
1766
+ | --- | --- | --- | --- | --- |
1767
+ | `context` | `ProjectContext` | | | |
1768
+
1769
+ #### `placement-handle-block-draw-click`
1770
+
1771
+ > Handle Block Draw Click via ComponentPlaceService.HandleBlockDrawClick
1772
+
1773
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1774
+ - **Method:** HandleBlockDrawClick (`unary`)
1775
+ - **Request type:** `LocalClickRequest`
1776
+ - **Response type:** `HandleBlockDrawClickResponse`
1777
+ - **Streaming:** false
1778
+
1779
+ **Parameters:**
1780
+
1781
+ | Name | Type | Required | Repeated | Description |
1782
+ | --- | --- | --- | --- | --- |
1783
+ | `context` | `ProjectContext` | | | |
1784
+ | `localPos` | `Vector2i64` | | | |
1785
+
1786
+ #### `placement-handle-part-draw-click`
1787
+
1788
+ > Handle Part Draw Click via ComponentPlaceService.HandlePartDrawClick
1789
+
1790
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1791
+ - **Method:** HandlePartDrawClick (`unary`)
1792
+ - **Request type:** `HandlePartDrawClickRequest`
1793
+ - **Response type:** `HandlePartDrawClickResponse`
1794
+ - **Streaming:** false
1795
+
1796
+ **Parameters:**
1797
+
1798
+ | Name | Type | Required | Repeated | Description |
1799
+ | --- | --- | --- | --- | --- |
1800
+ | `context` | `ProjectContext` | | | |
1801
+ | `windowX` | `number` | ✓ | | |
1802
+ | `windowY` | `number` | ✓ | | |
1803
+ | `localPos` | `Vector2i64` | | | |
1804
+
1805
+ #### `placement-handle-symbol-draw-click`
1806
+
1807
+ > Handle Symbol Draw Click via ComponentPlaceService.HandleSymbolDrawClick
1808
+
1809
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1810
+ - **Method:** HandleSymbolDrawClick (`unary`)
1811
+ - **Request type:** `HandleSymbolDrawClickRequest`
1812
+ - **Response type:** `HandleSymbolDrawClickResponse`
1813
+ - **Streaming:** false
1814
+
1815
+ **Parameters:**
1816
+
1817
+ | Name | Type | Required | Repeated | Description |
1818
+ | --- | --- | --- | --- | --- |
1819
+ | `context` | `ProjectContext` | | | |
1820
+ | `windowX` | `number` | ✓ | | |
1821
+ | `windowY` | `number` | ✓ | | |
1822
+ | `localPos` | `Vector2i64` | | | |
1823
+
1824
+ #### `placement-place-block`
1825
+
1826
+ > block
1827
+
1828
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1829
+ - **Method:** PlaceBlock (`unary`)
1830
+ - **Request type:** `BoxPlaceRequest`
1831
+ - **Response type:** `ObjectPlaceResponse`
1832
+ - **Streaming:** false
1833
+
1834
+ **Parameters:**
1835
+
1836
+ | Name | Type | Required | Repeated | Description |
1837
+ | --- | --- | --- | --- | --- |
1838
+ | `context` | `ProjectContext` | | | |
1839
+ | `box` | `Box2i64` | | | |
1840
+ | `snapToGrid` | `boolean` | ✓ | | |
1841
+
1842
+ #### `placement-place-part`
1843
+
1844
+ > part
1845
+
1846
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1847
+ - **Method:** PlacePart (`unary`)
1848
+ - **Request type:** `PlacePartRequest`
1849
+ - **Response type:** `ObjectPlaceResponse`
1850
+ - **Streaming:** false
1851
+
1852
+ **Parameters:**
1853
+
1854
+ | Name | Type | Required | Repeated | Description |
1855
+ | --- | --- | --- | --- | --- |
1856
+ | `context` | `ProjectContext` | | | |
1857
+ | `localPos` | `Vector2i64` | | | |
1858
+ | `jsonPartInst` | `string` | ✓ | | |
1859
+ | `jsonPart` | `string` | ✓ | | |
1860
+
1861
+ #### `placement-place-symbol`
1862
+
1863
+ > symbol
1864
+
1865
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1866
+ - **Method:** PlaceSymbol (`unary`)
1867
+ - **Request type:** `PlaceSymbolRequest`
1868
+ - **Response type:** `ObjectPlaceResponse`
1869
+ - **Streaming:** false
1870
+
1871
+ **Parameters:**
1872
+
1873
+ | Name | Type | Required | Repeated | Description |
1874
+ | --- | --- | --- | --- | --- |
1875
+ | `context` | `ProjectContext` | | | |
1876
+ | `localPos` | `Vector2i64` | | | |
1877
+ | `jsonSymbolInst` | `string` | ✓ | | |
1878
+ | `jsonSymbol` | `string` | ✓ | | |
1879
+
1880
+ #### `placement-set-net-alias-attach-obj`
1881
+
1882
+ > net alias attach
1883
+
1884
+ - **Service:** ComponentPlaceService (`ComponentPlaceService`)
1885
+ - **Method:** SetNetAliasAttachObj (`unary`)
1886
+ - **Request type:** `SetNetAliasAttachObjRequest`
1887
+ - **Response type:** `SetNetAliasAttachObjResponse`
1888
+ - **Streaming:** false
1889
+
1890
+ **Parameters:**
1891
+
1892
+ | Name | Type | Required | Repeated | Description |
1893
+ | --- | --- | --- | --- | --- |
1894
+ | `context` | `ProjectContext` | | | |
1895
+ | `objectId` | `bigint` | ✓ | | |
1896
+
1897
+ ### `project`
1898
+
1899
+ | Skill ID | Service.Method | Description | Input | Streaming |
1900
+ | --- | --- | --- | --- | --- |
1901
+ | `project-close-project` | `ProjectService.CloseProject` | Closes an opened project. | `CloseProjectRequest` | |
1902
+ | `project-get-active-project` | `ProjectService.GetActiveProject` | Returns the project currently active in the editor UI. | `GetActiveProjectRequest` | |
1903
+ | `project-get-project` | `ProjectService.GetProject` | Returns one opened project. | `GetProjectRequest` | |
1904
+ | `project-list-open-projects` | `ProjectService.ListOpenProjects` | Returns all projects currently opened in this HQ EDA process. | `ListOpenProjectsRequest` | |
1905
+ | `project-open-project` | `ProjectService.OpenProject` | Opens a project into the current HQ EDA editor process. | `OpenProjectRequest` | |
1906
+ | `project-save-project` | `ProjectService.SaveProject` | Persists an opened project. | `SaveProjectRequest` | |
1907
+
1908
+ #### `project-close-project`
1909
+
1910
+ > Closes an opened project.
1911
+
1912
+ - **Service:** ProjectService (`ProjectService`)
1913
+ - **Method:** CloseProject (`unary`)
1914
+ - **Request type:** `CloseProjectRequest`
1915
+ - **Response type:** `CloseProjectResponse`
1916
+ - **Streaming:** false
1917
+
1918
+ **Parameters:**
1919
+
1920
+ | Name | Type | Required | Repeated | Description |
1921
+ | --- | --- | --- | --- | --- |
1922
+ | `context` | `ProjectContext` | | | |
1923
+ | `requireSaved` | `boolean` | ✓ | | Refuse to close if the project contains unsaved changes. |
1924
+
1925
+ #### `project-get-active-project`
1926
+
1927
+ > Returns the project currently active in the editor UI.
1928
+
1929
+ - **Service:** ProjectService (`ProjectService`)
1930
+ - **Method:** GetActiveProject (`unary`)
1931
+ - **Request type:** `GetActiveProjectRequest`
1932
+ - **Response type:** `GetActiveProjectResponse`
1933
+ - **Streaming:** false
1934
+
1935
+ **Parameters:**
1936
+
1937
+ | Name | Type | Required | Repeated | Description |
1938
+ | --- | --- | --- | --- | --- |
1939
+ | `context` | `EditorContext` | | | |
1940
+
1941
+ **Examples:**
1942
+
1943
+ - *getActiveProject returns the active project* (`discover-active-project.test.ts`)
1944
+
1945
+ ```json
1946
+ {
1947
+ "context": "<createEditorContext>"
1948
+ }
1949
+ ```
1950
+ - *server is responsive on port 59999* (`health-check.test.ts`)
1951
+
1952
+ ```json
1953
+ {
1954
+ "context": "<createEditorContext>"
1955
+ }
1956
+ ```
1957
+ - *list open projects and verify project metadata* (`integration.test.ts`)
1958
+
1959
+ ```json
1960
+ {
1961
+ "context": "<createEditorContext>"
1962
+ }
1963
+ ```
1964
+
1965
+ #### `project-get-project`
1966
+
1967
+ > Returns one opened project.
1968
+
1969
+ - **Service:** ProjectService (`ProjectService`)
1970
+ - **Method:** GetProject (`unary`)
1971
+ - **Request type:** `GetProjectRequest`
1972
+ - **Response type:** `GetProjectResponse`
1973
+ - **Streaming:** false
1974
+
1975
+ **Parameters:**
1976
+
1977
+ | Name | Type | Required | Repeated | Description |
1978
+ | --- | --- | --- | --- | --- |
1979
+ | `context` | `ProjectContext` | | | |
1980
+
1981
+ **Examples:**
1982
+
1983
+ - *getProject returns details for discovered project* (`discover-active-project.test.ts`)
1984
+
1985
+ ```json
1986
+ {
1987
+ "context": "<createProjectContext>"
1988
+ }
1989
+ ```
1990
+ - *list open projects and verify project metadata* (`integration.test.ts`)
1991
+
1992
+ ```json
1993
+ {
1994
+ "context": "<createProjectContext>"
1995
+ }
1996
+ ```
1997
+
1998
+ #### `project-list-open-projects`
1999
+
2000
+ > Returns all projects currently opened in this HQ EDA process.
2001
+
2002
+ - **Service:** ProjectService (`ProjectService`)
2003
+ - **Method:** ListOpenProjects (`unary`)
2004
+ - **Request type:** `ListOpenProjectsRequest`
2005
+ - **Response type:** `ListOpenProjectsResponse`
2006
+ - **Streaming:** false
2007
+
2008
+ **Parameters:**
2009
+
2010
+ | Name | Type | Required | Repeated | Description |
2011
+ | --- | --- | --- | --- | --- |
2012
+ | `context` | `EditorContext` | | | |
2013
+
2014
+ **Examples:**
2015
+
2016
+ - *lists open projects via editor context* (`discover-active-project.test.ts`)
2017
+
2018
+ ```json
2019
+ {
2020
+ "context": "<createEditorContext>"
2021
+ }
2022
+ ```
2023
+ - *toJson produces LLM-friendly JSON output* (`discover-active-project.test.ts`)
2024
+
2025
+ ```json
2026
+ {
2027
+ "context": "<createEditorContext>"
2028
+ }
2029
+ ```
2030
+ - *list open projects and verify project metadata* (`integration.test.ts`)
2031
+
2032
+ ```json
2033
+ {
2034
+ "context": "<createEditorContext>"
2035
+ }
2036
+ ```
2037
+
2038
+ #### `project-open-project`
2039
+
2040
+ > Opens a project into the current HQ EDA editor process.
2041
+
2042
+ - **Service:** ProjectService (`ProjectService`)
2043
+ - **Method:** OpenProject (`unary`)
2044
+ - **Request type:** `OpenProjectRequest`
2045
+ - **Response type:** `OpenProjectResponse`
2046
+ - **Streaming:** false
2047
+
2048
+ **Parameters:**
2049
+
2050
+ | Name | Type | Required | Repeated | Description |
2051
+ | --- | --- | --- | --- | --- |
2052
+ | `context` | `EditorContext` | | | |
2053
+ | `location` | `string` | ✓ | | File path, URI, object-store key, etc. |
2054
+
2055
+ **Examples:**
2056
+
2057
+ - *open a new project and save it* (`integration.test.ts`)
2058
+
2059
+ ```json
2060
+ {
2061
+ "location": "poc-new-project"
2062
+ }
2063
+ ```
2064
+ - *open a new project and save it* (`integration.test.ts`)
2065
+
2066
+ ```json
2067
+ {
2068
+ "location": "poc-new-project"
2069
+ }
2070
+ ```
2071
+ - *skill: open project* (`open-project.test.ts`)
2072
+
2073
+ ```json
2074
+ {
2075
+ "location": "demo-project"
2076
+ }
2077
+ ```
2078
+ - *opens a new project by location* (`open-project.test.ts`)
2079
+
2080
+ ```json
2081
+ {
2082
+ "location": "poc-new-project"
2083
+ }
2084
+ ```
2085
+ - *saves an open project* (`open-project.test.ts`)
2086
+
2087
+ ```json
2088
+ {
2089
+ "location": "poc-new-project"
2090
+ }
2091
+ ```
2092
+ - *toJson produces LLM-friendly JSON output* (`open-project.test.ts`)
2093
+
2094
+ ```json
2095
+ {
2096
+ "location": "poc-skill-project"
2097
+ }
2098
+ ```
2099
+
2100
+ #### `project-save-project`
2101
+
2102
+ > Persists an opened project.
2103
+
2104
+ - **Service:** ProjectService (`ProjectService`)
2105
+ - **Method:** SaveProject (`unary`)
2106
+ - **Request type:** `SaveProjectRequest`
2107
+ - **Response type:** `SaveProjectResponse`
2108
+ - **Streaming:** false
2109
+
2110
+ **Parameters:**
2111
+
2112
+ | Name | Type | Required | Repeated | Description |
2113
+ | --- | --- | --- | --- | --- |
2114
+ | `context` | `ProjectContext` | | | |
2115
+ | `destination` | `string` | | | Optional alternative save destination.
2116
+ Empty means "save in place". |
2117
+
2118
+ **Examples:**
2119
+
2120
+ - *open a new project and save it* (`integration.test.ts`)
2121
+
2122
+ ```json
2123
+ {
2124
+ "context": "<createProjectContext>"
2125
+ }
2126
+ ```
2127
+ - *saves an open project* (`open-project.test.ts`)
2128
+
2129
+ ```json
2130
+ {
2131
+ "context": "<createProjectContext>"
2132
+ }
2133
+ ```
2134
+
2135
+ ### `runtime`
2136
+
2137
+ | Skill ID | Service.Method | Description | Input | Streaming |
2138
+ | --- | --- | --- | --- | --- |
2139
+ | `runtime-execute-commands` | `RuntimeService.ExecuteCommands` | Execute Commands via RuntimeService.ExecuteCommands | `ExecuteCommandsRequest` | |
2140
+ | `runtime-validate-commands` | `RuntimeService.ValidateCommands` | Validate Commands via RuntimeService.ValidateCommands | `ValidationRequest` | |
2141
+
2142
+ #### `runtime-execute-commands`
2143
+
2144
+ > Execute Commands via RuntimeService.ExecuteCommands
2145
+
2146
+ - **Service:** RuntimeService (`RuntimeService`)
2147
+ - **Method:** ExecuteCommands (`unary`)
2148
+ - **Request type:** `ExecuteCommandsRequest`
2149
+ - **Response type:** `ExecuteCommandsResponse`
2150
+ - **Streaming:** false
2151
+
2152
+ **Parameters:**
2153
+
2154
+ | Name | Type | Required | Repeated | Description |
2155
+ | --- | --- | --- | --- | --- |
2156
+ | `context` | `ProjectContext` | | | |
2157
+ | `commands` | `Command[]` | | ✓ | |
2158
+
2159
+ #### `runtime-validate-commands`
2160
+
2161
+ > Validate Commands via RuntimeService.ValidateCommands
2162
+
2163
+ - **Service:** RuntimeService (`RuntimeService`)
2164
+ - **Method:** ValidateCommands (`unary`)
2165
+ - **Request type:** `ValidationRequest`
2166
+ - **Response type:** `ValidationResult`
2167
+ - **Streaming:** false
2168
+
2169
+ **Parameters:**
2170
+
2171
+ | Name | Type | Required | Repeated | Description |
2172
+ | --- | --- | --- | --- | --- |
2173
+ | `context` | `ProjectContext` | | | |
2174
+ | `commands` | `Command[]` | | ✓ | |
2175
+ | `baseRevision` | `bigint` | ✓ | | |
2176
+
2177
+ ### `selection`
2178
+
2179
+ | Skill ID | Service.Method | Description | Input | Streaming |
2180
+ | --- | --- | --- | --- | --- |
2181
+ | `selection-clear-selection` | `SelectionService.ClearSelection` | Clear Selection via SelectionService.ClearSelection | `ClearSelectionRequest` | |
2182
+ | `selection-get-selection` | `SelectionService.GetSelection` | Get Selection via SelectionService.GetSelection | `GetSelectionRequest` | |
2183
+ | `selection-set-selection` | `SelectionService.SetSelection` | Set Selection via SelectionService.SetSelection | `SetSelectionRequest` | |
2184
+
2185
+ #### `selection-clear-selection`
2186
+
2187
+ > Clear Selection via SelectionService.ClearSelection
2188
+
2189
+ - **Service:** SelectionService (`SelectionService`)
2190
+ - **Method:** ClearSelection (`unary`)
2191
+ - **Request type:** `ClearSelectionRequest`
2192
+ - **Response type:** `ClearSelectionResponse`
2193
+ - **Streaming:** false
2194
+
2195
+ **Parameters:**
2196
+
2197
+ | Name | Type | Required | Repeated | Description |
2198
+ | --- | --- | --- | --- | --- |
2199
+ | `context` | `ProjectContext` | | | |
2200
+
2201
+ #### `selection-get-selection`
2202
+
2203
+ > Get Selection via SelectionService.GetSelection
2204
+
2205
+ - **Service:** SelectionService (`SelectionService`)
2206
+ - **Method:** GetSelection (`unary`)
2207
+ - **Request type:** `GetSelectionRequest`
2208
+ - **Response type:** `GetSelectionResponse`
2209
+ - **Streaming:** false
2210
+
2211
+ **Parameters:**
2212
+
2213
+ | Name | Type | Required | Repeated | Description |
2214
+ | --- | --- | --- | --- | --- |
2215
+ | `context` | `ProjectContext` | | | |
2216
+ | `typeFilter` | `string[]` | | ✓ | Optional filter. If non-empty, the server returns only ids whose
2217
+ domain type is listed. This lets callers ask for "jus |
2218
+
2219
+ **Examples:**
2220
+
2221
+ - *server is responsive on port 59999* (`health-check.test.ts`)
2222
+
2223
+ ```json
2224
+ {
2225
+ "context": "<createEditorContext>"
2226
+ }
2227
+ ```
2228
+ - *set selection on a discovered project* (`integration.test.ts`)
2229
+
2230
+ ```json
2231
+ {
2232
+ "context": "<createProjectContext>"
2233
+ }
2234
+ ```
2235
+ - *sets selection and retrieves it back* (`selection.test.ts`)
2236
+
2237
+ ```json
2238
+ {
2239
+ "context": "<createProjectContext>"
2240
+ }
2241
+ ```
2242
+ - *toJson produces LLM-friendly JSON output* (`selection.test.ts`)
2243
+
2244
+ ```json
2245
+ {
2246
+ "context": "<createProjectContext>"
2247
+ }
2248
+ ```
2249
+
2250
+ #### `selection-set-selection`
2251
+
2252
+ > Set Selection via SelectionService.SetSelection
2253
+
2254
+ - **Service:** SelectionService (`SelectionService`)
2255
+ - **Method:** SetSelection (`unary`)
2256
+ - **Request type:** `SetSelectionRequest`
2257
+ - **Response type:** `SetSelectionResponse`
2258
+ - **Streaming:** false
2259
+
2260
+ **Parameters:**
2261
+
2262
+ | Name | Type | Required | Repeated | Description |
2263
+ | --- | --- | --- | --- | --- |
2264
+ | `context` | `ProjectContext` | | | |
2265
+ | `entityIds` | `string[]` | | ✓ | Replaces the current selection set. |
2266
+
2267
+ **Examples:**
2268
+
2269
+ - *set selection on a discovered project* (`integration.test.ts`)
2270
+
2271
+ ```json
2272
+ {
2273
+ "context": "<createProjectContext>",
2274
+ "entityIds": [
2275
+ "<targetId>"
2276
+ ]
2277
+ }
2278
+ ```
2279
+ - *sets selection and retrieves it back* (`selection.test.ts`)
2280
+
2281
+ ```json
2282
+ {
2283
+ "context": "<createProjectContext>",
2284
+ "entityIds": [
2285
+ "<targetId>"
2286
+ ]
2287
+ }
2288
+ ```
2289
+ - *toJson produces LLM-friendly JSON output* (`selection.test.ts`)
2290
+
2291
+ ```json
2292
+ {
2293
+ "context": "<createProjectContext>",
2294
+ "entityIds": [
2295
+ "<targetId>"
2296
+ ]
2297
+ }
2298
+ ```
2299
+
2300
+ ### `transaction`
2301
+
2302
+ | Skill ID | Service.Method | Description | Input | Streaming |
2303
+ | --- | --- | --- | --- | --- |
2304
+ | `transaction-commit` | `TransactionService.Commit` | Commit via TransactionService.Commit | `TransactionCommitRequest` | |
2305
+ | `transaction-open` | `TransactionService.Open` | Open via TransactionService.Open | `TransactionOpenRequest` | |
2306
+ | `transaction-redo` | `TransactionService.Redo` | Redo via TransactionService.Redo | `RedoRequest` | |
2307
+ | `transaction-rollback` | `TransactionService.Rollback` | Rollback via TransactionService.Rollback | `TransactionDiscardRequest` | |
2308
+ | `transaction-undo` | `TransactionService.Undo` | Undo via TransactionService.Undo | `UndoRequest` | |
2309
+
2310
+ #### `transaction-commit`
2311
+
2312
+ > Commit via TransactionService.Commit
2313
+
2314
+ - **Service:** TransactionService (`TransactionService`)
2315
+ - **Method:** Commit (`unary`)
2316
+ - **Request type:** `TransactionCommitRequest`
2317
+ - **Response type:** `TransactionCommitResponse`
2318
+ - **Streaming:** false
2319
+
2320
+ **Parameters:**
2321
+
2322
+ | Name | Type | Required | Repeated | Description |
2323
+ | --- | --- | --- | --- | --- |
2324
+ | `context` | `ProjectContext` | | | |
2325
+ | `transactionId` | `string` | ✓ | | |
2326
+
2327
+ #### `transaction-open`
2328
+
2329
+ > Open via TransactionService.Open
2330
+
2331
+ - **Service:** TransactionService (`TransactionService`)
2332
+ - **Method:** Open (`unary`)
2333
+ - **Request type:** `TransactionOpenRequest`
2334
+ - **Response type:** `TransactionOpenResponse`
2335
+ - **Streaming:** false
2336
+
2337
+ **Parameters:**
2338
+
2339
+ | Name | Type | Required | Repeated | Description |
2340
+ | --- | --- | --- | --- | --- |
2341
+ | `context` | `ProjectContext` | | | |
2342
+ | `branchName` | `string` | ✓ | | |
2343
+
2344
+ #### `transaction-redo`
2345
+
2346
+ > Redo via TransactionService.Redo
2347
+
2348
+ - **Service:** TransactionService (`TransactionService`)
2349
+ - **Method:** Redo (`unary`)
2350
+ - **Request type:** `RedoRequest`
2351
+ - **Response type:** `RedoResponse`
2352
+ - **Streaming:** false
2353
+
2354
+ **Parameters:**
2355
+
2356
+ | Name | Type | Required | Repeated | Description |
2357
+ | --- | --- | --- | --- | --- |
2358
+ | `context` | `ProjectContext` | | | |
2359
+ | `steps` | `number` | ✓ | | |
2360
+
2361
+ #### `transaction-rollback`
2362
+
2363
+ > Rollback via TransactionService.Rollback
2364
+
2365
+ - **Service:** TransactionService (`TransactionService`)
2366
+ - **Method:** Rollback (`unary`)
2367
+ - **Request type:** `TransactionDiscardRequest`
2368
+ - **Response type:** `TransactionDiscardResponse`
2369
+ - **Streaming:** false
2370
+
2371
+ **Parameters:**
2372
+
2373
+ | Name | Type | Required | Repeated | Description |
2374
+ | --- | --- | --- | --- | --- |
2375
+ | `context` | `ProjectContext` | | | |
2376
+ | `transactionId` | `string` | ✓ | | |
2377
+
2378
+ #### `transaction-undo`
2379
+
2380
+ > Undo via TransactionService.Undo
2381
+
2382
+ - **Service:** TransactionService (`TransactionService`)
2383
+ - **Method:** Undo (`unary`)
2384
+ - **Request type:** `UndoRequest`
2385
+ - **Response type:** `UndoResponse`
2386
+ - **Streaming:** false
2387
+
2388
+ **Parameters:**
2389
+
2390
+ | Name | Type | Required | Repeated | Description |
2391
+ | --- | --- | --- | --- | --- |
2392
+ | `context` | `ProjectContext` | | | |
2393
+ | `steps` | `number` | ✓ | | default = 1 |
2394
+
2395
+ ## Ownership
2396
+
2397
+ | Directory | Owner | Generator Action |
2398
+ | --- | --- | --- |
2399
+ | `generated/` | Capability Generator | ⚠️ Full overwrite |
2400
+ | `SKILL.md` | Human + Generator | 🔄 Preserves frontmatter, updates capabilities |
2401
+ | `skill.json` | Human + Generator | 🔄 Selective merge (capabilities only) |
2402
+ | `playbooks/` | Domain Engineers | 🛡️ Strictly preserved |
2403
+ | `guides/` | Domain Engineers | 🛡️ Strictly preserved |
2404
+ | `prompts/` | AI Systems Team | 🛡️ Strictly preserved |
2405
+