fix(web): expose loopback policy safely

This commit is contained in:
ZiyaZhang
2026-08-02 13:30:53 -07:00
parent 7a71ab9a92
commit 57343cfeb8
5 changed files with 5 additions and 4 deletions
+1
View File
@@ -19,6 +19,7 @@
"types": "./lib/types/client/index.d.ts",
"default": "./lib/client.js"
},
"./loopback-hostname": "./src/loopback-hostname.ts",
"./src/*": "./src/*",
"./package.json": "./package.json"
},
@@ -9,8 +9,6 @@ import { ConnectionController, type ConnectionConfig, type ConnectionSinks, type
import { FixtureApiClient } from './fixture.ts'
import { WebApiClient } from './web-api-client.ts'
export { isLoopbackHostname } from '../loopback-hostname.ts'
// ---- Contract re-exports (browser-safe apiproxy channels + core types) ----
export type {
ApiProxy, SessionsApi, SessionSearchItem, SessionSummary, HostApi, EventsApi, MuxFrame, HostFrame,
+1 -1
View File
@@ -28,7 +28,7 @@ const CSS_VIRTUAL_SUFFIX = '.mjs'
* Everything else under @deepseek-ai/* is either a module-table entry
* (external) or a leak the purity gate rejects.
*/
export const INLINE_SAFE = /^@deepseek-ai\/dsh-(host-apiproxy|session|llm|tools|brand)(\/|$)/
export const INLINE_SAFE = /^(?:@deepseek-ai\/dsh-(?:host-apiproxy|session|llm|tools|brand)(?:\/|$)|@deepseek-ai\/dsh-client-connection\/loopback-hostname$)/
/**
* Documented TEMPORARY exemption, not a platform module (hence not in
@@ -7,7 +7,8 @@
*/
import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
import { deferRegistration } from '@deepseek-ai/dsh-client-ui-slots'
import { isLoopbackHostname, type ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'
import type { ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'
import { isLoopbackHostname } from '@deepseek-ai/dsh-client-connection/loopback-hostname'
import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
// Type-only: pulls the shell's SlotMap merges (trigger/header/section/item).
import type {} from '@deepseek-ai/dsh-client-ui-settings/client'
+1
View File
@@ -53,6 +53,7 @@ describe('client bundle purity gate', () => {
expect(resolveId('@deepseek-ai/dsh-host-apiproxy/api')).toBeNull()
expect(resolveId('@deepseek-ai/dsh-session/surface')).toBeNull()
expect(resolveId('@deepseek-ai/dsh-brand')).toBeNull()
expect(resolveId('@deepseek-ai/dsh-client-connection/loopback-hostname')).toBeNull()
})
it('throws on any other @deepseek-ai leak', () => {