@cleocode/core 2026.6.0 → 2026.6.2

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.
@@ -1,20 +1,18 @@
1
1
  /**
2
- * HttpTransport — HTTP polling transport with automatic failover.
2
+ * HttpTransport — HTTP polling transport against the SignalDock API.
3
3
  *
4
- * Tries the primary API URL (api.signaldock.io) first. If unreachable,
5
- * falls back to the legacy URL (api.clawmsgr.com). Failover is transparent
6
- * to callers — they see a single transport that always works if either
7
- * endpoint is up.
4
+ * Connects to the configured API base URL (api.signaldock.io) and exposes
5
+ * push/poll/ack over HTTP.
8
6
  *
9
7
  * @see docs/specs/SIGNALDOCK-UNIFIED-AGENT-REGISTRY.md Section 4.4
10
8
  * @task T177
11
9
  */
12
10
  import type { ConduitMessage, Transport, TransportConnectConfig } from '@cleocode/contracts';
13
- /** HTTP transport with automatic primary/fallback failover. */
11
+ /** HTTP polling transport for the SignalDock messaging API. */
14
12
  export declare class HttpTransport implements Transport {
15
13
  readonly name = "http";
16
14
  private state;
17
- /** Connect to the SignalDock API, probing primary/fallback health when both are configured. */
15
+ /** Connect to the SignalDock API. */
18
16
  connect(config: TransportConnectConfig): Promise<void>;
19
17
  /** Disconnect and clear connection state. */
20
18
  disconnect(): Promise<void>;
@@ -32,12 +30,8 @@ export declare class HttpTransport implements Transport {
32
30
  }): Promise<ConduitMessage[]>;
33
31
  /** Acknowledge messages by ID so they are not returned by future polls. */
34
32
  ack(messageIds: string[]): Promise<void>;
35
- /**
36
- * Fetch with automatic failover. Tries activeUrl first.
37
- * If it fails and a fallback exists, retries on the other URL
38
- * and swaps activeUrl for subsequent calls.
39
- */
40
- private fetchWithFallback;
33
+ /** Fetch against the configured API base URL with a 10s timeout. */
34
+ private fetch;
41
35
  private headers;
42
36
  private ensureConnected;
43
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../../src/conduit/http-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAY7F,+DAA+D;AAC/D,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,KAAK,CAAmC;IAEhD,+FAA+F;IACzF,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B5D,6CAA6C;IACvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,2EAA2E;IACrE,IAAI,CACR,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAmCjC,+EAA+E;IACzE,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAqCnF,2EAA2E;IACrE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C;;;;OAIG;YACW,iBAAiB;IA+B/B,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,eAAe;CAKxB"}
1
+ {"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../../src/conduit/http-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAU7F,+DAA+D;AAC/D,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,KAAK,CAAmC;IAEhD,qCAAqC;IAC/B,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,6CAA6C;IACvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,2EAA2E;IACrE,IAAI,CACR,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAmCjC,+EAA+E;IACzE,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAqCnF,2EAA2E;IACrE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,oEAAoE;YACtD,KAAK;IAMnB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,eAAe;CAKxB"}
@@ -1,41 +1,22 @@
1
1
  /**
2
- * HttpTransport — HTTP polling transport with automatic failover.
2
+ * HttpTransport — HTTP polling transport against the SignalDock API.
3
3
  *
4
- * Tries the primary API URL (api.signaldock.io) first. If unreachable,
5
- * falls back to the legacy URL (api.clawmsgr.com). Failover is transparent
6
- * to callers — they see a single transport that always works if either
7
- * endpoint is up.
4
+ * Connects to the configured API base URL (api.signaldock.io) and exposes
5
+ * push/poll/ack over HTTP.
8
6
  *
9
7
  * @see docs/specs/SIGNALDOCK-UNIFIED-AGENT-REGISTRY.md Section 4.4
10
8
  * @task T177
11
9
  */
