@wrongstack/webui-server 0.303.0 → 0.305.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.
@@ -0,0 +1,8 @@
1
+ import type { WebSocket } from 'ws';
2
+ import type { WSServerMessage } from './types.js';
3
+ export interface KanbanContractRouteContext {
4
+ projectRoot: string;
5
+ broadcast?: ((msg: WSServerMessage) => void) | undefined;
6
+ }
7
+ export declare function handleKanbanContractRoute(ws: WebSocket, type: string, payload: Record<string, unknown> | undefined, ctx: KanbanContractRouteContext): Promise<boolean>;
8
+ //# sourceMappingURL=kanban-contract-routes.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare const KANBAN_CLIENT_MESSAGE_TYPES: readonly ['kanban.capabilities', 'kanban.column.add', 'kanban.column.remove', 'kanban.create', 'kanban.decomposition.approve', 'kanban.decomposition.reject', 'kanban.delete', 'kanban.duplicate', 'kanban.generate', 'kanban.get', 'kanban.health', 'kanban.list', 'kanban.snapshot', 'kanban.supervisor.audit', 'kanban.supervisor.status', 'kanban.task.activity', 'kanban.task.activity.add', 'kanban.task.add', 'kanban.task.assign', 'kanban.task.chain', 'kanban.task.chain.get', 'kanban.task.check.add', 'kanban.task.check.update', 'kanban.task.claim', 'kanban.task.copy', 'kanban.task.dispatch', 'kanban.task.get', 'kanban.task.merge', 'kanban.task.metric.add', 'kanban.task.metric.update', 'kanban.task.move', 'kanban.task.note.add', 'kanban.task.ready', 'kanban.task.release', 'kanban.task.remove', 'kanban.task.split', 'kanban.task.transfer', 'kanban.task.transition', 'kanban.task.update', 'kanban.task.verify', 'kanban.taskgraph.export', 'kanban.taskgraph.sync', 'kanban.update', 'kanban.workbench'];
1
+ export declare const KANBAN_CLIENT_MESSAGE_TYPES: readonly ['kanban.capabilities', 'kanban.contract.configure', 'kanban.contract.edge.add', 'kanban.contract.edge.remove', 'kanban.contract.get', 'kanban.contract.node.remove', 'kanban.contract.node.upsert', 'kanban.create', 'kanban.decomposition.approve', 'kanban.decomposition.reject', 'kanban.delete', 'kanban.duplicate', 'kanban.generate', 'kanban.get', 'kanban.health', 'kanban.list', 'kanban.snapshot', 'kanban.supervisor.audit', 'kanban.supervisor.status', 'kanban.task.activity', 'kanban.task.activity.add', 'kanban.task.add', 'kanban.task.assign', 'kanban.task.chain', 'kanban.task.chain.get', 'kanban.task.check.add', 'kanban.task.check.update', 'kanban.task.claim', 'kanban.task.copy', 'kanban.task.dispatch', 'kanban.task.get', 'kanban.task.merge', 'kanban.task.metric.add', 'kanban.task.metric.update', 'kanban.task.move', 'kanban.task.note.add', 'kanban.task.ready', 'kanban.task.release', 'kanban.task.remove', 'kanban.task.split', 'kanban.task.transfer', 'kanban.task.transition', 'kanban.task.update', 'kanban.task.verify', 'kanban.taskgraph.export', 'kanban.taskgraph.sync', 'kanban.update', 'kanban.workbench'];
2
2
  //# sourceMappingURL=kanban-route-protocol.d.ts.map
