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.
- package/AGENTS.md +19 -3
- package/README.md +190 -148
- package/dist/.tsbuildinfo +1 -1
- package/dist/c64Client.js +127 -5
- package/dist/config.js +12 -8
- package/dist/device.js +75 -45
- package/dist/mcp-server.js +11 -3
- package/dist/platform.js +13 -2
- package/dist/tools/audio.js +1 -1
- package/dist/tools/developer.js +6 -6
- package/dist/tools/graphics.js +4 -4
- package/dist/tools/input.js +129 -12
- package/dist/tools/machineControl.js +85 -6
- package/dist/tools/memory.js +1 -1
- package/dist/tools/meta/index.js +1 -1
- package/dist/tools/programRunners.js +5 -5
- package/dist/tools/rag.js +1 -1
- package/dist/tools/registry/batch.js +1 -1
- package/dist/tools/registry/config.js +5 -5
- package/dist/tools/registry/disk.js +2 -2
- package/dist/tools/registry/drive.js +2 -2
- package/dist/tools/registry/graphics.js +2 -2
- package/dist/tools/registry/memory.js +2 -2
- package/dist/tools/registry/platform.js +7 -5
- package/dist/tools/registry/program.js +5 -5
- package/dist/tools/registry/rag.js +1 -1
- package/dist/tools/registry/sound.js +4 -4
- package/dist/tools/registry/system.js +13 -3
- package/dist/tools/storage.js +1 -1
- package/doc/c64u/c64-openapi.yaml +1130 -774
- package/doc/u2/u2-openapi.yaml +1192 -0
- package/generated/c64/index.js +142 -9
- package/generated/openapi/c64u/index.js +1117 -0
- package/generated/openapi/u2/index.js +929 -0
- package/mcp/schemas/c64_graphics.schema.json +3 -3
- package/mcp/schemas/c64_input.schema.json +247 -6
- package/mcp/schemas/c64_memory.schema.json +3 -3
- package/mcp/schemas/c64_program.schema.json +3 -3
- package/mcp/schemas/c64_select_backend.schema.json +2 -0
- package/mcp/schemas/c64_system.schema.json +41 -1
- package/mcp/server.json +1 -1
- package/mcp/tools.json +382 -41
- package/mcp.json +14 -2
- package/package.json +4 -2
- package/scripts/mockC64Server.mjs +40 -0
- package/scripts/prepare-release.mjs +13 -2
- package/scripts/update-readme.ts +18 -30
- 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
|
+
}
|