@wrongstack/webui-server 0.309.1 → 0.310.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 (50) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +18199 -18812
  3. package/dist/server/collab/annotations.d.ts +26 -0
  4. package/dist/server/collab/broadcast-scheduler.d.ts +30 -0
  5. package/dist/server/collab/collab-context.d.ts +60 -0
  6. package/dist/server/collab/controller.d.ts +25 -0
  7. package/dist/server/collab/dispatcher.d.ts +27 -0
  8. package/dist/server/collab/injection.d.ts +26 -0
  9. package/dist/server/collab/membership.d.ts +20 -0
  10. package/dist/server/collab/mirror.d.ts +14 -0
  11. package/dist/server/collab/replay.d.ts +20 -0
  12. package/dist/server/collab/session-registry.d.ts +74 -0
  13. package/dist/server/collaboration-ws-handler.d.ts +28 -149
  14. package/dist/server/embedded-host-adapters.d.ts +4 -4
  15. package/dist/server/entry.js +16300 -16672
  16. package/dist/server/frontend-static-serve.d.ts +2 -0
  17. package/dist/server/index.d.ts +25 -25
  18. package/dist/server/pre-context-services.d.ts +2 -1
  19. package/dist/server/pref-helpers.d.ts +1 -1
  20. package/dist/server/prefs-handlers.d.ts +11 -1
  21. package/dist/server/provider/catalog.d.ts +15 -0
  22. package/dist/server/provider/custom-models.d.ts +13 -0
  23. package/dist/server/provider/keys-records.d.ts +2 -0
  24. package/dist/server/provider/keys.d.ts +36 -0
  25. package/dist/server/provider/mutations.d.ts +34 -0
  26. package/dist/server/provider/oauth.d.ts +17 -0
  27. package/dist/server/provider/probe.d.ts +9 -0
  28. package/dist/server/provider/projection.d.ts +50 -0
  29. package/dist/server/provider-handlers.d.ts +38 -87
  30. package/dist/server/proxy-runtime.d.ts +82 -0
  31. package/dist/server/standalone-session-identity.d.ts +2 -1
  32. package/dist/server/token-estimator.d.ts +19 -8
  33. package/package.json +13 -16
  34. package/dist/protocol/client-conversation.d.ts +0 -3
  35. package/dist/protocol/client-integrations.d.ts +0 -3
  36. package/dist/protocol/client-operations.d.ts +0 -3
  37. package/dist/protocol/client-workspace.d.ts +0 -3
  38. package/dist/protocol/connection-fsm.d.ts +0 -39
  39. package/dist/protocol/decoder.d.ts +0 -6
  40. package/dist/protocol/index.d.ts +0 -8
  41. package/dist/protocol/index.js +0 -960
  42. package/dist/protocol/projections.d.ts +0 -131
  43. package/dist/protocol/registry.d.ts +0 -6
  44. package/dist/protocol/replay-payload.d.ts +0 -41
  45. package/dist/protocol/server-conversation.d.ts +0 -3
  46. package/dist/protocol/server-integrations.d.ts +0 -3
  47. package/dist/protocol/server-operations.d.ts +0 -4
  48. package/dist/protocol/server-workspace.d.ts +0 -3
  49. package/dist/protocol/types.d.ts +0 -24
  50. package/dist/protocol/version.d.ts +0 -26
