thebird 1.2.63 → 1.2.65

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.
@@ -4,6 +4,9 @@ function wsStream(url) {
4
4
  const ws = new WebSocket(url);
5
5
  const incoming = [];
6
6
  let notify = null;
7
+ Object.assign(window.__debug = window.__debug || {}, {
8
+ acp: Object.assign(window.__debug?.acp || {}, { wsUrl: url, wsState: 'connecting' })
9
+ });
7
10
  ws.addEventListener('message', e => {
8
11
  const msg = JSON.parse(e.data);
9
12
  if (notify) { const fn = notify; notify = null; fn(msg); }
@@ -11,8 +14,15 @@ function wsStream(url) {
11
14
  });
12
15
  const readable = new ReadableStream({
13
16
  start(ctrl) {
14
- ws.addEventListener('close', () => ctrl.close());
15
- ws.addEventListener('error', e => ctrl.error(e));
17
+ ws.addEventListener('close', () => {
18
+ window.__debug.acp.wsState = 'closed';
19
+ ctrl.close();
20
+ });
21
+ ws.addEventListener('error', e => {
22
+ window.__debug.acp.wsState = 'error';
23
+ window.__debug.acp.wsError = e.message || String(e);
24
+ ctrl.error(e);
25
+ });
16
26
  },
17
27
  pull() {
18
28
  return new Promise(res => {
@@ -25,8 +35,17 @@ function wsStream(url) {
25
35
  write(msg) { ws.send(JSON.stringify(msg)); }
26
36
  });
27
37
  return new Promise((res, rej) => {
28
- ws.addEventListener('open', () => res({ readable, writable }));
29
- ws.addEventListener('error', rej);
38
+ ws.addEventListener('open', () => {
39
+ window.__debug.acp.wsState = 'open';
40
+ res({ readable, writable });
41
+ });
42
+ ws.addEventListener('error', (e) => {
43
+ window.__debug.acp.wsState = 'error';
44
+ const errMsg = e?.message || 'WebSocket connection failed';
45
+ window.__debug.acp.wsError = errMsg;
46
+ console.log('[ACP] Connection error:', errMsg);
47
+ rej(new Error(errMsg));
48
+ });
30
49
  });
31
50
  }
32
51
 
package/docs/app.js CHANGED
@@ -64,6 +64,7 @@ class BirdChat extends HTMLElement {
64
64
 
65
65
  connectedCallback() {
66
66
  this.render();
67
+ Object.assign(window.__debug, { acp: { baseUrl: this.state.baseUrl, provider: this.state.providerType } });
67
68
  if (this.state.apiKey) this.loadModels();
68
69
  }
69
70
 
@@ -21,8 +21,6 @@ export async function registerPreviewSW() {
21
21
  }
22
22
  }
23
23
 
24
- registerPreviewSW();
25
-
26
24
  navigator.serviceWorker?.addEventListener('message', e => {
27
25
  if (e.data?.type !== 'EXPRESS_REQUEST') return;
28
26
  const { path, method } = e.data;
package/docs/terminal.js CHANGED
@@ -79,10 +79,14 @@ async function boot() {
79
79
  bootActor.send({ type: 'IDB_READY' });
80
80
 
81
81
  try {
82
- await registerPreviewSW();
82
+ const swPromise = registerPreviewSW();
83
+ const swTimeout = new Promise((_, rej) => setTimeout(() => rej(new Error('SW registration timeout')), 3000));
84
+ await Promise.race([swPromise, swTimeout]);
83
85
  bootActor.send({ type: 'SW_READY' });
84
86
  } catch (e) {
85
- term.write('\x1b[33mSW: ' + e.message + '\x1b[0m\r\n');
87
+ console.log('[terminal] SW error:', e.message);
88
+ window.__debug.sw = window.__debug.sw || {};
89
+ window.__debug.sw.bootError = e.message;
86
90
  bootActor.send({ type: 'SW_ERROR' });
87
91
  }
88
92
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thebird",
3
- "version": "1.2.63",
3
+ "version": "1.2.65",
4
4
  "description": "Anthropic SDK to Gemini streaming bridge — drop-in proxy that translates Anthropic message format and tool calls to Google Gemini",
5
5
  "scripts": {
6
6
  "start": "node serve.js"