refactor(v2): drop @chat-adapter/shared dep — duck-type NetworkError
The only use was channel-registry.ts checking `err instanceof NetworkError` to retry transient setup failures. Switched to a duck-type predicate (`err.name === 'NetworkError'`) so the dep is no longer needed at trunk level. Channel skills bring it in transitively when they install their Chat SDK adapter package. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,7 +22,6 @@
|
|||||||
"test:watch": "vitest"
|
"test:watch": "vitest"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@chat-adapter/shared": "^4.24.0",
|
|
||||||
"@onecli-sh/sdk": "^0.3.1",
|
"@onecli-sh/sdk": "^0.3.1",
|
||||||
"better-sqlite3": "11.10.0",
|
"better-sqlite3": "11.10.0",
|
||||||
"chat": "^4.24.0",
|
"chat": "^4.24.0",
|
||||||
|
|||||||
12
pnpm-lock.yaml
generated
12
pnpm-lock.yaml
generated
@@ -8,9 +8,6 @@ importers:
|
|||||||
|
|
||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chat-adapter/shared':
|
|
||||||
specifier: ^4.24.0
|
|
||||||
version: 4.26.0
|
|
||||||
'@onecli-sh/sdk':
|
'@onecli-sh/sdk':
|
||||||
specifier: ^0.3.1
|
specifier: ^0.3.1
|
||||||
version: 0.3.1
|
version: 0.3.1
|
||||||
@@ -66,9 +63,6 @@ importers:
|
|||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
'@chat-adapter/shared@4.26.0':
|
|
||||||
resolution: {integrity: sha512-YD0MGktFXrArUqTBsyPfL5vkdD1WBS58PAWO0oVrMQAMmPxpAXfWGjBtZCkf3y8R8Svb0uVuVXiMZSForaEnMQ==}
|
|
||||||
|
|
||||||
'@emnapi/core@1.9.2':
|
'@emnapi/core@1.9.2':
|
||||||
resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==}
|
resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==}
|
||||||
|
|
||||||
@@ -1516,12 +1510,6 @@ packages:
|
|||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
|
|
||||||
'@chat-adapter/shared@4.26.0':
|
|
||||||
dependencies:
|
|
||||||
chat: 4.26.0
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
'@emnapi/core@1.9.2':
|
'@emnapi/core@1.9.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emnapi/wasi-threads': 1.2.1
|
'@emnapi/wasi-threads': 1.2.1
|
||||||
|
|||||||
@@ -1,15 +1,21 @@
|
|||||||
/**
|
/**
|
||||||
* v2 Channel adapter registry.
|
* Channel adapter registry.
|
||||||
*
|
*
|
||||||
* Channels self-register on import. The host calls initChannelAdapters() at startup
|
* Channels self-register on import. The host calls initChannelAdapters() at startup
|
||||||
* to instantiate and set up all registered adapters.
|
* to instantiate and set up all registered adapters.
|
||||||
*/
|
*/
|
||||||
import { NetworkError } from '@chat-adapter/shared';
|
|
||||||
import type { ChannelAdapter, ChannelRegistration, ChannelSetup } from './adapter.js';
|
import type { ChannelAdapter, ChannelRegistration, ChannelSetup } from './adapter.js';
|
||||||
import { log } from '../log.js';
|
import { log } from '../log.js';
|
||||||
|
|
||||||
const SETUP_RETRY_DELAYS_MS = [2000, 5000, 10000];
|
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<void>((resolve) => setTimeout(resolve, ms));
|
const sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
|
||||||
|
|
||||||
const registry = new Map<string, ChannelRegistration>();
|
const registry = new Map<string, ChannelRegistration>();
|
||||||
@@ -64,7 +70,7 @@ export async function initChannelAdapters(setupFn: (adapter: ChannelAdapter) =>
|
|||||||
await adapter.setup(setup);
|
await adapter.setup(setup);
|
||||||
break;
|
break;
|
||||||
} catch (err) {
|
} 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]!;
|
const delay = SETUP_RETRY_DELAYS_MS[attempt]!;
|
||||||
log.warn('Channel adapter setup failed with network error, retrying', {
|
log.warn('Channel adapter setup failed with network error, retrying', {
|
||||||
channel: name,
|
channel: name,
|
||||||
|
|||||||
Reference in New Issue
Block a user