@@ -0,0 +1,82 @@
1
+ /**
2
+ * WrongProxy / WrongTrace runtime seeding for the standalone WebUI server.
3
+ *
4
+ * The CLI hosts WebUI in-process via `dispatch-webui.ts`, which injects
5
+ * `applyWrongProxyPrefs` (from `@wrongstack/cli/wiring/proxy-wiring`) into
6
+ * the WS prefs handler and shares the CLI's proxy singleton. But when the
7
+ * WebUI server runs as its OWN process (`startWebUI`), no CLI is present to
8
+ * seed the `ProxyConfig` singleton in `@wrongstack/core/wiring/proxy-rewrite`
9
+ * — so all of the server's provider-build paths would construct providers
10
+ * with the raw base URL and never traverse the proxy.
11
+ *
12
+ * webui ⇏ cli, so this module cannot import `@wrongstack/cli`'s probe. It
13
+ * owns the same two concerns the CLI's `proxy-wiring` does, but dependency-
14
+ * light and self-contained:
15
+ *
16
+ * 1. Seeding the shared `ProxyConfig` singleton (`enabled` / `url`) from
17
+ * `config.tools.wrongProxy` at boot.
18
+ * 2. A one-shot `/api/health` reachability probe that flips `active` to
19
+ * true so `shouldRewriteFor()` returns true for subsequent provider
20
+ * builds. Unlike the CLI's periodic probe this runs once at seed time
21
+ * (the standalone server re-probes when the operator toggles the field
22
+ * via `applyWrongProxyPrefs`); a long-lived daemon is assumed stable.
23
+ *
24
+ * The rewrite itself (`shouldRewriteFor` / `rewriteBaseUrl`) is pure logic
25
+ * in `@wrongstack/core` and is applied at each provider-build site in this
26
+ * server (setup-screen, routes applyModelSwitchCore, embedded-message-router,
27
+ * embedded-host-adapters, start-webui-credential-watcher).
28
+ */
29
+ import type { Config } from '@wrongstack/core/types';
30
+ /**
31
+ * Seed the shared `ProxyConfig` singleton from the persisted
32
+ * `config.tools.wrongProxy.{enabled,url}` block. Idempotent — safe to call
33
+ * at every boot. A provider that is eligible and reachable with a
34
+ * configured URL will then have its base URL rewritten through the proxy.
35
+ */
36
+ export declare function seedWrongProxyFromConfig(config: Config): void;
37
+ /**
38
+ * Probe the configured proxy daemon once and flip `active` to true when it
39
+ * answers a 2xx on `/api/health`. Mirrors the CLI's probe contract but
40
+ * without owning a `setInterval` loop. Resolves with the new `active` value.
41
+ * A non-2xx / timeout / ECONNREFUSED leaves `active` false so the rewriter
42
+ * keeps base URLs unchanged.
43
+ */
44
+ export declare function probeWrongProxyActive(): Promise<boolean>;
45
+ /**
46
+ * Apply the `wrongProxyEnabled` + `wrongProxyUrl` portion of a WS prefs
47
+ * payload, then re-probe so the rewrite reflects the new state immediately
48
+ * (the next provider build reads the freshly-probed `active`). Skips when the
49
+ * payload carries neither key. Mirrors the CLI's `applyWrongProxyPrefs`.
50
+ */
51
+ export declare function applyWrongProxyPrefs(payload: Record<string, unknown>): Promise<void>;
52
+ /**
53
+ * Seed the singleton from the persisted config and await the first probe so
54
+ * `active` is correct BEFORE the server's provider is constructed. Without
55
+ * the await, `setup-screen`'s `resolveSetupProvider` reads the singleton
56
+ * (synchronously) while `active` is still false and bakes the raw base URL
57
+ * into the initial provider. Mirrors the CLI's
58
+ * `bootstrapWrongProxy` + `awaitFirstWrongProxyProbe` pair.
59
+ */
60
+ export declare function bootstrapWrongProxyFromConfig(config: Config): Promise<void>;
61
+ /**
62
+ * Apply the WrongProxy / WrongTrace base-URL rewrite to ONE provider config
63
+ * before it is handed to a provider factory. This is the single shared seam
64
+ * for every WebUI-server provider-build path so the eligibility + compose
65
+ * rules cannot drift between call sites:
66
+ *
67
+ * - `routes.ts` `applyModelSwitchCore` (model.switch rebuild)
68
+ * - `setup-screen.ts` `resolveSetupProvider` (boot branches 1 + 2)
69
+ * - `embedded-message-router.ts` `buildProvider`
70
+ * - `embedded-host-adapters.ts` `applyEmbeddedModelSwitch`
71
+ * - `start-webui-credential-watcher.ts` (credential hot-reload)
72
+ *
73
+ * Returns a copy of `cfg` with `baseUrl` overridden to
74
+ * `${proxyUrl}/proxy/<host><path>` when the toggle is on, the daemon is
75
+ * reachable (`active`) and the provider is eligible (openai-codex excluded
76
+ * by the rewriter). `fallbackBaseUrl` is used when `cfg` carries no explicit
77
+ * baseUrl (the call site's top-level config baseUrl). When the proxy is off
78
+ * or unreachable, the cfg is returned unchanged so factory construction
79
+ * behaves exactly as before the proxy feature existed.
80
+ */
81
+ export declare function routeProviderCfgThroughProxy<T extends object>(cfg: Readonly<T>, fallbackBaseUrl: string | undefined, providerId: string): T;
82
+ //# sourceMappingURL=proxy-runtime.d.ts.map
@@ -1,5 +1,6 @@
1
1
  import type { EventBus } from '@wrongstack/core/kernel';
