Jelajahi Sumber

refactor(client): name one assembly package for the carrier types

A business package imported the Remote assembly for `ctx.remote` and the
Connection plugin for the wire types it passes around. The assembly now
re-exports the carrier's Client-facing types, so a business package names one
package. The re-export is type-only: the carrier's runtime values keep their
own module edge, since inlining them here would duplicate the carrier inside
the assembly bundle.

Four surfaces that had no Remote assembly dependency declare one now.
imccyu 1 bulan lalu
induk
melakukan
159d102f99
58 mengubah file dengan 69 tambahan dan 85 penghapusan
  1. 1 1
      packages/client/ui-agent-preset/src/client/index.ts
  2. 1 1
      packages/client/ui-agent-preset/src/client/seat-store.ts
  3. 1 1
      packages/client/ui-agent-preset/src/client/section-store.ts
  4. 1 1
      packages/client/ui-agent-preset/src/client/settings-store.ts
  5. 1 1
      packages/client/ui-agent-preset/tests/section-store.spec.ts
  6. 1 1
      packages/client/ui-agent-preset/tests/settings-store.spec.ts
  7. 0 3
      packages/client/ui-agent-preset/tsconfig.json
  8. 0 2
      packages/client/ui-model/package.json
  9. 1 1
      packages/client/ui-model/src/client/ModelSelect.tsx
  10. 1 1
      packages/client/ui-model/src/client/directory.ts
  11. 2 3
      packages/client/ui-model/src/client/index.ts
  12. 1 1
      packages/client/ui-model/src/client/service.ts
  13. 1 1
      packages/client/ui-model/src/client/slots.ts
  14. 1 1
      packages/client/ui-model/tests/browser-plugin.spec.ts
  15. 1 1
      packages/client/ui-model/tests/model-select.spec.tsx
  16. 2 2
      packages/client/ui-model/tsconfig.json
  17. 1 1
      packages/client/ui-models/src/client/CustomProviderCard.tsx
  18. 1 1
      packages/client/ui-models/src/client/ModelListEditor.tsx
  19. 1 1
      packages/client/ui-models/src/client/ModelsSection.tsx
  20. 1 1
      packages/client/ui-models/src/client/ProviderEditor.tsx
  21. 1 1
      packages/client/ui-models/src/client/index.ts
  22. 1 1
      packages/client/ui-models/src/client/store.ts
  23. 1 1
      packages/client/ui-models/tests/components.spec.tsx
  24. 1 1
      packages/client/ui-models/tests/onboarding-dialog.spec.tsx
  25. 1 1
      packages/client/ui-models/tests/provider-form.spec.tsx
  26. 1 1
      packages/client/ui-models/tests/readiness.spec.ts
  27. 1 1
      packages/client/ui-models/tests/store.spec.ts
  28. 0 3
      packages/client/ui-models/tsconfig.json
  29. 1 1
      packages/client/ui-permission/src/client/index.ts
  30. 1 1
      packages/client/ui-permission/src/client/settings-store.ts
  31. 1 1
      packages/client/ui-permission/tests/permission-row.spec.tsx
  32. 1 1
      packages/client/ui-permission/tests/settings-store.spec.ts
  33. 0 3
      packages/client/ui-permission/tsconfig.json
  34. 6 4
      packages/client/ui-question/package.json
  35. 1 1
      packages/client/ui-question/src/client/contract/slots.ts
  36. 1 1
      packages/client/ui-question/tests/plan-review-panel.spec.tsx
  37. 1 1
      packages/client/ui-question/tests/question-composer.spec.tsx
  38. 2 2
      packages/client/ui-question/tsconfig.json
  39. 1 1
      packages/client/ui-settings-general/src/client/index.ts
  40. 1 1
      packages/client/ui-settings-general/src/client/settings-document-store.ts
  41. 1 1
      packages/client/ui-settings-general/src/client/welcome-store.ts
  42. 1 1
      packages/client/ui-settings-general/tests/settings-document-store.spec.ts
  43. 1 1
      packages/client/ui-settings-general/tests/welcome-store.spec.ts
  44. 0 3
      packages/client/ui-settings-general/tsconfig.json
  45. 0 2
      packages/client/ui-settings/package.json
  46. 2 2
      packages/client/ui-settings/src/client/settings-scope.ts
  47. 1 1
      packages/client/ui-settings/tests/settings-scope.spec.ts
  48. 1 4
      packages/client/ui-settings/tsconfig.json
  49. 2 4
      packages/client/ui-skill/package.json
  50. 2 3
      packages/client/ui-skill/src/client/index.ts
  51. 2 2
      packages/client/ui-skill/tsconfig.json
  52. 4 2
      packages/client/ui-tool/package.json
  53. 1 1
      packages/client/ui-tool/tests/diff-card.spec.tsx
  54. 1 1
      packages/client/ui-tool/tests/read-card.spec.tsx
  55. 1 1
      packages/client/ui-tool/tests/search-card.spec.tsx
  56. 1 1
      packages/client/ui-tool/tests/terminal-card.spec.tsx
  57. 1 1
      packages/client/ui-tool/tests/web-card.spec.tsx
  58. 3 0
      packages/client/ui-tool/tsconfig.json

