@wrongstack/webui-server 0.296.4 → 0.298.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/index.js +2138 -793
  2. package/dist/protocol/client-conversation.d.ts +1 -1
  3. package/dist/protocol/index.js +7 -1
  4. package/dist/protocol/projections.d.ts +5 -1
  5. package/dist/protocol/registry.d.ts +2 -2
  6. package/dist/protocol/server-conversation.d.ts +1 -1
  7. package/dist/server/backend-services.d.ts +8 -2
  8. package/dist/server/codemap-cache.d.ts +1 -0
  9. package/dist/server/collaboration-ws-handler.d.ts +2 -2
  10. package/dist/server/connection-lifecycle.d.ts +13 -0
  11. package/dist/server/connections-health-route.d.ts +7 -1
  12. package/dist/server/context-editor.d.ts +1 -2
  13. package/dist/server/embedded-lifecycle.d.ts +2 -0
  14. package/dist/server/entry.js +1760 -744
  15. package/dist/server/frontend-static-serve.d.ts +7 -0
  16. package/dist/server/goal-ws-handler.d.ts +3 -1
  17. package/dist/server/governance-runtime.d.ts +30 -0
  18. package/dist/server/http-server.d.ts +7 -0
  19. package/dist/server/kanban-supervisor.d.ts +6 -0
  20. package/dist/server/mailbox-handlers.d.ts +2 -1
  21. package/dist/server/mailbox-routes.d.ts +1 -0
  22. package/dist/server/mcp-handlers.d.ts +3 -1
  23. package/dist/server/memory-diagnostics.d.ts +69 -0
  24. package/dist/server/memory-handlers.d.ts +3 -3
  25. package/dist/server/pending-confirms.d.ts +9 -0
  26. package/dist/server/sdd-board-ws-handler.d.ts +15 -8
  27. package/dist/server/sdd-wizard-wiring.d.ts +5 -6
  28. package/dist/server/sdd-wizard-ws-handler.d.ts +18 -6
  29. package/dist/server/specs-ws-handler.d.ts +1 -0
  30. package/dist/server/types.d.ts +5 -1
  31. package/dist/server/worktree-ws-handler.d.ts +30 -2
  32. package/dist/server/ws-auth.d.ts +24 -0
  33. package/dist/server/ws-payload-validation.d.ts +26 -0
  34. package/dist/server/ws-utils.d.ts +12 -1
  35. package/package.json +12 -11
  36. package/dist/index.d.ts.map +0 -1
  37. package/dist/index.js.map +0 -7
  38. package/dist/protocol/client-conversation.d.ts.map +0 -1
  39. package/dist/protocol/client-integrations.d.ts.map +0 -1
  40. package/dist/protocol/client-operations.d.ts.map +0 -1
  41. package/dist/protocol/client-workspace.d.ts.map +0 -1
  42. package/dist/protocol/connection-fsm.d.ts.map +0 -1
  43. package/dist/protocol/decoder.d.ts.map +0 -1
  44. package/dist/protocol/index.d.ts.map +0 -1
  45. package/dist/protocol/index.js.map +0 -7
  46. package/dist/protocol/projections.d.ts.map +0 -1
  47. package/dist/protocol/registry.d.ts.map +0 -1
  48. package/dist/protocol/replay-payload.d.ts.map +0 -1
  49. package/dist/protocol/server-conversation.d.ts.map +0 -1
  50. package/dist/protocol/server-integrations.d.ts.map +0 -1
  51. package/dist/protocol/server-operations.d.ts.map +0 -1
  52. package/dist/protocol/server-workspace.d.ts.map +0 -1
  53. package/dist/protocol/types.d.ts.map +0 -1
  54. package/dist/protocol/version.d.ts.map +0 -1
  55. package/dist/server/agent-roster-handlers.d.ts.map +0 -1
  56. package/dist/server/agent-roster-routes.d.ts.map +0 -1
  57. package/dist/server/autonomy-routes.d.ts.map +0 -1
  58. package/dist/server/backend-services.d.ts.map +0 -1
  59. package/dist/server/boot.d.ts.map +0 -1
  60. package/dist/server/brain-handlers.d.ts.map +0 -1
  61. package/dist/server/brain-routes.d.ts.map +0 -1
  62. package/dist/server/chronicle-routes.d.ts.map +0 -1
  63. package/dist/server/client-presence.d.ts.map +0 -1
  64. package/dist/server/client-transport-routes.d.ts.map +0 -1
  65. package/dist/server/codebase-index-server-control.d.ts.map +0 -1
  66. package/dist/server/codebase-indexing.d.ts.map +0 -1
  67. package/dist/server/codemap-cache.d.ts.map +0 -1
  68. package/dist/server/codemap-handlers.d.ts.map +0 -1
  69. package/dist/server/codemap-telemetry.d.ts.map +0 -1
  70. package/dist/server/collaboration-ws-handler.d.ts.map +0 -1
  71. package/dist/server/completion-handlers.d.ts.map +0 -1
  72. package/dist/server/completion-routes.d.ts.map +0 -1
  73. package/dist/server/config-doctor.d.ts.map +0 -1
  74. package/dist/server/connection-handler.d.ts.map +0 -1
  75. package/dist/server/connection-lifecycle.d.ts.map +0 -1
  76. package/dist/server/connections-health-route.d.ts.map +0 -1
  77. package/dist/server/content-routes.d.ts.map +0 -1
  78. package/dist/server/context-editor.d.ts.map +0 -1
  79. package/dist/server/context-meta.d.ts.map +0 -1
  80. package/dist/server/conversation-operations.d.ts.map +0 -1
  81. package/dist/server/conversation-routes.d.ts.map +0 -1
  82. package/dist/server/custom-context-modes.d.ts.map +0 -1
  83. package/dist/server/deadcode-handlers.d.ts.map +0 -1
  84. package/dist/server/design-handlers.d.ts.map +0 -1
  85. package/dist/server/discover-mailbox-bridge.d.ts.map +0 -1
  86. package/dist/server/embedded-host-adapters.d.ts.map +0 -1
  87. package/dist/server/embedded-lifecycle.d.ts.map +0 -1
  88. package/dist/server/embedded-message-router.d.ts.map +0 -1
  89. package/dist/server/entry.d.ts.map +0 -1
  90. package/dist/server/entry.js.map +0 -7
  91. package/dist/server/eternal-iteration-broadcast.d.ts.map +0 -1
  92. package/dist/server/file-handlers.d.ts.map +0 -1
  93. package/dist/server/file-picker.d.ts.map +0 -1
  94. package/dist/server/frontend-static-serve.d.ts.map +0 -1
  95. package/dist/server/git-handlers.d.ts.map +0 -1
  96. package/dist/server/git-process.d.ts.map +0 -1
  97. package/dist/server/goal-handlers.d.ts.map +0 -1
  98. package/dist/server/goal-routes.d.ts.map +0 -1
  99. package/dist/server/goal-snapshot-routes.d.ts.map +0 -1
  100. package/dist/server/goal-ws-handler.d.ts.map +0 -1
  101. package/dist/server/handlers/index.d.ts.map +0 -1
  102. package/dist/server/handlers/worklist-handlers.d.ts.map +0 -1
  103. package/dist/server/handlers.js.map +0 -7
  104. package/dist/server/host-routes.d.ts.map +0 -1
  105. package/dist/server/http-server/analytics-handler.d.ts.map +0 -1
  106. package/dist/server/http-server/api-handlers.d.ts.map +0 -1
  107. package/dist/server/http-server.d.ts.map +0 -1
  108. package/dist/server/index.d.ts.map +0 -1
  109. package/dist/server/instance-registry.d.ts.map +0 -1
  110. package/dist/server/introspection-routes.d.ts.map +0 -1
  111. package/dist/server/kanban-board-watcher.d.ts.map +0 -1
  112. package/dist/server/kanban-daemon-subscriber.d.ts.map +0 -1
  113. package/dist/server/kanban-decomposition-routes.d.ts.map +0 -1
  114. package/dist/server/kanban-dispatch.d.ts.map +0 -1
  115. package/dist/server/kanban-host-routes.d.ts.map +0 -1
  116. package/dist/server/kanban-route-helpers.d.ts.map +0 -1
  117. package/dist/server/kanban-route-pagination.d.ts.map +0 -1
  118. package/dist/server/kanban-route-protocol.d.ts.map +0 -1
  119. package/dist/server/kanban-routes.d.ts.map +0 -1
  120. package/dist/server/kanban-run-mirror.d.ts.map +0 -1
  121. package/dist/server/kanban-supervisor.d.ts.map +0 -1
  122. package/dist/server/kanban-task-routes.d.ts.map +0 -1
  123. package/dist/server/lifecycle.d.ts.map +0 -1
  124. package/dist/server/mailbox-handlers.d.ts.map +0 -1
  125. package/dist/server/mailbox-routes.d.ts.map +0 -1
  126. package/dist/server/mcp-handlers.d.ts.map +0 -1
  127. package/dist/server/mcp-routes.d.ts.map +0 -1
  128. package/dist/server/memory-handlers.d.ts.map +0 -1
  129. package/dist/server/memory-routes.d.ts.map +0 -1
  130. package/dist/server/message-dispatcher.d.ts.map +0 -1
  131. package/dist/server/mode-handlers.d.ts.map +0 -1
  132. package/dist/server/mode-operations.d.ts.map +0 -1
  133. package/dist/server/mode-routes.d.ts.map +0 -1
  134. package/dist/server/model-auto-discovery.d.ts.map +0 -1
  135. package/dist/server/model-catalog-search.d.ts.map +0 -1
  136. package/dist/server/model-catalog.d.ts.map +0 -1
  137. package/dist/server/model-operations.d.ts.map +0 -1
  138. package/dist/server/network-info.d.ts.map +0 -1
  139. package/dist/server/open-browser.d.ts.map +0 -1
  140. package/dist/server/path-containment.d.ts.map +0 -1
  141. package/dist/server/pending-confirms.d.ts.map +0 -1
  142. package/dist/server/port-utils.d.ts.map +0 -1
  143. package/dist/server/pre-context-services.d.ts.map +0 -1
  144. package/dist/server/pref-helpers.d.ts.map +0 -1
  145. package/dist/server/prefs-handlers.d.ts.map +0 -1
  146. package/dist/server/prefs-routes.d.ts.map +0 -1
  147. package/dist/server/privileged-actions.d.ts.map +0 -1
  148. package/dist/server/process-handlers.d.ts.map +0 -1
  149. package/dist/server/process-routes.d.ts.map +0 -1
  150. package/dist/server/project-handlers.d.ts.map +0 -1
  151. package/dist/server/project-routes.d.ts.map +0 -1
  152. package/dist/server/projects-manifest.d.ts.map +0 -1
  153. package/dist/server/prompts-handlers.d.ts.map +0 -1
  154. package/dist/server/provider-config-io.d.ts.map +0 -1
  155. package/dist/server/provider-config-standalone.d.ts.map +0 -1
  156. package/dist/server/provider-handlers.d.ts.map +0 -1
  157. package/dist/server/provider-keys.d.ts.map +0 -1
  158. package/dist/server/provider-routes.d.ts.map +0 -1
  159. package/dist/server/provider-store.d.ts.map +0 -1
  160. package/dist/server/route-family-dispatcher.d.ts.map +0 -1
  161. package/dist/server/routes.d.ts.map +0 -1
  162. package/dist/server/sdd-board-routes.d.ts.map +0 -1
  163. package/dist/server/sdd-board-ws-handler.d.ts.map +0 -1
  164. package/dist/server/sdd-wizard-routes.d.ts.map +0 -1
  165. package/dist/server/sdd-wizard-wiring.d.ts.map +0 -1
  166. package/dist/server/sdd-wizard-ws-handler.d.ts.map +0 -1
  167. package/dist/server/server-runtime.d.ts.map +0 -1
  168. package/dist/server/session-handlers.d.ts.map +0 -1
  169. package/dist/server/session-history.d.ts.map +0 -1
  170. package/dist/server/session-routes.d.ts.map +0 -1
  171. package/dist/server/setup-event-projection.d.ts.map +0 -1
  172. package/dist/server/setup-events-core-watchers.d.ts.map +0 -1
  173. package/dist/server/setup-events-fleet-broadcaster.d.ts.map +0 -1
  174. package/dist/server/setup-events-provider-handlers.d.ts.map +0 -1
  175. package/dist/server/setup-events-session-helpers.d.ts.map +0 -1
  176. package/dist/server/setup-events-status-watcher.d.ts.map +0 -1
  177. package/dist/server/setup-events-watcher.d.ts.map +0 -1
  178. package/dist/server/setup-events.d.ts.map +0 -1
  179. package/dist/server/setup-screen.d.ts.map +0 -1
  180. package/dist/server/shell-git-routes.d.ts.map +0 -1
  181. package/dist/server/shell-open.d.ts.map +0 -1
  182. package/dist/server/skills-handlers.d.ts.map +0 -1
  183. package/dist/server/specs-routes.d.ts.map +0 -1
  184. package/dist/server/specs-ws-handler.d.ts.map +0 -1
  185. package/dist/server/standalone-session-identity.d.ts.map +0 -1
  186. package/dist/server/start-webui.d.ts.map +0 -1
  187. package/dist/server/stream-coalescer.d.ts.map +0 -1
  188. package/dist/server/techstack-handlers.d.ts.map +0 -1
  189. package/dist/server/terminal-ws-handler.d.ts.map +0 -1
  190. package/dist/server/token-estimator.d.ts.map +0 -1
  191. package/dist/server/types.d.ts.map +0 -1
  192. package/dist/server/usage-cost.d.ts.map +0 -1
  193. package/dist/server/worklist-routes.d.ts.map +0 -1
  194. package/dist/server/worktree-routes.d.ts.map +0 -1
  195. package/dist/server/worktree-ws-handler.d.ts.map +0 -1
  196. package/dist/server/ws-auth.d.ts.map +0 -1
  197. package/dist/server/ws-payload-preferences.d.ts.map +0 -1
  198. package/dist/server/ws-payload-validation.d.ts.map +0 -1
  199. package/dist/server/ws-utils.d.ts.map +0 -1
  200. package/dist/server/zip.d.ts.map +0 -1
