c64bridge 0.9.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/AGENTS.md +19 -3
  2. package/README.md +190 -148
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/c64Client.js +127 -5
  5. package/dist/config.js +12 -8
  6. package/dist/device.js +75 -45
  7. package/dist/mcp-server.js +11 -3
  8. package/dist/platform.js +13 -2
  9. package/dist/tools/audio.js +1 -1
  10. package/dist/tools/developer.js +6 -6
  11. package/dist/tools/graphics.js +4 -4
  12. package/dist/tools/input.js +129 -12
  13. package/dist/tools/machineControl.js +85 -6
  14. package/dist/tools/memory.js +1 -1
  15. package/dist/tools/meta/index.js +1 -1
  16. package/dist/tools/programRunners.js +5 -5
  17. package/dist/tools/rag.js +1 -1
  18. package/dist/tools/registry/batch.js +1 -1
  19. package/dist/tools/registry/config.js +5 -5
  20. package/dist/tools/registry/disk.js +2 -2
  21. package/dist/tools/registry/drive.js +2 -2
  22. package/dist/tools/registry/graphics.js +2 -2
  23. package/dist/tools/registry/memory.js +2 -2
  24. package/dist/tools/registry/platform.js +7 -5
  25. package/dist/tools/registry/program.js +5 -5
  26. package/dist/tools/registry/rag.js +1 -1
  27. package/dist/tools/registry/sound.js +4 -4
  28. package/dist/tools/registry/system.js +13 -3
  29. package/dist/tools/storage.js +1 -1
  30. package/doc/c64u/c64-openapi.yaml +1130 -774
  31. package/doc/u2/u2-openapi.yaml +1192 -0
  32. package/generated/c64/index.js +142 -9
  33. package/generated/openapi/c64u/index.js +1117 -0
  34. package/generated/openapi/u2/index.js +929 -0
  35. package/mcp/schemas/c64_graphics.schema.json +3 -3
  36. package/mcp/schemas/c64_input.schema.json +247 -6
  37. package/mcp/schemas/c64_memory.schema.json +3 -3
  38. package/mcp/schemas/c64_program.schema.json +3 -3
  39. package/mcp/schemas/c64_select_backend.schema.json +2 -0
  40. package/mcp/schemas/c64_system.schema.json +41 -1
  41. package/mcp/server.json +1 -1
  42. package/mcp/tools.json +382 -41
  43. package/mcp.json +14 -2
  44. package/package.json +4 -2
  45. package/scripts/mockC64Server.mjs +40 -0
  46. package/scripts/prepare-release.mjs +13 -2
  47. package/scripts/update-readme.ts +18 -30
  48. package/server.json +3 -3