@@ -90,6 +90,12 @@ export declare function handleSageDelete(ws: WebSocket, msg: unknown, memoryStor
90
90
  * - otherwise returns the freshly-restored memory
91
91
  */
92
92
  export declare function handleSageRecover(ws: WebSocket, msg: unknown, memoryStore: MemoryPort): Promise<void>;
93
+ /**
94
+ * List review-queue candidates (hygiene / triage proposals).
95
+ * Request: { type: 'memory.sage.listCandidates', payload?: { includeResolved?: boolean } }
96
+ * Response: { type: 'memory.sage.listCandidates', payload: { candidates } }
97
+ */
98
+ export declare function handleSageListCandidates(ws: WebSocket, msg: unknown, memoryStore: MemoryPort): Promise<void>;
93
99
  /**
94
100
  * Resolve a pending hygiene review candidate (PR #1).
95
101
  * Request: { type: 'memory.sage.candidateResolve', payload: { candidateId, action: 'accept'|'reject', reason? } }
@@ -26,8 +26,8 @@ export interface ModeHandlersContext {
26
26
  modelCapabilities: ModelCapabilities;
27
27
  context: Context;
28
28
  toolRegistry: ToolRegistry;
29
- config: Pick<Config, 'provider' | 'model' | 'systemPrompt'>;
30
- getConfig?: () => Pick<Config, 'provider' | 'model' | 'systemPrompt'>;
29
+ config: Pick<Config, 'provider' | 'model' | 'systemPrompt' | 'features'>;
30
+ getConfig?: () => Pick<Config, 'provider' | 'model' | 'systemPrompt' | 'features'>;
31
31
  projectRoot: string;
32
32
  globalRoot: string;
33
33
  clients: Map<WebSocket, ConnectedClient>;
@@ -21,8 +21,8 @@
21
21
  */
22
22
  import { Context } from '@wrongstack/core/agent';
23
23
  import { DefaultPromptLoader, DefaultSkillLoader } from '@wrongstack/core/execution';
24
- import { type Container, EventBus } from '@wrongstack/core/kernel';
25
24
  import { DefaultTokenCounter } from '@wrongstack/core/infrastructure';
25
+ import { type Container, EventBus } from '@wrongstack/core/kernel';
26
26
  import { DefaultModeStore } from '@wrongstack/core/models';
27
27
  import { ProviderRegistry, ToolRegistry } from '@wrongstack/core/registry';
28
28
  import { SkillInstaller } from '@wrongstack/core/skills';
@@ -1,8 +1,8 @@
1
1
  import type { EventName, Listener } from '@wrongstack/core/kernel';
2
2
  import type { WstackPaths } from '@wrongstack/core/utils';
3
3
  import type { WebSocket } from 'ws';
4
- import type { ConnectedClient, WSServerMessage } from './types.js';
5
4
  import { type FileWatcherMetrics } from './setup-events-watcher.js';
5
+ import type { ConnectedClient, WSServerMessage } from './types.js';
6
6
  export interface SetupEventsStatusWatcherDeps {
7
7
  wpaths?: WstackPaths | undefined;
8
8
  watcherMetrics?: FileWatcherMetrics | undefined;
@@ -7,7 +7,7 @@ export declare const WEBUI_WS_MAX_BUFFERED_BYTES: number;
7
7
  * A socket above the cap cannot be trusted to catch up: keeping it alive would
8
8
  * let `ws` retain every subsequent broadcast in memory.
9
9
  */
10
- export declare function sendSerialized(ws: WebSocket, data: string): boolean;
10
+ export declare function sendSerialized(ws: WebSocket, data: string, frameBytes?: number): boolean;
11
11
  /**
12
12
  * Send a JSON message to a single WebSocket client.
13
13
  * No-op when the socket is not in OPEN state (disconnected / closing).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/webui-server",
3
- "version": "0.303.0",
3
+ "version": "0.305.1",
4
4
  "license": "MIT",
5
5
  "description": "WrongStack WebUI HTTP/WebSocket server module — extracted from @wrongstack/webui in PR #243/244 to remove the CLI -> @wrongstack/webui/server cross-package edge (audit §3.1.1). Pure backend: HTTP routes, WebSocket handlers, MCP tool wrappers, HTML serving. The web frontend lives in @wrongstack/webui; this package is the standalone server it can run on.",
6
6
  "keywords": [
@@ -40,16 +40,16 @@
40
40
  ],
41
41
  "dependencies": {
42
42
  "ws": "^8.21.1",
43
- "@wrongstack/core": "0.303.0",
44
- "@wrongstack/kanban": "0.303.0",
45
- "@wrongstack/requirement-intake": "0.303.0",
46
- "@wrongstack/runtime": "0.303.0",
47
- "@wrongstack/mcp": "0.303.0",
48
- "@wrongstack/sage": "0.303.0",
49
- "@wrongstack/providers": "0.303.0",
50
- "@wrongstack/sdd": "0.303.0",
51
- "@wrongstack/techstack": "0.303.0",
52
- "@wrongstack/tools": "0.303.0"
43
+ "@wrongstack/providers": "0.305.1",
44
+ "@wrongstack/sdd": "0.305.1",
45
+ "@wrongstack/techstack": "0.305.1",
46
+ "@wrongstack/runtime": "0.305.1",
47
+ "@wrongstack/sage": "0.305.1",
48
+ "@wrongstack/mcp": "0.305.1",
49
+ "@wrongstack/tools": "0.305.1",
50
+ "@wrongstack/core": "0.305.1",
51
+ "@wrongstack/kanban": "0.305.1",
52
+ "@wrongstack/requirement-intake": "0.305.1"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/node": "^26.1.2",