@@ -1,3 +1,3 @@
1
1
  export declare const CLIENT_CONVERSATION_MESSAGE_TYPES: readonly ['abort', 'ping', 'user_message', 'tool.confirm_result', 'completion.request', 'model.switch', 'model.refine', 'autonomy.switch', 'context.clear', 'context.compact', 'context.debug', 'context.editor.open', 'context.editor.validate', 'context.editor.apply', 'context.mode.create', 'context.mode.delete', 'context.mode.switch', 'context.mode.update', 'context.modes.list', 'context.repair', 'mode.switch', 'modes.list', 'session.checkpoints', 'session.delete', 'session.new', 'session.rename', 'session.resume', 'session.rewind', 'session.save', 'sessions.list', 'side_effects.list', 'stats.get', 'todo.update', 'todos.clear', 'todos.get', 'todos.remove'];
2
- export declare const CLIENT_COLLABORATION_MESSAGE_TYPES: readonly ['collab.join', 'collab.leave', 'collab.annotate', 'collab.resolve', 'collab.request_pause', 'collab.resume', 'collab.grant_control', 'collab.inject_tool', 'mailbox.agents', 'mailbox.clear', 'mailbox.compact', 'mailbox.messages', 'mailbox.purge', 'mailbox.send'];
2
+ export declare const CLIENT_COLLABORATION_MESSAGE_TYPES: readonly ['collab.join', 'collab.leave', 'collab.annotate', 'collab.resolve', 'collab.request_pause', 'collab.resume', 'collab.grant_control', 'collab.inject_tool', 'mailbox.action', 'mailbox.agents', 'mailbox.clear', 'mailbox.compact', 'mailbox.messages', 'mailbox.purge', 'mailbox.send'];
3
3
  //# sourceMappingURL=client-conversation.d.ts.map