@@ -0,0 +1,929 @@
1
+ /* eslint-disable */
2
+ /* tslint:disable */
3
+ /*
4
+ * ---------------------------------------------------------------
5
+ * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##
6
+ * ## ##
7
+ * ## AUTHOR: acacode ##
8
+ * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
9
+ * ---------------------------------------------------------------
10
+ */
11
+ import axios from "axios";
12
+ export var ContentType;
13
+ (function (ContentType) {
14
+ ContentType["Json"] = "application/json";
15
+ ContentType["FormData"] = "multipart/form-data";
16
+ ContentType["UrlEncoded"] = "application/x-www-form-urlencoded";
17
+ ContentType["Text"] = "text/plain";
18
+ })(ContentType || (ContentType = {}));
19
+ export class HttpClient {
20
+ constructor({ securityWorker, secure, format, ...axiosConfig } = {}) {
21
+ this.securityData = null;
22
+ this.setSecurityData = (data) => {
23
+ this.securityData = data;
24
+ };
25
+ this.request = async ({ secure, path, type, query, format, body, ...params }) => {
26
+ const secureParams = ((typeof secure === "boolean" ? secure : this.secure) &&
27
+ this.securityWorker &&
28
+ (await this.securityWorker(this.securityData))) ||
29
+ {};
30
+ const requestParams = this.mergeRequestParams(params, secureParams);
31
+ const responseFormat = format || this.format || undefined;
32
+ if (type === ContentType.FormData && body && body !== null && typeof body === "object") {
33
+ body = this.createFormData(body);
34
+ }
35
+ if (type === ContentType.Text && body && body !== null && typeof body !== "string") {
36
+ body = JSON.stringify(body);
37
+ }
38
+ return this.instance.request({
39
+ ...requestParams,
40
+ headers: {
41
+ ...(requestParams.headers || {}),
42
+ ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}),
43
+ },
44
+ params: query,
45
+ responseType: responseFormat,
46
+ data: body,
47
+ url: path,
48
+ });
49
+ };
50
+ this.instance = axios.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || "http://u2" });
51
+ this.secure = secure;
52
+ this.format = format;
53
+ this.securityWorker = securityWorker;
54
+ }
55
+ mergeRequestParams(params1, params2) {
56
+ const method = params1.method || (params2 && params2.method);
57
+ return {
58
+ ...this.instance.defaults,
59
+ ...params1,
60
+ ...(params2 || {}),
61
+ headers: {
62
+ ...((method && this.instance.defaults.headers[method.toLowerCase()]) || {}),
63
+ ...(params1.headers || {}),
64
+ ...((params2 && params2.headers) || {}),
65
+ },
66
+ };
67
+ }
68
+ stringifyFormItem(formItem) {
69
+ if (typeof formItem === "object" && formItem !== null) {
70
+ return JSON.stringify(formItem);
71
+ }
72
+ else {
73
+ return `${formItem}`;
74
+ }
75
+ }
76
+ createFormData(input) {
77
+ return Object.keys(input || {}).reduce((formData, key) => {
78
+ const property = input[key];
79
+ const propertyContent = property instanceof Array ? property : [property];
80
+ for (const formItem of propertyContent) {
81
+ const isFileType = formItem instanceof Blob || formItem instanceof File;
82
+ formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));
83
+ }
84
+ return formData;
85
+ }, new FormData());
86
+ }
87
+ }
88
+ /**
89
+ * @title Ultimate-II REST API
90
+ * @version 3.15 alpha
91
+ * @baseUrl http://u2
92
+ *
93
+ * Source-derived OpenAPI description for the HTTP API implemented in
94
+ * `/software/api` of the 1541ultimate firmware tree and linked into the
95
+ * `target/u2/riscv/ultimate` firmware target.
96
+ *
97
+ * The U2 target links the shared `routes`, `files`, `drives`, `runners`,
98
+ * `configs`, and `machine` route modules. It does not link `route_streams`;
99
+ * keyboard/joystick injection, debug registers, and power-off are also omitted
100
+ * because the firmware source gates or rejects those operations on non-U64
101
+ * targets.
102
+ *
103
+ * JSON responses include an `errors` array. Binary endpoints return
104
+ * `application/octet-stream` on success and JSON with `errors` when the request
105
+ * cannot be completed.
106
+ *
107
+ * If a network password is configured on the device, every API request must
108
+ * include the `X-Password` header. If no network password is configured, the
109
+ * same endpoints are available without the header.
110
+ */
111
+ export class Api {
112
+ constructor(http) {
113
+ this.v1 = {
114
+ /**
115
+ * No description
116
+ *
117
+ * @tags System
118
+ * @name GetHelp
119
+ * @summary Return minimal HTML help for a command.
120
+ * @request GET:/v1/help
121
+ * @secure
122
+ */
123
+ getHelp: (query, params = {}) => this.http.request({
124
+ path: `/v1/help`,
125
+ method: "GET",
126
+ query: query,
127
+ secure: true,
128
+ ...params,
129
+ }),
130
+ /**
131
+ * No description
132
+ *
133
+ * @tags System
134
+ * @name GetApiVersion
135
+ * @summary Get REST API version.
136
+ * @request GET:/v1/version
137
+ * @secure
138
+ */
139
+ getApiVersion: (params = {}) => this.http.request({
140
+ path: `/v1/version`,
141
+ method: "GET",
142
+ secure: true,
143
+ format: "json",
144
+ ...params,
145
+ }),
146
+ /**
147
+ * No description
148
+ *
149
+ * @tags System
150
+ * @name GetDeviceInfo
151
+ * @summary Get device identity and firmware versions.
152
+ * @request GET:/v1/info
153
+ * @secure
154
+ */
155
+ getDeviceInfo: (params = {}) => this.http.request({
156
+ path: `/v1/info`,
157
+ method: "GET",
158
+ secure: true,
159
+ format: "json",
160
+ ...params,
161
+ }),
162
+ /**
163
+ * No description
164
+ *
165
+ * @tags Runners
166
+ * @name PlaySidFromFile
167
+ * @summary Play a SID file already present on the device filesystem.
168
+ * @request PUT:/v1/runners:sidplay
169
+ * @secure
170
+ */
171
+ playSidFromFile: (sidplay, query, params = {}) => this.http.request({
172
+ path: `/v1/runners${sidplay}`,
173
+ method: "PUT",
174
+ query: query,
175
+ secure: true,
176
+ ...params,
177
+ }),
178
+ /**
179
+ * No description
180
+ *
181
+ * @tags Runners
182
+ * @name PlayUploadedSid
183
+ * @summary Upload and play a SID file.
184
+ * @request POST:/v1/runners:sidplay
185
+ * @secure
186
+ */
187
+ playUploadedSid: (sidplay, data, query, params = {}) => this.http.request({
188
+ path: `/v1/runners${sidplay}`,
189
+ method: "POST",
190
+ query: query,
191
+ body: data,
192
+ secure: true,
193
+ ...params,
194
+ }),
195
+ /**
196
+ * @description Requires the FPGA sampler capability.
197
+ *
198
+ * @tags Runners
199
+ * @name PlayModFromFile
200
+ * @summary Play a MOD file from the device filesystem.
201
+ * @request PUT:/v1/runners:modplay
202
+ * @secure
203
+ */
204
+ playModFromFile: (modplay, query, params = {}) => this.http.request({
205
+ path: `/v1/runners${modplay}`,
206
+ method: "PUT",
207
+ query: query,
208
+ secure: true,
209
+ ...params,
210
+ }),
211
+ /**
212
+ * @description Requires the FPGA sampler capability.
213
+ *
214
+ * @tags Runners
215
+ * @name PlayUploadedMod
216
+ * @summary Upload and play a MOD file.
217
+ * @request POST:/v1/runners:modplay
218
+ * @secure
219
+ */
220
+ playUploadedMod: (modplay, data, params = {}) => this.http.request({
221
+ path: `/v1/runners${modplay}`,
222
+ method: "POST",
223
+ body: data,
224
+ secure: true,
225
+ type: ContentType.FormData,
226
+ ...params,
227
+ }),
228
+ /**
229
+ * No description
230
+ *
231
+ * @tags Runners
232
+ * @name LoadPrgFromFile
233
+ * @summary Load a PRG from the device filesystem without starting it.
234
+ * @request PUT:/v1/runners:load_prg
235
+ * @secure
236
+ */
237
+ loadPrgFromFile: (loadPrg, query, params = {}) => this.http.request({
238
+ path: `/v1/runners${loadPrg}`,
239
+ method: "PUT",
240
+ query: query,
241
+ secure: true,
242
+ ...params,
243
+ }),
244
+ /**
245
+ * No description
246
+ *
247
+ * @tags Runners
248
+ * @name LoadUploadedPrg
249
+ * @summary Upload a PRG and load it without starting it.
250
+ * @request POST:/v1/runners:load_prg
251
+ * @secure
252
+ */
253
+ loadUploadedPrg: (loadPrg, data, params = {}) => this.http.request({
254
+ path: `/v1/runners${loadPrg}`,
255
+ method: "POST",
256
+ body: data,
257
+ secure: true,
258
+ type: ContentType.FormData,
259
+ ...params,
260
+ }),
261
+ /**
262
+ * No description
263
+ *
264
+ * @tags Runners
265
+ * @name RunPrgFromFile
266
+ * @summary Load and run a PRG from the device filesystem.
267
+ * @request PUT:/v1/runners:run_prg
268
+ * @secure
269
+ */
270
+ runPrgFromFile: (runPrg, query, params = {}) => this.http.request({
271
+ path: `/v1/runners${runPrg}`,
272
+ method: "PUT",
273
+ query: query,
274
+ secure: true,
275
+ ...params,
276
+ }),
277
+ /**
278
+ * No description
279
+ *
280
+ * @tags Runners
281
+ * @name RunUploadedPrg
282
+ * @summary Upload, load, and run a PRG.
283
+ * @request POST:/v1/runners:run_prg
284
+ * @secure
285
+ */
286
+ runUploadedPrg: (runPrg, data, params = {}) => this.http.request({
287
+ path: `/v1/runners${runPrg}`,
288
+ method: "POST",
289
+ body: data,
290
+ secure: true,
291
+ type: ContentType.FormData,
292
+ ...params,
293
+ }),
294
+ /**
295
+ * No description
296
+ *
297
+ * @tags Runners
298
+ * @name RunCrtFromFile
299
+ * @summary Load and start a CRT cartridge image from the device filesystem.
300
+ * @request PUT:/v1/runners:run_crt
301
+ * @secure
302
+ */
303
+ runCrtFromFile: (runCrt, query, params = {}) => this.http.request({
304
+ path: `/v1/runners${runCrt}`,
305
+ method: "PUT",
306
+ query: query,
307
+ secure: true,
308
+ ...params,
309
+ }),
310
+ /**
311
+ * No description
312
+ *
313
+ * @tags Runners
314
+ * @name RunUploadedCrt
315
+ * @summary Upload, load, and start a CRT cartridge image.
316
+ * @request POST:/v1/runners:run_crt
317
+ * @secure
318
+ */
319
+ runUploadedCrt: (runCrt, data, params = {}) => this.http.request({
320
+ path: `/v1/runners${runCrt}`,
321
+ method: "POST",
322
+ body: data,
323
+ secure: true,
324
+ type: ContentType.FormData,
325
+ ...params,
326
+ }),
327
+ /**
328
+ * No description
329
+ *
330
+ * @tags Configuration
331
+ * @name ListConfigCategories
332
+ * @summary List configuration categories.
333
+ * @request GET:/v1/configs
334
+ * @secure
335
+ */
336
+ listConfigCategories: (params = {}) => this.http.request({
337
+ path: `/v1/configs`,
338
+ method: "GET",
339
+ secure: true,
340
+ format: "json",
341
+ ...params,
342
+ }),
343
+ /**
344
+ * @description Use single-item `PUT` for interactive writes; batch POST buffers the body on-device.
345
+ *
346
+ * @tags Configuration
347
+ * @name BatchUpdateConfig
348
+ * @summary Apply a JSON batch of configuration values.
349
+ * @request POST:/v1/configs
350
+ * @secure
351
+ */
352
+ batchUpdateConfig: (data, params = {}) => this.http.request({
353
+ path: `/v1/configs`,
354
+ method: "POST",
355
+ body: data,
356
+ secure: true,
357
+ type: ContentType.Json,
358
+ ...params,
359
+ }),
360
+ /**
361
+ * No description
362
+ *
363
+ * @tags Configuration
364
+ * @name GetConfigCategory
365
+ * @summary Get matching configuration categories and their current values.
366
+ * @request GET:/v1/configs/{category}
367
+ * @secure
368
+ */
369
+ getConfigCategory: (category, params = {}) => this.http.request({
370
+ path: `/v1/configs/${category}`,
371
+ method: "GET",
372
+ secure: true,
373
+ format: "json",
374
+ ...params,
375
+ }),
376
+ /**
377
+ * No description
378
+ *
379
+ * @tags Configuration
380
+ * @name GetConfigItem
381
+ * @summary Get detailed metadata for matching configuration items.
382
+ * @request GET:/v1/configs/{category}/{item}
383
+ * @secure
384
+ */
385
+ getConfigItem: (category, item, params = {}) => this.http.request({
386
+ path: `/v1/configs/${category}/${item}`,
387
+ method: "GET",
388
+ secure: true,
389
+ format: "json",
390
+ ...params,
391
+ }),
392
+ /**
393
+ * No description
394
+ *
395
+ * @tags Configuration
396
+ * @name UpdateConfigItem
397
+ * @summary Update one configuration item using the `value` query parameter.
398
+ * @request PUT:/v1/configs/{category}/{item}
399
+ * @secure
400
+ */
401
+ updateConfigItem: (category, item, query, params = {}) => this.http.request({
402
+ path: `/v1/configs/${category}/${item}`,
403
+ method: "PUT",
404
+ query: query,
405
+ secure: true,
406
+ ...params,
407
+ }),
408
+ /**
409
+ * No description
410
+ *
411
+ * @tags Configuration
412
+ * @name UpdateConfigItemByPath
413
+ * @summary Update one configuration item using the third path segment as the value.
414
+ * @request PUT:/v1/configs/{category}/{item}/{setting}
415
+ * @secure
416
+ */
417
+ updateConfigItemByPath: (category, item, setting, params = {}) => this.http.request({
418
+ path: `/v1/configs/${category}/${item}/${setting}`,
419
+ method: "PUT",
420
+ secure: true,
421
+ ...params,
422
+ }),
423
+ /**
424
+ * No description
425
+ *
426
+ * @tags Configuration
427
+ * @name LoadAllConfigsFromFlash
428
+ * @summary Reload all configuration stores from flash.
429
+ * @request PUT:/v1/configs:load_from_flash
430
+ * @secure
431
+ */
432
+ loadAllConfigsFromFlash: (loadFromFlash, params = {}) => this.http.request({
433
+ path: `/v1/configs${loadFromFlash}`,
434
+ method: "PUT",
435
+ secure: true,
436
+ ...params,
437
+ }),
438
+ /**
439
+ * No description
440
+ *
441
+ * @tags Configuration
442
+ * @name LoadConfigCategoryFromFlash
443
+ * @summary Reload matching configuration stores from flash.
444
+ * @request PUT:/v1/configs/{category}:load_from_flash
445
+ * @secure
446
+ */
447
+ loadConfigCategoryFromFlash: (category, loadFromFlash, params = {}) => this.http.request({
448
+ path: `/v1/configs/${category}${loadFromFlash}`,
449
+ method: "PUT",
450
+ secure: true,
451
+ format: "json",
452
+ ...params,
453
+ }),
454
+ /**
455
+ * No description
456
+ *
457
+ * @tags Configuration
458
+ * @name SaveAllConfigsToFlash
459
+ * @summary Save stale configuration stores to flash.
460
+ * @request PUT:/v1/configs:save_to_flash
461
+ * @secure
462
+ */
463
+ saveAllConfigsToFlash: (saveToFlash, params = {}) => this.http.request({
464
+ path: `/v1/configs${saveToFlash}`,
465
+ method: "PUT",
466
+ secure: true,
467
+ format: "json",
468
+ ...params,
469
+ }),
470
+ /**
471
+ * No description
472
+ *
473
+ * @tags Configuration
474
+ * @name SaveConfigCategoryToFlash
475
+ * @summary Save matching stale configuration stores to flash.
476
+ * @request PUT:/v1/configs/{category}:save_to_flash
477
+ * @secure
478
+ */
479
+ saveConfigCategoryToFlash: (category, saveToFlash, params = {}) => this.http.request({
480
+ path: `/v1/configs/${category}${saveToFlash}`,
481
+ method: "PUT",
482
+ secure: true,
483
+ format: "json",
484
+ ...params,
485
+ }),
486
+ /**
487
+ * No description
488
+ *
489
+ * @tags Configuration
490
+ * @name ResetAllConfigsToDefault
491
+ * @summary Reset all configuration stores to firmware defaults.
492
+ * @request PUT:/v1/configs:reset_to_default
493
+ * @secure
494
+ */
495
+ resetAllConfigsToDefault: (resetToDefault, params = {}) => this.http.request({
496
+ path: `/v1/configs${resetToDefault}`,
497
+ method: "PUT",
498
+ secure: true,
499
+ ...params,
500
+ }),
501
+ /**
502
+ * No description
503
+ *
504
+ * @tags Configuration
505
+ * @name ResetConfigCategoryToDefault
506
+ * @summary Reset matching configuration stores to firmware defaults.
507
+ * @request PUT:/v1/configs/{category}:reset_to_default
508
+ * @secure
509
+ */
510
+ resetConfigCategoryToDefault: (category, resetToDefault, params = {}) => this.http.request({
511
+ path: `/v1/configs/${category}${resetToDefault}`,
512
+ method: "PUT",
513
+ secure: true,
514
+ format: "json",
515
+ ...params,
516
+ }),
517
+ /**
518
+ * No description
519
+ *
520
+ * @tags Machine
521
+ * @name ResetMachine
522
+ * @summary Reset the C64.
523
+ * @request PUT:/v1/machine:reset
524
+ * @secure
525
+ */
526
+ resetMachine: (reset, params = {}) => this.http.request({
527
+ path: `/v1/machine${reset}`,
528
+ method: "PUT",
529
+ secure: true,
530
+ ...params,
531
+ }),
532
+ /**
533
+ * No description
534
+ *
535
+ * @tags Machine
536
+ * @name RebootMachine
537
+ * @summary Reboot the C64.
538
+ * @request PUT:/v1/machine:reboot
539
+ * @secure
540
+ */
541
+ rebootMachine: (reboot, params = {}) => this.http.request({
542
+ path: `/v1/machine${reboot}`,
543
+ method: "PUT",
544
+ secure: true,
545
+ ...params,
546
+ }),
547
+ /**
548
+ * No description
549
+ *
550
+ * @tags Machine
551
+ * @name PauseMachine
552
+ * @summary Pause the machine using DMA.
553
+ * @request PUT:/v1/machine:pause
554
+ * @secure
555
+ */
556
+ pauseMachine: (pause, params = {}) => this.http.request({
557
+ path: `/v1/machine${pause}`,
558
+ method: "PUT",
559
+ secure: true,
560
+ ...params,
561
+ }),
562
+ /**
563
+ * No description
564
+ *
565
+ * @tags Machine
566
+ * @name ResumeMachine
567
+ * @summary Resume a paused machine.
568
+ * @request PUT:/v1/machine:resume
569
+ * @secure
570
+ */
571
+ resumeMachine: (resume, params = {}) => this.http.request({
572
+ path: `/v1/machine${resume}`,
573
+ method: "PUT",
574
+ secure: true,
575
+ ...params,
576
+ }),
577
+ /**
578
+ * No description
579
+ *
580
+ * @tags Machine
581
+ * @name PressMenuButton
582
+ * @summary Press the Ultimate menu button.
583
+ * @request PUT:/v1/machine:menu_button
584
+ * @secure
585
+ */
586
+ pressMenuButton: (menuButton, params = {}) => this.http.request({
587
+ path: `/v1/machine${menuButton}`,
588
+ method: "PUT",
589
+ secure: true,
590
+ ...params,
591
+ }),
592
+ /**
593
+ * No description
594
+ *
595
+ * @tags Machine
596
+ * @name WriteMemoryHex
597
+ * @summary Write up to 128 bytes of C64 memory from a hex string.
598
+ * @request PUT:/v1/machine:writemem
599
+ * @secure
600
+ */
601
+ writeMemoryHex: (writemem, query, params = {}) => this.http.request({
602
+ path: `/v1/machine${writemem}`,
603
+ method: "PUT",
604
+ query: query,
605
+ secure: true,
606
+ ...params,
607
+ }),
608
+ /**
609
+ * No description
610
+ *
611
+ * @tags Machine
612
+ * @name WriteMemoryUpload
613
+ * @summary Write C64 memory from an uploaded binary payload.
614
+ * @request POST:/v1/machine:writemem
615
+ * @secure
616
+ */
617
+ writeMemoryUpload: (writemem, query, data, params = {}) => this.http.request({
618
+ path: `/v1/machine${writemem}`,
619
+ method: "POST",
620
+ query: query,
621
+ body: data,
622
+ secure: true,
623
+ type: ContentType.FormData,
624
+ ...params,
625
+ }),
626
+ /**
627
+ * No description
628
+ *
629
+ * @tags Machine
630
+ * @name ReadMemory
631
+ * @summary Read C64 memory as raw bytes.
632
+ * @request GET:/v1/machine:readmem
633
+ * @secure
634
+ */
635
+ readMemory: (readmem, query, params = {}) => this.http.request({
636
+ path: `/v1/machine${readmem}`,
637
+ method: "GET",
638
+ query: query,
639
+ secure: true,
640
+ ...params,
641
+ }),
642
+ /**
643
+ * @description Returns 404 JSON when no active menu screen matrix is available.
644
+ *
645
+ * @tags Machine
646
+ * @name ReadMenuScreen
647
+ * @summary Read the active Ultimate menu screen matrix as raw bytes.
648
+ * @request GET:/v1/machine:menu_screen
649
+ * @secure
650
+ */
651
+ readMenuScreen: (menuScreen, params = {}) => this.http.request({
652
+ path: `/v1/machine${menuScreen}`,
653
+ method: "GET",
654
+ secure: true,
655
+ ...params,
656
+ }),
657
+ /**
658
+ * No description
659
+ *
660
+ * @tags Machine
661
+ * @name MeasureCartridgeBus
662
+ * @summary Capture cartridge-bus timing as a VCD file.
663
+ * @request GET:/v1/machine:measure
664
+ * @secure
665
+ */
666
+ measureCartridgeBus: (measure, params = {}) => this.http.request({
667
+ path: `/v1/machine${measure}`,
668
+ method: "GET",
669
+ secure: true,
670
+ ...params,
671
+ }),
672
+ /**
673
+ * No description
674
+ *
675
+ * @tags Drives
676
+ * @name ListDrives
677
+ * @summary List internal drives and IEC service devices.
678
+ * @request GET:/v1/drives
679
+ * @secure
680
+ */
681
+ listDrives: (params = {}) => this.http.request({
682
+ path: `/v1/drives`,
683
+ method: "GET",
684
+ secure: true,
685
+ format: "json",
686
+ ...params,
687
+ }),
688
+ /**
689
+ * No description
690
+ *
691
+ * @tags Drives
692
+ * @name MountDiskImage
693
+ * @summary Mount a disk image from the device filesystem.
694
+ * @request PUT:/v1/drives/{drive}:mount
695
+ * @secure
696
+ */
697
+ mountDiskImage: (drive, mount, query, params = {}) => this.http.request({
698
+ path: `/v1/drives/${drive}${mount}`,
699
+ method: "PUT",
700
+ query: query,
701
+ secure: true,
702
+ ...params,
703
+ }),
704
+ /**
705
+ * No description
706
+ *
707
+ * @tags Drives
708
+ * @name MountUploadedDiskImage
709
+ * @summary Upload and mount a disk image.
710
+ * @request POST:/v1/drives/{drive}:mount
711
+ * @secure
712
+ */
713
+ mountUploadedDiskImage: (drive, mount, data, query, params = {}) => this.http.request({
714
+ path: `/v1/drives/${drive}${mount}`,
715
+ method: "POST",
716
+ query: query,
717
+ body: data,
718
+ secure: true,
719
+ type: ContentType.FormData,
720
+ ...params,
721
+ }),
722
+ /**
723
+ * No description
724
+ *
725
+ * @tags Drives
726
+ * @name ResetDrive
727
+ * @summary Reset a drive.
728
+ * @request PUT:/v1/drives/{drive}:reset
729
+ * @secure
730
+ */
731
+ resetDrive: (drive, reset, params = {}) => this.http.request({
732
+ path: `/v1/drives/${drive}${reset}`,
733
+ method: "PUT",
734
+ secure: true,
735
+ ...params,
736
+ }),
737
+ /**
738
+ * No description
739
+ *
740
+ * @tags Drives
741
+ * @name RemoveMountedImage
742
+ * @summary Remove the mounted image from a drive.
743
+ * @request PUT:/v1/drives/{drive}:remove
744
+ * @secure
745
+ */
746
+ removeMountedImage: (drive, remove, params = {}) => this.http.request({
747
+ path: `/v1/drives/${drive}${remove}`,
748
+ method: "PUT",
749
+ secure: true,
750
+ ...params,
751
+ }),
752
+ /**
753
+ * No description
754
+ *
755
+ * @tags Drives
756
+ * @name PowerOnDrive
757
+ * @summary Power on a drive.
758
+ * @request PUT:/v1/drives/{drive}:on
759
+ * @secure
760
+ */
761
+ powerOnDrive: (drive, on, params = {}) => this.http.request({
762
+ path: `/v1/drives/${drive}${on}`,
763
+ method: "PUT",
764
+ secure: true,
765
+ ...params,
766
+ }),
767
+ /**
768
+ * No description
769
+ *
770
+ * @tags Drives
771
+ * @name PowerOffDrive
772
+ * @summary Power off a drive.
773
+ * @request PUT:/v1/drives/{drive}:off
774
+ * @secure
775
+ */
776
+ powerOffDrive: (drive, off, params = {}) => this.http.request({
777
+ path: `/v1/drives/${drive}${off}`,
778
+ method: "PUT",
779
+ secure: true,
780
+ ...params,
781
+ }),
782
+ /**
783
+ * No description
784
+ *
785
+ * @tags Drives
786
+ * @name UnlinkMountedImage
787
+ * @summary Unlink the mounted image from host storage.
788
+ * @request PUT:/v1/drives/{drive}:unlink
789
+ * @secure
790
+ */
791
+ unlinkMountedImage: (drive, unlink, params = {}) => this.http.request({
792
+ path: `/v1/drives/${drive}${unlink}`,
793
+ method: "PUT",
794
+ secure: true,
795
+ ...params,
796
+ }),
797
+ /**
798
+ * No description
799
+ *
800
+ * @tags Drives
801
+ * @name LoadDriveRomFromFile
802
+ * @summary Load a drive ROM from the device filesystem.
803
+ * @request PUT:/v1/drives/{drive}:load_rom
804
+ * @secure
805
+ */
806
+ loadDriveRomFromFile: (drive, loadRom, query, params = {}) => this.http.request({
807
+ path: `/v1/drives/${drive}${loadRom}`,
808
+ method: "PUT",
809
+ query: query,
810
+ secure: true,
811
+ ...params,
812
+ }),
813
+ /**
814
+ * No description
815
+ *
816
+ * @tags Drives
817
+ * @name LoadUploadedDriveRom
818
+ * @summary Upload and load a drive ROM.
819
+ * @request POST:/v1/drives/{drive}:load_rom
820
+ * @secure
821
+ */
822
+ loadUploadedDriveRom: (drive, loadRom, data, params = {}) => this.http.request({
823
+ path: `/v1/drives/${drive}${loadRom}`,
824
+ method: "POST",
825
+ body: data,
826
+ secure: true,
827
+ type: ContentType.FormData,
828
+ ...params,
829
+ }),
830
+ /**
831
+ * No description
832
+ *
833
+ * @tags Drives
834
+ * @name SetDriveMode
835
+ * @summary Set drive emulation mode.
836
+ * @request PUT:/v1/drives/{drive}:set_mode
837
+ * @secure
838
+ */
839
+ setDriveMode: (drive, setMode, query, params = {}) => this.http.request({
840
+ path: `/v1/drives/${drive}${setMode}`,
841
+ method: "PUT",
842
+ query: query,
843
+ secure: true,
844
+ ...params,
845
+ }),
846
+ /**
847
+ * No description
848
+ *
849
+ * @tags Files
850
+ * @name GetFileInfo
851
+ * @summary Get metadata for a device filesystem path.
852
+ * @request GET:/v1/files/{path}:info
853
+ * @secure
854
+ */
855
+ getFileInfo: (path, info, params = {}) => this.http.request({
856
+ path: `/v1/files/${path}${info}`,
857
+ method: "GET",
858
+ secure: true,
859
+ format: "json",
860
+ ...params,
861
+ }),
862
+ /**
863
+ * No description
864
+ *
865
+ * @tags Files
866
+ * @name CreateD64
867
+ * @summary Create and format a D64 image.
868
+ * @request PUT:/v1/files/{path}:create_d64
869
+ * @secure
870
+ */
871
+ createD64: (path, createD64, query, params = {}) => this.http.request({
872
+ path: `/v1/files/${path}${createD64}`,
873
+ method: "PUT",
874
+ query: query,
875
+ secure: true,
876
+ ...params,
877
+ }),
878
+ /**
879
+ * No description
880
+ *
881
+ * @tags Files
882
+ * @name CreateD71
883
+ * @summary Create and format a D71 image.
884
+ * @request PUT:/v1/files/{path}:create_d71
885
+ * @secure
886
+ */
887
+ createD71: (path, createD71, query, params = {}) => this.http.request({
888
+ path: `/v1/files/${path}${createD71}`,
889
+ method: "PUT",
890
+ query: query,
891
+ secure: true,
892
+ ...params,
893
+ }),
894
+ /**
895
+ * No description
896
+ *
897
+ * @tags Files
898
+ * @name CreateD81
899
+ * @summary Create and format a D81 image.
900
+ * @request PUT:/v1/files/{path}:create_d81
901
+ * @secure
902
+ */
903
+ createD81: (path, createD81, query, params = {}) => this.http.request({
904
+ path: `/v1/files/${path}${createD81}`,
905
+ method: "PUT",
906
+ query: query,
907
+ secure: true,
908
+ ...params,
909
+ }),
910
+ /**
911
+ * No description
912
+ *
913
+ * @tags Files
914
+ * @name CreateDnp
915
+ * @summary Create and format a DNP image.
916
+ * @request PUT:/v1/files/{path}:create_dnp
917
+ * @secure
918
+ */
919
+ createDnp: (path, createDnp, query, params = {}) => this.http.request({
920
+ path: `/v1/files/${path}${createDnp}`,
921
+ method: "PUT",
922
+ query: query,
923
+ secure: true,
924
+ ...params,
925
+ }),
926
+ };
927
+ this.http = http;
928
+ }
929
+ }