@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.
Files changed (247) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +19499 -14317
  4. package/dist/index.js.map +4 -4
  5. package/dist/protocol/client-conversation.d.ts +3 -0
  6. package/dist/protocol/client-conversation.d.ts.map +1 -0
  7. package/dist/protocol/client-integrations.d.ts +3 -0
  8. package/dist/protocol/client-integrations.d.ts.map +1 -0
  9. package/dist/protocol/client-operations.d.ts +3 -0
  10. package/dist/protocol/client-operations.d.ts.map +1 -0
  11. package/dist/protocol/client-workspace.d.ts +3 -0
  12. package/dist/protocol/client-workspace.d.ts.map +1 -0
  13. package/dist/protocol/connection-fsm.d.ts +39 -0
  14. package/dist/protocol/connection-fsm.d.ts.map +1 -0
  15. package/dist/protocol/decoder.d.ts +6 -0
  16. package/dist/protocol/decoder.d.ts.map +1 -0
  17. package/dist/protocol/index.d.ts +8 -0
  18. package/dist/protocol/index.d.ts.map +1 -0
  19. package/dist/protocol/index.js +874 -0
  20. package/dist/protocol/index.js.map +7 -0
  21. package/dist/protocol/projections.d.ts +113 -0
  22. package/dist/protocol/projections.d.ts.map +1 -0
  23. package/dist/protocol/registry.d.ts +6 -0
  24. package/dist/protocol/registry.d.ts.map +1 -0
  25. package/dist/protocol/replay-payload.d.ts +41 -0
  26. package/dist/protocol/replay-payload.d.ts.map +1 -0
  27. package/dist/protocol/server-conversation.d.ts +3 -0
  28. package/dist/protocol/server-conversation.d.ts.map +1 -0
  29. package/dist/protocol/server-integrations.d.ts +3 -0
  30. package/dist/protocol/server-integrations.d.ts.map +1 -0
  31. package/dist/protocol/server-operations.d.ts +4 -0
  32. package/dist/protocol/server-operations.d.ts.map +1 -0
  33. package/dist/protocol/server-workspace.d.ts +3 -0
  34. package/dist/protocol/server-workspace.d.ts.map +1 -0
  35. package/dist/protocol/types.d.ts +24 -0
  36. package/dist/protocol/types.d.ts.map +1 -0
  37. package/dist/protocol/version.d.ts +20 -0
  38. package/dist/protocol/version.d.ts.map +1 -0
  39. package/dist/server/agent-roster-handlers.d.ts +31 -0
  40. package/dist/server/agent-roster-handlers.d.ts.map +1 -0
  41. package/dist/server/agent-roster-routes.d.ts +8 -0
  42. package/dist/server/agent-roster-routes.d.ts.map +1 -0
  43. package/dist/server/autonomy-routes.d.ts +9 -0
  44. package/dist/server/autonomy-routes.d.ts.map +1 -0
  45. package/dist/server/backend-services.d.ts +19 -6
  46. package/dist/server/backend-services.d.ts.map +1 -1
  47. package/dist/server/boot.d.ts +4 -1
  48. package/dist/server/boot.d.ts.map +1 -1
  49. package/dist/server/brain-handlers.d.ts +47 -0
  50. package/dist/server/brain-handlers.d.ts.map +1 -0
  51. package/dist/server/chronicle-routes.d.ts +14 -0
  52. package/dist/server/chronicle-routes.d.ts.map +1 -0
  53. package/dist/server/client-presence.d.ts +26 -0
  54. package/dist/server/client-presence.d.ts.map +1 -0
  55. package/dist/server/client-transport-routes.d.ts +8 -0
  56. package/dist/server/client-transport-routes.d.ts.map +1 -0
  57. package/dist/server/codebase-indexing.d.ts +3 -1
  58. package/dist/server/codebase-indexing.d.ts.map +1 -1
  59. package/dist/server/codemap-cache.d.ts +14 -0
  60. package/dist/server/codemap-cache.d.ts.map +1 -0
  61. package/dist/server/codemap-handlers.d.ts +2 -3
  62. package/dist/server/codemap-handlers.d.ts.map +1 -1
  63. package/dist/server/codemap-telemetry.d.ts.map +1 -1
  64. package/dist/server/collaboration-ws-handler.d.ts +3 -1
  65. package/dist/server/collaboration-ws-handler.d.ts.map +1 -1
  66. package/dist/server/completion-handlers.d.ts +2 -1
  67. package/dist/server/completion-handlers.d.ts.map +1 -1
  68. package/dist/server/completion-routes.d.ts +7 -0
  69. package/dist/server/completion-routes.d.ts.map +1 -0
  70. package/dist/server/config-doctor.d.ts +11 -0
  71. package/dist/server/config-doctor.d.ts.map +1 -0
  72. package/dist/server/connection-handler.d.ts +9 -46
  73. package/dist/server/connection-handler.d.ts.map +1 -1
  74. package/dist/server/connection-lifecycle.d.ts +43 -0
  75. package/dist/server/connection-lifecycle.d.ts.map +1 -0
  76. package/dist/server/content-routes.d.ts +15 -0
  77. package/dist/server/content-routes.d.ts.map +1 -0
  78. package/dist/server/conversation-operations.d.ts +28 -0
  79. package/dist/server/conversation-operations.d.ts.map +1 -0
  80. package/dist/server/conversation-routes.d.ts +10 -0
  81. package/dist/server/conversation-routes.d.ts.map +1 -0
  82. package/dist/server/custom-context-modes.d.ts +1 -1
  83. package/dist/server/custom-context-modes.d.ts.map +1 -1
  84. package/dist/server/design-handlers.d.ts +8 -0
  85. package/dist/server/design-handlers.d.ts.map +1 -1
  86. package/dist/server/discover-mailbox-bridge.d.ts.map +1 -1
  87. package/dist/server/embedded-host-adapters.d.ts +96 -0
  88. package/dist/server/embedded-host-adapters.d.ts.map +1 -0
  89. package/dist/server/embedded-lifecycle.d.ts +113 -0
  90. package/dist/server/embedded-lifecycle.d.ts.map +1 -0
  91. package/dist/server/embedded-message-router.d.ts +64 -0
  92. package/dist/server/embedded-message-router.d.ts.map +1 -0
  93. package/dist/server/entry.js +17227 -14052
  94. package/dist/server/entry.js.map +4 -4
  95. package/dist/server/eternal-iteration-broadcast.d.ts +1 -1
  96. package/dist/server/eternal-iteration-broadcast.d.ts.map +1 -1
  97. package/dist/server/file-handlers.d.ts.map +1 -1
  98. package/dist/server/frontend-static-serve.d.ts +133 -0
  99. package/dist/server/frontend-static-serve.d.ts.map +1 -0
  100. package/dist/server/git-process.d.ts +4 -0
  101. package/dist/server/git-process.d.ts.map +1 -0
  102. package/dist/server/goal-snapshot-routes.d.ts +7 -0
  103. package/dist/server/goal-snapshot-routes.d.ts.map +1 -0
  104. package/dist/server/goal-ws-handler.d.ts +3 -1
  105. package/dist/server/goal-ws-handler.d.ts.map +1 -1
  106. package/dist/server/handlers/worklist-handlers.d.ts +14 -20
  107. package/dist/server/handlers/worklist-handlers.d.ts.map +1 -1
  108. package/dist/server/handlers.js +150 -121
  109. package/dist/server/handlers.js.map +3 -3
  110. package/dist/server/host-routes.d.ts +7 -0
  111. package/dist/server/host-routes.d.ts.map +1 -0
  112. package/dist/server/http-server/analytics-handler.d.ts +2 -0
  113. package/dist/server/http-server/analytics-handler.d.ts.map +1 -1
  114. package/dist/server/http-server/api-handlers.d.ts.map +1 -1
  115. package/dist/server/http-server.d.ts +20 -23
  116. package/dist/server/http-server.d.ts.map +1 -1
  117. package/dist/server/index.d.ts +57 -22
  118. package/dist/server/index.d.ts.map +1 -1
  119. package/dist/server/instance-registry.d.ts +1 -3
  120. package/dist/server/instance-registry.d.ts.map +1 -1
  121. package/dist/server/introspection-routes.d.ts +19 -0
  122. package/dist/server/introspection-routes.d.ts.map +1 -0
  123. package/dist/server/kanban-board-watcher.d.ts +19 -0
  124. package/dist/server/kanban-board-watcher.d.ts.map +1 -0
  125. package/dist/server/kanban-dispatch.d.ts +42 -0
  126. package/dist/server/kanban-dispatch.d.ts.map +1 -0
  127. package/dist/server/kanban-host-routes.d.ts +10 -0
  128. package/dist/server/kanban-host-routes.d.ts.map +1 -0
  129. package/dist/server/kanban-routes.d.ts +13 -3
  130. package/dist/server/kanban-routes.d.ts.map +1 -1
  131. package/dist/server/kanban-run-mirror.d.ts +76 -0
  132. package/dist/server/kanban-run-mirror.d.ts.map +1 -0
  133. package/dist/server/kanban-supervisor.d.ts +47 -0
  134. package/dist/server/kanban-supervisor.d.ts.map +1 -0
  135. package/dist/server/mailbox-handlers.d.ts +12 -4
  136. package/dist/server/mailbox-handlers.d.ts.map +1 -1
  137. package/dist/server/mailbox-routes.d.ts +8 -0
  138. package/dist/server/mailbox-routes.d.ts.map +1 -1
  139. package/dist/server/mcp-handlers.d.ts +4 -0
  140. package/dist/server/mcp-handlers.d.ts.map +1 -1
  141. package/dist/server/memory-handlers.d.ts +54 -46
  142. package/dist/server/memory-handlers.d.ts.map +1 -1
  143. package/dist/server/memory-routes.d.ts +11 -0
  144. package/dist/server/memory-routes.d.ts.map +1 -0
  145. package/dist/server/message-dispatcher.d.ts +3 -4
  146. package/dist/server/message-dispatcher.d.ts.map +1 -1
  147. package/dist/server/mode-handlers.d.ts +6 -15
  148. package/dist/server/mode-handlers.d.ts.map +1 -1
  149. package/dist/server/mode-operations.d.ts +24 -0
  150. package/dist/server/mode-operations.d.ts.map +1 -0
  151. package/dist/server/mode-routes.d.ts +2 -0
  152. package/dist/server/mode-routes.d.ts.map +1 -1
  153. package/dist/server/model-auto-discovery.d.ts +1 -1
  154. package/dist/server/model-auto-discovery.d.ts.map +1 -1
  155. package/dist/server/model-catalog.d.ts +1 -1
  156. package/dist/server/model-catalog.d.ts.map +1 -1
  157. package/dist/server/model-operations.d.ts +29 -0
  158. package/dist/server/model-operations.d.ts.map +1 -0
  159. package/dist/server/network-info.d.ts +50 -0
  160. package/dist/server/network-info.d.ts.map +1 -0
  161. package/dist/server/path-containment.d.ts.map +1 -1
  162. package/dist/server/port-utils.d.ts +18 -25
  163. package/dist/server/port-utils.d.ts.map +1 -1
  164. package/dist/server/pre-context-services.d.ts +32 -5
  165. package/dist/server/pre-context-services.d.ts.map +1 -1
  166. package/dist/server/pref-helpers.d.ts +1 -3
  167. package/dist/server/pref-helpers.d.ts.map +1 -1
  168. package/dist/server/prefs-handlers.d.ts +22 -0
  169. package/dist/server/prefs-handlers.d.ts.map +1 -0
  170. package/dist/server/prefs-routes.d.ts +5 -0
  171. package/dist/server/prefs-routes.d.ts.map +1 -1
  172. package/dist/server/privileged-actions.d.ts +16 -0
  173. package/dist/server/privileged-actions.d.ts.map +1 -0
  174. package/dist/server/process-handlers.d.ts +8 -6
  175. package/dist/server/process-handlers.d.ts.map +1 -1
  176. package/dist/server/process-routes.d.ts +9 -0
  177. package/dist/server/process-routes.d.ts.map +1 -0
  178. package/dist/server/project-handlers.d.ts +25 -33
  179. package/dist/server/project-handlers.d.ts.map +1 -1
  180. package/dist/server/projects-manifest.d.ts +8 -0
  181. package/dist/server/projects-manifest.d.ts.map +1 -1
  182. package/dist/server/prompts-handlers.d.ts +2 -1
  183. package/dist/server/prompts-handlers.d.ts.map +1 -1
  184. package/dist/server/provider-config-io.d.ts +2 -2
  185. package/dist/server/provider-config-io.d.ts.map +1 -1
  186. package/dist/server/provider-config-standalone.d.ts +5 -3
  187. package/dist/server/provider-config-standalone.d.ts.map +1 -1
  188. package/dist/server/provider-handlers.d.ts +63 -6
  189. package/dist/server/provider-handlers.d.ts.map +1 -1
  190. package/dist/server/provider-keys.d.ts +1 -1
  191. package/dist/server/provider-keys.d.ts.map +1 -1
  192. package/dist/server/provider-routes.d.ts +28 -2
  193. package/dist/server/provider-routes.d.ts.map +1 -1
  194. package/dist/server/provider-store.d.ts +5 -4
  195. package/dist/server/provider-store.d.ts.map +1 -1
  196. package/dist/server/route-family-dispatcher.d.ts +71 -0
  197. package/dist/server/route-family-dispatcher.d.ts.map +1 -0
  198. package/dist/server/routes.d.ts +17 -7
  199. package/dist/server/routes.d.ts.map +1 -1
  200. package/dist/server/sdd-board-ws-handler.d.ts +5 -1
  201. package/dist/server/sdd-board-ws-handler.d.ts.map +1 -1
  202. package/dist/server/sdd-wizard-wiring.d.ts +14 -3
  203. package/dist/server/sdd-wizard-wiring.d.ts.map +1 -1
  204. package/dist/server/sdd-wizard-ws-handler.d.ts.map +1 -1
  205. package/dist/server/server-runtime.d.ts +16 -12
  206. package/dist/server/server-runtime.d.ts.map +1 -1
  207. package/dist/server/session-handlers.d.ts +30 -11
  208. package/dist/server/session-handlers.d.ts.map +1 -1
  209. package/dist/server/session-history.d.ts +1 -1
  210. package/dist/server/session-history.d.ts.map +1 -1
  211. package/dist/server/setup-event-projection.d.ts +10 -0
  212. package/dist/server/setup-event-projection.d.ts.map +1 -0
  213. package/dist/server/setup-events-watcher.d.ts +13 -0
  214. package/dist/server/setup-events-watcher.d.ts.map +1 -0
  215. package/dist/server/setup-events.d.ts +11 -21
  216. package/dist/server/setup-events.d.ts.map +1 -1
  217. package/dist/server/setup-screen.d.ts +2 -1
  218. package/dist/server/setup-screen.d.ts.map +1 -1
  219. package/dist/server/shell-open.d.ts +26 -2
  220. package/dist/server/shell-open.d.ts.map +1 -1
  221. package/dist/server/skills-handlers.d.ts +2 -2
  222. package/dist/server/skills-handlers.d.ts.map +1 -1
  223. package/dist/server/specs-ws-handler.d.ts.map +1 -1
  224. package/dist/server/standalone-session-identity.d.ts +3 -2
  225. package/dist/server/standalone-session-identity.d.ts.map +1 -1
  226. package/dist/server/start-webui.d.ts +9 -1
  227. package/dist/server/start-webui.d.ts.map +1 -1
  228. package/dist/server/stream-coalescer.d.ts +49 -0
  229. package/dist/server/stream-coalescer.d.ts.map +1 -0
  230. package/dist/server/techstack-handlers.d.ts +12 -2
  231. package/dist/server/techstack-handlers.d.ts.map +1 -1
  232. package/dist/server/terminal-ws-handler.d.ts +5 -3
  233. package/dist/server/terminal-ws-handler.d.ts.map +1 -1
  234. package/dist/server/types.d.ts +10 -3
  235. package/dist/server/types.d.ts.map +1 -1
  236. package/dist/server/worklist-routes.d.ts +21 -0
  237. package/dist/server/worklist-routes.d.ts.map +1 -0
  238. package/dist/server/worktree-routes.d.ts +10 -0
  239. package/dist/server/worktree-routes.d.ts.map +1 -0
  240. package/dist/server/worktree-ws-handler.d.ts +2 -1
  241. package/dist/server/worktree-ws-handler.d.ts.map +1 -1
  242. package/dist/server/ws-auth.d.ts.map +1 -1
  243. package/dist/server/ws-payload-validation.d.ts +11 -0
  244. package/dist/server/ws-payload-validation.d.ts.map +1 -1
  245. package/dist/server/ws-utils.d.ts +8 -0
  246. package/dist/server/ws-utils.d.ts.map +1 -1
  247. package/package.json +14 -10
