c64bridge 0.9.2 → 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 (58) hide show
  1. package/AGENTS.md +24 -3
  2. package/README.md +271 -161
  3. package/data/basic/rom-routines.md +269 -0
  4. package/data/context/bootstrap.md +1 -1
  5. package/data/io/cia-spec.md +2 -2
  6. package/data/{memory/kernal-memory-map.md → kernal/rom-routines.md} +3 -2
  7. package/data/memory/low-memory-map.md +1 -0
  8. package/data/memory/memory-map.md +13 -0
  9. package/dist/.tsbuildinfo +1 -1
  10. package/dist/c64Client.js +127 -12
  11. package/dist/config.js +34 -8
  12. package/dist/device.js +75 -45
  13. package/dist/mcp-server.js +28 -8
  14. package/dist/platform.js +13 -2
  15. package/dist/rag/knowledgeIndex.js +54 -9
  16. package/dist/rag/resourceUris.js +2 -0
  17. package/dist/tools/audio.js +1 -1
  18. package/dist/tools/developer.js +6 -6
  19. package/dist/tools/graphics.js +4 -4
  20. package/dist/tools/input.js +129 -12
  21. package/dist/tools/machineControl.js +85 -6
  22. package/dist/tools/memory.js +1 -1
  23. package/dist/tools/meta/index.js +1 -1
  24. package/dist/tools/programRunners.js +5 -5
  25. package/dist/tools/rag.js +1 -1
  26. package/dist/tools/registry/batch.js +1 -1
  27. package/dist/tools/registry/config.js +5 -5
  28. package/dist/tools/registry/disk.js +2 -2
  29. package/dist/tools/registry/drive.js +2 -2
  30. package/dist/tools/registry/graphics.js +2 -2
  31. package/dist/tools/registry/memory.js +2 -2
  32. package/dist/tools/registry/platform.js +7 -5
  33. package/dist/tools/registry/program.js +5 -5
  34. package/dist/tools/registry/rag.js +1 -1
  35. package/dist/tools/registry/sound.js +4 -4
  36. package/dist/tools/registry/system.js +13 -3
  37. package/dist/tools/storage.js +1 -1
  38. package/doc/c64u/c64-openapi.yaml +1130 -774
  39. package/doc/developer.md +3 -2
  40. package/doc/u2/u2-openapi.yaml +1192 -0
  41. package/generated/c64/index.js +142 -9
  42. package/generated/openapi/c64u/index.js +1117 -0
  43. package/generated/openapi/u2/index.js +929 -0
  44. package/mcp/resources.json +60 -7
  45. package/mcp/schemas/c64_graphics.schema.json +3 -3
  46. package/mcp/schemas/c64_input.schema.json +247 -6
  47. package/mcp/schemas/c64_memory.schema.json +3 -3
  48. package/mcp/schemas/c64_program.schema.json +3 -3
  49. package/mcp/schemas/c64_select_backend.schema.json +2 -0
  50. package/mcp/schemas/c64_system.schema.json +41 -1
  51. package/mcp/server.json +1 -1
  52. package/mcp/tools.json +382 -41
  53. package/mcp.json +21 -5
  54. package/package.json +14 -8
  55. package/scripts/mockC64Server.mjs +40 -0
  56. package/scripts/prepare-release.mjs +13 -2
  57. package/scripts/update-readme.ts +19 -30
  58. package/server.json +2 -2
