@wrongstack/webui 0.7.2 → 0.7.4
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/assets/index-BquNRxJp.js +94 -0
- package/dist/index.html +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/server/entry.js +77 -21
- package/dist/server/entry.js.map +1 -1
- package/dist/server/index.js +77 -21
- package/dist/server/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/assets/index-B9lEIHt9.js +0 -94
package/dist/server/index.js
CHANGED
|
@@ -6,18 +6,18 @@ import {
|
|
|
6
6
|
Agent,
|
|
7
7
|
AutoCompactionMiddleware,
|
|
8
8
|
Context,
|
|
9
|
-
DefaultMemoryStore,
|
|
10
|
-
DefaultModeStore,
|
|
9
|
+
DefaultMemoryStore as DefaultMemoryStore2,
|
|
10
|
+
DefaultModeStore as DefaultModeStore2,
|
|
11
11
|
DefaultModelsRegistry,
|
|
12
|
-
DefaultSessionStore,
|
|
13
|
-
DefaultSkillLoader,
|
|
14
|
-
DefaultSystemPromptBuilder,
|
|
15
|
-
DefaultTokenCounter,
|
|
12
|
+
DefaultSessionStore as DefaultSessionStore2,
|
|
13
|
+
DefaultSkillLoader as DefaultSkillLoader2,
|
|
14
|
+
DefaultSystemPromptBuilder as DefaultSystemPromptBuilder2,
|
|
15
|
+
DefaultTokenCounter as DefaultTokenCounter2,
|
|
16
16
|
estimateRequestTokens,
|
|
17
17
|
EventBus,
|
|
18
|
-
HybridCompactor,
|
|
18
|
+
HybridCompactor as HybridCompactor2,
|
|
19
19
|
ProviderRegistry,
|
|
20
|
-
TOKENS,
|
|
20
|
+
TOKENS as TOKENS2,
|
|
21
21
|
ToolRegistry,
|
|
22
22
|
atomicWrite,
|
|
23
23
|
createDefaultPipelines,
|
|
@@ -33,7 +33,63 @@ import { buildProviderFactoriesFromRegistry, makeProviderFromConfig } from "@wro
|
|
|
33
33
|
import { builtinToolsPack, forgetTool, rememberTool } from "@wrongstack/tools";
|
|
34
34
|
import { WebSocket, WebSocketServer } from "ws";
|
|
35
35
|
import { randomBytes } from "crypto";
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
// ../runtime/src/container.ts
|
|
38
|
+
import {
|
|
39
|
+
Container,
|
|
40
|
+
DefaultConfigStore,
|
|
41
|
+
DefaultErrorHandler,
|
|
42
|
+
DefaultMemoryStore,
|
|
43
|
+
DefaultModeStore,
|
|
44
|
+
DefaultPermissionPolicy,
|
|
45
|
+
DefaultRetryPolicy,
|
|
46
|
+
DefaultSecretScrubber,
|
|
47
|
+
DefaultSessionStore,
|
|
48
|
+
DefaultSkillLoader,
|
|
49
|
+
DefaultSystemPromptBuilder,
|
|
50
|
+
DefaultTokenCounter,
|
|
51
|
+
HybridCompactor,
|
|
52
|
+
TOKENS
|
|
53
|
+
} from "@wrongstack/core";
|
|
54
|
+
function createDefaultContainer(opts) {
|
|
55
|
+
const { config, wpaths, logger, modelsRegistry } = opts;
|
|
56
|
+
const container = new Container();
|
|
57
|
+
const configStore = new DefaultConfigStore(config);
|
|
58
|
+
container.bind(TOKENS.ConfigStore, () => configStore);
|
|
59
|
+
container.bind(TOKENS.Logger, () => logger);
|
|
60
|
+
container.bind(TOKENS.SecretScrubber, () => new DefaultSecretScrubber());
|
|
61
|
+
container.bind(TOKENS.RetryPolicy, () => new DefaultRetryPolicy());
|
|
62
|
+
container.bind(TOKENS.ErrorHandler, () => new DefaultErrorHandler());
|
|
63
|
+
container.bind(TOKENS.ModelsRegistry, () => modelsRegistry);
|
|
64
|
+
container.bind(TOKENS.TokenCounter, () => new DefaultTokenCounter({ registry: modelsRegistry, providerId: config.provider }));
|
|
65
|
+
const modeStore = new DefaultModeStore({ directory: wpaths.configDir });
|
|
66
|
+
container.bind(TOKENS.ModeStore, () => modeStore);
|
|
67
|
+
container.bind(TOKENS.SessionStore, () => new DefaultSessionStore({ dir: wpaths.projectSessions }));
|
|
68
|
+
const memoryStore = new DefaultMemoryStore({ paths: wpaths });
|
|
69
|
+
container.bind(TOKENS.MemoryStore, () => memoryStore);
|
|
70
|
+
const skillLoader = new DefaultSkillLoader({ paths: wpaths, bundledDir: opts.bundledSkillsDir });
|
|
71
|
+
container.bind(TOKENS.SkillLoader, () => skillLoader);
|
|
72
|
+
if (opts.systemPrompt) {
|
|
73
|
+
container.bind(TOKENS.SystemPromptBuilder, () => new DefaultSystemPromptBuilder(opts.systemPrompt));
|
|
74
|
+
}
|
|
75
|
+
container.bind(
|
|
76
|
+
TOKENS.PermissionPolicy,
|
|
77
|
+
() => new DefaultPermissionPolicy({
|
|
78
|
+
trustFile: wpaths.projectTrust,
|
|
79
|
+
yolo: opts.permission?.yolo ?? false,
|
|
80
|
+
forceAllYolo: opts.permission?.forceAllYolo ?? false,
|
|
81
|
+
promptDelegate: opts.permission?.promptDelegate
|
|
82
|
+
})
|
|
83
|
+
);
|
|
84
|
+
container.bind(
|
|
85
|
+
TOKENS.Compactor,
|
|
86
|
+
() => new HybridCompactor({
|
|
87
|
+
preserveK: opts.compactor?.preserveK ?? 20,
|
|
88
|
+
eliseThreshold: opts.compactor?.eliseThreshold ?? 0.7
|
|
89
|
+
})
|
|
90
|
+
);
|
|
91
|
+
return container;
|
|
92
|
+
}
|
|
37
93
|
|
|
38
94
|
// src/server/boot.ts
|
|
39
95
|
import * as fs from "fs/promises";
|
|
@@ -99,7 +155,7 @@ async function startWebUI(opts = {}) {
|
|
|
99
155
|
ttlSeconds: 24 * 3600
|
|
100
156
|
});
|
|
101
157
|
const container = createDefaultContainer({ config, wpaths, logger, modelsRegistry });
|
|
102
|
-
const configStore = container.resolve(
|
|
158
|
+
const configStore = container.resolve(TOKENS2.ConfigStore);
|
|
103
159
|
const providerRegistry = new ProviderRegistry();
|
|
104
160
|
try {
|
|
105
161
|
const factories = await buildProviderFactoriesFromRegistry({
|
|
@@ -113,7 +169,7 @@ async function startWebUI(opts = {}) {
|
|
|
113
169
|
}
|
|
114
170
|
const toolRegistry = new ToolRegistry();
|
|
115
171
|
toolRegistry.registerAllOrThrow([...builtinToolsPack.tools ?? []], builtinToolsPack.name);
|
|
116
|
-
const memoryStore = new
|
|
172
|
+
const memoryStore = new DefaultMemoryStore2({ paths: wpaths });
|
|
117
173
|
if (config.features.memory) {
|
|
118
174
|
toolRegistry.register(rememberTool(memoryStore));
|
|
119
175
|
toolRegistry.register(forgetTool(memoryStore));
|
|
@@ -121,7 +177,7 @@ async function startWebUI(opts = {}) {
|
|
|
121
177
|
console.log("[WebUI] Tool registry loaded:", toolRegistry.list().length, "tools");
|
|
122
178
|
const events = new EventBus();
|
|
123
179
|
events.setLogger(logger);
|
|
124
|
-
const sessionStore = new
|
|
180
|
+
const sessionStore = new DefaultSessionStore2({ dir: wpaths.projectSessions });
|
|
125
181
|
let session = await sessionStore.create({
|
|
126
182
|
id: "",
|
|
127
183
|
title: "",
|
|
@@ -130,11 +186,11 @@ async function startWebUI(opts = {}) {
|
|
|
130
186
|
});
|
|
131
187
|
let sessionStartedAt = Date.now();
|
|
132
188
|
console.log("[WebUI] Session created:", session.id);
|
|
133
|
-
const tokenCounter = new
|
|
189
|
+
const tokenCounter = new DefaultTokenCounter2({
|
|
134
190
|
registry: modelsRegistry,
|
|
135
191
|
providerId: config.provider
|
|
136
192
|
});
|
|
137
|
-
const modeStore = new
|
|
193
|
+
const modeStore = new DefaultModeStore2({ directory: wpaths.configDir });
|
|
138
194
|
const activeMode = await modeStore.getActiveMode();
|
|
139
195
|
let modeId = activeMode?.id ?? "default";
|
|
140
196
|
const modePrompt = activeMode?.prompt ?? "";
|
|
@@ -145,8 +201,8 @@ async function startWebUI(opts = {}) {
|
|
|
145
201
|
supportsVision: resolvedModel.capabilities.vision,
|
|
146
202
|
supportsReasoning: resolvedModel.capabilities.reasoning
|
|
147
203
|
} : void 0;
|
|
148
|
-
const skillLoader = config.features.skills ? new
|
|
149
|
-
const systemPromptBuilder = new
|
|
204
|
+
const skillLoader = config.features.skills ? new DefaultSkillLoader2({ paths: wpaths }) : void 0;
|
|
205
|
+
const systemPromptBuilder = new DefaultSystemPromptBuilder2({
|
|
150
206
|
memoryStore,
|
|
151
207
|
skillLoader,
|
|
152
208
|
modeStore,
|
|
@@ -216,7 +272,7 @@ async function startWebUI(opts = {}) {
|
|
|
216
272
|
context.meta["contextWindowMode"] = initialContextPolicy.id;
|
|
217
273
|
context.meta["contextWindowPolicy"] = initialContextPolicy;
|
|
218
274
|
const pipelines = createDefaultPipelines();
|
|
219
|
-
const compactor = new
|
|
275
|
+
const compactor = new HybridCompactor2({
|
|
220
276
|
preserveK: config.context?.preserveK ?? 20,
|
|
221
277
|
eliseThreshold: config.context?.eliseThreshold ?? 0.7
|
|
222
278
|
});
|
|
@@ -253,10 +309,10 @@ async function startWebUI(opts = {}) {
|
|
|
253
309
|
}
|
|
254
310
|
autoCompactor.setMaxContext(newMaxContext);
|
|
255
311
|
}
|
|
256
|
-
const secretScrubber = container.resolve(
|
|
257
|
-
const renderer = container.has(
|
|
312
|
+
const secretScrubber = container.resolve(TOKENS2.SecretScrubber);
|
|
313
|
+
const renderer = container.has(TOKENS2.Renderer) ? container.resolve(TOKENS2.Renderer) : void 0;
|
|
258
314
|
const toolExecutor = new ToolExecutor(toolRegistry, {
|
|
259
|
-
permissionPolicy: container.resolve(
|
|
315
|
+
permissionPolicy: container.resolve(TOKENS2.PermissionPolicy),
|
|
260
316
|
secretScrubber,
|
|
261
317
|
renderer,
|
|
262
318
|
events,
|
|
@@ -1235,7 +1291,7 @@ async function startWebUI(opts = {}) {
|
|
|
1235
1291
|
}
|
|
1236
1292
|
modeId = id;
|
|
1237
1293
|
const modePrompt2 = id === "default" ? "" : (await modeStore.getMode(id))?.prompt ?? "";
|
|
1238
|
-
const freshBuilder = new
|
|
1294
|
+
const freshBuilder = new DefaultSystemPromptBuilder2({
|
|
1239
1295
|
memoryStore,
|
|
1240
1296
|
skillLoader,
|
|
1241
1297
|
modeStore,
|