+ 1 - 1
packages/client/ui-agent-preset/src/client/index.ts

@@ -11,7 +11,7 @@
  * before-the-fact, while the header only reports what a session already runs.
  */
 
-import type { ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'
+import type { ConnectionHandle } from '@deepseek-ai/dsh-api-remotes/client'
 // Type-only: pulls the locale plugin's Context merge (ctx.locale).
 import type {} from '@deepseek-ai/dsh-client-locale/client'
 // Type-only: pulls the ctx.remote merge and the forwarded-event key face

+ 1 - 1
packages/client/ui-agent-preset/src/client/seat-store.ts

@@ -10,7 +10,7 @@
  * deployment default again, matching the workspace picker beside it.
  */
 
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import {
   createSnapshotStore, type SessionId, type SnapshotStore,
 } from '@deepseek-ai/dsh-client-runtime/client'

+ 1 - 1
packages/client/ui-agent-preset/src/client/section-store.ts

@@ -14,7 +14,7 @@
  * more than the row it targeted.
  */
 
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import { createSnapshotStore, type SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import { beginRosterRead, messageOf, writeDefaultPreset } from './settings-store.ts'
 

+ 1 - 1
packages/client/ui-agent-preset/src/client/settings-store.ts

@@ -7,7 +7,7 @@
  * namespace's `default` field, which is what the host resolves at creation.
  */
 
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import { createSnapshotStore, type SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 
 /** The agent-preset settings namespace on the host wire. */

+ 1 - 1
packages/client/ui-agent-preset/tests/section-store.spec.ts

@@ -7,7 +7,7 @@
  */
 
 import { describe, expect, it } from 'vitest'
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import { AgentPresetSectionController, draftBlocker } from '../src/client/section-store.ts'
 import type { CopyDraft, PresetRow } from '../src/client/section-store.ts'
 

+ 1 - 1
packages/client/ui-agent-preset/tests/settings-store.spec.ts

@@ -6,7 +6,7 @@
  */
 
 import { describe, expect, it } from 'vitest'
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import {
   AGENT_PRESET_SETTINGS_NS, AgentPresetSettingsController, messageOf,
 } from '../src/client/settings-store.ts'

+ 0 - 3
packages/client/ui-agent-preset/tsconfig.json

@@ -8,9 +8,6 @@
     "src"
   ],
   "references": [
-    {
-      "path": "../connection"
-    },
     {
       "path": "../locale"
     },

+ 0 - 2
packages/client/ui-model/package.json

@@ -57,7 +57,6 @@
     "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
     "@deepseek-ai/dsh-invariants": "workspace:^",
     "clsx": "^2.1.1",
-    "@deepseek-ai/cordis": "workspace:^",
     "react": "^18.2.0"
   },
   "devDependencies": {
@@ -74,7 +73,6 @@
     "@deepseek-ai/dsh-invariants": "workspace:^",
     "@types/react": "~18.3.1",
     "clsx": "^2.1.1",
-    "@deepseek-ai/cordis": "workspace:^",
     "react": "^18.2.0"
   },
   "files": [

+ 1 - 1
packages/client/ui-model/src/client/ModelSelect.tsx

@@ -16,7 +16,7 @@ import {
   type KeyboardEvent, type FocusEvent,
 } from 'react'
 import clsx from 'clsx'
-import type { ModelReasoningEffort, ModelSelection } from '@deepseek-ai/dsh-client-connection/client'
+import type { ModelReasoningEffort, ModelSelection } from '@deepseek-ai/dsh-api-remotes/client'
 import {
   IconCheckOutline16, IconChevronDownOutline14, IconChevronRightOutline14,
   IconWarningOutline16, Toast,

+ 1 - 1
packages/client/ui-model/src/client/directory.ts

@@ -7,7 +7,7 @@
  */
 import type {
   IApiClient, ModelCatalogFailure, ModelProviderGroup, ModelSelection, SessionId, SessionModels,
-} from '@deepseek-ai/dsh-client-connection/client'
+} from '@deepseek-ai/dsh-api-remotes/client'
 import type { SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import { createSnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 

+ 2 - 3
packages/client/ui-model/src/client/index.ts

@@ -11,9 +11,8 @@
  * neither entry because those Agent-bound RPCs would activate persisted
  * history outside the direct-parent continuation path.
  */
-import type { ModelSelection, SessionModels } from '@deepseek-ai/dsh-client-connection/client'
-// Type-only: pulls the forwarded Host-event face and ctx.remote merge.
-import type {} from '@deepseek-ai/dsh-api-remotes/client'
+// Type-only: the carrier types, the forwarded Host-event face and the ctx.remote merge.
+import type { ModelSelection, SessionModels } from '@deepseek-ai/dsh-api-remotes/client'
 import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
 import type { CommandServiceContract, SelectOption } from '@deepseek-ai/dsh-client-ui-command/client'
 // Type-only: pulls the ui-conversation SlotMap merge (the input.model seat).

+ 1 - 1
packages/client/ui-model/src/client/service.ts

@@ -14,7 +14,7 @@
  */
 import { Service } from '@deepseek-ai/cordis'
 import type { Context } from '@deepseek-ai/cordis'
-import type { ConnectionHandle, SessionId } from '@deepseek-ai/dsh-client-connection/client'
+import type { ConnectionHandle, SessionId } from '@deepseek-ai/dsh-api-remotes/client'
 import type { SessionsService } from '@deepseek-ai/dsh-client-runtime/client'
 import { ModelDirectory } from './directory.ts'
 

+ 1 - 1
packages/client/ui-model/src/client/slots.ts

@@ -4,7 +4,7 @@
  * entry; this package only contributes the single occupant, so no SlotMap
  * merge lives here.
  */
-import type { ModelSelection } from '@deepseek-ai/dsh-client-connection/client'
+import type { ModelSelection } from '@deepseek-ai/dsh-api-remotes/client'
 import type { SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import type { ModelDirectoryState } from './directory.ts'
 

+ 1 - 1
packages/client/ui-model/tests/browser-plugin.spec.ts

@@ -14,7 +14,7 @@ import { createScope } from '@deepseek-ai/dsh-client-runtime/client'
 import type { SessionId } from '@deepseek-ai/dsh-client-runtime/client'
 import { LocaleService } from '@deepseek-ai/dsh-client-locale/client'
 import { TestRemote } from '@deepseek-ai/dsh-client-test-runtime'
-import type { ModelSelection } from '@deepseek-ai/dsh-client-connection/client'
+import type { ModelSelection } from '@deepseek-ai/dsh-api-remotes/client'
 import type { CommandContribution, SelectOption } from '@deepseek-ai/dsh-client-ui-command/client'
 import type { ModelSelectInjected } from '../src/client/slots.ts'
 import { apply, inject } from '../src/client/index.ts'

+ 1 - 1
packages/client/ui-model/tests/model-select.spec.tsx

@@ -1,7 +1,7 @@
 // @vitest-environment jsdom
 import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
 import { afterEach, describe, expect, it, vi } from 'vitest'
-import type { ModelSelection } from '@deepseek-ai/dsh-client-connection/client'
+import type { ModelSelection } from '@deepseek-ai/dsh-api-remotes/client'
 import { createSnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import type { ComponentProps } from 'react'
 import type { ModelDirectoryState } from '../src/client/directory.ts'

+ 2 - 2
packages/client/ui-model/tsconfig.json

@@ -9,10 +9,10 @@
   ],
   "references": [
     {
-      "path": "../../../vendor/cordis"
+      "path": "../../api/remotes/tsconfig.client.json"
     },
     {
-      "path": "../connection"
+      "path": "../../../vendor/cordis"
     },
     {
       "path": "../locale"

+ 1 - 1
packages/client/ui-models/src/client/CustomProviderCard.tsx

@@ -23,7 +23,7 @@
 
 import { useState } from 'react'
 import type { ReactNode } from 'react'
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import { apiKeyFailure } from './apiKey.ts'
 import { EditorFooter } from './EditorFooter.tsx'
 import { validateDeepSeekModels } from './DeepSeekModelsEditor.tsx'

+ 1 - 1
packages/client/ui-models/src/client/ModelListEditor.tsx

@@ -16,7 +16,7 @@
 
 import { useState } from 'react'
 import type { ReactNode } from 'react'
-import type { DiscoveredModelView, IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { DiscoveredModelView, IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import { Button, Modal } from '@deepseek-ai/dsh-client-ui-primitives'
 import { formatCapacity, parseCapacity } from './DeepSeekModelsEditor.tsx'
 import type { DeepSeekModelDraft } from './DeepSeekModelsEditor.tsx'

+ 1 - 1
packages/client/ui-models/src/client/ModelsSection.tsx

@@ -12,7 +12,7 @@
 
 import { useState } from 'react'
 import type { ReactNode } from 'react'
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import { Button, IconPlusOutline16, Modal } from '@deepseek-ai/dsh-client-ui-primitives'
 import type { SnapshotSelectorHook } from '@deepseek-ai/dsh-client-web-react'
 import { CustomProviderCard } from './CustomProviderCard.tsx'

+ 1 - 1
packages/client/ui-models/src/client/ProviderEditor.tsx

@@ -23,7 +23,7 @@
 
 import { useEffect, useMemo, useState } from 'react'
 import type { ReactNode } from 'react'
-import type { CredentialView, IApiClient, SettingsNamespaceView, SettingsPathOpView } from '@deepseek-ai/dsh-client-connection/client'
+import type { CredentialView, IApiClient, SettingsNamespaceView, SettingsPathOpView } from '@deepseek-ai/dsh-api-remotes/client'
 import {
   deletePath, getPath, hasPath, nodeAtPath, rehydrateSchema, setPath, validateDraft,
 } from '@deepseek-ai/dsh-client-schema-form'

+ 1 - 1
packages/client/ui-models/src/client/index.ts

@@ -6,7 +6,7 @@
  * packages/client/AGENTS.md.
  */
 import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
-import type { ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'
+import type { ConnectionHandle } from '@deepseek-ai/dsh-api-remotes/client'
 import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
 // Type-only: pulls the shell's SlotMap merge (the 'settings.section' entry).
 import type {} from '@deepseek-ai/dsh-client-ui-settings/client'

+ 1 - 1
packages/client/ui-models/src/client/store.ts

@@ -8,7 +8,7 @@
 
 import type {
   ConfigurableProviderView, CredentialView, IApiClient, SettingsNamespaceView,
-} from '@deepseek-ai/dsh-client-connection/client'
+} from '@deepseek-ai/dsh-api-remotes/client'
 import type { SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import { createSnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import { getPath, hasPath, nodeAtPath, rehydrateSchema } from '@deepseek-ai/dsh-client-schema-form'

+ 1 - 1
packages/client/ui-models/tests/components.spec.tsx

@@ -4,7 +4,7 @@ import { act, cleanup, fireEvent, render, screen, waitFor, within } from '@testi
 import { afterEach, describe, expect, it, vi } from 'vitest'
 import Schema from '@deepseek-ai/schemastery'
 import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
-import type { RpcResponse, SettingsNamespaceView } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcResponse, SettingsNamespaceView } from '@deepseek-ai/dsh-api-remotes/client'
 import {
   ModelsSection, needsSetup, providerCopy, providerTargetLabel, removeProviderProfile,
 } from '../src/client/ModelsSection.tsx'

+ 1 - 1
packages/client/ui-models/tests/onboarding-dialog.spec.tsx

@@ -2,7 +2,7 @@
 /** First-run DeepSeek prompt behavior over the shared Models join. */
 import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
 import { afterEach, describe, expect, it, vi } from 'vitest'
-import type { RpcResponse } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcResponse } from '@deepseek-ai/dsh-api-remotes/client'
 import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
 import { DeepSeekOnboardingDialog } from '../src/client/DeepSeekOnboardingDialog.tsx'
 import type { DeepSeekOnboardingDialogProps } from '../src/client/DeepSeekOnboardingDialog.tsx'

+ 1 - 1
packages/client/ui-models/tests/provider-form.spec.tsx

@@ -4,7 +4,7 @@ import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/re
 import { afterEach, describe, expect, it, vi } from 'vitest'
 import Schema from '@deepseek-ai/schemastery'
 import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
-import type { RpcResponse, SettingsNamespaceView } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcResponse, SettingsNamespaceView } from '@deepseek-ai/dsh-api-remotes/client'
 import { ModelsSection, providerCopy } from '../src/client/ModelsSection.tsx'
 import type { ModelsSectionInjected } from '../src/client/ModelsSection.tsx'
 import { CustomProviderCard } from '../src/client/CustomProviderCard.tsx'

+ 1 - 1
packages/client/ui-models/tests/readiness.spec.ts

@@ -1,6 +1,6 @@
 /** Pure official-DeepSeek readiness projection over the shared Models join. */
 import { describe, expect, it } from 'vitest'
-import type { CredentialView } from '@deepseek-ai/dsh-client-connection/client'
+import type { CredentialView } from '@deepseek-ai/dsh-api-remotes/client'
 import type { ModelsSettingsState, ProviderRow } from '../src/client/store.ts'
 import { deepSeekReadiness } from '../src/client/store.ts'
 

+ 1 - 1
packages/client/ui-models/tests/store.spec.ts

@@ -1,6 +1,6 @@
 /** Page-store join: directory × namespaces × credentials, with last-good rows on failure. */
 import { describe, expect, it } from 'vitest'
-import type { RpcResponse } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcResponse } from '@deepseek-ai/dsh-api-remotes/client'
 import { messageOf, ModelsSettingsStore } from '../src/client/store.ts'
 
 let nextRpc = 0

+ 0 - 3
packages/client/ui-models/tsconfig.json

@@ -17,9 +17,6 @@
     {
       "path": "../runtime"
     },
-    {
-      "path": "../connection"
-    },
     {
       "path": "../schema-form"
     },

+ 1 - 1
packages/client/ui-permission/src/client/index.ts

@@ -13,7 +13,7 @@
  * The General-settings row separately writes the default preset for sessions
  * created later through the host Settings API.
  */
-import type { ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'
+import type { ConnectionHandle } from '@deepseek-ai/dsh-api-remotes/client'
 // Type-only: pulls the locale plugin's Context merge (ctx.locale).
 import type {} from '@deepseek-ai/dsh-client-locale/client'
 // Type-only: the settings slot types (this package registers a General row).

+ 1 - 1
packages/client/ui-permission/src/client/settings-store.ts

@@ -6,7 +6,7 @@
 
 import type {
   IApiClient, SettingsNamespaceView,
-} from '@deepseek-ai/dsh-client-connection/client'
+} from '@deepseek-ai/dsh-api-remotes/client'
 import {
   createSnapshotStore, type SnapshotStore,
 } from '@deepseek-ai/dsh-client-runtime/client'

+ 1 - 1
packages/client/ui-permission/tests/permission-row.spec.tsx

@@ -2,7 +2,7 @@
 import { afterEach, describe, expect, it, vi } from 'vitest'
 import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
 import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
-import type { SettingsNamespaceView } from '@deepseek-ai/dsh-client-connection/client'
+import type { SettingsNamespaceView } from '@deepseek-ai/dsh-api-remotes/client'
 import { PermissionRow, type PermissionRowProps } from '../src/client/PermissionRow.tsx'
 import { en } from '../src/client/locales.ts'
 import { PermissionSettingsController } from '../src/client/settings-store.ts'

+ 1 - 1
packages/client/ui-permission/tests/settings-store.spec.ts

@@ -1,5 +1,5 @@
 import { describe, expect, it, vi } from 'vitest'
-import type { SettingsNamespaceView } from '@deepseek-ai/dsh-client-connection/client'
+import type { SettingsNamespaceView } from '@deepseek-ai/dsh-api-remotes/client'
 import {
   PermissionSettingsController, permissionDefaultOf, refreshPermissionIfLoaded,
 } from '../src/client/settings-store.ts'

+ 0 - 3
packages/client/ui-permission/tsconfig.json

@@ -8,9 +8,6 @@
     "src"
   ],
   "references": [
-    {
-      "path": "../connection"
-    },
     {
       "path": "../locale"
     },

+ 6 - 4
packages/client/ui-question/package.json

@@ -53,19 +53,21 @@
     "react": "^18.2.0"
   },
   "peerDependencies": {
+    "@deepseek-ai/cordis": "workspace:^",
+    "@deepseek-ai/dsh-api-remotes": "workspace:^",
     "@deepseek-ai/dsh-client-locale": "workspace:^",
-    "@deepseek-ai/dsh-invariants": "workspace:^",
-    "@deepseek-ai/cordis": "workspace:^"
+    "@deepseek-ai/dsh-invariants": "workspace:^"
   },
   "devDependencies": {
+    "@deepseek-ai/cordis": "workspace:^",
     "@deepseek-ai/dsh-agent": "workspace:^",
+    "@deepseek-ai/dsh-api-remotes": "workspace:^",
     "@deepseek-ai/dsh-client-locale": "workspace:^",
     "@deepseek-ai/dsh-invariants": "workspace:^",
     "@deepseek-ai/dsh-system-prompt": "workspace:^",
     "@deepseek-ai/dsh-tools": "workspace:^",
     "@deepseek-ai/dsh-user-interaction": "workspace:^",
-    "@types/react": "~18.3.1",
-    "@deepseek-ai/cordis": "workspace:^"
+    "@types/react": "~18.3.1"
   },
   "files": [
     "lib/index.js",

+ 1 - 1
packages/client/ui-question/src/client/contract/slots.ts

@@ -11,7 +11,7 @@ import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots
 // entry) into every program that sees this contract, so PropsRuntime resolves.
 import type {} from '@deepseek-ai/dsh-client-ui-conversation/client'
 import type { PendingWait } from '@deepseek-ai/dsh-client-runtime/client'
-import type { QuestionResponsePayload } from '@deepseek-ai/dsh-client-connection/client'
+import type { QuestionResponsePayload } from '@deepseek-ai/dsh-api-remotes/client'
 
 /** The pending question carrier the owner dispatches into the composer slot. */
 export type QuestionWait = PendingWait<'question'>

+ 1 - 1
packages/client/ui-question/tests/plan-review-panel.spec.tsx

@@ -9,7 +9,7 @@ import type {
   ConversationSnapshot, SessionId, SessionListState, WorkspaceListState,
 } from '@deepseek-ai/dsh-client-runtime/client'
 import { PendingWait } from '@deepseek-ai/dsh-client-runtime/client'
-import type { RpcReceipt } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcReceipt } from '@deepseek-ai/dsh-api-remotes/client'
 import { RpcId } from '@deepseek-ai/dsh-client-connection/client'
 import type { SnapshotSelectorHook } from '@deepseek-ai/dsh-client-ui-slots'
 import { planReviewOf, type QuestionComposerProps, type QuestionWait } from '../src/client/contract/slots.ts'

+ 1 - 1
packages/client/ui-question/tests/question-composer.spec.tsx

@@ -5,7 +5,7 @@ import type {
   ConversationSnapshot, SessionId, SessionListState, WorkspaceListState,
 } from '@deepseek-ai/dsh-client-runtime/client'
 import { PendingWait } from '@deepseek-ai/dsh-client-runtime/client'
-import type { RpcReceipt } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcReceipt } from '@deepseek-ai/dsh-api-remotes/client'
 import { RpcId } from '@deepseek-ai/dsh-client-connection/client'
 import type { SnapshotSelectorHook } from '@deepseek-ai/dsh-client-ui-slots'
 import { PendingQuestion, type QuestionComposerProps } from '../src/client/contract/slots.ts'

+ 2 - 2
packages/client/ui-question/tsconfig.json

@@ -9,10 +9,10 @@
   ],
   "references": [
     {
-      "path": "../../../vendor/cordis"
+      "path": "../../api/remotes/tsconfig.client.json"
     },
     {
-      "path": "../connection"
+      "path": "../../../vendor/cordis"
     },
     {
       "path": "../locale"

+ 1 - 1
packages/client/ui-settings-general/src/client/index.ts

@@ -8,7 +8,7 @@
  * Export discipline: packages/client/AGENTS.md.
  */
 import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
-import type { ConnectionHandle } from '@deepseek-ai/dsh-client-connection/client'
+import type { ConnectionHandle } from '@deepseek-ai/dsh-api-remotes/client'
 import { resolveSlotLabel } from '@deepseek-ai/dsh-client-ui-slots'
 import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
 // Type-only: the settings slot declarations plus the ctx.settingsScope Context

+ 1 - 1
packages/client/ui-settings-general/src/client/settings-document-store.ts

@@ -1,6 +1,6 @@
 /** State owner for the optional local settings-document action. */
 
-import type { IApiClient } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient } from '@deepseek-ai/dsh-api-remotes/client'
 import { createSnapshotStore, type SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 
 /** Browser state of the Host-owned settings document. */

+ 1 - 1
packages/client/ui-settings-general/src/client/welcome-store.ts

@@ -1,6 +1,6 @@
 /** Welcome-notice state, durable when the browser may use Host settings. */
 
-import type { IApiClient, SettingsNamespaceView } from '@deepseek-ai/dsh-client-connection/client'
+import type { IApiClient, SettingsNamespaceView } from '@deepseek-ai/dsh-api-remotes/client'
 import type { SnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import { createSnapshotStore } from '@deepseek-ai/dsh-client-runtime/client'
 import {

+ 1 - 1
packages/client/ui-settings-general/tests/settings-document-store.spec.ts

@@ -1,5 +1,5 @@
 import { describe, expect, it, vi } from 'vitest'
-import type { RpcResponse } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcResponse } from '@deepseek-ai/dsh-api-remotes/client'
 import { SettingsDocumentStore } from '../src/client/settings-document-store.ts'
 
 function response(hasDocument = false): RpcResponse<{

+ 1 - 1
packages/client/ui-settings-general/tests/welcome-store.spec.ts

@@ -1,5 +1,5 @@
 import { describe, expect, it, vi } from 'vitest'
-import type { RpcResponse } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcResponse } from '@deepseek-ai/dsh-api-remotes/client'
 import { WelcomeNoticeStore } from '../src/client/welcome-store.ts'
 import { refreshWelcomeIfLoaded } from '../src/client/welcome-store.ts'
 import {

+ 0 - 3
packages/client/ui-settings-general/tsconfig.json

@@ -14,9 +14,6 @@
     {
       "path": "../ui-slots"
     },
-    {
-      "path": "../connection"
-    },
     {
       "path": "../ui-primitives"
     },

+ 0 - 2
packages/client/ui-settings/package.json

@@ -46,7 +46,6 @@
   "license": "BSD-3-Clause",
   "peerDependencies": {
     "@deepseek-ai/cordis": "workspace:^",
-    "@deepseek-ai/dsh-api-gateway": "workspace:^",
     "@deepseek-ai/dsh-api-remotes": "workspace:^",
     "@deepseek-ai/dsh-client-connection": "workspace:^",
     "@deepseek-ai/dsh-client-runtime": "workspace:^",
@@ -58,7 +57,6 @@
   },
   "devDependencies": {
     "@deepseek-ai/cordis": "workspace:^",
-    "@deepseek-ai/dsh-api-gateway": "workspace:^",
     "@deepseek-ai/dsh-api-remotes": "workspace:^",
     "@deepseek-ai/dsh-client-connection": "workspace:^",
     "@deepseek-ai/dsh-client-runtime": "workspace:^",

+ 2 - 2
packages/client/ui-settings/src/client/settings-scope.ts

@@ -9,7 +9,7 @@ import { Service } from '@deepseek-ai/cordis'
 import type { Context } from '@deepseek-ai/cordis'
 import type {
   ConnectionHandle, IApiClient, SettingsNamespaceView, SettingsPathOpView,
-} from '@deepseek-ai/dsh-client-connection/client'
+} from '@deepseek-ai/dsh-api-remotes/client'
 import { rehydrateSchema, validateDraft } from '@deepseek-ai/dsh-client-schema-form'
 import {
   createSnapshotStore, type SettingsScope, type SettingsScopeSnapshot,
@@ -24,7 +24,7 @@ import {
 // `$on` and its key face without dragging a build artifact in. The runtime
 // `remote` injection belongs to whoever calls bindSettingsScope: the
 // subscription is registered on the caller's own context.
-import type {} from '@deepseek-ai/dsh-api-gateway/client'
+import type {} from '@deepseek-ai/dsh-api-remotes/client'
 import type {} from '@deepseek-ai/dsh-api-remotes/types'
 // The forwarded event's own declaration: `$on`'s key face is
 // `Extract<keyof Events, keyof Selection>`, so the allowlist alone resolves to

+ 1 - 1
packages/client/ui-settings/tests/settings-scope.spec.ts

@@ -1,7 +1,7 @@
 import { Context } from '@deepseek-ai/cordis'
 import z from '@deepseek-ai/schemastery'
 import { describe, expect, it, vi } from 'vitest'
-import type { RpcResponse, SettingsNamespaceView } from '@deepseek-ai/dsh-client-connection/client'
+import type { RpcResponse, SettingsNamespaceView } from '@deepseek-ai/dsh-api-remotes/client'
 import { TestRemote } from '@deepseek-ai/dsh-client-test-runtime'
 import type { SettingsScope } from '@deepseek-ai/dsh-client-runtime/client'
 import { SettingsScopeController, SettingsScopeService } from '../src/client/settings-scope.ts'

+ 1 - 4
packages/client/ui-settings/tsconfig.json

@@ -17,14 +17,11 @@
     {
       "path": "../runtime"
     },
-    {
-      "path": "../connection"
-    },
     {
       "path": "../schema-form"
     },
     {
-      "path": "../../api/gateway"
+      "path": "../../api/remotes/tsconfig.client.json"
     },
     {
       "path": "../../settings/settings"

+ 2 - 4
packages/client/ui-skill/package.json

@@ -51,12 +51,11 @@
     "@deepseek-ai/dsh-client-connection": "workspace:^",
     "@deepseek-ai/dsh-client-locale": "workspace:^",
     "@deepseek-ai/dsh-client-runtime": "workspace:^",
-    "@deepseek-ai/dsh-client-ui-tool": "workspace:^",
     "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
     "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
     "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+    "@deepseek-ai/dsh-client-ui-tool": "workspace:^",
     "@deepseek-ai/dsh-invariants": "workspace:^",
-    "@deepseek-ai/cordis": "workspace:^",
     "react": "^18.2.0"
   },
   "devDependencies": {
@@ -65,14 +64,13 @@
     "@deepseek-ai/dsh-client-locale": "workspace:^",
     "@deepseek-ai/dsh-client-runtime": "workspace:^",
     "@deepseek-ai/dsh-client-test-runtime": "workspace:^",
-    "@deepseek-ai/dsh-client-ui-tool": "workspace:^",
     "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
     "@deepseek-ai/dsh-client-ui-slash": "workspace:^",
     "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
+    "@deepseek-ai/dsh-client-ui-tool": "workspace:^",
     "@deepseek-ai/dsh-invariants": "workspace:^",
     "@testing-library/react": "^16.1.0",
     "@types/react": "~18.3.1",
-    "@deepseek-ai/cordis": "workspace:^",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
   },

+ 2 - 3
packages/client/ui-skill/src/client/index.ts

@@ -29,9 +29,8 @@
  * This browser half also owns the `skill` keyed toolview: a replay-stable
  * accent row derived only from each logged call/result slice.
  */
-import type { ConnectionHandle, SessionId, SkillEntry } from '@deepseek-ai/dsh-client-connection/client'
-// Type-only: pulls the forwarded Host-event face and ctx.remote merge.
-import type {} from '@deepseek-ai/dsh-api-remotes/client'
+// Type-only: the carrier types, the forwarded Host-event face and the ctx.remote merge.
+import type { ConnectionHandle, SessionId, SkillEntry } from '@deepseek-ai/dsh-api-remotes/client'
 import type { ClientContext, ISessions } from '@deepseek-ai/dsh-client-runtime/client'
 import type { SlashServiceContract, SlashSource } from '@deepseek-ai/dsh-client-ui-slash/client'
 // Type-only: pulls the locale plugin's Context merge (ctx.locale).

+ 2 - 2
packages/client/ui-skill/tsconfig.json

@@ -9,10 +9,10 @@
   ],
   "references": [
     {
-      "path": "../../../vendor/cordis"
+      "path": "../../api/remotes/tsconfig.client.json"
     },
     {
-      "path": "../connection"
+      "path": "../../../vendor/cordis"
     },
     {
       "path": "../locale"

+ 4 - 2
packages/client/ui-tool/package.json

@@ -48,16 +48,19 @@
     "clsx": "^2.0.0"
   },
   "peerDependencies": {
+    "@deepseek-ai/cordis": "workspace:^",
+    "@deepseek-ai/dsh-api-remotes": "workspace:^",
     "@deepseek-ai/dsh-client-locale": "workspace:^",
     "@deepseek-ai/dsh-client-runtime": "workspace:^",
     "@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
     "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
     "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
     "@deepseek-ai/dsh-invariants": "workspace:^",
-    "@deepseek-ai/cordis": "workspace:^",
     "react": "^18.2.0"
   },
   "devDependencies": {
+    "@deepseek-ai/cordis": "workspace:^",
+    "@deepseek-ai/dsh-api-remotes": "workspace:^",
     "@deepseek-ai/dsh-client-connection": "workspace:^",
     "@deepseek-ai/dsh-client-locale": "workspace:^",
     "@deepseek-ai/dsh-client-runtime": "workspace:^",
@@ -69,7 +72,6 @@
     "@deepseek-ai/dsh-invariants": "workspace:^",
     "@testing-library/react": "^16.1.0",
     "@types/react": "~18.3.1",
-    "@deepseek-ai/cordis": "workspace:^",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
   },

+ 1 - 1
packages/client/ui-tool/tests/diff-card.spec.tsx

@@ -13,7 +13,7 @@ import {
 import type {
   ConversationSnapshot, RunningToolCall, SessionId, SessionListState, ToolResultNode, WorkspaceListState,
 } from '@deepseek-ai/dsh-client-runtime/client'
-import type { ToolCallView, ToolResultView } from '@deepseek-ai/dsh-client-connection/client'
+import type { ToolCallView, ToolResultView } from '@deepseek-ai/dsh-api-remotes/client'
 import type { SelectionTarget } from '@deepseek-ai/dsh-client-ui-conversation/client'
 import { makeTranslate } from '@deepseek-ai/dsh-client-test-runtime'
 import { zh as commonZh } from '@deepseek-ai/dsh-client-locale/src/locales/zh.ts'

+ 1 - 1
packages/client/ui-tool/tests/read-card.spec.tsx

@@ -18,7 +18,7 @@ import { zh as commonZh } from '@deepseek-ai/dsh-client-locale/src/locales/zh.ts
 import type {
   ConversationSnapshot, RunningToolCall, SessionId, SessionListState, ToolResultNode, WorkspaceListState,
 } from '@deepseek-ai/dsh-client-runtime/client'
-import type { ToolResultView } from '@deepseek-ai/dsh-client-connection/client'
+import type { ToolResultView } from '@deepseek-ai/dsh-api-remotes/client'
 import type { SelectionTarget } from '@deepseek-ai/dsh-client-ui-conversation/client'
 import { CHAT_READ_MAX_LINES, readCardModel } from '../src/client/tool/models/read-card-model.ts'
 import { createChatStore } from '@deepseek-ai/dsh-client-ui-conversation/src/client/stores.ts'

+ 1 - 1
packages/client/ui-tool/tests/search-card.spec.tsx

@@ -15,7 +15,7 @@ import {
 import type {
   ConversationSnapshot, RunningToolCall, SessionId, SessionListState, ToolResultNode, WorkspaceListState,
 } from '@deepseek-ai/dsh-client-runtime/client'
-import type { ToolResultView } from '@deepseek-ai/dsh-client-connection/client'
+import type { ToolResultView } from '@deepseek-ai/dsh-api-remotes/client'
 import type { SelectionTarget } from '@deepseek-ai/dsh-client-ui-conversation/client'
 import { makeTranslate } from '@deepseek-ai/dsh-client-test-runtime'
 import { zh as commonZh } from '@deepseek-ai/dsh-client-locale/src/locales/zh.ts'

+ 1 - 1
packages/client/ui-tool/tests/terminal-card.spec.tsx

@@ -13,7 +13,7 @@ import {
 import type {
   ConversationSnapshot, RunningToolCall, SessionId, SessionListState, ToolResultNode, WorkspaceListState,
 } from '@deepseek-ai/dsh-client-runtime/client'
-import type { ToolCallView, ToolResultView } from '@deepseek-ai/dsh-client-connection/client'
+import type { ToolCallView, ToolResultView } from '@deepseek-ai/dsh-api-remotes/client'
 import type { SelectionTarget } from '@deepseek-ai/dsh-client-ui-conversation/client'
 import { makeTranslate } from '@deepseek-ai/dsh-client-test-runtime'
 import { zh as commonZh } from '@deepseek-ai/dsh-client-locale/src/locales/zh.ts'

+ 1 - 1
packages/client/ui-tool/tests/web-card.spec.tsx

@@ -16,7 +16,7 @@ import {
 import type {
   ConversationSnapshot, RunningToolCall, SessionId, SessionListState, ToolResultNode, WorkspaceListState,
 } from '@deepseek-ai/dsh-client-runtime/client'
-import type { ToolResultView } from '@deepseek-ai/dsh-client-connection/client'
+import type { ToolResultView } from '@deepseek-ai/dsh-api-remotes/client'
 import { bindSnapshotSelector } from '@deepseek-ai/dsh-client-web-react'
 import type { SelectionTarget } from '@deepseek-ai/dsh-client-ui-conversation/client'
 import type { ToolCallOwnerProps } from '@deepseek-ai/dsh-client-ui-tool/client'

+ 3 - 0
packages/client/ui-tool/tsconfig.json

@@ -8,6 +8,9 @@
     "src"
   ],
   "references": [
+    {
+      "path": "../../api/remotes/tsconfig.client.json"
+    },
     {
       "path": "../../../vendor/cordis"
     },