diff --git a/package.json b/package.json index 0a9574847..883ff3e2b 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "test:watch": "vitest" }, "dependencies": { - "@chat-adapter/shared": "^4.24.0", "@onecli-sh/sdk": "^0.3.1", "better-sqlite3": "11.10.0", "chat": "^4.24.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4874dd812..c7cb77038 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ importers: .: dependencies: - '@chat-adapter/shared': - specifier: ^4.24.0 - version: 4.26.0 '@onecli-sh/sdk': specifier: ^0.3.1 version: 0.3.1 @@ -66,9 +63,6 @@ importers: packages: - '@chat-adapter/shared@4.26.0': - resolution: {integrity: sha512-YD0MGktFXrArUqTBsyPfL5vkdD1WBS58PAWO0oVrMQAMmPxpAXfWGjBtZCkf3y8R8Svb0uVuVXiMZSForaEnMQ==} - '@emnapi/core@1.9.2': resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} @@ -1516,12 +1510,6 @@ packages: snapshots: - '@chat-adapter/shared@4.26.0': - dependencies: - chat: 4.26.0 - transitivePeerDependencies: - - supports-color - '@emnapi/core@1.9.2': dependencies: '@emnapi/wasi-threads': 1.2.1 diff --git a/src/channels/channel-registry.ts b/src/channels/channel-registry.ts index 7778cfdcb..645c64e5a 100644 --- a/src/channels/channel-registry.ts +++ b/src/channels/channel-registry.ts @@ -1,15 +1,21 @@ /** - * v2 Channel adapter registry. + * Channel adapter registry. * * Channels self-register on import. The host calls initChannelAdapters() at startup * to instantiate and set up all registered adapters. */ -import { NetworkError } from '@chat-adapter/shared'; import type { ChannelAdapter, ChannelRegistration, ChannelSetup } from './adapter.js'; import { log } from '../log.js'; const SETUP_RETRY_DELAYS_MS = [2000, 5000, 10000]; +/** Duck-type check — adapters that throw an Error with `name === 'NetworkError'` + * (Chat SDK's `@chat-adapter/shared.NetworkError` and similar) get a retry on + * setup. Avoids depending on `@chat-adapter/shared` at trunk level. */ +function isNetworkError(err: unknown): err is Error { + return err instanceof Error && err.name === 'NetworkError'; +} + const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); const registry = new Map(); @@ -64,7 +70,7 @@ export async function initChannelAdapters(setupFn: (adapter: ChannelAdapter) => await adapter.setup(setup); break; } catch (err) { - if (err instanceof NetworkError && attempt < SETUP_RETRY_DELAYS_MS.length) { + if (isNetworkError(err) && attempt < SETUP_RETRY_DELAYS_MS.length) { const delay = SETUP_RETRY_DELAYS_MS[attempt]!; log.warn('Channel adapter setup failed with network error, retrying', { channel: name,