@wrongstack/webui-server 0.293.0 → 0.295.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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19499 -14317
- package/dist/index.js.map +4 -4
- package/dist/protocol/client-conversation.d.ts +3 -0
- package/dist/protocol/client-conversation.d.ts.map +1 -0
- package/dist/protocol/client-integrations.d.ts +3 -0
- package/dist/protocol/client-integrations.d.ts.map +1 -0
- package/dist/protocol/client-operations.d.ts +3 -0
- package/dist/protocol/client-operations.d.ts.map +1 -0
- package/dist/protocol/client-workspace.d.ts +3 -0
- package/dist/protocol/client-workspace.d.ts.map +1 -0
- package/dist/protocol/connection-fsm.d.ts +39 -0
- package/dist/protocol/connection-fsm.d.ts.map +1 -0
- package/dist/protocol/decoder.d.ts +6 -0
- package/dist/protocol/decoder.d.ts.map +1 -0
- package/dist/protocol/index.d.ts +8 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +874 -0
- package/dist/protocol/index.js.map +7 -0
- package/dist/protocol/projections.d.ts +113 -0
- package/dist/protocol/projections.d.ts.map +1 -0
- package/dist/protocol/registry.d.ts +6 -0
- package/dist/protocol/registry.d.ts.map +1 -0
- package/dist/protocol/replay-payload.d.ts +41 -0
- package/dist/protocol/replay-payload.d.ts.map +1 -0
- package/dist/protocol/server-conversation.d.ts +3 -0
- package/dist/protocol/server-conversation.d.ts.map +1 -0
- package/dist/protocol/server-integrations.d.ts +3 -0
- package/dist/protocol/server-integrations.d.ts.map +1 -0
- package/dist/protocol/server-operations.d.ts +4 -0
- package/dist/protocol/server-operations.d.ts.map +1 -0
- package/dist/protocol/server-workspace.d.ts +3 -0
- package/dist/protocol/server-workspace.d.ts.map +1 -0
- package/dist/protocol/types.d.ts +24 -0
- package/dist/protocol/types.d.ts.map +1 -0
- package/dist/protocol/version.d.ts +20 -0
- package/dist/protocol/version.d.ts.map +1 -0
- package/dist/server/agent-roster-handlers.d.ts +31 -0
- package/dist/server/agent-roster-handlers.d.ts.map +1 -0
- package/dist/server/agent-roster-routes.d.ts +8 -0
- package/dist/server/agent-roster-routes.d.ts.map +1 -0
- package/dist/server/autonomy-routes.d.ts +9 -0
- package/dist/server/autonomy-routes.d.ts.map +1 -0
- package/dist/server/backend-services.d.ts +19 -6
- package/dist/server/backend-services.d.ts.map +1 -1
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.d.ts.map +1 -1
- package/dist/server/brain-handlers.d.ts +47 -0
- package/dist/server/brain-handlers.d.ts.map +1 -0
- package/dist/server/chronicle-routes.d.ts +14 -0
- package/dist/server/chronicle-routes.d.ts.map +1 -0
- package/dist/server/client-presence.d.ts +26 -0
- package/dist/server/client-presence.d.ts.map +1 -0
- package/dist/server/client-transport-routes.d.ts +8 -0
- package/dist/server/client-transport-routes.d.ts.map +1 -0
- package/dist/server/codebase-indexing.d.ts +3 -1
- package/dist/server/codebase-indexing.d.ts.map +1 -1
- package/dist/server/codemap-cache.d.ts +14 -0
- package/dist/server/codemap-cache.d.ts.map +1 -0
- package/dist/server/codemap-handlers.d.ts +2 -3
- package/dist/server/codemap-handlers.d.ts.map +1 -1
- package/dist/server/codemap-telemetry.d.ts.map +1 -1
- package/dist/server/collaboration-ws-handler.d.ts +3 -1
- package/dist/server/collaboration-ws-handler.d.ts.map +1 -1
- package/dist/server/completion-handlers.d.ts +2 -1
- package/dist/server/completion-handlers.d.ts.map +1 -1
- package/dist/server/completion-routes.d.ts +7 -0
- package/dist/server/completion-routes.d.ts.map +1 -0
- package/dist/server/config-doctor.d.ts +11 -0
- package/dist/server/config-doctor.d.ts.map +1 -0
- package/dist/server/connection-handler.d.ts +9 -46
- package/dist/server/connection-handler.d.ts.map +1 -1
- package/dist/server/connection-lifecycle.d.ts +43 -0
- package/dist/server/connection-lifecycle.d.ts.map +1 -0
- package/dist/server/content-routes.d.ts +15 -0
- package/dist/server/content-routes.d.ts.map +1 -0
- package/dist/server/conversation-operations.d.ts +28 -0
- package/dist/server/conversation-operations.d.ts.map +1 -0
- package/dist/server/conversation-routes.d.ts +10 -0
- package/dist/server/conversation-routes.d.ts.map +1 -0
- package/dist/server/custom-context-modes.d.ts +1 -1
- package/dist/server/custom-context-modes.d.ts.map +1 -1
- package/dist/server/design-handlers.d.ts +8 -0
- package/dist/server/design-handlers.d.ts.map +1 -1
- package/dist/server/discover-mailbox-bridge.d.ts.map +1 -1
- package/dist/server/embedded-host-adapters.d.ts +96 -0
- package/dist/server/embedded-host-adapters.d.ts.map +1 -0
- package/dist/server/embedded-lifecycle.d.ts +113 -0
- package/dist/server/embedded-lifecycle.d.ts.map +1 -0
- package/dist/server/embedded-message-router.d.ts +64 -0
- package/dist/server/embedded-message-router.d.ts.map +1 -0
- package/dist/server/entry.js +17227 -14052
- package/dist/server/entry.js.map +4 -4
- package/dist/server/eternal-iteration-broadcast.d.ts +1 -1
- package/dist/server/eternal-iteration-broadcast.d.ts.map +1 -1
- package/dist/server/file-handlers.d.ts.map +1 -1
- package/dist/server/frontend-static-serve.d.ts +133 -0
- package/dist/server/frontend-static-serve.d.ts.map +1 -0
- package/dist/server/git-process.d.ts +4 -0
- package/dist/server/git-process.d.ts.map +1 -0
- package/dist/server/goal-snapshot-routes.d.ts +7 -0
- package/dist/server/goal-snapshot-routes.d.ts.map +1 -0
- package/dist/server/goal-ws-handler.d.ts +3 -1
- package/dist/server/goal-ws-handler.d.ts.map +1 -1
- package/dist/server/handlers/worklist-handlers.d.ts +14 -20
- package/dist/server/handlers/worklist-handlers.d.ts.map +1 -1
- package/dist/server/handlers.js +150 -121
- package/dist/server/handlers.js.map +3 -3
- package/dist/server/host-routes.d.ts +7 -0
- package/dist/server/host-routes.d.ts.map +1 -0
- package/dist/server/http-server/analytics-handler.d.ts +2 -0
- package/dist/server/http-server/analytics-handler.d.ts.map +1 -1
- package/dist/server/http-server/api-handlers.d.ts.map +1 -1
- package/dist/server/http-server.d.ts +20 -23
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/index.d.ts +57 -22
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/instance-registry.d.ts +1 -3
- package/dist/server/instance-registry.d.ts.map +1 -1
- package/dist/server/introspection-routes.d.ts +19 -0
- package/dist/server/introspection-routes.d.ts.map +1 -0
- package/dist/server/kanban-board-watcher.d.ts +19 -0
- package/dist/server/kanban-board-watcher.d.ts.map +1 -0
- package/dist/server/kanban-dispatch.d.ts +42 -0
- package/dist/server/kanban-dispatch.d.ts.map +1 -0
- package/dist/server/kanban-host-routes.d.ts +10 -0
- package/dist/server/kanban-host-routes.d.ts.map +1 -0
- package/dist/server/kanban-routes.d.ts +13 -3
- package/dist/server/kanban-routes.d.ts.map +1 -1
- package/dist/server/kanban-run-mirror.d.ts +76 -0
- package/dist/server/kanban-run-mirror.d.ts.map +1 -0
- package/dist/server/kanban-supervisor.d.ts +47 -0
- package/dist/server/kanban-supervisor.d.ts.map +1 -0
- package/dist/server/mailbox-handlers.d.ts +12 -4
- package/dist/server/mailbox-handlers.d.ts.map +1 -1
- package/dist/server/mailbox-routes.d.ts +8 -0
- package/dist/server/mailbox-routes.d.ts.map +1 -1
- package/dist/server/mcp-handlers.d.ts +4 -0
- package/dist/server/mcp-handlers.d.ts.map +1 -1
- package/dist/server/memory-handlers.d.ts +54 -46
- package/dist/server/memory-handlers.d.ts.map +1 -1
- package/dist/server/memory-routes.d.ts +11 -0
- package/dist/server/memory-routes.d.ts.map +1 -0
- package/dist/server/message-dispatcher.d.ts +3 -4
- package/dist/server/message-dispatcher.d.ts.map +1 -1
- package/dist/server/mode-handlers.d.ts +6 -15
- package/dist/server/mode-handlers.d.ts.map +1 -1
- package/dist/server/mode-operations.d.ts +24 -0
- package/dist/server/mode-operations.d.ts.map +1 -0
- package/dist/server/mode-routes.d.ts +2 -0
- package/dist/server/mode-routes.d.ts.map +1 -1
- package/dist/server/model-auto-discovery.d.ts +1 -1
- package/dist/server/model-auto-discovery.d.ts.map +1 -1
- package/dist/server/model-catalog.d.ts +1 -1
- package/dist/server/model-catalog.d.ts.map +1 -1
- package/dist/server/model-operations.d.ts +29 -0
- package/dist/server/model-operations.d.ts.map +1 -0
- package/dist/server/network-info.d.ts +50 -0
- package/dist/server/network-info.d.ts.map +1 -0
- package/dist/server/path-containment.d.ts.map +1 -1
- package/dist/server/port-utils.d.ts +18 -25
- package/dist/server/port-utils.d.ts.map +1 -1
- package/dist/server/pre-context-services.d.ts +32 -5
- package/dist/server/pre-context-services.d.ts.map +1 -1
- package/dist/server/pref-helpers.d.ts +1 -3
- package/dist/server/pref-helpers.d.ts.map +1 -1
- package/dist/server/prefs-handlers.d.ts +22 -0
- package/dist/server/prefs-handlers.d.ts.map +1 -0
- package/dist/server/prefs-routes.d.ts +5 -0
- package/dist/server/prefs-routes.d.ts.map +1 -1
- package/dist/server/privileged-actions.d.ts +16 -0
- package/dist/server/privileged-actions.d.ts.map +1 -0
- package/dist/server/process-handlers.d.ts +8 -6
- package/dist/server/process-handlers.d.ts.map +1 -1
- package/dist/server/process-routes.d.ts +9 -0
- package/dist/server/process-routes.d.ts.map +1 -0
- package/dist/server/project-handlers.d.ts +25 -33
- package/dist/server/project-handlers.d.ts.map +1 -1
- package/dist/server/projects-manifest.d.ts +8 -0
- package/dist/server/projects-manifest.d.ts.map +1 -1
- package/dist/server/prompts-handlers.d.ts +2 -1
- package/dist/server/prompts-handlers.d.ts.map +1 -1
- package/dist/server/provider-config-io.d.ts +2 -2
- package/dist/server/provider-config-io.d.ts.map +1 -1
- package/dist/server/provider-config-standalone.d.ts +5 -3
- package/dist/server/provider-config-standalone.d.ts.map +1 -1
- package/dist/server/provider-handlers.d.ts +63 -6
- package/dist/server/provider-handlers.d.ts.map +1 -1
- package/dist/server/provider-keys.d.ts +1 -1
- package/dist/server/provider-keys.d.ts.map +1 -1
- package/dist/server/provider-routes.d.ts +28 -2
- package/dist/server/provider-routes.d.ts.map +1 -1
- package/dist/server/provider-store.d.ts +5 -4
- package/dist/server/provider-store.d.ts.map +1 -1
- package/dist/server/route-family-dispatcher.d.ts +71 -0
- package/dist/server/route-family-dispatcher.d.ts.map +1 -0
- package/dist/server/routes.d.ts +17 -7
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/sdd-board-ws-handler.d.ts +5 -1
- package/dist/server/sdd-board-ws-handler.d.ts.map +1 -1
- package/dist/server/sdd-wizard-wiring.d.ts +14 -3
- package/dist/server/sdd-wizard-wiring.d.ts.map +1 -1
- package/dist/server/sdd-wizard-ws-handler.d.ts.map +1 -1
- package/dist/server/server-runtime.d.ts +16 -12
- package/dist/server/server-runtime.d.ts.map +1 -1
- package/dist/server/session-handlers.d.ts +30 -11
- package/dist/server/session-handlers.d.ts.map +1 -1
- package/dist/server/session-history.d.ts +1 -1
- package/dist/server/session-history.d.ts.map +1 -1
- package/dist/server/setup-event-projection.d.ts +10 -0
- package/dist/server/setup-event-projection.d.ts.map +1 -0
- package/dist/server/setup-events-watcher.d.ts +13 -0
- package/dist/server/setup-events-watcher.d.ts.map +1 -0
- package/dist/server/setup-events.d.ts +11 -21
- package/dist/server/setup-events.d.ts.map +1 -1
- package/dist/server/setup-screen.d.ts +2 -1
- package/dist/server/setup-screen.d.ts.map +1 -1
- package/dist/server/shell-open.d.ts +26 -2
- package/dist/server/shell-open.d.ts.map +1 -1
- package/dist/server/skills-handlers.d.ts +2 -2
- package/dist/server/skills-handlers.d.ts.map +1 -1
- package/dist/server/specs-ws-handler.d.ts.map +1 -1
- package/dist/server/standalone-session-identity.d.ts +3 -2
- package/dist/server/standalone-session-identity.d.ts.map +1 -1
- package/dist/server/start-webui.d.ts +9 -1
- package/dist/server/start-webui.d.ts.map +1 -1
- package/dist/server/stream-coalescer.d.ts +49 -0
- package/dist/server/stream-coalescer.d.ts.map +1 -0
- package/dist/server/techstack-handlers.d.ts +12 -2
- package/dist/server/techstack-handlers.d.ts.map +1 -1
- package/dist/server/terminal-ws-handler.d.ts +5 -3
- package/dist/server/terminal-ws-handler.d.ts.map +1 -1
- package/dist/server/types.d.ts +10 -3
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/worklist-routes.d.ts +21 -0
- package/dist/server/worklist-routes.d.ts.map +1 -0
- package/dist/server/worktree-routes.d.ts +10 -0
- package/dist/server/worktree-routes.d.ts.map +1 -0
- package/dist/server/worktree-ws-handler.d.ts +2 -1
- package/dist/server/worktree-ws-handler.d.ts.map +1 -1
- package/dist/server/ws-auth.d.ts.map +1 -1
- package/dist/server/ws-payload-validation.d.ts +11 -0
- package/dist/server/ws-payload-validation.d.ts.map +1 -1
- package/dist/server/ws-utils.d.ts +8 -0
- package/dist/server/ws-utils.d.ts.map +1 -1
- package/package.json +14 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-handlers.d.ts","sourceRoot":"","sources":["../../src/server/memory-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"memory-handlers.d.ts","sourceRoot":"","sources":["../../src/server/memory-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AA0BpC;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB5F;AA+BD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CA2Df;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,yFAAyF;AACzF,wBAAsB,eAAe,CACnC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MemoryPort } from '@wrongstack/core/types';
|
|
2
|
+
import type { WebSocket } from 'ws';
|
|
3
|
+
import type { WSClientMessage, WSServerMessage } from './types.js';
|
|
4
|
+
export interface MemoryRouteContext {
|
|
5
|
+
getMemoryStore: () => MemoryPort | undefined;
|
|
6
|
+
send: (ws: WebSocket, message: WSServerMessage) => void;
|
|
7
|
+
sendResult: (ws: WebSocket, success: boolean, message: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/** Canonical Memory/Sage routing and unavailable-store behavior. */
|
|
10
|
+
export declare function handleMemoryRoute(ctx: MemoryRouteContext, ws: WebSocket, message: WSClientMessage): Promise<boolean>;
|
|
11
|
+
//# sourceMappingURL=memory-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-routes.d.ts","sourceRoot":"","sources":["../../src/server/memory-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAepC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7C,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxE;AAiBD,oEAAoE;AACpE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CA+ClB"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import type { WebSocket } from 'ws';
|
|
20
20
|
import type { PendingConfirm } from './pending-confirms.js';
|
|
21
|
-
import type { AllRoutes,
|
|
21
|
+
import type { AllRoutes, WebuiDeps, WebuiMutableState } from './routes.js';
|
|
22
22
|
import type { ConnectedClient, WSClientMessage } from './types.js';
|
|
23
23
|
/**
|
|
24
24
|
* Shared run-lock control. `user_message` acquires/releases it around
|
|
@@ -33,7 +33,6 @@ interface RunLockControl {
|
|
|
33
33
|
interface MessageDispatcherOptions {
|
|
34
34
|
state: WebuiMutableState;
|
|
35
35
|
deps: WebuiDeps;
|
|
36
|
-
cb: WebuiCallbacks;
|
|
37
36
|
routes: AllRoutes;
|
|
38
37
|
/** Prompt-library context ({ promptLoader, promptUsage }). */
|
|
39
38
|
promptsCtx: {
|
|
@@ -52,8 +51,8 @@ interface MessageDispatcherOptions {
|
|
|
52
51
|
/**
|
|
53
52
|
* Build the inbound message dispatcher. Mirrors the `handleMessage` closure
|
|
54
53
|
* that lived inline in `startWebUI`. Reads live config/session/projectRoot
|
|
55
|
-
* through `state
|
|
56
|
-
*
|
|
54
|
+
* through `state` and services through `deps` — same reference semantics,
|
|
55
|
+
* no behaviour change.
|
|
57
56
|
*/
|
|
58
57
|
export declare function createMessageDispatcher(opts: MessageDispatcherOptions): (ws: WebSocket, _client: ConnectedClient, msg: WSClientMessage) => Promise<void>;
|
|
59
58
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-dispatcher.d.ts","sourceRoot":"","sources":["../../src/server/message-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"message-dispatcher.d.ts","sourceRoot":"","sources":["../../src/server/message-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAYpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAInE;;;;;GAKG;AACH,UAAU,cAAc;IACtB,GAAG,IAAI,eAAe,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;CACzC;AACD,UAAU,wBAAwB;IAChC,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,8DAA8D;IAC9D,UAAU,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5D,6EAA6E;IAC7E,gBAAgB,EAAE;QAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAChE,6DAA6D;IAC7D,OAAO,EAAE,cAAc,CAAC;IACxB,2EAA2E;IAC3E,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAwQlF"}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* piece of outer mutable state (the `modeId` let) is threaded in as a setter so
|
|
6
|
-
* the factory stays a pure function of its context.
|
|
7
|
-
*/
|
|
1
|
+
import { DefaultSystemPromptBuilder, type Context } from '@wrongstack/core/agent';
|
|
2
|
+
import type { DefaultModeStore } from '@wrongstack/core/models';
|
|
3
|
+
import type { ToolRegistry } from '@wrongstack/core/registry';
|
|
4
|
+
import type { MemoryPort, SkillLoader } from '@wrongstack/core/types';
|
|
8
5
|
import type { WebSocket } from 'ws';
|
|
9
|
-
import { type Context, DefaultSystemPromptBuilder, type MemoryStore, type DefaultModeStore, type SkillLoader, type ToolRegistry } from '@wrongstack/core';
|
|
10
6
|
import type { ConnectedClient } from './types.js';
|
|
11
|
-
import type { ModeRouteHandlers } from './mode-routes.js';
|
|
12
|
-
/** The rich payload startWebUI's sessionStartPayload() resolves to. Matches the
|
|
13
|
-
* WSSessionStart wire shape; broadcast() accepts it for a 'session.start' msg. */
|
|
14
7
|
type SessionStartPayload = {
|
|
15
8
|
sessionId: string;
|
|
16
9
|
model: string;
|
|
@@ -28,7 +21,7 @@ type SessionStartPayload = {
|
|
|
28
21
|
type ModelCapabilities = NonNullable<ConstructorParameters<typeof DefaultSystemPromptBuilder>[0]>['modelCapabilities'];
|
|
29
22
|
export interface ModeHandlersContext {
|
|
30
23
|
modeStore: DefaultModeStore;
|
|
31
|
-
memoryStore:
|
|
24
|
+
memoryStore: MemoryPort;
|
|
32
25
|
skillLoader: SkillLoader | undefined;
|
|
33
26
|
modelCapabilities: ModelCapabilities;
|
|
34
27
|
context: Context;
|
|
@@ -40,11 +33,9 @@ export interface ModeHandlersContext {
|
|
|
40
33
|
projectRoot: string;
|
|
41
34
|
globalRoot: string;
|
|
42
35
|
clients: Map<WebSocket, ConnectedClient>;
|
|
43
|
-
/** Update the outer `modeId` binding on a successful switch. */
|
|
44
36
|
setModeId: (id: string) => void;
|
|
45
|
-
/** Rebuilds the rich session.start payload broadcast after a mode switch. */
|
|
46
37
|
sessionStartPayload: () => Promise<SessionStartPayload>;
|
|
47
38
|
}
|
|
48
|
-
export declare function createModeHandlers(
|
|
39
|
+
export declare function createModeHandlers(context: ModeHandlersContext): import("./mode-routes.js").ModeRouteHandlers;
|
|
49
40
|
export {};
|
|
50
41
|
//# sourceMappingURL=mode-handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode-handlers.d.ts","sourceRoot":"","sources":["../../src/server/mode-handlers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mode-handlers.d.ts","sourceRoot":"","sources":["../../src/server/mode-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,KAAK,mBAAmB,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,KAAK,iBAAiB,GAAG,WAAW,CAClC,qBAAqB,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC,mBAAmB,CAAC,CAAC;AAEvB,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mBAAmB,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACzD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,gDAuC9D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ModeStore } from '@wrongstack/core/types';
|
|
2
|
+
import type { WebSocket } from 'ws';
|
|
3
|
+
import type { WSServerMessage } from './types.js';
|
|
4
|
+
interface ModeSession {
|
|
5
|
+
append(event: {
|
|
6
|
+
type: 'mode_changed';
|
|
7
|
+
ts: string;
|
|
8
|
+
from: string;
|
|
9
|
+
to: string;
|
|
10
|
+
}): Promise<unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface ModeOperationsContext {
|
|
13
|
+
modeStore?: ModeStore | undefined;
|
|
14
|
+
getSession?: (() => ModeSession | null | undefined) | undefined;
|
|
15
|
+
applyModeId: (id: string) => void;
|
|
16
|
+
afterSwitch?: ((id: string) => void | Promise<void>) | undefined;
|
|
17
|
+
send: (ws: WebSocket, message: WSServerMessage) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function createModeOperations(context: ModeOperationsContext): {
|
|
20
|
+
listModes(ws: WebSocket): Promise<void>;
|
|
21
|
+
switchMode(ws: WebSocket, id: string): Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=mode-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-operations.d.ts","sourceRoot":"","sources":["../../src/server/mode-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,UAAU,WAAW;IACnB,MAAM,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAChE,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACjE,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CACzD;AAWD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB;IAEzD,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BvC,UAAU,KAAK,SAAS,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAkC7D"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { WebSocket } from 'ws';
|
|
2
|
+
import { type ModeOperationsContext } from './mode-operations.js';
|
|
2
3
|
import type { WSClientMessage } from './types.js';
|
|
3
4
|
export interface ModeRouteHandlers {
|
|
4
5
|
listModes: (ws: WebSocket) => Promise<void>;
|
|
5
6
|
switchMode: (ws: WebSocket, msg: WSClientMessage) => Promise<void>;
|
|
6
7
|
}
|
|
8
|
+
export declare function createModeRouteHandlers(context: ModeOperationsContext): ModeRouteHandlers;
|
|
7
9
|
export declare function handleModeRoute(ws: WebSocket, msg: WSClientMessage, handlers: ModeRouteHandlers): Promise<boolean>;
|
|
8
10
|
//# sourceMappingURL=mode-routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode-routes.d.ts","sourceRoot":"","sources":["../../src/server/mode-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mode-routes.d.ts","sourceRoot":"","sources":["../../src/server/mode-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,UAAU,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CAgBzF;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAWlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-auto-discovery.d.ts","sourceRoot":"","sources":["../../src/server/model-auto-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,MAAM,EAIP,MAAM,
|
|
1
|
+
{"version":3,"file":"model-auto-discovery.d.ts","sourceRoot":"","sources":["../../src/server/model-auto-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,MAAM,EAIP,MAAM,wBAAwB,CAAC;AAmDhC,wBAAsB,8BAA8B,CAAC,IAAI,EAAE;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7D,SAAS,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;CACtC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ModelsRegistry, ProviderConfig, ResolvedModel, ResolvedProvider } from '@wrongstack/core';
|
|
1
|
+
import type { ModelsRegistry, ProviderConfig, ResolvedModel, ResolvedProvider } from '@wrongstack/core/types';
|
|
2
2
|
export declare const SIBLING_CATALOG: Record<string, string>;
|
|
3
3
|
/**
|
|
4
4
|
* Resolve the catalog entry to use for a saved provider's WebUI model list.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/server/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/server/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EACnD,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,GAC5C,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAOvC;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,EACjH,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC,GAAG,SAAS,GACpG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAuCpC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Context } from '@wrongstack/core/agent';
|
|
2
|
+
import type { Config, MemoryPort, ModelsRegistry, Provider, ProviderConfig } from '@wrongstack/core/types';
|
|
3
|
+
import type { WebSocket } from 'ws';
|
|
4
|
+
import type { WSServerMessage } from './types.js';
|
|
5
|
+
export interface ModelRefinePayload {
|
|
6
|
+
text: string;
|
|
7
|
+
timeoutMs?: number | undefined;
|
|
8
|
+
provider?: string | undefined;
|
|
9
|
+
model?: string | undefined;
|
|
10
|
+
previousRefined?: string | undefined;
|
|
11
|
+
previousEnglish?: string | undefined;
|
|
12
|
+
retryFeedback?: string | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface ModelOperationsContext {
|
|
15
|
+
context: Context;
|
|
16
|
+
memoryStore?: MemoryPort | undefined;
|
|
17
|
+
modelsRegistry?: ModelsRegistry | undefined;
|
|
18
|
+
getConfig: () => Config | undefined;
|
|
19
|
+
getLiveProviderId: () => string;
|
|
20
|
+
buildProvider: (providerId: string, config: ProviderConfig) => Provider | Promise<Provider>;
|
|
21
|
+
applyModelSwitch: (providerId: string, modelId: string) => Promise<void>;
|
|
22
|
+
send: (ws: WebSocket, message: WSServerMessage) => void;
|
|
23
|
+
log?: ((message: string) => void) | undefined;
|
|
24
|
+
}
|
|
25
|
+
export declare function createModelOperations(context: ModelOperationsContext): {
|
|
26
|
+
switchModel: (ws: WebSocket, input: unknown) => Promise<void>;
|
|
27
|
+
refineModel: (ws: WebSocket, payload: ModelRefinePayload) => Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=model-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-operations.d.ts","sourceRoot":"","sources":["../../src/server/model-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,cAAc,EACd,QAAQ,EACR,cAAc,EACf,MAAM,wBAAwB,CAAC;AAWhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,SAAS,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACpC,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5F,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACxD,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/C;AAWD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB;sBACpC,SAAS,SAAS,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;sBAyBzC,SAAS,WAAW,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAAC;EA4JtF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network interface discovery for the startup banner.
|
|
3
|
+
*
|
|
4
|
+
* When the server binds to a wildcard address (`0.0.0.0` / `::`), the
|
|
5
|
+
* operator needs to know which external IPs are reachable so they can
|
|
6
|
+
* construct browser URLs for Tailscale/LAN peers without manually
|
|
7
|
+
* running `ip addr` or `ipconfig`.
|
|
8
|
+
*
|
|
9
|
+
* Extracted as a pure function (with an injectable `os.networkInterfaces`
|
|
10
|
+
* seam) so it can be unit-tested without mocking the OS.
|
|
11
|
+
*/
|
|
12
|
+
import * as os from 'node:os';
|
|
13
|
+
export interface NetworkAddress {
|
|
14
|
+
/** IPv4 or IPv6 address (no brackets). */
|
|
15
|
+
address: string;
|
|
16
|
+
/** Interface name (e.g. `eth0`, `tailscale0`). */
|
|
17
|
+
interface: string;
|
|
18
|
+
/** Address family — `'IPv4'` or `'IPv6'`. */
|
|
19
|
+
family: 'IPv4' | 'IPv6';
|
|
20
|
+
/** True when this address belongs to the Tailscale CGNAT / ULA range. */
|
|
21
|
+
tailscale: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Enumerate all external (non-internal) network addresses on this machine.
|
|
25
|
+
*
|
|
26
|
+
* Returns addresses grouped and sorted:
|
|
27
|
+
* 1. Tailscale addresses first (IPv4 then IPv6)
|
|
28
|
+
* 2. Other external addresses (IPv4 then IPv6)
|
|
29
|
+
*
|
|
30
|
+
* Loopback, link-local, and internal addresses are filtered out.
|
|
31
|
+
*
|
|
32
|
+
* @param getInterfaces — Injectable seam for testing; defaults to
|
|
33
|
+
* `os.networkInterfaces()`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getExternalAddresses(getInterfaces?: () => NodeJS.Dict<os.NetworkInterfaceInfo[]>): NetworkAddress[];
|
|
36
|
+
/**
|
|
37
|
+
* Format the extra access-URL lines for a wildcard bind.
|
|
38
|
+
*
|
|
39
|
+
* Returns a list of indented, ready-to-print lines showing the external
|
|
40
|
+
* IPs and their full access URLs (including token). Returns an empty
|
|
41
|
+
* array for non-wildcard binds or when no external addresses are found.
|
|
42
|
+
*/
|
|
43
|
+
export declare function formatExternalAccessUrls(opts: {
|
|
44
|
+
bindHost: string;
|
|
45
|
+
port: number;
|
|
46
|
+
token?: string | undefined;
|
|
47
|
+
publicUrl?: string | undefined;
|
|
48
|
+
getInterfaces?: () => NodeJS.Dict<os.NetworkInterfaceInfo[]>;
|
|
49
|
+
}): string[];
|
|
50
|
+
//# sourceMappingURL=network-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-info.d.ts","sourceRoot":"","sources":["../../src/server/network-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;CACpB;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,GAAE,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAwB,GACjF,cAAc,EAAE,CA0BlB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC;CAC9D,GAAG,MAAM,EAAE,CAoBX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-containment.d.ts","sourceRoot":"","sources":["../../src/server/path-containment.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlE;AAED,wBAAsB,8BAA8B,
|
|
1
|
+
{"version":3,"file":"path-containment.d.ts","sourceRoot":"","sources":["../../src/server/path-containment.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlE;AAED,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAyCjB"}
|
|
@@ -1,54 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Port constants for the WebUI / SimpleUI servers.
|
|
3
3
|
*
|
|
4
4
|
* Design:
|
|
5
|
-
* - **
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - **Auto-advance.** When a port is taken
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* - **Single port — shared HTTP + WebSocket.** The WebSocket server attaches
|
|
6
|
+
* to the HTTP server (`new WebSocketServer({ server: httpServer })`), so
|
|
7
|
+
* both protocols share one port. No separate WS port is needed.
|
|
8
|
+
* - **Auto-advance.** When a port is taken the server probes upward — WebUI
|
|
9
|
+
* starts at 3456, SimpleUI at 3466. Set `WEBUI_STRICT_PORT=1` to disable.
|
|
10
|
+
* - **TOCTOU window.** The probe in `findFreePort` binds a throwaway
|
|
11
|
+
* `net.Server` then closes it, so there is a tiny race between "found free"
|
|
12
|
+
* and "real server binds". For local multi-instance use that race is
|
|
13
|
+
* negligible; if it ever loses, the real bind fails loudly with EADDRINUSE
|
|
14
|
+
* exactly as before.
|
|
11
15
|
* - **Instance registry.** Every live process records itself in
|
|
12
|
-
* `~/.wrongstack/webui-instances.json` with its PID, surface,
|
|
16
|
+
* `~/.wrongstack/webui-instances.json` with its PID, surface, port, and
|
|
13
17
|
* project root. A crashed instance is pruned on the next registry read
|
|
14
18
|
* (`process.kill(pid, 0)` probe), so ghosts don't accumulate.
|
|
15
|
-
* - **TOCTOU window.** The probe binds a throwaway `net.Server` then closes
|
|
16
|
-
* it, so there is a tiny race between "found free" and "real server binds".
|
|
17
|
-
* For local multi-instance use that race is negligible; if it ever loses,
|
|
18
|
-
* the real bind fails loudly with EADDRINUSE exactly as before.
|
|
19
19
|
*/
|
|
20
20
|
/**
|
|
21
|
-
* Surface-specific default port
|
|
21
|
+
* Surface-specific default single port.
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* WebSocket shares the HTTP port (single-port design), so only one port
|
|
24
|
+
* number is specified per surface:
|
|
25
25
|
*
|
|
26
|
-
* WebUI:
|
|
27
|
-
* SimpleUI:
|
|
28
|
-
*
|
|
29
|
-
* This keeps the ranges visually distinct and prevents accidental overlap
|
|
30
|
-
* when both surfaces run multiple instances in the same project.
|
|
26
|
+
* WebUI: 3456
|
|
27
|
+
* SimpleUI: 3466
|
|
31
28
|
*/
|
|
32
29
|
export declare const SURFACE_DEFAULT_PORTS: {
|
|
33
30
|
readonly webui: {
|
|
34
31
|
readonly http: 3456;
|
|
35
|
-
readonly ws: 3457;
|
|
36
32
|
};
|
|
37
33
|
readonly simpleui: {
|
|
38
34
|
readonly http: 3466;
|
|
39
|
-
readonly ws: 3467;
|
|
40
35
|
};
|
|
41
36
|
};
|
|
42
37
|
export type SurfaceKind = keyof typeof SURFACE_DEFAULT_PORTS;
|
|
43
38
|
/** Human-readable label for surfaces. */
|
|
44
39
|
export declare function surfaceLabel(surface: SurfaceKind): string;
|
|
45
40
|
/**
|
|
46
|
-
* Return the surface-specific default
|
|
47
|
-
* Freezes the returned object so callers can't mutate the constant table.
|
|
41
|
+
* Return the surface-specific default HTTP port.
|
|
48
42
|
*/
|
|
49
43
|
export declare function getSurfaceDefaultPorts(surface: SurfaceKind): {
|
|
50
44
|
http: number;
|
|
51
|
-
ws: number;
|
|
52
45
|
};
|
|
53
46
|
/** Resolve true when `port` can be bound on `host`, false on EADDRINUSE/EACCES. */
|
|
54
47
|
export declare function isPortFree(host: string, port: number): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port-utils.d.ts","sourceRoot":"","sources":["../../src/server/port-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH
|
|
1
|
+
{"version":3,"file":"port-utils.d.ts","sourceRoot":"","sources":["../../src/server/port-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;iBACrB,IAAI,EAAE,IAAI;;;iBACT,IAAI,EAAE,IAAI;;CAC6B,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,qBAAqB,CAAC;AAE7D,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG;IAC5D,IAAI,EAAE,MAAM,CAAC;CACd,CAEA;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAavE;AAED,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAClC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|
|
@@ -1,10 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Pre-context backend service construction for the standalone WebUI server.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1f of the god-module split. `startWebUI` previously inlined ~370
|
|
5
|
+
* lines of construction that runs BEFORE `context` exists: modelsRegistry,
|
|
6
|
+
* container, providerRegistry, toolRegistry (+ memory/mailbox tools),
|
|
7
|
+
* MCPRegistry, sessionStore, session, sessionReader, annotationsStore,
|
|
8
|
+
* cross-surface discovery (session registry + fleet notifier + HQ
|
|
9
|
+
* telemetry), tokenCounter, modeStore, customModeStore, skillInstaller,
|
|
10
|
+
* promptLoader, systemPromptBuilder, systemPrompt, provider resolution,
|
|
11
|
+
* and context creation + meta seeding.
|
|
12
|
+
*
|
|
13
|
+
* All of that moves into `createPreContextServices()`. The block is deeply
|
|
14
|
+
* interleaved with the `opts.services?` injection contract (5 injection
|
|
15
|
+
* points) and mutable `let` bindings the route layer swaps at runtime
|
|
16
|
+
* (session, sessionStore, sessionStartedAt, modeId). The factory returns
|
|
17
|
+
* all of these; `startWebUI` keeps the mutable bindings and wraps them
|
|
18
|
+
* into the `state` object exactly as before.
|
|
19
|
+
*
|
|
20
|
+
* No behaviour change.
|
|
21
|
+
*/
|
|
22
|
+
import { Context } from '@wrongstack/core/agent';
|
|
23
|
+
import { DefaultPromptLoader, DefaultSkillLoader } from '@wrongstack/core/execution';
|
|
24
|
+
import { type Container, EventBus } from '@wrongstack/core/kernel';
|
|
2
25
|
import { DefaultTokenCounter } from '@wrongstack/core/infrastructure';
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
26
|
+
import { DefaultModeStore } from '@wrongstack/core/models';
|
|
27
|
+
import { ProviderRegistry, ToolRegistry } from '@wrongstack/core/registry';
|
|
28
|
+
import { SkillInstaller } from '@wrongstack/core/skills';
|
|
29
|
+
import { type AgentStatusTracker, AnnotationsStore, DefaultSessionReader, DefaultSessionStore, PromptUsageStore } from '@wrongstack/core/storage';
|
|
30
|
+
import { type Config, type ConfigStore, type Logger, type MemoryPort, type ModelsRegistry, type Provider, type SecretVault, type SessionStore } from '@wrongstack/core/types';
|
|
31
|
+
import { type WstackPaths } from '@wrongstack/core/utils';
|
|
6
32
|
import type { CustomModeStore } from './custom-context-modes.js';
|
|
7
33
|
import { type StandaloneSessionIdentityLifecycle } from './standalone-session-identity.js';
|
|
34
|
+
import type { WebUIOptions } from './types.js';
|
|
8
35
|
interface PreContextServicesInput {
|
|
9
36
|
config: Config;
|
|
10
37
|
wpaths: WstackPaths;
|
|
@@ -24,7 +51,7 @@ interface PreContextServices {
|
|
|
24
51
|
configStore: ConfigStore;
|
|
25
52
|
providerRegistry: ProviderRegistry;
|
|
26
53
|
toolRegistry: ToolRegistry;
|
|
27
|
-
memoryStore:
|
|
54
|
+
memoryStore: MemoryPort;
|
|
28
55
|
events: EventBus;
|
|
29
56
|
mcpRegistry: import('@wrongstack/mcp').MCPRegistry;
|
|
30
57
|
sessionStore: SessionStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-context-services.d.ts","sourceRoot":"","sources":["../../src/server/pre-context-services.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pre-context-services.d.ts","sourceRoot":"","sources":["../../src/server/pre-context-services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,OAAO,EAA8B,MAAM,wBAAwB,CAAC;AAQ7E,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,SAAS,EACd,QAAQ,EAET,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAyB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EAEnB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAahC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAEL,KAAK,kCAAkC,EACxC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,gEAAgE;IAChE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,UAAU,kBAAkB;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,WAAW,EAAE,OAAO,iBAAiB,EAAE,WAAW,CAAC;IACnD,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,oBAAoB,CAAC;IACpC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC9C,eAAe,EAAE,kCAAkC,CAAC;IACpD,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC5C,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE;QAAE,YAAY,EAAE,mBAAmB,GAAG,SAAS,CAAC;QAAC,WAAW,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAC7F,oBAAoB,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAiW7B"}
|
|
@@ -15,12 +15,10 @@
|
|
|
15
15
|
* two take explicit args. No behaviour change — the mutation ladder,
|
|
16
16
|
* the FEATURE_MAP, and the touch-flags are preserved verbatim.
|
|
17
17
|
*/
|
|
18
|
-
import type { SecretVault } from '@wrongstack/core';
|
|
18
|
+
import type { SecretVault } from '@wrongstack/core/types';
|
|
19
19
|
/** Pref keys exposed to the settings panel via prefs.get / prefs.updated. */
|
|
20
20
|
export declare const PREF_KEYS: readonly ['autonomy', 'autonomyDelayMs', 'autoProceedMaxIterations', 'yolo', 'maxIterations', 'chime', 'confirmExit', 'nextPrediction', 'enhanceEnabled', 'enhanceDelayMs', 'enhanceLanguage', 'featureMcp', 'featurePlugins', 'featureMemory', 'featureSkills', 'featureModelsRegistry', 'indexOnStart', 'contextAutoCompact', 'contextStrategy', 'contextMode', 'tokenSavingTier', 'maxConcurrent', 'titleAnimation', 'uiLocale', 'logLevel', 'auditLevel', 'hqEnabled', 'hqUrl', 'hqToken', 'hqRawContent', 'tgConfigured', 'tgSessionEnd', 'tgDelegate', 'tgLongToolMs', 'reasoningMode', 'reasoningEffort', 'reasoningPreserve', 'cacheTtl', 'fallbackModels', 'fallbackProfiles', 'favoriteModels', 'favoriteModelsOnly', 'modelAvailabilitySchedule', 'modelMatrix', 'fallbackAuto', 'refinerProvider', 'refinerModel', 'refinerFallbackProfile', 'thinkingWord', 'statuslineMode', 'animationStyle', 'showModelReasoning', 'breakerEnabled', 'breakerAutoKillResetMs', 'fsAccess', 'debugStream', 'chimeraEnabled', 'chimeraProvider', 'chimeraModel', 'chimeraMaxFiles', 'chimeraAutoFix', 'autoReviewEnabled', 'autoReviewProvider', 'autoReviewModel', 'autoReviewFallbackProfile', 'autoReviewFallbackModels', 'autoReviewDebounceMs', 'autoReviewMaxFilesPerBatch', 'autoReviewMaxConcurrentReviews', 'autoReviewCascadeOn', 'pluginsEnabled', 'fleetChatVerbosity'];
|
|
21
21
|
export interface PrefHelperDeps {
|
|
22
|
-
/** Root bootstrap path. Never a settings mutation target. */
|
|
23
|
-
globalConfigPath: string;
|
|
24
22
|
/** Path to the active profile config; the sole settings mutation target. */
|
|
25
23
|
profileConfigPath: string;
|
|
26
24
|
vault: SecretVault;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pref-helpers.d.ts","sourceRoot":"","sources":["../../src/server/pref-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pref-helpers.d.ts","sourceRoot":"","sources":["../../src/server/pref-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,6EAA6E;AAC7E,eAAO,MAAM,SAAS,YACpB,UAAU,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,MAAM,EACN,eAAe,EACf,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,2BAA2B,EAC3B,aAAa,EACb,cAAc,EAGd,iBAAiB,EACjB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EAEpB,gBAAgB,EAChB,wBAAwB,EACxB,UAAU,EACV,aAAa,EAIb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,EAChC,qBAAqB,EAErB,gBAAgB,EAEhB,oBAAoB,CACZ,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1F;AAED;;;;;;;kBAOkB;AAClB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAyCD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,EACjD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAkXf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ConfigStore } from '@wrongstack/core/types';
|
|
2
|
+
import type { WebSocket } from 'ws';
|
|
3
|
+
import { type PendingConfirm } from './pending-confirms.js';
|
|
4
|
+
import type { WSServerMessage } from './types.js';
|
|
5
|
+
export interface PrefsHandlerContext {
|
|
6
|
+
meta: Record<string, unknown>;
|
|
7
|
+
snapshot: () => Record<string, unknown>;
|
|
8
|
+
persist: (payload: Record<string, unknown>) => Promise<void>;
|
|
9
|
+
pendingConfirms: Map<string, PendingConfirm>;
|
|
10
|
+
configStore?: ConfigStore | undefined;
|
|
11
|
+
setYolo?: ((enabled: boolean) => void) | undefined;
|
|
12
|
+
setAutonomy?: ((mode: string) => void) | undefined;
|
|
13
|
+
applyConfigPrefs?: ((payload: Record<string, unknown>) => void) | undefined;
|
|
14
|
+
setAutoCompact?: ((enabled: boolean) => void) | undefined;
|
|
15
|
+
setLogLevel?: ((level: 'debug' | 'info' | 'warn' | 'error') => void) | undefined;
|
|
16
|
+
send: (ws: WebSocket, message: WSServerMessage) => void;
|
|
17
|
+
broadcast: (message: WSServerMessage) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function handlePrefsGet(ctx: PrefsHandlerContext, ws: WebSocket): void;
|
|
20
|
+
export declare function handlePrefsUpdate(ctx: PrefsHandlerContext, ws: WebSocket, input: Record<string, unknown>): void;
|
|
21
|
+
export declare function handleAutonomySwitch(ctx: PrefsHandlerContext, ws: WebSocket, mode: string): void;
|
|
22
|
+
//# sourceMappingURL=prefs-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefs-handlers.d.ts","sourceRoot":"","sources":["../../src/server/prefs-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,KAAK,cAAc,EAAsC,MAAM,uBAAuB,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5E,cAAc,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACjF,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACxD,SAAS,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC/C;AAuCD,wBAAgB,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAE5E;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,mBAAmB,EACxB,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CA+CN;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMhG"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { WebSocket } from 'ws';
|
|
2
|
+
import { type PrefsHandlerContext } from './prefs-handlers.js';
|
|
2
3
|
import type { WSClientMessage } from './types.js';
|
|
3
4
|
export interface PrefsRouteHandlers {
|
|
4
5
|
/** Respond to the WS client with the current pref snapshot. */
|
|
@@ -10,7 +11,10 @@ export interface PrefsRouteHandlers {
|
|
|
10
11
|
* logger.level), then broadcast the full current snapshot to all clients.
|
|
11
12
|
*/
|
|
12
13
|
updatePrefs: (ws: WebSocket, payload: Record<string, unknown>) => Promise<void>;
|
|
14
|
+
/** Preview/apply canonical defaults in the active profile config. */
|
|
15
|
+
doctorConfig?: ((ws: WebSocket, apply: boolean) => Promise<void>) | undefined;
|
|
13
16
|
}
|
|
17
|
+
export declare function createPrefsRouteHandlers(ctx: PrefsHandlerContext, doctorConfig?: PrefsRouteHandlers['doctorConfig']): PrefsRouteHandlers;
|
|
14
18
|
/**
|
|
15
19
|
* Chain-of-responsibility dispatcher for the `prefs.*` WS message family.
|
|
16
20
|
* Returns `true` if the message was handled by this layer (so the caller's
|
|
@@ -20,6 +24,7 @@ export interface PrefsRouteHandlers {
|
|
|
20
24
|
* Owned prefixes:
|
|
21
25
|
* - `prefs.get`
|
|
22
26
|
* - `prefs.update`
|
|
27
|
+
* - `config.doctor`
|
|
23
28
|
*
|
|
24
29
|
* Regression-tested by packages/webui/tests/server/dispatcher-routing.test.ts.
|
|
25
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefs-routes.d.ts","sourceRoot":"","sources":["../../src/server/prefs-routes.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"prefs-routes.d.ts","sourceRoot":"","sources":["../../src/server/prefs-routes.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAqC,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;;;OAKG;IACH,WAAW,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,qEAAqE;IACrE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAC/E;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,mBAAmB,EACxB,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAChD,kBAAkB,CAMpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAmClB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Logger } from '@wrongstack/core/types';
|
|
2
|
+
import { type TrustBoundary, type TrustBoundaryRequest, type TrustRisk, type TrustSubject } from '@wrongstack/core/security';
|
|
3
|
+
export interface WebUIPrivilegedAction {
|
|
4
|
+
capability: string;
|
|
5
|
+
subject: TrustSubject;
|
|
6
|
+
risk: TrustRisk;
|
|
7
|
+
cwd?: string | undefined;
|
|
8
|
+
sessionId?: string | undefined;
|
|
9
|
+
metadata?: TrustBoundaryRequest['metadata'] | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare function authorizeWebUIAction(boundary: TrustBoundary, action: WebUIPrivilegedAction, logger?: Logger | undefined): Promise<{
|
|
12
|
+
allowed: boolean;
|
|
13
|
+
reason: string;
|
|
14
|
+
request: TrustBoundaryRequest;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=privileged-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privileged-actions.d.ts","sourceRoot":"","sources":["../../src/server/privileged-actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;CACzD;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAwB9E"}
|
|
@@ -6,15 +6,17 @@
|
|
|
6
6
|
* case 'process.kill': return handleProcessKill(ws, msg.payload);
|
|
7
7
|
* case 'process.killAll': return handleProcessKillAll(ws);
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* failure is reported back over the socket instead.
|
|
9
|
+
* Registry failures never escape the handler; they are reported over the
|
|
10
|
+
* socket using the existing protocol envelopes.
|
|
12
11
|
*/
|
|
12
|
+
import type { Logger } from '@wrongstack/core/types';
|
|
13
|
+
import { type TrustBoundary } from '@wrongstack/core/security';
|
|
13
14
|
import type { WebSocket } from 'ws';
|
|
15
|
+
import { type WebUIPrivilegedAction } from './privileged-actions.js';
|
|
14
16
|
/** Broadcast the tracked-process list; an empty list on any registry failure. */
|
|
15
|
-
export declare function handleProcessList(ws: WebSocket):
|
|
17
|
+
export declare function handleProcessList(ws: WebSocket): void;
|
|
16
18
|
/** Kill one tracked PID. Rejects invalid payloads and protected processes. */
|
|
17
|
-
export declare function handleProcessKill(ws: WebSocket, payload: unknown): Promise<void>;
|
|
19
|
+
export declare function handleProcessKill(ws: WebSocket, payload: unknown, trustBoundary?: TrustBoundary, logger?: Logger | undefined, metadata?: WebUIPrivilegedAction['metadata'] | undefined): Promise<void>;
|
|
18
20
|
/** Kill every tracked process. */
|
|
19
|
-
export declare function handleProcessKillAll(ws: WebSocket): Promise<void>;
|
|
21
|
+
export declare function handleProcessKillAll(ws: WebSocket, trustBoundary?: TrustBoundary, logger?: Logger | undefined, metadata?: WebUIPrivilegedAction['metadata'] | undefined): Promise<void>;
|
|
20
22
|
//# sourceMappingURL=process-handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-handlers.d.ts","sourceRoot":"","sources":["../../src/server/process-handlers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"process-handlers.d.ts","sourceRoot":"","sources":["../../src/server/process-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAI3F,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAoBrD;AAED,8EAA8E;AAC9E,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,OAAO,EAChB,aAAa,GAAE,aAEb,EACF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,GAAG,SAAS,GACvD,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,kCAAkC;AAClC,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,SAAS,EACb,aAAa,GAAE,aAEb,EACF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,GAAG,SAAS,GACvD,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
import type { WSClientMessage } from './types.js';
|
|
3
|
+
export interface ProcessRouteHandlers {
|
|
4
|
+
list: (ws: WebSocket, msg: WSClientMessage) => Promise<void> | void;
|
|
5
|
+
kill: (ws: WebSocket, msg: WSClientMessage) => Promise<void> | void;
|
|
6
|
+
killAll: (ws: WebSocket, msg: WSClientMessage) => Promise<void> | void;
|
|
7
|
+
}
|
|
8
|
+
export declare function handleProcessRoute(ws: WebSocket, msg: WSClientMessage, handlers: ProcessRouteHandlers): Promise<boolean>;
|
|
9
|
+
//# sourceMappingURL=process-routes.d.ts.map
|