2
- import { AgentStatusTracker, getSessionRegistry } from '@wrongstack/core/storage';
2
+ import { AgentStatusTracker } from '@wrongstack/core/coordination';
3
+ import { getSessionRegistry } from '@wrongstack/core/storage';
3
4
  import type { Config, Logger } from '@wrongstack/core/types';
4
5
  export interface StandaloneSessionIdentityPaths {
5
6
  globalRoot: string;
@@ -1,16 +1,27 @@
1
1
  /**
2
2
  * Per-section context-window token estimate for the `context.debug` command.
3
3
  *
4
- * Uses the simple 4-chars-per-token heuristic not exact, but close enough to
5
- * spot which section (system prompt, tool schemas, or message history) is
6
- * eating the context window. Tool schemas in particular are easy to overlook:
7
- * each tool ships its full JSON schema to the model every turn, so 20+ builtins
8
- * can cost 10-20k tokens on their own.
4
+ * Since card #5 (slice 5g) this module delegates the actual token math to
5
+ * the canonical calibrated estimator in `@wrongstack/core/utils`
6
+ * (3.5 chars/token basis + per-model-family EWM calibration see
7
+ * `core/src/utils/token-estimate.ts`). Before this, the WebUI computed a
8
+ * private 4-chars/token estimate, so the number in the browser's context
9
+ * debug view diverged from what compaction and the TUI context bar were
10
+ * actually deciding on (~14% for typical mixed content). Delegating means
11
+ * the user sees the same number the system acts on.
9
12
  *
10
- * Extracted from `index.ts` as a pure function so the breakdown maths can be
11
- * unit tested without standing up a Context/ToolRegistry.
13
+ * User-visible shift (intentional): all token figures shown by the WebUI
14
+ * context breakdown now match the CLI/TUI estimator — mixed-content
15
+ * conversations read ~14% HIGHER than the old 4-chars/token figures
16
+ * (3.5 chars/token is a more conservative, over-estimating basis by
17
+ * design, so compaction triggers are consistent rather than optimistic).
18
+ * Previews, block walking, and the `ContextBreakdown` shape are unchanged.
19
+ *
20
+ * `stringifyContent` stays local: its circular-reference fallback and the
21
+ * duck-typed block walk below are presentation-side concerns the canonical
22
+ * estimator does not share (it walks typed `Message` content).
12
23
  */
13
- /** 4-chars-per-token heuristic estimate for a string. */
24
+ /** Calibrated token estimate for a string — delegates to the shared basis. */
14
25
  export declare function estimateTokens(s: string): number;
15
26
  /** Stringify arbitrary content for length estimation (JSON, with fallbacks). */
16
27
  export declare function stringifyContent(c: unknown): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/webui-server",
3
- "version": "0.309.1",
3
+ "version": "0.310.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": [
@@ -28,10 +28,6 @@
28
28
  "types": "./dist/index.d.ts",
29
29
  "import": "./dist/index.js"
30
30
  },
31
- "./protocol": {
32
- "types": "./dist/protocol/index.d.ts",
33
- "import": "./dist/protocol/index.js"
34
- },
35
31
  "./package.json": "./package.json"
36
32
  },
37
33
  "files": [
@@ -40,17 +36,18 @@
40
36
  ],