@@ -0,0 +1,1117 @@
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
+ export var InputTransition;
12
+ (function (InputTransition) {
13
+ InputTransition["Press"] = "press";
14
+ InputTransition["Release"] = "release";
15
+ InputTransition["Tap"] = "tap";
16
+ })(InputTransition || (InputTransition = {}));
17
+ export var KeyboardInput;
18
+ (function (KeyboardInput) {
19
+ KeyboardInput["InstDel"] = "inst_del";
20
+ KeyboardInput["Return"] = "return";
21
+ KeyboardInput["CursorLeftRight"] = "cursor_left_right";
22
+ KeyboardInput["F7"] = "f7";
23
+ KeyboardInput["F1"] = "f1";
24
+ KeyboardInput["F3"] = "f3";
25
+ KeyboardInput["F5"] = "f5";
26
+ KeyboardInput["CursorUpDown"] = "cursor_up_down";
27
+ KeyboardInput["Value0"] = "0";
28
+ KeyboardInput["Value1"] = "1";
29
+ KeyboardInput["Value2"] = "2";
30
+ KeyboardInput["Value3"] = "3";
31
+ KeyboardInput["Value4"] = "4";
32
+ KeyboardInput["Value5"] = "5";
33
+ KeyboardInput["Value6"] = "6";
34
+ KeyboardInput["Value7"] = "7";
35
+ KeyboardInput["Value8"] = "8";
36
+ KeyboardInput["Value9"] = "9";
37
+ KeyboardInput["A"] = "a";
38
+ KeyboardInput["B"] = "b";
39
+ KeyboardInput["C"] = "c";
40
+ KeyboardInput["D"] = "d";
41
+ KeyboardInput["E"] = "e";
42
+ KeyboardInput["F"] = "f";
43
+ KeyboardInput["G"] = "g";
44
+ KeyboardInput["H"] = "h";
45
+ KeyboardInput["I"] = "i";
46
+ KeyboardInput["J"] = "j";
47
+ KeyboardInput["K"] = "k";
48
+ KeyboardInput["L"] = "l";
49
+ KeyboardInput["M"] = "m";
50
+ KeyboardInput["N"] = "n";
51
+ KeyboardInput["O"] = "o";
52
+ KeyboardInput["P"] = "p";
53
+ KeyboardInput["Q"] = "q";
54
+ KeyboardInput["R"] = "r";
55
+ KeyboardInput["S"] = "s";
56
+ KeyboardInput["T"] = "t";
57
+ KeyboardInput["U"] = "u";
58
+ KeyboardInput["V"] = "v";
59
+ KeyboardInput["W"] = "w";
60
+ KeyboardInput["X"] = "x";
61
+ KeyboardInput["Y"] = "y";
62
+ KeyboardInput["Z"] = "z";
63
+ KeyboardInput["LeftShift"] = "left_shift";
64
+ KeyboardInput["RightShift"] = "right_shift";
65
+ KeyboardInput["Plus"] = "plus";
66
+ KeyboardInput["Minus"] = "minus";
67
+ KeyboardInput["Period"] = "period";
68
+ KeyboardInput["Colon"] = "colon";
69
+ KeyboardInput["At"] = "at";
70
+ KeyboardInput["Comma"] = "comma";
71
+ KeyboardInput["Pound"] = "pound";
72
+ KeyboardInput["Star"] = "star";
73
+ KeyboardInput["Semicolon"] = "semicolon";
74
+ KeyboardInput["ClrHome"] = "clr_home";
75
+ KeyboardInput["Equals"] = "equals";
76
+ KeyboardInput["ArrowUp"] = "arrow_up";
77
+ KeyboardInput["Slash"] = "slash";
78
+ KeyboardInput["ArrowLeft"] = "arrow_left";
79
+ KeyboardInput["Ctrl"] = "ctrl";
80
+ KeyboardInput["Space"] = "space";
81
+ KeyboardInput["Commodore"] = "commodore";
82
+ KeyboardInput["RunStop"] = "run_stop";
83
+ KeyboardInput["Restore"] = "restore";
84
+ })(KeyboardInput || (KeyboardInput = {}));
85
+ export var JoystickInput;
86
+ (function (JoystickInput) {
87
+ JoystickInput["Up"] = "up";
88
+ JoystickInput["Down"] = "down";
89
+ JoystickInput["Left"] = "left";
90
+ JoystickInput["Right"] = "right";
91
+ JoystickInput["Fire"] = "fire";
92
+ JoystickInput["Fire2"] = "fire2";
93
+ JoystickInput["Fire3"] = "fire3";
94
+ })(JoystickInput || (JoystickInput = {}));
95
+ import axios from "axios";
96
+ export var ContentType;
97
+ (function (ContentType) {
98
+ ContentType["Json"] = "application/json";
99
+ ContentType["FormData"] = "multipart/form-data";
100
+ ContentType["UrlEncoded"] = "application/x-www-form-urlencoded";
101
+ ContentType["Text"] = "text/plain";
102
+ })(ContentType || (ContentType = {}));
103
+ export class HttpClient {
104
+ constructor({ securityWorker, secure, format, ...axiosConfig } = {}) {
105
+ this.securityData = null;
106
+ this.setSecurityData = (data) => {
107
+ this.securityData = data;
108
+ };
109
+ this.request = async ({ secure, path, type, query, format, body, ...params }) => {
110
+ const secureParams = ((typeof secure === "boolean" ? secure : this.secure) &&
111
+ this.securityWorker &&
112
+ (await this.securityWorker(this.securityData))) ||
113
+ {};
114
+ const requestParams = this.mergeRequestParams(params, secureParams);
115
+ const responseFormat = format || this.format || undefined;
116
+ if (type === ContentType.FormData && body && body !== null && typeof body === "object") {
117
+ body = this.createFormData(body);
118
+ }
119
+ if (type === ContentType.Text && body && body !== null && typeof body !== "string") {
120
+ body = JSON.stringify(body);
121
+ }
122
+ return this.instance.request({
123
+ ...requestParams,
124
+ headers: {
125
+ ...(requestParams.headers || {}),
126
+ ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}),
127
+ },
128
+ params: query,
129
+ responseType: responseFormat,
130
+ data: body,
131
+ url: path,
132
+ });
133
+ };
134
+ this.instance = axios.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || "http://u64" });
135
+ this.secure = secure;
136
+ this.format = format;
137
+ this.securityWorker = securityWorker;
138
+ }
139
+ mergeRequestParams(params1, params2) {
140
+ const method = params1.method || (params2 && params2.method);
141
+ return {
142
+ ...this.instance.defaults,
143
+ ...params1,
144
+ ...(params2 || {}),
145
+ headers: {
146
+ ...((method && this.instance.defaults.headers[method.toLowerCase()]) || {}),
147
+ ...(params1.headers || {}),
148
+ ...((params2 && params2.headers) || {}),
149
+ },
150
+ };
151
+ }
152
+ stringifyFormItem(formItem) {
153
+ if (typeof formItem === "object" && formItem !== null) {
154
+ return JSON.stringify(formItem);
155
+ }
156
+ else {
157
+ return `${formItem}`;
158
+ }
159
+ }
160
+ createFormData(input) {
161
+ return Object.keys(input || {}).reduce((formData, key) => {
162
+ const property = input[key];
163
+ const propertyContent = property instanceof Array ? property : [property];
164
+ for (const formItem of propertyContent) {
165
+ const isFileType = formItem instanceof Blob || formItem instanceof File;
166
+ formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));
167
+ }
168
+ return formData;
169
+ }, new FormData());
170
+ }
171
+ }
172
+ /**
173
+ * @title Ultimate 64 Elite REST API
174
+ * @version 3.15-alpha
175
+ * @baseUrl http://u64
176
+ *
177
+ * Source-derived OpenAPI description for the HTTP API implemented in
178
+ * `/software/api` of the 1541ultimate firmware tree.
179
+ *
180
+ * The firmware exposes a single `v1` API version. JSON responses include an
181
+ * `errors` array. Binary endpoints return `application/octet-stream` on
182
+ * success and JSON with `errors` when the request cannot be completed.
183
+ *
184
+ * If a network password is configured on the device, every API request must
185
+ * include the `X-Password` header. If no network password is configured, the
186
+ * same endpoints are available without the header.
187
+ */
188
+ export class Api {
189
+ constructor(http) {
190
+ this.v1 = {
191
+ /**
192
+ * No description
193
+ *
194
+ * @tags System
195
+ * @name GetHelp
196
+ * @summary Return minimal HTML help for a command.
197
+ * @request GET:/v1/help
198
+ * @secure
199
+ */
200
+ getHelp: (query, params = {}) => this.http.request({
201
+ path: `/v1/help`,
202
+ method: "GET",
203
+ query: query,
204
+ secure: true,
205
+ ...params,
206
+ }),
207
+ /**
208
+ * No description
209
+ *
210
+ * @tags System
211
+ * @name GetApiVersion
212
+ * @summary Get REST API version.
213
+ * @request GET:/v1/version
214
+ * @secure
215
+ */
216
+ getApiVersion: (params = {}) => this.http.request({
217
+ path: `/v1/version`,
218
+ method: "GET",
219
+ secure: true,
220
+ format: "json",
221
+ ...params,
222
+ }),
223
+ /**
224
+ * No description
225
+ *
226
+ * @tags System
227
+ * @name GetDeviceInfo
228
+ * @summary Get device identity and firmware versions.
229
+ * @request GET:/v1/info
230
+ * @secure
231
+ */
232
+ getDeviceInfo: (params = {}) => this.http.request({
233
+ path: `/v1/info`,
234
+ method: "GET",
235
+ secure: true,
236
+ format: "json",
237
+ ...params,
238
+ }),
239
+ /**
240
+ * No description
241
+ *
242
+ * @tags Runners
243
+ * @name PlaySidFromFile
244
+ * @summary Play a SID file already present on the device filesystem.
245
+ * @request PUT:/v1/runners:sidplay
246
+ * @secure
247
+ */
248
+ playSidFromFile: (sidplay, query, params = {}) => this.http.request({
249
+ path: `/v1/runners${sidplay}`,
250
+ method: "PUT",
251
+ query: query,
252
+ secure: true,
253
+ ...params,
254
+ }),
255
+ /**
256
+ * No description
257
+ *
258
+ * @tags Runners
259
+ * @name PlayUploadedSid
260
+ * @summary Upload and play a SID file.
261
+ * @request POST:/v1/runners:sidplay
262
+ * @secure
263
+ */
264
+ playUploadedSid: (sidplay, data, query, params = {}) => this.http.request({
265
+ path: `/v1/runners${sidplay}`,
266
+ method: "POST",
267
+ query: query,
268
+ body: data,
269
+ secure: true,
270
+ ...params,
271
+ }),
272
+ /**
273
+ * @description Requires the FPGA sampler capability.
274
+ *
275
+ * @tags Runners
276
+ * @name PlayModFromFile
277
+ * @summary Play a MOD file from the device filesystem.
278
+ * @request PUT:/v1/runners:modplay
279
+ * @secure
280
+ */
281
+ playModFromFile: (modplay, query, params = {}) => this.http.request({
282
+ path: `/v1/runners${modplay}`,
283
+ method: "PUT",
284
+ query: query,
285
+ secure: true,
286
+ ...params,
287
+ }),
288
+ /**
289
+ * @description Requires the FPGA sampler capability.
290
+ *
291
+ * @tags Runners
292
+ * @name PlayUploadedMod
293
+ * @summary Upload and play a MOD file.
294
+ * @request POST:/v1/runners:modplay
295
+ * @secure
296
+ */
297
+ playUploadedMod: (modplay, data, params = {}) => this.http.request({
298
+ path: `/v1/runners${modplay}`,
299
+ method: "POST",
300
+ body: data,
301
+ secure: true,
302
+ type: ContentType.FormData,
303
+ ...params,
304
+ }),
305
+ /**
306
+ * No description
307
+ *
308
+ * @tags Runners
309
+ * @name LoadPrgFromFile
310
+ * @summary Load a PRG from the device filesystem without starting it.
311
+ * @request PUT:/v1/runners:load_prg
312
+ * @secure
313
+ */
314
+ loadPrgFromFile: (loadPrg, query, params = {}) => this.http.request({
315
+ path: `/v1/runners${loadPrg}`,
316
+ method: "PUT",
317
+ query: query,
318
+ secure: true,
319
+ ...params,
320
+ }),
321
+ /**
322
+ * No description
323
+ *
324
+ * @tags Runners
325
+ * @name LoadUploadedPrg
326
+ * @summary Upload a PRG and load it without starting it.
327
+ * @request POST:/v1/runners:load_prg
328
+ * @secure
329
+ */
330
+ loadUploadedPrg: (loadPrg, data, params = {}) => this.http.request({
331
+ path: `/v1/runners${loadPrg}`,
332
+ method: "POST",
333
+ body: data,
334
+ secure: true,
335
+ type: ContentType.FormData,
336
+ ...params,
337
+ }),
338
+ /**
339
+ * No description
340
+ *
341
+ * @tags Runners
342
+ * @name RunPrgFromFile
343
+ * @summary Load and run a PRG from the device filesystem.
344
+ * @request PUT:/v1/runners:run_prg
345
+ * @secure
346
+ */
347
+ runPrgFromFile: (runPrg, query, params = {}) => this.http.request({
348
+ path: `/v1/runners${runPrg}`,
349
+ method: "PUT",
350
+ query: query,
351
+ secure: true,
352
+ ...params,
353
+ }),
354
+ /**
355
+ * No description
356
+ *
357
+ * @tags Runners
358
+ * @name RunUploadedPrg
359
+ * @summary Upload, load, and run a PRG.
360
+ * @request POST:/v1/runners:run_prg
361
+ * @secure
362
+ */
363
+ runUploadedPrg: (runPrg, data, params = {}) => this.http.request({
364
+ path: `/v1/runners${runPrg}`,
365
+ method: "POST",
366
+ body: data,
367
+ secure: true,
368
+ type: ContentType.FormData,
369
+ ...params,
370
+ }),
371
+ /**
372
+ * No description
373
+ *
374
+ * @tags Runners
375
+ * @name RunCrtFromFile
376
+ * @summary Load and start a CRT cartridge image from the device filesystem.
377
+ * @request PUT:/v1/runners:run_crt
378
+ * @secure
379
+ */
380
+ runCrtFromFile: (runCrt, query, params = {}) => this.http.request({
381
+ path: `/v1/runners${runCrt}`,
382
+ method: "PUT",
383
+ query: query,
384
+ secure: true,
385
+ ...params,
386
+ }),
387
+ /**
388
+ * No description
389
+ *
390
+ * @tags Runners
391
+ * @name RunUploadedCrt
392
+ * @summary Upload, load, and start a CRT cartridge image.
393
+ * @request POST:/v1/runners:run_crt
394
+ * @secure
395
+ */
396
+ runUploadedCrt: (runCrt, data, params = {}) => this.http.request({
397
+ path: `/v1/runners${runCrt}`,
398
+ method: "POST",
399
+ body: data,
400
+ secure: true,
401
+ type: ContentType.FormData,
402
+ ...params,
403
+ }),
404
+ /**
405
+ * No description
406
+ *
407
+ * @tags Configuration
408
+ * @name ListConfigCategories
409
+ * @summary List configuration categories.
410
+ * @request GET:/v1/configs
411
+ * @secure
412
+ */
413
+ listConfigCategories: (params = {}) => this.http.request({
414
+ path: `/v1/configs`,
415
+ method: "GET",
416
+ secure: true,
417
+ format: "json",
418
+ ...params,
419
+ }),
420
+ /**
421
+ * @description Use single-item `PUT` for interactive writes; batch POST buffers the body on-device.
422
+ *
423
+ * @tags Configuration
424
+ * @name BatchUpdateConfig
425
+ * @summary Apply a JSON batch of configuration values.
426
+ * @request POST:/v1/configs
427
+ * @secure
428
+ */
429
+ batchUpdateConfig: (data, params = {}) => this.http.request({
430
+ path: `/v1/configs`,
431
+ method: "POST",
432
+ body: data,
433
+ secure: true,
434
+ type: ContentType.Json,
435
+ ...params,
436
+ }),
437
+ /**
438
+ * No description
439
+ *
440
+ * @tags Configuration
441
+ * @name GetConfigCategory
442
+ * @summary Get matching configuration categories and their current values.
443
+ * @request GET:/v1/configs/{category}
444
+ * @secure
445
+ */
446
+ getConfigCategory: (category, params = {}) => this.http.request({
447
+ path: `/v1/configs/${category}`,
448
+ method: "GET",
449
+ secure: true,
450
+ format: "json",
451
+ ...params,
452
+ }),
453
+ /**
454
+ * No description
455
+ *
456
+ * @tags Configuration
457
+ * @name GetConfigItem
458
+ * @summary Get detailed metadata for matching configuration items.
459
+ * @request GET:/v1/configs/{category}/{item}
460
+ * @secure
461
+ */
462
+ getConfigItem: (category, item, params = {}) => this.http.request({
463
+ path: `/v1/configs/${category}/${item}`,
464
+ method: "GET",
465
+ secure: true,
466
+ format: "json",
467
+ ...params,
468
+ }),
469
+ /**
470
+ * No description
471
+ *
472
+ * @tags Configuration
473
+ * @name UpdateConfigItem
474
+ * @summary Update one configuration item using the `value` query parameter.
475
+ * @request PUT:/v1/configs/{category}/{item}
476
+ * @secure
477
+ */
478
+ updateConfigItem: (category, item, query, params = {}) => this.http.request({
479
+ path: `/v1/configs/${category}/${item}`,
480
+ method: "PUT",
481
+ query: query,
482
+ secure: true,
483
+ ...params,
484
+ }),
485
+ /**
486
+ * No description
487
+ *
488
+ * @tags Configuration
489
+ * @name UpdateConfigItemByPath
490
+ * @summary Update one configuration item using the third path segment as the value.
491
+ * @request PUT:/v1/configs/{category}/{item}/{setting}
492
+ * @secure
493
+ */
494
+ updateConfigItemByPath: (category, item, setting, params = {}) => this.http.request({
495
+ path: `/v1/configs/${category}/${item}/${setting}`,
496
+ method: "PUT",
497
+ secure: true,
498
+ ...params,
499
+ }),
500
+ /**
501
+ * No description
502
+ *
503
+ * @tags Configuration
504
+ * @name LoadAllConfigsFromFlash
505
+ * @summary Reload all configuration stores from flash.
506
+ * @request PUT:/v1/configs:load_from_flash
507
+ * @secure
508
+ */
509
+ loadAllConfigsFromFlash: (loadFromFlash, params = {}) => this.http.request({
510
+ path: `/v1/configs${loadFromFlash}`,
511
+ method: "PUT",
512
+ secure: true,
513
+ ...params,
514
+ }),
515
+ /**
516
+ * No description
517
+ *
518
+ * @tags Configuration
519
+ * @name LoadConfigCategoryFromFlash
520
+ * @summary Reload matching configuration stores from flash.
521
+ * @request PUT:/v1/configs/{category}:load_from_flash
522
+ * @secure
523
+ */
524
+ loadConfigCategoryFromFlash: (category, loadFromFlash, params = {}) => this.http.request({
525
+ path: `/v1/configs/${category}${loadFromFlash}`,
526
+ method: "PUT",
527
+ secure: true,
528
+ format: "json",
529
+ ...params,
530
+ }),
531
+ /**
532
+ * No description
533
+ *
534
+ * @tags Configuration
535
+ * @name SaveAllConfigsToFlash
536
+ * @summary Save stale configuration stores to flash.
537
+ * @request PUT:/v1/configs:save_to_flash
538
+ * @secure
539
+ */
540
+ saveAllConfigsToFlash: (saveToFlash, params = {}) => this.http.request({
541
+ path: `/v1/configs${saveToFlash}`,
542
+ method: "PUT",
543
+ secure: true,
544
+ format: "json",
545
+ ...params,
546
+ }),
547
+ /**
548
+ * No description
549
+ *
550
+ * @tags Configuration
551
+ * @name SaveConfigCategoryToFlash
552
+ * @summary Save matching stale configuration stores to flash.
553
+ * @request PUT:/v1/configs/{category}:save_to_flash
554
+ * @secure
555
+ */
556
+ saveConfigCategoryToFlash: (category, saveToFlash, params = {}) => this.http.request({
557
+ path: `/v1/configs/${category}${saveToFlash}`,
558
+ method: "PUT",
559
+ secure: true,
560
+ format: "json",
561
+ ...params,
562
+ }),
563
+ /**
564
+ * No description
565
+ *
566
+ * @tags Configuration
567
+ * @name ResetAllConfigsToDefault
568
+ * @summary Reset all configuration stores to firmware defaults.
569
+ * @request PUT:/v1/configs:reset_to_default
570
+ * @secure
571
+ */
572
+ resetAllConfigsToDefault: (resetToDefault, params = {}) => this.http.request({
573
+ path: `/v1/configs${resetToDefault}`,
574
+ method: "PUT",
575
+ secure: true,
576
+ ...params,
577
+ }),
578
+ /**
579
+ * No description
580
+ *
581
+ * @tags Configuration
582
+ * @name ResetConfigCategoryToDefault
583
+ * @summary Reset matching configuration stores to firmware defaults.
584
+ * @request PUT:/v1/configs/{category}:reset_to_default
585
+ * @secure
586
+ */
587
+ resetConfigCategoryToDefault: (category, resetToDefault, params = {}) => this.http.request({
588
+ path: `/v1/configs/${category}${resetToDefault}`,
589
+ method: "PUT",
590
+ secure: true,
591
+ format: "json",
592
+ ...params,
593
+ }),
594
+ /**
595
+ * No description
596
+ *
597
+ * @tags Machine
598
+ * @name ResetMachine
599
+ * @summary Reset the C64.
600
+ * @request PUT:/v1/machine:reset
601
+ * @secure
602
+ */
603
+ resetMachine: (reset, params = {}) => this.http.request({
604
+ path: `/v1/machine${reset}`,
605
+ method: "PUT",
606
+ secure: true,
607
+ ...params,
608
+ }),
609
+ /**
610
+ * No description
611
+ *
612
+ * @tags Machine
613
+ * @name RebootMachine
614
+ * @summary Reboot the C64.
615
+ * @request PUT:/v1/machine:reboot
616
+ * @secure
617
+ */
618
+ rebootMachine: (reboot, params = {}) => this.http.request({
619
+ path: `/v1/machine${reboot}`,
620
+ method: "PUT",
621
+ secure: true,
622
+ ...params,
623
+ }),
624
+ /**
625
+ * No description
626
+ *
627
+ * @tags Machine
628
+ * @name PauseMachine
629
+ * @summary Pause the machine using DMA.
630
+ * @request PUT:/v1/machine:pause
631
+ * @secure
632
+ */
633
+ pauseMachine: (pause, params = {}) => this.http.request({
634
+ path: `/v1/machine${pause}`,
635
+ method: "PUT",
636
+ secure: true,
637
+ ...params,
638
+ }),
639
+ /**
640
+ * No description
641
+ *
642
+ * @tags Machine
643
+ * @name ResumeMachine
644
+ * @summary Resume a paused machine.
645
+ * @request PUT:/v1/machine:resume
646
+ * @secure
647
+ */
648
+ resumeMachine: (resume, params = {}) => this.http.request({
649
+ path: `/v1/machine${resume}`,
650
+ method: "PUT",
651
+ secure: true,
652
+ ...params,
653
+ }),
654
+ /**
655
+ * No description
656
+ *
657
+ * @tags Machine
658
+ * @name PowerOffMachine
659
+ * @summary Request machine power off.
660
+ * @request PUT:/v1/machine:poweroff
661
+ * @secure
662
+ */
663
+ powerOffMachine: (poweroff, params = {}) => this.http.request({
664
+ path: `/v1/machine${poweroff}`,
665
+ method: "PUT",
666
+ secure: true,
667
+ ...params,
668
+ }),
669
+ /**
670
+ * No description
671
+ *
672
+ * @tags Machine
673
+ * @name PressMenuButton
674
+ * @summary Press the Ultimate menu button.
675
+ * @request PUT:/v1/machine:menu_button
676
+ * @secure
677
+ */
678
+ pressMenuButton: (menuButton, params = {}) => this.http.request({
679
+ path: `/v1/machine${menuButton}`,
680
+ method: "PUT",
681
+ secure: true,
682
+ ...params,
683
+ }),
684
+ /**
685
+ * No description
686
+ *
687
+ * @tags Machine
688
+ * @name WriteMemoryHex
689
+ * @summary Write up to 128 bytes of C64 memory from a hex string.
690
+ * @request PUT:/v1/machine:writemem
691
+ * @secure
692
+ */
693
+ writeMemoryHex: (writemem, query, params = {}) => this.http.request({
694
+ path: `/v1/machine${writemem}`,
695
+ method: "PUT",
696
+ query: query,
697
+ secure: true,
698
+ ...params,
699
+ }),
700
+ /**
701
+ * No description
702
+ *
703
+ * @tags Machine
704
+ * @name WriteMemoryUpload
705
+ * @summary Write C64 memory from an uploaded binary payload.
706
+ * @request POST:/v1/machine:writemem
707
+ * @secure
708
+ */
709
+ writeMemoryUpload: (writemem, query, data, params = {}) => this.http.request({
710
+ path: `/v1/machine${writemem}`,
711
+ method: "POST",
712
+ query: query,
713
+ body: data,
714
+ secure: true,
715
+ type: ContentType.FormData,
716
+ ...params,
717
+ }),
718
+ /**
719
+ * No description
720
+ *
721
+ * @tags Machine
722
+ * @name ReadMemory
723
+ * @summary Read C64 memory as raw bytes.
724
+ * @request GET:/v1/machine:readmem
725
+ * @secure
726
+ */
727
+ readMemory: (readmem, query, params = {}) => this.http.request({
728
+ path: `/v1/machine${readmem}`,
729
+ method: "GET",
730
+ query: query,
731
+ secure: true,
732
+ ...params,
733
+ }),
734
+ /**
735
+ * @description Returns 404 JSON when no active menu screen matrix is available.
736
+ *
737
+ * @tags Machine
738
+ * @name ReadMenuScreen
739
+ * @summary Read the active Ultimate menu screen matrix as raw bytes.
740
+ * @request GET:/v1/machine:menu_screen
741
+ * @secure
742
+ */
743
+ readMenuScreen: (menuScreen, params = {}) => this.http.request({
744
+ path: `/v1/machine${menuScreen}`,
745
+ method: "GET",
746
+ secure: true,
747
+ ...params,
748
+ }),
749
+ /**
750
+ * No description
751
+ *
752
+ * @tags Machine
753
+ * @name ReadDebugRegister
754
+ * @summary Read the Ultimate 64 debug register.
755
+ * @request GET:/v1/machine:debugreg
756
+ * @secure
757
+ */
758
+ readDebugRegister: (debugreg, params = {}) => this.http.request({
759
+ path: `/v1/machine${debugreg}`,
760
+ method: "GET",
761
+ secure: true,
762
+ ...params,
763
+ }),
764
+ /**
765
+ * No description
766
+ *
767
+ * @tags Machine
768
+ * @name WriteDebugRegister
769
+ * @summary Write the Ultimate 64 debug register.
770
+ * @request PUT:/v1/machine:debugreg
771
+ * @secure
772
+ */
773
+ writeDebugRegister: (debugreg, query, params = {}) => this.http.request({
774
+ path: `/v1/machine${debugreg}`,
775
+ method: "PUT",
776
+ query: query,
777
+ secure: true,
778
+ ...params,
779
+ }),
780
+ /**
781
+ * No description
782
+ *
783
+ * @tags Machine
784
+ * @name MeasureCartridgeBus
785
+ * @summary Capture cartridge-bus timing as a VCD file.
786
+ * @request GET:/v1/machine:measure
787
+ * @secure
788
+ */
789
+ measureCartridgeBus: (measure, params = {}) => this.http.request({
790
+ path: `/v1/machine${measure}`,
791
+ method: "GET",
792
+ secure: true,
793
+ ...params,
794
+ }),
795
+ /**
796
+ * No description
797
+ *
798
+ * @tags Input
799
+ * @name GetInputState
800
+ * @summary Read REST-injected keyboard and joystick state.
801
+ * @request GET:/v1/machine:input
802
+ * @secure
803
+ */
804
+ getInputState: (input, params = {}) => this.http.request({
805
+ path: `/v1/machine${input}`,
806
+ method: "GET",
807
+ secure: true,
808
+ format: "json",
809
+ ...params,
810
+ }),
811
+ /**
812
+ * No description
813
+ *
814
+ * @tags Input
815
+ * @name SendInputEvents
816
+ * @summary Apply keyboard and joystick input events.
817
+ * @request POST:/v1/machine:input
818
+ * @secure
819
+ */
820
+ sendInputEvents: (input, data, params = {}) => this.http.request({
821
+ path: `/v1/machine${input}`,
822
+ method: "POST",
823
+ body: data,
824
+ secure: true,
825
+ type: ContentType.Json,
826
+ format: "json",
827
+ ...params,
828
+ }),
829
+ /**
830
+ * No description
831
+ *
832
+ * @tags Drives
833
+ * @name ListDrives
834
+ * @summary List internal drives and IEC service devices.
835
+ * @request GET:/v1/drives
836
+ * @secure
837
+ */
838
+ listDrives: (params = {}) => this.http.request({
839
+ path: `/v1/drives`,
840
+ method: "GET",
841
+ secure: true,
842
+ format: "json",
843
+ ...params,
844
+ }),
845
+ /**
846
+ * No description
847
+ *
848
+ * @tags Drives
849
+ * @name MountDiskImage
850
+ * @summary Mount a disk image from the device filesystem.
851
+ * @request PUT:/v1/drives/{drive}:mount
852
+ * @secure
853
+ */
854
+ mountDiskImage: (drive, mount, query, params = {}) => this.http.request({
855
+ path: `/v1/drives/${drive}${mount}`,
856
+ method: "PUT",
857
+ query: query,
858
+ secure: true,
859
+ ...params,
860
+ }),
861
+ /**
862
+ * No description
863
+ *
864
+ * @tags Drives
865
+ * @name MountUploadedDiskImage
866
+ * @summary Upload and mount a disk image.
867
+ * @request POST:/v1/drives/{drive}:mount
868
+ * @secure
869
+ */
870
+ mountUploadedDiskImage: (drive, mount, data, query, params = {}) => this.http.request({
871
+ path: `/v1/drives/${drive}${mount}`,
872
+ method: "POST",
873
+ query: query,
874
+ body: data,
875
+ secure: true,
876
+ type: ContentType.FormData,
877
+ ...params,
878
+ }),
879
+ /**
880
+ * No description
881
+ *
882
+ * @tags Drives
883
+ * @name ResetDrive
884
+ * @summary Reset a drive.
885
+ * @request PUT:/v1/drives/{drive}:reset
886
+ * @secure
887
+ */
888
+ resetDrive: (drive, reset, params = {}) => this.http.request({
889
+ path: `/v1/drives/${drive}${reset}`,
890
+ method: "PUT",
891
+ secure: true,
892
+ ...params,
893
+ }),
894
+ /**
895
+ * No description
896
+ *
897
+ * @tags Drives
898
+ * @name RemoveMountedImage
899
+ * @summary Remove the mounted image from a drive.
900
+ * @request PUT:/v1/drives/{drive}:remove
901
+ * @secure
902
+ */
903
+ removeMountedImage: (drive, remove, params = {}) => this.http.request({
904
+ path: `/v1/drives/${drive}${remove}`,
905
+ method: "PUT",
906
+ secure: true,
907
+ ...params,
908
+ }),
909
+ /**
910
+ * No description
911
+ *
912
+ * @tags Drives
913
+ * @name PowerOnDrive
914
+ * @summary Power on a drive.
915
+ * @request PUT:/v1/drives/{drive}:on
916
+ * @secure
917
+ */
918
+ powerOnDrive: (drive, on, params = {}) => this.http.request({
919
+ path: `/v1/drives/${drive}${on}`,
920
+ method: "PUT",
921
+ secure: true,
922
+ ...params,
923
+ }),
924
+ /**
925
+ * No description
926
+ *
927
+ * @tags Drives
928
+ * @name PowerOffDrive
929
+ * @summary Power off a drive.
930
+ * @request PUT:/v1/drives/{drive}:off
931
+ * @secure
932
+ */
933
+ powerOffDrive: (drive, off, params = {}) => this.http.request({
934
+ path: `/v1/drives/${drive}${off}`,
935
+ method: "PUT",
936
+ secure: true,
937
+ ...params,
938
+ }),
939
+ /**
940
+ * No description
941
+ *
942
+ * @tags Drives
943
+ * @name UnlinkMountedImage
944
+ * @summary Unlink the mounted image from host storage.
945
+ * @request PUT:/v1/drives/{drive}:unlink
946
+ * @secure
947
+ */
948
+ unlinkMountedImage: (drive, unlink, params = {}) => this.http.request({
949
+ path: `/v1/drives/${drive}${unlink}`,
950
+ method: "PUT",
951
+ secure: true,
952
+ ...params,
953
+ }),
954
+ /**
955
+ * No description
956
+ *
957
+ * @tags Drives
958
+ * @name LoadDriveRomFromFile
959
+ * @summary Load a drive ROM from the device filesystem.
960
+ * @request PUT:/v1/drives/{drive}:load_rom
961
+ * @secure
962
+ */
963
+ loadDriveRomFromFile: (drive, loadRom, query, params = {}) => this.http.request({
964
+ path: `/v1/drives/${drive}${loadRom}`,
965
+ method: "PUT",
966
+ query: query,
967
+ secure: true,
968
+ ...params,
969
+ }),
970
+ /**
971
+ * No description
972
+ *
973
+ * @tags Drives
974
+ * @name LoadUploadedDriveRom
975
+ * @summary Upload and load a drive ROM.
976
+ * @request POST:/v1/drives/{drive}:load_rom
977
+ * @secure
978
+ */
979
+ loadUploadedDriveRom: (drive, loadRom, data, params = {}) => this.http.request({
980
+ path: `/v1/drives/${drive}${loadRom}`,
981
+ method: "POST",
982
+ body: data,
983
+ secure: true,
984
+ type: ContentType.FormData,
985
+ ...params,
986
+ }),
987
+ /**
988
+ * No description
989
+ *
990
+ * @tags Drives
991
+ * @name SetDriveMode
992
+ * @summary Set drive emulation mode.
993
+ * @request PUT:/v1/drives/{drive}:set_mode
994
+ * @secure
995
+ */
996
+ setDriveMode: (drive, setMode, query, params = {}) => this.http.request({
997
+ path: `/v1/drives/${drive}${setMode}`,
998
+ method: "PUT",
999
+ query: query,
1000
+ secure: true,
1001
+ ...params,
1002
+ }),
1003
+ /**
1004
+ * No description
1005
+ *
1006
+ * @tags Streams
1007
+ * @name StartDataStream
1008
+ * @summary Start a data stream.
1009
+ * @request PUT:/v1/streams/{stream}:start
1010
+ * @secure
1011
+ */
1012
+ startDataStream: (stream, start, query, params = {}) => this.http.request({
1013
+ path: `/v1/streams/${stream}${start}`,
1014
+ method: "PUT",
1015
+ query: query,
1016
+ secure: true,
1017
+ ...params,
1018
+ }),
1019
+ /**
1020
+ * No description
1021
+ *
1022
+ * @tags Streams
1023
+ * @name StopDataStream
1024
+ * @summary Stop a data stream.
1025
+ * @request PUT:/v1/streams/{stream}:stop
1026
+ * @secure
1027
+ */
1028
+ stopDataStream: (stream, stop, params = {}) => this.http.request({
1029
+ path: `/v1/streams/${stream}${stop}`,
1030
+ method: "PUT",
1031
+ secure: true,
1032
+ ...params,
1033
+ }),
1034
+ /**
1035
+ * No description
1036
+ *
1037
+ * @tags Files
1038
+ * @name GetFileInfo
1039
+ * @summary Get metadata for a device filesystem path.
1040
+ * @request GET:/v1/files/{path}:info
1041
+ * @secure
1042
+ */
1043
+ getFileInfo: (path, info, params = {}) => this.http.request({
1044
+ path: `/v1/files/${path}${info}`,
1045
+ method: "GET",
1046
+ secure: true,
1047
+ format: "json",
1048
+ ...params,
1049
+ }),
1050
+ /**
1051
+ * No description
1052
+ *
1053
+ * @tags Files
1054
+ * @name CreateD64
1055
+ * @summary Create and format a D64 image.
1056
+ * @request PUT:/v1/files/{path}:create_d64
1057
+ * @secure
1058
+ */
1059
+ createD64: (path, createD64, query, params = {}) => this.http.request({
1060
+ path: `/v1/files/${path}${createD64}`,
1061
+ method: "PUT",
1062
+ query: query,
1063
+ secure: true,
1064
+ ...params,
1065
+ }),
1066
+ /**
1067
+ * No description
1068
+ *
1069
+ * @tags Files
1070
+ * @name CreateD71
1071
+ * @summary Create and format a D71 image.
1072
+ * @request PUT:/v1/files/{path}:create_d71
1073
+ * @secure
1074
+ */
1075
+ createD71: (path, createD71, query, params = {}) => this.http.request({
1076
+ path: `/v1/files/${path}${createD71}`,
1077
+ method: "PUT",
1078
+ query: query,
1079
+ secure: true,
1080
+ ...params,
1081
+ }),
1082
+ /**
1083
+ * No description
1084
+ *
1085
+ * @tags Files
1086
+ * @name CreateD81
1087
+ * @summary Create and format a D81 image.
1088
+ * @request PUT:/v1/files/{path}:create_d81
1089
+ * @secure
1090
+ */
1091
+ createD81: (path, createD81, query, params = {}) => this.http.request({
1092
+ path: `/v1/files/${path}${createD81}`,
1093
+ method: "PUT",
1094
+ query: query,
1095
+ secure: true,
1096
+ ...params,
1097
+ }),
1098
+ /**
1099
+ * No description
1100
+ *
1101
+ * @tags Files
1102
+ * @name CreateDnp
1103
+ * @summary Create and format a DNP image.
1104
+ * @request PUT:/v1/files/{path}:create_dnp
1105
+ * @secure
1106
+ */
1107
+ createDnp: (path, createDnp, query, params = {}) => this.http.request({
1108
+ path: `/v1/files/${path}${createDnp}`,
1109
+ method: "PUT",
1110
+ query: query,
1111
+ secure: true,
1112
+ ...params,
1113
+ }),
1114
+ };
1115
+ this.http = http;
1116
+ }
1117
+ }