@nodetool-ai/websocket 0.7.0-rc.11
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/agent/agent-runtime.d.ts +47 -0
- package/dist/agent/agent-runtime.d.ts.map +1 -0
- package/dist/agent/agent-runtime.js +577 -0
- package/dist/agent/agent-runtime.js.map +1 -0
- package/dist/agent/codex-agent.d.ts +41 -0
- package/dist/agent/codex-agent.d.ts.map +1 -0
- package/dist/agent/codex-agent.js +334 -0
- package/dist/agent/codex-agent.js.map +1 -0
- package/dist/agent/index.d.ts +6 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +4 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/llm-agent.d.ts +51 -0
- package/dist/agent/llm-agent.d.ts.map +1 -0
- package/dist/agent/llm-agent.js +526 -0
- package/dist/agent/llm-agent.js.map +1 -0
- package/dist/agent/mcp-tool-server.d.ts +33 -0
- package/dist/agent/mcp-tool-server.d.ts.map +1 -0
- package/dist/agent/mcp-tool-server.js +292 -0
- package/dist/agent/mcp-tool-server.js.map +1 -0
- package/dist/agent/opencode-agent.d.ts +32 -0
- package/dist/agent/opencode-agent.d.ts.map +1 -0
- package/dist/agent/opencode-agent.js +332 -0
- package/dist/agent/opencode-agent.js.map +1 -0
- package/dist/agent/pi-agent.d.ts +42 -0
- package/dist/agent/pi-agent.d.ts.map +1 -0
- package/dist/agent/pi-agent.js +429 -0
- package/dist/agent/pi-agent.js.map +1 -0
- package/dist/agent/sdk-provider.d.ts +46 -0
- package/dist/agent/sdk-provider.d.ts.map +1 -0
- package/dist/agent/sdk-provider.js +50 -0
- package/dist/agent/sdk-provider.js.map +1 -0
- package/dist/agent/socket-route.d.ts +11 -0
- package/dist/agent/socket-route.d.ts.map +1 -0
- package/dist/agent/socket-route.js +262 -0
- package/dist/agent/socket-route.js.map +1 -0
- package/dist/agent/transport.d.ts +39 -0
- package/dist/agent/transport.d.ts.map +1 -0
- package/dist/agent/transport.js +17 -0
- package/dist/agent/transport.js.map +1 -0
- package/dist/agent/types.d.ts +11 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +10 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/collection-api.d.ts +14 -0
- package/dist/collection-api.d.ts.map +1 -0
- package/dist/collection-api.js +75 -0
- package/dist/collection-api.js.map +1 -0
- package/dist/error-codes.d.ts +3 -0
- package/dist/error-codes.d.ts.map +1 -0
- package/dist/error-codes.js +2 -0
- package/dist/error-codes.js.map +1 -0
- package/dist/file-api.d.ts +12 -0
- package/dist/file-api.d.ts.map +1 -0
- package/dist/file-api.js +76 -0
- package/dist/file-api.js.map +1 -0
- package/dist/http-api.d.ts +94 -0
- package/dist/http-api.d.ts.map +1 -0
- package/dist/http-api.js +1472 -0
- package/dist/http-api.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/asset-paths.d.ts +10 -0
- package/dist/lib/asset-paths.d.ts.map +1 -0
- package/dist/lib/asset-paths.js +45 -0
- package/dist/lib/asset-paths.js.map +1 -0
- package/dist/lib/bridge.d.ts +8 -0
- package/dist/lib/bridge.d.ts.map +1 -0
- package/dist/lib/bridge.js +70 -0
- package/dist/lib/bridge.js.map +1 -0
- package/dist/mcp-server.d.ts +32 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +842 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/models-api.d.ts +12 -0
- package/dist/models-api.d.ts.map +1 -0
- package/dist/models-api.js +730 -0
- package/dist/models-api.js.map +1 -0
- package/dist/oauth-api.d.ts +28 -0
- package/dist/oauth-api.d.ts.map +1 -0
- package/dist/oauth-api.js +681 -0
- package/dist/oauth-api.js.map +1 -0
- package/dist/openai-api.d.ts +63 -0
- package/dist/openai-api.d.ts.map +1 -0
- package/dist/openai-api.js +359 -0
- package/dist/openai-api.js.map +1 -0
- package/dist/plugins/websocket.d.ts +14 -0
- package/dist/plugins/websocket.d.ts.map +1 -0
- package/dist/plugins/websocket.js +431 -0
- package/dist/plugins/websocket.js.map +1 -0
- package/dist/resolve-media-urls.d.ts +19 -0
- package/dist/resolve-media-urls.d.ts.map +1 -0
- package/dist/resolve-media-urls.js +109 -0
- package/dist/resolve-media-urls.js.map +1 -0
- package/dist/routes/assets.d.ts +22 -0
- package/dist/routes/assets.d.ts.map +1 -0
- package/dist/routes/assets.js +168 -0
- package/dist/routes/assets.js.map +1 -0
- package/dist/routes/collections.d.ts +16 -0
- package/dist/routes/collections.d.ts.map +1 -0
- package/dist/routes/collections.js +32 -0
- package/dist/routes/collections.js.map +1 -0
- package/dist/routes/files.d.ts +12 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +11 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/health.d.ts +4 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +41 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/jobs.d.ts +16 -0
- package/dist/routes/jobs.d.ts.map +1 -0
- package/dist/routes/jobs.js +25 -0
- package/dist/routes/jobs.js.map +1 -0
- package/dist/routes/nodes.d.ts +8 -0
- package/dist/routes/nodes.d.ts.map +1 -0
- package/dist/routes/nodes.js +124 -0
- package/dist/routes/nodes.js.map +1 -0
- package/dist/routes/oauth.d.ts +8 -0
- package/dist/routes/oauth.d.ts.map +1 -0
- package/dist/routes/oauth.js +19 -0
- package/dist/routes/oauth.js.map +1 -0
- package/dist/routes/openai.d.ts +8 -0
- package/dist/routes/openai.d.ts.map +1 -0
- package/dist/routes/openai.js +20 -0
- package/dist/routes/openai.js.map +1 -0
- package/dist/routes/storage.d.ts +12 -0
- package/dist/routes/storage.d.ts.map +1 -0
- package/dist/routes/storage.js +13 -0
- package/dist/routes/storage.js.map +1 -0
- package/dist/routes/workflows.d.ts +18 -0
- package/dist/routes/workflows.d.ts.map +1 -0
- package/dist/routes/workflows.js +25 -0
- package/dist/routes/workflows.js.map +1 -0
- package/dist/routes/workspace.d.ts +15 -0
- package/dist/routes/workspace.d.ts.map +1 -0
- package/dist/routes/workspace.js +24 -0
- package/dist/routes/workspace.js.map +1 -0
- package/dist/screenshot-server.d.ts +21 -0
- package/dist/screenshot-server.d.ts.map +1 -0
- package/dist/screenshot-server.js +222 -0
- package/dist/screenshot-server.js.map +1 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +783 -0
- package/dist/server.js.map +1 -0
- package/dist/settings-registry.d.ts +29 -0
- package/dist/settings-registry.d.ts.map +1 -0
- package/dist/settings-registry.js +117 -0
- package/dist/settings-registry.js.map +1 -0
- package/dist/storage-api.d.ts +5 -0
- package/dist/storage-api.d.ts.map +1 -0
- package/dist/storage-api.js +221 -0
- package/dist/storage-api.js.map +1 -0
- package/dist/test-ui-server.d.ts +19 -0
- package/dist/test-ui-server.d.ts.map +1 -0
- package/dist/test-ui-server.js +1256 -0
- package/dist/test-ui-server.js.map +1 -0
- package/dist/trpc/context.d.ts +21 -0
- package/dist/trpc/context.d.ts.map +1 -0
- package/dist/trpc/context.js +10 -0
- package/dist/trpc/context.js.map +1 -0
- package/dist/trpc/error-formatter.d.ts +18 -0
- package/dist/trpc/error-formatter.d.ts.map +1 -0
- package/dist/trpc/error-formatter.js +41 -0
- package/dist/trpc/error-formatter.js.map +1 -0
- package/dist/trpc/index.d.ts +18 -0
- package/dist/trpc/index.d.ts.map +1 -0
- package/dist/trpc/index.js +13 -0
- package/dist/trpc/index.js.map +1 -0
- package/dist/trpc/middleware.d.ts +8 -0
- package/dist/trpc/middleware.d.ts.map +1 -0
- package/dist/trpc/middleware.js +12 -0
- package/dist/trpc/middleware.js.map +1 -0
- package/dist/trpc/router.d.ts +2543 -0
- package/dist/trpc/router.d.ts.map +1 -0
- package/dist/trpc/router.js +43 -0
- package/dist/trpc/router.js.map +1 -0
- package/dist/trpc/routers/assets.d.ts +229 -0
- package/dist/trpc/routers/assets.d.ts.map +1 -0
- package/dist/trpc/routers/assets.js +263 -0
- package/dist/trpc/routers/assets.js.map +1 -0
- package/dist/trpc/routers/collections.d.ts +88 -0
- package/dist/trpc/routers/collections.d.ts.map +1 -0
- package/dist/trpc/routers/collections.js +166 -0
- package/dist/trpc/routers/collections.js.map +1 -0
- package/dist/trpc/routers/costs.d.ts +129 -0
- package/dist/trpc/routers/costs.d.ts.map +1 -0
- package/dist/trpc/routers/costs.js +95 -0
- package/dist/trpc/routers/costs.js.map +1 -0
- package/dist/trpc/routers/files.d.ts +34 -0
- package/dist/trpc/routers/files.d.ts.map +1 -0
- package/dist/trpc/routers/files.js +92 -0
- package/dist/trpc/routers/files.js.map +1 -0
- package/dist/trpc/routers/jobs.d.ts +92 -0
- package/dist/trpc/routers/jobs.d.ts.map +1 -0
- package/dist/trpc/routers/jobs.js +100 -0
- package/dist/trpc/routers/jobs.js.map +1 -0
- package/dist/trpc/routers/mcp-config.d.ts +69 -0
- package/dist/trpc/routers/mcp-config.d.ts.map +1 -0
- package/dist/trpc/routers/mcp-config.js +290 -0
- package/dist/trpc/routers/mcp-config.js.map +1 -0
- package/dist/trpc/routers/messages.d.ts +121 -0
- package/dist/trpc/routers/messages.d.ts.map +1 -0
- package/dist/trpc/routers/messages.js +113 -0
- package/dist/trpc/routers/messages.js.map +1 -0
- package/dist/trpc/routers/models.d.ts +748 -0
- package/dist/trpc/routers/models.d.ts.map +1 -0
- package/dist/trpc/routers/models.js +1107 -0
- package/dist/trpc/routers/models.js.map +1 -0
- package/dist/trpc/routers/nodes.d.ts +48 -0
- package/dist/trpc/routers/nodes.d.ts.map +1 -0
- package/dist/trpc/routers/nodes.js +57 -0
- package/dist/trpc/routers/nodes.js.map +1 -0
- package/dist/trpc/routers/sandboxes.d.ts +64 -0
- package/dist/trpc/routers/sandboxes.d.ts.map +1 -0
- package/dist/trpc/routers/sandboxes.js +327 -0
- package/dist/trpc/routers/sandboxes.js.map +1 -0
- package/dist/trpc/routers/settings.d.ts +113 -0
- package/dist/trpc/routers/settings.d.ts.map +1 -0
- package/dist/trpc/routers/settings.js +193 -0
- package/dist/trpc/routers/settings.js.map +1 -0
- package/dist/trpc/routers/skills.d.ts +41 -0
- package/dist/trpc/routers/skills.d.ts.map +1 -0
- package/dist/trpc/routers/skills.js +194 -0
- package/dist/trpc/routers/skills.js.map +1 -0
- package/dist/trpc/routers/storage.d.ts +44 -0
- package/dist/trpc/routers/storage.d.ts.map +1 -0
- package/dist/trpc/routers/storage.js +153 -0
- package/dist/trpc/routers/storage.js.map +1 -0
- package/dist/trpc/routers/threads.d.ts +95 -0
- package/dist/trpc/routers/threads.d.ts.map +1 -0
- package/dist/trpc/routers/threads.js +150 -0
- package/dist/trpc/routers/threads.js.map +1 -0
- package/dist/trpc/routers/users.d.ts +79 -0
- package/dist/trpc/routers/users.d.ts.map +1 -0
- package/dist/trpc/routers/users.js +125 -0
- package/dist/trpc/routers/users.js.map +1 -0
- package/dist/trpc/routers/workflows.d.ts +681 -0
- package/dist/trpc/routers/workflows.d.ts.map +1 -0
- package/dist/trpc/routers/workflows.js +725 -0
- package/dist/trpc/routers/workflows.js.map +1 -0
- package/dist/trpc/routers/workspace.d.ts +127 -0
- package/dist/trpc/routers/workspace.d.ts.map +1 -0
- package/dist/trpc/routers/workspace.js +203 -0
- package/dist/trpc/routers/workspace.js.map +1 -0
- package/dist/unified-websocket-runner.d.ts +280 -0
- package/dist/unified-websocket-runner.d.ts.map +1 -0
- package/dist/unified-websocket-runner.js +3840 -0
- package/dist/unified-websocket-runner.js.map +1 -0
- package/dist/workspace-api.d.ts +14 -0
- package/dist/workspace-api.d.ts.map +1 -0
- package/dist/workspace-api.js +104 -0
- package/dist/workspace-api.js.map +1 -0
- package/dist/ws-adapter.d.ts +25 -0
- package/dist/ws-adapter.d.ts.map +1 -0
- package/dist/ws-adapter.js +63 -0
- package/dist/ws-adapter.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { type NodeExecutor, type NodeTypeResolver, type NodeValidator } from "@nodetool-ai/kernel";
|
|
2
|
+
import type { BaseProvider } from "@nodetool-ai/runtime";
|
|
3
|
+
import type { WebSocketCommandEnvelope, WebSocketMode } from "@nodetool-ai/protocol";
|
|
4
|
+
import { Tool } from "@nodetool-ai/agents";
|
|
5
|
+
import type { NodeMetadata, NodeRegistry } from "@nodetool-ai/node-sdk";
|
|
6
|
+
export interface WebSocketReceiveFrame {
|
|
7
|
+
type: string;
|
|
8
|
+
bytes?: Uint8Array | null;
|
|
9
|
+
text?: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface WebSocketConnection {
|
|
12
|
+
accept(): Promise<void>;
|
|
13
|
+
receive(): Promise<WebSocketReceiveFrame>;
|
|
14
|
+
sendBytes(data: Uint8Array): Promise<void>;
|
|
15
|
+
sendText(data: string): Promise<void>;
|
|
16
|
+
close(code?: number, reason?: string): Promise<void>;
|
|
17
|
+
clientState?: "connected" | "disconnected";
|
|
18
|
+
applicationState?: "connected" | "disconnected";
|
|
19
|
+
}
|
|
20
|
+
export interface RunJobRequest {
|
|
21
|
+
job_id?: string;
|
|
22
|
+
workflow_id?: string;
|
|
23
|
+
user_id?: string;
|
|
24
|
+
auth_token?: string;
|
|
25
|
+
params?: Record<string, unknown>;
|
|
26
|
+
graph?: {
|
|
27
|
+
nodes: Array<Record<string, unknown>>;
|
|
28
|
+
edges: Array<Record<string, unknown>>;
|
|
29
|
+
};
|
|
30
|
+
explicit_types?: boolean;
|
|
31
|
+
settings?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
export interface UnifiedWebSocketRunnerOptions {
|
|
34
|
+
userId?: string;
|
|
35
|
+
authToken?: string;
|
|
36
|
+
defaultModel?: string;
|
|
37
|
+
defaultProvider?: string;
|
|
38
|
+
resolveExecutor: (node: {
|
|
39
|
+
id: string;
|
|
40
|
+
type: string;
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}) => NodeExecutor;
|
|
43
|
+
resolveNodeType?: NodeTypeResolver;
|
|
44
|
+
resolveProvider?: (providerId: string, userId: string) => Promise<BaseProvider>;
|
|
45
|
+
/** Resolve server-side Tool instances by name (for tool execution in chat). */
|
|
46
|
+
resolveTools?: (toolNames: string[], userId: string) => Promise<Tool[]>;
|
|
47
|
+
getSystemStats?: () => Record<string, unknown>;
|
|
48
|
+
workspaceResolver?: (workflowId: string, userId: string) => Promise<string | null>;
|
|
49
|
+
/** Called before a workflow job starts — used to lazily connect the Python bridge. */
|
|
50
|
+
beforeRunJob?: (graph: {
|
|
51
|
+
nodes: Array<Record<string, unknown>>;
|
|
52
|
+
}) => Promise<void>;
|
|
53
|
+
/** Resolve node metadata by type — used for auto_save_asset detection. */
|
|
54
|
+
getNodeMetadata?: (nodeType: string) => NodeMetadata | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Optional pre-flight per-node validator. Forwarded to WorkflowRunner so
|
|
57
|
+
* missing required fields and unset model selections abort the run before
|
|
58
|
+
* any actor is spawned. `NodeRegistry.createNodeValidator()` from
|
|
59
|
+
* `@nodetool-ai/node-sdk` produces a compatible callback.
|
|
60
|
+
*/
|
|
61
|
+
validateNode?: NodeValidator;
|
|
62
|
+
/**
|
|
63
|
+
* Optional NodeRegistry. When supplied, agent-mode chat routes through the
|
|
64
|
+
* graph-native MultiModeAgent → GraphPlanner path, biasing node selection
|
|
65
|
+
* toward `nodetool.*` core nodes and exposing a `find_model` tool.
|
|
66
|
+
*/
|
|
67
|
+
nodeRegistry?: NodeRegistry;
|
|
68
|
+
}
|
|
69
|
+
export declare class UnifiedWebSocketRunner {
|
|
70
|
+
websocket: WebSocketConnection | null;
|
|
71
|
+
mode: WebSocketMode;
|
|
72
|
+
userId: string | null;
|
|
73
|
+
authToken: string | null;
|
|
74
|
+
private defaultModel;
|
|
75
|
+
private defaultProvider;
|
|
76
|
+
private resolveExecutor;
|
|
77
|
+
private resolveNodeType?;
|
|
78
|
+
private resolveProvider?;
|
|
79
|
+
private resolveTools?;
|
|
80
|
+
private getSystemStats;
|
|
81
|
+
private workspaceResolver?;
|
|
82
|
+
private beforeRunJob?;
|
|
83
|
+
private getNodeMetadata?;
|
|
84
|
+
private validateNode?;
|
|
85
|
+
private nodeRegistry?;
|
|
86
|
+
private configuredProvidersCache;
|
|
87
|
+
private sendLock;
|
|
88
|
+
private activeJobs;
|
|
89
|
+
private currentTask;
|
|
90
|
+
private heartbeatTimer;
|
|
91
|
+
private statsTimer;
|
|
92
|
+
private chatRequestSeq;
|
|
93
|
+
private clientToolsManifest;
|
|
94
|
+
private toolBridge;
|
|
95
|
+
private observerRegistered;
|
|
96
|
+
private logError;
|
|
97
|
+
/**
|
|
98
|
+
* Extract text from message content that may be a string or array of content items.
|
|
99
|
+
* Mirrors Python's _extract_query_text / _extract_objective / _extract_text_content.
|
|
100
|
+
*/
|
|
101
|
+
private extractTextContent;
|
|
102
|
+
/**
|
|
103
|
+
* Run one final LLM call to present structured agent results as readable
|
|
104
|
+
* markdown. Falls back to formatted JSON if the call fails.
|
|
105
|
+
*/
|
|
106
|
+
private presentStructuredResults;
|
|
107
|
+
private inferOutputType;
|
|
108
|
+
private resolveOutputNodeForKey;
|
|
109
|
+
private sendOutputUpdates;
|
|
110
|
+
constructor(options: UnifiedWebSocketRunnerOptions);
|
|
111
|
+
connect(websocket: WebSocketConnection, userId?: string, authToken?: string): Promise<void>;
|
|
112
|
+
disconnect(): Promise<void>;
|
|
113
|
+
private serializeForJson;
|
|
114
|
+
sendMessage(message: Record<string, unknown>): Promise<void>;
|
|
115
|
+
receiveMessage(): Promise<Record<string, unknown> | null>;
|
|
116
|
+
/**
|
|
117
|
+
* Normalize a raw graph so that the kernel's NodeDescriptor contract is met.
|
|
118
|
+
* The web-UI / Python serialisation stores node properties under `data`;
|
|
119
|
+
* the kernel expects them under `properties`.
|
|
120
|
+
*/
|
|
121
|
+
private normalizeGraph;
|
|
122
|
+
private hydrateGraph;
|
|
123
|
+
private getRawGraph;
|
|
124
|
+
/**
|
|
125
|
+
* Surface a clean terminal job_update when pre-run setup fails (typically
|
|
126
|
+
* because the Python bridge could not start). Without this the error would
|
|
127
|
+
* bubble up to handleCommand and be sent as a generic `invalid_command`
|
|
128
|
+
* envelope, which the UI does not associate with the job — the workflow
|
|
129
|
+
* appears to spin forever instead of failing.
|
|
130
|
+
*/
|
|
131
|
+
private emitBeforeRunFailure;
|
|
132
|
+
runJob(req: RunJobRequest): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Execute a ComfyUI workflow via the comfy executor (local or RunPod).
|
|
135
|
+
*/
|
|
136
|
+
private runComfyJob;
|
|
137
|
+
private streamJobMessages;
|
|
138
|
+
reconnectJob(jobId: string, workflowId?: string): Promise<void>;
|
|
139
|
+
resumeJob(jobId: string, workflowId?: string): Promise<void>;
|
|
140
|
+
cancelJob(jobId: string, workflowId?: string): Promise<Record<string, unknown>>;
|
|
141
|
+
getStatus(jobId?: string): Record<string, unknown>;
|
|
142
|
+
clearModels(): Promise<Record<string, unknown>>;
|
|
143
|
+
private ensureThreadExists;
|
|
144
|
+
private dbMessageToProviderMessage;
|
|
145
|
+
/**
|
|
146
|
+
* Save a message dict to the database.
|
|
147
|
+
* Mirrors Python's _save_message_to_db_async: pops id, type, user_id before create.
|
|
148
|
+
*/
|
|
149
|
+
private saveMessageToDb;
|
|
150
|
+
/**
|
|
151
|
+
* Recursively process tool results, handling asset-like objects.
|
|
152
|
+
* Mirrors Python's RegularChatProcessor._process_tool_result().
|
|
153
|
+
*
|
|
154
|
+
* - Asset-like objects (have type + uri/data): materialized via storage
|
|
155
|
+
* - Date/datetime: converted to ISO string
|
|
156
|
+
* - Arrays/objects: recursed into
|
|
157
|
+
* - Primitives: returned as-is
|
|
158
|
+
*/
|
|
159
|
+
private processToolResult;
|
|
160
|
+
/**
|
|
161
|
+
* Query vector store collections and return concatenated context string.
|
|
162
|
+
* Mirrors Python's RegularChatProcessor._query_collections().
|
|
163
|
+
*/
|
|
164
|
+
private queryCollections;
|
|
165
|
+
/**
|
|
166
|
+
* Add collection context as a system message before the last user message.
|
|
167
|
+
* Mirrors Python's RegularChatProcessor._add_collection_context().
|
|
168
|
+
*/
|
|
169
|
+
private addCollectionContext;
|
|
170
|
+
/**
|
|
171
|
+
* Handle an incoming chat message.
|
|
172
|
+
*
|
|
173
|
+
* Mirrors Python's full 3-layer flow:
|
|
174
|
+
* handle_chat_message → handle_message_impl → process_messages
|
|
175
|
+
* → _run_processor + RegularChatProcessor.process()
|
|
176
|
+
*
|
|
177
|
+
* The processor sends messages to a queue. _run_processor reads them:
|
|
178
|
+
* - type === "message" → persist to DB AND forward to client
|
|
179
|
+
* - anything else → forward to client only
|
|
180
|
+
*
|
|
181
|
+
* RegularChatProcessor.process():
|
|
182
|
+
* 1. Prepend system prompt if first message isn't system role
|
|
183
|
+
* 2. while True: messages_to_send = chat_history + unprocessed_messages
|
|
184
|
+
* 3. Stream chunks (type: "chunk") — forwarded to client (not persisted)
|
|
185
|
+
* 4. On tool call: build assistant Message + tool result Message (type: "message")
|
|
186
|
+
* → persisted to DB AND forwarded to client
|
|
187
|
+
* 5. If unprocessed_messages empty, break
|
|
188
|
+
* 6. Send done chunk + final assistant Message
|
|
189
|
+
*/
|
|
190
|
+
handleChatMessage(data: Record<string, unknown>, requestSeq?: number): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Log a provider call for cost tracking — mirrors Python's _log_provider_call().
|
|
193
|
+
* Best-effort: never throws, logs warnings on failure.
|
|
194
|
+
*/
|
|
195
|
+
private _logProviderCall;
|
|
196
|
+
/**
|
|
197
|
+
* Detect message input node names from a workflow graph.
|
|
198
|
+
* Mirrors Python's WorkflowMessageProcessor._detect_message_input_names().
|
|
199
|
+
*
|
|
200
|
+
* Scans graph nodes for types ending in .MessageInput / .MessageListInput
|
|
201
|
+
* and returns their data.name values.
|
|
202
|
+
*/
|
|
203
|
+
private detectMessageInputNames;
|
|
204
|
+
/**
|
|
205
|
+
* Convert workflow result dict into a response message with typed content.
|
|
206
|
+
* Mirrors Python's WorkflowMessageProcessor._create_response_message().
|
|
207
|
+
*
|
|
208
|
+
* Converts outputs to MessageContent items:
|
|
209
|
+
* - string → { type: "text", text }
|
|
210
|
+
* - list → { type: "text", text: joined }
|
|
211
|
+
* - dict with type "image"/"video"/"audio" → media content
|
|
212
|
+
* - other → { type: "text", text: stringified }
|
|
213
|
+
*/
|
|
214
|
+
private createWorkflowResponseContent;
|
|
215
|
+
/**
|
|
216
|
+
* Handle a chat message that targets a workflow.
|
|
217
|
+
*
|
|
218
|
+
* Mirrors Python's process_messages_for_workflow → WorkflowMessageProcessor/
|
|
219
|
+
* ChatWorkflowMessageProcessor flow:
|
|
220
|
+
* 1. Load workflow from DB
|
|
221
|
+
* 2. Detect message input node names from graph
|
|
222
|
+
* 3. Prepare params (serialized message + history)
|
|
223
|
+
* 4. Run workflow via WorkflowRunner
|
|
224
|
+
* 5. Stream events (job_update, node_update, output_update)
|
|
225
|
+
* 6. Collect output_update results
|
|
226
|
+
* 7. Send done chunk + response message with typed content
|
|
227
|
+
*/
|
|
228
|
+
/**
|
|
229
|
+
* Handle a chat_message with a `media_generation` payload by invoking the
|
|
230
|
+
* selected provider's textToImage / textToVideo API, storing the resulting
|
|
231
|
+
* asset(s), and returning them to the client as an assistant `Message`
|
|
232
|
+
* whose `content` is an array of `MessageImageContent` / `MessageVideoContent`
|
|
233
|
+
* blocks.
|
|
234
|
+
*
|
|
235
|
+
* The generated bytes are persisted via `ctx.storage.store()` so each
|
|
236
|
+
* output receives a stable URI the client can resolve as a server asset.
|
|
237
|
+
* The `media_generation` echo on the assistant message lets the UI render
|
|
238
|
+
* the generation header (model, variation count, resolution, etc.) in the
|
|
239
|
+
* conversation stream.
|
|
240
|
+
*/
|
|
241
|
+
private handleMediaGenerationMessage;
|
|
242
|
+
/**
|
|
243
|
+
* Resolve the source image bytes for image-edit / image-to-video calls.
|
|
244
|
+
* Searches in priority order:
|
|
245
|
+
* 1. `media_generation.source_asset_id` → load from Asset storage
|
|
246
|
+
* 2. The first `image_url` content block on the user message
|
|
247
|
+
* (supports asset_id, http(s) uri, and inline data:base64 payloads)
|
|
248
|
+
* Returns `null` when no usable source image can be found.
|
|
249
|
+
*/
|
|
250
|
+
private resolveSourceImageBytes;
|
|
251
|
+
private handleWorkflowMessage;
|
|
252
|
+
/**
|
|
253
|
+
* Build the map of configured BaseProvider instances for the given user.
|
|
254
|
+
* Cached per user — invalidate by clearing `configuredProvidersCache`.
|
|
255
|
+
* Used to expose `find_model` to the GraphPlanner agent so it can pick a
|
|
256
|
+
* real model+provider for generic AI nodes.
|
|
257
|
+
*/
|
|
258
|
+
private getConfiguredProviders;
|
|
259
|
+
/**
|
|
260
|
+
* Handle agent mode messages.
|
|
261
|
+
* Mirrors Python's AgentMessageProcessor.process().
|
|
262
|
+
*
|
|
263
|
+
* Creates an Agent with the user's objective and streams execution events
|
|
264
|
+
* (Chunk, ToolCallUpdate, TaskUpdate, PlanningUpdate, LogUpdate, StepResult)
|
|
265
|
+
* to the client. Messages with type "message" are persisted to DB.
|
|
266
|
+
*/
|
|
267
|
+
private handleAgentMessage;
|
|
268
|
+
handleInference(data: Record<string, unknown>, requestSeq: number): Promise<void>;
|
|
269
|
+
handleCommand(command: WebSocketCommandEnvelope): Promise<Record<string, unknown>>;
|
|
270
|
+
private startHeartbeat;
|
|
271
|
+
private stopHeartbeat;
|
|
272
|
+
private startStatsBroadcast;
|
|
273
|
+
private stopStatsBroadcast;
|
|
274
|
+
private registerObserver;
|
|
275
|
+
private unregisterObserver;
|
|
276
|
+
private onModelChange;
|
|
277
|
+
run(websocket: WebSocketConnection): Promise<void>;
|
|
278
|
+
receiveMessages(): Promise<void>;
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=unified-websocket-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-websocket-runner.d.ts","sourceRoot":"","sources":["../src/unified-websocket-runner.ts"],"names":[],"mappings":"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"}
|