12
- /** HTTP transport with automatic primary/fallback failover. */
10
+ /** HTTP polling transport for the SignalDock messaging API. */
13
11
  export class HttpTransport {
14
12
  name = 'http';
15
13
  state = null;
16
- /** Connect to the SignalDock API, probing primary/fallback health when both are configured. */
14
+ /** Connect to the SignalDock API. */
17
15
  async connect(config) {
18
- const primaryUrl = config.apiBaseUrl;
19
- const fallbackUrl = config.apiBaseUrlFallback ?? null;
20
- // Only probe health when there's a fallback to choose between
21
- let activeUrl = primaryUrl;
22
- if (fallbackUrl) {
23
- const [primaryResult, fallbackResult] = await Promise.allSettled([
24
- fetch(`${primaryUrl}/health`, { method: 'GET', signal: AbortSignal.timeout(5000) }),
25
- fetch(`${fallbackUrl}/health`, { method: 'GET', signal: AbortSignal.timeout(5000) }),
26
- ]);
27
- const primaryOk = primaryResult.status === 'fulfilled' && primaryResult.value.ok;
28
- const fallbackOk = fallbackResult.status === 'fulfilled' && fallbackResult.value.ok;
29
- if (!primaryOk && fallbackOk) {
30
- activeUrl = fallbackUrl;
31
- }
32
- }
33
16
  this.state = {
34
17
  agentId: config.agentId,
35
18
  apiKey: config.apiKey,
36
- primaryUrl,
37
- fallbackUrl,
38
- activeUrl,
19
+ apiBaseUrl: config.apiBaseUrl,
39
20
  connected: true,
40
21
  };
41
22
  }
@@ -58,7 +39,7 @@ export class HttpTransport {
58
39
  path = '/messages';
59
40
  body['toAgentId'] = to;
60
41
  }
61
- const response = await this.fetchWithFallback(path, {
42
+ const response = await this.fetch(path, {
62
43
  method: 'POST',
63
44
  headers: this.headers(),
64
45
  body: JSON.stringify(body),
@@ -81,7 +62,7 @@ export class HttpTransport {
81
62
  params.set('limit', String(options.limit));
82
63
  if (options?.since)
83
64
  params.set('since', options.since);
84
- const response = await this.fetchWithFallback(`/messages/peek?${params}`, {
65
+ const response = await this.fetch(`/messages/peek?${params}`, {
85
66
  method: 'GET',
86
67
  headers: this.headers(),
87
68
  });
@@ -99,45 +80,17 @@ export class HttpTransport {
99
80
  /** Acknowledge messages by ID so they are not returned by future polls. */
100
81
  async ack(messageIds) {
101
82
  this.ensureConnected();
102
- await this.fetchWithFallback('/messages/ack', {
83
+ await this.fetch('/messages/ack', {
103
84
  method: 'POST',
104
85
  headers: this.headers(),
105
86
  body: JSON.stringify({ messageIds }),
106
87
  });
107
88
  }
108
- /**
109
- * Fetch with automatic failover. Tries activeUrl first.
110
- * If it fails and a fallback exists, retries on the other URL
111
- * and swaps activeUrl for subsequent calls.
112
- */
113
- async fetchWithFallback(path, init) {
89
+ /** Fetch against the configured API base URL with a 10s timeout. */
90
+ async fetch(path, init) {
114
91
  const timeout = AbortSignal.timeout(10000);
115
92
  const signal = init.signal ? AbortSignal.any([init.signal, timeout]) : timeout;
116
- const url = `${this.state.activeUrl}${path}`;
117
- try {
118
- return await fetch(url, { ...init, signal });
119
- }
120
- catch (primaryErr) {
121
- const otherUrl = this.state.activeUrl === this.state.primaryUrl
122
- ? this.state.fallbackUrl
123
- : this.state.primaryUrl;
124
- if (!otherUrl)
125
- throw primaryErr;
126
- try {
127
- const fallbackSignal = init.signal
128
- ? AbortSignal.any([init.signal, AbortSignal.timeout(10000)])
129
- : AbortSignal.timeout(10000);
130
- const fallbackResponse = await fetch(`${otherUrl}${path}`, {
131
- ...init,
132
- signal: fallbackSignal,
133
- });
134
- this.state.activeUrl = otherUrl;
135
- return fallbackResponse;
136
- }
137
- catch {
138
- throw primaryErr;
139
- }
140
- }
93
+ return fetch(`${this.state.apiBaseUrl}${path}`, { ...init, signal });
141
94
  }
142
95
  headers() {
143
96
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../../src/conduit/http-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../../src/conduit/http-transport.ts"],"names":[],"mappings":"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"}