41
37
  "dependencies": {
42
38
  "ws": "^8.21.3",
43
- "@wrongstack/mcp": "0.309.1",
44
- "@wrongstack/core": "0.309.1",
45
- "@wrongstack/runtime": "0.309.1",
46
- "@wrongstack/providers": "0.309.1",
47
- "@wrongstack/requirement-intake": "0.309.1",
48
- "@wrongstack/kanban": "0.309.1",
49
- "@wrongstack/sage": "0.309.1",
50
- "@wrongstack/sdd": "0.309.1",
51
- "@wrongstack/vector-memory": "0.309.1",
52
- "@wrongstack/tools": "0.309.1",
53
- "@wrongstack/techstack": "0.309.1"
39
+ "@wrongstack/core": "0.310.1",
40
+ "@wrongstack/kanban": "0.310.1",
41
+ "@wrongstack/mcp": "0.310.1",
42
+ "@wrongstack/sage": "0.310.1",
43
+ "@wrongstack/runtime": "0.310.1",
44
+ "@wrongstack/providers": "0.310.1",
45
+ "@wrongstack/sdd": "0.310.1",
46
+ "@wrongstack/tools": "0.310.1",
47
+ "@wrongstack/requirement-intake": "0.310.1",
48
+ "@wrongstack/vector-memory": "0.310.1",
49
+ "@wrongstack/techstack": "0.310.1",
50
+ "@wrongstack/webui-protocol": "0.310.1"
54
51
  },
