@jsbot-tellus/core 2.4.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +8 -5
  2. package/dist/app/cli.d.ts +10 -0
  3. package/dist/app/cli.d.ts.map +1 -0
  4. package/dist/app/cli.js +37 -0
  5. package/dist/app/cli.js.map +1 -0
  6. package/dist/app/runtime.d.ts +121 -0
  7. package/dist/app/runtime.d.ts.map +1 -0
  8. package/dist/app/runtime.js +296 -0
  9. package/dist/app/runtime.js.map +1 -0
  10. package/dist/app.js +63 -273
  11. package/dist/app.js.map +1 -1
  12. package/dist/core/dispatch/command.d.ts.map +1 -1
  13. package/dist/core/dispatch/command.js +5 -1
  14. package/dist/core/dispatch/command.js.map +1 -1
  15. package/dist/core/dispatch/router.d.ts.map +1 -1
  16. package/dist/core/dispatch/router.js +1 -1
  17. package/dist/core/dispatch/router.js.map +1 -1
  18. package/dist/core/plugin/command-params.d.ts +3 -36
  19. package/dist/core/plugin/command-params.d.ts.map +1 -1
  20. package/dist/core/plugin/command-params.js +2 -461
  21. package/dist/core/plugin/command-params.js.map +1 -1
  22. package/dist/core/plugin/install/paths.d.ts +7 -0
  23. package/dist/core/plugin/install/paths.d.ts.map +1 -0
  24. package/dist/core/plugin/install/paths.js +49 -0
  25. package/dist/core/plugin/install/paths.js.map +1 -0
  26. package/dist/core/plugin/install/state.d.ts +23 -0
  27. package/dist/core/plugin/install/state.d.ts.map +1 -0
  28. package/dist/core/plugin/install/state.js +129 -0
  29. package/dist/core/plugin/install/state.js.map +1 -0
  30. package/dist/core/plugin/install/validate-script.d.ts +3 -0
  31. package/dist/core/plugin/install/validate-script.d.ts.map +1 -0
  32. package/dist/core/plugin/install/validate-script.js +154 -0
  33. package/dist/core/plugin/install/validate-script.js.map +1 -0
  34. package/dist/core/plugin/install-dir.d.ts +3 -28
  35. package/dist/core/plugin/install-dir.d.ts.map +1 -1
  36. package/dist/core/plugin/install-dir.js +3 -326
  37. package/dist/core/plugin/install-dir.js.map +1 -1
  38. package/dist/core/plugin/installer/checks.d.ts +6 -0
  39. package/dist/core/plugin/installer/checks.d.ts.map +1 -0
  40. package/dist/core/plugin/installer/checks.js +99 -0
  41. package/dist/core/plugin/installer/checks.js.map +1 -0
  42. package/dist/core/plugin/installer/support.d.ts +37 -0
  43. package/dist/core/plugin/installer/support.d.ts.map +1 -0
  44. package/dist/core/plugin/installer/support.js +67 -0
  45. package/dist/core/plugin/installer/support.js.map +1 -0
  46. package/dist/core/plugin/installer/warnings.d.ts +5 -0
  47. package/dist/core/plugin/installer/warnings.d.ts.map +1 -0
  48. package/dist/core/plugin/installer/warnings.js +28 -0
  49. package/dist/core/plugin/installer/warnings.js.map +1 -0
  50. package/dist/core/plugin/installer.d.ts +4 -30
  51. package/dist/core/plugin/installer.d.ts.map +1 -1
  52. package/dist/core/plugin/installer.js +21 -202
  53. package/dist/core/plugin/installer.js.map +1 -1
  54. package/dist/core/plugin/params/compile.d.ts +3 -0
  55. package/dist/core/plugin/params/compile.d.ts.map +1 -0
  56. package/dist/core/plugin/params/compile.js +23 -0
  57. package/dist/core/plugin/params/compile.js.map +1 -0
  58. package/dist/core/plugin/params/declaration.d.ts +9 -0
  59. package/dist/core/plugin/params/declaration.d.ts.map +1 -0
  60. package/dist/core/plugin/params/declaration.js +223 -0
  61. package/dist/core/plugin/params/declaration.js.map +1 -0
  62. package/dist/core/plugin/params/input.d.ts +5 -0
  63. package/dist/core/plugin/params/input.d.ts.map +1 -0
  64. package/dist/core/plugin/params/input.js +181 -0
  65. package/dist/core/plugin/params/input.js.map +1 -0
  66. package/dist/core/plugin/params/reply.d.ts +3 -0
  67. package/dist/core/plugin/params/reply.d.ts.map +1 -0
  68. package/dist/core/plugin/params/reply.js +49 -0
  69. package/dist/core/plugin/params/reply.js.map +1 -0
  70. package/dist/core/plugin/params/type-level.d.ts +23 -0
  71. package/dist/core/plugin/params/type-level.d.ts.map +1 -0
  72. package/dist/core/plugin/params/type-level.js +2 -0
  73. package/dist/core/plugin/params/type-level.js.map +1 -0
  74. package/dist/core/plugin/params/types.d.ts +28 -0
  75. package/dist/core/plugin/params/types.d.ts.map +1 -0
  76. package/dist/core/plugin/params/types.js +12 -0
  77. package/dist/core/plugin/params/types.js.map +1 -0
  78. package/dist/core/plugin/params/values.d.ts +6 -0
  79. package/dist/core/plugin/params/values.d.ts.map +1 -0
  80. package/dist/core/plugin/params/values.js +108 -0
  81. package/dist/core/plugin/params/values.js.map +1 -0
  82. package/dist/core/web/api.d.ts +2 -14
  83. package/dist/core/web/api.d.ts.map +1 -1
  84. package/dist/core/web/api.js +8 -500
  85. package/dist/core/web/api.js.map +1 -1
  86. package/dist/core/web/routes/actions.d.ts +4 -0
  87. package/dist/core/web/routes/actions.d.ts.map +1 -0
  88. package/dist/core/web/routes/actions.js +33 -0
  89. package/dist/core/web/routes/actions.js.map +1 -0
  90. package/dist/core/web/routes/config.d.ts +5 -0
  91. package/dist/core/web/routes/config.d.ts.map +1 -0
  92. package/dist/core/web/routes/config.js +30 -0
  93. package/dist/core/web/routes/config.js.map +1 -0
  94. package/dist/core/web/routes/kv.d.ts +6 -0
  95. package/dist/core/web/routes/kv.d.ts.map +1 -0
  96. package/dist/core/web/routes/kv.js +80 -0
  97. package/dist/core/web/routes/kv.js.map +1 -0
  98. package/dist/core/web/routes/plugins.d.ts +5 -0
  99. package/dist/core/web/routes/plugins.d.ts.map +1 -0
  100. package/dist/core/web/routes/plugins.js +98 -0
  101. package/dist/core/web/routes/plugins.js.map +1 -0
  102. package/dist/core/web/routes/sessions.d.ts +8 -0
  103. package/dist/core/web/routes/sessions.d.ts.map +1 -0
  104. package/dist/core/web/routes/sessions.js +130 -0
  105. package/dist/core/web/routes/sessions.js.map +1 -0
  106. package/dist/core/web/routes/shared.d.ts +18 -0
  107. package/dist/core/web/routes/shared.d.ts.map +1 -0
  108. package/dist/core/web/routes/shared.js +19 -0
  109. package/dist/core/web/routes/shared.js.map +1 -0
  110. package/dist/core/web/routes/status.d.ts +6 -0
  111. package/dist/core/web/routes/status.d.ts.map +1 -0
  112. package/dist/core/web/routes/status.js +132 -0
  113. package/dist/core/web/routes/status.js.map +1 -0
  114. package/dist/core/web/server/auth.d.ts +17 -0
  115. package/dist/core/web/server/auth.d.ts.map +1 -0
  116. package/dist/core/web/server/auth.js +68 -0
  117. package/dist/core/web/server/auth.js.map +1 -0
  118. package/dist/core/web/server/csp.d.ts +11 -0
  119. package/dist/core/web/server/csp.d.ts.map +1 -0
  120. package/dist/core/web/server/csp.js +31 -0
  121. package/dist/core/web/server/csp.js.map +1 -0
  122. package/dist/core/web/server/request.d.ts +6 -0
  123. package/dist/core/web/server/request.d.ts.map +1 -0
  124. package/dist/core/web/server/request.js +33 -0
  125. package/dist/core/web/server/request.js.map +1 -0
  126. package/dist/core/web/server/security.d.ts +4 -0
  127. package/dist/core/web/server/security.d.ts.map +1 -0
  128. package/dist/core/web/server/security.js +12 -0
  129. package/dist/core/web/server/security.js.map +1 -0
  130. package/dist/core/web/server/sse.d.ts +18 -0
  131. package/dist/core/web/server/sse.d.ts.map +1 -0
  132. package/dist/core/web/server/sse.js +49 -0
  133. package/dist/core/web/server/sse.js.map +1 -0
  134. package/dist/core/web/server/static.d.ts +16 -0
  135. package/dist/core/web/server/static.d.ts.map +1 -0
  136. package/dist/core/web/server/static.js +80 -0
  137. package/dist/core/web/server/static.js.map +1 -0
  138. package/dist/core/web/server.d.ts +0 -7
  139. package/dist/core/web/server.d.ts.map +1 -1
  140. package/dist/core/web/server.js +41 -263
  141. package/dist/core/web/server.js.map +1 -1
  142. package/docs/architecture.md +28 -11
  143. package/docs/configuration.md +1 -1
  144. package/docs/migration.md +2 -2
  145. package/docs/plugin-api.md +3 -1
  146. package/docs/plugin-development.md +1 -1
  147. package/package.json +19 -17
  148. package/src/app/cli.ts +47 -0
  149. package/src/app/runtime.ts +522 -0
  150. package/src/app.ts +87 -395
  151. package/src/core/dispatch/command.ts +7 -1
  152. package/src/core/dispatch/router.ts +2 -1
  153. package/src/core/plugin/command-params.ts +8 -713
  154. package/src/core/plugin/install/paths.ts +72 -0
  155. package/src/core/plugin/install/state.ts +196 -0
  156. package/src/core/plugin/install/validate-script.ts +154 -0
  157. package/src/core/plugin/install-dir.ts +19 -427
  158. package/src/core/plugin/installer/checks.ts +137 -0
  159. package/src/core/plugin/installer/support.ts +120 -0
  160. package/src/core/plugin/installer/warnings.ts +52 -0
  161. package/src/core/plugin/installer.ts +52 -301
  162. package/src/core/plugin/params/compile.ts +41 -0
  163. package/src/core/plugin/params/declaration.ts +286 -0
  164. package/src/core/plugin/params/input.ts +254 -0
  165. package/src/core/plugin/params/reply.ts +59 -0
  166. package/src/core/plugin/params/type-level.ts +71 -0
  167. package/src/core/plugin/params/types.ts +49 -0
  168. package/src/core/plugin/params/values.ts +146 -0
  169. package/src/core/web/api.ts +33 -759
  170. package/src/core/web/routes/actions.ts +43 -0
  171. package/src/core/web/routes/config.ts +42 -0
  172. package/src/core/web/routes/kv.ts +122 -0
  173. package/src/core/web/routes/plugins.ts +151 -0
  174. package/src/core/web/routes/sessions.ts +188 -0
  175. package/src/core/web/routes/shared.ts +42 -0
  176. package/src/core/web/routes/status.ts +191 -0
  177. package/src/core/web/server/auth.ts +126 -0
  178. package/src/core/web/server/csp.ts +33 -0
  179. package/src/core/web/server/request.ts +38 -0
  180. package/src/core/web/server/security.ts +14 -0
  181. package/src/core/web/server/sse.ts +74 -0
  182. package/src/core/web/server/static.ts +112 -0
  183. package/src/core/web/server.ts +41 -383
