@happyvertical/smrt-chat 0.42.5 → 0.42.7
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/AGENTS.md +7 -0
- package/README.md +19 -0
- package/dist/chunks/data-surface-bridge-BJomMxjS.js +740 -0
- package/dist/chunks/data-surface-bridge-BJomMxjS.js.map +1 -0
- package/dist/data-surface-bridge.d.ts +186 -0
- package/dist/data-surface-bridge.d.ts.map +1 -0
- package/dist/data-surface-bridge.js +2 -0
- package/dist/data-surface-normalizer.d.ts +11 -0
- package/dist/data-surface-normalizer.d.ts.map +1 -0
- package/dist/data-surface-tools.d.ts +9 -0
- package/dist/data-surface-tools.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +7 -5
- package/package.json +19 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-surface-bridge-BJomMxjS.js","names":["clone","value"],"sources":["../../src/data-surface-normalizer.ts","../../src/data-surface-bridge.ts"],"sourcesContent":["/**\n * Node-safe canonical validation for the server-side data-surface bridge.\n *\n * Keep this leaf free of Svelte imports. The browser-facing smrt-ui barrel\n * includes component modules and is not safe to load from a plain Node server.\n */\n\nimport {\n DATA_SURFACE_IDENTIFIER_MAX_LENGTH,\n DATA_SURFACE_MAX_REQUEST_BYTES,\n} from '@happyvertical/smrt-ui/data-surface';\n\nconst MAX_QUERY_LIMIT = 1_000;\nconst MAX_JSON_DEPTH = 16;\nconst MAX_JSON_CONTAINER_ITEMS = 1_000;\nconst PROTOTYPE_POLLUTION_KEYS = new Set([\n '__proto__',\n 'constructor',\n 'prototype',\n]);\nconst FORBIDDEN_BOUNDARY_KEYS = new Set([\n 'tenant',\n 'tenantid',\n 'principalid',\n 'principal',\n 'actorid',\n 'auth',\n 'authtoken',\n 'authorization',\n 'authorizationtoken',\n 'authorizationheader',\n 'authentication',\n 'authenticationtoken',\n 'accesstoken',\n 'token',\n 'bearer',\n 'bearertoken',\n 'apikey',\n 'sessiontoken',\n 'credential',\n 'credentials',\n 'sql',\n 'rawsql',\n 'rawquery',\n 'where',\n]);\nconst KINDS = new Set(['table', 'list', 'report', 'custom']);\nconst SENSITIVITIES = new Set(['public', 'personal', 'sensitive', 'secret']);\nconst CAPABILITIES = new Set(['read', 'search', 'filter', 'sort', 'project']);\nconst QUERY_MODES = new Set(['rows', 'count', 'facets']);\nconst SELECTION_SCOPES = new Set([\n 'current-page',\n 'explicit-ids',\n 'all-matching',\n]);\n\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\ninterface Budget {\n used: number;\n limit: number;\n}\n\nfunction plainObject(value: unknown, label: string): Record<string, unknown> {\n if (\n !value ||\n typeof value !== 'object' ||\n Array.isArray(value) ||\n Object.getPrototypeOf(value) !== Object.prototype\n ) {\n throw new TypeError(`${label} must be a plain object`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction exactKeys(\n value: Record<string, unknown>,\n allowed: readonly string[],\n label: string,\n): void {\n const accepted = new Set(allowed);\n for (const key of Object.keys(value)) {\n if (!accepted.has(key)) {\n throw new TypeError(`${label} contains unsupported field: ${key}`);\n }\n }\n}\n\nfunction stringValue(value: unknown, label: string): string {\n if (typeof value !== 'string' || value.length === 0) {\n throw new TypeError(`${label} must be a non-empty string`);\n }\n return value;\n}\n\nfunction identifierValue(value: unknown, label: string): string {\n const result = stringValue(value, label);\n if (result.length > DATA_SURFACE_IDENTIFIER_MAX_LENGTH) {\n throw new TypeError(`${label} is too long`);\n }\n return result;\n}\n\nfunction optionalString(value: unknown, label: string): string | undefined {\n return value === undefined ? undefined : stringValue(value, label);\n}\n\nfunction positiveInteger(value: unknown, label: string): number {\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value <= 0) {\n throw new TypeError(`${label} must be a positive safe integer`);\n }\n return value;\n}\n\nfunction revisionNumber(value: unknown): number {\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {\n throw new TypeError('DataSurface revision must be a non-negative integer');\n }\n return value;\n}\n\nfunction addBytes(budget: Budget | undefined, bytes: number): void {\n if (!budget) return;\n if (bytes > budget.limit - budget.used) {\n throw new TypeError(\n `DataSurface envelope cannot exceed ${budget.limit} UTF-8 bytes`,\n );\n }\n budget.used += bytes;\n}\n\nfunction jsonStringByteLength(value: string, budget?: Budget): number {\n let bytes = 2;\n for (let index = 0; index < value.length; index += 1) {\n const codeUnit = value.charCodeAt(index);\n if (codeUnit === 0x22 || codeUnit === 0x5c) bytes += 2;\n else if (\n codeUnit === 0x08 ||\n codeUnit === 0x09 ||\n codeUnit === 0x0a ||\n codeUnit === 0x0c ||\n codeUnit === 0x0d\n )\n bytes += 2;\n else if (codeUnit <= 0x1f) bytes += 6;\n else if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const next = value.charCodeAt(index + 1);\n if (next >= 0xdc00 && next <= 0xdfff) {\n bytes += 4;\n index += 1;\n } else bytes += 6;\n } else if (codeUnit >= 0xdc00 && codeUnit <= 0xdfff) bytes += 6;\n else if (codeUnit <= 0x7f) bytes += 1;\n else if (codeUnit <= 0x7ff) bytes += 2;\n else bytes += 3;\n if (budget && bytes > budget.limit - budget.used) {\n throw new TypeError(\n `DataSurface envelope cannot exceed ${budget.limit} UTF-8 bytes`,\n );\n }\n }\n addBytes(budget, bytes);\n return bytes;\n}\n\nfunction canonicalJson(\n value: unknown,\n ancestors = new Set<object>(),\n depth = 0,\n budget?: Budget,\n): JsonValue {\n if (depth > MAX_JSON_DEPTH) {\n throw new TypeError(\n `DataSurface values cannot exceed ${MAX_JSON_DEPTH} levels`,\n );\n }\n if (value === null) {\n addBytes(budget, 4);\n return null;\n }\n if (typeof value === 'string') {\n jsonStringByteLength(value, budget);\n return value;\n }\n if (typeof value === 'boolean') {\n addBytes(budget, value ? 4 : 5);\n return value;\n }\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n throw new TypeError(\n 'DataSurface values cannot contain non-finite numbers',\n );\n }\n const normalized = value === 0 ? 0 : value;\n addBytes(budget, String(normalized).length);\n return normalized;\n }\n if (!value || typeof value !== 'object') {\n throw new TypeError('DataSurface values must be JSON-safe plain data');\n }\n if (ancestors.has(value)) {\n throw new TypeError('DataSurface values cannot be circular');\n }\n ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n if (value.length > MAX_JSON_CONTAINER_ITEMS) {\n throw new TypeError('DataSurface arrays contain too many items');\n }\n addBytes(budget, 1);\n const clone: JsonValue[] = [];\n for (const [index, entry] of value.entries()) {\n if (index > 0) addBytes(budget, 1);\n clone.push(canonicalJson(entry, ancestors, depth + 1, budget));\n }\n addBytes(budget, 1);\n return clone;\n }\n const object = plainObject(value, 'DataSurface value');\n const clone: { [key: string]: JsonValue } = {};\n const keys = Object.keys(object).sort();\n if (keys.length > MAX_JSON_CONTAINER_ITEMS) {\n throw new TypeError('DataSurface objects contain too many keys');\n }\n addBytes(budget, 1);\n for (const [index, key] of keys.entries()) {\n if (index > 0) addBytes(budget, 1);\n if (PROTOTYPE_POLLUTION_KEYS.has(key)) {\n throw new TypeError(\n `DataSurface values cannot contain prototype key: ${key}`,\n );\n }\n jsonStringByteLength(key, budget);\n addBytes(budget, 1);\n clone[key] = canonicalJson(object[key], ancestors, depth + 1, budget);\n }\n addBytes(budget, 1);\n return clone;\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction assertRequestByteLimit(value: unknown): void {\n canonicalJson(value, new Set<object>(), 0, {\n used: 0,\n limit: DATA_SURFACE_MAX_REQUEST_BYTES,\n });\n}\n\nexport function assertDataSurfaceEnvelope(value: unknown): void {\n assertRequestByteLimit(value);\n}\n\nfunction boundarySafe(value: unknown): JsonValue {\n const clone = canonicalJson(value);\n const inspect = (entry: JsonValue): void => {\n if (Array.isArray(entry)) {\n for (const item of entry) inspect(item);\n } else if (entry && typeof entry === 'object') {\n for (const [key, item] of Object.entries(entry)) {\n if (\n FORBIDDEN_BOUNDARY_KEYS.has(key.replaceAll(/[-_]/g, '').toLowerCase())\n ) {\n throw new TypeError(\n `DataSurface boundary field is forbidden: ${key}`,\n );\n }\n inspect(item);\n }\n }\n };\n inspect(clone);\n return clone;\n}\n\nfunction boundarySafeObject(value: unknown): { [key: string]: JsonValue } {\n const clone = boundarySafe(value);\n if (!clone || Array.isArray(clone) || typeof clone !== 'object') {\n throw new TypeError('DataSurface snapshot state must be an object');\n }\n return clone;\n}\n\nfunction normalizeIdentity(value: unknown): Record<string, unknown> {\n const object = plainObject(value, 'DataSurface identity');\n exactKeys(object, ['surfaceId', 'kind', 'subject'], 'DataSurface identity');\n const kind = stringValue(object.kind, 'DataSurface kind');\n if (!KINDS.has(kind))\n throw new TypeError(`Unsupported DataSurface kind: ${kind}`);\n let subject: Record<string, string> | undefined;\n if (object.subject !== undefined) {\n const source = plainObject(object.subject, 'DataSurface subject');\n exactKeys(source, ['type', 'id', 'label'], 'DataSurface subject');\n subject = {\n type: identifierValue(source.type, 'DataSurface subject type'),\n id: identifierValue(source.id, 'DataSurface subject id'),\n ...(source.label === undefined\n ? {}\n : { label: stringValue(source.label, 'DataSurface subject label') }),\n };\n }\n return {\n surfaceId: identifierValue(object.surfaceId, 'DataSurface surface id'),\n kind,\n ...(subject ? { subject } : {}),\n };\n}\n\nfunction normalizeStringArray(\n value: unknown,\n label: string,\n sort = false,\n): string[] {\n if (!Array.isArray(value) || value.length > MAX_JSON_CONTAINER_ITEMS) {\n throw new TypeError(`${label} must be a bounded array`);\n }\n const values = value.map((entry) => stringValue(entry, label));\n if (new Set(values).size !== values.length) {\n throw new TypeError(`${label} cannot contain duplicates`);\n }\n return sort ? values.sort() : values;\n}\n\nfunction normalizeIdentifierArray(\n value: unknown,\n label: string,\n sort = false,\n): string[] {\n return normalizeStringArray(value, label, sort).map((entry) =>\n identifierValue(entry, label),\n );\n}\n\nfunction normalizeSensitivity(\n value: unknown,\n label: string,\n): string | undefined {\n if (value === undefined) return undefined;\n const sensitivity = stringValue(value, label);\n if (!SENSITIVITIES.has(sensitivity)) {\n throw new TypeError(`Unsupported DataSurface sensitivity: ${sensitivity}`);\n }\n return sensitivity;\n}\n\nfunction normalizeSelection(value: unknown): Record<string, unknown> {\n const object = plainObject(value, 'DataSurface selection');\n const scope = stringValue(object.scope, 'DataSurface selection scope');\n if (!SELECTION_SCOPES.has(scope)) {\n throw new TypeError(`Unsupported DataSurface selection scope: ${scope}`);\n }\n if (scope === 'current-page') {\n exactKeys(object, ['scope'], 'DataSurface current-page selection');\n return { scope };\n }\n if (scope === 'explicit-ids') {\n exactKeys(object, ['scope', 'rowIds'], 'DataSurface explicit selection');\n if (\n !Array.isArray(object.rowIds) ||\n object.rowIds.length > MAX_JSON_CONTAINER_ITEMS\n ) {\n throw new TypeError(\n 'DataSurface explicit selection rowIds must be bounded',\n );\n }\n const rowIds = new Map<string, string | number>();\n for (const rowId of object.rowIds) {\n if (\n typeof rowId !== 'string' &&\n (typeof rowId !== 'number' || !Number.isFinite(rowId))\n ) {\n throw new TypeError(\n 'DataSurface row ids must be finite strings or numbers',\n );\n }\n const normalized =\n typeof rowId === 'string'\n ? identifierValue(rowId, 'DataSurface row id')\n : rowId === 0\n ? 0\n : rowId;\n rowIds.set(`${typeof normalized}:${String(normalized)}`, normalized);\n }\n return {\n scope,\n rowIds: [...rowIds.values()].sort((left, right) => {\n if (typeof left !== typeof right)\n return typeof left === 'number' ? -1 : 1;\n if (typeof left === 'number' && typeof right === 'number')\n return left - right;\n return left < right ? -1 : left > right ? 1 : 0;\n }),\n };\n }\n exactKeys(\n object,\n ['scope', 'queryFingerprint'],\n 'DataSurface all-matching selection',\n );\n return {\n scope,\n queryFingerprint: identifierValue(\n object.queryFingerprint,\n 'DataSurface query fingerprint',\n ),\n };\n}\n\nexport function normalizeDataSurfaceDescriptor(value: unknown): unknown {\n const object = plainObject(value, 'DataSurface descriptor');\n exactKeys(\n object,\n [\n 'version',\n 'identity',\n 'schemaVersion',\n 'label',\n 'description',\n 'rowKey',\n 'columns',\n 'query',\n 'controls',\n 'actions',\n 'limits',\n ],\n 'DataSurface descriptor',\n );\n if (object.version !== 1)\n throw new TypeError('Unsupported DataSurface descriptor version');\n if (\n !Array.isArray(object.columns) ||\n object.columns.length > MAX_JSON_CONTAINER_ITEMS\n ) {\n throw new TypeError('DataSurface descriptor columns must be bounded');\n }\n const columns = object.columns.map((value) => {\n const column = plainObject(value, 'DataSurface column');\n exactKeys(\n column,\n ['id', 'label', 'description', 'sensitivity', 'capabilities'],\n 'DataSurface column',\n );\n const capabilities = normalizeStringArray(\n column.capabilities,\n 'DataSurface column capabilities',\n true,\n );\n if (capabilities.some((capability) => !CAPABILITIES.has(capability))) {\n throw new TypeError('Unsupported DataSurface column capability');\n }\n return {\n id: identifierValue(column.id, 'DataSurface column id'),\n label: stringValue(column.label, 'DataSurface column label'),\n ...(column.description === undefined\n ? {}\n : {\n description: stringValue(\n column.description,\n 'DataSurface column description',\n ),\n }),\n ...(column.sensitivity === undefined\n ? {}\n : {\n sensitivity: normalizeSensitivity(\n column.sensitivity,\n 'DataSurface column sensitivity',\n ),\n }),\n capabilities,\n };\n });\n if (new Set(columns.map((column) => column.id)).size !== columns.length)\n throw new TypeError('DataSurface descriptor column ids must be unique');\n const query = plainObject(object.query, 'DataSurface query capabilities');\n exactKeys(\n query,\n ['modes', 'projectableColumnIds'],\n 'DataSurface query capabilities',\n );\n const modes = normalizeStringArray(\n query.modes,\n 'DataSurface query modes',\n true,\n );\n if (modes.some((mode) => !QUERY_MODES.has(mode)))\n throw new TypeError('Unsupported DataSurface query mode');\n const projectableColumnIds = normalizeIdentifierArray(\n query.projectableColumnIds,\n 'DataSurface projectable column ids',\n true,\n );\n const knownColumns = new Set(columns.map((column) => column.id));\n if (projectableColumnIds.some((columnId) => !knownColumns.has(columnId)))\n throw new TypeError('Unknown projectable DataSurface column');\n if (\n !Array.isArray(object.controls) ||\n object.controls.length > MAX_JSON_CONTAINER_ITEMS\n )\n throw new TypeError('DataSurface controls must be bounded');\n const controls = object.controls.map((value) => {\n const control = plainObject(value, 'DataSurface control');\n exactKeys(control, ['id', 'label', 'description'], 'DataSurface control');\n return {\n id: identifierValue(control.id, 'DataSurface control id'),\n label: stringValue(control.label, 'DataSurface control label'),\n ...(control.description === undefined\n ? {}\n : {\n description: stringValue(\n control.description,\n 'DataSurface control description',\n ),\n }),\n };\n });\n if (new Set(controls.map((control) => control.id)).size !== controls.length)\n throw new TypeError('DataSurface control ids must be unique');\n if (\n !Array.isArray(object.actions) ||\n object.actions.length > MAX_JSON_CONTAINER_ITEMS\n )\n throw new TypeError('DataSurface actions must be bounded');\n const actions = object.actions.map((value) => {\n const action = plainObject(value, 'DataSurface action');\n exactKeys(\n action,\n [\n 'id',\n 'label',\n 'description',\n 'sensitivity',\n 'selectionScopes',\n 'requiresConfirmation',\n ],\n 'DataSurface action',\n );\n if (\n action.requiresConfirmation !== undefined &&\n typeof action.requiresConfirmation !== 'boolean'\n )\n throw new TypeError(\n 'DataSurface action requiresConfirmation must be boolean',\n );\n const selectionScopes = normalizeStringArray(\n action.selectionScopes,\n 'DataSurface action selection scopes',\n true,\n );\n if (selectionScopes.some((scope) => !SELECTION_SCOPES.has(scope)))\n throw new TypeError('Unsupported DataSurface action selection scope');\n return {\n id: identifierValue(action.id, 'DataSurface action id'),\n label: stringValue(action.label, 'DataSurface action label'),\n ...(action.description === undefined\n ? {}\n : {\n description: stringValue(\n action.description,\n 'DataSurface action description',\n ),\n }),\n ...(action.sensitivity === undefined\n ? {}\n : {\n sensitivity: normalizeSensitivity(\n action.sensitivity,\n 'DataSurface action sensitivity',\n ),\n }),\n selectionScopes,\n ...(action.requiresConfirmation === undefined\n ? {}\n : { requiresConfirmation: action.requiresConfirmation }),\n };\n });\n if (new Set(actions.map((action) => action.id)).size !== actions.length)\n throw new TypeError('DataSurface action ids must be unique');\n const limits = plainObject(object.limits, 'DataSurface limits');\n exactKeys(\n limits,\n ['maxQueryRows', 'maxQueryBytes', 'maxSelectionSize'],\n 'DataSurface limits',\n );\n const maxQueryRows = positiveInteger(\n limits.maxQueryRows,\n 'DataSurface maxQueryRows',\n );\n if (maxQueryRows > MAX_QUERY_LIMIT)\n throw new TypeError('DataSurface maxQueryRows exceeds its limit');\n const rowKey = identifierValue(object.rowKey, 'DataSurface row key');\n if (!knownColumns.has(rowKey))\n throw new TypeError('DataSurface rowKey must name a declared column');\n return {\n version: 1,\n identity: normalizeIdentity(object.identity),\n schemaVersion: positiveInteger(\n object.schemaVersion,\n 'DataSurface schema version',\n ),\n label: stringValue(object.label, 'DataSurface label'),\n ...(object.description === undefined\n ? {}\n : {\n description: stringValue(\n object.description,\n 'DataSurface description',\n ),\n }),\n rowKey,\n columns,\n query: { modes, projectableColumnIds },\n controls,\n actions,\n limits: {\n maxQueryRows,\n maxQueryBytes: positiveInteger(\n limits.maxQueryBytes,\n 'DataSurface maxQueryBytes',\n ),\n maxSelectionSize: positiveInteger(\n limits.maxSelectionSize,\n 'DataSurface maxSelectionSize',\n ),\n },\n };\n}\n\nexport function normalizeDataSurfaceSnapshot(value: unknown): unknown {\n const object = plainObject(value, 'DataSurface snapshot');\n exactKeys(\n object,\n ['version', 'descriptor', 'revision', 'state', 'selection'],\n 'DataSurface snapshot',\n );\n if (object.version !== 1)\n throw new TypeError('Unsupported DataSurface snapshot version');\n return {\n version: 1,\n descriptor: normalizeDataSurfaceDescriptor(object.descriptor),\n revision: revisionNumber(object.revision),\n state: boundarySafeObject(object.state),\n selection:\n object.selection === null || object.selection === undefined\n ? null\n : normalizeSelection(object.selection),\n };\n}\n\nexport function normalizeDataSurfaceVisibleCommand(value: unknown): unknown {\n const object = plainObject(value, 'DataSurface visible command');\n exactKeys(\n object,\n [\n 'version',\n 'commandId',\n 'identity',\n 'expectedRevision',\n 'controlId',\n 'payload',\n ],\n 'DataSurface visible command',\n );\n if (object.version !== 1)\n throw new TypeError('Unsupported DataSurface visible command version');\n const commandId = identifierValue(object.commandId, 'DataSurface command id');\n const normalized = {\n version: 1 as const,\n commandId,\n identity: normalizeIdentity(object.identity),\n expectedRevision: revisionNumber(object.expectedRevision),\n controlId: identifierValue(object.controlId, 'DataSurface control id'),\n ...(object.payload === undefined\n ? {}\n : { payload: boundarySafe(object.payload) }),\n };\n assertRequestByteLimit(value);\n assertRequestByteLimit(normalized);\n return normalized;\n}\n","/**\n * Server-side half of the authenticated data-surface bridge.\n *\n * This module is transport-neutral on purpose. An application supplies its\n * authenticated WebSocket/postMessage adapter and an authorization callback;\n * the chat package never treats browser acknowledgement as persistence or\n * server authorization. The callback is required and receives only the\n * server-bound session context, never authority supplied by the command.\n */\n\nimport { DATA_SURFACE_IDENTIFIER_MAX_LENGTH } from '@happyvertical/smrt-ui/data-surface';\nimport {\n assertDataSurfaceEnvelope,\n normalizeDataSurfaceSnapshot,\n normalizeDataSurfaceVisibleCommand,\n} from './data-surface-normalizer.js';\n\n// Keep the wire contract self-contained in this package's declarations. These\n// serializable shapes intentionally mirror #2442. Runtime validation is\n// kept in this package's Node-safe local normalizer so this server entry has no\n// Svelte-bearing dependency.\nexport type DataSurfaceJsonPrimitive = string | number | boolean | null;\nexport type DataSurfaceJsonValue =\n | DataSurfaceJsonPrimitive\n | DataSurfaceJsonValue[]\n | { [key: string]: DataSurfaceJsonValue };\nexport type DataSurfaceKind = 'table' | 'list' | 'report' | 'custom';\nexport interface DataSurfaceSubject {\n type: string;\n id: string;\n label?: string;\n}\nexport interface DataSurfaceIdentity {\n surfaceId: string;\n kind: DataSurfaceKind;\n subject?: DataSurfaceSubject;\n}\n\nexport type DataSurfaceCommandResultReason =\n | 'not_found'\n | 'unsupported'\n | 'stale_revision'\n | 'idempotency_conflict'\n | 'denied'\n | 'execution_failed'\n | 'non_monotonic_revision';\nexport interface DataSurfaceDescriptor {\n version: 1;\n identity: DataSurfaceIdentity;\n schemaVersion: number;\n label: string;\n description?: string;\n rowKey: string;\n columns: Array<{\n id: string;\n label: string;\n description?: string;\n sensitivity?: 'public' | 'personal' | 'sensitive' | 'secret';\n capabilities: Array<'read' | 'search' | 'filter' | 'sort' | 'project'>;\n }>;\n query: {\n modes: Array<'rows' | 'count' | 'facets'>;\n projectableColumnIds: string[];\n };\n controls: Array<{ id: string; label: string; description?: string }>;\n actions: Array<{\n id: string;\n label: string;\n description?: string;\n sensitivity?: 'public' | 'personal' | 'sensitive' | 'secret';\n selectionScopes: Array<'current-page' | 'explicit-ids' | 'all-matching'>;\n requiresConfirmation?: boolean;\n }>;\n limits: {\n maxQueryRows: number;\n maxQueryBytes: number;\n maxSelectionSize: number;\n };\n}\nexport type DataSurfaceSelectionReference =\n | { scope: 'current-page' }\n | { scope: 'explicit-ids'; rowIds: Array<string | number> }\n | { scope: 'all-matching'; queryFingerprint: string };\nexport interface DataSurfaceSnapshot {\n version: 1;\n descriptor: DataSurfaceDescriptor;\n revision: number;\n state: { [key: string]: DataSurfaceJsonValue };\n selection: DataSurfaceSelectionReference | null;\n}\nexport interface DataSurfaceVisibleCommand {\n version: 1;\n commandId: string;\n identity: DataSurfaceIdentity;\n expectedRevision: number;\n controlId: string;\n payload?: DataSurfaceJsonValue;\n}\nexport interface DataSurfaceCommandResult {\n ok: boolean;\n commandId: string;\n identity: DataSurfaceIdentity;\n revision?: number;\n snapshot?: DataSurfaceSnapshot;\n reason?: DataSurfaceCommandResultReason;\n}\n\nexport const DATA_SURFACE_BRIDGE_VERSION = 1 as const;\nexport const DEFAULT_DATA_SURFACE_BRIDGE_TTL_MS = 30_000;\n\nexport type DataSurfaceBridgeFailureReason =\n | 'not_found'\n | 'unsupported'\n | 'stale_revision'\n | 'idempotency_conflict'\n | 'denied'\n | 'execution_failed'\n | 'non_monotonic_revision'\n | 'expired'\n | 'timeout'\n | 'disconnected'\n | 'invalid_request'\n | 'source_mismatch'\n | 'session_mismatch'\n | 'replay_capacity_exceeded';\n\nexport interface DataSurfaceCommandRequest {\n type: 'data-surface.command';\n version: typeof DATA_SURFACE_BRIDGE_VERSION;\n commandId: string;\n sessionId: string;\n source: string;\n expiresAt: number;\n identity: DataSurfaceIdentity;\n expectedRevision: number;\n controlId: string;\n payload?: DataSurfaceVisibleCommand['payload'];\n}\n\nexport interface DataSurfaceCommandAck {\n type: 'data-surface.ack';\n version: typeof DATA_SURFACE_BRIDGE_VERSION;\n commandId: string;\n sessionId: string;\n source: string;\n expiresAt: number;\n identity: DataSurfaceIdentity;\n expectedRevision: number;\n ok: boolean;\n revision?: number;\n snapshot?: DataSurfaceSnapshot;\n reason?: DataSurfaceBridgeFailureReason;\n}\n\nexport interface DataSurfaceBridgeEvent {\n type: 'data-surface.event';\n version: typeof DATA_SURFACE_BRIDGE_VERSION;\n sessionId: string;\n source: string;\n sequence: number;\n identity: DataSurfaceIdentity;\n revision: number;\n event: 'registered' | 'unregistered' | 'command';\n command?: DataSurfaceVisibleCommand;\n result?: DataSurfaceCommandResult;\n}\n\nexport type DataSurfaceBridgeMessage =\n | DataSurfaceCommandRequest\n | DataSurfaceCommandAck\n | DataSurfaceBridgeEvent;\n\n/**\n * Identity verified by the transport adapter, outside the wire message.\n * Adapters must derive this from authenticated connection state (for example,\n * a bound WebSocket session or an origin-checked postMessage peer), never\n * from fields in `message`. `send` must route only to that bound peer.\n */\nexport interface DataSurfaceBridgePeer {\n sessionId: string;\n source: string;\n}\n\nexport type DataSurfaceBridgeConnectionState =\n | 'connected'\n | 'disconnected'\n | 'reconnecting';\n\nexport interface DataSurfaceBridgeTransport {\n send(message: DataSurfaceBridgeMessage): void | Promise<void>;\n subscribe(\n listener: (message: unknown, peer: DataSurfaceBridgePeer) => void,\n ): () => void;\n subscribeStatus?: (\n listener: (state: DataSurfaceBridgeConnectionState) => void,\n ) => () => void;\n}\n\nexport interface DataSurfaceCommandBridgeOptions {\n transport: DataSurfaceBridgeTransport;\n /** Server-authenticated browser session binding. */\n sessionId: string;\n /** Server source id placed on requests. */\n source: string;\n /** Browser source id accepted for acknowledgements/events. */\n peerSource: string;\n /** Must enforce application authorization; no default permit path exists. */\n authorize: (command: DataSurfaceVisibleCommand) => boolean | Promise<boolean>;\n now?: () => number;\n ttlMs?: number;\n timeoutMs?: number;\n}\n\nexport interface DataSurfaceCommandBridge {\n readonly sessionId: string;\n readonly source: string;\n readonly state: DataSurfaceBridgeConnectionState;\n send(command: DataSurfaceVisibleCommand): Promise<DataSurfaceCommandAck>;\n subscribe(listener: (event: DataSurfaceBridgeEvent) => void): () => void;\n dispose(): void;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isString(value: unknown): value is string {\n return (\n typeof value === 'string' &&\n value.length > 0 &&\n value.length <= DATA_SURFACE_IDENTIFIER_MAX_LENGTH\n );\n}\n\nfunction isDisplayString(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\nfunction isPeer(value: unknown): value is DataSurfaceBridgePeer {\n return isRecord(value) && isString(value.sessionId) && isString(value.source);\n}\n\nfunction isFiniteInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value);\n}\n\nfunction isFailureReason(\n value: unknown,\n): value is DataSurfaceBridgeFailureReason {\n return (\n value === 'not_found' ||\n value === 'unsupported' ||\n value === 'stale_revision' ||\n value === 'idempotency_conflict' ||\n value === 'denied' ||\n value === 'execution_failed' ||\n value === 'non_monotonic_revision' ||\n value === 'expired' ||\n value === 'timeout' ||\n value === 'disconnected' ||\n value === 'invalid_request' ||\n value === 'source_mismatch' ||\n value === 'session_mismatch' ||\n value === 'replay_capacity_exceeded'\n );\n}\n\nfunction isCommandResultReason(\n value: unknown,\n): value is DataSurfaceCommandResultReason {\n return (\n value === 'not_found' ||\n value === 'unsupported' ||\n value === 'stale_revision' ||\n value === 'idempotency_conflict' ||\n value === 'denied' ||\n value === 'execution_failed' ||\n value === 'non_monotonic_revision'\n );\n}\n\nfunction identityOf(value: unknown): DataSurfaceIdentity | undefined {\n if (!isRecord(value) || !isString(value.surfaceId) || !isString(value.kind))\n return undefined;\n if (\n value.kind !== 'table' &&\n value.kind !== 'list' &&\n value.kind !== 'report' &&\n value.kind !== 'custom'\n )\n return undefined;\n let subject: DataSurfaceIdentity['subject'];\n if (value.subject !== undefined) {\n if (\n !isRecord(value.subject) ||\n !isString(value.subject.type) ||\n !isString(value.subject.id) ||\n (value.subject.label !== undefined &&\n !isDisplayString(value.subject.label))\n ) {\n return undefined;\n }\n subject = {\n type: value.subject.type,\n id: value.subject.id,\n ...(value.subject.label === undefined\n ? {}\n : { label: value.subject.label }),\n };\n }\n return {\n surfaceId: value.surfaceId,\n kind: value.kind,\n ...(subject ? { subject } : {}),\n } as DataSurfaceIdentity;\n}\n\nfunction identitySignature(identity: DataSurfaceIdentity): string {\n return JSON.stringify({\n surfaceId: identity.surfaceId,\n kind: identity.kind,\n ...(identity.subject\n ? {\n subject: {\n type: identity.subject.type,\n id: identity.subject.id,\n },\n }\n : {}),\n });\n}\n\nfunction snapshotOf(value: unknown): DataSurfaceSnapshot | undefined {\n try {\n // The normalizer defensively clones state and descriptor arrays. Bound the\n // untrusted wire envelope before it can do that work on a browser ACK.\n assertDataSurfaceEnvelope(value);\n return normalizeDataSurfaceSnapshot(\n value as Parameters<typeof normalizeDataSurfaceSnapshot>[0],\n ) as DataSurfaceSnapshot;\n } catch {\n return undefined;\n }\n}\n\nfunction isAck(value: unknown): value is DataSurfaceCommandAck {\n return Boolean(\n isRecord(value) &&\n value.type === 'data-surface.ack' &&\n value.version === 1 &&\n isString(value.commandId) &&\n isString(value.sessionId) &&\n isString(value.source) &&\n typeof value.expiresAt === 'number' &&\n Number.isFinite(value.expiresAt) &&\n identityOf(value.identity) &&\n typeof value.expectedRevision === 'number' &&\n Number.isSafeInteger(value.expectedRevision) &&\n value.expectedRevision >= 0 &&\n typeof value.ok === 'boolean',\n );\n}\n\nfunction isEvent(value: unknown): value is DataSurfaceBridgeEvent {\n return Boolean(\n isRecord(value) &&\n value.type === 'data-surface.event' &&\n value.version === 1 &&\n isString(value.sessionId) &&\n isString(value.source) &&\n typeof value.sequence === 'number' &&\n Number.isSafeInteger(value.sequence) &&\n value.sequence > 0 &&\n identityOf(value.identity) &&\n typeof value.revision === 'number' &&\n Number.isSafeInteger(value.revision) &&\n value.revision >= 0 &&\n (value.event === 'registered' ||\n value.event === 'unregistered' ||\n value.event === 'command'),\n );\n}\n\nfunction resultOf(value: unknown): DataSurfaceCommandResult | undefined {\n if (!isRecord(value) || typeof value.ok !== 'boolean') return undefined;\n const allowed = new Set([\n 'ok',\n 'commandId',\n 'identity',\n 'revision',\n 'snapshot',\n 'reason',\n ]);\n if (Object.keys(value).some((key) => !allowed.has(key))) return undefined;\n if (!isString(value.commandId)) return undefined;\n const identity = identityOf(value.identity);\n if (!identity) return undefined;\n if (\n value.revision !== undefined &&\n (!isFiniteInteger(value.revision) || value.revision < 0)\n ) {\n return undefined;\n }\n if (value.ok) {\n if (value.reason !== undefined) return undefined;\n } else if (!isCommandResultReason(value.reason)) {\n return undefined;\n }\n let snapshot: DataSurfaceSnapshot | undefined;\n if (value.snapshot !== undefined) {\n snapshot = snapshotOf(value.snapshot);\n if (!snapshot) return undefined;\n if (\n identitySignature(snapshot.descriptor.identity) !==\n identitySignature(identity) ||\n (value.revision !== undefined && snapshot.revision !== value.revision)\n ) {\n return undefined;\n }\n }\n return {\n ok: value.ok,\n commandId: value.commandId,\n identity,\n ...(value.revision === undefined ? {} : { revision: value.revision }),\n ...(snapshot === undefined ? {} : { snapshot }),\n ...(value.reason === undefined ? {} : { reason: value.reason }),\n } as DataSurfaceCommandResult;\n}\n\nfunction eventOf(value: unknown): DataSurfaceBridgeEvent | undefined {\n if (!isEvent(value)) return undefined;\n try {\n assertDataSurfaceEnvelope(value);\n const identity = identityOf(value.identity);\n if (!identity) return undefined;\n let command: DataSurfaceVisibleCommand | undefined;\n if (value.command !== undefined) {\n command = normalizeDataSurfaceVisibleCommand(\n value.command,\n ) as DataSurfaceVisibleCommand;\n }\n const result =\n value.result === undefined ? undefined : resultOf(value.result);\n if (value.result !== undefined && result === undefined) return undefined;\n if (value.event === 'command' && (!command || !result)) return undefined;\n if (value.event !== 'command' && (command || result)) return undefined;\n if (\n value.event === 'command' &&\n (result?.revision === undefined ||\n value.revision !== result.revision ||\n (result.ok && result.revision < (command?.expectedRevision ?? 0)))\n ) {\n return undefined;\n }\n if (\n (command &&\n identitySignature(command.identity) !== identitySignature(identity)) ||\n (result &&\n (identitySignature(result.identity) !== identitySignature(identity) ||\n (command !== undefined && result.commandId !== command.commandId)))\n ) {\n return undefined;\n }\n return {\n type: 'data-surface.event',\n version: 1,\n sessionId: value.sessionId,\n source: value.source,\n sequence: value.sequence,\n identity,\n revision: value.revision,\n ...(command === undefined ? {} : { command }),\n ...(result === undefined ? {} : { result }),\n event: value.event,\n };\n } catch {\n return undefined;\n }\n}\n\nfunction fallbackAck(\n command: DataSurfaceVisibleCommand,\n sessionId: string,\n source: string,\n reason: DataSurfaceBridgeFailureReason,\n expiresAt: number,\n): DataSurfaceCommandAck {\n return {\n type: 'data-surface.ack',\n version: 1,\n commandId: command.commandId,\n sessionId,\n source,\n expiresAt,\n identity: command.identity,\n expectedRevision: command.expectedRevision,\n ok: false,\n reason,\n };\n}\n\nfunction commandSignature(command: DataSurfaceVisibleCommand): string {\n return JSON.stringify(command);\n}\n\n/**\n * Send browser-visible commands from an already-authenticated server turn.\n * `send()` deliberately requires a server callback before any bytes leave the\n * process. It does not accept actor, tenant, or role fields from the caller.\n */\nexport function createDataSurfaceCommandBridge(\n options: DataSurfaceCommandBridgeOptions,\n): DataSurfaceCommandBridge {\n if (\n !isString(options.sessionId) ||\n !isString(options.source) ||\n !isString(options.peerSource)\n ) {\n throw new TypeError('DataSurface bridge session/source ids are required');\n }\n const now = options.now ?? (() => Date.now());\n const ttlMs = options.ttlMs ?? DEFAULT_DATA_SURFACE_BRIDGE_TTL_MS;\n const timeoutMs = options.timeoutMs ?? ttlMs;\n if (\n !Number.isSafeInteger(ttlMs) ||\n ttlMs <= 0 ||\n !Number.isSafeInteger(timeoutMs) ||\n timeoutMs <= 0 ||\n timeoutMs > ttlMs\n ) {\n throw new RangeError('Invalid DataSurface bridge bounds');\n }\n\n type Pending = {\n command: DataSurfaceVisibleCommand;\n request: DataSurfaceCommandRequest;\n expiresAt: number;\n resolve: (ack: DataSurfaceCommandAck) => void;\n timer: ReturnType<typeof setTimeout>;\n };\n const pending = new Map<string, Pending>();\n const inflight = new Map<\n string,\n { signature: string; promise: Promise<DataSurfaceCommandAck> }\n >();\n const listeners = new Set<(event: DataSurfaceBridgeEvent) => void>();\n let state: DataSurfaceBridgeConnectionState = 'connected';\n let disposed = false;\n let lastSequence = 0;\n\n const rejectPending = (reason: 'timeout' | 'disconnected') => {\n for (const [commandId, item] of pending) {\n clearTimeout(item.timer);\n pending.delete(commandId);\n inflight.delete(commandId);\n item.resolve(\n fallbackAck(\n item.command,\n options.sessionId,\n options.peerSource,\n reason,\n item.expiresAt,\n ),\n );\n }\n };\n\n const validateAck = (\n value: DataSurfaceCommandAck,\n item: Pending,\n ): DataSurfaceCommandAck | undefined => {\n const request = item.request;\n if (\n value.commandId !== request.commandId ||\n value.sessionId !== request.sessionId ||\n value.source !== options.peerSource ||\n value.expiresAt !== request.expiresAt ||\n value.expectedRevision !== request.expectedRevision ||\n identitySignature(value.identity) !== identitySignature(request.identity)\n ) {\n return undefined;\n }\n if (\n value.revision !== undefined &&\n (!isFiniteInteger(value.revision) || value.revision < 0)\n ) {\n return undefined;\n }\n if (value.ok) {\n if (\n value.reason !== undefined ||\n value.revision === undefined ||\n value.snapshot === undefined ||\n (value.ok && value.revision < request.expectedRevision)\n ) {\n return undefined;\n }\n } else if (!isFailureReason(value.reason)) {\n return undefined;\n }\n let snapshot: DataSurfaceSnapshot | undefined;\n if (value.snapshot !== undefined) {\n snapshot = snapshotOf(value.snapshot);\n if (snapshot === undefined) return undefined;\n if (\n identitySignature(snapshot.descriptor.identity) !==\n identitySignature(request.identity) ||\n (value.ok && snapshot.revision < request.expectedRevision) ||\n (value.revision !== undefined && snapshot.revision !== value.revision)\n ) {\n return undefined;\n }\n }\n return {\n type: 'data-surface.ack',\n version: 1,\n commandId: request.commandId,\n sessionId: request.sessionId,\n source: options.peerSource,\n expiresAt: request.expiresAt,\n identity: request.identity,\n expectedRevision: request.expectedRevision,\n ok: value.ok,\n ...(value.revision === undefined ? {} : { revision: value.revision }),\n ...(snapshot === undefined ? {} : { snapshot }),\n ...(value.reason === undefined ? {} : { reason: value.reason }),\n };\n };\n\n const receive = (value: unknown, peer: DataSurfaceBridgePeer) => {\n if (\n disposed ||\n !isPeer(peer) ||\n peer.sessionId !== options.sessionId ||\n peer.source !== options.peerSource\n )\n return;\n if (isAck(value)) {\n if (\n value.sessionId !== options.sessionId ||\n value.source !== options.peerSource\n )\n return;\n const item = pending.get(value.commandId);\n if (!item) return;\n const validated = validateAck(value, item);\n if (!validated) return;\n pending.delete(value.commandId);\n inflight.delete(value.commandId);\n clearTimeout(item.timer);\n // A late success cannot outlive the server-side envelope.\n if (value.expiresAt <= now()) {\n item.resolve(\n fallbackAck(\n item.command,\n options.sessionId,\n options.peerSource,\n 'expired',\n item.expiresAt,\n ),\n );\n } else {\n item.resolve(validated);\n }\n return;\n }\n const event = eventOf(value);\n if (!event) return;\n if (\n event.sessionId !== options.sessionId ||\n event.source !== options.peerSource ||\n event.sequence <= lastSequence\n )\n return;\n lastSequence = event.sequence;\n for (const listener of listeners) listener(event);\n };\n\n const unsubscribeTransport = options.transport.subscribe(receive);\n const unsubscribeStatus = options.transport.subscribeStatus?.((next) => {\n state = next;\n if (next === 'disconnected') rejectPending('disconnected');\n });\n\n const send = async (\n command: DataSurfaceVisibleCommand,\n ): Promise<DataSurfaceCommandAck> => {\n let normalized: DataSurfaceVisibleCommand;\n try {\n normalized = normalizeDataSurfaceVisibleCommand(\n command,\n ) as DataSurfaceVisibleCommand;\n } catch {\n return fallbackAck(\n command,\n options.sessionId,\n options.peerSource,\n 'invalid_request',\n now(),\n );\n }\n if (disposed || state !== 'connected')\n return fallbackAck(\n normalized,\n options.sessionId,\n options.peerSource,\n 'disconnected',\n now(),\n );\n let allowed = false;\n try {\n allowed = await options.authorize(normalized);\n } catch {\n allowed = false;\n }\n if (disposed || state !== 'connected')\n return fallbackAck(\n normalized,\n options.sessionId,\n options.peerSource,\n 'disconnected',\n now(),\n );\n if (!allowed)\n return fallbackAck(\n normalized,\n options.sessionId,\n options.peerSource,\n 'denied',\n now(),\n );\n\n const signature = commandSignature(normalized);\n const existing = inflight.get(normalized.commandId);\n if (existing) {\n return existing.signature === signature\n ? existing.promise\n : fallbackAck(\n normalized,\n options.sessionId,\n options.peerSource,\n 'idempotency_conflict',\n now(),\n );\n }\n\n const expiresAt = now() + ttlMs;\n const promise = new Promise<DataSurfaceCommandAck>((resolve) => {\n const timer = setTimeout(() => {\n if (!pending.delete(normalized.commandId)) return;\n inflight.delete(normalized.commandId);\n resolve(\n fallbackAck(\n normalized,\n options.sessionId,\n options.peerSource,\n 'timeout',\n expiresAt,\n ),\n );\n }, timeoutMs);\n const request: DataSurfaceCommandRequest = {\n type: 'data-surface.command',\n version: 1,\n commandId: normalized.commandId,\n sessionId: options.sessionId,\n source: options.source,\n expiresAt,\n identity: normalized.identity,\n expectedRevision: normalized.expectedRevision,\n controlId: normalized.controlId,\n ...(normalized.payload === undefined\n ? {}\n : { payload: normalized.payload }),\n };\n pending.set(normalized.commandId, {\n command: normalized,\n request,\n expiresAt,\n resolve,\n timer,\n });\n const handleSendFailure = () => {\n if (!pending.delete(normalized.commandId)) return;\n inflight.delete(normalized.commandId);\n clearTimeout(timer);\n resolve(\n fallbackAck(\n normalized,\n options.sessionId,\n options.peerSource,\n 'disconnected',\n expiresAt,\n ),\n );\n };\n try {\n Promise.resolve(options.transport.send(request)).catch(\n handleSendFailure,\n );\n } catch {\n handleSendFailure();\n }\n });\n inflight.set(normalized.commandId, { signature, promise });\n if (!pending.has(normalized.commandId))\n inflight.delete(normalized.commandId);\n return promise;\n };\n\n return {\n sessionId: options.sessionId,\n source: options.source,\n get state() {\n return state;\n },\n send,\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n unsubscribeTransport();\n unsubscribeStatus?.();\n rejectPending('disconnected');\n inflight.clear();\n listeners.clear();\n },\n };\n}\n\n/** Explicit alias for consumers that want to name the server role. */\nexport const createServerDataSurfaceBridge = createDataSurfaceCommandBridge;\nexport const createDataSurfaceBridge = createDataSurfaceCommandBridge;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side half of the authenticated data-surface bridge.
|
|
3
|
+
*
|
|
4
|
+
* This module is transport-neutral on purpose. An application supplies its
|
|
5
|
+
* authenticated WebSocket/postMessage adapter and an authorization callback;
|
|
6
|
+
* the chat package never treats browser acknowledgement as persistence or
|
|
7
|
+
* server authorization. The callback is required and receives only the
|
|
8
|
+
* server-bound session context, never authority supplied by the command.
|
|
9
|
+
*/
|
|
10
|
+
export type DataSurfaceJsonPrimitive = string | number | boolean | null;
|
|
11
|
+
export type DataSurfaceJsonValue = DataSurfaceJsonPrimitive | DataSurfaceJsonValue[] | {
|
|
12
|
+
[key: string]: DataSurfaceJsonValue;
|
|
13
|
+
};
|
|
14
|
+
export type DataSurfaceKind = 'table' | 'list' | 'report' | 'custom';
|
|
15
|
+
export interface DataSurfaceSubject {
|
|
16
|
+
type: string;
|
|
17
|
+
id: string;
|
|
18
|
+
label?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface DataSurfaceIdentity {
|
|
21
|
+
surfaceId: string;
|
|
22
|
+
kind: DataSurfaceKind;
|
|
23
|
+
subject?: DataSurfaceSubject;
|
|
24
|
+
}
|
|
25
|
+
export type DataSurfaceCommandResultReason = 'not_found' | 'unsupported' | 'stale_revision' | 'idempotency_conflict' | 'denied' | 'execution_failed' | 'non_monotonic_revision';
|
|
26
|
+
export interface DataSurfaceDescriptor {
|
|
27
|
+
version: 1;
|
|
28
|
+
identity: DataSurfaceIdentity;
|
|
29
|
+
schemaVersion: number;
|
|
30
|
+
label: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
rowKey: string;
|
|
33
|
+
columns: Array<{
|
|
34
|
+
id: string;
|
|
35
|
+
label: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
sensitivity?: 'public' | 'personal' | 'sensitive' | 'secret';
|
|
38
|
+
capabilities: Array<'read' | 'search' | 'filter' | 'sort' | 'project'>;
|
|
39
|
+
}>;
|
|
40
|
+
query: {
|
|
41
|
+
modes: Array<'rows' | 'count' | 'facets'>;
|
|
42
|
+
projectableColumnIds: string[];
|
|
43
|
+
};
|
|
44
|
+
controls: Array<{
|
|
45
|
+
id: string;
|
|
46
|
+
label: string;
|
|
47
|
+
description?: string;
|
|
48
|
+
}>;
|
|
49
|
+
actions: Array<{
|
|
50
|
+
id: string;
|
|
51
|
+
label: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
sensitivity?: 'public' | 'personal' | 'sensitive' | 'secret';
|
|
54
|
+
selectionScopes: Array<'current-page' | 'explicit-ids' | 'all-matching'>;
|
|
55
|
+
requiresConfirmation?: boolean;
|
|
56
|
+
}>;
|
|
57
|
+
limits: {
|
|
58
|
+
maxQueryRows: number;
|
|
59
|
+
maxQueryBytes: number;
|
|
60
|
+
maxSelectionSize: number;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export type DataSurfaceSelectionReference = {
|
|
64
|
+
scope: 'current-page';
|
|
65
|
+
} | {
|
|
66
|
+
scope: 'explicit-ids';
|
|
67
|
+
rowIds: Array<string | number>;
|
|
68
|
+
} | {
|
|
69
|
+
scope: 'all-matching';
|
|
70
|
+
queryFingerprint: string;
|
|
71
|
+
};
|
|
72
|
+
export interface DataSurfaceSnapshot {
|
|
73
|
+
version: 1;
|
|
74
|
+
descriptor: DataSurfaceDescriptor;
|
|
75
|
+
revision: number;
|
|
76
|
+
state: {
|
|
77
|
+
[key: string]: DataSurfaceJsonValue;
|
|
78
|
+
};
|
|
79
|
+
selection: DataSurfaceSelectionReference | null;
|
|
80
|
+
}
|
|
81
|
+
export interface DataSurfaceVisibleCommand {
|
|
82
|
+
version: 1;
|
|
83
|
+
commandId: string;
|
|
84
|
+
identity: DataSurfaceIdentity;
|
|
85
|
+
expectedRevision: number;
|
|
86
|
+
controlId: string;
|
|
87
|
+
payload?: DataSurfaceJsonValue;
|
|
88
|
+
}
|
|
89
|
+
export interface DataSurfaceCommandResult {
|
|
90
|
+
ok: boolean;
|
|
91
|
+
commandId: string;
|
|
92
|
+
identity: DataSurfaceIdentity;
|
|
93
|
+
revision?: number;
|
|
94
|
+
snapshot?: DataSurfaceSnapshot;
|
|
95
|
+
reason?: DataSurfaceCommandResultReason;
|
|
96
|
+
}
|
|
97
|
+
export declare const DATA_SURFACE_BRIDGE_VERSION: 1;
|
|
98
|
+
export declare const DEFAULT_DATA_SURFACE_BRIDGE_TTL_MS = 30000;
|
|
99
|
+
export type DataSurfaceBridgeFailureReason = 'not_found' | 'unsupported' | 'stale_revision' | 'idempotency_conflict' | 'denied' | 'execution_failed' | 'non_monotonic_revision' | 'expired' | 'timeout' | 'disconnected' | 'invalid_request' | 'source_mismatch' | 'session_mismatch' | 'replay_capacity_exceeded';
|
|
100
|
+
export interface DataSurfaceCommandRequest {
|
|
101
|
+
type: 'data-surface.command';
|
|
102
|
+
version: typeof DATA_SURFACE_BRIDGE_VERSION;
|
|
103
|
+
commandId: string;
|
|
104
|
+
sessionId: string;
|
|
105
|
+
source: string;
|
|
106
|
+
expiresAt: number;
|
|
107
|
+
identity: DataSurfaceIdentity;
|
|
108
|
+
expectedRevision: number;
|
|
109
|
+
controlId: string;
|
|
110
|
+
payload?: DataSurfaceVisibleCommand['payload'];
|
|
111
|
+
}
|
|
112
|
+
export interface DataSurfaceCommandAck {
|
|
113
|
+
type: 'data-surface.ack';
|
|
114
|
+
version: typeof DATA_SURFACE_BRIDGE_VERSION;
|
|
115
|
+
commandId: string;
|
|
116
|
+
sessionId: string;
|
|
117
|
+
source: string;
|
|
118
|
+
expiresAt: number;
|
|
119
|
+
identity: DataSurfaceIdentity;
|
|
120
|
+
expectedRevision: number;
|
|
121
|
+
ok: boolean;
|
|
122
|
+
revision?: number;
|
|
123
|
+
snapshot?: DataSurfaceSnapshot;
|
|
124
|
+
reason?: DataSurfaceBridgeFailureReason;
|
|
125
|
+
}
|
|
126
|
+
export interface DataSurfaceBridgeEvent {
|
|
127
|
+
type: 'data-surface.event';
|
|
128
|
+
version: typeof DATA_SURFACE_BRIDGE_VERSION;
|
|
129
|
+
sessionId: string;
|
|
130
|
+
source: string;
|
|
131
|
+
sequence: number;
|
|
132
|
+
identity: DataSurfaceIdentity;
|
|
133
|
+
revision: number;
|
|
134
|
+
event: 'registered' | 'unregistered' | 'command';
|
|
135
|
+
command?: DataSurfaceVisibleCommand;
|
|
136
|
+
result?: DataSurfaceCommandResult;
|
|
137
|
+
}
|
|
138
|
+
export type DataSurfaceBridgeMessage = DataSurfaceCommandRequest | DataSurfaceCommandAck | DataSurfaceBridgeEvent;
|
|
139
|
+
/**
|
|
140
|
+
* Identity verified by the transport adapter, outside the wire message.
|
|
141
|
+
* Adapters must derive this from authenticated connection state (for example,
|
|
142
|
+
* a bound WebSocket session or an origin-checked postMessage peer), never
|
|
143
|
+
* from fields in `message`. `send` must route only to that bound peer.
|
|
144
|
+
*/
|
|
145
|
+
export interface DataSurfaceBridgePeer {
|
|
146
|
+
sessionId: string;
|
|
147
|
+
source: string;
|
|
148
|
+
}
|
|
149
|
+
export type DataSurfaceBridgeConnectionState = 'connected' | 'disconnected' | 'reconnecting';
|
|
150
|
+
export interface DataSurfaceBridgeTransport {
|
|
151
|
+
send(message: DataSurfaceBridgeMessage): void | Promise<void>;
|
|
152
|
+
subscribe(listener: (message: unknown, peer: DataSurfaceBridgePeer) => void): () => void;
|
|
153
|
+
subscribeStatus?: (listener: (state: DataSurfaceBridgeConnectionState) => void) => () => void;
|
|
154
|
+
}
|
|
155
|
+
export interface DataSurfaceCommandBridgeOptions {
|
|
156
|
+
transport: DataSurfaceBridgeTransport;
|
|
157
|
+
/** Server-authenticated browser session binding. */
|
|
158
|
+
sessionId: string;
|
|
159
|
+
/** Server source id placed on requests. */
|
|
160
|
+
source: string;
|
|
161
|
+
/** Browser source id accepted for acknowledgements/events. */
|
|
162
|
+
peerSource: string;
|
|
163
|
+
/** Must enforce application authorization; no default permit path exists. */
|
|
164
|
+
authorize: (command: DataSurfaceVisibleCommand) => boolean | Promise<boolean>;
|
|
165
|
+
now?: () => number;
|
|
166
|
+
ttlMs?: number;
|
|
167
|
+
timeoutMs?: number;
|
|
168
|
+
}
|
|
169
|
+
export interface DataSurfaceCommandBridge {
|
|
170
|
+
readonly sessionId: string;
|
|
171
|
+
readonly source: string;
|
|
172
|
+
readonly state: DataSurfaceBridgeConnectionState;
|
|
173
|
+
send(command: DataSurfaceVisibleCommand): Promise<DataSurfaceCommandAck>;
|
|
174
|
+
subscribe(listener: (event: DataSurfaceBridgeEvent) => void): () => void;
|
|
175
|
+
dispose(): void;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Send browser-visible commands from an already-authenticated server turn.
|
|
179
|
+
* `send()` deliberately requires a server callback before any bytes leave the
|
|
180
|
+
* process. It does not accept actor, tenant, or role fields from the caller.
|
|
181
|
+
*/
|
|
182
|
+
export declare function createDataSurfaceCommandBridge(options: DataSurfaceCommandBridgeOptions): DataSurfaceCommandBridge;
|
|
183
|
+
/** Explicit alias for consumers that want to name the server role. */
|
|
184
|
+
export declare const createServerDataSurfaceBridge: typeof createDataSurfaceCommandBridge;
|
|
185
|
+
export declare const createDataSurfaceBridge: typeof createDataSurfaceCommandBridge;
|
|
186
|
+
//# sourceMappingURL=data-surface-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-surface-bridge.d.ts","sourceRoot":"","sources":["../src/data-surface-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as createServerDataSurfaceBridge, i as createDataSurfaceCommandBridge, n as DEFAULT_DATA_SURFACE_BRIDGE_TTL_MS, r as createDataSurfaceBridge, t as DATA_SURFACE_BRIDGE_VERSION } from "./chunks/data-surface-bridge-BJomMxjS.js";
|
|
2
|
+
export { DATA_SURFACE_BRIDGE_VERSION, DEFAULT_DATA_SURFACE_BRIDGE_TTL_MS, createDataSurfaceBridge, createDataSurfaceCommandBridge, createServerDataSurfaceBridge };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-safe canonical validation for the server-side data-surface bridge.
|
|
3
|
+
*
|
|
4
|
+
* Keep this leaf free of Svelte imports. The browser-facing smrt-ui barrel
|
|
5
|
+
* includes component modules and is not safe to load from a plain Node server.
|
|
6
|
+
*/
|
|
7
|
+
export declare function assertDataSurfaceEnvelope(value: unknown): void;
|
|
8
|
+
export declare function normalizeDataSurfaceDescriptor(value: unknown): unknown;
|
|
9
|
+
export declare function normalizeDataSurfaceSnapshot(value: unknown): unknown;
|
|
10
|
+
export declare function normalizeDataSurfaceVisibleCommand(value: unknown): unknown;
|
|
11
|
+
//# sourceMappingURL=data-surface-normalizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-surface-normalizer.d.ts","sourceRoot":"","sources":["../src/data-surface-normalizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4PH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9D;AA6JD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA0NtE;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAmBpE;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA8B1E"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat-facing entry point for principal-bound data tools (#2447).
|
|
3
|
+
*
|
|
4
|
+
* The implementation remains in `@happyvertical/smrt-agents` so chat only
|
|
5
|
+
* offers these as the same `PrincipalTool[]` extra-tools seam as orchestration.
|
|
6
|
+
* No collection or ChatService internals are exposed here.
|
|
7
|
+
*/
|
|
8
|
+
export { createDataSurfaceQueryFingerprint, createDataSurfaceTools, DATA_DISCOVER_FUNCTION_NAME, DATA_DISCOVER_TOOL_SLUG, DATA_INSPECT_FUNCTION_NAME, DATA_INSPECT_TOOL_SLUG, DATA_QUERY_FUNCTION_NAME, DATA_QUERY_TOOL_SLUG, type DataSurfaceAuditEntry, type DataSurfaceAuditSink, DataSurfaceDeadlineError, type DataSurfaceDefinition, DataSurfaceDeniedError, type DataSurfaceExecutionContext, type DataSurfaceExecutor, type DataSurfaceExecutorResult, type DataSurfaceFailureEntry, type DataSurfaceFailureSink, type DataSurfaceField, type DataSurfaceFieldMetadata, type DataSurfacePrincipal, DataSurfaceQueryError, DataSurfaceRequestError, DataSurfaceResultOrderError, type DataSurfaceSchema, type DataSurfaceToolsOptions, DEFAULT_DATA_SURFACE_DEADLINE_MS, MAX_DATA_SURFACE_DEADLINE_MS, } from '@happyvertical/smrt-agents';
|
|
9
|
+
//# sourceMappingURL=data-surface-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-surface-tools.d.ts","sourceRoot":"","sources":["../src/data-surface-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,iCAAiC,EACjC,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { acceptAppliedChange, type CaptureChatFeedbackOptions, type ChatFeedbackBase, type ChatFeedbackPersona, type ChatFeedbackResult, captureChatFeedback, correctResponse, rateResponse, rejectAppliedChange, thumbsDown, thumbsUp, } from './chat-feedback.js';
|
|
2
2
|
export { ChatStreamBadRequestError, type ChatStreamContext, type ChatStreamControlCommand, ChatStreamError, type ChatStreamEvent, type ChatStreamHandlerOptions, type ChatStreamMessage, type ChatStreamPersonaBinding, type ChatStreamRequestBody, type ChatStreamRole, type ChatStreamSession, ChatStreamUnauthorizedError, createChatStreamHandler, DEFAULT_CHAT_STREAM_HEARTBEAT_MS, encodeChatStreamEvent, MAX_CHAT_STREAM_CONTENT_LENGTH, MAX_CHAT_STREAM_MESSAGES, type RunChatConversationStreamOptions, runChatConversationStream, } from './chat-stream.js';
|
|
3
|
+
export { createDataSurfaceBridge, createDataSurfaceCommandBridge, createServerDataSurfaceBridge, DATA_SURFACE_BRIDGE_VERSION, type DataSurfaceBridgeConnectionState, type DataSurfaceBridgeEvent, type DataSurfaceBridgeFailureReason, type DataSurfaceBridgeMessage, type DataSurfaceBridgeTransport, type DataSurfaceCommandAck, type DataSurfaceCommandBridge, type DataSurfaceCommandBridgeOptions, type DataSurfaceCommandRequest, DEFAULT_DATA_SURFACE_BRIDGE_TTL_MS, } from './data-surface-bridge.js';
|
|
4
|
+
export * from './data-surface-tools.js';
|
|
3
5
|
export { AgentSession, ChatMessage, ChatParticipant, ChatReaction, ChatRoom, ChatThread, VoiceGatewayTurn, VoiceSession, } from './models/index.js';
|
|
4
6
|
export { type AuthoredConversationMessages, type BindPersonaToSessionOptions, bindPersonaToSession, type ConversationPersona, type ConversationReplyService, conversationPersonaFromAgentPersona, conversationPersonaFromResolved, formatRecalledMemory, type PersonaConversationTurnOptions, type PersonaConversationTurnResult, type PersonaRecallOptions, principalBindingFor, recallPersonaMemory, resolveConversationInstructions, runPersonaConversationTurn, } from './persona-conversation.js';
|
|
5
7
|
export { ChatService } from './services/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAKH,OAAO,wBAAwB,CAAC;AAahC,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,gCAAgC,EAChC,qBAAqB,EACrB,8BAA8B,EAC9B,wBAAwB,EACxB,KAAK,gCAAgC,EACrC,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|