55
52
  "devDependencies": {
56
53
  "@types/node": "^26.2.0",
@@ -1,3 +0,0 @@
1
- export declare const CLIENT_CONVERSATION_MESSAGE_TYPES: readonly ['abort', 'ping', 'user_message', 'tool.confirm_result', 'topic.advice', 'completion.request', 'model.switch', 'model.refine', 'model.fallback_choice', '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.inspect', '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.action', 'mailbox.agents', 'mailbox.clear', 'mailbox.compact', 'mailbox.messages', 'mailbox.purge', 'mailbox.send'];
3
- //# sourceMappingURL=client-conversation.d.ts.map
@@ -1,3 +0,0 @@
1
- export declare const CLIENT_KNOWLEDGE_MESSAGE_TYPES: readonly ['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.listCandidates', 'memory.sage.listPage', 'memory.sage.recover', 'memory.sage.remember', 'memory.sage.searchBreakdown', 'memory.sage.update'];
2
- export declare const CLIENT_EXTENSION_MESSAGE_TYPES: readonly ['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.journal', 'prompts.list', 'prompts.recent', 'prompts.search', 'prompts.used', 'skills.content', 'skills.create', 'skills.edit', 'skills.export', 'skills.install', 'skills.list', 'skills.uninstall', 'skills.update'];
3
- //# sourceMappingURL=client-integrations.d.ts.map
@@ -1,3 +0,0 @@
1
- export declare const CLIENT_GOAL_MESSAGE_TYPES: readonly ['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'];
2
- export declare const CLIENT_SDD_MESSAGE_TYPES: readonly ['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.rewind', 'sdd.spec.start', 'specs.get', 'specs.list', 'specs.taskStatus'];
3
- //# sourceMappingURL=client-operations.d.ts.map
@@ -1,3 +0,0 @@
1
- export declare const CLIENT_WORKSPACE_MESSAGE_TYPES: readonly ['files.create', 'files.delete', 'files.list', 'files.move', 'files.read', 'files.rename', 'files.skeleton', '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'];
2
- export declare const CLIENT_CONFIGURATION_MESSAGE_TYPES: readonly ['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.custom_models.remove', 'provider.custom_models.set', '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'];
3
- //# sourceMappingURL=client-workspace.d.ts.map
@@ -1,39 +0,0 @@
1
- export type SurfaceConnectionPhase = 'idle' | 'connecting' | 'open' | 'reconnecting' | 'closed';
2
- export interface SurfaceConnectionConfig {
3
- maxReconnectAttempts: number;
4
- initialBackoffMs: number;
5
- maxBackoffMs: number;
6
- backoffMultiplier: number;
7
- jitterRatio: number;
8
- queueLimit: number;
9
- heartbeatIntervalMs: number;
10
- heartbeatTimeoutMs: number;
11
- }
12
- export interface SurfaceConnectionState {
13
- phase: SurfaceConnectionPhase;
14
- reconnectAttempt: number;
15
- lastActivityAt: number | null;
16
- stopped: boolean;
17
- }
18
- export interface ReconnectPlan {
19
- attempt: number;
20
- delayMs: number;
21
- retryAt: number;
22
- }
23
- export declare const DEFAULT_SURFACE_CONNECTION_CONFIG: SurfaceConnectionConfig;
24
- export declare function createSurfaceConnectionState(): SurfaceConnectionState;
25
- export declare function markConnectionConnecting(state: SurfaceConnectionState): SurfaceConnectionState;
26
- export declare function markConnectionOpen(state: SurfaceConnectionState, now?: number): SurfaceConnectionState;
27
- export declare function markConnectionActivity(state: SurfaceConnectionState, now?: number): SurfaceConnectionState;
28
- export declare function stopConnection(state: SurfaceConnectionState): SurfaceConnectionState;
29
- export declare function resetConnection(state: SurfaceConnectionState): SurfaceConnectionState;
30
- export declare function planConnectionReconnect(state: SurfaceConnectionState, config: SurfaceConnectionConfig, now?: number, random?: () => number): {
31
- state: SurfaceConnectionState;
32
- plan: ReconnectPlan | null;
33
- };
34
- export declare function isConnectionHeartbeatTimedOut(state: SurfaceConnectionState, config: SurfaceConnectionConfig, now?: number): boolean;
35
- export declare function enqueueBounded<T>(queue: readonly T[], item: T, limit: number): {
36
- queue: T[];
37
- dropped: T | null;
38
- };
39
- //# sourceMappingURL=connection-fsm.d.ts.map
@@ -1,6 +0,0 @@
1
- import type { CanonicalClientMessage, CanonicalServerMessage, ProtocolDecodeResult } from './types.js';
2
- export declare function decodeProtocolMessage(input: unknown, direction: 'client'): ProtocolDecodeResult<CanonicalClientMessage>;
3
- export declare function decodeProtocolMessage(input: unknown, direction: 'server'): ProtocolDecodeResult<CanonicalServerMessage>;
4
- export declare function decodeProtocolFrame(frame: string, direction: 'client'): ProtocolDecodeResult<CanonicalClientMessage>;
5
- export declare function decodeProtocolFrame(frame: string, direction: 'server'): ProtocolDecodeResult<CanonicalServerMessage>;
6
- //# sourceMappingURL=decoder.d.ts.map
@@ -1,8 +0,0 @@
1
- export { createSurfaceConnectionState, DEFAULT_SURFACE_CONNECTION_CONFIG, enqueueBounded, isConnectionHeartbeatTimedOut, markConnectionActivity, markConnectionConnecting, markConnectionOpen, planConnectionReconnect, type ReconnectPlan, resetConnection, type SurfaceConnectionConfig, type SurfaceConnectionPhase, type SurfaceConnectionState, stopConnection, } from './connection-fsm.js';
2
- export { decodeProtocolFrame, decodeProtocolMessage } from './decoder.js';
3
- export { type ChatProjection, type FleetProjection, type HqAlertProjection, type HqCommandStatusProjection, type HqEventProjection, type HqFleetProjection, projectChatMessage, projectFleetMessage, projectHqAlertMessage, projectHqCommandStatusMessage, projectHqEventMessage, projectHqFleetMessage, projectSessionMessage, projectToolMessage, type SessionProjection, type ToolProjection, } from './projections.js';
4
- export { buildReplayPayload, REPLAY_MESSAGE_CAP, type ReplayPayloadFields, type ReplaySource, } from './replay-payload.js';
5
- export { CLIENT_MESSAGE_TYPES, type ExactClientMessageType, type ExactServerMessageType, isRegisteredMessageType, SERVER_MESSAGE_TYPES, } from './registry.js';
6
- export type { CanonicalClientMessage, CanonicalClientMessageType, CanonicalServerMessage, CanonicalServerMessageType, ProtocolDecodeIssue, ProtocolDecodeResult, ProtocolDirection, ProtocolEnvelope, } from './types.js';
7
- export { negotiateProtocol, type ProtocolAdvertisement, type ProtocolNegotiation, protocolAdvertisement, SURFACE_PROTOCOL_CAPABILITIES, SURFACE_PROTOCOL_MIN_VERSION, SURFACE_PROTOCOL_VERSION, type SurfaceProtocolCapability, } from './version.js';
8
- //# sourceMappingURL=index.d.ts.map