@aalis/api-webui 0.11.0 → 0.12.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/dist/rest.d.ts ADDED
@@ -0,0 +1,585 @@
1
+ import type { UserIdentity } from '@aalis/api-authority';
2
+ import type { InstallResult, UninstallOptions, UpdateResult, UpdateTarget } from '@aalis/api-package-manager';
3
+ import type { PlatformConnection } from '@aalis/api-platform';
4
+ import type { LogEntry, PluginState, SelectionBasis } from '@aalis/core';
5
+ import type { ConfigSchema, SchemaIssue } from '@aalis/schema-config';
6
+ import type { DepOrigin } from '@aalis/util-dep-spec';
7
+ import type { AttentionItem, ExtendDeclaration, LogFilter, PluginBlockers } from './index.js';
8
+ import type { LayoutOperation, LayoutRecords, PageDataByType, PageRef, PageView } from './page.js';
9
+ import type { PluginTheme } from './theme.js';
10
+ /** 失败的回应(4xx、5xx) */
11
+ export interface ErrorResponse {
12
+ error: string;
13
+ /** 输入没过校验时逐项列出 */
14
+ issues?: SchemaIssue[];
15
+ /** 改动已在运行态生效,只是没写进配置文件 */
16
+ applied?: true;
17
+ }
18
+ export interface OkResponse {
19
+ ok: true;
20
+ }
21
+ /** 管理动作的回执:message 写做成了什么,动作之后插件没落在预期状态(激活失败、仍在激活等)时也写在这里 */
22
+ export interface MessageResponse extends OkResponse {
23
+ message: string;
24
+ }
25
+ export interface LoginRequest {
26
+ token: string;
27
+ }
28
+ export interface LoginResponse extends OkResponse {
29
+ identity: UserIdentity;
30
+ }
31
+ export interface AuthStatusResponse {
32
+ authed: boolean;
33
+ /** 登录了才有 */
34
+ identity?: UserIdentity;
35
+ }
36
+ /** GET /api/plugins 的一项:一个插件实例;没起来的原因见 PluginBlockers */
37
+ export interface PluginListItem extends PluginBlockers {
38
+ /** 插件包名:同一插件的几个实例按它合在一起 */
39
+ name: string;
40
+ instanceId: string;
41
+ displayName?: string;
42
+ /** 插件声明的子系统,没声明的不给;组名与顺序见 DEFAULT_SUBSYSTEM_METADATA */
43
+ subsystem?: string;
44
+ /** 已装的包的版本,本地查不到的不给 */
45
+ version?: string;
46
+ state: PluginState;
47
+ error?: string;
48
+ /** 激活超过慢激活阈值、已转入后台 */
49
+ slow?: boolean;
50
+ /** 旧实例超过宽限仍未停下:停下之前同一 id 不起新实例 */
51
+ lingering?: boolean;
52
+ /** 提供这个界面:不能从界面停用或卸载 */
53
+ self?: true;
54
+ provides: string[];
55
+ requiredServices: string[];
56
+ optionalServices: string[];
57
+ /** 本插件偏好(用户设的、只对这个实例生效):服务名 → 偏好的提供者(contextId),只列它声明了的、设了的服务 */
58
+ servicePreferences: Record<string, string>;
59
+ /** 它声明的服务此刻各落到哪一家、依据是什么(本插件偏好、全局偏好或排名),只列选得到的 */
60
+ serviceSelections: Record<string, {
61
+ contextId: string;
62
+ basis?: SelectionBasis;
63
+ }>;
64
+ tools: string[];
65
+ commands: string[];
66
+ reusable: boolean;
67
+ extends?: ExtendDeclaration;
68
+ /** 配置文件里有这个实例的配置段(空段也算):市场卸载时「同时删除配置」看它;宿主不提供配置文档时为 false */
69
+ configSection: boolean;
70
+ /** 配置文档里这一段:密钥字段上是引用 `{ $secret }`;宿主不提供配置文档时是运行态配置,去掉密钥字段 */
71
+ config: Record<string, unknown>;
72
+ configSchema?: ConfigSchema;
73
+ defaultConfig: Record<string, unknown>;
74
+ }
75
+ export interface PluginListResponse {
76
+ plugins: PluginListItem[];
77
+ /** 密钥键 → 配置文档里引用它的处数 */
78
+ secretRefCounts: Record<string, number>;
79
+ }
80
+ /** 插件配置的部分更新:提交的顶层键整键替换,值为 null 的视为删除 */
81
+ export interface PluginConfigRequest {
82
+ config: Record<string, unknown>;
83
+ }
84
+ export interface PluginConfigResponse extends MessageResponse {
85
+ /** 本次提交里裁掉的未声明字段 */
86
+ ignored: string[];
87
+ /** 配置文档里原有、随这次写回删掉的未声明字段 */
88
+ removed: string[];
89
+ }
90
+ export interface InstanceCreateRequest {
91
+ /** 实例 id 是 `<插件名>:<suffix>`:字母、数字、下划线与连字符 */
92
+ suffix: string;
93
+ config?: Record<string, unknown>;
94
+ }
95
+ export interface InstanceCreateResponse extends MessageResponse {
96
+ instanceId: string;
97
+ ignored: string[];
98
+ }
99
+ export interface PluginScanResponse extends MessageResponse {
100
+ /** 新加载的插件 */
101
+ loaded: string[];
102
+ }
103
+ export interface HostConfigResponse {
104
+ /** 配置文档里写了的核心键 */
105
+ config: Record<string, unknown>;
106
+ /** 核心键的 schema */
107
+ schema: ConfigSchema;
108
+ /** 要重启才生效的键 */
109
+ restartKeys: string[];
110
+ /** 家目录,宿主不提供路径时没有 */
111
+ home?: string;
112
+ }
113
+ /** 核心键 → 新值,null 回到默认;只收核心键 */
114
+ export type HostConfigRequest = Record<string, unknown>;
115
+ export interface HostConfigSaved extends MessageResponse {
116
+ /** 改了的键里有要重启才生效的 */
117
+ restartNeeded: boolean;
118
+ }
119
+ export interface ServiceProviderView {
120
+ /** 提供者的插件实例 id,宿主自己提供的是 `root` */
121
+ contextId: string;
122
+ displayName?: string;
123
+ label?: string;
124
+ priority: number;
125
+ exclusive: boolean;
126
+ }
127
+ export interface ServiceListResponse {
128
+ /** 服务名 → 提供者(按偏好、优先级、登记先后排好,第一个就是正在用的)与偏好的提供者 */
129
+ services: Record<string, {
130
+ providers: ServiceProviderView[];
131
+ preferred: string | null;
132
+ }>;
133
+ }
134
+ export interface PreferRequest {
135
+ contextId: string;
136
+ }
137
+ /** 「需要处理」:审批在前,其后是插件故障与提示,各按先后 */
138
+ export interface AttentionResponse {
139
+ items: AttentionItem[];
140
+ }
141
+ export interface PlatformStatus {
142
+ adapterName: string;
143
+ platform: string;
144
+ /** 适配器所在的插件实例 */
145
+ contextId: string;
146
+ connections: PlatformConnection[];
147
+ }
148
+ export interface PlatformListResponse {
149
+ platforms: PlatformStatus[];
150
+ }
151
+ /** 日志历史的查询参数:筛选(与 /admin 的订阅同一份)与条数(默认 200,上限 5000) */
152
+ export interface LogQuery extends LogFilter {
153
+ limit?: number;
154
+ }
155
+ /** GET /api/themes:插件此刻提供的主题,按全局键排 */
156
+ export interface PluginThemesResponse {
157
+ themes: PluginTheme[];
158
+ }
159
+ /** 一个可选项:default 标没设时生效的那一项;工具分组另带说明与登记它的插件 */
160
+ export interface OptionDetail {
161
+ value: string;
162
+ label: string;
163
+ default?: true;
164
+ description?: string;
165
+ pluginName?: string;
166
+ }
167
+ /**
168
+ * 可选项来源的回应:models 是取值,details 是带名字的可选项(有它时按它画),labels 是不在可选项里的取值的名字
169
+ * (深度思考的档位:换了模型以后存着的档位不在可选项里,界面按它写名字)
170
+ */
171
+ export interface OptionsResponse {
172
+ models: string[];
173
+ details?: OptionDetail[];
174
+ labels?: Record<string, string>;
175
+ }
176
+ /** 一个模型:contextId 是提供它的插件实例,llm-ref 的取值 `{ provider, model }` 认的是它 */
177
+ export interface LLMModelEntry {
178
+ model: string;
179
+ /** 显示名 */
180
+ provider: string;
181
+ contextId: string;
182
+ capabilities: string[];
183
+ }
184
+ /** 模型服务(llm)的回应 */
185
+ export interface LLMModelsResponse {
186
+ providers: LLMModelEntry[];
187
+ }
188
+ export interface ModelRefreshResponse extends OkResponse {
189
+ added: string[];
190
+ removed: string[];
191
+ total: number;
192
+ }
193
+ export interface PageListResponse {
194
+ /** 按位置内的 order、实例、key 排好 */
195
+ pages: PageView[];
196
+ }
197
+ export interface PanelPagesResponse {
198
+ pages: PageRef[];
199
+ }
200
+ /** 声明式页面一个组件的数据,按组件种类 */
201
+ export interface PageDataResponse<T extends keyof PageDataByType = keyof PageDataByType> {
202
+ data: PageDataByType[T];
203
+ }
204
+ /** 插件前端一个数据源的数据:数据源返回的值 */
205
+ export interface FrameDataResponse {
206
+ data: unknown;
207
+ }
208
+ /**
209
+ * 数据路由的查询参数:sessionId 给会话面板,rowKey 给详情里的组件;插件前端的数据源另收 input(JSON 字符串,声明了输入的
210
+ * 数据源才收)。只收用得上的键,多出或缺了都拒收
211
+ */
212
+ export interface PageDataQuery {
213
+ sessionId?: string;
214
+ rowKey?: string;
215
+ input?: string;
216
+ }
217
+ /** 只收这三个键:sessionId 给会话面板,rowKey 给行动作(插件前端没有),input 给声明了输入的动作;多出或缺了都拒收 */
218
+ export interface PageActionRequest {
219
+ sessionId?: string;
220
+ rowKey?: string;
221
+ input?: Record<string, unknown>;
222
+ }
223
+ export interface PageActionResponse {
224
+ /** 处理函数给的一句结果 */
225
+ message?: string;
226
+ }
227
+ /** 组件类别:plugin 可装卸,api 与 schema 只读,interface 是前端界面,util 是工具库 */
228
+ export type PackageCategory = 'plugin' | 'api' | 'schema' | 'interface' | 'util';
229
+ export interface MarketplacePackage {
230
+ name: string;
231
+ /** 安装源上的最新版,查不到为空串;不是本地已装的版本 */
232
+ version: string;
233
+ description: string;
234
+ author?: string;
235
+ installed: boolean;
236
+ /** 本地已装的版本 */
237
+ resolved?: string;
238
+ /** 根 package.json 里的依赖声明,未装或不是直接依赖时没有 */
239
+ request?: string;
240
+ /** 本地这份从哪来,未装时没有 */
241
+ origin?: DepOrigin;
242
+ /** 此刻能否经市场更新:来源是 registry,且安装源上的最新版严格新于本地。界面直接用它,不自己比版本 */
243
+ updatable: boolean;
244
+ /** `@aalis/` 下的包 */
245
+ official: boolean;
246
+ category: PackageCategory;
247
+ /**
248
+ * 声明提供的服务(package.json 的 `aalis.service.provides`),市场按服务搜靠它:已装的取本地这份(与本地版本对得上),
249
+ * 没装的取安装源上的最新版;都查不到或没声明时为空
250
+ */
251
+ provides: string[];
252
+ /** 关键词,去掉了类型词 */
253
+ keywords?: string[];
254
+ /** 月下载量 */
255
+ downloads?: number;
256
+ /** 最近更新时间(ISO) */
257
+ updated?: string;
258
+ /** npm 的综合评分,只用来排序 */
259
+ score?: number;
260
+ /** npm 标记的不安全包 */
261
+ insecure?: boolean;
262
+ license?: string;
263
+ links?: {
264
+ npm?: string;
265
+ homepage?: string;
266
+ repository?: string;
267
+ };
268
+ }
269
+ export interface MarketplaceResponse {
270
+ packages: MarketplacePackage[];
271
+ /** 检索源或安装源查不到时的说明 */
272
+ warning?: string;
273
+ }
274
+ /** 系统组件:本地已装的内核、宿主、契约、规范与工具库 */
275
+ export interface SystemComponent {
276
+ name: string;
277
+ /** 本地已装的版本 */
278
+ version?: string;
279
+ /** 安装源上的最新版,查不到时没有 */
280
+ latest?: string;
281
+ request?: string;
282
+ /** 来源分档:已是最新版与查不到最新版都不能更新,从 updatable 推不出来源,所以另给 */
283
+ origin: DepOrigin;
284
+ description?: string;
285
+ kind: 'core' | 'runtime' | 'api' | 'schema' | 'util';
286
+ /** 根 dependencies 里以 semver 范围声明、且最新版严格新于本地 */
287
+ updatable: boolean;
288
+ }
289
+ export interface SystemComponentsResponse {
290
+ components: SystemComponent[];
291
+ warning?: string;
292
+ }
293
+ /** 依赖链路的一个节点:present 为 false 是本地没有这个包,链路在此中断 */
294
+ export interface DependencyNode {
295
+ name: string;
296
+ present: boolean;
297
+ /** 已加载的插件才有:它提供与要用的服务 */
298
+ services?: {
299
+ provides: string[];
300
+ requires: string[];
301
+ };
302
+ children: DependencyNode[];
303
+ }
304
+ export interface DependencyGraphResponse {
305
+ /** 它依赖谁 */
306
+ upstream: DependencyNode;
307
+ /** 谁依赖它 */
308
+ downstream: DependencyNode;
309
+ /** 它要用的服务由谁提供(宿主提供的写「宿主」,没人提供为 null),与它提供的服务 */
310
+ services: {
311
+ required: Array<{
312
+ service: string;
313
+ providedBy: string | null;
314
+ }>;
315
+ provides: string[];
316
+ };
317
+ /** 卸载它会断掉服务的插件 */
318
+ serviceDependents: string[];
319
+ }
320
+ export interface PackageRequest {
321
+ name: string;
322
+ }
323
+ /** 卸载:removeConfig 不给为 false,配置段与密钥留着 */
324
+ export interface UninstallRequest extends PackageRequest, UninstallOptions {
325
+ }
326
+ export interface UpdateRequest {
327
+ targets: UpdateTarget[];
328
+ }
329
+ /** 回 JSON 的路由 */
330
+ export interface WebuiRestRoutes {
331
+ 'POST /api/auth/login': {
332
+ body: LoginRequest;
333
+ response: LoginResponse;
334
+ };
335
+ 'GET /api/auth/status': {
336
+ response: AuthStatusResponse;
337
+ };
338
+ 'POST /api/auth/logout': {
339
+ response: OkResponse;
340
+ };
341
+ 'GET /api/plugins': {
342
+ response: PluginListResponse;
343
+ };
344
+ 'PUT /api/plugins/:name/config': {
345
+ body: PluginConfigRequest;
346
+ response: PluginConfigResponse;
347
+ };
348
+ 'POST /api/plugins/:name/enable': {
349
+ response: MessageResponse;
350
+ };
351
+ 'POST /api/plugins/:name/disable': {
352
+ response: MessageResponse;
353
+ };
354
+ 'POST /api/plugins/:name/reload': {
355
+ response: MessageResponse;
356
+ };
357
+ 'POST /api/plugins/scan': {
358
+ response: PluginScanResponse;
359
+ };
360
+ 'POST /api/plugins/:name/instances': {
361
+ body: InstanceCreateRequest;
362
+ response: InstanceCreateResponse;
363
+ };
364
+ 'DELETE /api/plugins/:instanceId/instance': {
365
+ response: MessageResponse;
366
+ };
367
+ /** 本插件偏好:只对这个实例生效,校验、持久化与回应同全局偏好的两条 */
368
+ 'POST /api/plugins/:instanceId/services/:name/prefer': {
369
+ body: PreferRequest;
370
+ response: OkResponse;
371
+ };
372
+ 'DELETE /api/plugins/:instanceId/services/:name/prefer': {
373
+ response: OkResponse;
374
+ };
375
+ 'GET /api/config': {
376
+ response: HostConfigResponse;
377
+ };
378
+ 'PUT /api/config': {
379
+ body: HostConfigRequest;
380
+ response: HostConfigSaved;
381
+ };
382
+ 'POST /api/restart': {
383
+ response: MessageResponse;
384
+ };
385
+ 'GET /api/services': {
386
+ response: ServiceListResponse;
387
+ };
388
+ 'POST /api/services/:name/prefer': {
389
+ body: PreferRequest;
390
+ response: OkResponse;
391
+ };
392
+ 'DELETE /api/services/:name/prefer': {
393
+ response: OkResponse;
394
+ };
395
+ 'GET /api/attention': {
396
+ response: AttentionResponse;
397
+ };
398
+ 'GET /api/platforms': {
399
+ response: PlatformListResponse;
400
+ };
401
+ 'GET /api/logs/tail': {
402
+ query: LogQuery;
403
+ response: LogEntry[];
404
+ };
405
+ /** 往前翻:seq 比 before 小的最后 limit 条 */
406
+ 'GET /api/logs/range': {
407
+ query: LogQuery & {
408
+ before: number;
409
+ };
410
+ response: LogEntry[];
411
+ };
412
+ 'GET /api/themes': {
413
+ response: PluginThemesResponse;
414
+ };
415
+ /**
416
+ * 按来源取可选项:llm 回模型;platform、gateway-scopes、toolGroups、llm-thinking 由宿主回答,llm-thinking 收 dependency
417
+ * (模型引用 `{ provider, model }` 的 JSON,没带时按服务偏好);其余服务合起各提供者的 listModels(),回 `{ models }`
418
+ */
419
+ 'GET /api/models/:service': {
420
+ query: {
421
+ dependency?: string;
422
+ };
423
+ response: LLMModelsResponse | OptionsResponse;
424
+ };
425
+ /** :contextId 是提供者的插件实例,与模型的 contextId 相同 */
426
+ 'POST /api/llm-providers/:contextId/refresh': {
427
+ response: ModelRefreshResponse;
428
+ };
429
+ 'GET /api/pages': {
430
+ response: PageListResponse;
431
+ };
432
+ 'GET /api/session-pages': {
433
+ query: {
434
+ sessionId: string;
435
+ };
436
+ response: PanelPagesResponse;
437
+ };
438
+ 'GET /api/pages/:instance/:pageKey/data/:componentId': {
439
+ query: PageDataQuery;
440
+ response: PageDataResponse | FrameDataResponse;
441
+ };
442
+ 'POST /api/pages/:instance/:pageKey/actions/:action': {
443
+ body: PageActionRequest;
444
+ response: PageActionResponse;
445
+ };
446
+ 'GET /api/layout': {
447
+ response: LayoutRecords;
448
+ };
449
+ 'POST /api/layout': {
450
+ body: LayoutOperation;
451
+ response: LayoutRecords;
452
+ };
453
+ 'GET /api/marketplace': {
454
+ query: {
455
+ q?: string;
456
+ };
457
+ response: MarketplaceResponse;
458
+ };
459
+ 'GET /api/system-components': {
460
+ response: SystemComponentsResponse;
461
+ };
462
+ 'GET /api/marketplace/depgraph': {
463
+ query: {
464
+ name: string;
465
+ };
466
+ response: DependencyGraphResponse;
467
+ };
468
+ /** 包管理拒绝时也回 200,ok 为 false、message 写原因 */
469
+ 'POST /api/marketplace/install': {
470
+ body: PackageRequest;
471
+ response: InstallResult;
472
+ };
473
+ 'POST /api/marketplace/uninstall': {
474
+ body: UninstallRequest;
475
+ response: {
476
+ ok: boolean;
477
+ message: string;
478
+ };
479
+ };
480
+ /** 整批更新,成功后进程重启 */
481
+ 'POST /api/marketplace/update': {
482
+ body: UpdateRequest;
483
+ response: UpdateResult;
484
+ };
485
+ }
486
+ /** 下载的文件:一律当附件,不在 WebUI 的源里内联;带长度,界面据它决定能不能预览 */
487
+ interface AttachmentHeaders {
488
+ 'content-type': 'application/octet-stream';
489
+ 'content-disposition': `attachment; ${string}`;
490
+ 'content-length': `${number}`;
491
+ 'x-content-type-options': 'nosniff';
492
+ 'content-security-policy': string;
493
+ }
494
+ /** 插件前端的文件:框架 CSP 的脚本只认这一页的目录与公用目录 */
495
+ interface FrameFileHeaders {
496
+ 'content-type': string;
497
+ 'content-length': `${number}`;
498
+ 'content-security-policy': `sandbox allow-scripts; ${string}`;
499
+ 'x-content-type-options': 'nosniff';
500
+ 'referrer-policy': 'no-referrer';
501
+ 'access-control-allow-origin': '*';
502
+ 'cache-control': 'no-cache';
503
+ }
504
+ /** WebUI 自己的页面与脚本:带文档级 CSP */
505
+ interface DocumentHeaders<T extends string> {
506
+ 'content-type': `${T}; charset=utf-8`;
507
+ 'content-length': `${number}`;
508
+ 'content-security-policy': string;
509
+ }
510
+ /** 回文件或页面的路由:写请求与 2xx 时的响应头(小写,不含 Date、ETag 这类传输层的头) */
511
+ export interface WebuiFileRoutes {
512
+ 'GET /api/auth/login.js': {
513
+ headers: DocumentHeaders<'application/javascript'>;
514
+ };
515
+ /** 句柄由会话服务签发,绑定会话 */
516
+ 'GET /api/session-file': {
517
+ query: {
518
+ sessionId: string;
519
+ handle: string;
520
+ };
521
+ headers: AttachmentHeaders;
522
+ };
523
+ /** 句柄是页面数据里的 FileCell.handle */
524
+ 'GET /api/page-file': {
525
+ query: {
526
+ handle: string;
527
+ };
528
+ headers: AttachmentHeaders;
529
+ };
530
+ /** 存储地址上的图片、视频与音频,按文件头判定类型 */
531
+ 'GET /api/media': {
532
+ query: {
533
+ uri: string;
534
+ };
535
+ headers: {
536
+ 'content-type': `${'image' | 'video' | 'audio'}/${string}`;
537
+ 'content-disposition': 'inline';
538
+ 'content-length': `${number}`;
539
+ 'x-content-type-options': 'nosniff';
540
+ 'content-security-policy': "sandbox; default-src 'none'";
541
+ 'cache-control': 'private, max-age=3600';
542
+ };
543
+ };
544
+ /** 代为取外站的图片 */
545
+ 'GET /api/proxy/image': {
546
+ query: {
547
+ url: string;
548
+ };
549
+ headers: {
550
+ 'content-type': `image/${string}`;
551
+ 'x-content-type-options': 'nosniff';
552
+ 'content-security-policy': 'sandbox';
553
+ 'cache-control': 'private, max-age=86400';
554
+ };
555
+ };
556
+ /** 插件前端的文件:token 取自 FramePageView.frame.src;只收 GET 与 HEAD */
557
+ 'GET /frames/:token/{*path}': {
558
+ headers: FrameFileHeaders;
559
+ };
560
+ /** 宿主给框架的助手 */
561
+ 'GET /frames/_base/frame.js': {
562
+ headers: FrameFileHeaders;
563
+ };
564
+ /** 宿主给框架的样式基线 */
565
+ 'GET /frames/_base/frame.css': {
566
+ headers: FrameFileHeaders;
567
+ };
568
+ /** 换前端的恢复页:任何前端卡住时都能在这里切回 */
569
+ 'GET /__clients': {
570
+ headers: DocumentHeaders<'text/html'>;
571
+ };
572
+ 'GET /__clients.js': {
573
+ headers: DocumentHeaders<'application/javascript'>;
574
+ };
575
+ /** 其余 GET:活跃前端的 index.html(前端自己的路由),每次再验证;/assets/ 下没有的文件回 404 */
576
+ 'GET /{*path}': {
577
+ headers: DocumentHeaders<'text/html'> & {
578
+ 'cache-control': 'public, max-age=0';
579
+ };
580
+ };
581
+ }
582
+ /** 一条 JSON 路由 2xx 时的回应 */
583
+ export type WebuiRestResponse<K extends keyof WebuiRestRoutes> = WebuiRestRoutes[K]['response'];
584
+ export {};
585
+ //# sourceMappingURL=rest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"}
package/dist/rest.js ADDED
@@ -0,0 +1,12 @@
1
+ // ----- 管理面 REST -----
2
+ //
3
+ // webui-server 的全部 HTTP 路由,第三方前端照它实现。路由表的键是「方法 路径」,路径照 webui-server 登记的写法:`:name` 是一段
4
+ // 路径参数(要 encodeURIComponent),`{*path}` 是其后的任意多段。回 JSON 的在 WebuiRestRoutes,写请求(query 是查询参数,
5
+ // body 是请求体)与 2xx 时的回应;回文件或页面的在 WebuiFileRoutes,写请求与 2xx 时的响应头。失败一律回 4xx 或 5xx 与
6
+ // ErrorResponse。WebSocket 端点 /session(会话协议,见 api-session-protocol)与 /admin(管理面推送,见 index.ts)不在这里。
7
+ // 只有类型:服务端按它约束自己的回应,测试核对实际的回应与它对得上。
8
+ //
9
+ // 不要登录的只有 /api/auth/ 下的四条与 /frames/ 下的文件;其余要登录(cookie),没登录的 /api/ 请求回 401,页面回登录页。
10
+ // 改状态的请求(非 GET)另校验来源:带 Origin 的要与本服务同源。登记表里没有的 /api/ 路径回 404 与 ErrorResponse。
11
+ export {};
12
+ //# sourceMappingURL=rest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,EAAE;AACF,sFAAsF;AACtF,2FAA2F;AAC3F,iFAAiF;AACjF,kGAAkG;AAClG,oCAAoC;AACpC,EAAE;AACF,kFAAkF;AAClF,8EAA8E"}