@@ -109,6 +109,7 @@ var CLIENT_COLLABORATION_MESSAGE_TYPES = [
109
109
  "collab.resume",
110
110
  "collab.grant_control",
111
111
  "collab.inject_tool",
112
+ "mailbox.action",
112
113
  "mailbox.agents",
113
114
  "mailbox.clear",
114
115
  "mailbox.compact",
@@ -374,6 +375,7 @@ var SERVER_COLLABORATION_MESSAGE_TYPES = [
374
375
  "collab.pause.granted",
375
376
  "collab.pause.released",
376
377
  "collab.state",
378
+ "mailbox.action_result",
377
379
  "mailbox.agent_registered",
378
380
  "mailbox.agents",
379
381
  "mailbox.cleared",
@@ -700,7 +702,11 @@ function projectChatMessage(message) {
700
702
  return value ? { kind: "text-delta", text: value, messageId: text(payload["messageId"]) } : null;
701
703
  }
702
704
  case "provider.response":
703
- return { kind: "response", content: payload["content"] };
705
+ return {
706
+ kind: "response",
707
+ content: payload["content"],
708
+ stopReason: text(payload["stopReason"])
709
+ };
704
710
  case "run.result":
705
711
  return {
706
712
  kind: "run-result",
@@ -22,9 +22,13 @@ export type ChatProjection = {
22
22
  kind: 'text-delta';
23
23
  text: string;
24
24
  messageId: string;
25
- } | {
25
+ }
26
+ /** `stopReason` distinguishes the turn's final response from a mid-turn one
27
+ * that stopped to call a tool — surfaces gate `<nextsteps>` on it. */
28
+ | {
26
29
  kind: 'response';
27
30
  content: unknown;
31
+ stopReason: string;
28
32
  } | {
29
33
  kind: 'run-result';
30
34
  status: string;
@@ -1,5 +1,5 @@
1
- export declare const CLIENT_MESSAGE_TYPES: readonly ["abort", "ping", "user_message", "tool.confirm_result", "completion.request", "model.switch", "model.refine", "autonomy.switch", "context.clear", "context.compact", "context.debug", "context.editor.open", "context.editor.validate", "context.editor.apply", "context.mode.create", "context.mode.delete", "context.mode.switch", "context.mode.update", "context.modes.list", "context.repair", "mode.switch", "modes.list", "session.checkpoints", "session.delete", "session.new", "session.rename", "session.resume", "session.rewind", "session.save", "sessions.list", "side_effects.list", "stats.get", "todo.update", "todos.clear", "todos.get", "todos.remove", "collab.join", "collab.leave", "collab.annotate", "collab.resolve", "collab.request_pause", "collab.resume", "collab.grant_control", "collab.inject_tool", "mailbox.agents", "mailbox.clear", "mailbox.compact", "mailbox.messages", "mailbox.purge", "mailbox.send", "files.list", "files.read", "files.tree", "files.write", "git.changes", "git.diff", "git.info", "projects.add", "projects.list", "projects.select", "working_dir.set", "worktree.cleanup", "worktree.diff", "worktree.merge", "worktree.remove", "worktree.scan", "shell.open", "process.kill", "process.killAll", "process.list", "terminal.close", "terminal.create", "terminal.input", "terminal.resize", "codebase.index.server.shutdown", "connections.health", "connections.service_action", "diag.get", "key.add", "key.delete", "key.set_active", "key.update", "prefs.get", "prefs.update", "provider.add", "provider.clear_models", "provider.models", "provider.models.search", "provider.probe", "provider.remove", "provider.status.clear", "provider.status.get", "provider.status.retry", "provider.undo_clear", "provider.update", "providers.list", "providers.saved", "tool.disable", "tool.enable", "tools.list", "webui.shutdown", "goal-state.get", "goal.addTask", "goal.assess", "goal.assignTask", "goal.clear", "goal.get", "goal.list", "goal.load", "goal.moveTask", "goal.pause", "goal.resume", "goal.retryTask", "goal.revert", "goal.runTask", "goal.save", "goal.selectPhase", "goal.start", "goal.state", "goal.status", "goal.stop", "goal.taskStatus", "goal.toggleAutonomous", "plan.get", "plan.item.update", "plan.template_use", "task.update", "tasks.get", "sdd.board.cancel_task", "sdd.board.cleanup_worktrees", "sdd.board.delete_task", "sdd.board.destroy", "sdd.board.get", "sdd.board.list", "sdd.board.pause", "sdd.board.reassign", "sdd.board.resume", "sdd.board.retry", "sdd.board.retry_all_failed", "sdd.board.rollback", "sdd.board.set_task_fallbacks", "sdd.board.set_task_model", "sdd.board.set_task_verification", "sdd.board.split_task", "sdd.board.stop", "sdd.run.from_graph", "sdd.run.from_spec", "sdd.run.start", "sdd.spec.approve", "sdd.spec.discard", "sdd.spec.get", "sdd.spec.message", "sdd.spec.start", "specs.get", "specs.list", "specs.taskStatus", "brain.ask", "brain.config.get", "brain.config.set", "brain.risk", "brain.status", "chronicle.facet", "chronicle.facets", "chronicle.graph", "chronicle.metrics", "chronicle.query", "chronicle.status", "config.doctor", "design.list", "design.materialize", "design.set", "design.state", "design.swap", "design.tune", "design.use", "design.verify", "memory.list", "memory.sage.backfillRecoverable", "memory.sage.candidateResolve", "memory.sage.delete", "memory.sage.forFile", "memory.sage.get", "memory.sage.graph", "memory.sage.list", "memory.sage.listPage", "memory.sage.recover", "memory.sage.remember", "memory.sage.update", "auth.oauth.cancel", "auth.oauth.code", "auth.oauth.start", "mcp.add", "mcp.disable", "mcp.discover", "mcp.enable", "mcp.list", "mcp.prompt.get", "mcp.prompts", "mcp.remove", "mcp.resource.read", "mcp.resources", "mcp.restart", "mcp.sleep", "mcp.update", "mcp.wake", "prompts.content", "prompts.create", "prompts.favorite", "prompts.list", "prompts.recent", "prompts.search", "prompts.used", "skills.content", "skills.create", "skills.edit", "skills.export", "skills.install", "skills.list", "skills.uninstall", "skills.update"];
2
- export declare const SERVER_MESSAGE_TYPES: readonly ["error", "log", "pong", "side_effects", "agent.status_changed", "agent.timeline.message", "client.status_update", "compaction.failed", "completion.result", "context.compacted", "context.debug", "context.editor.snapshot", "context.editor.validation", "context.editor.applied", "context.mode.changed", "context.modes.list", "context.repaired", "ctx.max_context", "ctx.pct", "delegate.completed", "delegate.started", "iteration.completed", "iteration.limit_reached", "iteration.started", "model.refine_result", "modes.list", "provider.active_blocked", "provider.error", "provider.fallback", "provider.response", "provider.retry", "provider.status_changed", "provider.stream_error", "provider.text_delta", "provider.thinking_delta", "run.result", "session.checkpoints", "session.damaged", "session.end", "session.rewound", "session.start", "session.stats", "sessions.list", "sessions.status_update", "stats.get", "token.cost_estimate_unavailable", "token.threshold", "tool.confirm_needed", "tool.disabled", "tool.enabled", "tool.executed", "tool.loop_detected", "tool.progress", "tool.started", "tools.list", "trust.persisted", "collab.annotation.added", "collab.annotation.resolved", "collab.event", "collab.injection.granted", "collab.participant.joined", "collab.participant.left", "collab.pause.granted", "collab.pause.released", "collab.state", "mailbox.agent_registered", "mailbox.agents", "mailbox.cleared", "mailbox.compacted", "mailbox.event", "mailbox.messages", "mailbox.sent", "mailbox.purged", "mailbox.received", "subagent.budget_extended", "subagent.event", "checkpoint.written", "codemap.file_event", "codemap.index_updated", "codemap.tool_executed", "codemap.tool_started", "file.saved", "files.list", "files.read", "files.tree", "files.written", "git.changes", "git.diff", "git.info", "process.list", "projects.added", "projects.list", "projects.selected", "terminal.exit", "terminal.output", "working_dir.changed", "worktree.cleanup_result", "worktree.diff_result", "worktree.event", "worktree.merge_result", "worktree.orphans", "worktree.state", "auth.oauth.status", "codebase.index.server.shutdown_result", "connections.health_error", "connections.health_result", "connections.service_action_result", "diag.get", "key.operation_result", "model.switch_result", "prefs.updated", "provider.catalog", "provider.models", "provider.models.search_result", "provider.probe", "provider.status.snapshot", "providers.saved", "budget.decision", "budget.threshold_reached", "coordinator.stats", "coordinator.status", "eternal.iteration", "fleet.concurrency_update", "goal-state.updated", "goal.assess.result", "goal.list", "goal.paused", "goal.resumed", "goal.saved", "goal.error", "goal.stopped", "goal.failed", "goal.completed", "goal.cleared", "goal.reverted", "goal.progress", "goal.state", "in_flight.ended", "in_flight.started", "plan.updated", "task.completed", "task.failed", "task.pending", "task.started", "tasks.updated", "todos.cleared", "todos.updated", "kanban.task.activity", "sdd.board.lifecycle_result", "sdd.board.list", "sdd.board.snapshot", "sdd.run.started", "sdd.spec.agent_text", "sdd.spec.error", "sdd.spec.snapshot", "specs.detail", "specs.list", "consensus.vote_cast", "consensus.vote_initiated", "consensus.vote_resolved", "cron.job_fired", "cron.snapshot", "techstack.job.cancelled", "techstack.job.failed", "techstack.job.progress", "techstack.job.started", "techstack.report.delivered", "techstack.report.ready", "techstack.snapshot.updated", "techstack.workspace.completed", "brain.answer", "brain.config", "brain.event", "brain.status", "chronicle.error", "chronicle.facet_result", "chronicle.facets_result", "chronicle.graph_result", "chronicle.metrics_result", "chronicle.query_result", "chronicle.status_result", "config.doctor.result", "design.list", "design.materialize", "design.set", "design.state", "design.swap", "design.tune", "design.use", "design.verify", "memory.event", "memory.list", "memory.sage.backfillRecoverable", "memory.sage.candidateResolve", "memory.sage.delete", "memory.sage.forFile", "memory.sage.get", "memory.sage.graph", "memory.sage.list", "memory.sage.listPage", "memory.sage.recover", "memory.sage.remember", "memory.sage.update", "mcp.content.error", "mcp.content.selected", "mcp.list", "mcp.operation_result", "mcp.prompts", "mcp.resources", "mcp.server.added", "mcp.server.connected", "mcp.server.disconnected", "mcp.server.discovered", "mcp.server.error", "mcp.server.reconnected", "mcp.server.removed", "mcp.server.sleeping", "mcp.server.updated", "mcp.server.waking", "prompts.content", "prompts.created", "prompts.favorite", "prompts.list", "prompts.recent", "prompts.search", "prompts.used", "skills.content", "skills.created", "skills.edited", "skills.exported", "skills.installed", "skills.list", "skills.uninstalled", "skills.updated"];
1
+ export declare const CLIENT_MESSAGE_TYPES: readonly ["abort", "ping", "user_message", "tool.confirm_result", "completion.request", "model.switch", "model.refine", "autonomy.switch", "context.clear", "context.compact", "context.debug", "context.editor.open", "context.editor.validate", "context.editor.apply", "context.mode.create", "context.mode.delete", "context.mode.switch", "context.mode.update", "context.modes.list", "context.repair", "mode.switch", "modes.list", "session.checkpoints", "session.delete", "session.new", "session.rename", "session.resume", "session.rewind", "session.save", "sessions.list", "side_effects.list", "stats.get", "todo.update", "todos.clear", "todos.get", "todos.remove", "collab.join", "collab.leave", "collab.annotate", "collab.resolve", "collab.request_pause", "collab.resume", "collab.grant_control", "collab.inject_tool", "mailbox.action", "mailbox.agents", "mailbox.clear", "mailbox.compact", "mailbox.messages", "mailbox.purge", "mailbox.send", "files.list", "files.read", "files.tree", "files.write", "git.changes", "git.diff", "git.info", "projects.add", "projects.list", "projects.select", "working_dir.set", "worktree.cleanup", "worktree.diff", "worktree.merge", "worktree.remove", "worktree.scan", "shell.open", "process.kill", "process.killAll", "process.list", "terminal.close", "terminal.create", "terminal.input", "terminal.resize", "codebase.index.server.shutdown", "connections.health", "connections.service_action", "diag.get", "key.add", "key.delete", "key.set_active", "key.update", "prefs.get", "prefs.update", "provider.add", "provider.clear_models", "provider.models", "provider.models.search", "provider.probe", "provider.remove", "provider.status.clear", "provider.status.get", "provider.status.retry", "provider.undo_clear", "provider.update", "providers.list", "providers.saved", "tool.disable", "tool.enable", "tools.list", "webui.shutdown", "goal-state.get", "goal.addTask", "goal.assess", "goal.assignTask", "goal.clear", "goal.get", "goal.list", "goal.load", "goal.moveTask", "goal.pause", "goal.resume", "goal.retryTask", "goal.revert", "goal.runTask", "goal.save", "goal.selectPhase", "goal.start", "goal.state", "goal.status", "goal.stop", "goal.taskStatus", "goal.toggleAutonomous", "plan.get", "plan.item.update", "plan.template_use", "task.update", "tasks.get", "sdd.board.cancel_task", "sdd.board.cleanup_worktrees", "sdd.board.delete_task", "sdd.board.destroy", "sdd.board.get", "sdd.board.list", "sdd.board.pause", "sdd.board.reassign", "sdd.board.resume", "sdd.board.retry", "sdd.board.retry_all_failed", "sdd.board.rollback", "sdd.board.set_task_fallbacks", "sdd.board.set_task_model", "sdd.board.set_task_verification", "sdd.board.split_task", "sdd.board.stop", "sdd.run.from_graph", "sdd.run.from_spec", "sdd.run.start", "sdd.spec.approve", "sdd.spec.discard", "sdd.spec.get", "sdd.spec.message", "sdd.spec.start", "specs.get", "specs.list", "specs.taskStatus", "brain.ask", "brain.config.get", "brain.config.set", "brain.risk", "brain.status", "chronicle.facet", "chronicle.facets", "chronicle.graph", "chronicle.metrics", "chronicle.query", "chronicle.status", "config.doctor", "design.list", "design.materialize", "design.set", "design.state", "design.swap", "design.tune", "design.use", "design.verify", "memory.list", "memory.sage.backfillRecoverable", "memory.sage.candidateResolve", "memory.sage.delete", "memory.sage.forFile", "memory.sage.get", "memory.sage.graph", "memory.sage.list", "memory.sage.listPage", "memory.sage.recover", "memory.sage.remember", "memory.sage.update", "auth.oauth.cancel", "auth.oauth.code", "auth.oauth.start", "mcp.add", "mcp.disable", "mcp.discover", "mcp.enable", "mcp.list", "mcp.prompt.get", "mcp.prompts", "mcp.remove", "mcp.resource.read", "mcp.resources", "mcp.restart", "mcp.sleep", "mcp.update", "mcp.wake", "prompts.content", "prompts.create", "prompts.favorite", "prompts.list", "prompts.recent", "prompts.search", "prompts.used", "skills.content", "skills.create", "skills.edit", "skills.export", "skills.install", "skills.list", "skills.uninstall", "skills.update"];
2
+ export declare const SERVER_MESSAGE_TYPES: readonly ["error", "log", "pong", "side_effects", "agent.status_changed", "agent.timeline.message", "client.status_update", "compaction.failed", "completion.result", "context.compacted", "context.debug", "context.editor.snapshot", "context.editor.validation", "context.editor.applied", "context.mode.changed", "context.modes.list", "context.repaired", "ctx.max_context", "ctx.pct", "delegate.completed", "delegate.started", "iteration.completed", "iteration.limit_reached", "iteration.started", "model.refine_result", "modes.list", "provider.active_blocked", "provider.error", "provider.fallback", "provider.response", "provider.retry", "provider.status_changed", "provider.stream_error", "provider.text_delta", "provider.thinking_delta", "run.result", "session.checkpoints", "session.damaged", "session.end", "session.rewound", "session.start", "session.stats", "sessions.list", "sessions.status_update", "stats.get", "token.cost_estimate_unavailable", "token.threshold", "tool.confirm_needed", "tool.disabled", "tool.enabled", "tool.executed", "tool.loop_detected", "tool.progress", "tool.started", "tools.list", "trust.persisted", "collab.annotation.added", "collab.annotation.resolved", "collab.event", "collab.injection.granted", "collab.participant.joined", "collab.participant.left", "collab.pause.granted", "collab.pause.released", "collab.state", "mailbox.action_result", "mailbox.agent_registered", "mailbox.agents", "mailbox.cleared", "mailbox.compacted", "mailbox.event", "mailbox.messages", "mailbox.sent", "mailbox.purged", "mailbox.received", "subagent.budget_extended", "subagent.event", "checkpoint.written", "codemap.file_event", "codemap.index_updated", "codemap.tool_executed", "codemap.tool_started", "file.saved", "files.list", "files.read", "files.tree", "files.written", "git.changes", "git.diff", "git.info", "process.list", "projects.added", "projects.list", "projects.selected", "terminal.exit", "terminal.output", "working_dir.changed", "worktree.cleanup_result", "worktree.diff_result", "worktree.event", "worktree.merge_result", "worktree.orphans", "worktree.state", "auth.oauth.status", "codebase.index.server.shutdown_result", "connections.health_error", "connections.health_result", "connections.service_action_result", "diag.get", "key.operation_result", "model.switch_result", "prefs.updated", "provider.catalog", "provider.models", "provider.models.search_result", "provider.probe", "provider.status.snapshot", "providers.saved", "budget.decision", "budget.threshold_reached", "coordinator.stats", "coordinator.status", "eternal.iteration", "fleet.concurrency_update", "goal-state.updated", "goal.assess.result", "goal.list", "goal.paused", "goal.resumed", "goal.saved", "goal.error", "goal.stopped", "goal.failed", "goal.completed", "goal.cleared", "goal.reverted", "goal.progress", "goal.state", "in_flight.ended", "in_flight.started", "plan.updated", "task.completed", "task.failed", "task.pending", "task.started", "tasks.updated", "todos.cleared", "todos.updated", "kanban.task.activity", "sdd.board.lifecycle_result", "sdd.board.list", "sdd.board.snapshot", "sdd.run.started", "sdd.spec.agent_text", "sdd.spec.error", "sdd.spec.snapshot", "specs.detail", "specs.list", "consensus.vote_cast", "consensus.vote_initiated", "consensus.vote_resolved", "cron.job_fired", "cron.snapshot", "techstack.job.cancelled", "techstack.job.failed", "techstack.job.progress", "techstack.job.started", "techstack.report.delivered", "techstack.report.ready", "techstack.snapshot.updated", "techstack.workspace.completed", "brain.answer", "brain.config", "brain.event", "brain.status", "chronicle.error", "chronicle.facet_result", "chronicle.facets_result", "chronicle.graph_result", "chronicle.metrics_result", "chronicle.query_result", "chronicle.status_result", "config.doctor.result", "design.list", "design.materialize", "design.set", "design.state", "design.swap", "design.tune", "design.use", "design.verify", "memory.event", "memory.list", "memory.sage.backfillRecoverable", "memory.sage.candidateResolve", "memory.sage.delete", "memory.sage.forFile", "memory.sage.get", "memory.sage.graph", "memory.sage.list", "memory.sage.listPage", "memory.sage.recover", "memory.sage.remember", "memory.sage.update", "mcp.content.error", "mcp.content.selected", "mcp.list", "mcp.operation_result", "mcp.prompts", "mcp.resources", "mcp.server.added", "mcp.server.connected", "mcp.server.disconnected", "mcp.server.discovered", "mcp.server.error", "mcp.server.reconnected", "mcp.server.removed", "mcp.server.sleeping", "mcp.server.updated", "mcp.server.waking", "prompts.content", "prompts.created", "prompts.favorite", "prompts.list", "prompts.recent", "prompts.search", "prompts.used", "skills.content", "skills.created", "skills.edited", "skills.exported", "skills.installed", "skills.list", "skills.uninstalled", "skills.updated"];
3
3
  export type ExactClientMessageType = (typeof CLIENT_MESSAGE_TYPES)[number];
4
4
  export type ExactServerMessageType = (typeof SERVER_MESSAGE_TYPES)[number];
5
5
  export declare function isRegisteredMessageType(type: string, direction: 'client' | 'server'): boolean;
@@ -1,3 +1,3 @@
1
1
  export declare const SERVER_CONVERSATION_MESSAGE_TYPES: readonly ['error', 'log', 'pong', 'side_effects', 'agent.status_changed', 'agent.timeline.message', 'client.status_update', 'compaction.failed', 'completion.result', 'context.compacted', 'context.debug', 'context.editor.snapshot', 'context.editor.validation', 'context.editor.applied', 'context.mode.changed', 'context.modes.list', 'context.repaired', 'ctx.max_context', 'ctx.pct', 'delegate.completed', 'delegate.started', 'iteration.completed', 'iteration.limit_reached', 'iteration.started', 'model.refine_result', 'modes.list', 'provider.active_blocked', 'provider.error', 'provider.fallback', 'provider.response', 'provider.retry', 'provider.status_changed', 'provider.stream_error', 'provider.text_delta', 'provider.thinking_delta', 'run.result', 'session.checkpoints', 'session.damaged', 'session.end', 'session.rewound', 'session.start', 'session.stats', 'sessions.list', 'sessions.status_update', 'stats.get', 'token.cost_estimate_unavailable', 'token.threshold', 'tool.confirm_needed', 'tool.disabled', 'tool.enabled', 'tool.executed', 'tool.loop_detected', 'tool.progress', 'tool.started', 'tools.list', 'trust.persisted'];
2
- export declare const SERVER_COLLABORATION_MESSAGE_TYPES: readonly ['collab.annotation.added', 'collab.annotation.resolved', 'collab.event', 'collab.injection.granted', 'collab.participant.joined', 'collab.participant.left', 'collab.pause.granted', 'collab.pause.released', 'collab.state', 'mailbox.agent_registered', 'mailbox.agents', 'mailbox.cleared', 'mailbox.compacted', 'mailbox.event', 'mailbox.messages', 'mailbox.sent', 'mailbox.purged', 'mailbox.received', 'subagent.budget_extended', 'subagent.event'];
2
+ export declare const SERVER_COLLABORATION_MESSAGE_TYPES: readonly ['collab.annotation.added', 'collab.annotation.resolved', 'collab.event', 'collab.injection.granted', 'collab.participant.joined', 'collab.participant.left', 'collab.pause.granted', 'collab.pause.released', 'collab.state', 'mailbox.action_result', 'mailbox.agent_registered', 'mailbox.agents', 'mailbox.cleared', 'mailbox.compacted', 'mailbox.event', 'mailbox.messages', 'mailbox.sent', 'mailbox.purged', 'mailbox.received', 'subagent.budget_extended', 'subagent.event'];
3
3
  //# sourceMappingURL=server-conversation.d.ts.map
@@ -1,14 +1,14 @@
1
1
  import type { AgentPipelines, Context } from '@wrongstack/core/agent';
2
2
  import type { CollaborationBus, ObservableBrainArbiter } from '@wrongstack/core/coordination';
3
3
  import type { AutoCompactionMiddleware, BrainAutoRisk, BrainRuntime } from '@wrongstack/core/execution';
4
+ import type { DefaultTokenCounter } from '@wrongstack/core/infrastructure';
4
5
  import type { Container, EventBus } from '@wrongstack/core/kernel';
5
6
  import type { DefaultModeStore } from '@wrongstack/core/models';
6
7
  import type { ProviderRegistry, ToolRegistry } from '@wrongstack/core/registry';
8
+ import type { TrustBoundary } from '@wrongstack/core/security';
7
9
  import type { SkillInstaller } from '@wrongstack/core/skills';
8
10
  import type { SessionReader } from '@wrongstack/core/storage';
9
11
  import type { Compactor, Logger, MemoryPort, ModelsRegistry, PermissionPolicy, Provider, SessionStore, SkillLoader } from '@wrongstack/core/types';
10
- import type { DefaultTokenCounter } from '@wrongstack/core/infrastructure';
11
- import type { TrustBoundary } from '@wrongstack/core/security';
12
12
  /** Session shape returned by `SessionStore.create()`. */
13
13
  type Session = Awaited<ReturnType<SessionStore['create']>>;
14
14
  import { Agent } from '@wrongstack/core/agent';
@@ -48,6 +48,8 @@ interface AgentServicesInput {
48
48
  skillInstaller: SkillInstaller | undefined;
49
49
  tokenCounter: DefaultTokenCounter;
50
50
  pipelines: AgentPipelines;
51
+ /** Trusted host-only hook shared by the leader and light-subagent pipelines. */
52
+ installToolBoundary?: ((pipelines: AgentPipelines) => void) | undefined;
51
53
  /** Mutable capabilities ref — the factory populates `.current`. */
52
54
  modelCapabilitiesRef: {
53
55
  current: unknown;
@@ -100,6 +102,10 @@ interface AgentServices {
100
102
  worktreeHandler: WorktreeWebSocketHandler;
101
103
  terminalHandler: TerminalWebSocketHandler;
102
104
  collabHandler: CollaborationWebSocketHandler;
105
+ /** Release event subscriptions, timers, subprocesses and socket references
106
+ * owned by the per-feature handlers. Idempotent handler disposers make this
107
+ * safe during both signal shutdown and programmatic server restarts. */
108
+ disposeRealtimeHandlers(): void;
103
109
  /** Refresh auto-compaction denominator on model switch. */
104
110
  updateAutoCompactionMaxContext: (newProvider: Provider, providerId?: string, providerCfg?: ProviderConfig | undefined) => Promise<void>;
105
111
  }
@@ -11,4 +11,5 @@ export declare function setCachedCodemapBody(key: string, version: string, body:
11
11
  /** Test / process-shutdown helper. */
12
12
  export declare function clearCodemapGraphCache(): void;
13
13
  export declare function codemapGraphCacheSize(): number;
14
+ export declare function codemapGraphCacheChars(): number;
14
15
  //# sourceMappingURL=codemap-cache.d.ts.map
@@ -1,8 +1,8 @@
1
- import type { WebSocket } from 'ws';
2
1
  import type { CollaborationBus } from '@wrongstack/core/coordination';
3
2
  import type { EventBus } from '@wrongstack/core/kernel';
4
- import type { Logger } from '@wrongstack/core/types';
5
3
  import type { AnnotationsStore, SessionReader } from '@wrongstack/core/storage';
4
+ import type { Logger } from '@wrongstack/core/types';
5
+ import type { WebSocket } from 'ws';
6
6
  import type { CollabRole } from './types.js';
7
7
  export interface CollaborationHandlerOptions {
8
8
  /**
@@ -51,6 +51,19 @@ export interface ClientWithConnectionInfo {
51
51
  /** Remote socket address captured when the connection is accepted. */
52
52
  remoteAddress?: string;
53
53
  }
54
+ /**
55
+ * Message types that never count against a connection's rate budget.
56
+ *
57
+ * WS-029: the limiter shipped disabled because it "was tripping during normal
58
+ * use" — it charged keepalives, which the browser sends on a timer regardless
59
+ * of what the user is doing, so an idle tab could exhaust the budget. Exempting
60
+ * them is what makes a default limit safe to turn on; raising the number
61
+ * without fixing the counting would only move the same bug further out.
62
+ *
63
+ * Keep this list to traffic that is genuinely automatic and cheap. Anything a
64
+ * caller can use to make the server do work belongs in the budget.
65
+ */
66
+ export declare const RATE_LIMIT_EXEMPT_TYPES: ReadonlySet<string>;
54
67
  export interface ConnectionLifecycleOptions<Client, Request, Message> {
55
68
  clients: Map<WebSocket, Client>;
56
69
  pendingConfirms: Map<string, PendingConfirm>;
@@ -2,7 +2,7 @@ import type { WebSocket } from 'ws';
2
2
  import type { WSClientMessage, WSServerMessage } from './types.js';
3
3
  export type ConnectionHealthStatus = 'healthy' | 'degraded' | 'offline' | 'unavailable' | 'error';
4
4
  export interface ConnectionHealthService {
5
- id: 'webui' | 'chronicle' | 'codebase-index' | 'sage' | 'kanban' | 'mailbox';
5
+ id: 'webui' | 'chronicle' | 'codebase-index' | 'sage' | 'kanban' | 'mailbox' | 'governance';
6
6
  label: string;
7
7
  status: ConnectionHealthStatus;
8
8
  required: boolean;
@@ -21,6 +21,12 @@ export interface ConnectionHealthService {
21
21
  watchedFiles?: number | undefined;
22
22
  } | undefined;
23
23
  lastError?: string | undefined;
24
+ control?: 'shutdown' | 'none' | undefined;
25
+ advisory?: {
26
+ code: string;
27
+ operatorAction: 'none' | 'observe' | 'investigate';
28
+ executionDisposition: 'continue';
29
+ } | undefined;
24
30
  }
25
31
  export interface ConnectionsHealthReport {
26
32
  checkedAt: number;
@@ -1,7 +1,6 @@
1
1
  import type { Context } from '@wrongstack/core/agent';
2
- import type { ContentBlock } from '@wrongstack/core/types';
3
- import type { Message } from '@wrongstack/core/types';
4
2
  import type { ToolRegistry } from '@wrongstack/core/registry';
3
+ import type { ContentBlock, Message } from '@wrongstack/core/types';
5
4
  export type ContextEditorBlock = ContentBlock;
6
5
  export interface ContextEditorMessage {
7
6
  role: Message['role'];
@@ -72,6 +72,8 @@ export interface WebuiShutdownResources {
72
72
  abortInFlight: () => void;
73
73
  /** Run and drop every event-bus unsubscriber. */
74
74
  unsubscribeEvents: () => void;
75
+ /** Dispose long-lived handlers, timers, watchers, and project services owned by the host. */
76
+ disposeResources?: (() => void) | undefined;
75
77
  /** Close every connected socket and clear the client map. */
76
78
  closeClients: () => void;
77
79
  /** Close the static HTTP server (no-op when WS-only). */