@@ -0,0 +1,96 @@
1
+ import type { Agent } from '@wrongstack/core/agent';
2
+ import type { Config, MemoryPort, ModelsRegistry, ModeStore, ProviderConfig, SessionStore, SessionWriter } from '@wrongstack/core/types';
3
+ import type { WebSocket } from 'ws';
4
+ import type { ConversationRouteHandlers } from './conversation-routes.js';
5
+ import type { CustomModeStore } from './custom-context-modes.js';
6
+ import type { PendingConfirm } from './pending-confirms.js';
7
+ import type { ProjectRouteHandlers } from './project-routes.js';
8
+ import type { SessionRouteHandlers } from './session-routes.js';
9
+ import type { WSServerMessage } from './types.js';
10
+ export interface EmbeddedHostTransport {
11
+ send: (ws: WebSocket, message: WSServerMessage) => void;
12
+ broadcast: (message: WSServerMessage) => void;
13
+ log: (message: string) => void;
14
+ }
15
+ export interface EmbeddedProviderStore {
16
+ load(): Promise<Record<string, ProviderConfig>>;
17
+ save(providers: Record<string, ProviderConfig>): Promise<void>;
18
+ }
19
+ export interface EmbeddedProviderContext extends EmbeddedHostTransport {
20
+ providerStore: EmbeddedProviderStore;
21
+ modelsRegistry: ModelsRegistry | undefined;
22
+ }
23
+ export interface EmbeddedAgentConfigContext extends EmbeddedHostTransport {
24
+ agent: Agent;
25
+ modeStore: ModeStore | undefined;
26
+ buildSessionStart: (overrides?: Record<string, unknown>) => Promise<unknown>;
27
+ loadSavedProviders: () => Promise<Record<string, ProviderConfig>>;
28
+ modelsRegistry?: ModelsRegistry | undefined;
29
+ memoryStore?: MemoryPort | undefined;
30
+ getConfig?: (() => Config | undefined) | undefined;
31
+ onMaxContextResolved?: ((providerId: string, modelId: string, maxContext: number) => void) | undefined;
32
+ persistPrefs?: ((payload: Record<string, unknown>) => Promise<void>) | undefined;
33
+ }
34
+ export declare function applyEmbeddedModelSwitch(ctx: EmbeddedAgentConfigContext, providerId: string, modelId: string): Promise<void>;
35
+ export declare function createEmbeddedProviderOperations(ctx: EmbeddedProviderContext): {
36
+ handleProvidersList: (ws: WebSocket) => Promise<void>;
37
+ handleProvidersSaved: (ws: WebSocket) => Promise<void>;
38
+ handleProviderModels: (ws: WebSocket, providerId: string) => Promise<void>;
39
+ adoptDefaultProviderIfUnset: (providerId: string) => Promise<void>;
40
+ broadcastSaved: (providers: Record<string, ProviderConfig>) => void;
41
+ handleKeyUpsert: (ws: WebSocket, providerId: string, label: string, apiKey: string) => Promise<void>;
42
+ handleKeyDelete: (ws: WebSocket, providerId: string, label: string) => Promise<void>;
43
+ handleKeySetActive: (ws: WebSocket, providerId: string, label: string) => Promise<void>;
44
+ handleProviderAdd: (ws: WebSocket, payload: {
45
+ id: string;
46
+ family: string;
47
+ baseUrl?: string | undefined;
48
+ apiKey?: string | undefined;
49
+ }) => Promise<void>;
50
+ handleProviderRemove: (ws: WebSocket, providerId: string) => Promise<void>;
51
+ handleProviderClearModels: (ws: WebSocket, providerId: string) => Promise<void>;
52
+ handleProviderUndoClear: (ws: WebSocket, providerId: string, previousModels: string[]) => Promise<void>;
53
+ handleProviderUpdate: (ws: WebSocket, payload: {
54
+ id: string;
55
+ family?: string | undefined;
56
+ baseUrl?: string | undefined;
57
+ envVars?: string[] | undefined;
58
+ models?: string[] | undefined;
59
+ }) => Promise<void>;
60
+ handleProviderProbe: (ws: WebSocket, providerId: string, timeoutMs?: number) => Promise<void>;
61
+ handleOAuthStart: (ws: WebSocket, kind: import("@wrongstack/providers/oauth").OAuthKind, customProviderId?: string) => Promise<void>;
62
+ handleOAuthCode: (ws: WebSocket, kind: import("@wrongstack/providers/oauth").OAuthKind, input: string) => Promise<void>;
63
+ handleOAuthCancel: (ws: WebSocket, kind: import("@wrongstack/providers/oauth").OAuthKind) => void;
64
+ loadConfigProviders: () => Promise<Record<string, ProviderConfig>>;
65
+ };
66
+ export interface EmbeddedConversationContext extends EmbeddedHostTransport {
67
+ agent: Agent;
68
+ abortControllers: Map<WebSocket, AbortController>;
69
+ pendingConfirms: Map<string, PendingConfirm>;
70
+ }
71
+ export declare function createEmbeddedConversationRoutes(ctx: EmbeddedConversationContext): ConversationRouteHandlers;
72
+ export interface EmbeddedSessionOptions {
73
+ projectRoot?: string | undefined;
74
+ agent: Agent;
75
+ session: SessionWriter;
76
+ sessionStore?: SessionStore | undefined;
77
+ sessionsDir?: string | undefined;
78
+ onSessionSwapped?: ((sessionId: string) => void) | undefined;
79
+ }
80
+ export interface EmbeddedSessionContext extends EmbeddedHostTransport {
81
+ opts: EmbeddedSessionOptions;
82
+ buildSessionStart: (overrides?: Record<string, unknown>) => Promise<unknown>;
83
+ getCustomModeStore: () => Promise<CustomModeStore>;
84
+ }
85
+ export declare function createEmbeddedSessionRoutes(ctx: EmbeddedSessionContext): SessionRouteHandlers;
86
+ export declare function broadcastEmbeddedGoalSnapshot(ctx: EmbeddedSessionContext): Promise<void>;
87
+ export interface EmbeddedProjectContext extends EmbeddedHostTransport {
88
+ opts: EmbeddedSessionOptions & {
89
+ globalConfigPath?: string | undefined;
90
+ };
91
+ abortControllers: Map<WebSocket, AbortController>;
92
+ abortLegacyRun: () => void;
93
+ buildSessionStart: (overrides?: Record<string, unknown>) => Promise<unknown>;
94
+ }
95
+ export declare function createEmbeddedProjectRoutes(ctx: EmbeddedProjectContext): ProjectRouteHandlers;
96
+ //# sourceMappingURL=embedded-host-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-host-adapters.d.ts","sourceRoot":"","sources":["../../src/server/embedded-host-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { type WebUIInstanceRecord } from './instance-registry.js';
2
+ import type { SurfaceKind } from './port-utils.js';
3
+ /**
4
+ * PR 7 of Issue #30 (webui-server 8-PR refactor): process lifecycle.
5
+ *
6
+ * Three concerns pulled out of the ~3000-line `runWebUI` body:
7
+ *
8
+ * - `registerWebuiInstance` — record this embedded WebUI in the shared
9
+ * running-instance registry (so `wstack --webui --list` sees it).
10
+ * - `announceWebuiReady` — log the ready banner and pop the browser
11
+ * once the HTTP server is listening.
12
+ * - `createWebuiShutdown` + `registerWebuiSignalHandlers` — the
13
+ * SIGINT/SIGTERM teardown sequence.
14
+ *
15
+ * Each external dependency (registry IO, browser launch) is an
16
+ * injectable seam so the orchestration can be unit-tested without
17
+ * touching disk or spawning a browser. Run-loop state (abort
18
+ * controllers, client map, the run promise's `resolve`) stays in
19
+ * `webui-server.ts` and is threaded in as callbacks — the module never
20
+ * captures it.
21
+ */
22
+ export interface RegisterWebuiInstanceParams {
23
+ pid: number;
24
+ /** Surface kind — 'webui' or 'simpleui'. */
25
+ surface: SurfaceKind;
26
+ host: string;
27
+ /** Port serving both HTTP and WebSocket (single-port design). */
28
+ httpPort: number;
29
+ /** Browser-facing public URL when served through a tunnel/proxy. */
30
+ publicUrl?: string | undefined;
31
+ projectRoot: string;
32
+ /** ISO timestamp when the instance registered. */
33
+ startedAt: string;
34
+ /** Registry base dir (dirname of globalConfigPath); undefined ⇒ registry default. */
35
+ registryBaseDir: string | undefined;
36
+ }
37
+ export interface RegisterWebuiInstanceDeps {
38
+ registerFn?: (record: WebUIInstanceRecord, baseDir?: string) => Promise<void>;
39
+ }
40
+ /**
41
+ * Fire-and-forget registration of this WebUI in the running-instance
42
+ * registry. Best-effort: a registry write error never blocks startup and
43
+ * is swallowed (the registry is a convenience index, not a source of
44
+ * truth). Caller guards on `projectRoot` being known.
45
+ */
46
+ export declare function registerWebuiInstance(p: RegisterWebuiInstanceParams, deps?: RegisterWebuiInstanceDeps): void;
47
+ export interface AnnounceWebuiReadyParams {
48
+ /** Surface kind — 'webui' or 'simpleui'. */
49
+ surface: SurfaceKind;
50
+ /** The HTTP server (StaticServeHandle.server). */
51
+ server: {
52
+ on: (event: 'listening', cb: () => void) => void;
53
+ };
54
+ host: string;
55
+ /** Port serving both HTTP and WebSocket. */
56
+ httpPort: number;
57
+ open: boolean;
58
+ /** Auth token for WS connections. Included in the URL so the frontend can exchange it for an HttpOnly cookie via /ws-auth. */
59
+ wsToken?: string;
60
+ /** Browser-facing public URL when served through a tunnel/proxy. */
61
+ publicUrl?: string | undefined;
62
+ log?: (msg: string) => void;
63
+ openBrowserFn?: (url: string) => void;
64
+ }
65
+ /**
66
+ * Once the HTTP server is listening, print the ready banner and (if
67
+ * `open`) launch the browser at the served URL.
68
+ */
69
+ export declare function announceWebuiReady(p: AnnounceWebuiReadyParams): void;
70
+ export interface WebuiShutdownResources {
71
+ /** Abort every in-flight run (legacy single slot + per-socket controllers) and clear them. */
72
+ abortInFlight: () => void;
73
+ /** Run and drop every event-bus unsubscriber. */
74
+ unsubscribeEvents: () => void;
75
+ /** Close every connected socket and clear the client map. */
76
+ closeClients: () => void;
77
+ /** Close the static HTTP server (no-op when WS-only). */
78
+ closeHttpServer: () => void;
79
+ /** The WebSocket server to stop (its close callback resolves the run promise). */
80
+ wss: {
81
+ close: (cb?: () => void) => void;
82
+ };
83
+ /** This process's pid — the registry liveness key. */
84
+ pid: number;
85
+ /** Registry base dir (undefined ⇒ registry default). */
86
+ registryBaseDir: string | undefined;
87
+ /** Called once teardown settles — wired to the run promise's `resolve`. */
88
+ onStopped: () => void;
89
+ log?: (msg: string) => void;
90
+ debug?: (msg: string) => void;
91
+ /** Injectable for tests; defaults to the real registry unregister. */
92
+ unregisterFn?: (pid: number, baseDir?: string) => Promise<void>;
93
+ }
94
+ /**
95
+ * Build the SIGINT/SIGTERM teardown handler. The returned function is
96
+ * idempotent: the first call runs the teardown, later calls (e.g. a
97
+ * second Ctrl+C, or a signal after another server in the same process
98
+ * already stopped) return immediately.
99
+ *
100
+ * Order matches the original inline handler: abort runs → unsubscribe
101
+ * events → close clients → unregister from the instance registry (async,
102
+ * awaited inside the wss.close callback) → close HTTP → close WS → on
103
+ * close, once the unregister settles, `onStopped()`.
104
+ */
105
+ export declare function createWebuiShutdown(res: WebuiShutdownResources): () => void;
106
+ /**
107
+ * Register `shutdown` on SIGINT and SIGTERM. The wrapper self-detaches
108
+ * both listeners on first fire (so a server that has already shut down
109
+ * can't re-trigger teardown). Returns an unregister function for tests
110
+ * and clean restarts.
111
+ */
112
+ export declare function registerWebuiSignalHandlers(shutdown: () => void): () => void;
113
+ //# sourceMappingURL=embedded-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-lifecycle.d.ts","sourceRoot":"","sources":["../../src/server/embedded-lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD;;;;;;;;;;;;;;;;;;GAkBG;AAIH,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,2BAA2B,EAC9B,IAAI,GAAE,yBAA8B,GACnC,IAAI,CAmBN;AAID,MAAM,WAAW,wBAAwB;IACvC,4CAA4C;IAC5C,OAAO,EAAE,WAAW,CAAC;IACrB,kDAAkD;IAClD,MAAM,EAAE;QAAE,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;KAAE,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,8HAA8H;IAC9H,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,wBAAwB,GAAG,IAAI,CA4BpE;AAID,MAAM,WAAW,sBAAsB;IACrC,8FAA8F;IAC9F,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,yDAAyD;IACzD,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,kFAAkF;IAClF,GAAG,EAAE;QAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;KAAE,CAAC;IAC1C,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,sBAAsB,GAAG,MAAM,IAAI,CA2B3E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAY5E"}
@@ -0,0 +1,64 @@
1
+ import type { Agent } from '@wrongstack/core/agent';
2
+ import type { TrustBoundary } from '@wrongstack/core/security';
3
+ import type { Logger, MemoryPort } from '@wrongstack/core/types';
4
+ import type { MCPRegistry } from '@wrongstack/mcp';
5
+ import type { WebSocket } from 'ws';
6
+ import { type BrainHandlerContext } from './brain-handlers.js';
7
+ import type { DesignContext } from './design-handlers.js';
8
+ import { type EmbeddedAgentConfigContext, type EmbeddedConversationContext, type EmbeddedProjectContext, type EmbeddedProviderContext, type EmbeddedSessionContext } from './embedded-host-adapters.js';
9
+ import type { GoalWebSocketHandler } from './goal-ws-handler.js';
10
+ import type { IntrospectionRouteContext } from './introspection-routes.js';
11
+ import type { KanbanTaskDispatcher } from './kanban-dispatch.js';
12
+ import type { KanbanHostRouteHandlers } from './kanban-host-routes.js';
13
+ import type { MailboxRouteHandlers } from './mailbox-routes.js';
14
+ import type { PrefsHandlerContext } from './prefs-handlers.js';
15
+ import type { PromptsContext } from './prompts-handlers.js';
16
+ import type { SddBoardWebSocketHandler } from './sdd-board-ws-handler.js';
17
+ import type { SddWizardWebSocketHandler } from './sdd-wizard-ws-handler.js';
18
+ import type { SkillsContext } from './skills-handlers.js';
19
+ import type { SpecsWebSocketHandler } from './specs-ws-handler.js';
20
+ import type { TerminalWebSocketHandler } from './terminal-ws-handler.js';
21
+ import type { WSClientMessage, WSServerMessage } from './types.js';
22
+ import type { WorktreeWebSocketHandler } from './worktree-ws-handler.js';
23
+ export interface EmbeddedMessageRouterOptions {
24
+ agent: Agent;
25
+ projectRoot?: string | undefined;
26
+ profileConfigPath: string;
27
+ mcpRegistry?: MCPRegistry | undefined;
28
+ memoryStore?: MemoryPort | undefined;
29
+ onKanbanDispatch?: KanbanTaskDispatcher | undefined;
30
+ }
31
+ export interface EmbeddedMessageRouterDeps {
32
+ trustBoundary: TrustBoundary;
33
+ opts: EmbeddedMessageRouterOptions;
34
+ logger: Logger;
35
+ send: (ws: WebSocket, message: WSServerMessage) => void;
36
+ sendResult: (ws: WebSocket, success: boolean, message: string) => void;
37
+ sessionPayload: <T extends Record<string, unknown>>(payload: T) => T & {
38
+ sessionId: string;
39
+ };
40
+ currentSessionId: () => string;
41
+ shutdown: () => void;
42
+ providerCtx: EmbeddedProviderContext;
43
+ brainCtx: BrainHandlerContext;
44
+ introspectionCtx: IntrospectionRouteContext;
45
+ skillsCtx: SkillsContext;
46
+ promptsCtx: PromptsContext;
47
+ designCtx: DesignContext;
48
+ agentConfigCtx: EmbeddedAgentConfigContext;
49
+ prefsCtx: PrefsHandlerContext;
50
+ projectCtx: EmbeddedProjectContext;
51
+ sessionCtx: EmbeddedSessionContext;
52
+ conversationCtx: EmbeddedConversationContext;
53
+ mailboxRoutes: MailboxRouteHandlers;
54
+ goalHandler: GoalWebSocketHandler;
55
+ specsHandler: SpecsWebSocketHandler;
56
+ sddBoardHandler: SddBoardWebSocketHandler;
57
+ sddWizardHandler: SddWizardWebSocketHandler | null;
58
+ worktreeHandler: WorktreeWebSocketHandler;
59
+ terminalHandler: TerminalWebSocketHandler;
60
+ kanbanHostRoutes: KanbanHostRouteHandlers;
61
+ }
62
+ export type EmbeddedMessageRouter = (ws: WebSocket, client: unknown, message: WSClientMessage) => Promise<void>;
63
+ export declare function createEmbeddedMessageRouter(deps: EmbeddedMessageRouterDeps): EmbeddedMessageRouter;
64
+ //# sourceMappingURL=embedded-message-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-message-router.d.ts","sourceRoot":"","sources":["../../src/server/embedded-message-router.ts"],"names":[],"mappings":"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"}