@@ -1,502 +1,10 @@
1
- import { SqlitePluginKV } from '../plugin/kv.js';
2
- import { stripPluginEnvelope } from '../plugin/host.js';
3
- import { SqliteSessionStore, } from '../storage/session.js';
4
- import { logLevels } from '../logging/logger.js';
5
- import { maskConfig } from './config-store.js';
6
- import { HttpError, isRecord, readJsonBody, sendData, withTimeout, } from './http.js';
7
- const MAX_SESSION_MESSAGES = 10_000;
8
- const loginCache = new WeakMap();
9
- function requireRuntime(deps) {
10
- const runtime = deps.getRuntime();
11
- if (!runtime)
12
- throw new HttpError(503, '运行时不可用,请稍后再试');
13
- return runtime;
14
- }
15
- function countKvPlugins(database) {
16
- const row = database.connection
17
- .prepare('SELECT COUNT(DISTINCT plugin_id) AS count FROM plugin_kv')
18
- .get();
19
- return row?.count ?? 0;
20
- }
21
- async function loginInfo(runtime) {
22
- if (!runtime.kernel.isConnected)
23
- return null;
24
- const cached = loginCache.get(runtime);
25
- if (cached && Date.now() - cached.at < 10_000)
26
- return cached.value;
27
- let value = null;
28
- try {
29
- const info = await withTimeout(runtime.api.getLoginInfo(), 2_000);
30
- if (typeof info.user_id === 'number') {
31
- value = {
32
- userId: info.user_id,
33
- nickname: info.nickname || String(info.user_id),
34
- };
35
- }
36
- }
37
- catch {
38
- value = null;
39
- }
40
- loginCache.set(runtime, { at: Date.now(), value });
41
- return value;
42
- }
43
- async function runtimeStatus(runtime) {
44
- const statuses = runtime.kernel.listPlugins();
45
- const sessions = await new SqliteSessionStore(runtime.database).count();
46
- return {
47
- generation: runtime.generation,
48
- state: runtime.kernel.state,
49
- uptimeMs: runtime.kernel.uptimeMs,
50
- connected: runtime.kernel.isConnected,
51
- login: await loginInfo(runtime),
52
- counts: {
53
- plugins: statuses.length,
54
- loadedPlugins: statuses.filter((entry) => entry.loaded).length,
55
- enabledPlugins: statuses.filter((entry) => entry.enabled).length,
56
- sessions,
57
- kvPlugins: countKvPlugins(runtime.database),
58
- },
59
- };
60
- }
61
- function pathsInfo(deps) {
62
- return {
63
- config: deps.paths.configPath,
64
- data: deps.paths.dataDir,
65
- plugins: deps.paths.pluginDir,
66
- };
67
- }
68
- function assertLevel(value) {
69
- if (!logLevels.includes(value)) {
70
- throw new HttpError(400, `invalid log level: ${value}`);
71
- }
72
- return value;
73
- }
74
- const FEED_TYPES = [
75
- 'message',
76
- 'notice',
77
- 'request',
78
- 'meta',
79
- 'other',
80
- ];
81
- function assertFeedType(value) {
82
- if (!FEED_TYPES.includes(value)) {
83
- throw new HttpError(400, `invalid event type: ${value}`);
84
- }
85
- return value;
86
- }
87
- function clampInt(value, fallback, min, max) {
88
- if (value === null)
89
- return fallback;
90
- const parsed = Number.parseInt(value, 10);
91
- if (!Number.isFinite(parsed))
92
- return fallback;
93
- return Math.min(Math.max(parsed, min), max);
94
- }
95
- function asRecord(value) {
96
- return isRecord(value) ? value : {};
97
- }
98
- function parseSessionMessages(value) {
99
- if (!Array.isArray(value)) {
100
- throw new HttpError(400, 'messages must be an array');
101
- }
102
- if (value.length > MAX_SESSION_MESSAGES) {
103
- throw new HttpError(400, 'messages too long');
104
- }
105
- return value.map((item, index) => {
106
- if (!isRecord(item)) {
107
- throw new HttpError(400, `invalid message at index ${index}`);
108
- }
109
- const role = item['role'];
110
- const content = item['content'];
111
- const at = item['at'];
112
- if (role !== 'system' && role !== 'user' && role !== 'assistant') {
113
- throw new HttpError(400, `invalid message role at index ${index}`);
114
- }
115
- if (typeof content !== 'string') {
116
- throw new HttpError(400, `invalid message content at index ${index}`);
117
- }
118
- if (typeof at !== 'number' || !Number.isFinite(at)) {
119
- throw new HttpError(400, `invalid message time at index ${index}`);
120
- }
121
- return { role: role, content, at };
122
- });
123
- }
124
- function clearableString(value, fallback) {
125
- if (value === null)
126
- return undefined;
127
- if (value === undefined)
128
- return fallback;
129
- if (typeof value === 'string' && value.trim().length > 0) {
130
- return value;
131
- }
132
- return undefined;
133
- }
134
- async function handleStatus(ctx) {
135
- const { deps, res } = ctx;
136
- const runtime = deps.getRuntime();
137
- const webui = {
138
- listening: deps.getListening(),
139
- requiresProcessRestart: deps.getRequiresProcessRestart(),
140
- };
141
- if (!runtime) {
142
- sendData(res, 200, {
143
- restarting: deps.isRestarting(),
144
- startupError: deps.getStartupError(),
145
- runtime: null,
146
- webui,
147
- version: deps.version,
148
- paths: pathsInfo(deps),
149
- });
150
- return;
151
- }
152
- sendData(res, 200, {
153
- restarting: deps.isRestarting(),
154
- startupError: deps.getStartupError(),
155
- runtime: await runtimeStatus(runtime),
156
- webui,
157
- version: deps.version,
158
- paths: pathsInfo(deps),
159
- });
160
- }
161
- async function handleLogsList(ctx) {
162
- const level = ctx.search.get('level');
163
- if (level)
164
- assertLevel(level);
165
- const scope = ctx.search.get('scope') ?? undefined;
166
- const query = ctx.search.get('query') ?? undefined;
167
- const limit = clampInt(ctx.search.get('limit'), 200, 1, 1_000);
168
- sendData(ctx.res, 200, ctx.deps.logs.list({
169
- ...(level ? { level: assertLevel(level) } : {}),
170
- scope,
171
- query,
172
- limit,
173
- }));
174
- }
175
- async function handleEventsList(ctx) {
176
- const type = ctx.search.get('type');
177
- if (type)
178
- assertFeedType(type);
179
- const limit = clampInt(ctx.search.get('limit'), 100, 1, 500);
180
- sendData(ctx.res, 200, ctx.deps.events.list({
181
- ...(type ? { type: assertFeedType(type) } : {}),
182
- limit,
183
- }));
184
- }
185
- async function handleSessionList(ctx) {
186
- const runtime = requireRuntime(ctx.deps);
187
- const store = new SqliteSessionStore(runtime.database);
188
- const limit = clampInt(ctx.search.get('limit'), 50, 1, 200);
189
- const offset = clampInt(ctx.search.get('offset'), 0, 0, 10_000_000);
190
- const query = ctx.search.get('query')?.slice(0, 200) || undefined;
191
- const items = await store.list({ limit, offset, query });
192
- const total = await store.count(query);
193
- sendData(ctx.res, 200, { items, total, limit, offset });
194
- }
195
- function sessionIdOf(ctx) {
196
- const id = ctx.segments[2];
197
- if (!id)
198
- throw new HttpError(404, 'session not found');
199
- return id;
200
- }
201
- function requireSessionStore(ctx) {
202
- const runtime = requireRuntime(ctx.deps);
203
- return new SqliteSessionStore(runtime.database);
204
- }
205
- async function sessionDetail(ctx) {
206
- const id = sessionIdOf(ctx);
207
- const state = await requireSessionStore(ctx).get(id);
208
- if (!state)
209
- throw new HttpError(404, 'session not found');
210
- return state;
211
- }
212
- async function handleSessionGet(ctx) {
213
- sendData(ctx.res, 200, await sessionDetail(ctx));
214
- }
215
- async function handleSessionPut(ctx) {
216
- const body = asRecord(await readJsonBody(ctx.req));
217
- await sessionDetail(ctx);
218
- const messages = body['messages'] === undefined
219
- ? undefined
220
- : parseSessionMessages(body['messages']);
221
- const baseline = await sessionDetail(ctx);
222
- const state = {
223
- sessionId: sessionIdOf(ctx),
224
- provider: clearableString(body['provider'], baseline.provider),
225
- model: clearableString(body['model'], baseline.model),
226
- persona: clearableString(body['persona'], baseline.persona),
227
- messages: messages ?? baseline.messages,
228
- updatedAt: Date.now(),
229
- };
230
- await requireSessionStore(ctx).save(state);
231
- sendData(ctx.res, 200, state);
232
- }
233
- async function handleSessionMessages(ctx) {
234
- const body = asRecord(await readJsonBody(ctx.req));
235
- const role = body['role'];
236
- const content = body['content'];
237
- if (role !== 'system' && role !== 'user' && role !== 'assistant') {
238
- throw new HttpError(400, 'invalid message role');
239
- }
240
- if (typeof content !== 'string' ||
241
- content.length === 0 ||
242
- content.length > 100_000) {
243
- throw new HttpError(400, 'invalid message content');
244
- }
245
- const state = await sessionDetail(ctx);
246
- const message = { role: role, content, at: Date.now() };
247
- const next = {
248
- ...state,
249
- messages: [...state.messages, message],
250
- updatedAt: Date.now(),
251
- };
252
- await requireSessionStore(ctx).save(next);
253
- sendData(ctx.res, 200, next);
254
- }
255
- async function handleSessionSend(ctx) {
256
- const body = asRecord(await readJsonBody(ctx.req));
257
- const id = sessionIdOf(ctx);
258
- const message = body['message'];
259
- const autoEscape = body['autoEscape'];
260
- if (typeof message !== 'string' ||
261
- message.length === 0 ||
262
- message.length > 20_000) {
263
- throw new HttpError(400, 'invalid message');
264
- }
265
- const runtime = requireRuntime(ctx.deps);
266
- await sessionDetail(ctx);
267
- const result = await runtime.api.send(id, message, typeof autoEscape === 'boolean' ? { autoEscape } : undefined);
268
- sendData(ctx.res, 200, { result: result ?? null });
269
- }
270
- async function handleSessionDelete(ctx) {
271
- await requireSessionStore(ctx).clear(sessionIdOf(ctx));
272
- sendData(ctx.res, 200, { cleared: true });
273
- }
274
- async function handlePluginsList(ctx) {
275
- const runtime = requireRuntime(ctx.deps);
276
- const statuses = new Map(runtime.kernel.listPlugins().map((entry) => [entry.id, entry]));
277
- const plugins = runtime.plugins.map((definition) => {
278
- const id = definition.manifest.id;
279
- const status = statuses.get(id);
280
- const envelope = asRecord(runtime.config.plugins[id]);
281
- return {
282
- id,
283
- version: definition.manifest.version,
284
- description: definition.manifest.description,
285
- dependencies: definition.manifest.dependencies ?? [],
286
- defaultEnabled: definition.manifest.defaultEnabled ?? false,
287
- enabled: status?.enabled ?? false,
288
- loaded: status?.loaded ?? false,
289
- config: envelope,
290
- options: stripPluginEnvelope(envelope),
291
- };
292
- });
293
- const installed = runtime.installer.enabled
294
- ? await runtime.installer.list()
295
- : [];
296
- sendData(ctx.res, 200, {
297
- plugins,
298
- installed,
299
- installerEnabled: runtime.installer.enabled,
300
- configHash: (await ctx.deps.readConfig()).hash,
301
- });
302
- }
303
- const ENVELOPE_KEYS = new Set(['enabled', 'private', 'groups']);
304
- async function handlePluginConfigPut(ctx) {
305
- const body = asRecord(await readJsonBody(ctx.req));
306
- const id = ctx.segments[2];
307
- const document = await ctx.deps.readConfig();
308
- if (id === undefined)
309
- throw new HttpError(404, 'unknown plugin');
310
- if (!isRecord(document.config.plugins[id])) {
311
- throw new HttpError(404, `unknown plugin: ${id}`);
312
- }
313
- const existing = asRecord(document.config.plugins[id]);
314
- const next = { ...existing };
315
- if (typeof body['enabled'] === 'boolean') {
316
- next['enabled'] = body['enabled'];
317
- }
318
- if (typeof body['private'] === 'boolean') {
319
- next['private'] = body['private'];
320
- }
321
- if (body['groups'] !== undefined)
322
- next['groups'] = body['groups'];
323
- if (body['options'] !== undefined) {
324
- if (!isRecord(body['options'])) {
325
- throw new HttpError(400, 'options must be an object');
326
- }
327
- for (const key of Object.keys(next)) {
328
- if (!ENVELOPE_KEYS.has(key))
329
- delete next[key];
330
- }
331
- for (const [key, value] of Object.entries(body['options'])) {
332
- if (!ENVELOPE_KEYS.has(key))
333
- next[key] = value;
334
- }
335
- }
336
- const config = {
337
- ...document.config,
338
- plugins: {
339
- ...document.config.plugins,
340
- [id]: next,
341
- },
342
- };
343
- const baseHash = body['baseHash'];
344
- sendData(ctx.res, 200, await ctx.deps.applyConfig(config, typeof baseHash === 'string' ? baseHash : undefined));
345
- }
346
- async function handleInstallerAction(ctx) {
347
- const runtime = requireRuntime(ctx.deps);
348
- if (!runtime.installer.enabled) {
349
- throw new HttpError(403, '插件安装器未启用');
350
- }
351
- const body = asRecord(await readJsonBody(ctx.req));
352
- const target = typeof body['target'] === 'string' ? body['target'] : '';
353
- const spec = typeof body['spec'] === 'string' ? body['spec'] : '';
354
- if (ctx.pathname.endsWith('/install')) {
355
- if (!spec)
356
- throw new HttpError(400, 'spec is required');
357
- sendData(ctx.res, 200, await ctx.deps.runExclusive(() => runtime.installer.install(spec)));
358
- return;
359
- }
360
- if (ctx.pathname.endsWith('/update')) {
361
- sendData(ctx.res, 200, await ctx.deps.runExclusive(() => runtime.installer.update(target || undefined)));
362
- return;
363
- }
364
- sendData(ctx.res, 200, await ctx.deps.runExclusive(async () => runtime.installer.remove(target, undefined, {
365
- force: body['force'] === true,
366
- })));
367
- }
368
- async function handleConfigGet(ctx) {
369
- const document = await ctx.deps.readConfig();
370
- const masked = maskConfig(document.config);
371
- sendData(ctx.res, 200, {
372
- config: masked.config,
373
- meta: {
374
- path: document.path,
375
- hash: document.hash,
376
- accessTokenSet: masked.accessTokenSet,
377
- webuiPasswordSet: masked.webuiPasswordSet,
378
- },
379
- });
380
- }
381
- async function handleConfigValidate(ctx) {
382
- const body = asRecord(await readJsonBody(ctx.req));
383
- const result = await ctx.deps.validateConfig(body['config']);
384
- sendData(ctx.res, 200, {
385
- ok: result.ok,
386
- issues: result.issues,
387
- });
388
- }
389
- async function handleConfigPut(ctx) {
390
- const body = asRecord(await readJsonBody(ctx.req));
391
- const baseHash = body['baseHash'];
392
- sendData(ctx.res, 200, await ctx.deps.applyConfig(body['config'], typeof baseHash === 'string' ? baseHash : undefined));
393
- }
394
- function assertPluginId(value) {
395
- if (!/^\w[\w.-]*$/.test(value)) {
396
- throw new HttpError(400, `invalid plugin id: ${value}`);
397
- }
398
- return value;
399
- }
400
- function assertKey(value) {
401
- if (value.length === 0 || value.length > 512) {
402
- throw new HttpError(400, 'invalid key length');
403
- }
404
- return value;
405
- }
406
- function parseKvValue(value) {
407
- try {
408
- return JSON.parse(value);
409
- }
410
- catch {
411
- return value;
412
- }
413
- }
414
- async function handleKvPlugins(ctx) {
415
- const runtime = requireRuntime(ctx.deps);
416
- const rows = runtime.database.connection
417
- .prepare('SELECT plugin_id, COUNT(*) AS count FROM plugin_kv GROUP BY plugin_id ORDER BY plugin_id')
418
- .all();
419
- sendData(ctx.res, 200, rows.map((row) => ({ pluginId: row.plugin_id, count: row.count })));
420
- }
421
- async function handleKvList(ctx) {
422
- const runtime = requireRuntime(ctx.deps);
423
- const pluginId = assertPluginId(ctx.search.get('pluginId') ?? '');
424
- const prefix = ctx.search.get('prefix') ?? '';
425
- const limit = clampInt(ctx.search.get('limit'), 100, 1, 500);
426
- const offset = clampInt(ctx.search.get('offset'), 0, 0, 10_000_000);
427
- const pattern = prefix === ''
428
- ? '%'
429
- : `${prefix.replace(/[%_]/g, (match) => `\\${match}`)}%`;
430
- const rows = runtime.database.connection
431
- .prepare(`SELECT key, value, updated_at FROM plugin_kv
432
- WHERE plugin_id = ? AND key LIKE ? ESCAPE '\\'
433
- ORDER BY key
434
- LIMIT ? OFFSET ?`)
435
- .all(pluginId, pattern, limit, offset);
436
- const totalRow = runtime.database.connection
437
- .prepare(`SELECT COUNT(*) AS count FROM plugin_kv
438
- WHERE plugin_id = ? AND key LIKE ? ESCAPE '\\'`)
439
- .get(pluginId, pattern);
440
- sendData(ctx.res, 200, {
441
- items: rows.map((row) => ({
442
- pluginId,
443
- key: row.key,
444
- value: parseKvValue(row.value),
445
- updatedAt: row.updated_at,
446
- })),
447
- total: totalRow?.count ?? 0,
448
- limit,
449
- offset,
450
- });
451
- }
452
- async function handleKvPut(ctx) {
453
- const body = asRecord(await readJsonBody(ctx.req));
454
- const runtime = requireRuntime(ctx.deps);
455
- const pluginId = assertPluginId(typeof body['pluginId'] === 'string' ? body['pluginId'] : '');
456
- const key = assertKey(typeof body['key'] === 'string' ? body['key'] : '');
457
- if (typeof body['value'] === 'function') {
458
- throw new HttpError(400, 'invalid value');
459
- }
460
- await new SqlitePluginKV(runtime.database, pluginId).set(key, body['value']);
461
- sendData(ctx.res, 200, { ok: true });
462
- }
463
- async function handleKvDelete(ctx) {
464
- const runtime = requireRuntime(ctx.deps);
465
- const pluginId = assertPluginId(ctx.search.get('pluginId') ?? '');
466
- const key = assertKey(ctx.search.get('key') ?? '');
467
- const deleted = await new SqlitePluginKV(runtime.database, pluginId).delete(key);
468
- sendData(ctx.res, 200, { ok: deleted });
469
- }
470
- async function handleActions(ctx) {
471
- const body = asRecord(await readJsonBody(ctx.req));
472
- const action = body['action'];
473
- if (typeof action !== 'string' ||
474
- action.length === 0 ||
475
- action.length > 128) {
476
- throw new HttpError(400, 'action is required');
477
- }
478
- const runtime = requireRuntime(ctx.deps);
479
- const params = body['params'] ?? undefined;
480
- const result = await runtime.api.call(action, params);
481
- sendData(ctx.res, 200, { result: result ?? null });
482
- }
483
- async function handleRuntimeCommand(ctx) {
484
- if (ctx.pathname.endsWith('/restart')) {
485
- sendData(ctx.res, 200, {
486
- ok: await ctx.deps.restart(),
487
- });
488
- return;
489
- }
490
- if (ctx.pathname.endsWith('/pause')) {
491
- ctx.deps.pause();
492
- sendData(ctx.res, 200, { ok: true });
493
- return;
494
- }
495
- if (ctx.pathname.endsWith('/resume')) {
496
- ctx.deps.resume();
497
- sendData(ctx.res, 200, { ok: true });
498
- }
499
- }
1
+ import { HttpError } from './http.js';
2
+ import { handleStatus, handleCommands, handleLogsList, handleEventsList, } from './routes/status.js';
3
+ import { handleSessionDelete, handleSessionGet, handleSessionList, handleSessionMessages, handleSessionPut, handleSessionSend, } from './routes/sessions.js';
4
+ import { handleInstallerAction, handlePluginConfigPut, handlePluginsList, } from './routes/plugins.js';
5
+ import { handleConfigGet, handleConfigPut, handleConfigValidate, } from './routes/config.js';
6
+ import { handleKvDelete, handleKvList, handleKvPlugins, handleKvPut, } from './routes/kv.js';
7
+ import { handleActions, handleRuntimeCommand } from './routes/actions.js';
500
8
  export async function handleApiRoute(ctx) {
501
9
  const { method, pathname } = ctx;
502
10
  if (method === 'GET' && pathname === '/api/status') {
@@ -504,7 +12,7 @@ export async function handleApiRoute(ctx) {
504
12
  return true;
505
13
  }
506
14
  if (method === 'GET' && pathname === '/api/commands') {
507
- sendData(ctx.res, 200, requireRuntime(ctx.deps).kernel.listCommands());
15
+ await handleCommands(ctx);
508
16
  return true;
509
17
  }
510
18
  if (method === 'POST' &&
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/web/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/web/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ApiContext } from './shared.js';
2
+ export declare function handleActions(ctx: ApiContext): Promise<void>;
3
+ export declare function handleRuntimeCommand(ctx: ApiContext): Promise<void>;
4
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/core/web/routes/actions.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvE,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBlE;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzE"}
@@ -0,0 +1,33 @@
1
+ import { HttpError, readJsonBody, sendData } from '../http.js';
2
+ import { asRecord, requireRuntime } from './shared.js';
3
+ export async function handleActions(ctx) {
4
+ const body = asRecord(await readJsonBody(ctx.req));
5
+ const action = body['action'];
6
+ if (typeof action !== 'string' ||
7
+ action.length === 0 ||
8
+ action.length > 128) {
9
+ throw new HttpError(400, 'action is required');
10
+ }
11
+ const runtime = requireRuntime(ctx.deps);
12
+ const params = body['params'] ?? undefined;
13
+ const result = await runtime.api.call(action, params);
14
+ sendData(ctx.res, 200, { result: result ?? null });
15
+ }
16
+ export async function handleRuntimeCommand(ctx) {
17
+ if (ctx.pathname.endsWith('/restart')) {
18
+ sendData(ctx.res, 200, {
19
+ ok: await ctx.deps.restart(),
20
+ });
21
+ return;
22
+ }
23
+ if (ctx.pathname.endsWith('/pause')) {
24
+ ctx.deps.pause();
25
+ sendData(ctx.res, 200, { ok: true });
26
+ return;
27
+ }
28
+ if (ctx.pathname.endsWith('/resume')) {
29
+ ctx.deps.resume();
30
+ sendData(ctx.res, 200, { ok: true });
31
+ }
32
+ }
33
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../src/core/web/routes/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE7B,IACI,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,MAAM,CAAC,MAAM,GAAG,GAAG,EACrB,CAAC;QACC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAA;IAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAe,EAAE,MAAe,CAAC,CAAA;IAEvE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAe;IACtD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;YACnB,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;SAC/B,CAAC,CAAA;QAEF,OAAM;IACV,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QAChB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAEpC,OAAM;IACV,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;QACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type ApiContext } from './shared.js';
2
+ export declare function handleConfigGet(ctx: ApiContext): Promise<void>;
3
+ export declare function handleConfigValidate(ctx: ApiContext): Promise<void>;
4
+ export declare function handleConfigPut(ctx: ApiContext): Promise<void>;
5
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/core/web/routes/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvD,wBAAsB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAapE;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE"}
@@ -0,0 +1,30 @@
1
+ import { maskConfig } from '../config-store.js';
2
+ import { readJsonBody, sendData } from '../http.js';
3
+ import { asRecord } from './shared.js';
4
+ export async function handleConfigGet(ctx) {
5
+ const document = await ctx.deps.readConfig();
6
+ const masked = maskConfig(document.config);
7
+ sendData(ctx.res, 200, {
8
+ config: masked.config,
9
+ meta: {
10
+ path: document.path,
11
+ hash: document.hash,
12
+ accessTokenSet: masked.accessTokenSet,
13
+ webuiPasswordSet: masked.webuiPasswordSet,
14
+ },
15
+ });
16
+ }
17
+ export async function handleConfigValidate(ctx) {
18
+ const body = asRecord(await readJsonBody(ctx.req));
19
+ const result = await ctx.deps.validateConfig(body['config']);
20
+ sendData(ctx.res, 200, {
21
+ ok: result.ok,
22
+ issues: result.issues,
23
+ });
24
+ }
25
+ export async function handleConfigPut(ctx) {
26
+ const body = asRecord(await readJsonBody(ctx.req));
27
+ const baseHash = body['baseHash'];
28
+ sendData(ctx.res, 200, await ctx.deps.applyConfig(body['config'], typeof baseHash === 'string' ? baseHash : undefined));
29
+ }
30
+ //# sourceMappingURL=config.js.map